[llvm] add power function to APInt (PR #122788)

Matt Arsenault via llvm-commits llvm-commits at lists.llvm.org
Tue Jan 14 19:08:06 PST 2025


================
@@ -29,6 +29,37 @@ TEST(APIntTest, ValueInit) {
   EXPECT_TRUE(!Zero.sext(64));
 }
 
+// Test that 0^5 == 0
+TEST(APIntTest, PowZeroTo5) {
+  APInt Zero = APInt();
+  EXPECT_TRUE(!Zero);
+  APInt ZeroTo5 = APIntOps::pow(Zero, 5);
+  EXPECT_TRUE(!ZeroTo5);
+}
+
+// Test that 1^16 == 1
+TEST(APIntTest, PowOneTo16) {
+  APInt One = APInt::getZero(32) + 1;
+  APInt OneTo16 = APIntOps::pow(One, 16);
+  EXPECT_EQ(One, OneTo16);
+}
+
+// Test that 2^10 == 1024
+TEST(APIntTest, PowerTwoTo10) {
+  APInt Two = APInt::getZero(32) + 2;
+  APInt TwoTo20 = APIntOps::pow(Two, 10);
+  APInt V_1024 = APInt::getZero(32) + 1024;
+  EXPECT_EQ(TwoTo20, V_1024);
+}
+
+// Test that 3^3 == 27
+TEST(APIntTest, PowerThreeTo3) {
+  APInt Three = APInt::getZero(32) + 3;
+  APInt ThreeTo3 = APIntOps::pow(Three, 3);
+  APInt V_27 = APInt::getZero(32) + 27;
+  EXPECT_EQ(ThreeTo3, V_27);
+}
+
----------------
arsenm wrote:

I mean APInt::getSignedMinValue 

https://github.com/llvm/llvm-project/pull/122788


More information about the llvm-commits mailing list