[llvm] ad48fc3 - [InstCombine] add/move tests for sub-of-umax; NFC

Sanjay Patel via llvm-commits llvm-commits at lists.llvm.org
Tue Nov 9 08:05:06 PST 2021


Author: Sanjay Patel
Date: 2021-11-09T10:50:11-05:00
New Revision: ad48fc35e2dcc58c024e8971e307b07ada46d547

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

LOG: [InstCombine] add/move tests for sub-of-umax; NFC

Added: 
    

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

Removed: 
    


################################################################################
diff  --git a/llvm/test/Transforms/InstCombine/minmax-intrinsics.ll b/llvm/test/Transforms/InstCombine/minmax-intrinsics.ll
index 6c55c2375010..7b76c3ad7422 100644
--- a/llvm/test/Transforms/InstCombine/minmax-intrinsics.ll
+++ b/llvm/test/Transforms/InstCombine/minmax-intrinsics.ll
@@ -2129,26 +2129,3 @@ define <3 x i8> @umax_vector_splat_undef(<3 x i8> %x) {
   %r = call <3 x i8> @llvm.umax.v3i8(<3 x i8> %a, <3 x i8> <i8 13, i8 130, i8 130>)
   ret <3 x i8> %r
 }
-
-define <3 x i8> @umax_sub_vec(<3 x i8> %x, <3 x i8> %y) {
-; CHECK-LABEL: @umax_sub_vec(
-; CHECK-NEXT:    [[TMP1:%.*]] = call <3 x i8> @llvm.usub.sat.v3i8(<3 x i8> [[X:%.*]], <3 x i8> [[Y:%.*]])
-; CHECK-NEXT:    ret <3 x i8> [[TMP1]]
-;
-  %u = call <3 x i8> @llvm.umax.v3i8(<3 x i8> %x, <3 x i8> %y)
-  %r = sub <3 x i8> %u, %y
-  ret <3 x i8> %r
-}
-
-define i8 @umax_sub_use(i8 %x, i8 %y) {
-; CHECK-LABEL: @umax_sub_use(
-; CHECK-NEXT:    [[U:%.*]] = call i8 @llvm.umax.i8(i8 [[X:%.*]], i8 [[Y:%.*]])
-; CHECK-NEXT:    call void @use(i8 [[U]])
-; CHECK-NEXT:    [[R:%.*]] = sub i8 [[U]], [[Y]]
-; CHECK-NEXT:    ret i8 [[R]]
-;
-  %u = call i8 @llvm.umax.i8(i8 %x, i8 %y)
-  call void @use(i8 %u)
-  %r = sub i8 %u, %y
-  ret i8 %r
-}

diff  --git a/llvm/test/Transforms/InstCombine/sub-minmax.ll b/llvm/test/Transforms/InstCombine/sub-minmax.ll
index 5593b228592c..b039c93d5c19 100644
--- a/llvm/test/Transforms/InstCombine/sub-minmax.ll
+++ b/llvm/test/Transforms/InstCombine/sub-minmax.ll
@@ -3,6 +3,7 @@
 
 declare i5 @llvm.umin.i5(i5, i5)
 declare <2 x i8> @llvm.umin.v2i8(<2 x i8>, <2 x i8>)
+declare <2 x i8> @llvm.umax.v2i8(<2 x i8>, <2 x i8>)
 
 declare i8 @llvm.smax.i8(i8, i8)
 declare i8 @llvm.smin.i8(i8, i8)
@@ -498,5 +499,74 @@ define i8 @umin_not_sub_intrinsic_uses(i8 %x, i8 %y) {
   ret i8 %subx
 }
 
+define i8 @umax_sub_op0(i8 %x, i8 %y) {
+; CHECK-LABEL: @umax_sub_op0(
+; CHECK-NEXT:    [[U:%.*]] = call i8 @llvm.umax.i8(i8 [[Y:%.*]], i8 [[X:%.*]])
+; CHECK-NEXT:    [[R:%.*]] = sub i8 [[U]], [[Y]]
+; CHECK-NEXT:    ret i8 [[R]]
+;
+  %u = call i8 @llvm.umax.i8(i8 %y, i8 %x)
+  %r = sub i8 %u, %y
+  ret i8 %r
+}
+
+define <2 x i8> @umax_sub_op0_vec_commute(<2 x i8> %x, <2 x i8> %y) {
+; CHECK-LABEL: @umax_sub_op0_vec_commute(
+; CHECK-NEXT:    [[TMP1:%.*]] = call <2 x i8> @llvm.usub.sat.v2i8(<2 x i8> [[X:%.*]], <2 x i8> [[Y:%.*]])
+; CHECK-NEXT:    ret <2 x i8> [[TMP1]]
+;
+  %u = call <2 x i8> @llvm.umax.v2i8(<2 x i8> %x, <2 x i8> %y)
+  %r = sub <2 x i8> %u, %y
+  ret <2 x i8> %r
+}
+
+define i8 @umax_sub_op0_use(i8 %x, i8 %y) {
+; CHECK-LABEL: @umax_sub_op0_use(
+; CHECK-NEXT:    [[U:%.*]] = call i8 @llvm.umax.i8(i8 [[X:%.*]], i8 [[Y:%.*]])
+; CHECK-NEXT:    call void @use8(i8 [[U]])
+; CHECK-NEXT:    [[R:%.*]] = sub i8 [[U]], [[Y]]
+; CHECK-NEXT:    ret i8 [[R]]
+;
+  %u = call i8 @llvm.umax.i8(i8 %x, i8 %y)
+  call void @use8(i8 %u)
+  %r = sub i8 %u, %y
+  ret i8 %r
+}
+
+define i8 @umax_sub_op1(i8 %x, i8 %y) {
+; CHECK-LABEL: @umax_sub_op1(
+; CHECK-NEXT:    [[U:%.*]] = call i8 @llvm.umax.i8(i8 [[X:%.*]], i8 [[Y:%.*]])
+; CHECK-NEXT:    [[R:%.*]] = sub i8 [[Y]], [[U]]
+; CHECK-NEXT:    ret i8 [[R]]
+;
+  %u = call i8 @llvm.umax.i8(i8 %x, i8 %y)
+  %r = sub i8 %y, %u
+  ret i8 %r
+}
+
+define <2 x i8> @umax_sub_op1_vec_commute(<2 x i8> %x, <2 x i8> %y) {
+; CHECK-LABEL: @umax_sub_op1_vec_commute(
+; CHECK-NEXT:    [[U:%.*]] = call <2 x i8> @llvm.umax.v2i8(<2 x i8> [[X:%.*]], <2 x i8> [[Y:%.*]])
+; CHECK-NEXT:    [[R:%.*]] = sub <2 x i8> [[Y]], [[U]]
+; CHECK-NEXT:    ret <2 x i8> [[R]]
+;
+  %u = call <2 x i8> @llvm.umax.v2i8(<2 x i8> %x, <2 x i8> %y)
+  %r = sub <2 x i8> %y, %u
+  ret <2 x i8> %r
+}
+
+define i8 @umax_sub_op1_use(i8 %x, i8 %y) {
+; CHECK-LABEL: @umax_sub_op1_use(
+; CHECK-NEXT:    [[U:%.*]] = call i8 @llvm.umax.i8(i8 [[X:%.*]], i8 [[Y:%.*]])
+; CHECK-NEXT:    call void @use8(i8 [[U]])
+; CHECK-NEXT:    [[R:%.*]] = sub i8 [[Y]], [[U]]
+; CHECK-NEXT:    ret i8 [[R]]
+;
+  %u = call i8 @llvm.umax.i8(i8 %x, i8 %y)
+  call void @use8(i8 %u)
+  %r = sub i8 %y, %u
+  ret i8 %r
+}
+
 declare void @use8(i8)
 declare void @use32(i32 %u)


        


More information about the llvm-commits mailing list