@@ -21,8 +21,8 @@ define i4 @nuw_preserve_non_zero(i4 %a, i4 %b, i4 %c) {
21
21
; CHECK-NEXT: [[A0:%.*]] = add nuw i4 [[A]], 1
22
22
; CHECK-NEXT: [[B0:%.*]] = add nuw i4 [[B]], 1
23
23
; CHECK-NEXT: [[C0:%.*]] = add nuw i4 [[C]], 1
24
- ; CHECK-NEXT: [[V0:%.*]] = mul i4 [[B0]], [[A0]]
25
- ; CHECK-NEXT: [[V1:%.*]] = mul i4 [[V0]], [[C0]]
24
+ ; CHECK-NEXT: [[V0:%.*]] = mul nuw i4 [[B0]], [[A0]]
25
+ ; CHECK-NEXT: [[V1:%.*]] = mul nuw i4 [[V0]], [[C0]]
26
26
; CHECK-NEXT: ret i4 [[V1]]
27
27
;
28
28
%a0 = add nuw i4 %a , 1
@@ -40,9 +40,9 @@ define i4 @re_order_mul_nuw(i4 %xx0, i4 %xx1, i4 %xx2, i4 %xx3) {
40
40
; CHECK-NEXT: [[X1:%.*]] = add nuw i4 [[XX1]], 1
41
41
; CHECK-NEXT: [[X2:%.*]] = add nuw i4 [[XX2]], 1
42
42
; CHECK-NEXT: [[X3:%.*]] = add nuw i4 [[XX3]], 1
43
- ; CHECK-NEXT: [[MUL_B:%.*]] = mul i4 [[X1]], [[X0]]
44
- ; CHECK-NEXT: [[MUL_A:%.*]] = mul i4 [[MUL_B]], [[X2]]
45
- ; CHECK-NEXT: [[MUL_C:%.*]] = mul i4 [[MUL_A]], [[X3]]
43
+ ; CHECK-NEXT: [[MUL_B:%.*]] = mul nuw i4 [[X1]], [[X0]]
44
+ ; CHECK-NEXT: [[MUL_A:%.*]] = mul nuw i4 [[MUL_B]], [[X2]]
45
+ ; CHECK-NEXT: [[MUL_C:%.*]] = mul nuw i4 [[MUL_A]], [[X3]]
46
46
; CHECK-NEXT: ret i4 [[MUL_C]]
47
47
;
48
48
%x0 = add nuw i4 %xx0 , 1
@@ -88,9 +88,9 @@ define i4 @re_order_mul_nsw(i4 %xx0, i4 %xx1, i4 %xx2, i4 %xx3) {
88
88
; CHECK-NEXT: [[X1:%.*]] = call i4 @llvm.smax.i4(i4 [[X1_NZ]], i4 1)
89
89
; CHECK-NEXT: [[X2:%.*]] = call i4 @llvm.smax.i4(i4 [[X2_NZ]], i4 1)
90
90
; CHECK-NEXT: [[X3:%.*]] = call i4 @llvm.smax.i4(i4 [[X3_NZ]], i4 1)
91
- ; CHECK-NEXT: [[MUL_B:%.*]] = mul i4 [[X1]], [[X0]]
92
- ; CHECK-NEXT: [[MUL_A:%.*]] = mul i4 [[MUL_B]], [[X2]]
93
- ; CHECK-NEXT: [[MUL_C:%.*]] = mul i4 [[MUL_A]], [[X3]]
91
+ ; CHECK-NEXT: [[MUL_B:%.*]] = mul nsw i4 [[X1]], [[X0]]
92
+ ; CHECK-NEXT: [[MUL_A:%.*]] = mul nsw i4 [[MUL_B]], [[X2]]
93
+ ; CHECK-NEXT: [[MUL_C:%.*]] = mul nsw i4 [[MUL_A]], [[X3]]
94
94
; CHECK-NEXT: ret i4 [[MUL_C]]
95
95
;
96
96
%x0_nz = add nuw i4 %xx0 , 1
@@ -114,9 +114,9 @@ define i4 @re_order_mul_nsw_nuw(i4 %xx0, i4 %xx1, i4 %xx2, i4 %xx3) {
114
114
; CHECK-NEXT: [[X1:%.*]] = add nuw i4 [[XX1]], 1
115
115
; CHECK-NEXT: [[X2:%.*]] = add nuw i4 [[XX2]], 1
116
116
; CHECK-NEXT: [[X3:%.*]] = add nuw i4 [[XX3]], 1
117
- ; CHECK-NEXT: [[MUL_B:%.*]] = mul i4 [[X1]], [[X0]]
118
- ; CHECK-NEXT: [[MUL_A:%.*]] = mul i4 [[MUL_B]], [[X2]]
119
- ; CHECK-NEXT: [[MUL_C:%.*]] = mul i4 [[MUL_A]], [[X3]]
117
+ ; CHECK-NEXT: [[MUL_B:%.*]] = mul nuw nsw i4 [[X1]], [[X0]]
118
+ ; CHECK-NEXT: [[MUL_A:%.*]] = mul nuw nsw i4 [[MUL_B]], [[X2]]
119
+ ; CHECK-NEXT: [[MUL_C:%.*]] = mul nuw nsw i4 [[MUL_A]], [[X3]]
120
120
; CHECK-NEXT: ret i4 [[MUL_C]]
121
121
;
122
122
%x0 = add nuw i4 %xx0 , 1
0 commit comments