@@ -9,9 +9,7 @@ define i1 @icmp_trunc_x_trunc_y(i32 %x, i32 %y) {
9
9
; CHECK-NEXT: [[Y_LB_ONLY:%.*]] = icmp ult i32 [[Y:%.*]], 65536
10
10
; CHECK-NEXT: call void @llvm.assume(i1 [[X_LB_ONLY]])
11
11
; CHECK-NEXT: call void @llvm.assume(i1 [[Y_LB_ONLY]])
12
- ; CHECK-NEXT: [[X16:%.*]] = trunc i32 [[X]] to i16
13
- ; CHECK-NEXT: [[Y16:%.*]] = trunc i32 [[Y]] to i16
14
- ; CHECK-NEXT: [[R:%.*]] = icmp eq i16 [[X16]], [[Y16]]
12
+ ; CHECK-NEXT: [[R:%.*]] = icmp eq i32 [[X]], [[Y]]
15
13
; CHECK-NEXT: ret i1 [[R]]
16
14
;
17
15
%x_lb_only = icmp ult i32 %x , 65536
@@ -51,9 +49,8 @@ define i1 @icmp_trunc_x_trunc_y_illegal_trunc_to_legal_anyways(i123 %x, i32 %y)
51
49
; CHECK-NEXT: [[Y_LB_ONLY:%.*]] = icmp ult i32 [[Y:%.*]], 65536
52
50
; CHECK-NEXT: call void @llvm.assume(i1 [[X_LB_ONLY]])
53
51
; CHECK-NEXT: call void @llvm.assume(i1 [[Y_LB_ONLY]])
54
- ; CHECK-NEXT: [[X16:%.*]] = trunc i123 [[X]] to i16
55
- ; CHECK-NEXT: [[Y16:%.*]] = trunc i32 [[Y]] to i16
56
- ; CHECK-NEXT: [[R:%.*]] = icmp eq i16 [[X16]], [[Y16]]
52
+ ; CHECK-NEXT: [[TMP1:%.*]] = trunc i123 [[X]] to i32
53
+ ; CHECK-NEXT: [[R:%.*]] = icmp eq i32 [[TMP1]], [[Y]]
57
54
; CHECK-NEXT: ret i1 [[R]]
58
55
;
59
56
%x_lb_only = icmp ult i123 %x , 65536
@@ -72,9 +69,8 @@ define i1 @icmp_trunc_x_trunc_y_2_illegal_anyways(i33 %x, i63 %y) {
72
69
; CHECK-NEXT: [[Y_LB_ONLY:%.*]] = icmp ult i63 [[Y:%.*]], 512
73
70
; CHECK-NEXT: call void @llvm.assume(i1 [[X_LB_ONLY]])
74
71
; CHECK-NEXT: call void @llvm.assume(i1 [[Y_LB_ONLY]])
75
- ; CHECK-NEXT: [[X16:%.*]] = trunc i33 [[X]] to i9
76
- ; CHECK-NEXT: [[Y16:%.*]] = trunc i63 [[Y]] to i9
77
- ; CHECK-NEXT: [[R:%.*]] = icmp ult i9 [[Y16]], [[X16]]
72
+ ; CHECK-NEXT: [[TMP1:%.*]] = zext nneg i33 [[X]] to i63
73
+ ; CHECK-NEXT: [[R:%.*]] = icmp ugt i63 [[TMP1]], [[Y]]
78
74
; CHECK-NEXT: ret i1 [[R]]
79
75
;
80
76
%x_lb_only = icmp ult i33 %x , 512
@@ -93,9 +89,8 @@ define i1 @icmp_trunc_x_trunc_y_3(i64 %x, i32 %y) {
93
89
; CHECK-NEXT: [[Y_LB_ONLY:%.*]] = icmp ult i32 [[Y:%.*]], 256
94
90
; CHECK-NEXT: call void @llvm.assume(i1 [[X_LB_ONLY]])
95
91
; CHECK-NEXT: call void @llvm.assume(i1 [[Y_LB_ONLY]])
96
- ; CHECK-NEXT: [[XI8:%.*]] = trunc i64 [[X]] to i8
97
- ; CHECK-NEXT: [[YI8:%.*]] = trunc i32 [[Y]] to i8
98
- ; CHECK-NEXT: [[R:%.*]] = icmp ule i8 [[YI8]], [[XI8]]
92
+ ; CHECK-NEXT: [[TMP1:%.*]] = trunc i64 [[X]] to i32
93
+ ; CHECK-NEXT: [[R:%.*]] = icmp uge i32 [[TMP1]], [[Y]]
99
94
; CHECK-NEXT: ret i1 [[R]]
100
95
;
101
96
%x_lb_only = icmp ult i64 %x , 123
@@ -156,9 +151,8 @@ define i1 @icmp_trunc_x_trunc_y_swap0(i33 %x, i32 %y) {
156
151
; CHECK-NEXT: [[Y_LB_ONLY:%.*]] = icmp ult i32 [[Y:%.*]], 65536
157
152
; CHECK-NEXT: call void @llvm.assume(i1 [[X_LB_ONLY]])
158
153
; CHECK-NEXT: call void @llvm.assume(i1 [[Y_LB_ONLY]])
159
- ; CHECK-NEXT: [[X16:%.*]] = trunc i33 [[X]] to i16
160
- ; CHECK-NEXT: [[Y16:%.*]] = trunc i32 [[Y]] to i16
161
- ; CHECK-NEXT: [[R:%.*]] = icmp ule i16 [[X16]], [[Y16]]
154
+ ; CHECK-NEXT: [[TMP1:%.*]] = trunc i33 [[X]] to i32
155
+ ; CHECK-NEXT: [[R:%.*]] = icmp ule i32 [[TMP1]], [[Y]]
162
156
; CHECK-NEXT: ret i1 [[R]]
163
157
;
164
158
%x_lb_only = icmp ult i33 %x , 65536
@@ -177,9 +171,8 @@ define i1 @icmp_trunc_x_trunc_y_swap1(i33 %x, i32 %y) {
177
171
; CHECK-NEXT: [[Y_LB_ONLY:%.*]] = icmp ult i32 [[Y:%.*]], 65536
178
172
; CHECK-NEXT: call void @llvm.assume(i1 [[X_LB_ONLY]])
179
173
; CHECK-NEXT: call void @llvm.assume(i1 [[Y_LB_ONLY]])
180
- ; CHECK-NEXT: [[X16:%.*]] = trunc i33 [[X]] to i16
181
- ; CHECK-NEXT: [[Y16:%.*]] = trunc i32 [[Y]] to i16
182
- ; CHECK-NEXT: [[R:%.*]] = icmp ule i16 [[Y16]], [[X16]]
174
+ ; CHECK-NEXT: [[TMP1:%.*]] = trunc i33 [[X]] to i32
175
+ ; CHECK-NEXT: [[R:%.*]] = icmp uge i32 [[TMP1]], [[Y]]
183
176
; CHECK-NEXT: ret i1 [[R]]
184
177
;
185
178
%x_lb_only = icmp ult i33 %x , 65536
@@ -196,9 +189,8 @@ define i1 @icmp_trunc_x_zext_y(i32 %x, i8 %y) {
196
189
; CHECK-LABEL: @icmp_trunc_x_zext_y(
197
190
; CHECK-NEXT: [[X_LB_ONLY:%.*]] = icmp ult i32 [[X:%.*]], 65536
198
191
; CHECK-NEXT: call void @llvm.assume(i1 [[X_LB_ONLY]])
199
- ; CHECK-NEXT: [[X16:%.*]] = trunc i32 [[X]] to i16
200
- ; CHECK-NEXT: [[Y16:%.*]] = zext i8 [[Y:%.*]] to i16
201
- ; CHECK-NEXT: [[R:%.*]] = icmp ugt i16 [[X16]], [[Y16]]
192
+ ; CHECK-NEXT: [[TMP1:%.*]] = zext i8 [[Y:%.*]] to i32
193
+ ; CHECK-NEXT: [[R:%.*]] = icmp ult i32 [[TMP1]], [[X]]
202
194
; CHECK-NEXT: ret i1 [[R]]
203
195
;
204
196
%x_lb_only = icmp ult i32 %x , 65536
@@ -213,9 +205,8 @@ define i1 @icmp_trunc_x_zext_y_2(i32 %x, i8 %y) {
213
205
; CHECK-LABEL: @icmp_trunc_x_zext_y_2(
214
206
; CHECK-NEXT: [[X_LB_ONLY:%.*]] = icmp ult i32 [[X:%.*]], 65536
215
207
; CHECK-NEXT: call void @llvm.assume(i1 [[X_LB_ONLY]])
216
- ; CHECK-NEXT: [[X16:%.*]] = trunc i32 [[X]] to i16
217
- ; CHECK-NEXT: [[Y16:%.*]] = zext i8 [[Y:%.*]] to i16
218
- ; CHECK-NEXT: [[R:%.*]] = icmp uge i16 [[Y16]], [[X16]]
208
+ ; CHECK-NEXT: [[TMP1:%.*]] = zext i8 [[Y:%.*]] to i32
209
+ ; CHECK-NEXT: [[R:%.*]] = icmp uge i32 [[TMP1]], [[X]]
219
210
; CHECK-NEXT: ret i1 [[R]]
220
211
;
221
212
%x_lb_only = icmp ult i32 %x , 65536
@@ -230,9 +221,8 @@ define i1 @icmp_trunc_x_zext_y_3(i6 %x, i32 %y) {
230
221
; CHECK-LABEL: @icmp_trunc_x_zext_y_3(
231
222
; CHECK-NEXT: [[Y_LB_ONLY:%.*]] = icmp ult i32 [[Y:%.*]], 65536
232
223
; CHECK-NEXT: call void @llvm.assume(i1 [[Y_LB_ONLY]])
233
- ; CHECK-NEXT: [[X16:%.*]] = zext i6 [[X:%.*]] to i16
234
- ; CHECK-NEXT: [[Y16:%.*]] = trunc i32 [[Y]] to i16
235
- ; CHECK-NEXT: [[R:%.*]] = icmp ne i16 [[Y16]], [[X16]]
224
+ ; CHECK-NEXT: [[TMP1:%.*]] = zext i6 [[X:%.*]] to i32
225
+ ; CHECK-NEXT: [[R:%.*]] = icmp ne i32 [[TMP1]], [[Y]]
236
226
; CHECK-NEXT: ret i1 [[R]]
237
227
;
238
228
%y_lb_only = icmp ult i32 %y , 65536
0 commit comments