[llvm] b11588b - [InstSimplify] add vector icmp tests; NFC

Sanjay Patel via llvm-commits llvm-commits at lists.llvm.org
Tue Oct 20 06:24:47 PDT 2020


Author: Sanjay Patel
Date: 2020-10-20T09:24:35-04:00
New Revision: b11588b18e8e0844e035d1bf5656b7f7b7bfb959

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

LOG: [InstSimplify] add vector icmp tests; NFC

Added: 
    

Modified: 
    llvm/test/Transforms/InstSimplify/compare.ll

Removed: 
    


################################################################################
diff  --git a/llvm/test/Transforms/InstSimplify/compare.ll b/llvm/test/Transforms/InstSimplify/compare.ll
index 557f2bb12101..e2fcaee72609 100644
--- a/llvm/test/Transforms/InstSimplify/compare.ll
+++ b/llvm/test/Transforms/InstSimplify/compare.ll
@@ -1121,66 +1121,138 @@ define i1 @compare_always_true_slt(i16 %a) {
 ; CHECK-LABEL: @compare_always_true_slt(
 ; CHECK-NEXT:    ret i1 true
 ;
-  %1 = zext i16 %a to i32
-  %2 = sub nsw i32 0, %1
-  %3 = icmp slt i32 %2, 1
-  ret i1 %3
+  %t1 = zext i16 %a to i32
+  %t2 = sub i32 0, %t1
+  %t3 = icmp slt i32 %t2, 1
+  ret i1 %t3
+}
 
+define <2 x i1> @compare_always_true_slt_splat(<2 x i16> %a) {
+; CHECK-LABEL: @compare_always_true_slt_splat(
+; CHECK-NEXT:    [[T1:%.*]] = zext <2 x i16> [[A:%.*]] to <2 x i32>
+; CHECK-NEXT:    [[T2:%.*]] = sub <2 x i32> zeroinitializer, [[T1]]
+; CHECK-NEXT:    [[T3:%.*]] = icmp slt <2 x i32> [[T2]], <i32 1, i32 1>
+; CHECK-NEXT:    ret <2 x i1> [[T3]]
+;
+  %t1 = zext <2 x i16> %a to <2 x i32>
+  %t2 = sub <2 x i32> zeroinitializer, %t1
+  %t3 = icmp slt <2 x i32> %t2, <i32 1, i32 1>
+  ret <2 x i1> %t3
 }
 
 define i1 @compare_always_true_sle(i16 %a) {
 ; CHECK-LABEL: @compare_always_true_sle(
 ; CHECK-NEXT:    ret i1 true
 ;
-  %1 = zext i16 %a to i32
-  %2 = sub nsw i32 0, %1
-  %3 = icmp sle i32 %2, 0
-  ret i1 %3
+  %t1 = zext i16 %a to i32
+  %t2 = sub i32 0, %t1
+  %t3 = icmp sle i32 %t2, 0
+  ret i1 %t3
+}
 
+define <2 x i1> @compare_always_true_sle_splat(<2 x i16> %a) {
+; CHECK-LABEL: @compare_always_true_sle_splat(
+; CHECK-NEXT:    [[T1:%.*]] = zext <2 x i16> [[A:%.*]] to <2 x i32>
+; CHECK-NEXT:    [[T2:%.*]] = sub <2 x i32> zeroinitializer, [[T1]]
+; CHECK-NEXT:    [[T3:%.*]] = icmp sle <2 x i32> [[T2]], zeroinitializer
+; CHECK-NEXT:    ret <2 x i1> [[T3]]
+;
+  %t1 = zext <2 x i16> %a to <2 x i32>
+  %t2 = sub <2 x i32> zeroinitializer, %t1
+  %t3 = icmp sle <2 x i32> %t2, zeroinitializer
+  ret <2 x i1> %t3
 }
 
 define i1 @compare_always_false_sgt(i16 %a) {
 ; CHECK-LABEL: @compare_always_false_sgt(
 ; CHECK-NEXT:    ret i1 false
 ;
-  %1 = zext i16 %a to i32
-  %2 = sub nsw i32 0, %1
-  %3 = icmp sgt i32 %2, 0
-  ret i1 %3
+  %t1 = zext i16 %a to i32
+  %t2 = sub i32 0, %t1
+  %t3 = icmp sgt i32 %t2, 0
+  ret i1 %t3
+}
 
+define <2 x i1> @compare_always_false_sgt_splat(<2 x i16> %a) {
+; CHECK-LABEL: @compare_always_false_sgt_splat(
+; CHECK-NEXT:    [[T1:%.*]] = zext <2 x i16> [[A:%.*]] to <2 x i32>
+; CHECK-NEXT:    [[T2:%.*]] = sub <2 x i32> zeroinitializer, [[T1]]
+; CHECK-NEXT:    [[T3:%.*]] = icmp sgt <2 x i32> [[T2]], zeroinitializer
+; CHECK-NEXT:    ret <2 x i1> [[T3]]
+;
+  %t1 = zext <2 x i16> %a to <2 x i32>
+  %t2 = sub <2 x i32> zeroinitializer, %t1
+  %t3 = icmp sgt <2 x i32> %t2, zeroinitializer
+  ret <2 x i1> %t3
 }
 
 define i1 @compare_always_false_sge(i16 %a) {
 ; CHECK-LABEL: @compare_always_false_sge(
 ; CHECK-NEXT:    ret i1 false
 ;
-  %1 = zext i16 %a to i32
-  %2 = sub nsw i32 0, %1
-  %3 = icmp sge i32 %2, 1
-  ret i1 %3
+  %t1 = zext i16 %a to i32
+  %t2 = sub i32 0, %t1
+  %t3 = icmp sge i32 %t2, 1
+  ret i1 %t3
+}
 
+define <2 x i1> @compare_always_false_sge_splat(<2 x i16> %a) {
+; CHECK-LABEL: @compare_always_false_sge_splat(
+; CHECK-NEXT:    [[T1:%.*]] = zext <2 x i16> [[A:%.*]] to <2 x i32>
+; CHECK-NEXT:    [[T2:%.*]] = sub <2 x i32> zeroinitializer, [[T1]]
+; CHECK-NEXT:    [[T3:%.*]] = icmp sge <2 x i32> [[T2]], <i32 1, i32 1>
+; CHECK-NEXT:    ret <2 x i1> [[T3]]
+;
+  %t1 = zext <2 x i16> %a to <2 x i32>
+  %t2 = sub <2 x i32> zeroinitializer, %t1
+  %t3 = icmp sge <2 x i32> %t2, <i32 1, i32 1>
+  ret <2 x i1> %t3
 }
 
 define i1 @compare_always_false_eq(i16 %a) {
 ; CHECK-LABEL: @compare_always_false_eq(
 ; CHECK-NEXT:    ret i1 false
 ;
-  %1 = zext i16 %a to i32
-  %2 = sub nsw i32 0, %1
-  %3 = icmp eq i32 %2, 1
-  ret i1 %3
+  %t1 = zext i16 %a to i32
+  %t2 = sub i32 0, %t1
+  %t3 = icmp eq i32 %t2, 1
+  ret i1 %t3
+}
 
+define <2 x i1> @compare_always_false_eq_splat(<2 x i16> %a) {
+; CHECK-LABEL: @compare_always_false_eq_splat(
+; CHECK-NEXT:    [[T1:%.*]] = zext <2 x i16> [[A:%.*]] to <2 x i32>
+; CHECK-NEXT:    [[T2:%.*]] = sub <2 x i32> zeroinitializer, [[T1]]
+; CHECK-NEXT:    [[T3:%.*]] = icmp eq <2 x i32> [[T2]], <i32 1, i32 1>
+; CHECK-NEXT:    ret <2 x i1> [[T3]]
+;
+  %t1 = zext <2 x i16> %a to <2 x i32>
+  %t2 = sub <2 x i32> zeroinitializer, %t1
+  %t3 = icmp eq <2 x i32> %t2, <i32 1, i32 1>
+  ret <2 x i1> %t3
 }
 
-define i1 @compare_always_false_ne(i16 %a) {
-; CHECK-LABEL: @compare_always_false_ne(
+define i1 @compare_always_true_ne(i16 %a) {
+; CHECK-LABEL: @compare_always_true_ne(
 ; CHECK-NEXT:    ret i1 true
 ;
-  %1 = zext i16 %a to i32
-  %2 = sub nsw i32 0, %1
-  %3 = icmp ne i32 %2, 1
-  ret i1 %3
+  %t1 = zext i16 %a to i32
+  %t2 = sub i32 0, %t1
+  %t3 = icmp ne i32 %t2, 1
+  ret i1 %t3
+}
 
+define <2 x i1> @compare_always_true_ne_splat(<2 x i16> %a) {
+; CHECK-LABEL: @compare_always_true_ne_splat(
+; CHECK-NEXT:    [[T1:%.*]] = zext <2 x i16> [[A:%.*]] to <2 x i32>
+; CHECK-NEXT:    [[T2:%.*]] = sub <2 x i32> zeroinitializer, [[T1]]
+; CHECK-NEXT:    [[T3:%.*]] = icmp ne <2 x i32> [[T2]], <i32 1, i32 1>
+; CHECK-NEXT:    ret <2 x i1> [[T3]]
+;
+  %t1 = zext <2 x i16> %a to <2 x i32>
+  %t2 = sub <2 x i32> zeroinitializer, %t1
+  %t3 = icmp ne <2 x i32> %t2, <i32 1, i32 1>
+  ret <2 x i1> %t3
 }
 
 define i1 @lshr_ugt_false(i32 %a) {


        


More information about the llvm-commits mailing list