@@ -259,9 +259,8 @@ define i32 @PR44028(i32 %x) {
259
259
260
260
define i64 @lshr_mul (i64 %0 ) {
261
261
; CHECK-LABEL: @lshr_mul(
262
- ; CHECK-NEXT: [[TMP2:%.*]] = mul nuw i64 [[TMP0:%.*]], 52
263
- ; CHECK-NEXT: [[TMP3:%.*]] = lshr exact i64 [[TMP2]], 2
264
- ; CHECK-NEXT: ret i64 [[TMP3]]
262
+ ; CHECK-NEXT: [[TMP2:%.*]] = mul nuw i64 [[TMP0:%.*]], 13
263
+ ; CHECK-NEXT: ret i64 [[TMP2]]
265
264
;
266
265
%2 = mul nuw i64 %0 , 52
267
266
%3 = lshr i64 %2 , 2
@@ -270,9 +269,8 @@ define i64 @lshr_mul(i64 %0) {
270
269
271
270
define i64 @lshr_mul_nuw_nsw (i64 %0 ) {
272
271
; CHECK-LABEL: @lshr_mul_nuw_nsw(
273
- ; CHECK-NEXT: [[TMP2:%.*]] = mul nuw nsw i64 [[TMP0:%.*]], 52
274
- ; CHECK-NEXT: [[TMP3:%.*]] = lshr exact i64 [[TMP2]], 2
275
- ; CHECK-NEXT: ret i64 [[TMP3]]
272
+ ; CHECK-NEXT: [[TMP2:%.*]] = mul nuw nsw i64 [[TMP0:%.*]], 13
273
+ ; CHECK-NEXT: ret i64 [[TMP2]]
276
274
;
277
275
%2 = mul nuw nsw i64 %0 , 52
278
276
%3 = lshr i64 %2 , 2
@@ -281,9 +279,8 @@ define i64 @lshr_mul_nuw_nsw(i64 %0) {
281
279
282
280
define <4 x i32 > @lshr_mul_vector (<4 x i32 > %0 ) {
283
281
; CHECK-LABEL: @lshr_mul_vector(
284
- ; CHECK-NEXT: [[TMP2:%.*]] = mul nuw <4 x i32> [[TMP0:%.*]], <i32 52, i32 52, i32 52, i32 52>
285
- ; CHECK-NEXT: [[TMP3:%.*]] = lshr exact <4 x i32> [[TMP2]], <i32 2, i32 2, i32 2, i32 2>
286
- ; CHECK-NEXT: ret <4 x i32> [[TMP3]]
282
+ ; CHECK-NEXT: [[TMP2:%.*]] = mul nuw <4 x i32> [[TMP0:%.*]], <i32 13, i32 13, i32 13, i32 13>
283
+ ; CHECK-NEXT: ret <4 x i32> [[TMP2]]
287
284
;
288
285
%2 = mul nuw <4 x i32 > %0 , <i32 52 , i32 52 , i32 52 , i32 52 >
289
286
%3 = lshr <4 x i32 > %2 , <i32 2 , i32 2 , i32 2 , i32 2 >
@@ -324,3 +321,14 @@ define i64 @lshr_mul_negative_nonuw(i64 %0) {
324
321
%3 = lshr i64 %2 , 2
325
322
ret i64 %3
326
323
}
324
+
325
+ define i64 @lshr_mul_negative_nsw (i64 %0 ) {
326
+ ; CHECK-LABEL: @lshr_mul_negative_nsw(
327
+ ; CHECK-NEXT: [[TMP2:%.*]] = mul nsw i64 [[TMP0:%.*]], 52
328
+ ; CHECK-NEXT: [[TMP3:%.*]] = lshr exact i64 [[TMP2]], 2
329
+ ; CHECK-NEXT: ret i64 [[TMP3]]
330
+ ;
331
+ %2 = mul nsw i64 %0 , 52
332
+ %3 = lshr i64 %2 , 2
333
+ ret i64 %3
334
+ }
0 commit comments