@@ -1080,7 +1080,7 @@ entry:
10801080define  i32  @ashr_shift_mul (i32  %x ) {
10811081; CHECK-LABEL: @ashr_shift_mul( 
10821082; CHECK-NEXT:    [[A:%.*]] = ashr exact i32 [[X:%.*]], 3 
1083- ; CHECK-NEXT:    [[RES:%.*]] = mul  i32 [[A ]], 9  
1083+ ; CHECK-NEXT:    [[RES:%.*]] = add  i32 [[X ]], [[A]]  
10841084; CHECK-NEXT:    ret i32 [[RES]] 
10851085; 
10861086  %a  = ashr  exact  i32  %x , 3 
@@ -1090,8 +1090,8 @@ define i32 @ashr_shift_mul(i32 %x) {
10901090
10911091define  i32  @ashr_shift_mul_nuw (i32  %x ) {
10921092; CHECK-LABEL: @ashr_shift_mul_nuw( 
1093- ; CHECK-NEXT:    [[A :%.*]] = ashr  exact i32 [[X:%.*]], 3 
1094- ; CHECK-NEXT:    [[RES:%.*]] = mul  nuw i32 [[A ]], 9  
1093+ ; CHECK-NEXT:    [[TMP1 :%.*]] = lshr  exact i32 [[X:%.*]], 3 
1094+ ; CHECK-NEXT:    [[RES:%.*]] = add  nuw i32 [[X ]], [[TMP1]]  
10951095; CHECK-NEXT:    ret i32 [[RES]] 
10961096; 
10971097  %a  = ashr  exact  i32  %x , 3 
@@ -1102,7 +1102,7 @@ define i32 @ashr_shift_mul_nuw(i32 %x) {
11021102define  i32  @ashr_shift_mul_nsw (i32  %x ) {
11031103; CHECK-LABEL: @ashr_shift_mul_nsw( 
11041104; CHECK-NEXT:    [[A:%.*]] = ashr exact i32 [[X:%.*]], 3 
1105- ; CHECK-NEXT:    [[RES:%.*]] = mul  nsw i32 [[A ]], 9  
1105+ ; CHECK-NEXT:    [[RES:%.*]] = add  nsw i32 [[X ]], [[A]]  
11061106; CHECK-NEXT:    ret i32 [[RES]] 
11071107; 
11081108  %a  = ashr  exact  i32  %x , 3 
@@ -1113,7 +1113,7 @@ define i32 @ashr_shift_mul_nsw(i32 %x) {
11131113define  i32  @lshr_shift_mul_nuw (i32  %x ) {
11141114; CHECK-LABEL: @lshr_shift_mul_nuw( 
11151115; CHECK-NEXT:    [[A:%.*]] = lshr exact i32 [[X:%.*]], 3 
1116- ; CHECK-NEXT:    [[RES:%.*]] = mul  nuw i32 [[A ]], 9  
1116+ ; CHECK-NEXT:    [[RES:%.*]] = add  nuw i32 [[X ]], [[A]]  
11171117; CHECK-NEXT:    ret i32 [[RES]] 
11181118; 
11191119  %a  = lshr  exact  i32  %x , 3 
@@ -1124,7 +1124,7 @@ define i32 @lshr_shift_mul_nuw(i32 %x) {
11241124define  i32  @lshr_shift_mul (i32  %x ) {
11251125; CHECK-LABEL: @lshr_shift_mul( 
11261126; CHECK-NEXT:    [[A:%.*]] = lshr exact i32 [[X:%.*]], 3 
1127- ; CHECK-NEXT:    [[RES:%.*]] = mul  i32 [[A ]], 9  
1127+ ; CHECK-NEXT:    [[RES:%.*]] = add  i32 [[X ]], [[A]]  
11281128; CHECK-NEXT:    ret i32 [[RES]] 
11291129; 
11301130  %a  = lshr  exact  i32  %x , 3 
@@ -1135,7 +1135,7 @@ define i32 @lshr_shift_mul(i32 %x) {
11351135define  i32  @lshr_shift_mul_nsw (i32  %x ) {
11361136; CHECK-LABEL: @lshr_shift_mul_nsw( 
11371137; CHECK-NEXT:    [[A:%.*]] = lshr exact i32 [[X:%.*]], 3 
1138- ; CHECK-NEXT:    [[RES:%.*]] = mul nuw  nsw i32 [[A ]], 9  
1138+ ; CHECK-NEXT:    [[RES:%.*]] = add  nsw i32 [[X ]], [[A]]  
11391139; CHECK-NEXT:    ret i32 [[RES]] 
11401140; 
11411141  %a  = lshr  exact  i32  %x , 3 
@@ -1173,7 +1173,7 @@ define i32 @lshr_multiuse(i32 %x) {
11731173; CHECK-LABEL: @lshr_multiuse( 
11741174; CHECK-NEXT:    [[A:%.*]] = lshr exact i32 [[X:%.*]], 3 
11751175; CHECK-NEXT:    call void @use(i32 [[A]]) 
1176- ; CHECK-NEXT:    [[RES:%.*]] = mul nuw  nsw i32 [[A ]], 9  
1176+ ; CHECK-NEXT:    [[RES:%.*]] = add  nsw i32 [[X ]], [[A]]  
11771177; CHECK-NEXT:    ret i32 [[RES]] 
11781178; 
11791179  %a  = lshr  exact  i32  %x , 3 
@@ -1186,7 +1186,7 @@ define i32 @lshr_multiuse_no_flags(i32 %x) {
11861186; CHECK-LABEL: @lshr_multiuse_no_flags( 
11871187; CHECK-NEXT:    [[A:%.*]] = lshr exact i32 [[X:%.*]], 3 
11881188; CHECK-NEXT:    call void @use(i32 [[A]]) 
1189- ; CHECK-NEXT:    [[RES:%.*]] = mul  i32 [[A ]], 9  
1189+ ; CHECK-NEXT:    [[RES:%.*]] = add  i32 [[X ]], [[A]]  
11901190; CHECK-NEXT:    ret i32 [[RES]] 
11911191; 
11921192  %a  = lshr  exact  i32  %x , 3 
@@ -1199,7 +1199,7 @@ define i32 @ashr_multiuse_no_flags(i32 %x) {
11991199; CHECK-LABEL: @ashr_multiuse_no_flags( 
12001200; CHECK-NEXT:    [[A:%.*]] = ashr exact i32 [[X:%.*]], 3 
12011201; CHECK-NEXT:    call void @use(i32 [[A]]) 
1202- ; CHECK-NEXT:    [[RES:%.*]] = mul  i32 [[A ]], 9  
1202+ ; CHECK-NEXT:    [[RES:%.*]] = add  i32 [[X ]], [[A]]  
12031203; CHECK-NEXT:    ret i32 [[RES]] 
12041204; 
12051205  %a  = ashr  exact  i32  %x , 3 
@@ -1212,7 +1212,7 @@ define i32 @ashr_multiuse(i32 %x) {
12121212; CHECK-LABEL: @ashr_multiuse( 
12131213; CHECK-NEXT:    [[A:%.*]] = ashr exact i32 [[X:%.*]], 3 
12141214; CHECK-NEXT:    call void @use(i32 [[A]]) 
1215- ; CHECK-NEXT:    [[RES:%.*]] = mul  nsw i32 [[A ]], 9  
1215+ ; CHECK-NEXT:    [[RES:%.*]] = add  nsw i32 [[X ]], [[A]]  
12161216; CHECK-NEXT:    ret i32 [[RES]] 
12171217; 
12181218  %a  = ashr  exact  i32  %x , 3 
0 commit comments