diff options
| author | Michael Gottesman <mgottesman@apple.com> | 2013-12-13 20:47:37 +0000 |
|---|---|---|
| committer | Michael Gottesman <mgottesman@apple.com> | 2013-12-13 20:47:37 +0000 |
| commit | f6d58ff5c46cdaeda4a43039eeacdcfa94bb8f51 (patch) | |
| tree | 9605c9a27bb1b43540a835a2cfacdbbff9f79c48 /llvm/unittests/ADT/APIntTest.cpp | |
| parent | 4497d963fba10b74949e74c50bd14e6f7c12f721 (diff) | |
| download | llvm-f6d58ff5c46cdaeda4a43039eeacdcfa94bb8f51.zip llvm-f6d58ff5c46cdaeda4a43039eeacdcfa94bb8f51.tar.gz llvm-f6d58ff5c46cdaeda4a43039eeacdcfa94bb8f51.tar.bz2 | |
[block-freq] Add the method APInt::nearestLogBase2().
llvm-svn: 197272
Diffstat (limited to 'llvm/unittests/ADT/APIntTest.cpp')
| -rw-r--r-- | llvm/unittests/ADT/APIntTest.cpp | 44 |
1 files changed, 40 insertions, 4 deletions
diff --git a/llvm/unittests/ADT/APIntTest.cpp b/llvm/unittests/ADT/APIntTest.cpp index 1d330f0..36cbd86 100644 --- a/llvm/unittests/ADT/APIntTest.cpp +++ b/llvm/unittests/ADT/APIntTest.cpp @@ -609,10 +609,10 @@ TEST(APIntTest, extractBit) { // Multiword check. integerPart E2[4] = { - 0xeb6eb136591cba21ULL, - 0x7b9358bd6a33f10aULL, - 0x7e7ffa5eadd8846ULL, - 0x305f341ca00b613dULL + 0xEB6EB136591CBA21ULL, + 0x7B9358BD6A33F10AULL, + 0x7E7FFA5EADD8846ULL, + 0x305F341CA00B613DULL }; APInt A2(integerPartWidth*4, ArrayRef<integerPart>(E2, 4)); for (unsigned i = 0; i < 4; ++i) { @@ -623,4 +623,40 @@ TEST(APIntTest, extractBit) { } } +TEST(APIntTest, nearestLogBase2) { + // Single word check. + + // Test round up. + uint64_t I1 = 0x1800001; + APInt A1(64, I1); + EXPECT_EQ(A1.nearestLogBase2(), A1.ceilLogBase2()); + + // Test round down. + uint64_t I2 = 0x1000011; + APInt A2(64, I2); + EXPECT_EQ(A2.nearestLogBase2(), A2.logBase2()); + + // Test ties round up. + uint64_t I3 = 0x1800000; + APInt A3(64, I3); + EXPECT_EQ(A3.nearestLogBase2(), A3.ceilLogBase2()); + + // Multiple word check. + + // Test round up. + integerPart I4[4] = {0x0, 0xF, 0x18, 0x0}; + APInt A4(integerPartWidth*4, ArrayRef<integerPart>(I4, 4)); + EXPECT_EQ(A4.nearestLogBase2(), A4.ceilLogBase2()); + + // Test round down. + integerPart I5[4] = {0x0, 0xF, 0x10, 0x0}; + APInt A5(integerPartWidth*4, ArrayRef<integerPart>(I5, 4)); + EXPECT_EQ(A5.nearestLogBase2(), A5.logBase2()); + + // Test ties round up. + uint64_t I6[4] = {0x0, 0x0, 0x0, 0x18}; + APInt A6(integerPartWidth*4, ArrayRef<integerPart>(I6, 4)); + EXPECT_EQ(A6.nearestLogBase2(), A6.ceilLogBase2()); +} + } |
