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 | 46f829ee25ed0cba401cd759da684d3c4aa1478a (patch) | |
tree | 9cb2d97f93449cf65dec13e40b8ea6ae23fa278c /unittests | |
parent | 5bb504f4ea73fc46b4fb64d4ba970aafde1381b7 (diff) | |
download | llvm-46f829ee25ed0cba401cd759da684d3c4aa1478a.tar.gz llvm-46f829ee25ed0cba401cd759da684d3c4aa1478a.tar.bz2 llvm-46f829ee25ed0cba401cd759da684d3c4aa1478a.tar.xz |
[block-freq] Add the method APInt::nearestLogBase2().
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@197272 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'unittests')
-rw-r--r-- | unittests/ADT/APIntTest.cpp | 44 |
1 files changed, 40 insertions, 4 deletions
diff --git a/unittests/ADT/APIntTest.cpp b/unittests/ADT/APIntTest.cpp index 1d330f0d36..36cbd868a2 100644 --- a/unittests/ADT/APIntTest.cpp +++ b/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()); +} + } |