@@ -5,7 +5,8 @@ define i1 @abs_int_min_is_not_poison(i32 %arg) {
5
5
; CHECK-LABEL: define i1 @abs_int_min_is_not_poison(
6
6
; CHECK-SAME: i32 [[ARG:%.*]]) {
7
7
; CHECK-NEXT: [[ABS:%.*]] = tail call i32 @llvm.abs.i32(i32 [[ARG]], i1 false)
8
- ; CHECK-NEXT: ret i1 true
8
+ ; CHECK-NEXT: [[CMP:%.*]] = icmp sge i32 [[ABS]], [[ARG]]
9
+ ; CHECK-NEXT: ret i1 [[CMP]]
9
10
;
10
11
%abs = tail call i32 @llvm.abs.i32 (i32 %arg , i1 false )
11
12
%cmp = icmp sge i32 %abs , %arg
@@ -16,7 +17,8 @@ define i1 @abs_int_min_is_poison(i32 %arg) {
16
17
; CHECK-LABEL: define i1 @abs_int_min_is_poison(
17
18
; CHECK-SAME: i32 [[ARG:%.*]]) {
18
19
; CHECK-NEXT: [[ABS:%.*]] = tail call i32 @llvm.abs.i32(i32 [[ARG]], i1 true)
19
- ; CHECK-NEXT: ret i1 true
20
+ ; CHECK-NEXT: [[CMP:%.*]] = icmp sge i32 [[ABS]], [[ARG]]
21
+ ; CHECK-NEXT: ret i1 [[CMP]]
20
22
;
21
23
%abs = tail call i32 @llvm.abs.i32 (i32 %arg , i1 true )
22
24
%cmp = icmp sge i32 %abs , %arg
@@ -28,7 +30,8 @@ define i1 @abs_plus_one(i32 %arg) {
28
30
; CHECK-SAME: i32 [[ARG:%.*]]) {
29
31
; CHECK-NEXT: [[ABS:%.*]] = tail call i32 @llvm.abs.i32(i32 [[ARG]], i1 true)
30
32
; CHECK-NEXT: [[ABS_PLUS_ONE:%.*]] = add nsw i32 [[ABS]], 1
31
- ; CHECK-NEXT: ret i1 true
33
+ ; CHECK-NEXT: [[CMP:%.*]] = icmp sge i32 [[ABS_PLUS_ONE]], [[ARG]]
34
+ ; CHECK-NEXT: ret i1 [[CMP]]
32
35
;
33
36
%abs = tail call i32 @llvm.abs.i32 (i32 %arg , i1 true )
34
37
%abs_plus_one = add nsw i32 %abs , 1
@@ -41,7 +44,8 @@ define i1 @arg_minus_one_strict_less(i32 %arg) {
41
44
; CHECK-SAME: i32 [[ARG:%.*]]) {
42
45
; CHECK-NEXT: [[ABS:%.*]] = tail call i32 @llvm.abs.i32(i32 [[ARG]], i1 true)
43
46
; CHECK-NEXT: [[ARG_MINUS_ONE:%.*]] = add nsw i32 [[ARG]], -1
44
- ; CHECK-NEXT: ret i1 true
47
+ ; CHECK-NEXT: [[CMP:%.*]] = icmp slt i32 [[ARG_MINUS_ONE]], [[ABS]]
48
+ ; CHECK-NEXT: ret i1 [[CMP]]
45
49
;
46
50
%abs = tail call i32 @llvm.abs.i32 (i32 %arg , i1 true )
47
51
%arg_minus_one = add nsw i32 %arg , -1
@@ -54,7 +58,8 @@ define i1 @arg_minus_one_strict_greater(i32 %arg) {
54
58
; CHECK-SAME: i32 [[ARG:%.*]]) {
55
59
; CHECK-NEXT: [[ABS:%.*]] = tail call i32 @llvm.abs.i32(i32 [[ARG]], i1 true)
56
60
; CHECK-NEXT: [[ARG_MINUS_ONE:%.*]] = add nsw i32 [[ARG]], -1
57
- ; CHECK-NEXT: ret i1 false
61
+ ; CHECK-NEXT: [[CMP:%.*]] = icmp sgt i32 [[ARG_MINUS_ONE]], [[ABS]]
62
+ ; CHECK-NEXT: ret i1 [[CMP]]
58
63
;
59
64
%abs = tail call i32 @llvm.abs.i32 (i32 %arg , i1 true )
60
65
%arg_minus_one = add nsw i32 %arg , -1
@@ -138,7 +143,8 @@ define i1 @abs_is_nonnegative_int_min_is_poison(i32 %arg) {
138
143
; CHECK-LABEL: define i1 @abs_is_nonnegative_int_min_is_poison(
139
144
; CHECK-SAME: i32 [[ARG:%.*]]) {
140
145
; CHECK-NEXT: [[ABS:%.*]] = tail call i32 @llvm.abs.i32(i32 [[ARG]], i1 true)
141
- ; CHECK-NEXT: ret i1 true
146
+ ; CHECK-NEXT: [[CMP:%.*]] = icmp sge i32 [[ABS]], 0
147
+ ; CHECK-NEXT: ret i1 [[CMP]]
142
148
;
143
149
%abs = tail call i32 @llvm.abs.i32 (i32 %arg , i1 true )
144
150
%cmp = icmp sge i32 %abs , 0
0 commit comments