@@ -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
@@ -413,9 +409,8 @@ define i32 @shl_add_lshr_comm(i32 %x, i32 %c, i32 %y) {
413
409
414
410
define i32 @shl_sub_lshr (i32 %x , i32 %c , i32 %y ) {
415
411
; CHECK-LABEL: @shl_sub_lshr(
416
- ; CHECK-NEXT: [[SHL:%.*]] = shl nuw i32 [[X:%.*]], [[C:%.*]]
417
- ; CHECK-NEXT: [[SUB:%.*]] = sub nuw i32 [[SHL]], [[Y:%.*]]
418
- ; CHECK-NEXT: [[LSHR:%.*]] = lshr i32 [[SUB]], [[C]]
412
+ ; CHECK-NEXT: [[TMP1:%.*]] = lshr i32 [[Y:%.*]], [[C:%.*]]
413
+ ; CHECK-NEXT: [[LSHR:%.*]] = sub nuw i32 [[TMP1]], [[X:%.*]]
419
414
; CHECK-NEXT: ret i32 [[LSHR]]
420
415
;
421
416
%shl = shl nuw i32 %x , %c
@@ -426,9 +421,8 @@ define i32 @shl_sub_lshr(i32 %x, i32 %c, i32 %y) {
426
421
427
422
define i32 @shl_or_lshr (i32 %x , i32 %c , i32 %y ) {
428
423
; CHECK-LABEL: @shl_or_lshr(
429
- ; CHECK-NEXT: [[SHL:%.*]] = shl nuw i32 [[X:%.*]], [[C:%.*]]
430
- ; CHECK-NEXT: [[OR:%.*]] = or i32 [[SHL]], [[Y:%.*]]
431
- ; CHECK-NEXT: [[LSHR:%.*]] = lshr i32 [[OR]], [[C]]
424
+ ; CHECK-NEXT: [[TMP1:%.*]] = lshr i32 [[Y:%.*]], [[C:%.*]]
425
+ ; CHECK-NEXT: [[LSHR:%.*]] = or i32 [[TMP1]], [[X:%.*]]
432
426
; CHECK-NEXT: ret i32 [[LSHR]]
433
427
;
434
428
%shl = shl nuw i32 %x , %c
@@ -439,9 +433,8 @@ define i32 @shl_or_lshr(i32 %x, i32 %c, i32 %y) {
439
433
440
434
define i32 @shl_or_disjoint_lshr (i32 %x , i32 %c , i32 %y ) {
441
435
; CHECK-LABEL: @shl_or_disjoint_lshr(
442
- ; CHECK-NEXT: [[SHL:%.*]] = shl nuw i32 [[X:%.*]], [[C:%.*]]
443
- ; CHECK-NEXT: [[OR:%.*]] = or disjoint i32 [[SHL]], [[Y:%.*]]
444
- ; CHECK-NEXT: [[LSHR:%.*]] = lshr i32 [[OR]], [[C]]
436
+ ; CHECK-NEXT: [[TMP1:%.*]] = lshr i32 [[Y:%.*]], [[C:%.*]]
437
+ ; CHECK-NEXT: [[LSHR:%.*]] = or disjoint i32 [[TMP1]], [[X:%.*]]
445
438
; CHECK-NEXT: ret i32 [[LSHR]]
446
439
;
447
440
%shl = shl nuw i32 %x , %c
@@ -452,9 +445,8 @@ define i32 @shl_or_disjoint_lshr(i32 %x, i32 %c, i32 %y) {
452
445
453
446
define i32 @shl_or_lshr_comm (i32 %x , i32 %c , i32 %y ) {
454
447
; CHECK-LABEL: @shl_or_lshr_comm(
455
- ; CHECK-NEXT: [[SHL:%.*]] = shl nuw i32 [[X:%.*]], [[C:%.*]]
456
- ; CHECK-NEXT: [[OR:%.*]] = or i32 [[SHL]], [[Y:%.*]]
457
- ; CHECK-NEXT: [[LSHR:%.*]] = lshr i32 [[OR]], [[C]]
448
+ ; CHECK-NEXT: [[TMP1:%.*]] = lshr i32 [[Y:%.*]], [[C:%.*]]
449
+ ; CHECK-NEXT: [[LSHR:%.*]] = or i32 [[TMP1]], [[X:%.*]]
458
450
; CHECK-NEXT: ret i32 [[LSHR]]
459
451
;
460
452
%shl = shl nuw i32 %x , %c
@@ -465,9 +457,8 @@ define i32 @shl_or_lshr_comm(i32 %x, i32 %c, i32 %y) {
465
457
466
458
define i32 @shl_or_disjoint_lshr_comm (i32 %x , i32 %c , i32 %y ) {
467
459
; CHECK-LABEL: @shl_or_disjoint_lshr_comm(
468
- ; CHECK-NEXT: [[SHL:%.*]] = shl nuw i32 [[X:%.*]], [[C:%.*]]
469
- ; CHECK-NEXT: [[OR:%.*]] = or disjoint i32 [[SHL]], [[Y:%.*]]
470
- ; CHECK-NEXT: [[LSHR:%.*]] = lshr i32 [[OR]], [[C]]
460
+ ; CHECK-NEXT: [[TMP1:%.*]] = lshr i32 [[Y:%.*]], [[C:%.*]]
461
+ ; CHECK-NEXT: [[LSHR:%.*]] = or disjoint i32 [[TMP1]], [[X:%.*]]
471
462
; CHECK-NEXT: ret i32 [[LSHR]]
472
463
;
473
464
%shl = shl nuw i32 %x , %c
@@ -478,9 +469,8 @@ define i32 @shl_or_disjoint_lshr_comm(i32 %x, i32 %c, i32 %y) {
478
469
479
470
define i32 @shl_xor_lshr (i32 %x , i32 %c , i32 %y ) {
480
471
; CHECK-LABEL: @shl_xor_lshr(
481
- ; CHECK-NEXT: [[SHL:%.*]] = shl nuw i32 [[X:%.*]], [[C:%.*]]
482
- ; CHECK-NEXT: [[XOR:%.*]] = xor i32 [[SHL]], [[Y:%.*]]
483
- ; CHECK-NEXT: [[LSHR:%.*]] = lshr i32 [[XOR]], [[C]]
472
+ ; CHECK-NEXT: [[TMP1:%.*]] = lshr i32 [[Y:%.*]], [[C:%.*]]
473
+ ; CHECK-NEXT: [[LSHR:%.*]] = xor i32 [[TMP1]], [[X:%.*]]
484
474
; CHECK-NEXT: ret i32 [[LSHR]]
485
475
;
486
476
%shl = shl nuw i32 %x , %c
@@ -492,9 +482,8 @@ define i32 @shl_xor_lshr(i32 %x, i32 %c, i32 %y) {
492
482
493
483
define i32 @shl_xor_lshr_comm (i32 %x , i32 %c , i32 %y ) {
494
484
; CHECK-LABEL: @shl_xor_lshr_comm(
495
- ; CHECK-NEXT: [[SHL:%.*]] = shl nuw i32 [[X:%.*]], [[C:%.*]]
496
- ; CHECK-NEXT: [[XOR:%.*]] = xor i32 [[SHL]], [[Y:%.*]]
497
- ; CHECK-NEXT: [[LSHR:%.*]] = lshr i32 [[XOR]], [[C]]
485
+ ; CHECK-NEXT: [[TMP1:%.*]] = lshr i32 [[Y:%.*]], [[C:%.*]]
486
+ ; CHECK-NEXT: [[LSHR:%.*]] = xor i32 [[TMP1]], [[X:%.*]]
498
487
; CHECK-NEXT: ret i32 [[LSHR]]
499
488
;
500
489
%shl = shl nuw i32 %x , %c
0 commit comments