@@ -165,8 +165,7 @@ define <2 x i8> @lshr_exact_splat_vec(<2 x i8> %x) {
165
165
166
166
define <2 x i8 > @lshr_exact_splat_vec_nuw (<2 x i8 > %x ) {
167
167
; CHECK-LABEL: @lshr_exact_splat_vec_nuw(
168
- ; CHECK-NEXT: [[TMP1:%.*]] = add <2 x i8> [[X:%.*]], <i8 1, i8 1>
169
- ; CHECK-NEXT: [[LSHR:%.*]] = and <2 x i8> [[TMP1]], <i8 63, i8 63>
168
+ ; CHECK-NEXT: [[LSHR:%.*]] = add nuw <2 x i8> [[X:%.*]], <i8 1, i8 1>
170
169
; CHECK-NEXT: ret <2 x i8> [[LSHR]]
171
170
;
172
171
%shl = shl nuw <2 x i8 > %x , <i8 2 , i8 2 >
@@ -374,9 +373,8 @@ define <3 x i14> @mul_splat_fold_vec(<3 x i14> %x) {
374
373
375
374
define i32 @shl_add_lshr_flag_preservation (i32 %x , i32 %c , i32 %y ) {
376
375
; CHECK-LABEL: @shl_add_lshr_flag_preservation(
377
- ; CHECK-NEXT: [[SHL:%.*]] = shl nuw i32 [[X:%.*]], [[C:%.*]]
378
- ; CHECK-NEXT: [[ADD:%.*]] = add nuw nsw i32 [[SHL]], [[Y:%.*]]
379
- ; CHECK-NEXT: [[LSHR:%.*]] = lshr exact i32 [[ADD]], [[C]]
376
+ ; CHECK-NEXT: [[TMP1:%.*]] = lshr exact i32 [[Y:%.*]], [[C:%.*]]
377
+ ; CHECK-NEXT: [[LSHR:%.*]] = add nuw nsw i32 [[TMP1]], [[X:%.*]]
380
378
; CHECK-NEXT: ret i32 [[LSHR]]
381
379
;
382
380
%shl = shl nuw i32 %x , %c
@@ -387,9 +385,8 @@ define i32 @shl_add_lshr_flag_preservation(i32 %x, i32 %c, i32 %y) {
387
385
388
386
define i32 @shl_add_lshr (i32 %x , i32 %c , i32 %y ) {
389
387
; CHECK-LABEL: @shl_add_lshr(
390
- ; CHECK-NEXT: [[SHL:%.*]] = shl nuw i32 [[X:%.*]], [[C:%.*]]
391
- ; CHECK-NEXT: [[ADD:%.*]] = add nuw i32 [[SHL]], [[Y:%.*]]
392
- ; CHECK-NEXT: [[LSHR:%.*]] = lshr i32 [[ADD]], [[C]]
388
+ ; CHECK-NEXT: [[TMP1:%.*]] = lshr i32 [[Y:%.*]], [[C:%.*]]
389
+ ; CHECK-NEXT: [[LSHR:%.*]] = add nuw i32 [[TMP1]], [[X:%.*]]
393
390
; CHECK-NEXT: ret i32 [[LSHR]]
394
391
;
395
392
%shl = shl nuw i32 %x , %c
@@ -400,9 +397,8 @@ define i32 @shl_add_lshr(i32 %x, i32 %c, i32 %y) {
400
397
401
398
define i32 @shl_add_lshr_comm (i32 %x , i32 %c , i32 %y ) {
402
399
; CHECK-LABEL: @shl_add_lshr_comm(
403
- ; CHECK-NEXT: [[SHL:%.*]] = shl nuw i32 [[X:%.*]], [[C:%.*]]
404
- ; CHECK-NEXT: [[ADD:%.*]] = add nuw i32 [[SHL]], [[Y:%.*]]
405
- ; CHECK-NEXT: [[LSHR:%.*]] = lshr i32 [[ADD]], [[C]]
400
+ ; CHECK-NEXT: [[TMP1:%.*]] = lshr i32 [[Y:%.*]], [[C:%.*]]
401
+ ; CHECK-NEXT: [[LSHR:%.*]] = add nuw i32 [[TMP1]], [[X:%.*]]
406
402
; CHECK-NEXT: ret i32 [[LSHR]]
407
403
;
408
404
%shl = shl nuw i32 %x , %c
@@ -443,9 +439,8 @@ define i32 @shl_sub_lshr_no_nuw(i32 %x, i32 %c, i32 %y) {
443
439
444
440
define i32 @shl_sub_lshr (i32 %x , i32 %c , i32 %y ) {
445
441
; CHECK-LABEL: @shl_sub_lshr(
446
- ; CHECK-NEXT: [[SHL:%.*]] = shl nuw i32 [[X:%.*]], [[C:%.*]]
447
- ; CHECK-NEXT: [[SUB:%.*]] = sub nuw nsw i32 [[SHL]], [[Y:%.*]]
448
- ; CHECK-NEXT: [[LSHR:%.*]] = lshr exact i32 [[SUB]], [[C]]
442
+ ; CHECK-NEXT: [[TMP1:%.*]] = lshr exact i32 [[Y:%.*]], [[C:%.*]]
443
+ ; CHECK-NEXT: [[LSHR:%.*]] = sub nuw nsw i32 [[X:%.*]], [[TMP1]]
449
444
; CHECK-NEXT: ret i32 [[LSHR]]
450
445
;
451
446
%shl = shl nuw i32 %x , %c
@@ -456,9 +451,8 @@ define i32 @shl_sub_lshr(i32 %x, i32 %c, i32 %y) {
456
451
457
452
define i32 @shl_or_lshr (i32 %x , i32 %c , i32 %y ) {
458
453
; CHECK-LABEL: @shl_or_lshr(
459
- ; CHECK-NEXT: [[SHL:%.*]] = shl nuw i32 [[X:%.*]], [[C:%.*]]
460
- ; CHECK-NEXT: [[OR:%.*]] = or i32 [[SHL]], [[Y:%.*]]
461
- ; CHECK-NEXT: [[LSHR:%.*]] = lshr i32 [[OR]], [[C]]
454
+ ; CHECK-NEXT: [[TMP1:%.*]] = lshr i32 [[Y:%.*]], [[C:%.*]]
455
+ ; CHECK-NEXT: [[LSHR:%.*]] = or i32 [[TMP1]], [[X:%.*]]
462
456
; CHECK-NEXT: ret i32 [[LSHR]]
463
457
;
464
458
%shl = shl nuw i32 %x , %c
@@ -469,9 +463,8 @@ define i32 @shl_or_lshr(i32 %x, i32 %c, i32 %y) {
469
463
470
464
define i32 @shl_or_disjoint_lshr (i32 %x , i32 %c , i32 %y ) {
471
465
; CHECK-LABEL: @shl_or_disjoint_lshr(
472
- ; CHECK-NEXT: [[SHL:%.*]] = shl nuw i32 [[X:%.*]], [[C:%.*]]
473
- ; CHECK-NEXT: [[OR:%.*]] = or disjoint i32 [[SHL]], [[Y:%.*]]
474
- ; CHECK-NEXT: [[LSHR:%.*]] = lshr i32 [[OR]], [[C]]
466
+ ; CHECK-NEXT: [[TMP1:%.*]] = lshr i32 [[Y:%.*]], [[C:%.*]]
467
+ ; CHECK-NEXT: [[LSHR:%.*]] = or disjoint i32 [[TMP1]], [[X:%.*]]
475
468
; CHECK-NEXT: ret i32 [[LSHR]]
476
469
;
477
470
%shl = shl nuw i32 %x , %c
@@ -482,9 +475,8 @@ define i32 @shl_or_disjoint_lshr(i32 %x, i32 %c, i32 %y) {
482
475
483
476
define i32 @shl_or_lshr_comm (i32 %x , i32 %c , i32 %y ) {
484
477
; CHECK-LABEL: @shl_or_lshr_comm(
485
- ; CHECK-NEXT: [[SHL:%.*]] = shl nuw i32 [[X:%.*]], [[C:%.*]]
486
- ; CHECK-NEXT: [[OR:%.*]] = or i32 [[SHL]], [[Y:%.*]]
487
- ; CHECK-NEXT: [[LSHR:%.*]] = lshr i32 [[OR]], [[C]]
478
+ ; CHECK-NEXT: [[TMP1:%.*]] = lshr i32 [[Y:%.*]], [[C:%.*]]
479
+ ; CHECK-NEXT: [[LSHR:%.*]] = or i32 [[TMP1]], [[X:%.*]]
488
480
; CHECK-NEXT: ret i32 [[LSHR]]
489
481
;
490
482
%shl = shl nuw i32 %x , %c
@@ -495,9 +487,8 @@ define i32 @shl_or_lshr_comm(i32 %x, i32 %c, i32 %y) {
495
487
496
488
define i32 @shl_or_disjoint_lshr_comm (i32 %x , i32 %c , i32 %y ) {
497
489
; CHECK-LABEL: @shl_or_disjoint_lshr_comm(
498
- ; CHECK-NEXT: [[SHL:%.*]] = shl nuw i32 [[X:%.*]], [[C:%.*]]
499
- ; CHECK-NEXT: [[OR:%.*]] = or disjoint i32 [[SHL]], [[Y:%.*]]
500
- ; CHECK-NEXT: [[LSHR:%.*]] = lshr i32 [[OR]], [[C]]
490
+ ; CHECK-NEXT: [[TMP1:%.*]] = lshr i32 [[Y:%.*]], [[C:%.*]]
491
+ ; CHECK-NEXT: [[LSHR:%.*]] = or disjoint i32 [[TMP1]], [[X:%.*]]
501
492
; CHECK-NEXT: ret i32 [[LSHR]]
502
493
;
503
494
%shl = shl nuw i32 %x , %c
@@ -508,9 +499,8 @@ define i32 @shl_or_disjoint_lshr_comm(i32 %x, i32 %c, i32 %y) {
508
499
509
500
define i32 @shl_xor_lshr (i32 %x , i32 %c , i32 %y ) {
510
501
; CHECK-LABEL: @shl_xor_lshr(
511
- ; CHECK-NEXT: [[SHL:%.*]] = shl nuw i32 [[X:%.*]], [[C:%.*]]
512
- ; CHECK-NEXT: [[XOR:%.*]] = xor i32 [[SHL]], [[Y:%.*]]
513
- ; CHECK-NEXT: [[LSHR:%.*]] = lshr i32 [[XOR]], [[C]]
502
+ ; CHECK-NEXT: [[TMP1:%.*]] = lshr i32 [[Y:%.*]], [[C:%.*]]
503
+ ; CHECK-NEXT: [[LSHR:%.*]] = xor i32 [[TMP1]], [[X:%.*]]
514
504
; CHECK-NEXT: ret i32 [[LSHR]]
515
505
;
516
506
%shl = shl nuw i32 %x , %c
@@ -522,9 +512,8 @@ define i32 @shl_xor_lshr(i32 %x, i32 %c, i32 %y) {
522
512
523
513
define i32 @shl_xor_lshr_comm (i32 %x , i32 %c , i32 %y ) {
524
514
; CHECK-LABEL: @shl_xor_lshr_comm(
525
- ; CHECK-NEXT: [[SHL:%.*]] = shl nuw i32 [[X:%.*]], [[C:%.*]]
526
- ; CHECK-NEXT: [[XOR:%.*]] = xor i32 [[SHL]], [[Y:%.*]]
527
- ; CHECK-NEXT: [[LSHR:%.*]] = lshr i32 [[XOR]], [[C]]
515
+ ; CHECK-NEXT: [[TMP1:%.*]] = lshr i32 [[Y:%.*]], [[C:%.*]]
516
+ ; CHECK-NEXT: [[LSHR:%.*]] = xor i32 [[TMP1]], [[X:%.*]]
528
517
; CHECK-NEXT: ret i32 [[LSHR]]
529
518
;
530
519
%shl = shl nuw i32 %x , %c
0 commit comments