react-native-windows 0.84.0 → 0.84.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Directory.Build.props +2 -17
- package/Folly/ThreadNameStub.cpp +4 -6
- package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputComponentView.cpp +1 -1
- package/Microsoft.ReactNative/Microsoft.ReactNative.vcxproj +1 -7
- package/Microsoft.ReactNative/Microsoft.ReactNative.vcxproj.filters +0 -3
- package/PropertySheets/CIBuildOptimizations.props +2 -2
- package/PropertySheets/Generated/PackageVersion.g.props +3 -3
- package/PropertySheets/JSEngine.props +1 -1
- package/PropertySheets/NuGet.LockFile.props +10 -1
- package/PropertySheets/React.Cpp.props +3 -3
- package/ReactCommon/ReactCommon.vcxproj +0 -5
- package/Scripts/NuGetRestoreForceEvaluateAllSolutions.ps1 +61 -6
- package/Scripts/Tfs/Layout-Desktop-Headers.ps1 +4 -37
- package/Scripts/UpdateNightlyDependencies.ps1 +47 -0
- package/Scripts/creaternwapp.cmd +5 -8
- package/Scripts/creaternwlib.cmd +10 -23
- package/Shared/Shared.vcxitems +2 -0
- package/{Folly → external}/.clang-format +0 -1
- package/external/External.vcxitems +10 -0
- package/external/fast-float/.syncignore +10 -0
- package/external/fast-float/LICENSE-APACHE +190 -0
- package/external/fast-float/LICENSE-BOOST +23 -0
- package/external/fast-float/LICENSE-MIT +27 -0
- package/external/fast-float/README.md +545 -0
- package/external/fast-float/cgmanifest.json +15 -0
- package/external/fast-float/fast-float.vcxitems +14 -0
- package/external/fast-float/include/fast_float/ascii_number.h +588 -0
- package/external/fast-float/include/fast_float/bigint.h +638 -0
- package/external/fast-float/include/fast_float/constexpr_feature_detect.h +46 -0
- package/external/fast-float/include/fast_float/decimal_to_binary.h +212 -0
- package/external/fast-float/include/fast_float/digit_comparison.h +457 -0
- package/external/fast-float/include/fast_float/fast_float.h +59 -0
- package/external/fast-float/include/fast_float/fast_table.h +708 -0
- package/external/fast-float/include/fast_float/float_common.h +1240 -0
- package/external/fast-float/include/fast_float/parse_number.h +399 -0
- package/external/fast-float/sync-config.json +8 -0
- package/external/fmt/.syncignore +10 -0
- package/external/fmt/CONTRIBUTING.md +20 -0
- package/external/fmt/LICENSE +27 -0
- package/external/fmt/README.md +484 -0
- package/external/fmt/doc/ChangeLog-old.md +3290 -0
- package/external/fmt/doc/api.md +650 -0
- package/external/fmt/doc/fmt.css +61 -0
- package/external/fmt/doc/fmt.js +4 -0
- package/external/fmt/doc/get-started.md +222 -0
- package/external/fmt/doc/index.md +151 -0
- package/external/fmt/doc/perf.svg +1 -0
- package/external/fmt/doc/python-license.txt +290 -0
- package/external/fmt/doc/syntax.md +887 -0
- package/external/fmt/fmt.vcxitems +28 -0
- package/external/fmt/include/fmt/args.h +228 -0
- package/external/fmt/include/fmt/base.h +3077 -0
- package/external/fmt/include/fmt/chrono.h +2432 -0
- package/external/fmt/include/fmt/color.h +612 -0
- package/external/fmt/include/fmt/compile.h +529 -0
- package/external/fmt/include/fmt/core.h +5 -0
- package/external/fmt/include/fmt/format-inl.h +1928 -0
- package/external/fmt/include/fmt/format.h +4427 -0
- package/external/fmt/include/fmt/os.h +439 -0
- package/external/fmt/include/fmt/ostream.h +211 -0
- package/external/fmt/include/fmt/printf.h +656 -0
- package/external/fmt/include/fmt/ranges.h +882 -0
- package/external/fmt/include/fmt/std.h +699 -0
- package/external/fmt/include/fmt/xchar.h +322 -0
- package/external/fmt/src/fmt.cc +135 -0
- package/external/fmt/src/format.cc +43 -0
- package/external/fmt/src/os.cc +403 -0
- package/external/fmt/sync-config.json +8 -0
- package/external/folly/.syncignore +60 -0
- package/external/folly/LICENSE +200 -0
- package/external/folly/README.md +263 -0
- package/{fmt → external/folly/folly}/.clang-format +0 -1
- package/external/folly/folly/AtomicHashArray-inl.h +546 -0
- package/external/folly/folly/AtomicHashArray.h +431 -0
- package/external/folly/folly/AtomicHashMap-inl.h +653 -0
- package/external/folly/folly/AtomicHashMap.h +484 -0
- package/external/folly/folly/AtomicIntrusiveLinkedList.h +206 -0
- package/external/folly/folly/AtomicLinkedList.h +110 -0
- package/external/folly/folly/AtomicUnorderedMap.h +522 -0
- package/external/folly/folly/BUCK +1631 -0
- package/external/folly/folly/BUILD_MODE.bzl +72 -0
- package/external/folly/folly/Benchmark.cpp +986 -0
- package/external/folly/folly/Benchmark.h +680 -0
- package/external/folly/folly/BenchmarkUtil.h +47 -0
- package/external/folly/folly/Bits.h +17 -0
- package/external/folly/folly/CMakeLists.txt +110 -0
- package/external/folly/folly/CPortability.h +338 -0
- package/external/folly/folly/CancellationToken-inl.h +449 -0
- package/external/folly/folly/CancellationToken.cpp +250 -0
- package/external/folly/folly/CancellationToken.h +365 -0
- package/external/folly/folly/Chrono.h +132 -0
- package/external/folly/folly/ClockGettimeWrappers.cpp +93 -0
- package/external/folly/folly/ClockGettimeWrappers.h +29 -0
- package/external/folly/folly/ConcurrentBitSet.h +157 -0
- package/external/folly/folly/ConcurrentLazy.h +74 -0
- package/external/folly/folly/ConcurrentSkipList-inl.h +341 -0
- package/external/folly/folly/ConcurrentSkipList.h +824 -0
- package/external/folly/folly/ConstructorCallbackList.h +158 -0
- package/external/folly/folly/Conv.h +2026 -0
- package/external/folly/folly/CppAttributes.h +170 -0
- package/external/folly/folly/CpuId.h +297 -0
- package/external/folly/folly/DefaultKeepAliveExecutor.h +172 -0
- package/external/folly/folly/Demangle.cpp +255 -0
- package/external/folly/folly/Demangle.h +73 -0
- package/external/folly/folly/DiscriminatedPtr.h +236 -0
- package/external/folly/folly/DynamicConverter.h +17 -0
- package/external/folly/folly/Exception.h +150 -0
- package/external/folly/folly/ExceptionString.cpp +51 -0
- package/external/folly/folly/ExceptionString.h +33 -0
- package/external/folly/folly/ExceptionWrapper-inl.h +264 -0
- package/external/folly/folly/ExceptionWrapper.cpp +37 -0
- package/external/folly/folly/ExceptionWrapper.h +377 -0
- package/external/folly/folly/Executor.cpp +111 -0
- package/external/folly/folly/Executor.h +351 -0
- package/external/folly/folly/Expected.h +1725 -0
- package/external/folly/folly/FBString.h +2888 -0
- package/external/folly/folly/FBVector.h +17 -0
- package/external/folly/folly/File.cpp +180 -0
- package/external/folly/folly/File.h +177 -0
- package/external/folly/folly/FileUtil.cpp +378 -0
- package/external/folly/folly/FileUtil.h +332 -0
- package/external/folly/folly/Fingerprint.cpp +135 -0
- package/external/folly/folly/Fingerprint.h +289 -0
- package/external/folly/folly/FixedString.h +2965 -0
- package/external/folly/folly/FollyMemcpy.cpp +30 -0
- package/external/folly/folly/FollyMemcpy.h +23 -0
- package/external/folly/folly/FollyMemset.cpp +29 -0
- package/external/folly/folly/FollyMemset.h +25 -0
- package/external/folly/folly/Format-inl.h +1152 -0
- package/external/folly/folly/Format.cpp +429 -0
- package/external/folly/folly/Format.h +463 -0
- package/external/folly/folly/FormatArg.h +285 -0
- package/external/folly/folly/FormatTraits.h +65 -0
- package/external/folly/folly/Function.h +1159 -0
- package/external/folly/folly/GLog.h +85 -0
- package/external/folly/folly/GroupVarint.cpp +153 -0
- package/external/folly/folly/GroupVarint.h +630 -0
- package/external/folly/folly/Hash.h +20 -0
- package/external/folly/folly/IPAddress.cpp +490 -0
- package/external/folly/folly/IPAddress.h +667 -0
- package/external/folly/folly/IPAddressException.h +82 -0
- package/external/folly/folly/IPAddressV4.cpp +305 -0
- package/external/folly/folly/IPAddressV4.h +495 -0
- package/external/folly/folly/IPAddressV6.cpp +541 -0
- package/external/folly/folly/IPAddressV6.h +627 -0
- package/external/folly/folly/Indestructible.h +164 -0
- package/external/folly/folly/IndexedMemPool.h +550 -0
- package/external/folly/folly/IntrusiveList.h +17 -0
- package/external/folly/folly/Lazy.h +142 -0
- package/external/folly/folly/Likely.h +76 -0
- package/external/folly/folly/MPMCPipeline.h +280 -0
- package/external/folly/folly/MPMCQueue.h +1556 -0
- package/external/folly/folly/MacAddress.cpp +188 -0
- package/external/folly/folly/MacAddress.h +260 -0
- package/external/folly/folly/MapUtil.h +17 -0
- package/external/folly/folly/Math.h +258 -0
- package/external/folly/folly/MaybeManagedPtr.h +120 -0
- package/external/folly/folly/Memory.h +900 -0
- package/external/folly/folly/MicroLock.cpp +76 -0
- package/external/folly/folly/MicroLock.h +354 -0
- package/external/folly/folly/MicroSpinLock.h +17 -0
- package/external/folly/folly/MoveWrapper.h +76 -0
- package/external/folly/folly/ObserverContainer.h +1026 -0
- package/external/folly/folly/Optional.h +743 -0
- package/external/folly/folly/Overload.h +325 -0
- package/external/folly/folly/PackedSyncPtr.h +147 -0
- package/external/folly/folly/Padded.h +464 -0
- package/external/folly/folly/Poly-inl.h +230 -0
- package/external/folly/folly/Poly.h +1095 -0
- package/external/folly/folly/PolyException.h +43 -0
- package/external/folly/folly/Portability.h +644 -0
- package/external/folly/folly/Preprocessor.h +236 -0
- package/external/folly/folly/ProducerConsumerQueue.h +182 -0
- package/external/folly/folly/RWSpinLock.h +17 -0
- package/external/folly/folly/Random-inl.h +86 -0
- package/external/folly/folly/Random.cpp +184 -0
- package/external/folly/folly/Random.h +434 -0
- package/external/folly/folly/Range.h +1772 -0
- package/external/folly/folly/Replaceable.h +636 -0
- package/external/folly/folly/ScopeGuard.cpp +29 -0
- package/external/folly/folly/ScopeGuard.h +420 -0
- package/external/folly/folly/SharedMutex.cpp +81 -0
- package/external/folly/folly/SharedMutex.h +1751 -0
- package/external/folly/folly/Singleton-inl.h +332 -0
- package/external/folly/folly/Singleton.cpp +512 -0
- package/external/folly/folly/Singleton.h +891 -0
- package/external/folly/folly/SingletonThreadLocal.cpp +53 -0
- package/external/folly/folly/SingletonThreadLocal.h +263 -0
- package/external/folly/folly/SocketAddress.cpp +786 -0
- package/external/folly/folly/SocketAddress.h +768 -0
- package/external/folly/folly/SpinLock.h +55 -0
- package/external/folly/folly/String-inl.h +668 -0
- package/external/folly/folly/String.cpp +777 -0
- package/external/folly/folly/String.h +767 -0
- package/external/folly/folly/Subprocess.cpp +1142 -0
- package/external/folly/folly/Subprocess.h +1055 -0
- package/external/folly/folly/Synchronized.h +1833 -0
- package/external/folly/folly/SynchronizedPtr.h +106 -0
- package/external/folly/folly/ThreadCachedInt.h +175 -0
- package/external/folly/folly/ThreadLocal.h +478 -0
- package/external/folly/folly/TimeoutQueue.cpp +78 -0
- package/external/folly/folly/TimeoutQueue.h +123 -0
- package/external/folly/folly/TokenBucket.h +673 -0
- package/external/folly/folly/Traits.h +1442 -0
- package/external/folly/folly/Try-inl.h +372 -0
- package/external/folly/folly/Try.cpp +23 -0
- package/external/folly/folly/Try.h +728 -0
- package/external/folly/folly/UTF8String.h +56 -0
- package/external/folly/folly/Unicode.cpp +201 -0
- package/external/folly/folly/Unicode.h +94 -0
- package/external/folly/folly/Unit.h +65 -0
- package/external/folly/folly/Uri-inl.h +101 -0
- package/external/folly/folly/Uri.cpp +190 -0
- package/external/folly/folly/Uri.h +142 -0
- package/external/folly/folly/Utility.h +932 -0
- package/external/folly/folly/VERSION +1 -0
- package/external/folly/folly/Varint.h +230 -0
- package/external/folly/folly/VirtualExecutor.h +17 -0
- package/external/folly/folly/algorithm/simd/BUCK +47 -0
- package/external/folly/folly/algorithm/simd/Contains.cpp +42 -0
- package/external/folly/folly/algorithm/simd/Contains.h +116 -0
- package/external/folly/folly/algorithm/simd/FindFixed.h +301 -0
- package/external/folly/folly/algorithm/simd/Ignore.h +52 -0
- package/external/folly/folly/algorithm/simd/Movemask.h +207 -0
- package/external/folly/folly/algorithm/simd/detail/BUCK +70 -0
- package/external/folly/folly/algorithm/simd/detail/ContainsImpl.h +91 -0
- package/external/folly/folly/algorithm/simd/detail/SimdAnyOf.h +83 -0
- package/external/folly/folly/algorithm/simd/detail/SimdForEach.h +209 -0
- package/external/folly/folly/algorithm/simd/detail/SimdPlatform.h +445 -0
- package/external/folly/folly/algorithm/simd/detail/Traits.h +125 -0
- package/external/folly/folly/algorithm/simd/detail/UnrollUtils.h +126 -0
- package/external/folly/folly/base64.h +264 -0
- package/external/folly/folly/chrono/BUCK +29 -0
- package/external/folly/folly/chrono/Clock.h +65 -0
- package/external/folly/folly/chrono/Conv.h +712 -0
- package/external/folly/folly/chrono/test/BUCK +26 -0
- package/external/folly/folly/chrono/test/ClockTest.cpp +68 -0
- package/external/folly/folly/chrono/test/ConvTest.cpp +652 -0
- package/external/folly/folly/concurrency/AtomicSharedPtr.h +387 -0
- package/external/folly/folly/concurrency/BUCK +170 -0
- package/external/folly/folly/concurrency/CacheLocality.h +460 -0
- package/external/folly/folly/concurrency/ConcurrentHashMap.h +822 -0
- package/external/folly/folly/concurrency/CoreCachedSharedPtr.h +232 -0
- package/external/folly/folly/concurrency/DeadlockDetector.cpp +27 -0
- package/external/folly/folly/concurrency/DeadlockDetector.h +44 -0
- package/external/folly/folly/concurrency/DynamicBoundedQueue.h +751 -0
- package/external/folly/folly/concurrency/PriorityUnboundedQueueSet.h +207 -0
- package/external/folly/folly/concurrency/ProcessLocalUniqueId.cpp +46 -0
- package/external/folly/folly/concurrency/ProcessLocalUniqueId.h +38 -0
- package/external/folly/folly/concurrency/SingletonRelaxedCounter.h +325 -0
- package/external/folly/folly/concurrency/ThreadCachedSynchronized.h +227 -0
- package/external/folly/folly/concurrency/UnboundedQueue.h +891 -0
- package/external/folly/folly/concurrency/container/BUCK +77 -0
- package/external/folly/folly/concurrency/container/FlatCombiningPriorityQueue.h +426 -0
- package/external/folly/folly/concurrency/container/LockFreeRingBuffer.h +306 -0
- package/external/folly/folly/concurrency/container/RelaxedConcurrentPriorityQueue.h +1212 -0
- package/external/folly/folly/concurrency/container/SingleWriterFixedHashMap.h +322 -0
- package/external/folly/folly/concurrency/container/atomic_grow_array.h +564 -0
- package/external/folly/folly/concurrency/container/test/BUCK +75 -0
- package/external/folly/folly/concurrency/container/test/FlatCombiningPriorityQueueTest.cpp +570 -0
- package/external/folly/folly/concurrency/container/test/LockFreeRingBufferTest.cpp +276 -0
- package/external/folly/folly/concurrency/container/test/RelaxedConcurrentPriorityQueueTest.cpp +1570 -0
- package/external/folly/folly/concurrency/container/test/SingleWriterFixedHashMapTest.cpp +401 -0
- package/external/folly/folly/concurrency/container/test/atomic_grow_array_test.cpp +187 -0
- package/external/folly/folly/concurrency/detail/AtomicSharedPtr-detail.h +212 -0
- package/external/folly/folly/concurrency/detail/ConcurrentHashMap-detail.h +1911 -0
- package/external/folly/folly/concurrency/memory/AtomicReadMostlyMainPtr.cpp +43 -0
- package/external/folly/folly/concurrency/memory/AtomicReadMostlyMainPtr.h +190 -0
- package/external/folly/folly/concurrency/memory/BUCK +53 -0
- package/external/folly/folly/concurrency/memory/PrimaryPtr.h +338 -0
- package/external/folly/folly/concurrency/memory/ReadMostlySharedPtr.h +511 -0
- package/external/folly/folly/concurrency/memory/TLRefCount.h +228 -0
- package/external/folly/folly/concurrency/memory/test/AtomicReadMostlyMainPtrBenchmark.cpp +56 -0
- package/external/folly/folly/concurrency/memory/test/AtomicReadMostlyMainPtrTest.cpp +454 -0
- package/external/folly/folly/concurrency/memory/test/BUCK +95 -0
- package/external/folly/folly/concurrency/memory/test/PrimaryPtrTest.cpp +303 -0
- package/external/folly/folly/concurrency/memory/test/ReadMostlySharedPtrBenchmark.cpp +138 -0
- package/external/folly/folly/concurrency/memory/test/ReadMostlySharedPtrStressTest.cpp +75 -0
- package/external/folly/folly/concurrency/memory/test/ReadMostlySharedPtrTest.cpp +378 -0
- package/external/folly/folly/concurrency/memory/test/RefCountBenchmark.cpp +90 -0
- package/external/folly/folly/concurrency/memory/test/RefCountTest.cpp +168 -0
- package/external/folly/folly/concurrency/test/AtomicSharedPtrCounted.h +156 -0
- package/external/folly/folly/concurrency/test/AtomicSharedPtrPerformance.cpp +255 -0
- package/external/folly/folly/concurrency/test/AtomicSharedPtrTest.cpp +257 -0
- package/external/folly/folly/concurrency/test/BUCK +229 -0
- package/external/folly/folly/concurrency/test/CacheLocalityBenchmark.cpp +392 -0
- package/external/folly/folly/concurrency/test/CacheLocalityTest.cpp +1229 -0
- package/external/folly/folly/concurrency/test/ConcurrentHashMapBench.cpp +260 -0
- package/external/folly/folly/concurrency/test/ConcurrentHashMapTest.cpp +1242 -0
- package/external/folly/folly/concurrency/test/CoreCachedSharedPtrTest.cpp +408 -0
- package/external/folly/folly/concurrency/test/DynamicBoundedQueueTest.cpp +984 -0
- package/external/folly/folly/concurrency/test/PriorityUnboundedQueueSetTest.cpp +73 -0
- package/external/folly/folly/concurrency/test/ProcessLocalUniqueIdTest.cpp +66 -0
- package/external/folly/folly/concurrency/test/SingletonRelaxedCounterBench.cpp +101 -0
- package/external/folly/folly/concurrency/test/SingletonRelaxedCounterTest.cpp +185 -0
- package/external/folly/folly/concurrency/test/ThreadCachedSynchronizedBench.cpp +76 -0
- package/external/folly/folly/concurrency/test/ThreadCachedSynchronizedTest.cpp +93 -0
- package/external/folly/folly/concurrency/test/UnboundedQueueTest.cpp +1302 -0
- package/external/folly/folly/container/Access.h +57 -0
- package/external/folly/folly/container/Array.h +87 -0
- package/external/folly/folly/container/BUCK +353 -0
- package/external/folly/folly/container/BitIterator.h +203 -0
- package/external/folly/folly/container/Enumerate.h +162 -0
- package/external/folly/folly/container/EvictingCacheMap.h +730 -0
- package/external/folly/folly/container/F14.md +300 -0
- package/external/folly/folly/container/F14Map-fwd.h +113 -0
- package/external/folly/folly/container/F14Map.h +2108 -0
- package/external/folly/folly/container/F14Set-fwd.h +95 -0
- package/external/folly/folly/container/F14Set.h +1603 -0
- package/external/folly/folly/container/FBVector.h +1711 -0
- package/external/folly/folly/container/Foreach-inl.h +316 -0
- package/external/folly/folly/container/Foreach.h +209 -0
- package/external/folly/folly/container/HeterogeneousAccess-fwd.h +33 -0
- package/external/folly/folly/container/HeterogeneousAccess.h +171 -0
- package/external/folly/folly/container/IntrusiveHeap.h +268 -0
- package/external/folly/folly/container/IntrusiveList.h +131 -0
- package/external/folly/folly/container/Iterator.h +843 -0
- package/external/folly/folly/container/MapUtil.h +376 -0
- package/external/folly/folly/container/Merge.h +90 -0
- package/external/folly/folly/container/RegexMatchCache.cpp +521 -0
- package/external/folly/folly/container/RegexMatchCache.h +699 -0
- package/external/folly/folly/container/Reserve.h +109 -0
- package/external/folly/folly/container/SparseByteSet.h +123 -0
- package/external/folly/folly/container/View.h +81 -0
- package/external/folly/folly/container/WeightedEvictingCacheMap.h +651 -0
- package/external/folly/folly/container/detail/BUCK +115 -0
- package/external/folly/folly/container/detail/BitIteratorDetail.h +87 -0
- package/external/folly/folly/container/detail/F14Defaults.h +34 -0
- package/external/folly/folly/container/detail/F14IntrinsicsAvailability.h +67 -0
- package/external/folly/folly/container/detail/F14MapFallback.h +717 -0
- package/external/folly/folly/container/detail/F14Mask.h +235 -0
- package/external/folly/folly/container/detail/F14Policy.h +1523 -0
- package/external/folly/folly/container/detail/F14SetFallback.h +528 -0
- package/external/folly/folly/container/detail/F14Table.cpp +71 -0
- package/external/folly/folly/container/detail/F14Table.h +2680 -0
- package/external/folly/folly/container/detail/Util.h +303 -0
- package/external/folly/folly/container/detail/tape_detail.h +135 -0
- package/external/folly/folly/container/detail/test/BUCK +14 -0
- package/external/folly/folly/container/detail/test/F14DetailTest.cpp +47 -0
- package/external/folly/folly/container/heap_vector_types.h +1683 -0
- package/external/folly/folly/container/range_traits.h +81 -0
- package/external/folly/folly/container/small_vector.h +1476 -0
- package/external/folly/folly/container/sorted_vector_types.h +1652 -0
- package/external/folly/folly/container/span.h +408 -0
- package/external/folly/folly/container/tape.h +608 -0
- package/external/folly/folly/container/test/.clang-tidy +12 -0
- package/external/folly/folly/container/test/AccessTest.cpp +138 -0
- package/external/folly/folly/container/test/ArrayTest.cpp +84 -0
- package/external/folly/folly/container/test/BUCK +568 -0
- package/external/folly/folly/container/test/BitIteratorBench.cpp +112 -0
- package/external/folly/folly/container/test/BitIteratorTest.cpp +109 -0
- package/external/folly/folly/container/test/EnumerateTest.cpp +294 -0
- package/external/folly/folly/container/test/EvictingCacheMapBench.cpp +80 -0
- package/external/folly/folly/container/test/EvictingCacheMapTest.cpp +842 -0
- package/external/folly/folly/container/test/F14AsanSupportTest.cpp +143 -0
- package/external/folly/folly/container/test/F14FwdTest.cpp +37 -0
- package/external/folly/folly/container/test/F14InterprocessTest.cpp +404 -0
- package/external/folly/folly/container/test/F14MapTest.cpp +2543 -0
- package/external/folly/folly/container/test/F14PolicyTest.cpp +49 -0
- package/external/folly/folly/container/test/F14SetTest.cpp +1738 -0
- package/external/folly/folly/container/test/F14SmallOverheads.cpp +215 -0
- package/external/folly/folly/container/test/F14TestUtil.h +117 -0
- package/external/folly/folly/container/test/FBVectorBenchmark.cpp +380 -0
- package/external/folly/folly/container/test/FBVectorBenchmarks.cpp.h +100 -0
- package/external/folly/folly/container/test/FBVectorTest.cpp +326 -0
- package/external/folly/folly/container/test/FBVectorTests.cpp.h +304 -0
- package/external/folly/folly/container/test/ForeachBenchmark.cpp +388 -0
- package/external/folly/folly/container/test/ForeachTest.cpp +338 -0
- package/external/folly/folly/container/test/HashMapsBench.cpp +458 -0
- package/external/folly/folly/container/test/HeterogeneousAccessTest.cpp +242 -0
- package/external/folly/folly/container/test/IntrusiveHeapTest.cpp +262 -0
- package/external/folly/folly/container/test/IteratorTest.cpp +989 -0
- package/external/folly/folly/container/test/MapUtilTest.cpp +365 -0
- package/external/folly/folly/container/test/MergeTest.cpp +66 -0
- package/external/folly/folly/container/test/RegexMatchCacheTest.cpp +634 -0
- package/external/folly/folly/container/test/ReserveTest.cpp +173 -0
- package/external/folly/folly/container/test/SparseByteSetBenchmark.cpp +153 -0
- package/external/folly/folly/container/test/SparseByteSetTest.cpp +117 -0
- package/external/folly/folly/container/test/TrackingTypes.h +584 -0
- package/external/folly/folly/container/test/UtilTest.cpp +609 -0
- package/external/folly/folly/container/test/WeightedEvictingCacheMapTest.cpp +800 -0
- package/external/folly/folly/container/test/heap_vector_types_test.cpp +1774 -0
- package/external/folly/folly/container/test/range_traits_test.cpp +59 -0
- package/external/folly/folly/container/test/small_vector_test.cpp +1571 -0
- package/external/folly/folly/container/test/sorted_vector_test.cpp +1589 -0
- package/external/folly/folly/container/test/span_test.cpp +520 -0
- package/external/folly/folly/container/test/tape_bench.cpp +200 -0
- package/external/folly/folly/container/test/tape_test.cpp +590 -0
- package/external/folly/folly/defs.bzl +238 -0
- package/external/folly/folly/detail/AsyncTrace.cpp +36 -0
- package/external/folly/folly/detail/AsyncTrace.h +44 -0
- package/external/folly/folly/detail/AtomicHashUtils.h +42 -0
- package/external/folly/folly/detail/AtomicUnorderedMapUtils.h +80 -0
- package/external/folly/folly/detail/BUCK +406 -0
- package/external/folly/folly/detail/DiscriminatedPtrDetail.h +172 -0
- package/external/folly/folly/detail/FileUtilDetail.cpp +63 -0
- package/external/folly/folly/detail/FileUtilDetail.h +85 -0
- package/external/folly/folly/detail/FileUtilVectorDetail.h +81 -0
- package/external/folly/folly/detail/FingerprintPolynomial.h +132 -0
- package/external/folly/folly/detail/Futex-inl.h +123 -0
- package/external/folly/folly/detail/Futex.cpp +273 -0
- package/external/folly/folly/detail/Futex.h +109 -0
- package/external/folly/folly/detail/GroupVarintDetail.h +101 -0
- package/external/folly/folly/detail/IPAddress.cpp +37 -0
- package/external/folly/folly/detail/IPAddress.h +57 -0
- package/external/folly/folly/detail/IPAddressSource.h +278 -0
- package/external/folly/folly/detail/Iterators.h +156 -0
- package/external/folly/folly/detail/MPMCPipelineDetail.h +122 -0
- package/external/folly/folly/detail/MemoryIdler.cpp +233 -0
- package/external/folly/folly/detail/MemoryIdler.h +216 -0
- package/external/folly/folly/detail/PerfScoped.cpp +112 -0
- package/external/folly/folly/detail/PerfScoped.h +70 -0
- package/external/folly/folly/detail/PolyDetail.h +921 -0
- package/external/folly/folly/detail/RangeCommon.cpp +55 -0
- package/external/folly/folly/detail/RangeCommon.h +93 -0
- package/external/folly/folly/detail/RangeSse42.cpp +198 -0
- package/external/folly/folly/detail/RangeSse42.h +30 -0
- package/external/folly/folly/detail/SimpleSimdStringUtils.cpp +31 -0
- package/external/folly/folly/detail/SimpleSimdStringUtils.h +27 -0
- package/external/folly/folly/detail/SimpleSimdStringUtilsImpl.h +63 -0
- package/external/folly/folly/detail/Singleton.h +34 -0
- package/external/folly/folly/detail/SlowFingerprint.h +90 -0
- package/external/folly/folly/detail/SocketFastOpen.cpp +175 -0
- package/external/folly/folly/detail/SocketFastOpen.h +89 -0
- package/external/folly/folly/detail/SplitStringSimd.cpp +84 -0
- package/external/folly/folly/detail/SplitStringSimd.h +151 -0
- package/external/folly/folly/detail/SplitStringSimdImpl.h +149 -0
- package/external/folly/folly/detail/Sse.cpp +35 -0
- package/external/folly/folly/detail/Sse.h +45 -0
- package/external/folly/folly/detail/StaticSingletonManager.cpp +119 -0
- package/external/folly/folly/detail/StaticSingletonManager.h +298 -0
- package/external/folly/folly/detail/ThreadLocalDetail.cpp +492 -0
- package/external/folly/folly/detail/ThreadLocalDetail.h +800 -0
- package/external/folly/folly/detail/TrapOnAvx512.cpp +41 -0
- package/external/folly/folly/detail/TrapOnAvx512.h +21 -0
- package/external/folly/folly/detail/TurnSequencer.h +295 -0
- package/external/folly/folly/detail/TypeList.h +551 -0
- package/external/folly/folly/detail/UniqueInstance.cpp +136 -0
- package/external/folly/folly/detail/UniqueInstance.h +68 -0
- package/external/folly/folly/detail/base64_detail/BUCK +102 -0
- package/external/folly/folly/detail/base64_detail/Base64Api.cpp +40 -0
- package/external/folly/folly/detail/base64_detail/Base64Api.h +101 -0
- package/external/folly/folly/detail/base64_detail/Base64Common.h +80 -0
- package/external/folly/folly/detail/base64_detail/Base64Constants.h +79 -0
- package/external/folly/folly/detail/base64_detail/Base64HiddenConstants.h +129 -0
- package/external/folly/folly/detail/base64_detail/Base64SWAR.cpp +161 -0
- package/external/folly/folly/detail/base64_detail/Base64SWAR.h +32 -0
- package/external/folly/folly/detail/base64_detail/Base64Scalar.h +262 -0
- package/external/folly/folly/detail/base64_detail/Base64Simd.h +102 -0
- package/external/folly/folly/detail/base64_detail/Base64_SSE4_2.cpp +42 -0
- package/external/folly/folly/detail/base64_detail/Base64_SSE4_2.h +33 -0
- package/external/folly/folly/detail/base64_detail/Base64_SSE4_2_Platform.h +167 -0
- package/external/folly/folly/detail/base64_detail/README.md +392 -0
- package/external/folly/folly/detail/base64_detail/tests/BUCK +36 -0
- package/external/folly/folly/detail/base64_detail/tests/Base64AgainstScalarTest.cpp +141 -0
- package/external/folly/folly/detail/base64_detail/tests/Base64PlatformTest.cpp +273 -0
- package/external/folly/folly/detail/base64_detail/tests/Base64SpecialCasesTest.cpp +555 -0
- package/external/folly/folly/detail/test/AsyncTraceTest.cpp +43 -0
- package/external/folly/folly/detail/test/BUCK +118 -0
- package/external/folly/folly/detail/test/FileUtilDetailTest.cpp +56 -0
- package/external/folly/folly/detail/test/PerfScopedTest.cpp +107 -0
- package/external/folly/folly/detail/test/SimpleSimdStringUtilsTest.cpp +92 -0
- package/external/folly/folly/detail/test/SplitStringSimdTest.cpp +242 -0
- package/external/folly/folly/detail/test/StaticSingletonManagerTest.cpp +121 -0
- package/external/folly/folly/detail/test/ThreadLocalBenchmark.cpp +116 -0
- package/external/folly/folly/detail/test/ThreadLocalDetailTest.cpp +194 -0
- package/external/folly/folly/detail/test/TrapOnAvx512TestNegative.cpp +29 -0
- package/external/folly/folly/detail/test/UniqueInstanceTest.cpp +60 -0
- package/external/folly/folly/detail/thread_local_globals.cpp +69 -0
- package/external/folly/folly/detail/thread_local_globals.h +36 -0
- package/external/folly/folly/docs/AtomicHashMap.md +134 -0
- package/external/folly/folly/docs/Benchmark.md +310 -0
- package/external/folly/folly/docs/Conv.md +291 -0
- package/external/folly/folly/docs/Dynamic.md +220 -0
- package/external/folly/folly/docs/DynamicConverter.md +71 -0
- package/external/folly/folly/docs/Executors.md +63 -0
- package/external/folly/folly/docs/FBString.md +46 -0
- package/external/folly/folly/docs/FBVector.md +200 -0
- package/external/folly/folly/docs/Fbvector--graphical_solutions.png +0 -0
- package/external/folly/folly/docs/Format.md +177 -0
- package/external/folly/folly/docs/Function.md +92 -0
- package/external/folly/folly/docs/Futures.md +263 -0
- package/external/folly/folly/docs/GroupVarint.md +46 -0
- package/external/folly/folly/docs/Histogram.md +104 -0
- package/external/folly/folly/docs/MapUtils.md +80 -0
- package/external/folly/folly/docs/Overview.md +263 -0
- package/external/folly/folly/docs/PackedSyncPtr.md +77 -0
- package/external/folly/folly/docs/Poly.md +500 -0
- package/external/folly/folly/docs/ProducerConsumerQueue.md +82 -0
- package/external/folly/folly/docs/Rcu.md +218 -0
- package/external/folly/folly/docs/SmallLocks.md +24 -0
- package/external/folly/folly/docs/Synchronized.md +793 -0
- package/external/folly/folly/docs/ThreadCachedInt.md +98 -0
- package/external/folly/folly/docs/ThreadLocal.md +105 -0
- package/external/folly/folly/docs/Traits.md +161 -0
- package/external/folly/folly/docs/small_vector.md +64 -0
- package/external/folly/folly/docs/style.css +23 -0
- package/external/folly/folly/dynamic-inl.h +17 -0
- package/external/folly/folly/dynamic.h +17 -0
- package/external/folly/folly/folly_extended_library.bzl +28 -0
- package/external/folly/folly/functional/ApplyTuple.h +204 -0
- package/external/folly/folly/functional/BUCK +57 -0
- package/external/folly/folly/functional/Invoke.h +880 -0
- package/external/folly/folly/functional/Partial.h +130 -0
- package/external/folly/folly/functional/protocol.h +203 -0
- package/external/folly/folly/functional/test/ApplyTupleTest.cpp +549 -0
- package/external/folly/folly/functional/test/BUCK +57 -0
- package/external/folly/folly/functional/test/InvokeTest.cpp +483 -0
- package/external/folly/folly/functional/test/PartialTest.cpp +141 -0
- package/external/folly/folly/functional/test/protocol_test.cpp +177 -0
- package/external/folly/folly/functional/test/traits_test.cpp +551 -0
- package/external/folly/folly/functional/traits.h +675 -0
- package/external/folly/folly/hash/BUCK +86 -0
- package/external/folly/folly/hash/Checksum.cpp +275 -0
- package/external/folly/folly/hash/Checksum.h +94 -0
- package/external/folly/folly/hash/FarmHash.h +46 -0
- package/external/folly/folly/hash/Hash.h +1045 -0
- package/external/folly/folly/hash/MurmurHash.h +86 -0
- package/external/folly/folly/hash/SpookyHashV1.cpp +391 -0
- package/external/folly/folly/hash/SpookyHashV1.h +307 -0
- package/external/folly/folly/hash/SpookyHashV2.cpp +392 -0
- package/external/folly/folly/hash/SpookyHashV2.h +339 -0
- package/external/folly/folly/hash/detail/BUCK +26 -0
- package/external/folly/folly/hash/detail/ChecksumDetail.cpp +296 -0
- package/external/folly/folly/hash/detail/ChecksumDetail.h +137 -0
- package/external/folly/folly/hash/detail/Crc32CombineDetail.cpp +191 -0
- package/external/folly/folly/hash/detail/Crc32cDetail.cpp +303 -0
- package/external/folly/folly/hash/test/BUCK +132 -0
- package/external/folly/folly/hash/test/ChecksumBenchmark.cpp +91 -0
- package/external/folly/folly/hash/test/ChecksumTest.cpp +587 -0
- package/external/folly/folly/hash/test/FarmHashTest.cpp +41 -0
- package/external/folly/folly/hash/test/HashBenchmark.cpp +238 -0
- package/external/folly/folly/hash/test/HashTest.cpp +997 -0
- package/external/folly/folly/hash/test/MurmurHashTest.cpp +76 -0
- package/external/folly/folly/hash/test/SpookyHashV1Test.cpp +559 -0
- package/external/folly/folly/hash/test/SpookyHashV2Test.cpp +549 -0
- package/external/folly/folly/hash/test/traits_test.cpp +69 -0
- package/external/folly/folly/hash/traits.h +115 -0
- package/external/folly/folly/json/BUCK +155 -0
- package/external/folly/folly/json/DynamicConverter.h +464 -0
- package/external/folly/folly/json/DynamicParser-inl.h +316 -0
- package/external/folly/folly/json/DynamicParser.cpp +198 -0
- package/external/folly/folly/json/DynamicParser.h +394 -0
- package/external/folly/folly/json/JSONSchema.cpp +1030 -0
- package/external/folly/folly/json/JSONSchema.h +73 -0
- package/external/folly/folly/json/JsonMockUtil.h +73 -0
- package/external/folly/folly/json/JsonTestUtil.cpp +167 -0
- package/external/folly/folly/json/JsonTestUtil.h +88 -0
- package/external/folly/folly/json/bser/BUCK +24 -0
- package/external/folly/folly/json/bser/Bser.h +107 -0
- package/external/folly/folly/json/bser/Dump.cpp +253 -0
- package/external/folly/folly/json/bser/Load.cpp +246 -0
- package/external/folly/folly/json/bser/test/BUCK +14 -0
- package/external/folly/folly/json/bser/test/BserTest.cpp +149 -0
- package/external/folly/folly/json/dynamic.cpp +552 -0
- package/external/folly/folly/json/dynamic.h +1346 -0
- package/external/folly/folly/json/json.h +238 -0
- package/external/folly/folly/json/json_patch.cpp +325 -0
- package/external/folly/folly/json/json_patch.h +126 -0
- package/external/folly/folly/json/json_pointer.cpp +114 -0
- package/external/folly/folly/json/json_pointer.h +87 -0
- package/external/folly/folly/json/test/BUCK +147 -0
- package/external/folly/folly/json/test/DynamicBenchmark.cpp +146 -0
- package/external/folly/folly/json/test/DynamicConverterTest.cpp +518 -0
- package/external/folly/folly/json/test/DynamicOtherTest.cpp +344 -0
- package/external/folly/folly/json/test/DynamicParserTest.cpp +443 -0
- package/external/folly/folly/json/test/DynamicTest.cpp +1647 -0
- package/external/folly/folly/json/test/JSONSchemaTest.cpp +450 -0
- package/external/folly/folly/json/test/JsonBenchmark.cpp +264 -0
- package/external/folly/folly/json/test/JsonOtherTest.cpp +51 -0
- package/external/folly/folly/json/test/JsonTest.cpp +1153 -0
- package/external/folly/folly/json/test/JsonTestUtilTest.cpp +97 -0
- package/external/folly/folly/json/test/json_patch_test.cpp +361 -0
- package/external/folly/folly/json/test/json_pointer_test.cpp +58 -0
- package/external/folly/folly/json/tool/BUCK +13 -0
- package/external/folly/folly/json/tool/JSONSchemaTester.cpp +58 -0
- package/external/folly/folly/json.h +17 -0
- package/external/folly/folly/json_patch.h +17 -0
- package/external/folly/folly/json_pointer.h +17 -0
- package/external/folly/folly/lang/Access.h +29 -0
- package/external/folly/folly/lang/Align.h +240 -0
- package/external/folly/folly/lang/Aligned.h +92 -0
- package/external/folly/folly/lang/Assume.h +82 -0
- package/external/folly/folly/lang/BUCK +287 -0
- package/external/folly/folly/lang/Badge.h +108 -0
- package/external/folly/folly/lang/Bits.h +570 -0
- package/external/folly/folly/lang/BitsClass.h +312 -0
- package/external/folly/folly/lang/Builtin.h +74 -0
- package/external/folly/folly/lang/CArray.h +34 -0
- package/external/folly/folly/lang/CString.cpp +86 -0
- package/external/folly/folly/lang/CString.h +55 -0
- package/external/folly/folly/lang/Cast.h +51 -0
- package/external/folly/folly/lang/CheckedMath.h +253 -0
- package/external/folly/folly/lang/CustomizationPoint.h +58 -0
- package/external/folly/folly/lang/Exception.cpp +822 -0
- package/external/folly/folly/lang/Exception.h +716 -0
- package/external/folly/folly/lang/Extern.h +55 -0
- package/external/folly/folly/lang/Hint-inl.h +144 -0
- package/external/folly/folly/lang/Hint.h +238 -0
- package/external/folly/folly/lang/Keep.h +98 -0
- package/external/folly/folly/lang/New.h +124 -0
- package/external/folly/folly/lang/Ordering.h +140 -0
- package/external/folly/folly/lang/Pretty.h +159 -0
- package/external/folly/folly/lang/PropagateConst.h +413 -0
- package/external/folly/folly/lang/RValueReferenceWrapper.h +152 -0
- package/external/folly/folly/lang/SafeAssert.cpp +589 -0
- package/external/folly/folly/lang/StaticConst.h +33 -0
- package/external/folly/folly/lang/Thunk.h +100 -0
- package/external/folly/folly/lang/TypeInfo.h +58 -0
- package/external/folly/folly/lang/UncaughtExceptions.cpp +17 -0
- package/external/folly/folly/lang/UncaughtExceptions.h +19 -0
- package/external/folly/folly/lang/test/AlignTest.cpp +87 -0
- package/external/folly/folly/lang/test/AlignedTest.cpp +130 -0
- package/external/folly/folly/lang/test/BUCK +258 -0
- package/external/folly/folly/lang/test/BadgeTest.cpp +89 -0
- package/external/folly/folly/lang/test/BitsBenchmark.cpp +164 -0
- package/external/folly/folly/lang/test/BitsClassBenchmark.cpp +122 -0
- package/external/folly/folly/lang/test/BitsClassTest.cpp +379 -0
- package/external/folly/folly/lang/test/BitsTest.cpp +577 -0
- package/external/folly/folly/lang/test/CStringTest.cpp +60 -0
- package/external/folly/folly/lang/test/CastTest.cpp +47 -0
- package/external/folly/folly/lang/test/CheckedMathTest.cpp +394 -0
- package/external/folly/folly/lang/test/ExceptionBench.cpp +427 -0
- package/external/folly/folly/lang/test/ExceptionTest.cpp +413 -0
- package/external/folly/folly/lang/test/ExternTest.cpp +39 -0
- package/external/folly/folly/lang/test/HintTest.cpp +100 -0
- package/external/folly/folly/lang/test/NewTest.cpp +38 -0
- package/external/folly/folly/lang/test/OrderingTest.cpp +105 -0
- package/external/folly/folly/lang/test/PrettyTest.cpp +44 -0
- package/external/folly/folly/lang/test/PropagateConstTest.cpp +356 -0
- package/external/folly/folly/lang/test/RValueReferenceWrapperTest.cpp +85 -0
- package/external/folly/folly/lang/test/SafeAssertTest.cpp +75 -0
- package/external/folly/folly/lang/test/ThunkTest.cpp +105 -0
- package/external/folly/folly/lang/test/ToAsciiBench.cpp +466 -0
- package/external/folly/folly/lang/test/ToAsciiTest.cpp +266 -0
- package/external/folly/folly/lang/test/TypeInfoTest.cpp +56 -0
- package/external/folly/folly/memcpy.S +292 -0
- package/external/folly/folly/memcpy_select_aarch64.cpp +145 -0
- package/external/folly/folly/memory/Arena-inl.h +83 -0
- package/external/folly/folly/memory/Arena.h +325 -0
- package/external/folly/folly/memory/BUCK +191 -0
- package/external/folly/folly/memory/JemallocHugePageAllocator.cpp +449 -0
- package/external/folly/folly/memory/JemallocHugePageAllocator.h +105 -0
- package/external/folly/folly/memory/JemallocHugePageAllocatorTest.cpp +341 -0
- package/external/folly/folly/memory/JemallocNodumpAllocator.cpp +176 -0
- package/external/folly/folly/memory/JemallocNodumpAllocator.h +119 -0
- package/external/folly/folly/memory/JemallocNodumpAllocatorTest.cpp +61 -0
- package/external/folly/folly/memory/MallctlHelper.cpp +37 -0
- package/external/folly/folly/memory/MallctlHelper.h +167 -0
- package/external/folly/folly/memory/Malloc.h +551 -0
- package/external/folly/folly/memory/MemoryResource.h +57 -0
- package/external/folly/folly/memory/ReentrantAllocator.cpp +162 -0
- package/external/folly/folly/memory/ReentrantAllocator.h +261 -0
- package/external/folly/folly/memory/SanitizeAddress.cpp +75 -0
- package/external/folly/folly/memory/SanitizeAddress.h +117 -0
- package/external/folly/folly/memory/SanitizeLeak.cpp +119 -0
- package/external/folly/folly/memory/SanitizeLeak.h +108 -0
- package/external/folly/folly/memory/ThreadCachedArena.cpp +53 -0
- package/external/folly/folly/memory/ThreadCachedArena.h +90 -0
- package/external/folly/folly/memory/UninitializedMemoryHacks.h +426 -0
- package/external/folly/folly/memory/detail/BUCK +10 -0
- package/external/folly/folly/memory/detail/MallocImpl.cpp +52 -0
- package/external/folly/folly/memory/detail/MallocImpl.h +97 -0
- package/external/folly/folly/memory/not_null-inl.h +522 -0
- package/external/folly/folly/memory/not_null.h +449 -0
- package/external/folly/folly/memory/test/ArenaTest.cpp +354 -0
- package/external/folly/folly/memory/test/BUCK +146 -0
- package/external/folly/folly/memory/test/MallctlHelperTest.cpp +169 -0
- package/external/folly/folly/memory/test/MallocBenchmark.cpp +91 -0
- package/external/folly/folly/memory/test/MallocTest.cpp +78 -0
- package/external/folly/folly/memory/test/MemoryResourceTest.cpp +31 -0
- package/external/folly/folly/memory/test/ReentrantAllocatorTest.cpp +144 -0
- package/external/folly/folly/memory/test/SanitizeAddressTest.cpp +67 -0
- package/external/folly/folly/memory/test/SanitizeLeakTest.cpp +139 -0
- package/external/folly/folly/memory/test/ThreadCachedArenaTest.cpp +276 -0
- package/external/folly/folly/memory/test/UninitializedMemoryHacksODR.cpp +21 -0
- package/external/folly/folly/memory/test/UninitializedMemoryHacksTest.cpp +327 -0
- package/external/folly/folly/memory/test/not_null_test.cpp +608 -0
- package/external/folly/folly/memset.S +245 -0
- package/external/folly/folly/memset_select_aarch64.cpp +72 -0
- package/external/folly/folly/portability/Asm.h +50 -0
- package/external/folly/folly/portability/Atomic.h +31 -0
- package/external/folly/folly/portability/BUCK +456 -0
- package/external/folly/folly/portability/Builtins.cpp +31 -0
- package/external/folly/folly/portability/Builtins.h +161 -0
- package/external/folly/folly/portability/Config.h +43 -0
- package/external/folly/folly/portability/Constexpr.h +145 -0
- package/external/folly/folly/portability/Dirent.cpp +140 -0
- package/external/folly/folly/portability/Dirent.h +41 -0
- package/external/folly/folly/portability/Event.h +44 -0
- package/external/folly/folly/portability/Fcntl.cpp +120 -0
- package/external/folly/folly/portability/Fcntl.h +67 -0
- package/external/folly/folly/portability/Filesystem.cpp +67 -0
- package/external/folly/folly/portability/Filesystem.h +114 -0
- package/external/folly/folly/portability/FmtCompile.h +40 -0
- package/external/folly/folly/portability/GFlags.h +139 -0
- package/external/folly/folly/portability/GMock.h +35 -0
- package/external/folly/folly/portability/GTest.h +35 -0
- package/external/folly/folly/portability/IOVec.h +34 -0
- package/external/folly/folly/portability/Libgen.cpp +59 -0
- package/external/folly/folly/portability/Libgen.h +29 -0
- package/external/folly/folly/portability/Libunwind.h +21 -0
- package/external/folly/folly/portability/Malloc.cpp +31 -0
- package/external/folly/folly/portability/Malloc.h +53 -0
- package/external/folly/folly/portability/Math.h +90 -0
- package/external/folly/folly/portability/Memory.h +26 -0
- package/external/folly/folly/portability/OpenSSL.cpp +17 -0
- package/external/folly/folly/portability/OpenSSL.h +102 -0
- package/external/folly/folly/portability/PThread.cpp +697 -0
- package/external/folly/folly/portability/PThread.h +148 -0
- package/external/folly/folly/portability/README.md +21 -0
- package/external/folly/folly/portability/Sched.cpp +41 -0
- package/external/folly/folly/portability/Sched.h +45 -0
- package/external/folly/folly/portability/Sockets.cpp +245 -0
- package/external/folly/folly/portability/Sockets.h +155 -0
- package/external/folly/folly/portability/SourceLocation.h +49 -0
- package/external/folly/folly/portability/Stdio.cpp +77 -0
- package/external/folly/folly/portability/Stdio.h +32 -0
- package/external/folly/folly/portability/Stdlib.cpp +172 -0
- package/external/folly/folly/portability/Stdlib.h +64 -0
- package/external/folly/folly/portability/String.cpp +53 -0
- package/external/folly/folly/portability/String.h +39 -0
- package/external/folly/folly/portability/SysFile.cpp +46 -0
- package/external/folly/folly/portability/SysFile.h +27 -0
- package/external/folly/folly/portability/SysMembarrier.cpp +104 -0
- package/external/folly/folly/portability/SysMembarrier.h +26 -0
- package/external/folly/folly/portability/SysMman.cpp +242 -0
- package/external/folly/folly/portability/SysMman.h +68 -0
- package/external/folly/folly/portability/SysResource.cpp +108 -0
- package/external/folly/folly/portability/SysResource.h +71 -0
- package/external/folly/folly/portability/SysStat.cpp +66 -0
- package/external/folly/folly/portability/SysStat.h +52 -0
- package/external/folly/folly/portability/SysSyscall.h +73 -0
- package/external/folly/folly/portability/SysTime.cpp +62 -0
- package/external/folly/folly/portability/SysTime.h +50 -0
- package/external/folly/folly/portability/SysTypes.h +44 -0
- package/external/folly/folly/portability/SysUio.cpp +179 -0
- package/external/folly/folly/portability/SysUio.h +51 -0
- package/external/folly/folly/portability/Syslog.h +39 -0
- package/external/folly/folly/portability/Time.cpp +357 -0
- package/external/folly/folly/portability/Time.h +74 -0
- package/external/folly/folly/portability/Unistd.h +111 -0
- package/external/folly/folly/portability/Windows.h +108 -0
- package/external/folly/folly/portability/openat2.c +30 -0
- package/external/folly/folly/portability/openat2.h +39 -0
- package/external/folly/folly/portability/test/BUCK +59 -0
- package/external/folly/folly/portability/test/ConstexprTest.cpp +102 -0
- package/external/folly/folly/portability/test/FilesystemTest.cpp +35 -0
- package/external/folly/folly/portability/test/LibgenTest.cpp +35 -0
- package/external/folly/folly/portability/test/OpenSSLPortabilityTest.cpp +108 -0
- package/external/folly/folly/portability/test/PThreadTest.cpp +80 -0
- package/external/folly/folly/portability/test/TimeTest.cpp +90 -0
- package/external/folly/folly/small_vector.h +17 -0
- package/external/folly/folly/somerge_defs.bzl +399 -0
- package/external/folly/folly/sorted_vector_types.h +17 -0
- package/external/folly/folly/stop_watch.h +317 -0
- package/external/folly/folly/synchronization/AsymmetricThreadFence.cpp +91 -0
- package/external/folly/folly/synchronization/AsymmetricThreadFence.h +60 -0
- package/external/folly/folly/synchronization/AtomicNotification-inl.h +146 -0
- package/external/folly/folly/synchronization/AtomicNotification.cpp +34 -0
- package/external/folly/folly/synchronization/AtomicNotification.h +117 -0
- package/external/folly/folly/synchronization/AtomicRef.h +181 -0
- package/external/folly/folly/synchronization/AtomicStruct.h +150 -0
- package/external/folly/folly/synchronization/AtomicUtil-inl.h +482 -0
- package/external/folly/folly/synchronization/AtomicUtil.h +179 -0
- package/external/folly/folly/synchronization/BUCK +418 -0
- package/external/folly/folly/synchronization/Baton.h +419 -0
- package/external/folly/folly/synchronization/CallOnce.h +263 -0
- package/external/folly/folly/synchronization/DelayedInit.h +179 -0
- package/external/folly/folly/synchronization/DistributedMutex-inl.h +1744 -0
- package/external/folly/folly/synchronization/DistributedMutex.cpp +27 -0
- package/external/folly/folly/synchronization/DistributedMutex.h +342 -0
- package/external/folly/folly/synchronization/EventCount.h +200 -0
- package/external/folly/folly/synchronization/FlatCombining.h +629 -0
- package/external/folly/folly/synchronization/Hazptr-fwd.h +217 -0
- package/external/folly/folly/synchronization/Hazptr.cpp +36 -0
- package/external/folly/folly/synchronization/Hazptr.h +209 -0
- package/external/folly/folly/synchronization/HazptrDomain.cpp +68 -0
- package/external/folly/folly/synchronization/HazptrDomain.h +832 -0
- package/external/folly/folly/synchronization/HazptrHolder.h +431 -0
- package/external/folly/folly/synchronization/HazptrObj.h +533 -0
- package/external/folly/folly/synchronization/HazptrObjLinked.h +315 -0
- package/external/folly/folly/synchronization/HazptrRec.h +68 -0
- package/external/folly/folly/synchronization/HazptrThrLocal.h +180 -0
- package/external/folly/folly/synchronization/HazptrThreadPoolExecutor.cpp +46 -0
- package/external/folly/folly/synchronization/HazptrThreadPoolExecutor.h +25 -0
- package/external/folly/folly/synchronization/Latch.h +160 -0
- package/external/folly/folly/synchronization/LifoSem.h +767 -0
- package/external/folly/folly/synchronization/Lock.h +887 -0
- package/external/folly/folly/synchronization/MicroSpinLock.h +154 -0
- package/external/folly/folly/synchronization/NativeSemaphore.h +187 -0
- package/external/folly/folly/synchronization/ParkingLot.cpp +37 -0
- package/external/folly/folly/synchronization/ParkingLot.h +330 -0
- package/external/folly/folly/synchronization/PicoSpinLock.h +167 -0
- package/external/folly/folly/synchronization/RWSpinLock.h +549 -0
- package/external/folly/folly/synchronization/Rcu.cpp +26 -0
- package/external/folly/folly/synchronization/Rcu.h +553 -0
- package/external/folly/folly/synchronization/RelaxedAtomic.h +336 -0
- package/external/folly/folly/synchronization/SanitizeThread.cpp +141 -0
- package/external/folly/folly/synchronization/SanitizeThread.h +166 -0
- package/external/folly/folly/synchronization/SaturatingSemaphore.h +324 -0
- package/external/folly/folly/synchronization/SmallLocks.h +36 -0
- package/external/folly/folly/synchronization/ThrottledLifoSem.h +362 -0
- package/external/folly/folly/synchronization/WaitOptions.cpp +25 -0
- package/external/folly/folly/synchronization/WaitOptions.h +75 -0
- package/external/folly/folly/synchronization/detail/AtomicUtils.h +59 -0
- package/external/folly/folly/synchronization/detail/BUCK +104 -0
- package/external/folly/folly/synchronization/detail/Hardware.cpp +192 -0
- package/external/folly/folly/synchronization/detail/Hardware.h +75 -0
- package/external/folly/folly/synchronization/detail/HazptrUtils.h +339 -0
- package/external/folly/folly/synchronization/detail/InlineFunctionRef.h +229 -0
- package/external/folly/folly/synchronization/detail/Sleeper.cpp +27 -0
- package/external/folly/folly/synchronization/detail/Sleeper.h +62 -0
- package/external/folly/folly/synchronization/detail/Spin.h +96 -0
- package/external/folly/folly/synchronization/detail/ThreadCachedLists.h +174 -0
- package/external/folly/folly/synchronization/detail/ThreadCachedReaders.h +189 -0
- package/external/folly/folly/synchronization/detail/ThreadCachedTag.h +26 -0
- package/external/folly/folly/synchronization/detail/test/BUCK +28 -0
- package/external/folly/folly/synchronization/detail/test/HardwareTest.cpp +74 -0
- package/external/folly/folly/synchronization/detail/test/InlineFunctionRefTest.cpp +286 -0
- package/external/folly/folly/synchronization/example/BUCK +27 -0
- package/external/folly/folly/synchronization/example/HazptrLockFreeLIFO.h +88 -0
- package/external/folly/folly/synchronization/example/HazptrSWMRSet.h +133 -0
- package/external/folly/folly/synchronization/example/HazptrWideCAS.h +62 -0
- package/external/folly/folly/synchronization/test/AtomicNotificationTest.cpp +236 -0
- package/external/folly/folly/synchronization/test/AtomicRefTest.cpp +170 -0
- package/external/folly/folly/synchronization/test/AtomicStructTest.cpp +65 -0
- package/external/folly/folly/synchronization/test/AtomicUtilBench.cpp +457 -0
- package/external/folly/folly/synchronization/test/AtomicUtilTest.cpp +650 -0
- package/external/folly/folly/synchronization/test/BUCK +495 -0
- package/external/folly/folly/synchronization/test/Barrier.h +52 -0
- package/external/folly/folly/synchronization/test/BarrierTest.cpp +56 -0
- package/external/folly/folly/synchronization/test/BatonBenchmark.cpp +77 -0
- package/external/folly/folly/synchronization/test/BatonTest.cpp +164 -0
- package/external/folly/folly/synchronization/test/BatonTestHelpers.h +118 -0
- package/external/folly/folly/synchronization/test/CallOnceBenchmark.cpp +72 -0
- package/external/folly/folly/synchronization/test/CallOnceTest.cpp +153 -0
- package/external/folly/folly/synchronization/test/DelayedInitTest.cpp +281 -0
- package/external/folly/folly/synchronization/test/DistributedMutexTest.cpp +2074 -0
- package/external/folly/folly/synchronization/test/EventCountTest.cpp +124 -0
- package/external/folly/folly/synchronization/test/FlatCombiningBenchmark.cpp +1789 -0
- package/external/folly/folly/synchronization/test/FlatCombiningExamples.h +222 -0
- package/external/folly/folly/synchronization/test/FlatCombiningTest.cpp +121 -0
- package/external/folly/folly/synchronization/test/FlatCombiningTestHelpers.h +227 -0
- package/external/folly/folly/synchronization/test/HazptrTest.cpp +1689 -0
- package/external/folly/folly/synchronization/test/LatchTest.cpp +224 -0
- package/external/folly/folly/synchronization/test/LifoSemBench.cpp +185 -0
- package/external/folly/folly/synchronization/test/LifoSemTests.cpp +353 -0
- package/external/folly/folly/synchronization/test/LockTest.cpp +1239 -0
- package/external/folly/folly/synchronization/test/NativeSemaphoreTest.cpp +37 -0
- package/external/folly/folly/synchronization/test/ParkingLotBenchmark.cpp +239 -0
- package/external/folly/folly/synchronization/test/ParkingLotTest.cpp +170 -0
- package/external/folly/folly/synchronization/test/RWSpinLockTest.cpp +235 -0
- package/external/folly/folly/synchronization/test/RcuBench.cpp +66 -0
- package/external/folly/folly/synchronization/test/RcuTest.cpp +330 -0
- package/external/folly/folly/synchronization/test/RelaxedAtomicTest.cpp +389 -0
- package/external/folly/folly/synchronization/test/SaturatingSemaphoreTest.cpp +166 -0
- package/external/folly/folly/synchronization/test/Semaphore.h +242 -0
- package/external/folly/folly/synchronization/test/SemaphoreTest.cpp +271 -0
- package/external/folly/folly/synchronization/test/SmallLocksBenchmark.cpp +1296 -0
- package/external/folly/folly/synchronization/test/SmallLocksTest.cpp +510 -0
- package/external/folly/folly/synchronization/test/ThreadCachedEpochBench.h +67 -0
- package/external/folly/folly/synchronization/test/ThreadCachedReadersBench.cpp +42 -0
- package/external/folly/folly/synchronization/test/ThreadCachedReadersTest.cpp +52 -0
- package/external/folly/folly/synchronization/test/ThrottledLifoSemTest.cpp +243 -0
- package/external/folly/folly/system/AtFork.cpp +205 -0
- package/external/folly/folly/system/AtFork.h +116 -0
- package/external/folly/folly/system/AuxVector.h +198 -0
- package/external/folly/folly/system/BUCK +144 -0
- package/external/folly/folly/system/EnvUtil.cpp +93 -0
- package/external/folly/folly/system/EnvUtil.h +113 -0
- package/external/folly/folly/system/HardwareConcurrency.cpp +39 -0
- package/external/folly/folly/system/HardwareConcurrency.h +23 -0
- package/external/folly/folly/system/MemoryMapping.cpp +477 -0
- package/external/folly/folly/system/MemoryMapping.h +287 -0
- package/external/folly/folly/system/Pid.cpp +87 -0
- package/external/folly/folly/system/Pid.h +34 -0
- package/external/folly/folly/system/Shell.cpp +33 -0
- package/external/folly/folly/system/Shell.h +93 -0
- package/external/folly/folly/system/ThreadId.cpp +89 -0
- package/external/folly/folly/system/ThreadId.h +62 -0
- package/external/folly/folly/system/ThreadName.cpp +330 -0
- package/external/folly/folly/system/ThreadName.h +72 -0
- package/external/folly/folly/system/test/AtForkTest.cpp +309 -0
- package/external/folly/folly/system/test/AuxVectorTest.cpp +55 -0
- package/external/folly/folly/system/test/BUCK +120 -0
- package/external/folly/folly/system/test/EnvUtilSubprocess.cpp +26 -0
- package/external/folly/folly/system/test/EnvUtilTest.cpp +197 -0
- package/external/folly/folly/system/test/MemoryMappingTest.cpp +179 -0
- package/external/folly/folly/system/test/PidTest.cpp +46 -0
- package/external/folly/folly/system/test/ShellTest.cpp +66 -0
- package/external/folly/folly/system/test/ThreadIdTest.cpp +114 -0
- package/external/folly/folly/system/test/ThreadNameTest.cpp +85 -0
- package/external/folly/folly.vcxitems +164 -0
- package/external/folly/static/logo.svg +1 -0
- package/external/folly/sync-config.json +8 -0
- package/package.json +6 -6
- package/template/cpp-lib/proj/MyLib.sln +0 -33
- package/template/cs-lib/proj/MyLib.sln +0 -33
- package/templates/cpp-app/windows/MyApp.sln +0 -33
- package/templates/cpp-lib/example/metro.config.js +30 -4
- package/templates/cpp-lib/windows/MyLib.sln +0 -33
- package/Folly/Folly.vcxproj +0 -378
- package/Folly/Folly.vcxproj.filters +0 -558
- package/fmt/fmt.vcxproj +0 -153
- package/fmt/fmt.vcxproj.filters +0 -59
- package/fmt/pch.cpp +0 -4
- package/fmt/pch.h +0 -2
- /package/{fmt → external/fmt}/cgmanifest.json +0 -0
- /package/{Folly → external/folly}/Folly.natvis +0 -0
- /package/{Folly → external/folly}/cgmanifest.json +0 -0
- /package/{Folly/TEMP_UntilFollyUpdate → external/folly/folly}/ConstexprMath.h +0 -0
- /package/{Folly/TEMP_UntilFollyUpdate → external/folly/folly}/Conv.cpp +0 -0
- /package/{Folly/TEMP_UntilFollyUpdate → external/folly/folly}/chrono/Hardware.h +0 -0
- /package/{Folly/TEMP_UntilFollyUpdate → external/folly/folly}/concurrency/CacheLocality.cpp +0 -0
- /package/{Folly/TEMP_UntilFollyUpdate → external/folly/folly}/json/dynamic-inl.h +0 -0
- /package/{Folly/TEMP_UntilFollyUpdate → external/folly/folly}/json/json.cpp +0 -0
- /package/{Folly/TEMP_UntilFollyUpdate → external/folly/folly}/lang/SafeAssert.h +0 -0
- /package/{Folly/TEMP_UntilFollyUpdate → external/folly/folly}/lang/ToAscii.cpp +0 -0
- /package/{Folly/TEMP_UntilFollyUpdate → external/folly/folly}/lang/ToAscii.h +0 -0
- /package/{Folly/TEMP_UntilFollyUpdate → external/folly/folly}/portability/Unistd.cpp +0 -0
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
#pragma once
|
|
18
|
+
|
|
19
|
+
#include <folly/Portability.h>
|
|
20
|
+
|
|
21
|
+
#if FOLLY_SSE_PREREQ(4, 2)
|
|
22
|
+
#include <immintrin.h>
|
|
23
|
+
#endif
|
|
24
|
+
|
|
25
|
+
#include <stdint.h>
|
|
26
|
+
|
|
27
|
+
#include <cstddef>
|
|
28
|
+
|
|
29
|
+
namespace folly {
|
|
30
|
+
namespace detail {
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* Compute a CRC-32C checksum of a buffer using a hardware-accelerated
|
|
34
|
+
* implementation.
|
|
35
|
+
*
|
|
36
|
+
* @note This function is exposed to support special cases where the
|
|
37
|
+
* calling code is absolutely certain it ought to invoke a hardware-
|
|
38
|
+
* accelerated CRC-32C implementation - unit tests, for example. For
|
|
39
|
+
* all other scenarios, please call crc32c() and let it pick an
|
|
40
|
+
* implementation based on the capabilities of the underlying CPU.
|
|
41
|
+
*/
|
|
42
|
+
uint32_t crc32c_hw(
|
|
43
|
+
const uint8_t* data, size_t nbytes, uint32_t startingChecksum = ~0U);
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* Check whether a SSE4.2 hardware-accelerated CRC-32C implementation is
|
|
47
|
+
* supported on the current CPU.
|
|
48
|
+
*/
|
|
49
|
+
bool crc32c_hw_supported_sse42();
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* Check whether a hardware-accelerated CRC-32C implementation is
|
|
53
|
+
* supported on the current CPU.
|
|
54
|
+
*/
|
|
55
|
+
bool crc32c_hw_supported();
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* Check whether an AVX512VL hardware-accelerated CRC-32C implementation is
|
|
59
|
+
* supported on the current CPU.
|
|
60
|
+
*/
|
|
61
|
+
bool crc32c_hw_supported_avx512();
|
|
62
|
+
|
|
63
|
+
/**
|
|
64
|
+
* Check whether a NEON hardware-accelerated CRC-32C implementation is
|
|
65
|
+
* supported on the current CPU.
|
|
66
|
+
*/
|
|
67
|
+
bool crc32c_hw_supported_neon();
|
|
68
|
+
|
|
69
|
+
/**
|
|
70
|
+
* Check whether a NEON+EOR3+SHA3 hardware-accelerated CRC-32C implementation
|
|
71
|
+
* is supported on the current CPU.
|
|
72
|
+
*/
|
|
73
|
+
bool crc32c_hw_supported_neon_eor3_sha3();
|
|
74
|
+
|
|
75
|
+
/**
|
|
76
|
+
* Compute a CRC-32C checksum of a buffer using a portable,
|
|
77
|
+
* software-only implementation.
|
|
78
|
+
*
|
|
79
|
+
* @note This function is exposed to support special cases where the
|
|
80
|
+
* calling code is absolutely certain it wants to use the software
|
|
81
|
+
* implementation instead of the hardware-accelerated code - unit
|
|
82
|
+
* tests, for example. For all other scenarios, please call crc32c()
|
|
83
|
+
* and let it pick an implementation based on the capabilities of
|
|
84
|
+
* the underlying CPU.
|
|
85
|
+
*/
|
|
86
|
+
uint32_t crc32c_sw(
|
|
87
|
+
const uint8_t* data, size_t nbytes, uint32_t startingChecksum = ~0U);
|
|
88
|
+
|
|
89
|
+
/**
|
|
90
|
+
* Compute a CRC-32 checksum of a buffer using a hardware-accelerated
|
|
91
|
+
* implementation.
|
|
92
|
+
*
|
|
93
|
+
* @note This function is exposed to support special cases where the
|
|
94
|
+
* calling code is absolutely certain it ought to invoke a hardware-
|
|
95
|
+
* accelerated CRC-32 implementation - unit tests, for example. For
|
|
96
|
+
* all other scenarios, please call crc32() and let it pick an
|
|
97
|
+
* implementation based on the capabilities of the underlying CPU.
|
|
98
|
+
*/
|
|
99
|
+
uint32_t crc32_hw(
|
|
100
|
+
const uint8_t* data, size_t nbytes, uint32_t startingChecksum = ~0U);
|
|
101
|
+
|
|
102
|
+
#if FOLLY_SSE_PREREQ(4, 2)
|
|
103
|
+
uint32_t crc32_hw_aligned(
|
|
104
|
+
uint32_t remainder, const __m128i* p, size_t vec_count);
|
|
105
|
+
#endif
|
|
106
|
+
|
|
107
|
+
/**
|
|
108
|
+
* Check whether a hardware-accelerated CRC-32 implementation is
|
|
109
|
+
* supported on the current CPU.
|
|
110
|
+
*/
|
|
111
|
+
bool crc32_hw_supported();
|
|
112
|
+
|
|
113
|
+
/**
|
|
114
|
+
* Compute a CRC-32 checksum of a buffer using a portable,
|
|
115
|
+
* software-only implementation.
|
|
116
|
+
*
|
|
117
|
+
* @note This function is exposed to support special cases where the
|
|
118
|
+
* calling code is absolutely certain it wants to use the software
|
|
119
|
+
* implementation instead of the hardware-accelerated code - unit
|
|
120
|
+
* tests, for example. For all other scenarios, please call crc32()
|
|
121
|
+
* and let it pick an implementation based on the capabilities of
|
|
122
|
+
* the underlying CPU.
|
|
123
|
+
*/
|
|
124
|
+
uint32_t crc32_sw(
|
|
125
|
+
const uint8_t* data, size_t nbytes, uint32_t startingChecksum = ~0U);
|
|
126
|
+
|
|
127
|
+
/* See Checksum.h for details.
|
|
128
|
+
*
|
|
129
|
+
* crc2len *must* be a power of two >= 4.
|
|
130
|
+
*/
|
|
131
|
+
uint32_t crc32_combine_sw(uint32_t crc1, uint32_t crc2, size_t crc2len);
|
|
132
|
+
uint32_t crc32_combine_hw(uint32_t crc1, uint32_t crc2, size_t crc2len);
|
|
133
|
+
uint32_t crc32c_combine_sw(uint32_t crc1, uint32_t crc2, size_t crc2len);
|
|
134
|
+
uint32_t crc32c_combine_hw(uint32_t crc1, uint32_t crc2, size_t crc2len);
|
|
135
|
+
|
|
136
|
+
} // namespace detail
|
|
137
|
+
} // namespace folly
|
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
#include <array>
|
|
18
|
+
#include <utility>
|
|
19
|
+
|
|
20
|
+
#include <folly/Bits.h>
|
|
21
|
+
#include <folly/external/nvidia/hash/detail/Crc32cCombineDetail.h>
|
|
22
|
+
#include <folly/hash/detail/ChecksumDetail.h>
|
|
23
|
+
|
|
24
|
+
namespace folly {
|
|
25
|
+
|
|
26
|
+
// Standard galois-field multiply. The only modification is that a,
|
|
27
|
+
// b, m, and p are all bit-reflected.
|
|
28
|
+
//
|
|
29
|
+
// https://en.wikipedia.org/wiki/Finite_field_arithmetic
|
|
30
|
+
static constexpr uint32_t gf_multiply_sw_1(
|
|
31
|
+
size_t i, uint32_t p, uint32_t a, uint32_t b, uint32_t m) {
|
|
32
|
+
// clang-format off
|
|
33
|
+
return i == 32 ? p : gf_multiply_sw_1(
|
|
34
|
+
/* i = */ i + 1,
|
|
35
|
+
/* p = */ p ^ (-((b >> 31) & 1) & a),
|
|
36
|
+
/* a = */ (a >> 1) ^ (-(a & 1) & m),
|
|
37
|
+
/* b = */ b << 1,
|
|
38
|
+
/* m = */ m);
|
|
39
|
+
// clang-format on
|
|
40
|
+
}
|
|
41
|
+
static constexpr uint32_t gf_multiply_sw(uint32_t a, uint32_t b, uint32_t m) {
|
|
42
|
+
return gf_multiply_sw_1(/* i = */ 0, /* p = */ 0, a, b, m);
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
static constexpr uint32_t gf_square_sw(uint32_t a, uint32_t m) {
|
|
46
|
+
return gf_multiply_sw(a, a, m);
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
namespace {
|
|
50
|
+
|
|
51
|
+
template <size_t i, uint32_t m>
|
|
52
|
+
struct gf_powers_memo {
|
|
53
|
+
static constexpr uint32_t value =
|
|
54
|
+
gf_square_sw(gf_powers_memo<i - 1, m>::value, m);
|
|
55
|
+
};
|
|
56
|
+
template <uint32_t m>
|
|
57
|
+
struct gf_powers_memo<0, m> {
|
|
58
|
+
static constexpr uint32_t value = m;
|
|
59
|
+
};
|
|
60
|
+
|
|
61
|
+
template <uint32_t m>
|
|
62
|
+
struct gf_powers_make {
|
|
63
|
+
template <size_t... i>
|
|
64
|
+
constexpr auto operator()(std::index_sequence<i...>) const {
|
|
65
|
+
return std::array<uint32_t, sizeof...(i)>{{gf_powers_memo<i, m>::value...}};
|
|
66
|
+
}
|
|
67
|
+
};
|
|
68
|
+
|
|
69
|
+
} // namespace
|
|
70
|
+
|
|
71
|
+
#if FOLLY_SSE_PREREQ(4, 2)
|
|
72
|
+
|
|
73
|
+
// Reduction taken from
|
|
74
|
+
// https://www.nicst.de/crc.pdf
|
|
75
|
+
//
|
|
76
|
+
// This is an intrinsics-based implementation of listing 3.
|
|
77
|
+
static uint32_t gf_multiply_crc32c_hw(uint64_t crc1, uint64_t crc2, uint32_t) {
|
|
78
|
+
const auto crc1_xmm = _mm_set_epi64x(0, crc1);
|
|
79
|
+
const auto crc2_xmm = _mm_set_epi64x(0, crc2);
|
|
80
|
+
const auto count = _mm_set_epi64x(0, 1);
|
|
81
|
+
const auto res0 = _mm_clmulepi64_si128(crc2_xmm, crc1_xmm, 0x00);
|
|
82
|
+
const auto res1 = _mm_sll_epi64(res0, count);
|
|
83
|
+
|
|
84
|
+
// Use hardware crc32c to do reduction from 64 -> 32 bytes
|
|
85
|
+
const auto res2 = _mm_cvtsi128_si64(res1);
|
|
86
|
+
const auto res3 = _mm_crc32_u32(0, res2);
|
|
87
|
+
const auto res4 = _mm_extract_epi32(res1, 1);
|
|
88
|
+
return res3 ^ res4;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
static uint32_t gf_multiply_crc32_hw(uint64_t crc1, uint64_t crc2, uint32_t) {
|
|
92
|
+
const auto crc1_xmm = _mm_set_epi64x(0, crc1);
|
|
93
|
+
const auto crc2_xmm = _mm_set_epi64x(0, crc2);
|
|
94
|
+
const auto count = _mm_set_epi64x(0, 1);
|
|
95
|
+
const auto res0 = _mm_clmulepi64_si128(crc2_xmm, crc1_xmm, 0x00);
|
|
96
|
+
const auto res1 = _mm_sll_epi64(res0, count);
|
|
97
|
+
|
|
98
|
+
// Do barrett reduction of 64 -> 32 bytes
|
|
99
|
+
const auto mask32 = _mm_set_epi32(0, 0, 0, 0xFFFFFFFF);
|
|
100
|
+
const auto barrett_reduction_constants =
|
|
101
|
+
_mm_set_epi32(0x1, 0xDB710641, 0x1, 0xF7011641);
|
|
102
|
+
const auto res2 = _mm_clmulepi64_si128(
|
|
103
|
+
_mm_and_si128(res1, mask32), barrett_reduction_constants, 0x00);
|
|
104
|
+
const auto res3 = _mm_clmulepi64_si128(
|
|
105
|
+
_mm_and_si128(res2, mask32), barrett_reduction_constants, 0x10);
|
|
106
|
+
return _mm_cvtsi128_si32(_mm_srli_si128(_mm_xor_si128(res3, res1), 4));
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
#elif FOLLY_NEON && FOLLY_ARM_FEATURE_CRC32 && FOLLY_ARM_FEATURE_AES && \
|
|
110
|
+
FOLLY_ARM_FEATURE_SHA2
|
|
111
|
+
|
|
112
|
+
// gf_multiply_crc32c_hw and fg_multiply_crc32_hw are defined in
|
|
113
|
+
// external/nvidia/hash/detail/Crc32cCombineDetail-inl.h
|
|
114
|
+
#else
|
|
115
|
+
|
|
116
|
+
static uint32_t gf_multiply_crc32c_hw(uint64_t, uint64_t, uint32_t) {
|
|
117
|
+
return 0;
|
|
118
|
+
}
|
|
119
|
+
static uint32_t gf_multiply_crc32_hw(uint64_t, uint64_t, uint32_t) {
|
|
120
|
+
return 0;
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
#endif // FOLLY_SSE_PREREQ(4, 2)
|
|
124
|
+
|
|
125
|
+
static constexpr uint32_t crc32c_m = 0x82f63b78;
|
|
126
|
+
static constexpr uint32_t crc32_m = 0xedb88320;
|
|
127
|
+
|
|
128
|
+
/*
|
|
129
|
+
* Pre-calculated powers tables for crc32c and crc32.
|
|
130
|
+
*/
|
|
131
|
+
static constexpr std::array<uint32_t, 62> const crc32c_powers =
|
|
132
|
+
gf_powers_make<crc32c_m>{}(std::make_index_sequence<62>{});
|
|
133
|
+
static constexpr std::array<uint32_t, 62> const crc32_powers =
|
|
134
|
+
gf_powers_make<crc32_m>{}(std::make_index_sequence<62>{});
|
|
135
|
+
|
|
136
|
+
template <typename F>
|
|
137
|
+
static uint32_t crc32_append_zeroes(
|
|
138
|
+
F mult,
|
|
139
|
+
uint32_t crc,
|
|
140
|
+
size_t len,
|
|
141
|
+
uint32_t polynomial,
|
|
142
|
+
std::array<uint32_t, 62> const& powers_array) {
|
|
143
|
+
auto powers = powers_array.data();
|
|
144
|
+
|
|
145
|
+
// Append by multiplying by consecutive powers of two of the zeroes
|
|
146
|
+
// array
|
|
147
|
+
len >>= 2;
|
|
148
|
+
|
|
149
|
+
while (len) {
|
|
150
|
+
// Advance directly to next bit set.
|
|
151
|
+
auto r = findFirstSet(len) - 1;
|
|
152
|
+
len >>= r;
|
|
153
|
+
powers += r;
|
|
154
|
+
|
|
155
|
+
crc = mult(crc, *powers, polynomial);
|
|
156
|
+
|
|
157
|
+
len >>= 1;
|
|
158
|
+
powers++;
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
return crc;
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
namespace detail {
|
|
165
|
+
|
|
166
|
+
uint32_t crc32_combine_sw(uint32_t crc1, uint32_t crc2, size_t crc2len) {
|
|
167
|
+
return crc2 ^
|
|
168
|
+
crc32_append_zeroes(gf_multiply_sw, crc1, crc2len, crc32_m, crc32_powers);
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
uint32_t crc32_combine_hw(uint32_t crc1, uint32_t crc2, size_t crc2len) {
|
|
172
|
+
return crc2 ^
|
|
173
|
+
crc32_append_zeroes(
|
|
174
|
+
gf_multiply_crc32_hw, crc1, crc2len, crc32_m, crc32_powers);
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
uint32_t crc32c_combine_sw(uint32_t crc1, uint32_t crc2, size_t crc2len) {
|
|
178
|
+
return crc2 ^
|
|
179
|
+
crc32_append_zeroes(
|
|
180
|
+
gf_multiply_sw, crc1, crc2len, crc32c_m, crc32c_powers);
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
uint32_t crc32c_combine_hw(uint32_t crc1, uint32_t crc2, size_t crc2len) {
|
|
184
|
+
return crc2 ^
|
|
185
|
+
crc32_append_zeroes(
|
|
186
|
+
gf_multiply_crc32c_hw, crc1, crc2len, crc32c_m, crc32c_powers);
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
} // namespace detail
|
|
190
|
+
|
|
191
|
+
} // namespace folly
|
|
@@ -0,0 +1,303 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright 2016 Ferry Toth, Exalon Delft BV, The Netherlands
|
|
3
|
+
* This software is provided 'as-is', without any express or implied
|
|
4
|
+
* warranty. In no event will the author be held liable for any damages
|
|
5
|
+
* arising from the use of this software.
|
|
6
|
+
* Permission is granted to anyone to use this software for any purpose,
|
|
7
|
+
* including commercial applications, and to alter it and redistribute it
|
|
8
|
+
* freely, subject to the following restrictions:
|
|
9
|
+
* 1. The origin of this software must not be misrepresented; you must not
|
|
10
|
+
* claim that you wrote the original software. If you use this software
|
|
11
|
+
* in a product, an acknowledgment in the product documentation would be
|
|
12
|
+
* appreciated but is not required.
|
|
13
|
+
* 2. Altered source versions must be plainly marked as such, and must not be
|
|
14
|
+
* misrepresented as being the original software.
|
|
15
|
+
* 3. This notice may not be removed or altered from any source distribution.
|
|
16
|
+
* Ferry Toth
|
|
17
|
+
* ftoth@exalondelft.nl
|
|
18
|
+
*
|
|
19
|
+
* https://github.com/htot/crc32c
|
|
20
|
+
*
|
|
21
|
+
* Modified by Facebook
|
|
22
|
+
*
|
|
23
|
+
* Original intel whitepaper:
|
|
24
|
+
* "Fast CRC Computation for iSCSI Polynomial Using CRC32 Instruction"
|
|
25
|
+
* https://www.intel.com/content/dam/www/public/us/en/documents/white-papers/crc-iscsi-polynomial-crc32-instruction-paper.pdf
|
|
26
|
+
*
|
|
27
|
+
* 32-bit support dropped
|
|
28
|
+
* use intrinsics instead of inline asm
|
|
29
|
+
* other code cleanup
|
|
30
|
+
*/
|
|
31
|
+
|
|
32
|
+
#include <stdexcept>
|
|
33
|
+
|
|
34
|
+
#include <boost/preprocessor/arithmetic/add.hpp>
|
|
35
|
+
#include <boost/preprocessor/arithmetic/sub.hpp>
|
|
36
|
+
#include <boost/preprocessor/repetition/repeat_from_to.hpp>
|
|
37
|
+
|
|
38
|
+
#include <folly/CppAttributes.h>
|
|
39
|
+
#include <folly/hash/detail/ChecksumDetail.h>
|
|
40
|
+
|
|
41
|
+
namespace folly {
|
|
42
|
+
namespace detail {
|
|
43
|
+
|
|
44
|
+
#if defined(FOLLY_X64) && FOLLY_SSE_PREREQ(4, 2)
|
|
45
|
+
|
|
46
|
+
namespace crc32_detail {
|
|
47
|
+
|
|
48
|
+
#define CRCtriplet(crc, buf, offset) \
|
|
49
|
+
crc##0 = _mm_crc32_u64(crc##0, *(buf##0 + offset)); \
|
|
50
|
+
crc##1 = _mm_crc32_u64(crc##1, *(buf##1 + offset)); \
|
|
51
|
+
crc##2 = _mm_crc32_u64(crc##2, *(buf##2 + offset)); \
|
|
52
|
+
[[fallthrough]]
|
|
53
|
+
|
|
54
|
+
#define CRCduplet(crc, buf, offset) \
|
|
55
|
+
crc##0 = _mm_crc32_u64(crc##0, *(buf##0 + offset)); \
|
|
56
|
+
crc##1 = _mm_crc32_u64(crc##1, *(buf##1 + offset)); \
|
|
57
|
+
static_assert(true, "Semicolon required")
|
|
58
|
+
|
|
59
|
+
#define CRCsinglet(crc, buf, offset) \
|
|
60
|
+
crc = _mm_crc32_u64(crc, *(uint64_t*)(buf + offset)); \
|
|
61
|
+
[[fallthrough]]
|
|
62
|
+
|
|
63
|
+
#define CASEREPEAT_TRIPLET(unused, count, total) \
|
|
64
|
+
case BOOST_PP_ADD(1, BOOST_PP_SUB(total, count)): \
|
|
65
|
+
CRCtriplet(crc, next, -BOOST_PP_ADD(1, BOOST_PP_SUB(total, count)));
|
|
66
|
+
|
|
67
|
+
#define CASEREPEAT_SINGLET(unused, count, total) \
|
|
68
|
+
case BOOST_PP_SUB(total, count): \
|
|
69
|
+
CRCsinglet(crc0, next, -BOOST_PP_SUB(total, count) * 8);
|
|
70
|
+
|
|
71
|
+
// Numbers taken directly from intel whitepaper.
|
|
72
|
+
// clang-format off
|
|
73
|
+
const uint64_t clmul_constants[] = {
|
|
74
|
+
0x14cd00bd6, 0x105ec76f0, 0x0ba4fc28e, 0x14cd00bd6,
|
|
75
|
+
0x1d82c63da, 0x0f20c0dfe, 0x09e4addf8, 0x0ba4fc28e,
|
|
76
|
+
0x039d3b296, 0x1384aa63a, 0x102f9b8a2, 0x1d82c63da,
|
|
77
|
+
0x14237f5e6, 0x01c291d04, 0x00d3b6092, 0x09e4addf8,
|
|
78
|
+
0x0c96cfdc0, 0x0740eef02, 0x18266e456, 0x039d3b296,
|
|
79
|
+
0x0daece73e, 0x0083a6eec, 0x0ab7aff2a, 0x102f9b8a2,
|
|
80
|
+
0x1248ea574, 0x1c1733996, 0x083348832, 0x14237f5e6,
|
|
81
|
+
0x12c743124, 0x02ad91c30, 0x0b9e02b86, 0x00d3b6092,
|
|
82
|
+
0x018b33a4e, 0x06992cea2, 0x1b331e26a, 0x0c96cfdc0,
|
|
83
|
+
0x17d35ba46, 0x07e908048, 0x1bf2e8b8a, 0x18266e456,
|
|
84
|
+
0x1a3e0968a, 0x11ed1f9d8, 0x0ce7f39f4, 0x0daece73e,
|
|
85
|
+
0x061d82e56, 0x0f1d0f55e, 0x0d270f1a2, 0x0ab7aff2a,
|
|
86
|
+
0x1c3f5f66c, 0x0a87ab8a8, 0x12ed0daac, 0x1248ea574,
|
|
87
|
+
0x065863b64, 0x08462d800, 0x11eef4f8e, 0x083348832,
|
|
88
|
+
0x1ee54f54c, 0x071d111a8, 0x0b3e32c28, 0x12c743124,
|
|
89
|
+
0x0064f7f26, 0x0ffd852c6, 0x0dd7e3b0c, 0x0b9e02b86,
|
|
90
|
+
0x0f285651c, 0x0dcb17aa4, 0x010746f3c, 0x018b33a4e,
|
|
91
|
+
0x1c24afea4, 0x0f37c5aee, 0x0271d9844, 0x1b331e26a,
|
|
92
|
+
0x08e766a0c, 0x06051d5a2, 0x093a5f730, 0x17d35ba46,
|
|
93
|
+
0x06cb08e5c, 0x11d5ca20e, 0x06b749fb2, 0x1bf2e8b8a,
|
|
94
|
+
0x1167f94f2, 0x021f3d99c, 0x0cec3662e, 0x1a3e0968a,
|
|
95
|
+
0x19329634a, 0x08f158014, 0x0e6fc4e6a, 0x0ce7f39f4,
|
|
96
|
+
0x08227bb8a, 0x1a5e82106, 0x0b0cd4768, 0x061d82e56,
|
|
97
|
+
0x13c2b89c4, 0x188815ab2, 0x0d7a4825c, 0x0d270f1a2,
|
|
98
|
+
0x10f5ff2ba, 0x105405f3e, 0x00167d312, 0x1c3f5f66c,
|
|
99
|
+
0x0f6076544, 0x0e9adf796, 0x026f6a60a, 0x12ed0daac,
|
|
100
|
+
0x1a2adb74e, 0x096638b34, 0x19d34af3a, 0x065863b64,
|
|
101
|
+
0x049c3cc9c, 0x1e50585a0, 0x068bce87a, 0x11eef4f8e,
|
|
102
|
+
0x1524fa6c6, 0x19f1c69dc, 0x16cba8aca, 0x1ee54f54c,
|
|
103
|
+
0x042d98888, 0x12913343e, 0x1329d9f7e, 0x0b3e32c28,
|
|
104
|
+
0x1b1c69528, 0x088f25a3a, 0x02178513a, 0x0064f7f26,
|
|
105
|
+
0x0e0ac139e, 0x04e36f0b0, 0x0170076fa, 0x0dd7e3b0c,
|
|
106
|
+
0x141a1a2e2, 0x0bd6f81f8, 0x16ad828b4, 0x0f285651c,
|
|
107
|
+
0x041d17b64, 0x19425cbba, 0x1fae1cc66, 0x010746f3c,
|
|
108
|
+
0x1a75b4b00, 0x18db37e8a, 0x0f872e54c, 0x1c24afea4,
|
|
109
|
+
0x01e41e9fc, 0x04c144932, 0x086d8e4d2, 0x0271d9844,
|
|
110
|
+
0x160f7af7a, 0x052148f02, 0x05bb8f1bc, 0x08e766a0c,
|
|
111
|
+
0x0a90fd27a, 0x0a3c6f37a, 0x0b3af077a, 0x093a5f730,
|
|
112
|
+
0x04984d782, 0x1d22c238e, 0x0ca6ef3ac, 0x06cb08e5c,
|
|
113
|
+
0x0234e0b26, 0x063ded06a, 0x1d88abd4a, 0x06b749fb2,
|
|
114
|
+
0x04597456a, 0x04d56973c, 0x0e9e28eb4, 0x1167f94f2,
|
|
115
|
+
0x07b3ff57a, 0x19385bf2e, 0x0c9c8b782, 0x0cec3662e,
|
|
116
|
+
0x13a9cba9e, 0x0e417f38a, 0x093e106a4, 0x19329634a,
|
|
117
|
+
0x167001a9c, 0x14e727980, 0x1ddffc5d4, 0x0e6fc4e6a,
|
|
118
|
+
0x00df04680, 0x0d104b8fc, 0x02342001e, 0x08227bb8a,
|
|
119
|
+
0x00a2a8d7e, 0x05b397730, 0x168763fa6, 0x0b0cd4768,
|
|
120
|
+
0x1ed5a407a, 0x0e78eb416, 0x0d2c3ed1a, 0x13c2b89c4,
|
|
121
|
+
0x0995a5724, 0x1641378f0, 0x19b1afbc4, 0x0d7a4825c,
|
|
122
|
+
0x109ffedc0, 0x08d96551c, 0x0f2271e60, 0x10f5ff2ba,
|
|
123
|
+
0x00b0bf8ca, 0x00bf80dd2, 0x123888b7a, 0x00167d312,
|
|
124
|
+
0x1e888f7dc, 0x18dcddd1c, 0x002ee03b2, 0x0f6076544,
|
|
125
|
+
0x183e8d8fe, 0x06a45d2b2, 0x133d7a042, 0x026f6a60a,
|
|
126
|
+
0x116b0f50c, 0x1dd3e10e8, 0x05fabe670, 0x1a2adb74e,
|
|
127
|
+
0x130004488, 0x0de87806c, 0x000bcf5f6, 0x19d34af3a,
|
|
128
|
+
0x18f0c7078, 0x014338754, 0x017f27698, 0x049c3cc9c,
|
|
129
|
+
0x058ca5f00, 0x15e3e77ee, 0x1af900c24, 0x068bce87a,
|
|
130
|
+
0x0b5cfca28, 0x0dd07448e, 0x0ded288f8, 0x1524fa6c6,
|
|
131
|
+
0x059f229bc, 0x1d8048348, 0x06d390dec, 0x16cba8aca,
|
|
132
|
+
0x037170390, 0x0a3e3e02c, 0x06353c1cc, 0x042d98888,
|
|
133
|
+
0x0c4584f5c, 0x0d73c7bea, 0x1f16a3418, 0x1329d9f7e,
|
|
134
|
+
0x0531377e2, 0x185137662, 0x1d8d9ca7c, 0x1b1c69528,
|
|
135
|
+
0x0b25b29f2, 0x18a08b5bc, 0x19fb2a8b0, 0x02178513a,
|
|
136
|
+
0x1a08fe6ac, 0x1da758ae0, 0x045cddf4e, 0x0e0ac139e,
|
|
137
|
+
0x1a91647f2, 0x169cf9eb0, 0x1a0f717c4, 0x0170076fa,
|
|
138
|
+
};
|
|
139
|
+
// clang-format on
|
|
140
|
+
|
|
141
|
+
/*
|
|
142
|
+
* CombineCRC performs pclmulqdq multiplication of 2 partial CRC's and a well
|
|
143
|
+
* chosen constant and xor's these with the remaining CRC.
|
|
144
|
+
*/
|
|
145
|
+
uint64_t CombineCRC(
|
|
146
|
+
size_t block_size,
|
|
147
|
+
uint64_t crc0,
|
|
148
|
+
uint64_t crc1,
|
|
149
|
+
uint64_t crc2,
|
|
150
|
+
const uint64_t* next2) {
|
|
151
|
+
const auto multiplier =
|
|
152
|
+
*(reinterpret_cast<const __m128i*>(clmul_constants) + block_size - 1);
|
|
153
|
+
const auto crc0_xmm = _mm_set_epi64x(0, crc0);
|
|
154
|
+
const auto res0 = _mm_clmulepi64_si128(crc0_xmm, multiplier, 0x00);
|
|
155
|
+
const auto crc1_xmm = _mm_set_epi64x(0, crc1);
|
|
156
|
+
const auto res1 = _mm_clmulepi64_si128(crc1_xmm, multiplier, 0x10);
|
|
157
|
+
const auto res = _mm_xor_si128(res0, res1);
|
|
158
|
+
crc0 = _mm_cvtsi128_si64(res);
|
|
159
|
+
crc0 = crc0 ^ *((uint64_t*)next2 - 1);
|
|
160
|
+
crc2 = _mm_crc32_u64(crc2, crc0);
|
|
161
|
+
return crc2;
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
// Generates a block that will crc up to 7 bytes of unaligned data.
|
|
165
|
+
// Always inline to avoid overhead on small crc sizes.
|
|
166
|
+
FOLLY_ALWAYS_INLINE void align_to_8(
|
|
167
|
+
size_t align,
|
|
168
|
+
uint64_t& crc0, // crc so far, updated on return
|
|
169
|
+
const unsigned char*& next) { // next data pointer, updated on return
|
|
170
|
+
uint32_t crc32bit = static_cast<uint32_t>(crc0);
|
|
171
|
+
if (align & 0x04) {
|
|
172
|
+
crc32bit = _mm_crc32_u32(crc32bit, *(uint32_t*)next);
|
|
173
|
+
next += sizeof(uint32_t);
|
|
174
|
+
}
|
|
175
|
+
if (align & 0x02) {
|
|
176
|
+
crc32bit = _mm_crc32_u16(crc32bit, *(uint16_t*)next);
|
|
177
|
+
next += sizeof(uint16_t);
|
|
178
|
+
}
|
|
179
|
+
if (align & 0x01) {
|
|
180
|
+
crc32bit = _mm_crc32_u8(crc32bit, *(next));
|
|
181
|
+
next++;
|
|
182
|
+
}
|
|
183
|
+
crc0 = crc32bit;
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
// The main loop for large crc sizes. Generates three crc32c
|
|
187
|
+
// streams, of varying block sizes, using a duff's device.
|
|
188
|
+
void triplet_loop(
|
|
189
|
+
size_t block_size,
|
|
190
|
+
uint64_t& crc0, // crc so far, updated on return
|
|
191
|
+
const unsigned char*& next, // next data pointer, updated on return
|
|
192
|
+
size_t n) { // block count
|
|
193
|
+
uint64_t crc1 = 0, crc2 = 0;
|
|
194
|
+
// points to the first byte of the next block
|
|
195
|
+
const uint64_t* next0 = (uint64_t*)next + block_size;
|
|
196
|
+
const uint64_t* next1 = next0 + block_size;
|
|
197
|
+
const uint64_t* next2 = next1 + block_size;
|
|
198
|
+
|
|
199
|
+
// Use Duff's device, a for() loop inside a switch()
|
|
200
|
+
// statement. This needs to execute at least once, round len
|
|
201
|
+
// down to nearest triplet multiple
|
|
202
|
+
switch (block_size) {
|
|
203
|
+
case 128:
|
|
204
|
+
do {
|
|
205
|
+
// jumps here for a full block of len 128
|
|
206
|
+
CRCtriplet(crc, next, -128);
|
|
207
|
+
|
|
208
|
+
// Generates case statements from 127 to 2 of form:
|
|
209
|
+
// case 127:
|
|
210
|
+
// CRCtriplet(crc, next, -127);
|
|
211
|
+
//
|
|
212
|
+
// MSVC has a max preprocessor expansion depth of 255, which is
|
|
213
|
+
// exceeded if this is a single statement.
|
|
214
|
+
BOOST_PP_REPEAT_FROM_TO(0, 64, CASEREPEAT_TRIPLET, 126);
|
|
215
|
+
BOOST_PP_REPEAT_FROM_TO(0, 62, CASEREPEAT_TRIPLET, 62);
|
|
216
|
+
|
|
217
|
+
// For the last byte, the three crc32c streams must be combined
|
|
218
|
+
// using carry-less multiplication.
|
|
219
|
+
case 1:
|
|
220
|
+
CRCduplet(crc, next, -1); // the final triplet is actually only 2
|
|
221
|
+
crc0 = CombineCRC(block_size, crc0, crc1, crc2, next2);
|
|
222
|
+
if (--n > 0) {
|
|
223
|
+
crc1 = crc2 = 0;
|
|
224
|
+
block_size = 128;
|
|
225
|
+
// points to the first byte of the next block
|
|
226
|
+
next0 = next2 + 128;
|
|
227
|
+
next1 = next0 + 128; // from here on all blocks are 128 long
|
|
228
|
+
next2 = next1 + 128;
|
|
229
|
+
}
|
|
230
|
+
[[fallthrough]];
|
|
231
|
+
case 0:;
|
|
232
|
+
} while (n > 0);
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
next = (const unsigned char*)next2;
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
} // namespace crc32_detail
|
|
239
|
+
|
|
240
|
+
/* Compute CRC-32C using the Intel hardware instruction. */
|
|
241
|
+
FOLLY_TARGET_ATTRIBUTE("sse4.2")
|
|
242
|
+
uint32_t crc32c_hw(const uint8_t* buf, size_t len, uint32_t crc) {
|
|
243
|
+
const unsigned char* next = (const unsigned char*)buf;
|
|
244
|
+
size_t count;
|
|
245
|
+
uint64_t crc0;
|
|
246
|
+
crc0 = crc;
|
|
247
|
+
|
|
248
|
+
if (len >= 8) {
|
|
249
|
+
// if len > 216 then align and use triplets
|
|
250
|
+
if (len > 216) {
|
|
251
|
+
size_t align = (8 - (uintptr_t)next) & 7;
|
|
252
|
+
crc32_detail::align_to_8(align, crc0, next);
|
|
253
|
+
len -= align;
|
|
254
|
+
|
|
255
|
+
count = len / 24; // number of triplets
|
|
256
|
+
len %= 24; // bytes remaining
|
|
257
|
+
size_t n = count >> 7; // #blocks = first block + full blocks
|
|
258
|
+
size_t block_size = count & 127;
|
|
259
|
+
if (block_size == 0) {
|
|
260
|
+
block_size = 128;
|
|
261
|
+
} else {
|
|
262
|
+
n++;
|
|
263
|
+
}
|
|
264
|
+
|
|
265
|
+
// This is a separate function call mainly to stop
|
|
266
|
+
// clang from spilling registers.
|
|
267
|
+
crc32_detail::triplet_loop(block_size, crc0, next, n);
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
size_t count2 = len >> 3;
|
|
271
|
+
len = len & 7;
|
|
272
|
+
next += (count2 * 8);
|
|
273
|
+
|
|
274
|
+
// Generates a duff device for the last 128 bytes of aligned data.
|
|
275
|
+
switch (count2) {
|
|
276
|
+
// Generates case statements of the form:
|
|
277
|
+
// case 27:
|
|
278
|
+
// CRCsinglet(crc0, next, -27 * 8);
|
|
279
|
+
BOOST_PP_REPEAT_FROM_TO(0, 27, CASEREPEAT_SINGLET, 27);
|
|
280
|
+
case 0:;
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
|
|
284
|
+
// compute the crc for up to seven trailing bytes
|
|
285
|
+
crc32_detail::align_to_8(len, crc0, next);
|
|
286
|
+
return (uint32_t)crc0;
|
|
287
|
+
}
|
|
288
|
+
|
|
289
|
+
#elif FOLLY_ARM_FEATURE_CRC32
|
|
290
|
+
|
|
291
|
+
// crc32c_hw is defined in external/nvidia/hash/detail/Crc32cDetail.cpp
|
|
292
|
+
|
|
293
|
+
#else
|
|
294
|
+
|
|
295
|
+
uint32_t crc32c_hw(
|
|
296
|
+
const uint8_t* /* buf */, size_t /* len */, uint32_t /* crc */) {
|
|
297
|
+
throw std::runtime_error("crc32_hw is not implemented on this platform");
|
|
298
|
+
}
|
|
299
|
+
|
|
300
|
+
#endif // !defined(FOLLY_ARM_FEATURE_CRC32)
|
|
301
|
+
|
|
302
|
+
} // namespace detail
|
|
303
|
+
} // namespace folly
|