@@ -149,8 +149,7 @@ define i1 @ctlz_ugt_zero_i32(i32 %x) {
149
149
150
150
define i1 @ctlz_ugt_one_i32 (i32 %x ) {
151
151
; CHECK-LABEL: @ctlz_ugt_one_i32(
152
- ; CHECK-NEXT: [[LZ:%.*]] = tail call i32 @llvm.ctlz.i32(i32 [[X:%.*]], i1 false), !range !0
153
- ; CHECK-NEXT: [[CMP:%.*]] = icmp ugt i32 [[LZ]], 1
152
+ ; CHECK-NEXT: [[CMP:%.*]] = icmp ult i32 [[X:%.*]], 1073741824
154
153
; CHECK-NEXT: ret i1 [[CMP]]
155
154
;
156
155
%lz = tail call i32 @llvm.ctlz.i32 (i32 %x , i1 false )
@@ -160,8 +159,7 @@ define i1 @ctlz_ugt_one_i32(i32 %x) {
160
159
161
160
define i1 @ctlz_ugt_other_i32 (i32 %x ) {
162
161
; CHECK-LABEL: @ctlz_ugt_other_i32(
163
- ; CHECK-NEXT: [[LZ:%.*]] = tail call i32 @llvm.ctlz.i32(i32 [[X:%.*]], i1 false), !range !0
164
- ; CHECK-NEXT: [[CMP:%.*]] = icmp ugt i32 [[LZ]], 16
162
+ ; CHECK-NEXT: [[CMP:%.*]] = icmp ult i32 [[X:%.*]], 32768
165
163
; CHECK-NEXT: ret i1 [[CMP]]
166
164
;
167
165
%lz = tail call i32 @llvm.ctlz.i32 (i32 %x , i1 false )
@@ -173,7 +171,7 @@ define i1 @ctlz_ugt_other_multiuse_i32(i32 %x, i32* %p) {
173
171
; CHECK-LABEL: @ctlz_ugt_other_multiuse_i32(
174
172
; CHECK-NEXT: [[LZ:%.*]] = tail call i32 @llvm.ctlz.i32(i32 [[X:%.*]], i1 false), !range !0
175
173
; CHECK-NEXT: store i32 [[LZ]], i32* [[P:%.*]], align 4
176
- ; CHECK-NEXT: [[CMP:%.*]] = icmp ugt i32 [[LZ ]], 16
174
+ ; CHECK-NEXT: [[CMP:%.*]] = icmp ult i32 [[X ]], 32768
177
175
; CHECK-NEXT: ret i1 [[CMP]]
178
176
;
179
177
%lz = tail call i32 @llvm.ctlz.i32 (i32 %x , i1 false )
@@ -184,8 +182,7 @@ define i1 @ctlz_ugt_other_multiuse_i32(i32 %x, i32* %p) {
184
182
185
183
define i1 @ctlz_ugt_bw_minus_one_i32 (i32 %x ) {
186
184
; CHECK-LABEL: @ctlz_ugt_bw_minus_one_i32(
187
- ; CHECK-NEXT: [[LZ:%.*]] = tail call i32 @llvm.ctlz.i32(i32 [[X:%.*]], i1 false), !range !0
188
- ; CHECK-NEXT: [[CMP:%.*]] = icmp ugt i32 [[LZ]], 31
185
+ ; CHECK-NEXT: [[CMP:%.*]] = icmp eq i32 [[X:%.*]], 0
189
186
; CHECK-NEXT: ret i1 [[CMP]]
190
187
;
191
188
%lz = tail call i32 @llvm.ctlz.i32 (i32 %x , i1 false )
@@ -205,8 +202,7 @@ define <2 x i1> @ctlz_ult_one_v2i32(<2 x i32> %x) {
205
202
206
203
define <2 x i1 > @ctlz_ult_other_v2i32 (<2 x i32 > %x ) {
207
204
; CHECK-LABEL: @ctlz_ult_other_v2i32(
208
- ; CHECK-NEXT: [[LZ:%.*]] = tail call <2 x i32> @llvm.ctlz.v2i32(<2 x i32> [[X:%.*]], i1 false)
209
- ; CHECK-NEXT: [[CMP:%.*]] = icmp ult <2 x i32> [[LZ]], <i32 16, i32 16>
205
+ ; CHECK-NEXT: [[CMP:%.*]] = icmp ugt <2 x i32> [[X:%.*]], <i32 65535, i32 65535>
210
206
; CHECK-NEXT: ret <2 x i1> [[CMP]]
211
207
;
212
208
%lz = tail call <2 x i32 > @llvm.ctlz.v2i32 (<2 x i32 > %x , i1 false )
@@ -218,7 +214,7 @@ define <2 x i1> @ctlz_ult_other_multiuse_v2i32(<2 x i32> %x, <2 x i32>* %p) {
218
214
; CHECK-LABEL: @ctlz_ult_other_multiuse_v2i32(
219
215
; CHECK-NEXT: [[LZ:%.*]] = tail call <2 x i32> @llvm.ctlz.v2i32(<2 x i32> [[X:%.*]], i1 false)
220
216
; CHECK-NEXT: store <2 x i32> [[LZ]], <2 x i32>* [[P:%.*]], align 8
221
- ; CHECK-NEXT: [[CMP:%.*]] = icmp ult <2 x i32> [[LZ ]], <i32 16 , i32 16 >
217
+ ; CHECK-NEXT: [[CMP:%.*]] = icmp ugt <2 x i32> [[X ]], <i32 65535 , i32 65535 >
222
218
; CHECK-NEXT: ret <2 x i1> [[CMP]]
223
219
;
224
220
%lz = tail call <2 x i32 > @llvm.ctlz.v2i32 (<2 x i32 > %x , i1 false )
@@ -229,8 +225,7 @@ define <2 x i1> @ctlz_ult_other_multiuse_v2i32(<2 x i32> %x, <2 x i32>* %p) {
229
225
230
226
define <2 x i1 > @ctlz_ult_bw_minus_one_v2i32 (<2 x i32 > %x ) {
231
227
; CHECK-LABEL: @ctlz_ult_bw_minus_one_v2i32(
232
- ; CHECK-NEXT: [[LZ:%.*]] = tail call <2 x i32> @llvm.ctlz.v2i32(<2 x i32> [[X:%.*]], i1 false)
233
- ; CHECK-NEXT: [[CMP:%.*]] = icmp ult <2 x i32> [[LZ]], <i32 31, i32 31>
228
+ ; CHECK-NEXT: [[CMP:%.*]] = icmp ugt <2 x i32> [[X:%.*]], <i32 1, i32 1>
234
229
; CHECK-NEXT: ret <2 x i1> [[CMP]]
235
230
;
236
231
%lz = tail call <2 x i32 > @llvm.ctlz.v2i32 (<2 x i32 > %x , i1 false )
@@ -240,8 +235,7 @@ define <2 x i1> @ctlz_ult_bw_minus_one_v2i32(<2 x i32> %x) {
240
235
241
236
define <2 x i1 > @ctlz_ult_bitwidth_v2i32 (<2 x i32 > %x ) {
242
237
; CHECK-LABEL: @ctlz_ult_bitwidth_v2i32(
243
- ; CHECK-NEXT: [[LZ:%.*]] = tail call <2 x i32> @llvm.ctlz.v2i32(<2 x i32> [[X:%.*]], i1 false)
244
- ; CHECK-NEXT: [[CMP:%.*]] = icmp ult <2 x i32> [[LZ]], <i32 32, i32 32>
238
+ ; CHECK-NEXT: [[CMP:%.*]] = icmp ne <2 x i32> [[X:%.*]], zeroinitializer
245
239
; CHECK-NEXT: ret <2 x i1> [[CMP]]
246
240
;
247
241
%lz = tail call <2 x i32 > @llvm.ctlz.v2i32 (<2 x i32 > %x , i1 false )
@@ -359,8 +353,8 @@ define i1 @cttz_ugt_zero_i33(i33 %x) {
359
353
360
354
define i1 @cttz_ugt_one_i33 (i33 %x ) {
361
355
; CHECK-LABEL: @cttz_ugt_one_i33(
362
- ; CHECK-NEXT: [[TZ :%.*]] = tail call i33 @llvm.cttz.i33(i33 [[X:%.*]], i1 false), !range !1
363
- ; CHECK-NEXT: [[CMP:%.*]] = icmp ugt i33 [[TZ ]], 1
356
+ ; CHECK-NEXT: [[TMP1 :%.*]] = and i33 [[X:%.*]], 3
357
+ ; CHECK-NEXT: [[CMP:%.*]] = icmp eq i33 [[TMP1 ]], 0
364
358
; CHECK-NEXT: ret i1 [[CMP]]
365
359
;
366
360
%tz = tail call i33 @llvm.cttz.i33 (i33 %x , i1 false )
@@ -370,8 +364,8 @@ define i1 @cttz_ugt_one_i33(i33 %x) {
370
364
371
365
define i1 @cttz_ugt_other_i33 (i33 %x ) {
372
366
; CHECK-LABEL: @cttz_ugt_other_i33(
373
- ; CHECK-NEXT: [[TZ :%.*]] = tail call i33 @llvm.cttz.i33(i33 [[X:%.*]], i1 false), !range !1
374
- ; CHECK-NEXT: [[CMP:%.*]] = icmp ugt i33 [[TZ ]], 16
367
+ ; CHECK-NEXT: [[TMP1 :%.*]] = and i33 [[X:%.*]], 131071
368
+ ; CHECK-NEXT: [[CMP:%.*]] = icmp eq i33 [[TMP1 ]], 0
375
369
; CHECK-NEXT: ret i1 [[CMP]]
376
370
;
377
371
%tz = tail call i33 @llvm.cttz.i33 (i33 %x , i1 false )
@@ -394,8 +388,7 @@ define i1 @cttz_ugt_other_multiuse_i33(i33 %x, i33* %p) {
394
388
395
389
define i1 @cttz_ugt_bw_minus_one_i33 (i33 %x ) {
396
390
; CHECK-LABEL: @cttz_ugt_bw_minus_one_i33(
397
- ; CHECK-NEXT: [[TZ:%.*]] = tail call i33 @llvm.cttz.i33(i33 [[X:%.*]], i1 false), !range !1
398
- ; CHECK-NEXT: [[CMP:%.*]] = icmp ugt i33 [[TZ]], 32
391
+ ; CHECK-NEXT: [[CMP:%.*]] = icmp eq i33 [[X:%.*]], 0
399
392
; CHECK-NEXT: ret i1 [[CMP]]
400
393
;
401
394
%tz = tail call i33 @llvm.cttz.i33 (i33 %x , i1 false )
@@ -415,8 +408,8 @@ define <2 x i1> @cttz_ult_one_v2i32(<2 x i32> %x) {
415
408
416
409
define <2 x i1 > @cttz_ult_other_v2i32 (<2 x i32 > %x ) {
417
410
; CHECK-LABEL: @cttz_ult_other_v2i32(
418
- ; CHECK-NEXT: [[TZ :%.*]] = tail call <2 x i32> @llvm.cttz.v2i32(<2 x i32> [[X:%.*]], i1 false)
419
- ; CHECK-NEXT: [[CMP:%.*]] = icmp ult <2 x i32> [[TZ ]], <i32 16, i32 16>
411
+ ; CHECK-NEXT: [[TMP1 :%.*]] = and <2 x i32> [[X:%.*]], <i32 65535, i32 65535>
412
+ ; CHECK-NEXT: [[CMP:%.*]] = icmp ne <2 x i32> [[TMP1 ]], zeroinitializer
420
413
; CHECK-NEXT: ret <2 x i1> [[CMP]]
421
414
;
422
415
%tz = tail call <2 x i32 > @llvm.cttz.v2i32 (<2 x i32 > %x , i1 false )
@@ -439,8 +432,8 @@ define <2 x i1> @cttz_ult_other_multiuse_v2i32(<2 x i32> %x, <2 x i32>* %p) {
439
432
440
433
define <2 x i1 > @cttz_ult_bw_minus_one_v2i32 (<2 x i32 > %x ) {
441
434
; CHECK-LABEL: @cttz_ult_bw_minus_one_v2i32(
442
- ; CHECK-NEXT: [[TZ :%.*]] = tail call <2 x i32> @llvm.cttz.v2i32(<2 x i32> [[X:%.*]], i1 false)
443
- ; CHECK-NEXT: [[CMP:%.*]] = icmp ult <2 x i32> [[TZ ]], <i32 31, i32 31>
435
+ ; CHECK-NEXT: [[TMP1 :%.*]] = and <2 x i32> [[X:%.*]], <i32 2147483647, i32 2147483647>
436
+ ; CHECK-NEXT: [[CMP:%.*]] = icmp ne <2 x i32> [[TMP1 ]], zeroinitializer
444
437
; CHECK-NEXT: ret <2 x i1> [[CMP]]
445
438
;
446
439
%tz = tail call <2 x i32 > @llvm.cttz.v2i32 (<2 x i32 > %x , i1 false )
@@ -450,8 +443,7 @@ define <2 x i1> @cttz_ult_bw_minus_one_v2i32(<2 x i32> %x) {
450
443
451
444
define <2 x i1 > @cttz_ult_bitwidth_v2i32 (<2 x i32 > %x ) {
452
445
; CHECK-LABEL: @cttz_ult_bitwidth_v2i32(
453
- ; CHECK-NEXT: [[TZ:%.*]] = tail call <2 x i32> @llvm.cttz.v2i32(<2 x i32> [[X:%.*]], i1 false)
454
- ; CHECK-NEXT: [[CMP:%.*]] = icmp ult <2 x i32> [[TZ]], <i32 32, i32 32>
446
+ ; CHECK-NEXT: [[CMP:%.*]] = icmp ne <2 x i32> [[X:%.*]], zeroinitializer
455
447
; CHECK-NEXT: ret <2 x i1> [[CMP]]
456
448
;
457
449
%tz = tail call <2 x i32 > @llvm.cttz.v2i32 (<2 x i32 > %x , i1 false )
0 commit comments