diff options
Diffstat (limited to 'unittests/ADT')
| -rw-r--r-- | unittests/ADT/APIntTest.cpp | 19 | ||||
| -rw-r--r-- | unittests/ADT/BitVectorTest.cpp | 29 |
2 files changed, 48 insertions, 0 deletions
diff --git a/unittests/ADT/APIntTest.cpp b/unittests/ADT/APIntTest.cpp index bb6cf35fe9e4..5594955e7baf 100644 --- a/unittests/ADT/APIntTest.cpp +++ b/unittests/ADT/APIntTest.cpp @@ -2142,4 +2142,23 @@ TEST(APIntTest, sext) { EXPECT_EQ(63U, i32_neg1.countPopulation()); } +TEST(APIntTest, multiply) { + APInt i64(64, 1234); + + EXPECT_EQ(7006652, i64 * 5678); + EXPECT_EQ(7006652, 5678 * i64); + + APInt i128 = APInt::getOneBitSet(128, 64); + APInt i128_1234(128, 1234); + i128_1234 <<= 64; + EXPECT_EQ(i128_1234, i128 * 1234); + EXPECT_EQ(i128_1234, 1234 * i128); + + APInt i96 = APInt::getOneBitSet(96, 64); + i96 *= ~0ULL; + EXPECT_EQ(32U, i96.countLeadingOnes()); + EXPECT_EQ(32U, i96.countPopulation()); + EXPECT_EQ(64U, i96.countTrailingZeros()); +} + } // end anonymous namespace diff --git a/unittests/ADT/BitVectorTest.cpp b/unittests/ADT/BitVectorTest.cpp index ac7429cae36f..faf362abc9d8 100644 --- a/unittests/ADT/BitVectorTest.cpp +++ b/unittests/ADT/BitVectorTest.cpp @@ -204,6 +204,11 @@ TYPED_TEST(BitVectorTest, FindOperations) { EXPECT_EQ(75, A.find_next(13)); EXPECT_EQ(-1, A.find_next(75)); + EXPECT_EQ(-1, A.find_prev(12)); + EXPECT_EQ(12, A.find_prev(13)); + EXPECT_EQ(13, A.find_prev(75)); + EXPECT_EQ(75, A.find_prev(90)); + EXPECT_EQ(0, A.find_first_unset()); EXPECT_EQ(99, A.find_last_unset()); EXPECT_EQ(14, A.find_next_unset(11)); @@ -227,6 +232,30 @@ TYPED_TEST(BitVectorTest, FindOperations) { EXPECT_EQ(-1, A.find_last()); EXPECT_EQ(0, A.find_first_unset()); EXPECT_EQ(99, A.find_last_unset()); + + // Also test with a vector that is small enough to fit in 1 word. + A.resize(20); + A.set(3); + A.set(4); + A.set(16); + EXPECT_EQ(16, A.find_last()); + EXPECT_EQ(3, A.find_first()); + EXPECT_EQ(3, A.find_next(1)); + EXPECT_EQ(4, A.find_next(3)); + EXPECT_EQ(16, A.find_next(4)); + EXPECT_EQ(-1, A.find_next(16)); + + EXPECT_EQ(-1, A.find_prev(3)); + EXPECT_EQ(3, A.find_prev(4)); + EXPECT_EQ(4, A.find_prev(16)); + EXPECT_EQ(16, A.find_prev(18)); + + EXPECT_EQ(0, A.find_first_unset()); + EXPECT_EQ(19, A.find_last_unset()); + EXPECT_EQ(5, A.find_next_unset(3)); + EXPECT_EQ(5, A.find_next_unset(4)); + EXPECT_EQ(13, A.find_next_unset(12)); + EXPECT_EQ(17, A.find_next_unset(15)); } TYPED_TEST(BitVectorTest, CompoundAssignment) { |
