@@ -468,9 +468,8 @@ define i32 @shl_sub_lshr(i32 %x, i32 %c, i32 %y) {
468
468
469
469
define i32 @shl_sub_lshr_reverse (i32 %x , i32 %c , i32 %y ) {
470
470
; CHECK-LABEL: @shl_sub_lshr_reverse(
471
- ; CHECK-NEXT: [[SHL:%.*]] = shl nuw i32 [[X:%.*]], [[C:%.*]]
472
- ; CHECK-NEXT: [[SUB:%.*]] = sub nuw nsw i32 [[Y:%.*]], [[SHL]]
473
- ; CHECK-NEXT: [[LSHR:%.*]] = lshr exact i32 [[SUB]], [[C]]
471
+ ; CHECK-NEXT: [[TMP1:%.*]] = lshr exact i32 [[Y:%.*]], [[C:%.*]]
472
+ ; CHECK-NEXT: [[LSHR:%.*]] = sub nuw nsw i32 [[TMP1]], [[X:%.*]]
474
473
; CHECK-NEXT: ret i32 [[LSHR]]
475
474
;
476
475
%shl = shl nuw i32 %x , %c
@@ -481,9 +480,8 @@ define i32 @shl_sub_lshr_reverse(i32 %x, i32 %c, i32 %y) {
481
480
482
481
define i32 @shl_sub_lshr_reverse_no_nsw (i32 %x , i32 %c , i32 %y ) {
483
482
; CHECK-LABEL: @shl_sub_lshr_reverse_no_nsw(
484
- ; CHECK-NEXT: [[SHL:%.*]] = shl nuw i32 [[X:%.*]], [[C:%.*]]
485
- ; CHECK-NEXT: [[SUB:%.*]] = sub nuw i32 [[Y:%.*]], [[SHL]]
486
- ; CHECK-NEXT: [[LSHR:%.*]] = lshr exact i32 [[SUB]], [[C]]
483
+ ; CHECK-NEXT: [[TMP1:%.*]] = lshr exact i32 [[Y:%.*]], [[C:%.*]]
484
+ ; CHECK-NEXT: [[LSHR:%.*]] = sub nuw i32 [[TMP1]], [[X:%.*]]
487
485
; CHECK-NEXT: ret i32 [[LSHR]]
488
486
;
489
487
%shl = shl nuw i32 %x , %c
@@ -494,9 +492,8 @@ define i32 @shl_sub_lshr_reverse_no_nsw(i32 %x, i32 %c, i32 %y) {
494
492
495
493
define i32 @shl_sub_lshr_reverse_nsw_on_op1 (i32 %x , i32 %c , i32 %y ) {
496
494
; CHECK-LABEL: @shl_sub_lshr_reverse_nsw_on_op1(
497
- ; CHECK-NEXT: [[SHL:%.*]] = shl nuw nsw i32 [[X:%.*]], [[C:%.*]]
498
- ; CHECK-NEXT: [[SUB:%.*]] = sub nuw i32 [[Y:%.*]], [[SHL]]
499
- ; CHECK-NEXT: [[LSHR:%.*]] = lshr exact i32 [[SUB]], [[C]]
495
+ ; CHECK-NEXT: [[TMP1:%.*]] = lshr exact i32 [[Y:%.*]], [[C:%.*]]
496
+ ; CHECK-NEXT: [[LSHR:%.*]] = sub nuw i32 [[TMP1]], [[X:%.*]]
500
497
; CHECK-NEXT: ret i32 [[LSHR]]
501
498
;
502
499
%shl = shl nuw nsw i32 %x , %c
@@ -541,8 +538,8 @@ define i32 @shl_sub_lshr_reverse_multiuse2(i32 %x, i32 %c, i32 %y) {
541
538
; CHECK-LABEL: @shl_sub_lshr_reverse_multiuse2(
542
539
; CHECK-NEXT: [[SHL:%.*]] = shl nuw i32 [[X:%.*]], [[C:%.*]]
543
540
; CHECK-NEXT: call void @use(i32 [[SHL]])
544
- ; CHECK-NEXT: [[SUB :%.*]] = sub nuw i32 [[Y:%.*]], [[SHL ]]
545
- ; CHECK-NEXT: [[LSHR:%.*]] = lshr exact i32 [[SUB ]], [[C ]]
541
+ ; CHECK-NEXT: [[TMP1 :%.*]] = lshr exact i32 [[Y:%.*]], [[C ]]
542
+ ; CHECK-NEXT: [[LSHR:%.*]] = sub nuw i32 [[TMP1 ]], [[X ]]
546
543
; CHECK-NEXT: ret i32 [[LSHR]]
547
544
;
548
545
%shl = shl nuw i32 %x , %c
@@ -757,7 +754,7 @@ define i32 @mul_splat_fold_no_nuw(i32 %x) {
757
754
ret i32 %t
758
755
}
759
756
760
- ; Negative test
757
+ ; Negative test
761
758
762
759
define i32 @mul_splat_fold_no_flags (i32 %x ) {
763
760
; CHECK-LABEL: @mul_splat_fold_no_flags(
0 commit comments