@@ -271,9 +271,7 @@ define i1 @icmp_trunc_x_zext_y_fail_multiuse(i32 %x, i8 %y) {
271
271
272
272
define i1 @trunc_unsigned_nuw (i16 %x , i16 %y ) {
273
273
; CHECK-LABEL: @trunc_unsigned_nuw(
274
- ; CHECK-NEXT: [[XT:%.*]] = trunc nuw i16 [[X:%.*]] to i8
275
- ; CHECK-NEXT: [[YT:%.*]] = trunc nuw i16 [[Y:%.*]] to i8
276
- ; CHECK-NEXT: [[C:%.*]] = icmp ult i8 [[XT]], [[YT]]
274
+ ; CHECK-NEXT: [[C:%.*]] = icmp ult i16 [[X:%.*]], [[Y:%.*]]
277
275
; CHECK-NEXT: ret i1 [[C]]
278
276
;
279
277
%xt = trunc nuw i16 %x to i8
@@ -284,9 +282,7 @@ define i1 @trunc_unsigned_nuw(i16 %x, i16 %y) {
284
282
285
283
define i1 @trunc_unsigned_nsw (i16 %x , i16 %y ) {
286
284
; CHECK-LABEL: @trunc_unsigned_nsw(
287
- ; CHECK-NEXT: [[XT:%.*]] = trunc nsw i16 [[X:%.*]] to i8
288
- ; CHECK-NEXT: [[YT:%.*]] = trunc nsw i16 [[Y:%.*]] to i8
289
- ; CHECK-NEXT: [[C:%.*]] = icmp ult i8 [[XT]], [[YT]]
285
+ ; CHECK-NEXT: [[C:%.*]] = icmp ult i16 [[X:%.*]], [[Y:%.*]]
290
286
; CHECK-NEXT: ret i1 [[C]]
291
287
;
292
288
%xt = trunc nsw i16 %x to i8
@@ -297,9 +293,7 @@ define i1 @trunc_unsigned_nsw(i16 %x, i16 %y) {
297
293
298
294
define i1 @trunc_unsigned_both (i16 %x , i16 %y ) {
299
295
; CHECK-LABEL: @trunc_unsigned_both(
300
- ; CHECK-NEXT: [[XT:%.*]] = trunc nuw nsw i16 [[X:%.*]] to i8
301
- ; CHECK-NEXT: [[YT:%.*]] = trunc nuw nsw i16 [[Y:%.*]] to i8
302
- ; CHECK-NEXT: [[C:%.*]] = icmp ult i8 [[XT]], [[YT]]
296
+ ; CHECK-NEXT: [[C:%.*]] = icmp ult i16 [[X:%.*]], [[Y:%.*]]
303
297
; CHECK-NEXT: ret i1 [[C]]
304
298
;
305
299
%xt = trunc nuw nsw i16 %x to i8
@@ -336,9 +330,7 @@ define i1 @trunc_signed_nuw(i16 %x, i16 %y) {
336
330
337
331
define i1 @trunc_signed_nsw (i16 %x , i16 %y ) {
338
332
; CHECK-LABEL: @trunc_signed_nsw(
339
- ; CHECK-NEXT: [[XT:%.*]] = trunc nsw i16 [[X:%.*]] to i8
340
- ; CHECK-NEXT: [[YT:%.*]] = trunc nsw i16 [[Y:%.*]] to i8
341
- ; CHECK-NEXT: [[C:%.*]] = icmp slt i8 [[XT]], [[YT]]
333
+ ; CHECK-NEXT: [[C:%.*]] = icmp slt i16 [[X:%.*]], [[Y:%.*]]
342
334
; CHECK-NEXT: ret i1 [[C]]
343
335
;
344
336
%xt = trunc nsw i16 %x to i8
@@ -349,9 +341,7 @@ define i1 @trunc_signed_nsw(i16 %x, i16 %y) {
349
341
350
342
define i1 @trunc_signed_both (i16 %x , i16 %y ) {
351
343
; CHECK-LABEL: @trunc_signed_both(
352
- ; CHECK-NEXT: [[XT:%.*]] = trunc nuw nsw i16 [[X:%.*]] to i8
353
- ; CHECK-NEXT: [[YT:%.*]] = trunc nuw nsw i16 [[Y:%.*]] to i8
354
- ; CHECK-NEXT: [[C:%.*]] = icmp slt i8 [[XT]], [[YT]]
344
+ ; CHECK-NEXT: [[C:%.*]] = icmp slt i16 [[X:%.*]], [[Y:%.*]]
355
345
; CHECK-NEXT: ret i1 [[C]]
356
346
;
357
347
%xt = trunc nuw nsw i16 %x to i8
@@ -375,9 +365,7 @@ define i1 @trunc_signed_either(i16 %x, i16 %y) {
375
365
376
366
define i1 @trunc_equality_nuw (i16 %x , i16 %y ) {
377
367
; CHECK-LABEL: @trunc_equality_nuw(
378
- ; CHECK-NEXT: [[XT:%.*]] = trunc nuw i16 [[X:%.*]] to i8
379
- ; CHECK-NEXT: [[YT:%.*]] = trunc nuw i16 [[Y:%.*]] to i8
380
- ; CHECK-NEXT: [[C:%.*]] = icmp eq i8 [[XT]], [[YT]]
368
+ ; CHECK-NEXT: [[C:%.*]] = icmp eq i16 [[X:%.*]], [[Y:%.*]]
381
369
; CHECK-NEXT: ret i1 [[C]]
382
370
;
383
371
%xt = trunc nuw i16 %x to i8
@@ -388,9 +376,7 @@ define i1 @trunc_equality_nuw(i16 %x, i16 %y) {
388
376
389
377
define i1 @trunc_equality_nsw (i16 %x , i16 %y ) {
390
378
; CHECK-LABEL: @trunc_equality_nsw(
391
- ; CHECK-NEXT: [[XT:%.*]] = trunc nsw i16 [[X:%.*]] to i8
392
- ; CHECK-NEXT: [[YT:%.*]] = trunc nsw i16 [[Y:%.*]] to i8
393
- ; CHECK-NEXT: [[C:%.*]] = icmp eq i8 [[XT]], [[YT]]
379
+ ; CHECK-NEXT: [[C:%.*]] = icmp eq i16 [[X:%.*]], [[Y:%.*]]
394
380
; CHECK-NEXT: ret i1 [[C]]
395
381
;
396
382
%xt = trunc nsw i16 %x to i8
@@ -401,9 +387,7 @@ define i1 @trunc_equality_nsw(i16 %x, i16 %y) {
401
387
402
388
define i1 @trunc_equality_both (i16 %x , i16 %y ) {
403
389
; CHECK-LABEL: @trunc_equality_both(
404
- ; CHECK-NEXT: [[XT:%.*]] = trunc nuw nsw i16 [[X:%.*]] to i8
405
- ; CHECK-NEXT: [[YT:%.*]] = trunc nuw nsw i16 [[Y:%.*]] to i8
406
- ; CHECK-NEXT: [[C:%.*]] = icmp eq i8 [[XT]], [[YT]]
390
+ ; CHECK-NEXT: [[C:%.*]] = icmp eq i16 [[X:%.*]], [[Y:%.*]]
407
391
; CHECK-NEXT: ret i1 [[C]]
408
392
;
409
393
%xt = trunc nuw nsw i16 %x to i8
@@ -427,9 +411,8 @@ define i1 @trunc_equality_either(i16 %x, i16 %y) {
427
411
428
412
define i1 @trunc_unsigned_nuw_zext (i32 %x , i8 %y ) {
429
413
; CHECK-LABEL: @trunc_unsigned_nuw_zext(
430
- ; CHECK-NEXT: [[XT:%.*]] = trunc nuw i32 [[X:%.*]] to i16
431
- ; CHECK-NEXT: [[YE:%.*]] = zext i8 [[Y:%.*]] to i16
432
- ; CHECK-NEXT: [[C:%.*]] = icmp ult i16 [[XT]], [[YE]]
414
+ ; CHECK-NEXT: [[TMP1:%.*]] = zext i8 [[Y:%.*]] to i32
415
+ ; CHECK-NEXT: [[C:%.*]] = icmp ugt i32 [[TMP1]], [[X:%.*]]
433
416
; CHECK-NEXT: ret i1 [[C]]
434
417
;
435
418
%xt = trunc nuw i32 %x to i16
@@ -453,9 +436,8 @@ define i1 @trunc_unsigned_nuw_sext(i32 %x, i8 %y) {
453
436
454
437
define i1 @trunc_unsigned_nsw_zext (i32 %x , i8 %y ) {
455
438
; CHECK-LABEL: @trunc_unsigned_nsw_zext(
456
- ; CHECK-NEXT: [[XT:%.*]] = trunc nsw i32 [[X:%.*]] to i16
457
- ; CHECK-NEXT: [[YE:%.*]] = zext i8 [[Y:%.*]] to i16
458
- ; CHECK-NEXT: [[C:%.*]] = icmp ult i16 [[XT]], [[YE]]
439
+ ; CHECK-NEXT: [[TMP1:%.*]] = zext i8 [[Y:%.*]] to i32
440
+ ; CHECK-NEXT: [[C:%.*]] = icmp ugt i32 [[TMP1]], [[X:%.*]]
459
441
; CHECK-NEXT: ret i1 [[C]]
460
442
;
461
443
%xt = trunc nsw i32 %x to i16
@@ -466,9 +448,8 @@ define i1 @trunc_unsigned_nsw_zext(i32 %x, i8 %y) {
466
448
467
449
define i1 @trunc_unsigned_nsw_sext (i32 %x , i8 %y ) {
468
450
; CHECK-LABEL: @trunc_unsigned_nsw_sext(
469
- ; CHECK-NEXT: [[XT:%.*]] = trunc nsw i32 [[X:%.*]] to i16
470
- ; CHECK-NEXT: [[YE:%.*]] = sext i8 [[Y:%.*]] to i16
471
- ; CHECK-NEXT: [[C:%.*]] = icmp ult i16 [[XT]], [[YE]]
451
+ ; CHECK-NEXT: [[TMP1:%.*]] = sext i8 [[Y:%.*]] to i32
452
+ ; CHECK-NEXT: [[C:%.*]] = icmp ugt i32 [[TMP1]], [[X:%.*]]
472
453
; CHECK-NEXT: ret i1 [[C]]
473
454
;
474
455
%xt = trunc nsw i32 %x to i16
@@ -479,9 +460,8 @@ define i1 @trunc_unsigned_nsw_sext(i32 %x, i8 %y) {
479
460
480
461
define i1 @trunc_signed_nsw_sext (i32 %x , i8 %y ) {
481
462
; CHECK-LABEL: @trunc_signed_nsw_sext(
482
- ; CHECK-NEXT: [[XT:%.*]] = trunc nsw i32 [[X:%.*]] to i16
483
- ; CHECK-NEXT: [[YE:%.*]] = sext i8 [[Y:%.*]] to i16
484
- ; CHECK-NEXT: [[C:%.*]] = icmp slt i16 [[XT]], [[YE]]
463
+ ; CHECK-NEXT: [[TMP1:%.*]] = sext i8 [[Y:%.*]] to i32
464
+ ; CHECK-NEXT: [[C:%.*]] = icmp sgt i32 [[TMP1]], [[X:%.*]]
485
465
; CHECK-NEXT: ret i1 [[C]]
486
466
;
487
467
%xt = trunc nsw i32 %x to i16
@@ -492,9 +472,8 @@ define i1 @trunc_signed_nsw_sext(i32 %x, i8 %y) {
492
472
493
473
define i1 @trunc_signed_nsw_zext (i32 %x , i8 %y ) {
494
474
; CHECK-LABEL: @trunc_signed_nsw_zext(
495
- ; CHECK-NEXT: [[XT:%.*]] = trunc nsw i32 [[X:%.*]] to i16
496
- ; CHECK-NEXT: [[YE:%.*]] = zext i8 [[Y:%.*]] to i16
497
- ; CHECK-NEXT: [[C:%.*]] = icmp slt i16 [[XT]], [[YE]]
475
+ ; CHECK-NEXT: [[TMP1:%.*]] = zext i8 [[Y:%.*]] to i32
476
+ ; CHECK-NEXT: [[C:%.*]] = icmp sgt i32 [[TMP1]], [[X:%.*]]
498
477
; CHECK-NEXT: ret i1 [[C]]
499
478
;
500
479
%xt = trunc nsw i32 %x to i16
@@ -531,9 +510,8 @@ define i1 @trunc_signed_nuw_zext(i32 %x, i8 %y) {
531
510
532
511
define i1 @trunc_equality_nuw_zext (i32 %x , i8 %y ) {
533
512
; CHECK-LABEL: @trunc_equality_nuw_zext(
534
- ; CHECK-NEXT: [[XT:%.*]] = trunc nuw i32 [[X:%.*]] to i16
535
- ; CHECK-NEXT: [[YE:%.*]] = zext i8 [[Y:%.*]] to i16
536
- ; CHECK-NEXT: [[C:%.*]] = icmp ne i16 [[XT]], [[YE]]
513
+ ; CHECK-NEXT: [[TMP1:%.*]] = zext i8 [[Y:%.*]] to i32
514
+ ; CHECK-NEXT: [[C:%.*]] = icmp ne i32 [[TMP1]], [[X:%.*]]
537
515
; CHECK-NEXT: ret i1 [[C]]
538
516
;
539
517
%xt = trunc nuw i32 %x to i16
@@ -557,9 +535,8 @@ define i1 @trunc_equality_nuw_sext(i32 %x, i8 %y) {
557
535
558
536
define i1 @trunc_equality_nsw_zext (i32 %x , i8 %y ) {
559
537
; CHECK-LABEL: @trunc_equality_nsw_zext(
560
- ; CHECK-NEXT: [[XT:%.*]] = trunc nsw i32 [[X:%.*]] to i16
561
- ; CHECK-NEXT: [[YE:%.*]] = zext i8 [[Y:%.*]] to i16
562
- ; CHECK-NEXT: [[C:%.*]] = icmp ne i16 [[XT]], [[YE]]
538
+ ; CHECK-NEXT: [[TMP1:%.*]] = zext i8 [[Y:%.*]] to i32
539
+ ; CHECK-NEXT: [[C:%.*]] = icmp ne i32 [[TMP1]], [[X:%.*]]
563
540
; CHECK-NEXT: ret i1 [[C]]
564
541
;
565
542
%xt = trunc nsw i32 %x to i16
@@ -570,9 +547,8 @@ define i1 @trunc_equality_nsw_zext(i32 %x, i8 %y) {
570
547
571
548
define i1 @trunc_equality_nsw_sext (i32 %x , i8 %y ) {
572
549
; CHECK-LABEL: @trunc_equality_nsw_sext(
573
- ; CHECK-NEXT: [[XT:%.*]] = trunc nsw i32 [[X:%.*]] to i16
574
- ; CHECK-NEXT: [[YE:%.*]] = sext i8 [[Y:%.*]] to i16
575
- ; CHECK-NEXT: [[C:%.*]] = icmp ne i16 [[XT]], [[YE]]
550
+ ; CHECK-NEXT: [[TMP1:%.*]] = sext i8 [[Y:%.*]] to i32
551
+ ; CHECK-NEXT: [[C:%.*]] = icmp ne i32 [[TMP1]], [[X:%.*]]
576
552
; CHECK-NEXT: ret i1 [[C]]
577
553
;
578
554
%xt = trunc nsw i32 %x to i16
@@ -583,9 +559,8 @@ define i1 @trunc_equality_nsw_sext(i32 %x, i8 %y) {
583
559
584
560
define i1 @trunc_equality_both_sext (i32 %x , i8 %y ) {
585
561
; CHECK-LABEL: @trunc_equality_both_sext(
586
- ; CHECK-NEXT: [[XT:%.*]] = trunc nuw nsw i32 [[X:%.*]] to i16
587
- ; CHECK-NEXT: [[YE:%.*]] = sext i8 [[Y:%.*]] to i16
588
- ; CHECK-NEXT: [[C:%.*]] = icmp ne i16 [[XT]], [[YE]]
562
+ ; CHECK-NEXT: [[TMP1:%.*]] = sext i8 [[Y:%.*]] to i32
563
+ ; CHECK-NEXT: [[C:%.*]] = icmp ne i32 [[TMP1]], [[X:%.*]]
589
564
; CHECK-NEXT: ret i1 [[C]]
590
565
;
591
566
%xt = trunc nuw nsw i32 %x to i16
0 commit comments