From 0c2f40f91622c57ff343a47594bd84a747afe6e3 Mon Sep 17 00:00:00 2001 From: Philip Reames Date: Wed, 30 Jun 2021 10:25:41 -0700 Subject: [PATCH] [instcombine] Precommit tests for umin(a,b) ne/eq 0 fold --- .../InstCombine/minmax-intrinsics.ll | 46 +++++++++++++++++++ 1 file changed, 46 insertions(+) diff --git a/llvm/test/Transforms/InstCombine/minmax-intrinsics.ll b/llvm/test/Transforms/InstCombine/minmax-intrinsics.ll index 0dd429cb589ef..963c2bc476665 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> ) 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 +}