@@ -135,9 +135,8 @@ define i32 @fold_add_udiv_urem(i32 noundef %val) {
135
135
; CHECK-LABEL: @fold_add_udiv_urem(
136
136
; CHECK-NEXT: entry:
137
137
; CHECK-NEXT: [[DIV:%.*]] = udiv i32 [[VAL:%.*]], 10
138
- ; CHECK-NEXT: [[SHL:%.*]] = shl i32 [[DIV]], 4
139
- ; CHECK-NEXT: [[REM:%.*]] = urem i32 [[VAL]], 10
140
- ; CHECK-NEXT: [[ADD:%.*]] = or disjoint i32 [[SHL]], [[REM]]
138
+ ; CHECK-NEXT: [[TMP0:%.*]] = mul nuw i32 [[DIV]], 6
139
+ ; CHECK-NEXT: [[ADD:%.*]] = add i32 [[TMP0]], [[VAL]]
141
140
; CHECK-NEXT: ret i32 [[ADD]]
142
141
;
143
142
entry:
@@ -151,9 +150,8 @@ define i32 @fold_add_sdiv_srem(i32 noundef %val) {
151
150
; CHECK-LABEL: @fold_add_sdiv_srem(
152
151
; CHECK-NEXT: entry:
153
152
; CHECK-NEXT: [[DIV:%.*]] = sdiv i32 [[VAL:%.*]], 10
154
- ; CHECK-NEXT: [[SHL:%.*]] = shl i32 [[DIV]], 4
155
- ; CHECK-NEXT: [[REM:%.*]] = srem i32 [[VAL]], 10
156
- ; CHECK-NEXT: [[ADD:%.*]] = add i32 [[SHL]], [[REM]]
153
+ ; CHECK-NEXT: [[TMP0:%.*]] = mul nsw i32 [[DIV]], 6
154
+ ; CHECK-NEXT: [[ADD:%.*]] = add i32 [[TMP0]], [[VAL]]
157
155
; CHECK-NEXT: ret i32 [[ADD]]
158
156
;
159
157
entry:
@@ -166,11 +164,7 @@ entry:
166
164
define i32 @fold_add_udiv_urem_to_mul (i32 noundef %val ) {
167
165
; CHECK-LABEL: @fold_add_udiv_urem_to_mul(
168
166
; CHECK-NEXT: entry:
169
- ; CHECK-NEXT: [[DIV:%.*]] = udiv i32 [[VAL:%.*]], 7
170
- ; CHECK-NEXT: [[MUL1:%.*]] = mul i32 [[DIV]], 21
171
- ; CHECK-NEXT: [[REM:%.*]] = urem i32 [[VAL]], 7
172
- ; CHECK-NEXT: [[MUL2:%.*]] = mul nuw nsw i32 [[REM]], 3
173
- ; CHECK-NEXT: [[ADD:%.*]] = add i32 [[MUL1]], [[MUL2]]
167
+ ; CHECK-NEXT: [[ADD:%.*]] = mul i32 [[VAL:%.*]], 3
174
168
; CHECK-NEXT: ret i32 [[ADD]]
175
169
;
176
170
entry:
@@ -184,12 +178,9 @@ entry:
184
178
define i32 @fold_add_udiv_urem_to_mul_multiuse (i32 noundef %val ) {
185
179
; CHECK-LABEL: @fold_add_udiv_urem_to_mul_multiuse(
186
180
; CHECK-NEXT: entry:
187
- ; CHECK-NEXT: [[DIV:%.*]] = udiv i32 [[VAL:%.*]], 7
188
- ; CHECK-NEXT: [[MUL1:%.*]] = mul i32 [[DIV]], 21
189
- ; CHECK-NEXT: [[REM:%.*]] = urem i32 [[VAL]], 7
181
+ ; CHECK-NEXT: [[REM:%.*]] = urem i32 [[VAL:%.*]], 7
190
182
; CHECK-NEXT: call void @use(i32 [[REM]])
191
- ; CHECK-NEXT: [[MUL2:%.*]] = mul nuw nsw i32 [[REM]], 3
192
- ; CHECK-NEXT: [[ADD:%.*]] = add i32 [[MUL1]], [[MUL2]]
183
+ ; CHECK-NEXT: [[ADD:%.*]] = mul i32 [[VAL]], 3
193
184
; CHECK-NEXT: ret i32 [[ADD]]
194
185
;
195
186
entry:
@@ -205,9 +196,8 @@ define i32 @fold_add_udiv_urem_commuted(i32 noundef %val) {
205
196
; CHECK-LABEL: @fold_add_udiv_urem_commuted(
206
197
; CHECK-NEXT: entry:
207
198
; CHECK-NEXT: [[DIV:%.*]] = udiv i32 [[VAL:%.*]], 10
208
- ; CHECK-NEXT: [[SHL:%.*]] = shl i32 [[DIV]], 4
209
- ; CHECK-NEXT: [[REM:%.*]] = urem i32 [[VAL]], 10
210
- ; CHECK-NEXT: [[ADD:%.*]] = or disjoint i32 [[REM]], [[SHL]]
199
+ ; CHECK-NEXT: [[TMP0:%.*]] = mul nuw i32 [[DIV]], 6
200
+ ; CHECK-NEXT: [[ADD:%.*]] = add i32 [[TMP0]], [[VAL]]
211
201
; CHECK-NEXT: ret i32 [[ADD]]
212
202
;
213
203
entry:
@@ -221,9 +211,8 @@ define i32 @fold_add_udiv_urem_or_disjoint(i32 noundef %val) {
221
211
; CHECK-LABEL: @fold_add_udiv_urem_or_disjoint(
222
212
; CHECK-NEXT: entry:
223
213
; CHECK-NEXT: [[DIV:%.*]] = udiv i32 [[VAL:%.*]], 10
224
- ; CHECK-NEXT: [[SHL:%.*]] = shl i32 [[DIV]], 4
225
- ; CHECK-NEXT: [[REM:%.*]] = urem i32 [[VAL]], 10
226
- ; CHECK-NEXT: [[ADD:%.*]] = or disjoint i32 [[SHL]], [[REM]]
214
+ ; CHECK-NEXT: [[TMP0:%.*]] = mul nuw i32 [[DIV]], 6
215
+ ; CHECK-NEXT: [[ADD:%.*]] = add i32 [[TMP0]], [[VAL]]
227
216
; CHECK-NEXT: ret i32 [[ADD]]
228
217
;
229
218
entry:
0 commit comments