[llvm] [KnownFPClass] Fix KnownFPClass::frem subnormal handling and improve deductions. (PR #219303)
Eric Ross via llvm-commits
llvm-commits at lists.llvm.org
Sat Oct 3 20:24:47 PDT 2026
================
@@ -1920,6 +1920,23 @@ TEST_F(ComputeKnownFPClassTest, MaximumNumSignBit) {
expectKnownFPClass(fcPositive, false, A7);
}
+TEST_F(ComputeKnownFPClassTest, FRemDemandRHSForSNaN) {
+ parseAssembly("define float @test(float nofpclass(snan) %lhs, "
+ "float nofpclass(snan) %rhs) {\n"
+ " %A = frem float %lhs, %rhs\n"
+ " ret float %A\n"
+ "}\n");
+
+ KnownFPClass KnownSNan = computeKnownFPClass(A, M->getDataLayout(), fcSNan);
+ KnownFPClass KnownQNan = computeKnownFPClass(A, M->getDataLayout(), fcQNan);
+
+ EXPECT_TRUE(KnownSNan.isKnownNever(fcSNan));
+ EXPECT_FALSE(KnownSNan.isKnownNever(fcQNan));
+
+ EXPECT_TRUE(KnownQNan.isKnownNever(fcSNan));
+ EXPECT_FALSE(KnownQNan.isKnownNever(fcQNan));
+}
----------------
ZERICO2005 wrote:
This test is for `ValueTracking.cpp` instead of `GISelValueTracking.cpp`.
Otherwise it tests that `fcSNan` is still ruled out when computing `computeKnownFPClass(fcQNan)`. Whereas the lit tests compute the equivalent of `computeKnownFPClass(fcAllFlags)`
https://github.com/llvm/llvm-project/pull/219303
More information about the llvm-commits
mailing list