summaryrefslogtreecommitdiffstats
path: root/gnu/llvm/unittests/Support/MathExtrasTest.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/llvm/unittests/Support/MathExtrasTest.cpp')
-rw-r--r--gnu/llvm/unittests/Support/MathExtrasTest.cpp29
1 files changed, 28 insertions, 1 deletions
diff --git a/gnu/llvm/unittests/Support/MathExtrasTest.cpp b/gnu/llvm/unittests/Support/MathExtrasTest.cpp
index b2c37797887..694a1f24d03 100644
--- a/gnu/llvm/unittests/Support/MathExtrasTest.cpp
+++ b/gnu/llvm/unittests/Support/MathExtrasTest.cpp
@@ -7,8 +7,8 @@
//
//===----------------------------------------------------------------------===//
-#include "gtest/gtest.h"
#include "llvm/Support/MathExtras.h"
+#include "gtest/gtest.h"
using namespace llvm;
@@ -66,6 +66,31 @@ TEST(MathExtras, countLeadingZeros) {
}
}
+TEST(MathExtras, onesMask) {
+ EXPECT_EQ(0U, maskLeadingOnes<uint8_t>(0));
+ EXPECT_EQ(0U, maskTrailingOnes<uint8_t>(0));
+ EXPECT_EQ(0U, maskLeadingOnes<uint16_t>(0));
+ EXPECT_EQ(0U, maskTrailingOnes<uint16_t>(0));
+ EXPECT_EQ(0U, maskLeadingOnes<uint32_t>(0));
+ EXPECT_EQ(0U, maskTrailingOnes<uint32_t>(0));
+ EXPECT_EQ(0U, maskLeadingOnes<uint64_t>(0));
+ EXPECT_EQ(0U, maskTrailingOnes<uint64_t>(0));
+
+ EXPECT_EQ(0x00000003U, maskTrailingOnes<uint32_t>(2U));
+ EXPECT_EQ(0xC0000000U, maskLeadingOnes<uint32_t>(2U));
+
+ EXPECT_EQ(0x000007FFU, maskTrailingOnes<uint32_t>(11U));
+ EXPECT_EQ(0xFFE00000U, maskLeadingOnes<uint32_t>(11U));
+
+ EXPECT_EQ(0xFFFFFFFFU, maskTrailingOnes<uint32_t>(32U));
+ EXPECT_EQ(0xFFFFFFFFU, maskLeadingOnes<uint32_t>(32U));
+ EXPECT_EQ(0xFFFFFFFFFFFFFFFFULL, maskTrailingOnes<uint64_t>(64U));
+ EXPECT_EQ(0xFFFFFFFFFFFFFFFFULL, maskLeadingOnes<uint64_t>(64U));
+
+ EXPECT_EQ(0x0000FFFFFFFFFFFFULL, maskTrailingOnes<uint64_t>(48U));
+ EXPECT_EQ(0xFFFFFFFFFFFF0000ULL, maskLeadingOnes<uint64_t>(48U));
+}
+
TEST(MathExtras, findFirstSet) {
uint8_t Z8 = 0;
uint16_t Z16 = 0;
@@ -152,6 +177,7 @@ TEST(MathExtras, reverseBits) {
}
TEST(MathExtras, isPowerOf2_32) {
+ EXPECT_FALSE(isPowerOf2_32(0));
EXPECT_TRUE(isPowerOf2_32(1 << 6));
EXPECT_TRUE(isPowerOf2_32(1 << 12));
EXPECT_FALSE(isPowerOf2_32((1 << 19) + 3));
@@ -159,6 +185,7 @@ TEST(MathExtras, isPowerOf2_32) {
}
TEST(MathExtras, isPowerOf2_64) {
+ EXPECT_FALSE(isPowerOf2_64(0));
EXPECT_TRUE(isPowerOf2_64(1LL << 46));
EXPECT_TRUE(isPowerOf2_64(1LL << 12));
EXPECT_FALSE(isPowerOf2_64((1LL << 53) + 3));