summaryrefslogtreecommitdiff
path: root/unittests
diff options
context:
space:
mode:
authorMichael Gottesman <mgottesman@apple.com>2013-12-13 20:47:37 +0000
committerMichael Gottesman <mgottesman@apple.com>2013-12-13 20:47:37 +0000
commit46f829ee25ed0cba401cd759da684d3c4aa1478a (patch)
tree9cb2d97f93449cf65dec13e40b8ea6ae23fa278c /unittests
parent5bb504f4ea73fc46b4fb64d4ba970aafde1381b7 (diff)
downloadllvm-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.cpp44
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());
+}
+
}