aboutsummaryrefslogtreecommitdiffstats
path: root/library/cpp/digest/crc32c/crc32c.cpp
diff options
context:
space:
mode:
authorarcadia-devtools <arcadia-devtools@yandex-team.ru>2022-05-06 16:25:32 +0300
committerarcadia-devtools <arcadia-devtools@yandex-team.ru>2022-05-06 16:25:32 +0300
commitcd04681a15e2a0f5a6c26802a5e27ab822ef5fb7 (patch)
tree308286ac567a4172e2bb516fa551898f349986db /library/cpp/digest/crc32c/crc32c.cpp
parent8db3cc37187f35d7768f073b5880e559b6767bdf (diff)
downloadydb-cd04681a15e2a0f5a6c26802a5e27ab822ef5fb7.tar.gz
intermediate changes
ref:7e8696b4742c75a3ab825709512075b3710a0a6f
Diffstat (limited to 'library/cpp/digest/crc32c/crc32c.cpp')
-rw-r--r--library/cpp/digest/crc32c/crc32c.cpp10
1 files changed, 10 insertions, 0 deletions
diff --git a/library/cpp/digest/crc32c/crc32c.cpp b/library/cpp/digest/crc32c/crc32c.cpp
index 369b46a213..bc9de52134 100644
--- a/library/cpp/digest/crc32c/crc32c.cpp
+++ b/library/cpp/digest/crc32c/crc32c.cpp
@@ -24,6 +24,12 @@ namespace {
Pimpl->Compute(data, n, &sum);
return (ui32)sum;
}
+
+ inline ui32 Combine(ui32 blockACrc, ui32 blockBCrc, size_t blockBSize) const noexcept {
+ crcutil_interface::UINT64 sum = blockACrc;
+ Pimpl->Concatenate(blockBCrc, 0, blockBSize, &sum);
+ return (ui32)sum;
+ }
};
}
@@ -35,6 +41,10 @@ ui32 Crc32cExtend(ui32 init, const void* data, size_t n) noexcept {
return Singleton<TCrcUtilSse4>()->Extend(init, data, n);
}
+ui32 Crc32cCombine(ui32 blockACrc, ui32 blockBCrc, size_t blockBSize) noexcept {
+ return Singleton<TCrcUtilSse4>()->Combine(blockACrc, blockBCrc, blockBSize);
+}
+
bool HaveFastCrc32c() noexcept {
return TCrc::IsSSE42Available();
}