Add a ceilLogBase2 function to APInt.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83932 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/unittests/ADT/APIntTest.cpp b/unittests/ADT/APIntTest.cpp
index 24a3d9b..7b03d0f 100644
--- a/unittests/ADT/APIntTest.cpp
+++ b/unittests/ADT/APIntTest.cpp
@@ -315,6 +315,17 @@
   EXPECT_EQ(9U, APInt::getBitsNeeded("-20", 16));
 }
 
+TEST(APIntTest, Log2) {
+  EXPECT_EQ(APInt(15, 7).logBase2(), 2);
+  EXPECT_EQ(APInt(15, 7).ceilLogBase2(), 3);
+  EXPECT_EQ(APInt(15, 7).exactLogBase2(), -1);
+  EXPECT_EQ(APInt(15, 8).logBase2(), 3);
+  EXPECT_EQ(APInt(15, 8).ceilLogBase2(), 3);
+  EXPECT_EQ(APInt(15, 8).exactLogBase2(), 3);
+  EXPECT_EQ(APInt(15, 9).logBase2(), 3);
+  EXPECT_EQ(APInt(15, 9).ceilLogBase2(), 4);
+  EXPECT_EQ(APInt(15, 9).exactLogBase2(), -1);
+}
 
 #ifdef GTEST_HAS_DEATH_TEST
 TEST(APIntTest, StringDeath) {