mirror of
https://github.com/facebook/zstd.git
synced 2025-10-07 00:12:40 -04:00
Add tests for bitwise intrinsics
This commit is contained in:
parent
6994a9f99c
commit
7c674a0919
@ -3375,6 +3375,62 @@ static int basicUnitTests(U32 const seed, double compressibility)
|
||||
}
|
||||
DISPLAYLEVEL(3, "OK \n");
|
||||
|
||||
DISPLAYLEVEL(3, "test%3i : testing bitwise instrinsics PR#3045: ", testNb++);
|
||||
{
|
||||
U32 seed_32 = seed == 0 ? seed + 1 : seed; // these intrinsics are undefined on 0
|
||||
U64 seed_64 = (U64)seed * 0x87654321; // decent 64-bit distribution
|
||||
U32 lowbit_only_32 = 1;
|
||||
U64 lowbit_only_64 = 1;
|
||||
U32 highbit_only_32 = (U32)1 << 31;
|
||||
U64 highbit_only_64 = (U64)1 << 63;
|
||||
|
||||
/* Test ZSTD_countTrailingZeros32 */
|
||||
CHECK_EQ(ZSTD_countTrailingZeros32(lowbit_only_32), 0u);
|
||||
CHECK_EQ(ZSTD_countTrailingZeros32(highbit_only_32), 31u);
|
||||
CHECK_EQ(ZSTD_countTrailingZeros32(seed_32), ZSTD_countTrailingZeros32_fallback(seed_32));
|
||||
|
||||
/* Test ZSTD_countLeadingZeros32 */
|
||||
CHECK_EQ(ZSTD_countLeadingZeros32(lowbit_only_32), 31u);
|
||||
CHECK_EQ(ZSTD_countLeadingZeros32(highbit_only_32), 0u);
|
||||
CHECK_EQ(ZSTD_countLeadingZeros32(seed_32), ZSTD_countLeadingZeros32_fallback(seed_32));
|
||||
|
||||
/* Test ZSTD_countTrailingZeros64 */
|
||||
CHECK_EQ(ZSTD_countTrailingZeros64(lowbit_only_64), 0u);
|
||||
CHECK_EQ(ZSTD_countTrailingZeros64(highbit_only_64), 63u);
|
||||
|
||||
/* Test ZSTD_countLeadingZeros64 */
|
||||
CHECK_EQ(ZSTD_countLeadingZeros64(lowbit_only_64), 63u);
|
||||
CHECK_EQ(ZSTD_countLeadingZeros64(highbit_only_64), 0u);
|
||||
|
||||
/* Test ZSTD_highbit32 */
|
||||
CHECK_EQ(ZSTD_highbit32(lowbit_only_32), 0u);
|
||||
CHECK_EQ(ZSTD_highbit32(highbit_only_32), 31u);
|
||||
|
||||
/* Test ZSTD_NbCommonBytes */
|
||||
if (MEM_isLittleEndian()) {
|
||||
if (MEM_64bits()) {
|
||||
CHECK_EQ(ZSTD_NbCommonBytes(lowbit_only_32), 0u);
|
||||
CHECK_EQ(ZSTD_NbCommonBytes(highbit_only_32), 3u);
|
||||
} else {
|
||||
CHECK_EQ(ZSTD_NbCommonBytes(lowbit_only_32), 0u);
|
||||
CHECK_EQ(ZSTD_NbCommonBytes(highbit_only_32), 3u);
|
||||
}
|
||||
} else {
|
||||
if (MEM_64bits()) {
|
||||
CHECK_EQ(ZSTD_NbCommonBytes(lowbit_only_32), 7u);
|
||||
CHECK_EQ(ZSTD_NbCommonBytes(highbit_only_32), 4u);
|
||||
} else {
|
||||
CHECK_EQ(ZSTD_NbCommonBytes(lowbit_only_32), 3u);
|
||||
CHECK_EQ(ZSTD_NbCommonBytes(highbit_only_32), 0u);
|
||||
}
|
||||
}
|
||||
|
||||
/* Test MEM_ intrinsics */
|
||||
CHECK_EQ(MEM_swap32(seed_32), MEM_swap32_fallback(seed_32));
|
||||
CHECK_EQ(MEM_swap64(seed_64), MEM_swap64_fallback(seed_64));
|
||||
}
|
||||
DISPLAYLEVEL(3, "OK \n");
|
||||
|
||||
#ifdef ZSTD_MULTITHREAD
|
||||
DISPLAYLEVEL(3, "test%3i : passing wrong full dict should fail on compressStream2 refPrefix ", testNb++);
|
||||
{ ZSTD_CCtx* cctx = ZSTD_createCCtx();
|
||||
|
Loading…
x
Reference in New Issue
Block a user