@@ -67,8 +67,7 @@ define i1 @abs_plus_one_unsigned_greater_or_equal_nonnegative_arg(i32 %arg) {
67
67
; CHECK-SAME: i32 [[ARG:%.*]]) {
68
68
; CHECK-NEXT: [[CMP_ARG_NONNEGATIVE:%.*]] = icmp sge i32 [[ARG]], 0
69
69
; CHECK-NEXT: call void @llvm.assume(i1 [[CMP_ARG_NONNEGATIVE]])
70
- ; CHECK-NEXT: [[ABS:%.*]] = tail call i32 @llvm.abs.i32(i32 [[ARG]], i1 true)
71
- ; CHECK-NEXT: [[ABS_PLUS_ONE:%.*]] = add nuw i32 [[ABS]], 1
70
+ ; CHECK-NEXT: [[ABS_PLUS_ONE:%.*]] = add nuw i32 [[ARG]], 1
72
71
; CHECK-NEXT: ret i1 true
73
72
;
74
73
%cmp_arg_nonnegative = icmp sge i32 %arg , 0
@@ -95,9 +94,7 @@ define i1 @abs_plus_one_unsigned_greater_or_equal_cannot_be_simplified(i32 %arg)
95
94
96
95
define i1 @abs_constant_negative_arg () {
97
96
; CHECK-LABEL: define i1 @abs_constant_negative_arg() {
98
- ; CHECK-NEXT: [[ABS:%.*]] = tail call i32 @llvm.abs.i32(i32 -3, i1 false)
99
- ; CHECK-NEXT: [[CMP:%.*]] = icmp sge i32 [[ABS]], 3
100
- ; CHECK-NEXT: ret i1 [[CMP]]
97
+ ; CHECK-NEXT: ret i1 true
101
98
;
102
99
%abs = tail call i32 @llvm.abs.i32 (i32 -3 , i1 false )
103
100
%cmp = icmp sge i32 %abs , 3
@@ -106,7 +103,6 @@ define i1 @abs_constant_negative_arg() {
106
103
107
104
define i1 @abs_constant_positive_arg () {
108
105
; CHECK-LABEL: define i1 @abs_constant_positive_arg() {
109
- ; CHECK-NEXT: [[ABS:%.*]] = tail call i32 @llvm.abs.i32(i32 3, i1 false)
110
106
; CHECK-NEXT: ret i1 true
111
107
;
112
108
%abs = tail call i32 @llvm.abs.i32 (i32 3 , i1 false )
@@ -151,7 +147,6 @@ define i1 @abs_is_nonnegative_int_min_is_poison(i32 %arg) {
151
147
152
148
define i1 @abs_is_nonnegative_constant_arg () {
153
149
; CHECK-LABEL: define i1 @abs_is_nonnegative_constant_arg() {
154
- ; CHECK-NEXT: [[ABS:%.*]] = tail call i32 @llvm.abs.i32(i32 -3, i1 true)
155
150
; CHECK-NEXT: ret i1 true
156
151
;
157
152
%abs = tail call i32 @llvm.abs.i32 (i32 -3 , i1 true )
@@ -164,8 +159,7 @@ define i64 @abs_assume_nonnegative(i64 %arg) {
164
159
; CHECK-SAME: i64 [[ARG:%.*]]) {
165
160
; CHECK-NEXT: [[PRECOND:%.*]] = icmp sge i64 [[ARG]], 0
166
161
; CHECK-NEXT: call void @llvm.assume(i1 [[PRECOND]])
167
- ; CHECK-NEXT: [[ABS:%.*]] = tail call i64 @llvm.abs.i64(i64 [[ARG]], i1 false)
168
- ; CHECK-NEXT: ret i64 [[ABS]]
162
+ ; CHECK-NEXT: ret i64 [[ARG]]
169
163
;
170
164
%precond = icmp sge i64 %arg , 0
171
165
call void @llvm.assume (i1 %precond )
@@ -178,7 +172,7 @@ define i64 @abs_assume_negative(i64 %arg) {
178
172
; CHECK-SAME: i64 [[ARG:%.*]]) {
179
173
; CHECK-NEXT: [[PRECOND:%.*]] = icmp slt i64 [[ARG]], 0
180
174
; CHECK-NEXT: call void @llvm.assume(i1 [[PRECOND]])
181
- ; CHECK-NEXT: [[ABS:%.*]] = tail call i64 @llvm.abs.i64(i64 [[ARG]], i1 false)
175
+ ; CHECK-NEXT: [[ABS:%.*]] = sub i64 0, [[ARG]]
182
176
; CHECK-NEXT: ret i64 [[ABS]]
183
177
;
184
178
%precond = icmp slt i64 %arg , 0
0 commit comments