[llvm] 2639c16 - [InstCombine] more tests for D94861 (NFC)

Juneyoung Lee via llvm-commits llvm-commits at lists.llvm.org
Sun Jan 17 18:13:06 PST 2021


Author: Juneyoung Lee
Date: 2021-01-18T11:12:52+09:00
New Revision: 2639c162b71f4b9e5c0ffefaa861fe915b73cb87

URL: https://github.com/llvm/llvm-project/commit/2639c162b71f4b9e5c0ffefaa861fe915b73cb87
DIFF: https://github.com/llvm/llvm-project/commit/2639c162b71f4b9e5c0ffefaa861fe915b73cb87.diff

LOG: [InstCombine] more tests for D94861 (NFC)

Added: 
    

Modified: 
    llvm/test/Transforms/InstCombine/select-safe-transforms.ll

Removed: 
    


################################################################################
diff  --git a/llvm/test/Transforms/InstCombine/select-safe-transforms.ll b/llvm/test/Transforms/InstCombine/select-safe-transforms.ll
index f6dfb672e7f2..48235863d9ff 100644
--- a/llvm/test/Transforms/InstCombine/select-safe-transforms.ll
+++ b/llvm/test/Transforms/InstCombine/select-safe-transforms.ll
@@ -88,6 +88,34 @@ define i1 @xor_and(i1 %c, i32 %X, i32 %Y) {
   ret i1 %res
 }
 
+define <2 x i1> @xor_and2(<2 x i1> %c, <2 x i32> %X, <2 x i32> %Y) {
+; CHECK-LABEL: @xor_and2(
+; CHECK-NEXT:    [[COMP:%.*]] = icmp ult <2 x i32> [[X:%.*]], [[Y:%.*]]
+; CHECK-NEXT:    [[SEL:%.*]] = select <2 x i1> [[C:%.*]], <2 x i1> [[COMP]], <2 x i1> <i1 true, i1 false>
+; CHECK-NEXT:    [[RES:%.*]] = xor <2 x i1> [[SEL]], <i1 true, i1 true>
+; CHECK-NEXT:    ret <2 x i1> [[RES]]
+;
+  %comp = icmp ult <2 x i32> %X, %Y
+  %sel = select <2 x i1> %c, <2 x i1> %comp, <2 x i1> <i1 true, i1 false>
+  %res = xor <2 x i1> %sel, <i1 true, i1 true>
+  ret <2 x i1> %res
+}
+
+ at glb = global i8 0
+
+define <2 x i1> @xor_and3(<2 x i1> %c, <2 x i32> %X, <2 x i32> %Y) {
+; CHECK-LABEL: @xor_and3(
+; CHECK-NEXT:    [[COMP:%.*]] = icmp ult <2 x i32> [[X:%.*]], [[Y:%.*]]
+; CHECK-NEXT:    [[SEL:%.*]] = select <2 x i1> [[C:%.*]], <2 x i1> [[COMP]], <2 x i1> <i1 icmp eq (i8* inttoptr (i64 1234 to i8*), i8* @glb), i1 false>
+; CHECK-NEXT:    [[RES:%.*]] = xor <2 x i1> [[SEL]], <i1 true, i1 true>
+; CHECK-NEXT:    ret <2 x i1> [[RES]]
+;
+  %comp = icmp ult <2 x i32> %X, %Y
+  %sel = select <2 x i1> %c, <2 x i1> %comp, <2 x i1> <i1 icmp eq (i8* @glb, i8* inttoptr (i64 1234 to i8*)), i1 false>
+  %res = xor <2 x i1> %sel, <i1 true, i1 true>
+  ret <2 x i1> %res
+}
+
 define i1 @xor_or(i1 %c, i32 %X, i32 %Y) {
 ; CHECK-LABEL: @xor_or(
 ; CHECK-NEXT:    [[COMP:%.*]] = icmp ult i32 [[X:%.*]], [[Y:%.*]]
@@ -100,3 +128,29 @@ define i1 @xor_or(i1 %c, i32 %X, i32 %Y) {
   %res = xor i1 %sel, true
   ret i1 %res
 }
+
+define <2 x i1> @xor_or2(<2 x i1> %c, <2 x i32> %X, <2 x i32> %Y) {
+; CHECK-LABEL: @xor_or2(
+; CHECK-NEXT:    [[COMP:%.*]] = icmp ult <2 x i32> [[X:%.*]], [[Y:%.*]]
+; CHECK-NEXT:    [[SEL:%.*]] = select <2 x i1> [[C:%.*]], <2 x i1> <i1 true, i1 false>, <2 x i1> [[COMP]]
+; CHECK-NEXT:    [[RES:%.*]] = xor <2 x i1> [[SEL]], <i1 true, i1 true>
+; CHECK-NEXT:    ret <2 x i1> [[RES]]
+;
+  %comp = icmp ult <2 x i32> %X, %Y
+  %sel = select <2 x i1> %c, <2 x i1> <i1 true, i1 false>, <2 x i1> %comp
+  %res = xor <2 x i1> %sel, <i1 true, i1 true>
+  ret <2 x i1> %res
+}
+
+define <2 x i1> @xor_or3(<2 x i1> %c, <2 x i32> %X, <2 x i32> %Y) {
+; CHECK-LABEL: @xor_or3(
+; CHECK-NEXT:    [[COMP:%.*]] = icmp ult <2 x i32> [[X:%.*]], [[Y:%.*]]
+; CHECK-NEXT:    [[SEL:%.*]] = select <2 x i1> [[C:%.*]], <2 x i1> <i1 icmp eq (i8* inttoptr (i64 1234 to i8*), i8* @glb), i1 false>, <2 x i1> [[COMP]]
+; CHECK-NEXT:    [[RES:%.*]] = xor <2 x i1> [[SEL]], <i1 true, i1 true>
+; CHECK-NEXT:    ret <2 x i1> [[RES]]
+;
+  %comp = icmp ult <2 x i32> %X, %Y
+  %sel = select <2 x i1> %c, <2 x i1> <i1 icmp eq (i8* @glb, i8* inttoptr (i64 1234 to i8*)), i1 false>, <2 x i1> %comp
+  %res = xor <2 x i1> %sel, <i1 true, i1 true>
+  ret <2 x i1> %res
+}


        


More information about the llvm-commits mailing list