@@ -166,9 +166,9 @@ define signext i32 @addmuladd_multiuse(i32 signext %a) {
166
166
; CHECK-LABEL: addmuladd_multiuse:
167
167
; CHECK: // %bb.0:
168
168
; CHECK-NEXT: mov w8, #324 // =0x144
169
+ ; CHECK-NEXT: mov w9, #1300 // =0x514
170
+ ; CHECK-NEXT: madd w8, w0, w8, w9
169
171
; CHECK-NEXT: add w9, w0, #4
170
- ; CHECK-NEXT: mov w10, #4 // =0x4
171
- ; CHECK-NEXT: madd w8, w9, w8, w10
172
172
; CHECK-NEXT: eor w0, w9, w8
173
173
; CHECK-NEXT: ret
174
174
%tmp0 = add i32 %a , 4
@@ -198,11 +198,10 @@ define signext i32 @addmuladd_multiuse2(i32 signext %a) {
198
198
; CHECK-LABEL: addmuladd_multiuse2:
199
199
; CHECK: // %bb.0:
200
200
; CHECK-NEXT: mov w8, #324 // =0x144
201
- ; CHECK-NEXT: add w9, w0, #4
202
- ; CHECK-NEXT: mov w11, #4 // =0x4
203
- ; CHECK-NEXT: lsl w10, w9, #2
204
- ; CHECK-NEXT: madd w8, w9, w8, w11
205
- ; CHECK-NEXT: add w9, w10, #4
201
+ ; CHECK-NEXT: lsl w9, w0, #2
202
+ ; CHECK-NEXT: mov w10, #1300 // =0x514
203
+ ; CHECK-NEXT: madd w8, w0, w8, w10
204
+ ; CHECK-NEXT: add w9, w9, #20
206
205
; CHECK-NEXT: eor w0, w8, w9
207
206
; CHECK-NEXT: ret
208
207
%tmp0 = add i32 %a , 4
@@ -233,8 +232,8 @@ define signext i32 @addaddmuladd_multiuse(i32 signext %a, i32 %b) {
233
232
; CHECK: // %bb.0:
234
233
; CHECK-NEXT: mov w8, #324 // =0x144
235
234
; CHECK-NEXT: add w9, w0, #4
236
- ; CHECK-NEXT: madd w8, w9 , w8, w1
237
- ; CHECK-NEXT: add w8, w8, #4
235
+ ; CHECK-NEXT: madd w8, w0 , w8, w1
236
+ ; CHECK-NEXT: add w8, w8, #1300
238
237
; CHECK-NEXT: eor w0, w9, w8
239
238
; CHECK-NEXT: ret
240
239
%tmp0 = add i32 %a , 4
@@ -249,12 +248,11 @@ define signext i32 @addaddmuladd_multiuse2(i32 signext %a, i32 %b) {
249
248
; CHECK-LABEL: addaddmuladd_multiuse2:
250
249
; CHECK: // %bb.0:
251
250
; CHECK-NEXT: mov w8, #324 // =0x144
252
- ; CHECK-NEXT: add w9, w0, #4
253
- ; CHECK-NEXT: mov w10, #162 // =0xa2
254
- ; CHECK-NEXT: madd w8, w9, w8, w1
255
- ; CHECK-NEXT: madd w9, w9, w10, w1
256
- ; CHECK-NEXT: add w8, w8, #4
257
- ; CHECK-NEXT: add w9, w9, #4
251
+ ; CHECK-NEXT: mov w9, #162 // =0xa2
252
+ ; CHECK-NEXT: madd w8, w0, w8, w1
253
+ ; CHECK-NEXT: madd w9, w0, w9, w1
254
+ ; CHECK-NEXT: add w8, w8, #1300
255
+ ; CHECK-NEXT: add w9, w9, #652
258
256
; CHECK-NEXT: eor w0, w9, w8
259
257
; CHECK-NEXT: ret
260
258
%tmp0 = add i32 %a , 4
@@ -319,17 +317,17 @@ define void @addmuladd_gep(ptr %p, i64 %a) {
319
317
define i32 @addmuladd_gep2 (ptr %p , i32 %a ) {
320
318
; CHECK-LABEL: addmuladd_gep2:
321
319
; CHECK: // %bb.0:
320
+ ; CHECK-NEXT: mov w8, #3240 // =0xca8
322
321
; CHECK-NEXT: // kill: def $w1 killed $w1 def $x1
323
- ; CHECK-NEXT: sxtw x8, w1
324
- ; CHECK-NEXT: mov w9, #3240 // =0xca8
325
- ; CHECK-NEXT: add x8, x8, #1
326
- ; CHECK-NEXT: madd x9, x8, x9, x0
327
- ; CHECK-NEXT: ldr w9, [x9, #20]
328
- ; CHECK-NEXT: tbnz w9, #31, .LBB22_2
322
+ ; CHECK-NEXT: smaddl x8, w1, w8, x0
323
+ ; CHECK-NEXT: ldr w8, [x8, #3260]
324
+ ; CHECK-NEXT: tbnz w8, #31, .LBB22_2
329
325
; CHECK-NEXT: // %bb.1:
330
326
; CHECK-NEXT: mov w0, wzr
331
327
; CHECK-NEXT: ret
332
328
; CHECK-NEXT: .LBB22_2: // %then
329
+ ; CHECK-NEXT: sxtw x8, w1
330
+ ; CHECK-NEXT: add x8, x8, #1
333
331
; CHECK-NEXT: str x8, [x0]
334
332
; CHECK-NEXT: mov w0, #1 // =0x1
335
333
; CHECK-NEXT: ret
@@ -351,11 +349,10 @@ define signext i32 @addmuladd_multiuse2_nsw(i32 signext %a) {
351
349
; CHECK-LABEL: addmuladd_multiuse2_nsw:
352
350
; CHECK: // %bb.0:
353
351
; CHECK-NEXT: mov w8, #324 // =0x144
354
- ; CHECK-NEXT: add w9, w0, #4
355
- ; CHECK-NEXT: mov w11, #4 // =0x4
356
- ; CHECK-NEXT: lsl w10, w9, #2
357
- ; CHECK-NEXT: madd w8, w9, w8, w11
358
- ; CHECK-NEXT: add w9, w10, #4
352
+ ; CHECK-NEXT: lsl w9, w0, #2
353
+ ; CHECK-NEXT: mov w10, #1300 // =0x514
354
+ ; CHECK-NEXT: madd w8, w0, w8, w10
355
+ ; CHECK-NEXT: add w9, w9, #20
359
356
; CHECK-NEXT: eor w0, w8, w9
360
357
; CHECK-NEXT: ret
361
358
%tmp0 = add nsw i32 %a , 4
@@ -371,11 +368,10 @@ define signext i32 @addmuladd_multiuse2_nuw(i32 signext %a) {
371
368
; CHECK-LABEL: addmuladd_multiuse2_nuw:
372
369
; CHECK: // %bb.0:
373
370
; CHECK-NEXT: mov w8, #324 // =0x144
374
- ; CHECK-NEXT: add w9, w0, #4
375
- ; CHECK-NEXT: mov w11, #4 // =0x4
376
- ; CHECK-NEXT: lsl w10, w9, #2
377
- ; CHECK-NEXT: madd w8, w9, w8, w11
378
- ; CHECK-NEXT: add w9, w10, #4
371
+ ; CHECK-NEXT: lsl w9, w0, #2
372
+ ; CHECK-NEXT: mov w10, #1300 // =0x514
373
+ ; CHECK-NEXT: madd w8, w0, w8, w10
374
+ ; CHECK-NEXT: add w9, w9, #20
379
375
; CHECK-NEXT: eor w0, w8, w9
380
376
; CHECK-NEXT: ret
381
377
%tmp0 = add nuw i32 %a , 4
@@ -391,11 +387,10 @@ define signext i32 @addmuladd_multiuse2_nswnuw(i32 signext %a) {
391
387
; CHECK-LABEL: addmuladd_multiuse2_nswnuw:
392
388
; CHECK: // %bb.0:
393
389
; CHECK-NEXT: mov w8, #324 // =0x144
394
- ; CHECK-NEXT: add w9, w0, #4
395
- ; CHECK-NEXT: mov w11, #4 // =0x4
396
- ; CHECK-NEXT: lsl w10, w9, #2
397
- ; CHECK-NEXT: madd w8, w9, w8, w11
398
- ; CHECK-NEXT: add w9, w10, #4
390
+ ; CHECK-NEXT: lsl w9, w0, #2
391
+ ; CHECK-NEXT: mov w10, #1300 // =0x514
392
+ ; CHECK-NEXT: madd w8, w0, w8, w10
393
+ ; CHECK-NEXT: add w9, w9, #20
399
394
; CHECK-NEXT: eor w0, w8, w9
400
395
; CHECK-NEXT: ret
401
396
%tmp0 = add nsw nuw i32 %a , 4
0 commit comments