@@ -466,9 +466,8 @@ define i32 @shl_sub_lshr(i32 %x, i32 %c, i32 %y) {
466
466
467
467
define i32 @shl_sub_lshr_reverse (i32 %x , i32 %c , i32 %y ) {
468
468
; CHECK-LABEL: @shl_sub_lshr_reverse(
469
- ; CHECK-NEXT: [[SHL:%.*]] = shl nuw i32 [[X:%.*]], [[C:%.*]]
470
- ; CHECK-NEXT: [[SUB:%.*]] = sub nuw nsw i32 [[Y:%.*]], [[SHL]]
471
- ; CHECK-NEXT: [[LSHR:%.*]] = lshr exact i32 [[SUB]], [[C]]
469
+ ; CHECK-NEXT: [[TMP1:%.*]] = lshr exact i32 [[Y:%.*]], [[C:%.*]]
470
+ ; CHECK-NEXT: [[LSHR:%.*]] = sub nuw nsw i32 [[TMP1]], [[X:%.*]]
472
471
; CHECK-NEXT: ret i32 [[LSHR]]
473
472
;
474
473
%shl = shl nuw i32 %x , %c
@@ -479,9 +478,8 @@ define i32 @shl_sub_lshr_reverse(i32 %x, i32 %c, i32 %y) {
479
478
480
479
define i32 @shl_sub_lshr_reverse_no_nsw (i32 %x , i32 %c , i32 %y ) {
481
480
; CHECK-LABEL: @shl_sub_lshr_reverse_no_nsw(
482
- ; CHECK-NEXT: [[SHL:%.*]] = shl nuw i32 [[X:%.*]], [[C:%.*]]
483
- ; CHECK-NEXT: [[SUB:%.*]] = sub nuw i32 [[Y:%.*]], [[SHL]]
484
- ; CHECK-NEXT: [[LSHR:%.*]] = lshr exact i32 [[SUB]], [[C]]
481
+ ; CHECK-NEXT: [[TMP1:%.*]] = lshr exact i32 [[Y:%.*]], [[C:%.*]]
482
+ ; CHECK-NEXT: [[LSHR:%.*]] = sub nuw i32 [[TMP1]], [[X:%.*]]
485
483
; CHECK-NEXT: ret i32 [[LSHR]]
486
484
;
487
485
%shl = shl nuw i32 %x , %c
@@ -492,9 +490,8 @@ define i32 @shl_sub_lshr_reverse_no_nsw(i32 %x, i32 %c, i32 %y) {
492
490
493
491
define i32 @shl_sub_lshr_reverse_nsw_on_op1 (i32 %x , i32 %c , i32 %y ) {
494
492
; CHECK-LABEL: @shl_sub_lshr_reverse_nsw_on_op1(
495
- ; CHECK-NEXT: [[SHL:%.*]] = shl nuw nsw i32 [[X:%.*]], [[C:%.*]]
496
- ; CHECK-NEXT: [[SUB:%.*]] = sub nuw i32 [[Y:%.*]], [[SHL]]
497
- ; CHECK-NEXT: [[LSHR:%.*]] = lshr exact i32 [[SUB]], [[C]]
493
+ ; CHECK-NEXT: [[TMP1:%.*]] = lshr exact i32 [[Y:%.*]], [[C:%.*]]
494
+ ; CHECK-NEXT: [[LSHR:%.*]] = sub nuw i32 [[TMP1]], [[X:%.*]]
498
495
; CHECK-NEXT: ret i32 [[LSHR]]
499
496
;
500
497
%shl = shl nuw nsw i32 %x , %c
@@ -539,8 +536,8 @@ define i32 @shl_sub_lshr_reverse_multiuse2(i32 %x, i32 %c, i32 %y) {
539
536
; CHECK-LABEL: @shl_sub_lshr_reverse_multiuse2(
540
537
; CHECK-NEXT: [[SHL:%.*]] = shl nuw i32 [[X:%.*]], [[C:%.*]]
541
538
; CHECK-NEXT: call void @use(i32 [[SHL]])
542
- ; CHECK-NEXT: [[SUB :%.*]] = sub nuw i32 [[Y:%.*]], [[SHL ]]
543
- ; CHECK-NEXT: [[LSHR:%.*]] = lshr exact i32 [[SUB ]], [[C ]]
539
+ ; CHECK-NEXT: [[TMP1 :%.*]] = lshr exact i32 [[Y:%.*]], [[C ]]
540
+ ; CHECK-NEXT: [[LSHR:%.*]] = sub nuw i32 [[TMP1 ]], [[X ]]
544
541
; CHECK-NEXT: ret i32 [[LSHR]]
545
542
;
546
543
%shl = shl nuw i32 %x , %c
0 commit comments