[llvm] 0c2f40f - [instcombine] Precommit tests for umin(a, b) ne/eq 0 fold

Philip Reames via llvm-commits llvm-commits at lists.llvm.org
Wed Jun 30 10:29:26 PDT 2021


Author: Philip Reames
Date: 2021-06-30T10:29:19-07:00
New Revision: 0c2f40f91622c57ff343a47594bd84a747afe6e3

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

LOG: [instcombine] Precommit tests for umin(a,b) ne/eq 0 fold

Added: 
    

Modified: 
    llvm/test/Transforms/InstCombine/minmax-intrinsics.ll

Removed: 
    


################################################################################
diff  --git a/llvm/test/Transforms/InstCombine/minmax-intrinsics.ll b/llvm/test/Transforms/InstCombine/minmax-intrinsics.ll
index 0dd429cb589e..963c2bc47666 100644
--- a/llvm/test/Transforms/InstCombine/minmax-intrinsics.ll
+++ b/llvm/test/Transforms/InstCombine/minmax-intrinsics.ll
@@ -858,3 +858,49 @@ define <3 x i8> @umin_non_zero_idiom4(<3 x i8> %a) {
   %res = call <3 x i8> @llvm.umin.v3i8(<3 x i8> %a, <3 x i8> <i8 1, i8 undef, i8 undef>)
   ret <3 x i8> %res
 }
+
+define i1 @umin_eq_zero(i8 %a, i8 %b) {
+; CHECK-LABEL: @umin_eq_zero(
+; CHECK-NEXT:    [[UMIN:%.*]] = call i8 @llvm.umin.i8(i8 [[A:%.*]], i8 [[B:%.*]])
+; CHECK-NEXT:    [[RES:%.*]] = icmp eq i8 [[UMIN]], 0
+; CHECK-NEXT:    ret i1 [[RES]]
+;
+  %umin = call i8 @llvm.umin.i8(i8 %a, i8 %b)
+  %res = icmp eq i8 %umin, 0
+  ret i1 %res
+}
+
+define <3 x i1> @umin_eq_zero2(<3 x i8> %a, <3 x i8> %b) {
+; CHECK-LABEL: @umin_eq_zero2(
+; CHECK-NEXT:    [[UMIN:%.*]] = call <3 x i8> @llvm.umin.v3i8(<3 x i8> [[A:%.*]], <3 x i8> [[B:%.*]])
+; CHECK-NEXT:    [[RES:%.*]] = icmp eq <3 x i8> [[UMIN]], zeroinitializer
+; CHECK-NEXT:    ret <3 x i1> [[RES]]
+;
+
+  %umin = call <3 x i8> @llvm.umin.v3i8(<3 x i8> %a, <3 x i8> %b)
+  %res = icmp eq <3 x i8> %umin, zeroinitializer
+  ret <3 x i1> %res
+}
+
+define i1 @umin_ne_zero(i8 %a, i8 %b) {
+; CHECK-LABEL: @umin_ne_zero(
+; CHECK-NEXT:    [[UMIN:%.*]] = call i8 @llvm.umin.i8(i8 [[A:%.*]], i8 [[B:%.*]])
+; CHECK-NEXT:    [[RES:%.*]] = icmp ne i8 [[UMIN]], 0
+; CHECK-NEXT:    ret i1 [[RES]]
+;
+  %umin = call i8 @llvm.umin.i8(i8 %a, i8 %b)
+  %res = icmp ne i8 %umin, 0
+  ret i1 %res
+}
+
+define <3 x i1> @umin_ne_zero2(<3 x i8> %a, <3 x i8> %b) {
+; CHECK-LABEL: @umin_ne_zero2(
+; CHECK-NEXT:    [[UMIN:%.*]] = call <3 x i8> @llvm.umin.v3i8(<3 x i8> [[A:%.*]], <3 x i8> [[B:%.*]])
+; CHECK-NEXT:    [[RES:%.*]] = icmp ne <3 x i8> [[UMIN]], zeroinitializer
+; CHECK-NEXT:    ret <3 x i1> [[RES]]
+;
+
+  %umin = call <3 x i8> @llvm.umin.v3i8(<3 x i8> %a, <3 x i8> %b)
+  %res = icmp ne <3 x i8> %umin, zeroinitializer
+  ret <3 x i1> %res
+}


        


More information about the llvm-commits mailing list