@@ -29,6 +29,73 @@ TEST(APIntTest, ValueInit) {
29
29
EXPECT_TRUE (!Zero.sext (64 ));
30
30
}
31
31
32
+ // Test that 0^5 == 0
33
+ TEST (APIntTest, PowZeroTo5) {
34
+ APInt Zero = APInt::getZero (32 );
35
+ EXPECT_TRUE (!Zero);
36
+ APInt ZeroTo5 = APIntOps::pow (Zero, 5 );
37
+ EXPECT_TRUE (!ZeroTo5);
38
+ }
39
+
40
+ // Test that 1^16 == 1
41
+ TEST (APIntTest, PowOneTo16) {
42
+ APInt One (32 , 1 );
43
+ APInt OneTo16 = APIntOps::pow (One, 16 );
44
+ EXPECT_EQ (One, OneTo16);
45
+ }
46
+
47
+ // Test that 2^10 == 1024
48
+ TEST (APIntTest, PowerTwoTo10) {
49
+ APInt Two (32 , 2 );
50
+ APInt TwoTo20 = APIntOps::pow (Two, 10 );
51
+ APInt V_1024 (32 , 1024 );
52
+ EXPECT_EQ (TwoTo20, V_1024);
53
+ }
54
+
55
+ // Test that 3^3 == 27
56
+ TEST (APIntTest, PowerThreeTo3) {
57
+ APInt Three (32 , 3 );
58
+ APInt ThreeTo3 = APIntOps::pow (Three, 3 );
59
+ APInt V_27 (32 , 27 );
60
+ EXPECT_EQ (ThreeTo3, V_27);
61
+ }
62
+
63
+ // Test that SignedMaxValue^3 == SignedMaxValue
64
+ TEST (APIntTest, PowerSignedMaxValue) {
65
+ APInt SignedMaxValue = APInt::getSignedMaxValue (32 );
66
+ APInt MaxTo3 = APIntOps::pow (SignedMaxValue, 3 );
67
+ EXPECT_EQ (MaxTo3, SignedMaxValue);
68
+ }
69
+
70
+ // Test that MaxValue^3 == MaxValue
71
+ TEST (APIntTest, PowerMaxValue) {
72
+ APInt MaxValue = APInt::getMaxValue (32 );
73
+ APInt MaxTo3 = APIntOps::pow (MaxValue, 3 );
74
+ EXPECT_EQ (MaxValue, MaxTo3);
75
+ }
76
+
77
+ // Test that SignedMinValue^3 == 0
78
+ TEST (APIntTest, PowerSignedMinValueTo3) {
79
+ APInt SignedMinValue = APInt::getSignedMinValue (32 );
80
+ APInt MinTo3 = APIntOps::pow (SignedMinValue, 3 );
81
+ EXPECT_TRUE (MinTo3.isZero ());
82
+ }
83
+
84
+ // Test that SignedMinValue^1 == SignedMinValue
85
+ TEST (APIntTest, PowerSignedMinValueTo1) {
86
+ APInt SignedMinValue = APInt::getSignedMinValue (32 );
87
+ APInt MinTo1 = APIntOps::pow (SignedMinValue, 1 );
88
+ EXPECT_EQ (SignedMinValue, MinTo1);
89
+ }
90
+
91
+ // Test that MaxValue^3 == MaxValue
92
+ TEST (APIntTest, ZeroToZero) {
93
+ APInt Zero = APInt::getZero (32 );
94
+ APInt One (32 , 1 );
95
+ APInt ZeroToZero = APIntOps::pow (Zero, 0 );
96
+ EXPECT_EQ (ZeroToZero, One);
97
+ }
98
+
32
99
// Test that APInt shift left works when bitwidth > 64 and shiftamt == 0
33
100
TEST (APIntTest, ShiftLeftByZero) {
34
101
APInt One = APInt::getZero (65 ) + 1 ;
0 commit comments