perf: Use u64 perfect shuffle version for bit merge/split

Signed-off-by: kinkard <stsiapan.kizim@gmail.com>
This commit is contained in:
kinkard
2025-04-17 12:50:33 +02:00
committed by Konstantin Pastbin
parent f0d813d676
commit 25af0b1ebb
2 changed files with 30 additions and 19 deletions

View File

@@ -14,8 +14,16 @@ UNIT_TEST(PerfectShuffle)
{
// 0010 0001 0100 0000
// 0010 0001 1000 1110
TEST_EQUAL(bits::PerfectShuffle(557851022), 201547860, ());
TEST_EQUAL(bits::PerfectUnshuffle(201547860), 557851022, ());
TEST_EQUAL(bits::PerfectShuffle(557851022), 288529443381657684ULL, ());
TEST_EQUAL(bits::PerfectUnshuffle(288529443381657684ULL), 557851022, ());
TEST_EQUAL(bits::PerfectShuffle(0b0), 0b0, ());
TEST_EQUAL(bits::PerfectShuffle(0b1), 0b1, ());
TEST_EQUAL(bits::PerfectShuffle(0b1111111111111111ULL), 0b01010101010101010101010101010101ULL, ());
TEST_EQUAL(bits::PerfectUnshuffle(0b01010101010101010101010101010101ULL), 0b1111111111111111ULL, ());
TEST_EQUAL(bits::PerfectShuffle(0b00000000000000001111111100000000ULL), 0b01010101010101010000000000000000ULL, ());
TEST_EQUAL(bits::PerfectUnshuffle(0b01010101010101010000000000000000ULL), 0b00000000000000001111111100000000ULL, ());
}
UNIT_TEST(BitwiseMerge)