[llvm] 4b5261e - [InstCombine] Add tests for sub of umin intrinsic (NFC)
Nikita Popov via llvm-commits
llvm-commits at lists.llvm.org
Wed Feb 23 03:00:43 PST 2022
Author: Nikita Popov
Date: 2022-02-23T12:00:34+01:00
New Revision: 4b5261e10f752e682a3e7ade385e927c2e7ee1d3
URL: https://github.com/llvm/llvm-project/commit/4b5261e10f752e682a3e7ade385e927c2e7ee1d3
DIFF: https://github.com/llvm/llvm-project/commit/4b5261e10f752e682a3e7ade385e927c2e7ee1d3.diff
LOG: [InstCombine] Add tests for sub of umin intrinsic (NFC)
We should be converting these into usub.sat.
Added:
Modified:
llvm/test/Transforms/InstCombine/sub-minmax.ll
Removed:
################################################################################
diff --git a/llvm/test/Transforms/InstCombine/sub-minmax.ll b/llvm/test/Transforms/InstCombine/sub-minmax.ll
index efc5c07601660..5dbf02c14528c 100644
--- a/llvm/test/Transforms/InstCombine/sub-minmax.ll
+++ b/llvm/test/Transforms/InstCombine/sub-minmax.ll
@@ -567,5 +567,75 @@ define i8 @umax_sub_op1_use(i8 %x, i8 %y) {
ret i8 %r
}
+define i8 @umin_sub_op1(i8 %x, i8 %y) {
+; CHECK-LABEL: @umin_sub_op1(
+; CHECK-NEXT: [[U:%.*]] = call i8 @llvm.umin.i8(i8 [[Y:%.*]], i8 [[X:%.*]])
+; CHECK-NEXT: [[R:%.*]] = sub i8 [[Y]], [[U]]
+; CHECK-NEXT: ret i8 [[R]]
+;
+ %u = call i8 @llvm.umin.i8(i8 %y, i8 %x)
+ %r = sub i8 %y, %u
+ ret i8 %r
+}
+
+define i8 @umin_sub_op1_commute(i8 %x, i8 %y) {
+; CHECK-LABEL: @umin_sub_op1_commute(
+; CHECK-NEXT: [[U:%.*]] = call i8 @llvm.umin.i8(i8 [[X:%.*]], i8 [[Y:%.*]])
+; CHECK-NEXT: [[R:%.*]] = sub i8 [[Y]], [[U]]
+; CHECK-NEXT: ret i8 [[R]]
+;
+ %u = call i8 @llvm.umin.i8(i8 %x, i8 %y)
+ %r = sub i8 %y, %u
+ ret i8 %r
+}
+
+define i8 @umin_sub_op0(i8 %x, i8 %y) {
+; CHECK-LABEL: @umin_sub_op0(
+; CHECK-NEXT: [[U:%.*]] = call i8 @llvm.umin.i8(i8 [[Y:%.*]], i8 [[X:%.*]])
+; CHECK-NEXT: [[R:%.*]] = sub i8 [[U]], [[Y]]
+; CHECK-NEXT: ret i8 [[R]]
+;
+ %u = call i8 @llvm.umin.i8(i8 %y, i8 %x)
+ %r = sub i8 %u, %y
+ ret i8 %r
+}
+
+define i8 @umin_sub_op0_commute(i8 %x, i8 %y) {
+; CHECK-LABEL: @umin_sub_op0_commute(
+; CHECK-NEXT: [[U:%.*]] = call i8 @llvm.umin.i8(i8 [[X:%.*]], i8 [[Y:%.*]])
+; CHECK-NEXT: [[R:%.*]] = sub i8 [[U]], [[Y]]
+; CHECK-NEXT: ret i8 [[R]]
+;
+ %u = call i8 @llvm.umin.i8(i8 %x, i8 %y)
+ %r = sub i8 %u, %y
+ ret i8 %r
+}
+
+define i8 @umin_sub_op1_use(i8 %x, i8 %y) {
+; CHECK-LABEL: @umin_sub_op1_use(
+; CHECK-NEXT: [[U:%.*]] = call i8 @llvm.umin.i8(i8 [[Y:%.*]], i8 [[X:%.*]])
+; CHECK-NEXT: call void @use8(i8 [[U]])
+; CHECK-NEXT: [[R:%.*]] = sub i8 [[Y]], [[U]]
+; CHECK-NEXT: ret i8 [[R]]
+;
+ %u = call i8 @llvm.umin.i8(i8 %y, i8 %x)
+ call void @use8(i8 %u)
+ %r = sub i8 %y, %u
+ ret i8 %r
+}
+
+define i8 @umin_sub_op0_use(i8 %x, i8 %y) {
+; CHECK-LABEL: @umin_sub_op0_use(
+; CHECK-NEXT: [[U:%.*]] = call i8 @llvm.umin.i8(i8 [[Y:%.*]], i8 [[X:%.*]])
+; CHECK-NEXT: call void @use8(i8 [[U]])
+; CHECK-NEXT: [[R:%.*]] = sub i8 [[U]], [[Y]]
+; CHECK-NEXT: ret i8 [[R]]
+;
+ %u = call i8 @llvm.umin.i8(i8 %y, i8 %x)
+ call void @use8(i8 %u)
+ %r = sub i8 %u, %y
+ ret i8 %r
+}
+
declare void @use8(i8)
declare void @use32(i32 %u)
More information about the llvm-commits
mailing list