diff options
author | Nick Desaulniers <nickdesaulniers@users.noreply.github.com> | 2024-03-12 08:44:06 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-03-12 08:44:06 -0700 |
commit | 0ebf511ad011a83022edb171e044c98d9d16b1fa (patch) | |
tree | d9ffd56fa0e0ebfd1747791518f2b09a6a2e147b /libc/test | |
parent | 261e5648e70b363aecf86acfcd7fb416eb48fb7b (diff) | |
download | llvm-0ebf511ad011a83022edb171e044c98d9d16b1fa.zip llvm-0ebf511ad011a83022edb171e044c98d9d16b1fa.tar.gz llvm-0ebf511ad011a83022edb171e044c98d9d16b1fa.tar.bz2 |
[libc] move non <bit> functions to math_extras (#84818)
As per TODOs added in
https://github.com/llvm/llvm-project/pull/84035/commits/48b0bc837085a38ff1de33010d9222363f70238f.
Diffstat (limited to 'libc/test')
-rw-r--r-- | libc/test/src/__support/CPP/bit_test.cpp | 32 | ||||
-rw-r--r-- | libc/test/src/__support/math_extras_test.cpp | 40 |
2 files changed, 40 insertions, 32 deletions
diff --git a/libc/test/src/__support/CPP/bit_test.cpp b/libc/test/src/__support/CPP/bit_test.cpp index 3deb1f4..cee5b90 100644 --- a/libc/test/src/__support/CPP/bit_test.cpp +++ b/libc/test/src/__support/CPP/bit_test.cpp @@ -228,38 +228,6 @@ TEST(LlvmLibcBitTest, Rotr) { rotr<uint64_t>(0x12345678deadbeefULL, -19)); } -TYPED_TEST(LlvmLibcBitTest, FirstLeadingZero, UnsignedTypesNoBigInt) { - EXPECT_EQ(first_leading_zero<T>(cpp::numeric_limits<T>::max()), 0); - for (int i = 0U; i != cpp::numeric_limits<T>::digits; ++i) - EXPECT_EQ(first_leading_zero<T>(~(T(1) << i)), - cpp::numeric_limits<T>::digits - i); -} - -TYPED_TEST(LlvmLibcBitTest, FirstLeadingOne, UnsignedTypesNoBigInt) { - EXPECT_EQ(first_leading_one<T>(static_cast<T>(0)), 0); - for (int i = 0U; i != cpp::numeric_limits<T>::digits; ++i) - EXPECT_EQ(first_leading_one<T>(T(1) << i), - cpp::numeric_limits<T>::digits - i); -} - -TYPED_TEST(LlvmLibcBitTest, FirstTrailingZero, UnsignedTypesNoBigInt) { - EXPECT_EQ(first_trailing_zero<T>(cpp::numeric_limits<T>::max()), 0); - for (int i = 0U; i != cpp::numeric_limits<T>::digits; ++i) - EXPECT_EQ(first_trailing_zero<T>(~(T(1) << i)), i + 1); -} - -TYPED_TEST(LlvmLibcBitTest, FirstTrailingOne, UnsignedTypesNoBigInt) { - EXPECT_EQ(first_trailing_one<T>(cpp::numeric_limits<T>::max()), 0); - for (int i = 0U; i != cpp::numeric_limits<T>::digits; ++i) - EXPECT_EQ(first_trailing_one<T>(T(1) << i), i + 1); -} - -TYPED_TEST(LlvmLibcBitTest, CountZeros, UnsignedTypesNoBigInt) { - EXPECT_EQ(count_zeros(T(0)), cpp::numeric_limits<T>::digits); - for (int i = 0; i != cpp::numeric_limits<T>::digits; ++i) - EXPECT_EQ(count_zeros<T>(cpp::numeric_limits<T>::max() >> i), i); -} - TYPED_TEST(LlvmLibcBitTest, CountOnes, UnsignedTypesNoBigInt) { EXPECT_EQ(popcount(T(0)), 0); for (int i = 0; i != cpp::numeric_limits<T>::digits; ++i) diff --git a/libc/test/src/__support/math_extras_test.cpp b/libc/test/src/__support/math_extras_test.cpp index ed06436..e6422488 100644 --- a/libc/test/src/__support/math_extras_test.cpp +++ b/libc/test/src/__support/math_extras_test.cpp @@ -13,6 +13,14 @@ namespace LIBC_NAMESPACE { +// TODO: add UInt<128> support. +using UnsignedTypesNoBigInt = testing::TypeList< +#if defined(LIBC_TYPES_HAS_INT128) + __uint128_t, +#endif // LIBC_TYPES_HAS_INT128 + unsigned char, unsigned short, unsigned int, unsigned long, + unsigned long long>; + TEST(LlvmLibcBlockMathExtrasTest, mask_trailing_ones) { EXPECT_EQ(0_u8, (mask_leading_ones<uint8_t, 0>())); EXPECT_EQ(0_u8, (mask_trailing_ones<uint8_t, 0>())); @@ -61,4 +69,36 @@ TEST(LlvmLibcBlockMathExtrasTest, mask_trailing_ones) { (mask_leading_ones<UInt128, 128>())); } +TYPED_TEST(LlvmLibcBitTest, FirstLeadingZero, UnsignedTypesNoBigInt) { + EXPECT_EQ(first_leading_zero<T>(cpp::numeric_limits<T>::max()), 0); + for (int i = 0U; i != cpp::numeric_limits<T>::digits; ++i) + EXPECT_EQ(first_leading_zero<T>(~(T(1) << i)), + cpp::numeric_limits<T>::digits - i); +} + +TYPED_TEST(LlvmLibcBitTest, FirstLeadingOne, UnsignedTypesNoBigInt) { + EXPECT_EQ(first_leading_one<T>(static_cast<T>(0)), 0); + for (int i = 0U; i != cpp::numeric_limits<T>::digits; ++i) + EXPECT_EQ(first_leading_one<T>(T(1) << i), + cpp::numeric_limits<T>::digits - i); +} + +TYPED_TEST(LlvmLibcBitTest, FirstTrailingZero, UnsignedTypesNoBigInt) { + EXPECT_EQ(first_trailing_zero<T>(cpp::numeric_limits<T>::max()), 0); + for (int i = 0U; i != cpp::numeric_limits<T>::digits; ++i) + EXPECT_EQ(first_trailing_zero<T>(~(T(1) << i)), i + 1); +} + +TYPED_TEST(LlvmLibcBitTest, FirstTrailingOne, UnsignedTypesNoBigInt) { + EXPECT_EQ(first_trailing_one<T>(cpp::numeric_limits<T>::max()), 0); + for (int i = 0U; i != cpp::numeric_limits<T>::digits; ++i) + EXPECT_EQ(first_trailing_one<T>(T(1) << i), i + 1); +} + +TYPED_TEST(LlvmLibcBitTest, CountZeros, UnsignedTypesNoBigInt) { + EXPECT_EQ(count_zeros(T(0)), cpp::numeric_limits<T>::digits); + for (int i = 0; i != cpp::numeric_limits<T>::digits; ++i) + EXPECT_EQ(count_zeros<T>(cpp::numeric_limits<T>::max() >> i), i); +} + } // namespace LIBC_NAMESPACE |