diff options
author | Sanjay Patel <spatel@rotateright.com> | 2018-10-31 21:11:59 +0000 |
---|---|---|
committer | Sanjay Patel <spatel@rotateright.com> | 2018-10-31 21:11:59 +0000 |
commit | 03da6e6a623019916f3fd03b31cb19e6969db21f (patch) | |
tree | 175676371d4dc1b0c51e00387625df1cb74e309c | |
parent | 8eb3c8145793446acd1ba01530b64a03242d0e91 (diff) | |
download | bcm5719-llvm-03da6e6a623019916f3fd03b31cb19e6969db21f.tar.gz bcm5719-llvm-03da6e6a623019916f3fd03b31cb19e6969db21f.zip |
[ValueTracking] add tests for fmin/fmax; NFC
llvm-svn: 345777
-rw-r--r-- | llvm/unittests/Analysis/ValueTrackingTest.cpp | 176 |
1 files changed, 176 insertions, 0 deletions
diff --git a/llvm/unittests/Analysis/ValueTrackingTest.cpp b/llvm/unittests/Analysis/ValueTrackingTest.cpp index d6365176d08..ccae9d19ebb 100644 --- a/llvm/unittests/Analysis/ValueTrackingTest.cpp +++ b/llvm/unittests/Analysis/ValueTrackingTest.cpp @@ -149,6 +149,182 @@ TEST_F(MatchSelectPatternTest, FMinConstantZeroNsz) { expectPattern({SPF_FMINNUM, SPNB_RETURNS_OTHER, true}); } +TEST_F(MatchSelectPatternTest, FMinMismatchConstantZero1) { + parseAssembly( + "define float @test(float %a) {\n" + " %1 = fcmp olt float -0.0, %a\n" + " %A = select i1 %1, float 0.0, float %a\n" + " ret float %A\n" + "}\n"); + // FIXME: The sign of zero doesn't matter in fcmp. + expectPattern({SPF_UNKNOWN, SPNB_NA, false}); +} + +TEST_F(MatchSelectPatternTest, FMinMismatchConstantZero2) { + parseAssembly( + "define float @test(float %a) {\n" + " %1 = fcmp ogt float %a, -0.0\n" + " %A = select i1 %1, float 0.0, float %a\n" + " ret float %A\n" + "}\n"); + // FIXME: The sign of zero doesn't matter in fcmp. + expectPattern({SPF_UNKNOWN, SPNB_NA, false}); +} + +TEST_F(MatchSelectPatternTest, FMinMismatchConstantZero3) { + parseAssembly( + "define float @test(float %a) {\n" + " %1 = fcmp olt float 0.0, %a\n" + " %A = select i1 %1, float -0.0, float %a\n" + " ret float %A\n" + "}\n"); + // FIXME: The sign of zero doesn't matter in fcmp. + expectPattern({SPF_UNKNOWN, SPNB_NA, false}); +} + +TEST_F(MatchSelectPatternTest, FMinMismatchConstantZero4) { + parseAssembly( + "define float @test(float %a) {\n" + " %1 = fcmp ogt float %a, 0.0\n" + " %A = select i1 %1, float -0.0, float %a\n" + " ret float %A\n" + "}\n"); + // FIXME: The sign of zero doesn't matter in fcmp. + expectPattern({SPF_UNKNOWN, SPNB_NA, false}); +} + +TEST_F(MatchSelectPatternTest, FMinMismatchConstantZero5) { + parseAssembly( + "define float @test(float %a) {\n" + " %1 = fcmp ogt float -0.0, %a\n" + " %A = select i1 %1, float %a, float 0.0\n" + " ret float %A\n" + "}\n"); + // FIXME: The sign of zero doesn't matter in fcmp. + expectPattern({SPF_UNKNOWN, SPNB_NA, false}); +} + +TEST_F(MatchSelectPatternTest, FMinMismatchConstantZero6) { + parseAssembly( + "define float @test(float %a) {\n" + " %1 = fcmp olt float %a, -0.0\n" + " %A = select i1 %1, float %a, float 0.0\n" + " ret float %A\n" + "}\n"); + // FIXME: The sign of zero doesn't matter in fcmp. + expectPattern({SPF_UNKNOWN, SPNB_NA, false}); +} + +TEST_F(MatchSelectPatternTest, FMinMismatchConstantZero7) { + parseAssembly( + "define float @test(float %a) {\n" + " %1 = fcmp ogt float 0.0, %a\n" + " %A = select i1 %1, float %a, float -0.0\n" + " ret float %A\n" + "}\n"); + // FIXME: The sign of zero doesn't matter in fcmp. + expectPattern({SPF_UNKNOWN, SPNB_NA, false}); +} + +TEST_F(MatchSelectPatternTest, FMinMismatchConstantZero8) { + parseAssembly( + "define float @test(float %a) {\n" + " %1 = fcmp olt float %a, 0.0\n" + " %A = select i1 %1, float %a, float -0.0\n" + " ret float %A\n" + "}\n"); + // FIXME: The sign of zero doesn't matter in fcmp. + expectPattern({SPF_UNKNOWN, SPNB_NA, false}); +} + +TEST_F(MatchSelectPatternTest, FMaxMismatchConstantZero1) { + parseAssembly( + "define float @test(float %a) {\n" + " %1 = fcmp ogt float -0.0, %a\n" + " %A = select i1 %1, float 0.0, float %a\n" + " ret float %A\n" + "}\n"); + // FIXME: The sign of zero doesn't matter in fcmp. + expectPattern({SPF_UNKNOWN, SPNB_NA, false}); +} + +TEST_F(MatchSelectPatternTest, FMaxMismatchConstantZero2) { + parseAssembly( + "define float @test(float %a) {\n" + " %1 = fcmp olt float %a, -0.0\n" + " %A = select i1 %1, float 0.0, float %a\n" + " ret float %A\n" + "}\n"); + // FIXME: The sign of zero doesn't matter in fcmp. + expectPattern({SPF_UNKNOWN, SPNB_NA, false}); +} + +TEST_F(MatchSelectPatternTest, FMaxMismatchConstantZero3) { + parseAssembly( + "define float @test(float %a) {\n" + " %1 = fcmp ogt float 0.0, %a\n" + " %A = select i1 %1, float -0.0, float %a\n" + " ret float %A\n" + "}\n"); + // FIXME: The sign of zero doesn't matter in fcmp. + expectPattern({SPF_UNKNOWN, SPNB_NA, false}); +} + +TEST_F(MatchSelectPatternTest, FMaxMismatchConstantZero4) { + parseAssembly( + "define float @test(float %a) {\n" + " %1 = fcmp olt float %a, 0.0\n" + " %A = select i1 %1, float -0.0, float %a\n" + " ret float %A\n" + "}\n"); + // FIXME: The sign of zero doesn't matter in fcmp. + expectPattern({SPF_UNKNOWN, SPNB_NA, false}); +} + +TEST_F(MatchSelectPatternTest, FMaxMismatchConstantZero5) { + parseAssembly( + "define float @test(float %a) {\n" + " %1 = fcmp olt float -0.0, %a\n" + " %A = select i1 %1, float %a, float 0.0\n" + " ret float %A\n" + "}\n"); + // FIXME: The sign of zero doesn't matter in fcmp. + expectPattern({SPF_UNKNOWN, SPNB_NA, false}); +} + +TEST_F(MatchSelectPatternTest, FMaxMismatchConstantZero6) { + parseAssembly( + "define float @test(float %a) {\n" + " %1 = fcmp ogt float %a, -0.0\n" + " %A = select i1 %1, float %a, float 0.0\n" + " ret float %A\n" + "}\n"); + // FIXME: The sign of zero doesn't matter in fcmp. + expectPattern({SPF_UNKNOWN, SPNB_NA, false}); +} + +TEST_F(MatchSelectPatternTest, FMaxMismatchConstantZero7) { + parseAssembly( + "define float @test(float %a) {\n" + " %1 = fcmp olt float 0.0, %a\n" + " %A = select i1 %1, float %a, float -0.0\n" + " ret float %A\n" + "}\n"); + // FIXME: The sign of zero doesn't matter in fcmp. + expectPattern({SPF_UNKNOWN, SPNB_NA, false}); +} + +TEST_F(MatchSelectPatternTest, FMaxMismatchConstantZero8) { + parseAssembly( + "define float @test(float %a) {\n" + " %1 = fcmp ogt float %a, 0.0\n" + " %A = select i1 %1, float %a, float -0.0\n" + " ret float %A\n" + "}\n"); + // FIXME: The sign of zero doesn't matter in fcmp. + expectPattern({SPF_UNKNOWN, SPNB_NA, false}); +} + TEST_F(MatchSelectPatternTest, VectorFMinimum) { parseAssembly( "define <4 x float> @test(<4 x float> %a) {\n" |