util/tests: add bitset SHR tests

Signed-off-by: Christian Gmeiner <christian.gmeiner@gmail.com>
Reviewed-by: Rob Clark <robdclark@chromium.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11321>
This commit is contained in:
Christian Gmeiner 2021-05-11 08:01:50 +02:00 committed by Marge Bot
parent 7b62fb4558
commit 0c243b3f98

View file

@ -229,3 +229,79 @@ TEST(bitset, test_not)
EXPECT_EQ(BITSET_TEST_RANGE(r, 64, 95), false);
EXPECT_EQ(BITSET_TEST_RANGE(r, 96, 127), false);
}
TEST(bitset, test_shr_zero)
{
BITSET_DECLARE(r, 128);
BITSET_ZERO(r);
BITSET_SET(r, 127);
BITSET_SHR(r, 0);
EXPECT_EQ(BITSET_TEST(r, 127), true);
EXPECT_EQ(BITSET_TEST_RANGE(r, 0, 31), false);
EXPECT_EQ(BITSET_TEST_RANGE(r, 32, 63), false);
EXPECT_EQ(BITSET_TEST_RANGE(r, 64, 95), false);
EXPECT_EQ(BITSET_TEST_RANGE(r, 96, 127), true);
}
TEST(bitset, test_shr_walking_bit)
{
BITSET_DECLARE(r, 128);
BITSET_ZERO(r);
BITSET_SET(r, 127);
for (int i = 127; i >= 0; i--) {
EXPECT_EQ(BITSET_TEST(r, i), true);
BITSET_SHR(r, 1);
}
EXPECT_EQ(BITSET_TEST_RANGE(r, 0, 31), false);
EXPECT_EQ(BITSET_TEST_RANGE(r, 32, 63), false);
EXPECT_EQ(BITSET_TEST_RANGE(r, 64, 95), false);
EXPECT_EQ(BITSET_TEST_RANGE(r, 96, 127), false);
}
TEST(bitset, test_shr_multiple_words)
{
BITSET_DECLARE(r, 128);
BITSET_ZERO(r);
BITSET_SET(r, 127);
BITSET_SHR(r, 50);
EXPECT_EQ(BITSET_TEST(r, 127), false);
EXPECT_EQ(BITSET_TEST(r, 77), true);
BITSET_ZERO(r);
BITSET_SET(r, 127);
BITSET_SHR(r, 80);
EXPECT_EQ(BITSET_TEST(r, 127), false);
EXPECT_EQ(BITSET_TEST(r, 47), true);
BITSET_ZERO(r);
BITSET_SET(r, 127);
BITSET_SHR(r, 126);
EXPECT_EQ(BITSET_TEST(r, 127), false);
EXPECT_EQ(BITSET_TEST(r, 1), true);
}
TEST(bitset, test_shr_two_words)
{
BITSET_DECLARE(r, 64);
BITSET_ZERO(r);
BITSET_SET(r, 63);
BITSET_SHR(r, 50);
EXPECT_EQ(BITSET_TEST(r, 63), false);
EXPECT_EQ(BITSET_TEST(r, 13), true);
EXPECT_EQ(BITSET_TEST_RANGE(r, 0, 31), true);
EXPECT_EQ(BITSET_TEST_RANGE(r, 32, 63), false);
}