aboutsummaryrefslogtreecommitdiff
path: root/llvm/unittests/Analysis/ValueTrackingTest.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/unittests/Analysis/ValueTrackingTest.cpp')
-rw-r--r--llvm/unittests/Analysis/ValueTrackingTest.cpp21
1 files changed, 21 insertions, 0 deletions
diff --git a/llvm/unittests/Analysis/ValueTrackingTest.cpp b/llvm/unittests/Analysis/ValueTrackingTest.cpp
index 6c6897d..b4d2270d 100644
--- a/llvm/unittests/Analysis/ValueTrackingTest.cpp
+++ b/llvm/unittests/Analysis/ValueTrackingTest.cpp
@@ -2016,6 +2016,27 @@ TEST_F(ComputeKnownFPClassTest, SqrtNszSignBit) {
}
}
+TEST_F(ComputeKnownFPClassTest, Constants) {
+ parseAssembly("declare float @func()\n"
+ "define float @test() {\n"
+ " %A = call float @func()\n"
+ " ret float %A\n"
+ "}\n");
+
+ Type *F32 = Type::getFloatTy(Context);
+ Type *V4F32 = FixedVectorType::get(F32, 4);
+
+ {
+ KnownFPClass ConstAggZero = computeKnownFPClass(
+ ConstantAggregateZero::get(V4F32), M->getDataLayout(), fcAllFlags, 0,
+ nullptr, nullptr, nullptr, nullptr);
+
+ EXPECT_EQ(fcPosZero, ConstAggZero.KnownFPClasses);
+ ASSERT_TRUE(ConstAggZero.SignBit);
+ EXPECT_FALSE(*ConstAggZero.SignBit);
+ }
+}
+
TEST_F(ValueTrackingTest, isNonZeroRecurrence) {
parseAssembly(R"(
define i1 @test(i8 %n, i8 %r) {