diff options
| author | Zachary Turner <zturner@google.com> | 2017-04-20 16:35:22 +0000 |
|---|---|---|
| committer | Zachary Turner <zturner@google.com> | 2017-04-20 16:35:22 +0000 |
| commit | b3dac3816fa3cfad30b67e5e0fb2ef5d62625770 (patch) | |
| tree | bf793d837513170470c268dc14d592a67fff9ba0 /llvm/unittests/ADT | |
| parent | a8129a11222249d5072c132927dbf9d402b5f9da (diff) | |
| download | bcm5719-llvm-b3dac3816fa3cfad30b67e5e0fb2ef5d62625770.tar.gz bcm5719-llvm-b3dac3816fa3cfad30b67e5e0fb2ef5d62625770.zip | |
Revert "[BitVector] Add operator<<= and operator>>=."
This is causing test failures on Linux / BSD systems. Reverting
while I investigate.
llvm-svn: 300852
Diffstat (limited to 'llvm/unittests/ADT')
| -rw-r--r-- | llvm/unittests/ADT/BitVectorTest.cpp | 122 |
1 files changed, 0 insertions, 122 deletions
diff --git a/llvm/unittests/ADT/BitVectorTest.cpp b/llvm/unittests/ADT/BitVectorTest.cpp index 71b6be36c3b..98ef66735ad 100644 --- a/llvm/unittests/ADT/BitVectorTest.cpp +++ b/llvm/unittests/ADT/BitVectorTest.cpp @@ -345,128 +345,6 @@ TYPED_TEST(BitVectorTest, BinOps) { EXPECT_FALSE(B.anyCommon(A)); } -typedef std::vector<std::pair<int, int>> RangeList; - -template <typename VecType> -static inline VecType createBitVector(uint32_t Size, - const RangeList &setRanges) { - VecType V; - V.resize(Size); - for (auto &R : setRanges) - V.set(R.first, R.second); - return V; -} - -TYPED_TEST(BitVectorTest, ShiftOpsSingleWord) { - // Test that shift ops work when the desired shift amount is less - // than one word. - - // 1. Case where the number of bits in the BitVector also fit into a single - // word. - TypeParam A = createBitVector<TypeParam>(12, {{2, 4}, {8, 10}}); - TypeParam B = A; - - EXPECT_EQ(4U, A.count()); - EXPECT_TRUE(A.test(2)); - EXPECT_TRUE(A.test(3)); - EXPECT_TRUE(A.test(8)); - EXPECT_TRUE(A.test(9)); - - A >>= 1; - EXPECT_EQ(createBitVector<TypeParam>(12, {{1, 3}, {7, 9}}), A); - - A <<= 1; - EXPECT_EQ(B, A); - - A >>= 10; - EXPECT_EQ(createBitVector<TypeParam>(12, {}), A); - - A = B; - A <<= 10; - EXPECT_EQ(createBitVector<TypeParam>(12, {}), A); - - // 2. Case where the number of bits in the BitVector do not fit into a single - // word. - - // 31----------------------------------------------------------------------0 - // XXXXXXXX XXXXXXXX XXXXXXXX 00000111 | 11111110 00000000 00001111 11111111 - A = createBitVector<TypeParam>(40, {{0, 12}, {25, 35}}); - EXPECT_EQ(40U, A.size()); - EXPECT_EQ(22U, A.count()); - - // 2a. Make sure that left shifting some 1 bits out of the vector works. - // 31----------------------------------------------------------------------0 - // Before: - // XXXXXXXX XXXXXXXX XXXXXXXX 00000111 | 11111110 00000000 00001111 11111111 - // After: - // XXXXXXXX XXXXXXXX XXXXXXXX 11111100 | 00000000 00011111 11111110 00000000 - A <<= 9; - EXPECT_EQ(createBitVector<TypeParam>(40, {{9, 21}, {34, 40}}), A); - - // 2b. Make sure that keeping the number of one bits unchanged works. - // 31----------------------------------------------------------------------0 - // Before: - // XXXXXXXX XXXXXXXX XXXXXXXX 11111100 | 00000000 00011111 11111110 00000000 - // After: - // XXXXXXXX XXXXXXXX XXXXXXXX 00000011 | 11110000 00000000 01111111 11111000 - A >>= 6; - EXPECT_EQ(createBitVector<TypeParam>(40, {{3, 15}, {28, 34}}), A); - - // 2c. Make sure that right shifting some 1 bits out of the vector works. - // 31----------------------------------------------------------------------0 - // Before: - // XXXXXXXX XXXXXXXX XXXXXXXX 00000011 | 11110000 00000000 01111111 11111000 - // After: - // XXXXXXXX XXXXXXXX XXXXXXXX 00000000 | 00000000 11111100 00000000 00011111 - A >>= 10; - EXPECT_EQ(createBitVector<TypeParam>(40, {{0, 5}, {18, 24}}), A); - - // 3. Big test. - A = createBitVector<TypeParam>(300, {{1, 30}, {60, 95}, {200, 275}}); - A <<= 29; - EXPECT_EQ(createBitVector<TypeParam>( - 300, {{1 + 29, 30 + 29}, {60 + 29, 95 + 29}, {200 + 29, 300}}), - A); -} - -TYPED_TEST(BitVectorTest, ShiftOpsMultiWord) { - // Test that shift ops work when the desired shift amount is greater than or - // equal to the size of a single word. - auto A = createBitVector<TypeParam>(300, {{1, 30}, {60, 95}, {200, 275}}); - - // Make a copy so we can re-use it later. - auto B = A; - - // 1. Shift left by an exact multiple of the word size. This should invoke - // only a memmove and no per-word bit operations. - A <<= 64; - auto Expected = createBitVector<TypeParam>( - 300, {{1 + 64, 30 + 64}, {60 + 64, 95 + 64}, {200 + 64, 300}}); - EXPECT_EQ(Expected, A); - - // 2. Shift left by a non multiple of the word size. This should invoke both - // a memmove and per-word bit operations. - A = B; - A <<= 93; - EXPECT_EQ(createBitVector<TypeParam>( - 300, {{1 + 93, 30 + 93}, {60 + 93, 95 + 93}, {200 + 93, 300}}), - A); - - // 1. Shift right by an exact multiple of the word size. This should invoke - // only a memmove and no per-word bit operations. - A = B; - A >>= 64; - EXPECT_EQ( - createBitVector<TypeParam>(300, {{0, 95 - 64}, {200 - 64, 275 - 64}}), A); - - // 2. Shift left by a non multiple of the word size. This should invoke both - // a memmove and per-word bit operations. - A = B; - A >>= 93; - EXPECT_EQ( - createBitVector<TypeParam>(300, {{0, 95 - 93}, {200 - 93, 275 - 93}}), A); -} - TYPED_TEST(BitVectorTest, RangeOps) { TypeParam A; A.resize(256); |

