[APInt][PatternMatch] Add 'is non-positive' predicate
It will be useful for implementing the fold mentioned in
https://bugs.llvm.org/show_bug.cgi?id=44100#c4
diff --git a/llvm/unittests/ADT/APIntTest.cpp b/llvm/unittests/ADT/APIntTest.cpp
index 2a3abbf..b6fee5b 100644
--- a/llvm/unittests/ADT/APIntTest.cpp
+++ b/llvm/unittests/ADT/APIntTest.cpp
@@ -2845,4 +2845,21 @@
}
}
+TEST(APIntTest, SignbitZeroChecks) {
+ EXPECT_TRUE(APInt(8, -1).isNegative());
+ EXPECT_FALSE(APInt(8, -1).isNonNegative());
+ EXPECT_FALSE(APInt(8, -1).isStrictlyPositive());
+ EXPECT_TRUE(APInt(8, -1).isNonPositive());
+
+ EXPECT_FALSE(APInt(8, 0).isNegative());
+ EXPECT_TRUE(APInt(8, 0).isNonNegative());
+ EXPECT_FALSE(APInt(8, 0).isStrictlyPositive());
+ EXPECT_TRUE(APInt(8, 0).isNonPositive());
+
+ EXPECT_FALSE(APInt(8, 1).isNegative());
+ EXPECT_TRUE(APInt(8, 1).isNonNegative());
+ EXPECT_TRUE(APInt(8, 1).isStrictlyPositive());
+ EXPECT_FALSE(APInt(8, 1).isNonPositive());
+}
+
} // end anonymous namespace