Skip to content

Commit 7db345b

Browse files
committed
update check
1 parent ee5f9f4 commit 7db345b

File tree

2 files changed

+17
-20
lines changed

2 files changed

+17
-20
lines changed

llvm/test/Transforms/ConstraintElimination/abs.ll

Lines changed: 15 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,8 @@ define i1 @abs_int_min_is_poison(i32 %arg) {
1616
; CHECK-LABEL: define i1 @abs_int_min_is_poison(
1717
; CHECK-SAME: i32 [[ARG:%.*]]) {
1818
; CHECK-NEXT: [[ABS:%.*]] = tail call i32 @llvm.abs.i32(i32 [[ARG]], i1 true)
19-
; CHECK-NEXT: ret i1 true
19+
; CHECK-NEXT: [[CMP:%.*]] = icmp sge i32 [[ABS]], [[ARG]]
20+
; CHECK-NEXT: ret i1 [[CMP]]
2021
;
2122
%abs = tail call i32 @llvm.abs.i32(i32 %arg, i1 true)
2223
%cmp = icmp sge i32 %abs, %arg
@@ -41,7 +42,8 @@ define i1 @abs_plus_one_min_is_poison(i32 %arg) {
4142
; CHECK-SAME: i32 [[ARG:%.*]]) {
4243
; CHECK-NEXT: [[ABS:%.*]] = tail call i32 @llvm.abs.i32(i32 [[ARG]], i1 true)
4344
; CHECK-NEXT: [[ABS_PLUS_ONE:%.*]] = add nsw i32 [[ABS]], 1
44-
; CHECK-NEXT: ret i1 true
45+
; CHECK-NEXT: [[CMP:%.*]] = icmp sge i32 [[ABS_PLUS_ONE]], [[ARG]]
46+
; CHECK-NEXT: ret i1 [[CMP]]
4547
;
4648
%abs = tail call i32 @llvm.abs.i32(i32 %arg, i1 true)
4749
%abs_plus_one = add nsw i32 %abs, 1
@@ -68,7 +70,8 @@ define i1 @arg_minus_one_strict_less_min_is_poison(i32 %arg) {
6870
; CHECK-SAME: i32 [[ARG:%.*]]) {
6971
; CHECK-NEXT: [[ABS:%.*]] = tail call i32 @llvm.abs.i32(i32 [[ARG]], i1 true)
7072
; CHECK-NEXT: [[ARG_MINUS_ONE:%.*]] = add nsw i32 [[ARG]], -1
71-
; CHECK-NEXT: ret i1 true
73+
; CHECK-NEXT: [[CMP:%.*]] = icmp slt i32 [[ARG_MINUS_ONE]], [[ABS]]
74+
; CHECK-NEXT: ret i1 [[CMP]]
7275
;
7376
%abs = tail call i32 @llvm.abs.i32(i32 %arg, i1 true)
7477
%arg_minus_one = add nsw i32 %arg, -1
@@ -94,7 +97,8 @@ define i1 @arg_minus_one_strict_greater_min_is_poison(i32 %arg) {
9497
; CHECK-SAME: i32 [[ARG:%.*]]) {
9598
; CHECK-NEXT: [[ABS:%.*]] = tail call i32 @llvm.abs.i32(i32 [[ARG]], i1 true)
9699
; CHECK-NEXT: [[ARG_MINUS_ONE:%.*]] = add nsw i32 [[ARG]], -1
97-
; CHECK-NEXT: ret i1 false
100+
; CHECK-NEXT: [[CMP:%.*]] = icmp sgt i32 [[ARG_MINUS_ONE]], [[ABS]]
101+
; CHECK-NEXT: ret i1 [[CMP]]
98102
;
99103
%abs = tail call i32 @llvm.abs.i32(i32 %arg, i1 true)
100104
%arg_minus_one = add nsw i32 %arg, -1
@@ -107,8 +111,7 @@ define i1 @abs_plus_one_unsigned_greater_or_equal_nonnegative_arg_min_is_not_poi
107111
; CHECK-SAME: i32 noundef [[ARG:%.*]]) {
108112
; CHECK-NEXT: [[CMP_ARG_NONNEGATIVE:%.*]] = icmp sge i32 [[ARG]], 0
109113
; CHECK-NEXT: call void @llvm.assume(i1 [[CMP_ARG_NONNEGATIVE]])
110-
; CHECK-NEXT: [[ABS:%.*]] = tail call i32 @llvm.abs.i32(i32 [[ARG]], i1 false)
111-
; CHECK-NEXT: [[ABS_PLUS_ONE:%.*]] = add nuw i32 [[ABS]], 1
114+
; CHECK-NEXT: [[ABS_PLUS_ONE:%.*]] = add nuw i32 [[ARG]], 1
112115
; CHECK-NEXT: ret i1 true
113116
;
114117
%cmp_arg_nonnegative = icmp sge i32 %arg, 0
@@ -124,8 +127,7 @@ define i1 @abs_plus_one_unsigned_greater_or_equal_nonnegative_arg_min_is_poison(
124127
; CHECK-SAME: i32 [[ARG:%.*]]) {
125128
; CHECK-NEXT: [[CMP_ARG_NONNEGATIVE:%.*]] = icmp sge i32 [[ARG]], 0
126129
; CHECK-NEXT: call void @llvm.assume(i1 [[CMP_ARG_NONNEGATIVE]])
127-
; CHECK-NEXT: [[ABS:%.*]] = tail call i32 @llvm.abs.i32(i32 [[ARG]], i1 true)
128-
; CHECK-NEXT: [[ABS_PLUS_ONE:%.*]] = add nuw i32 [[ABS]], 1
130+
; CHECK-NEXT: [[ABS_PLUS_ONE:%.*]] = add nuw i32 [[ARG]], 1
129131
; CHECK-NEXT: ret i1 true
130132
;
131133
%cmp_arg_nonnegative = icmp sge i32 %arg, 0
@@ -152,9 +154,7 @@ define i1 @abs_plus_one_unsigned_greater_or_equal_cannot_be_simplified(i32 nound
152154

153155
define i1 @abs_constant_negative_arg() {
154156
; CHECK-LABEL: define i1 @abs_constant_negative_arg() {
155-
; CHECK-NEXT: [[ABS:%.*]] = tail call i32 @llvm.abs.i32(i32 -3, i1 false)
156-
; CHECK-NEXT: [[CMP:%.*]] = icmp sge i32 [[ABS]], 3
157-
; CHECK-NEXT: ret i1 [[CMP]]
157+
; CHECK-NEXT: ret i1 true
158158
;
159159
%abs = tail call i32 @llvm.abs.i32(i32 -3, i1 false)
160160
%cmp = icmp sge i32 %abs, 3
@@ -163,7 +163,6 @@ define i1 @abs_constant_negative_arg() {
163163

164164
define i1 @abs_constant_positive_arg() {
165165
; CHECK-LABEL: define i1 @abs_constant_positive_arg() {
166-
; CHECK-NEXT: [[ABS:%.*]] = tail call i32 @llvm.abs.i32(i32 3, i1 false)
167166
; CHECK-NEXT: ret i1 true
168167
;
169168
%abs = tail call i32 @llvm.abs.i32(i32 3, i1 false)
@@ -211,7 +210,8 @@ define i1 @abs_is_nonnegative_int_min_is_poison(i32 %arg) {
211210
; CHECK-LABEL: define i1 @abs_is_nonnegative_int_min_is_poison(
212211
; CHECK-SAME: i32 [[ARG:%.*]]) {
213212
; CHECK-NEXT: [[ABS:%.*]] = tail call i32 @llvm.abs.i32(i32 [[ARG]], i1 true)
214-
; CHECK-NEXT: ret i1 true
213+
; CHECK-NEXT: [[CMP:%.*]] = icmp sge i32 [[ABS]], 0
214+
; CHECK-NEXT: ret i1 [[CMP]]
215215
;
216216
%abs = tail call i32 @llvm.abs.i32(i32 %arg, i1 true)
217217
%cmp = icmp sge i32 %abs, 0
@@ -220,7 +220,6 @@ define i1 @abs_is_nonnegative_int_min_is_poison(i32 %arg) {
220220

221221
define i1 @abs_is_nonnegative_constant_arg() {
222222
; CHECK-LABEL: define i1 @abs_is_nonnegative_constant_arg() {
223-
; CHECK-NEXT: [[ABS:%.*]] = tail call i32 @llvm.abs.i32(i32 -3, i1 true)
224223
; CHECK-NEXT: ret i1 true
225224
;
226225
%abs = tail call i32 @llvm.abs.i32(i32 -3, i1 true)
@@ -233,8 +232,7 @@ define i64 @abs_assume_nonnegative(i64 noundef %arg) {
233232
; CHECK-SAME: i64 noundef [[ARG:%.*]]) {
234233
; CHECK-NEXT: [[PRECOND:%.*]] = icmp sge i64 [[ARG]], 0
235234
; CHECK-NEXT: call void @llvm.assume(i1 [[PRECOND]])
236-
; CHECK-NEXT: [[ABS:%.*]] = tail call i64 @llvm.abs.i64(i64 [[ARG]], i1 false)
237-
; CHECK-NEXT: ret i64 [[ABS]]
235+
; CHECK-NEXT: ret i64 [[ARG]]
238236
;
239237
%precond = icmp sge i64 %arg, 0
240238
call void @llvm.assume(i1 %precond)
@@ -247,7 +245,7 @@ define i64 @abs_assume_negative(i64 noundef %arg) {
247245
; CHECK-SAME: i64 noundef [[ARG:%.*]]) {
248246
; CHECK-NEXT: [[PRECOND:%.*]] = icmp slt i64 [[ARG]], 0
249247
; CHECK-NEXT: call void @llvm.assume(i1 [[PRECOND]])
250-
; CHECK-NEXT: [[ABS:%.*]] = tail call i64 @llvm.abs.i64(i64 [[ARG]], i1 false)
248+
; CHECK-NEXT: [[ABS:%.*]] = sub i64 0, [[ARG]]
251249
; CHECK-NEXT: ret i64 [[ABS]]
252250
;
253251
%precond = icmp slt i64 %arg, 0

llvm/test/Transforms/ConstraintElimination/uadd-usub-sat.ll

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ define i64 @usub_sat_when_lhs_ugt_rhs(i64 noundef %a, i64 noundef %b) {
3434
; CHECK-SAME: i64 noundef [[A:%.*]], i64 noundef [[B:%.*]]) {
3535
; CHECK-NEXT: [[PRECOND:%.*]] = icmp ugt i64 [[A]], [[B]]
3636
; CHECK-NEXT: call void @llvm.assume(i1 [[PRECOND]])
37-
; CHECK-NEXT: [[SUB_SAT:%.*]] = call i64 @llvm.usub.sat.i64(i64 [[A]], i64 [[B]])
37+
; CHECK-NEXT: [[SUB_SAT:%.*]] = sub i64 [[A]], [[B]]
3838
; CHECK-NEXT: ret i64 [[SUB_SAT]]
3939
;
4040
%precond = icmp ugt i64 %a, %b
@@ -48,8 +48,7 @@ define i64 @usub_sat_when_lhs_ule_rhs(i64 noundef %a, i64 noundef %b) {
4848
; CHECK-SAME: i64 noundef [[A:%.*]], i64 noundef [[B:%.*]]) {
4949
; CHECK-NEXT: [[PRECOND:%.*]] = icmp ule i64 [[A]], [[B]]
5050
; CHECK-NEXT: call void @llvm.assume(i1 [[PRECOND]])
51-
; CHECK-NEXT: [[SUB_SAT:%.*]] = call i64 @llvm.usub.sat.i64(i64 [[A]], i64 [[B]])
52-
; CHECK-NEXT: ret i64 [[SUB_SAT]]
51+
; CHECK-NEXT: ret i64 0
5352
;
5453
%precond = icmp ule i64 %a, %b
5554
call void @llvm.assume(i1 %precond)

0 commit comments

Comments
 (0)