[llvm] 6956788 - [InstCombine] add tests for absolute diff; NFC
Sanjay Patel via llvm-commits
llvm-commits at lists.llvm.org
Thu Mar 2 08:25:26 PST 2023
Author: Sanjay Patel
Date: 2023-03-02T11:24:09-05:00
New Revision: 6956788cbd2059f2dfeb12b8347fd5779f204020
URL: https://github.com/llvm/llvm-project/commit/6956788cbd2059f2dfeb12b8347fd5779f204020
DIFF: https://github.com/llvm/llvm-project/commit/6956788cbd2059f2dfeb12b8347fd5779f204020.diff
LOG: [InstCombine] add tests for absolute diff; NFC
More coverage for D145073.
Added:
Modified:
llvm/test/Transforms/InstCombine/abs-1.ll
Removed:
################################################################################
diff --git a/llvm/test/Transforms/InstCombine/abs-1.ll b/llvm/test/Transforms/InstCombine/abs-1.ll
index 247ec118dfa4c..b0a1044902bc4 100644
--- a/llvm/test/Transforms/InstCombine/abs-1.ll
+++ b/llvm/test/Transforms/InstCombine/abs-1.ll
@@ -760,6 +760,89 @@ define i32 @abs_
diff _signed_slt_no_nsw(i32 %a, i32 %b) {
ret i32 %cond
}
+define i8 @abs_
diff _signed_sgt_nsw_nuw(i8 %a, i8 %b) {
+; CHECK-LABEL: @abs_
diff _signed_sgt_nsw_nuw(
+; CHECK-NEXT: [[CMP:%.*]] = icmp sgt i8 [[A:%.*]], [[B:%.*]]
+; CHECK-NEXT: [[SUB_BA:%.*]] = sub nuw nsw i8 [[B]], [[A]]
+; CHECK-NEXT: [[SUB_AB:%.*]] = sub nuw nsw i8 [[A]], [[B]]
+; CHECK-NEXT: [[COND:%.*]] = select i1 [[CMP]], i8 [[SUB_AB]], i8 [[SUB_BA]]
+; CHECK-NEXT: ret i8 [[COND]]
+;
+ %cmp = icmp sgt i8 %a, %b
+ %sub_ba = sub nsw nuw i8 %b, %a
+ %sub_ab = sub nsw nuw i8 %a, %b
+ %cond = select i1 %cmp, i8 %sub_ab, i8 %sub_ba
+ ret i8 %cond
+}
+
+define i8 @abs_
diff _signed_sgt_nuw(i8 %a, i8 %b) {
+; CHECK-LABEL: @abs_
diff _signed_sgt_nuw(
+; CHECK-NEXT: [[CMP:%.*]] = icmp sgt i8 [[A:%.*]], [[B:%.*]]
+; CHECK-NEXT: [[SUB_BA:%.*]] = sub nuw i8 [[B]], [[A]]
+; CHECK-NEXT: [[SUB_AB:%.*]] = sub nuw i8 [[A]], [[B]]
+; CHECK-NEXT: [[COND:%.*]] = select i1 [[CMP]], i8 [[SUB_AB]], i8 [[SUB_BA]]
+; CHECK-NEXT: ret i8 [[COND]]
+;
+ %cmp = icmp sgt i8 %a, %b
+ %sub_ba = sub nuw i8 %b, %a
+ %sub_ab = sub nuw i8 %a, %b
+ %cond = select i1 %cmp, i8 %sub_ab, i8 %sub_ba
+ ret i8 %cond
+}
+
+define i8 @abs_
diff _signed_sgt_nuw_extra_use1(i8 %a, i8 %b) {
+; CHECK-LABEL: @abs_
diff _signed_sgt_nuw_extra_use1(
+; CHECK-NEXT: [[CMP:%.*]] = icmp sgt i8 [[A:%.*]], [[B:%.*]]
+; CHECK-NEXT: [[SUB_BA:%.*]] = sub nuw i8 [[B]], [[A]]
+; CHECK-NEXT: call void @extra_use(i8 [[SUB_BA]])
+; CHECK-NEXT: [[SUB_AB:%.*]] = sub nuw i8 [[A]], [[B]]
+; CHECK-NEXT: [[COND:%.*]] = select i1 [[CMP]], i8 [[SUB_AB]], i8 [[SUB_BA]]
+; CHECK-NEXT: ret i8 [[COND]]
+;
+ %cmp = icmp sgt i8 %a, %b
+ %sub_ba = sub nuw i8 %b, %a
+ call void @extra_use(i8 %sub_ba)
+ %sub_ab = sub nuw i8 %a, %b
+ %cond = select i1 %cmp, i8 %sub_ab, i8 %sub_ba
+ ret i8 %cond
+}
+
+define i8 @abs_
diff _signed_sgt_nuw_extra_use2(i8 %a, i8 %b) {
+; CHECK-LABEL: @abs_
diff _signed_sgt_nuw_extra_use2(
+; CHECK-NEXT: [[CMP:%.*]] = icmp sgt i8 [[A:%.*]], [[B:%.*]]
+; CHECK-NEXT: [[SUB_BA:%.*]] = sub nuw i8 [[B]], [[A]]
+; CHECK-NEXT: [[SUB_AB:%.*]] = sub nuw i8 [[A]], [[B]]
+; CHECK-NEXT: call void @extra_use(i8 [[SUB_AB]])
+; CHECK-NEXT: [[COND:%.*]] = select i1 [[CMP]], i8 [[SUB_AB]], i8 [[SUB_BA]]
+; CHECK-NEXT: ret i8 [[COND]]
+;
+ %cmp = icmp sgt i8 %a, %b
+ %sub_ba = sub nuw i8 %b, %a
+ %sub_ab = sub nuw i8 %a, %b
+ call void @extra_use(i8 %sub_ab)
+ %cond = select i1 %cmp, i8 %sub_ab, i8 %sub_ba
+ ret i8 %cond
+}
+
+define i8 @abs_
diff _signed_sgt_nuw_extra_use3(i8 %a, i8 %b) {
+; CHECK-LABEL: @abs_
diff _signed_sgt_nuw_extra_use3(
+; CHECK-NEXT: [[CMP:%.*]] = icmp sgt i8 [[A:%.*]], [[B:%.*]]
+; CHECK-NEXT: [[SUB_BA:%.*]] = sub nuw i8 [[B]], [[A]]
+; CHECK-NEXT: call void @extra_use(i8 [[SUB_BA]])
+; CHECK-NEXT: [[SUB_AB:%.*]] = sub nuw i8 [[A]], [[B]]
+; CHECK-NEXT: call void @extra_use(i8 [[SUB_AB]])
+; CHECK-NEXT: [[COND:%.*]] = select i1 [[CMP]], i8 [[SUB_AB]], i8 [[SUB_BA]]
+; CHECK-NEXT: ret i8 [[COND]]
+;
+ %cmp = icmp sgt i8 %a, %b
+ %sub_ba = sub nuw i8 %b, %a
+ call void @extra_use(i8 %sub_ba)
+ %sub_ab = sub nuw i8 %a, %b
+ call void @extra_use(i8 %sub_ab)
+ %cond = select i1 %cmp, i8 %sub_ab, i8 %sub_ba
+ ret i8 %cond
+}
+
define i32 @abs_
diff _signed_slt_swap_wrong_pred1(i32 %a, i32 %b) {
; CHECK-LABEL: @abs_
diff _signed_slt_swap_wrong_pred1(
; CHECK-NEXT: [[CMP:%.*]] = icmp eq i32 [[A:%.*]], [[B:%.*]]
More information about the llvm-commits
mailing list