diff options
author | Matt Arsenault <Matthew.Arsenault@amd.com> | 2023-04-08 14:35:15 -0400 |
---|---|---|
committer | Matt Arsenault <arsenm2@gmail.com> | 2023-04-13 14:44:34 -0400 |
commit | 4d044bfb33980a3453c9cd456c261750f1971b8a (patch) | |
tree | cfe92cfdef1d31c8c5f2663f3213e5370cadc3be /llvm/unittests/Analysis/ValueTrackingTest.cpp | |
parent | d6f221869c1d1bf11cd2111efd368077684c6657 (diff) | |
download | llvm-4d044bfb33980a3453c9cd456c261750f1971b8a.zip llvm-4d044bfb33980a3453c9cd456c261750f1971b8a.tar.gz llvm-4d044bfb33980a3453c9cd456c261750f1971b8a.tar.bz2 |
ValueTracking: Handle no-nan check for computeKnownFPClass for fmul
Copy the logic from isKnownNeverNaN for fadd/fsub. Leave the
extension to handle the zero case for a future change.
Diffstat (limited to 'llvm/unittests/Analysis/ValueTrackingTest.cpp')
-rw-r--r-- | llvm/unittests/Analysis/ValueTrackingTest.cpp | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/llvm/unittests/Analysis/ValueTrackingTest.cpp b/llvm/unittests/Analysis/ValueTrackingTest.cpp index 55834a7..ba983d4 100644 --- a/llvm/unittests/Analysis/ValueTrackingTest.cpp +++ b/llvm/unittests/Analysis/ValueTrackingTest.cpp @@ -1575,6 +1575,23 @@ TEST_F(ComputeKnownFPClassTest, FSub) { expectKnownFPClass(fcAllFlags, std::nullopt, A5); } +TEST_F(ComputeKnownFPClassTest, FMul) { + parseAssembly( + "define float @test(float nofpclass(nan inf) %nnan.ninf, float nofpclass(nan) %nnan, float nofpclass(qnan) %no.qnan, float %unknown) {\n" + " %A = fmul float %nnan.ninf, %nnan.ninf" + " %A2 = fmul float %nnan.ninf, %nnan" + " %A3 = fmul float %nnan, %nnan.ninf" + " %A4 = fmul float %nnan.ninf, %no.qnan" + " %A5 = fmul float %nnan, %nnan" + " ret float %A\n" + "}\n"); + expectKnownFPClass(fcFinite | fcInf, std::nullopt, A); + expectKnownFPClass(fcAllFlags, std::nullopt, A2); + expectKnownFPClass(fcAllFlags, std::nullopt, A3); + expectKnownFPClass(fcAllFlags, std::nullopt, A4); + expectKnownFPClass(fcAllFlags, std::nullopt, A5); +} + TEST_F(ValueTrackingTest, isNonZeroRecurrence) { parseAssembly(R"( define i1 @test(i8 %n, i8 %r) { |