[llvm] 463143f - [ValueTracking] add/adjust tests for min/max; NFC

Sanjay Patel via llvm-commits llvm-commits at lists.llvm.org
Mon Apr 6 08:18:12 PDT 2020


Author: Sanjay Patel
Date: 2020-04-06T11:14:05-04:00
New Revision: 463143f0d695e30c9bdd91eb14e047f6c3316e00

URL: https://github.com/llvm/llvm-project/commit/463143f0d695e30c9bdd91eb14e047f6c3316e00
DIFF: https://github.com/llvm/llvm-project/commit/463143f0d695e30c9bdd91eb14e047f6c3316e00.diff

LOG: [ValueTracking] add/adjust tests for min/max; NFC

Added: 
    

Modified: 
    llvm/unittests/Analysis/ValueTrackingTest.cpp

Removed: 
    


################################################################################
diff  --git a/llvm/unittests/Analysis/ValueTrackingTest.cpp b/llvm/unittests/Analysis/ValueTrackingTest.cpp
index 14a0da1828e9..34d9716b5fc5 100644
--- a/llvm/unittests/Analysis/ValueTrackingTest.cpp
+++ b/llvm/unittests/Analysis/ValueTrackingTest.cpp
@@ -476,12 +476,12 @@ TEST_F(MatchSelectPatternTest, NotNotSMin) {
 
 TEST_F(MatchSelectPatternTest, NotNotSMinSwap) {
   parseAssembly(
-      "define i8 @test(i8 %a, i8 %b) {\n"
-      "  %cmp = icmp slt i8 %a, %b\n"
-      "  %an = xor i8 %a, -1\n"
-      "  %bn = xor i8 %b, -1\n"
-      "  %A = select i1 %cmp, i8 %bn, i8 %an\n"
-      "  ret i8 %A\n"
+      "define <2 x i8> @test(<2 x i8> %a, <2 x i8> %b) {\n"
+      "  %cmp = icmp slt <2 x i8> %a, %b\n"
+      "  %an = xor <2 x i8> %a, <i8 -1, i8-1>\n"
+      "  %bn = xor <2 x i8> %b, <i8 -1, i8-1>\n"
+      "  %A = select <2 x i1> %cmp, <2 x i8> %bn, <2 x i8> %an\n"
+      "  ret <2 x i8> %A\n"
       "}\n");
   expectPattern({SPF_SMIN, SPNB_NA, false});
 }
@@ -499,15 +499,87 @@ TEST_F(MatchSelectPatternTest, NotNotSMax) {
 }
 
 TEST_F(MatchSelectPatternTest, NotNotSMaxSwap) {
+  parseAssembly(
+      "define <2 x i8> @test(<2 x i8> %a, <2 x i8> %b) {\n"
+      "  %cmp = icmp sgt <2 x i8> %a, %b\n"
+      "  %an = xor <2 x i8> %a, <i8 -1, i8-1>\n"
+      "  %bn = xor <2 x i8> %b, <i8 -1, i8-1>\n"
+      "  %A = select <2 x i1> %cmp, <2 x i8> %bn, <2 x i8> %an\n"
+      "  ret <2 x i8> %A\n"
+      "}\n");
+  expectPattern({SPF_SMAX, SPNB_NA, false});
+}
+
+TEST_F(MatchSelectPatternTest, NotNotUMin) {
+  parseAssembly(
+      "define <2 x i8> @test(<2 x i8> %a, <2 x i8> %b) {\n"
+      "  %cmp = icmp ugt <2 x i8> %a, %b\n"
+      "  %an = xor <2 x i8> %a, <i8 -1, i8-1>\n"
+      "  %bn = xor <2 x i8> %b, <i8 -1, i8-1>\n"
+      "  %A = select <2 x i1> %cmp, <2 x i8> %an, <2 x i8> %bn\n"
+      "  ret <2 x i8> %A\n"
+      "}\n");
+  expectPattern({SPF_UNKNOWN, SPNB_NA, false});
+}
+
+TEST_F(MatchSelectPatternTest, NotNotUMinSwap) {
   parseAssembly(
       "define i8 @test(i8 %a, i8 %b) {\n"
-      "  %cmp = icmp sgt i8 %a, %b\n"
+      "  %cmp = icmp ult i8 %a, %b\n"
       "  %an = xor i8 %a, -1\n"
       "  %bn = xor i8 %b, -1\n"
       "  %A = select i1 %cmp, i8 %bn, i8 %an\n"
       "  ret i8 %A\n"
       "}\n");
-  expectPattern({SPF_SMAX, SPNB_NA, false});
+  expectPattern({SPF_UNKNOWN, SPNB_NA, false});
+}
+
+TEST_F(MatchSelectPatternTest, NotNotUMax) {
+  parseAssembly(
+      "define <2 x i8> @test(<2 x i8> %a, <2 x i8> %b) {\n"
+      "  %cmp = icmp ult <2 x i8> %a, %b\n"
+      "  %an = xor <2 x i8> %a, <i8 -1, i8-1>\n"
+      "  %bn = xor <2 x i8> %b, <i8 -1, i8-1>\n"
+      "  %A = select <2 x i1> %cmp, <2 x i8> %an, <2 x i8> %bn\n"
+      "  ret <2 x i8> %A\n"
+      "}\n");
+  expectPattern({SPF_UNKNOWN, SPNB_NA, false});
+}
+
+TEST_F(MatchSelectPatternTest, NotNotUMaxSwap) {
+  parseAssembly(
+      "define i8 @test(i8 %a, i8 %b) {\n"
+      "  %cmp = icmp ugt i8 %a, %b\n"
+      "  %an = xor i8 %a, -1\n"
+      "  %bn = xor i8 %b, -1\n"
+      "  %A = select i1 %cmp, i8 %bn, i8 %an\n"
+      "  ret i8 %A\n"
+      "}\n");
+  expectPattern({SPF_UNKNOWN, SPNB_NA, false});
+}
+
+TEST_F(MatchSelectPatternTest, NotNotEq) {
+  parseAssembly(
+      "define i8 @test(i8 %a, i8 %b) {\n"
+      "  %cmp = icmp eq i8 %a, %b\n"
+      "  %an = xor i8 %a, -1\n"
+      "  %bn = xor i8 %b, -1\n"
+      "  %A = select i1 %cmp, i8 %bn, i8 %an\n"
+      "  ret i8 %A\n"
+      "}\n");
+  expectPattern({SPF_UNKNOWN, SPNB_NA, false});
+}
+
+TEST_F(MatchSelectPatternTest, NotNotNe) {
+  parseAssembly(
+      "define i8 @test(i8 %a, i8 %b) {\n"
+      "  %cmp = icmp ne i8 %a, %b\n"
+      "  %an = xor i8 %a, -1\n"
+      "  %bn = xor i8 %b, -1\n"
+      "  %A = select i1 %cmp, i8 %bn, i8 %an\n"
+      "  ret i8 %A\n"
+      "}\n");
+  expectPattern({SPF_UNKNOWN, SPNB_NA, false});
 }
 
 TEST(ValueTracking, GuaranteedToTransferExecutionToSuccessor) {


        


More information about the llvm-commits mailing list