@@ -119,23 +119,17 @@ define void @msubpt1(i32 %index, i32 %elem) {
119119; CHECK-CPA-O0: // %bb.0: // %entry
120120; CHECK-CPA-O0-NEXT: // implicit-def: $x8
121121; CHECK-CPA-O0-NEXT: mov w8, w0
122- ; CHECK-CPA-O0-NEXT: sxtw x9 , w8
123- ; CHECK-CPA-O0-NEXT: mov x8, xzr
124- ; CHECK-CPA-O0-NEXT: subs x8, x8, x9
125- ; CHECK-CPA-O0-NEXT: lsl x8, x8, #1
126- ; CHECK-CPA-O0-NEXT: subs x10 , x8, x9
122+ ; CHECK-CPA-O0-NEXT: sxtw x8 , w8
123+ ; CHECK-CPA-O0-NEXT: mov w9, #48 // =0x30
124+ ; CHECK-CPA-O0-NEXT: // kill: def $x9 killed $w9
125+ ; CHECK-CPA-O0-NEXT: mneg x8, x8, x9
126+ ; CHECK-CPA-O0-NEXT: add x8 , x8, #288
127127; CHECK-CPA-O0-NEXT: adrp x9, array2
128128; CHECK-CPA-O0-NEXT: add x9, x9, :lo12:array2
129- ; CHECK-CPA-O0-NEXT: mov w8, #288 // =0x120
130- ; CHECK-CPA-O0-NEXT: // kill: def $x8 killed $w8
131129; CHECK-CPA-O0-NEXT: addpt x8, x9, x8
132- ; CHECK-CPA-O0-NEXT: addpt x8, x8, x10, lsl #4
133- ; CHECK-CPA-O0-NEXT: mov w10, #96 // =0x60
134- ; CHECK-CPA-O0-NEXT: // kill: def $x10 killed $w10
135- ; CHECK-CPA-O0-NEXT: addpt x10, x9, x10
136- ; CHECK-CPA-O0-NEXT: ldr q1, [x10, #16]
137- ; CHECK-CPA-O0-NEXT: ldr q2, [x10, #32]
138130; CHECK-CPA-O0-NEXT: ldr q0, [x9, #96]
131+ ; CHECK-CPA-O0-NEXT: ldr q1, [x9, #112]
132+ ; CHECK-CPA-O0-NEXT: ldr q2, [x9, #128]
139133; CHECK-CPA-O0-NEXT: str q2, [x8, #32]
140134; CHECK-CPA-O0-NEXT: str q1, [x8, #16]
141135; CHECK-CPA-O0-NEXT: str q0, [x8]
@@ -144,21 +138,17 @@ define void @msubpt1(i32 %index, i32 %elem) {
144138; CHECK-CPA-O3-LABEL: msubpt1:
145139; CHECK-CPA-O3: // %bb.0: // %entry
146140; CHECK-CPA-O3-NEXT: // kill: def $w0 killed $w0 def $x0
147- ; CHECK-CPA-O3-NEXT: sxtw x9, w0
148- ; CHECK-CPA-O3-NEXT: adrp x8, array2
149- ; CHECK-CPA-O3-NEXT: add x8, x8, :lo12:array2
150- ; CHECK-CPA-O3-NEXT: mov w11, #96 // =0x60
151- ; CHECK-CPA-O3-NEXT: mov w12, #288 // =0x120
152- ; CHECK-CPA-O3-NEXT: ldr q2, [x8, #96]
153- ; CHECK-CPA-O3-NEXT: neg x10, x9
154- ; CHECK-CPA-O3-NEXT: addpt x11, x8, x11
155- ; CHECK-CPA-O3-NEXT: lsl x10, x10, #1
156- ; CHECK-CPA-O3-NEXT: ldp q1, q0, [x11, #16]
157- ; CHECK-CPA-O3-NEXT: sub x9, x10, x9
158- ; CHECK-CPA-O3-NEXT: addpt x10, x8, x12
159- ; CHECK-CPA-O3-NEXT: addpt x9, x10, x9, lsl #4
160- ; CHECK-CPA-O3-NEXT: stp q1, q0, [x9, #16]
161- ; CHECK-CPA-O3-NEXT: str q2, [x9]
141+ ; CHECK-CPA-O3-NEXT: sxtw x8, w0
142+ ; CHECK-CPA-O3-NEXT: mov w9, #48 // =0x30
143+ ; CHECK-CPA-O3-NEXT: mneg x8, x8, x9
144+ ; CHECK-CPA-O3-NEXT: adrp x9, array2
145+ ; CHECK-CPA-O3-NEXT: add x9, x9, :lo12:array2
146+ ; CHECK-CPA-O3-NEXT: ldp q1, q0, [x9, #112]
147+ ; CHECK-CPA-O3-NEXT: ldr q2, [x9, #96]
148+ ; CHECK-CPA-O3-NEXT: add x8, x8, #288
149+ ; CHECK-CPA-O3-NEXT: addpt x8, x9, x8
150+ ; CHECK-CPA-O3-NEXT: stp q1, q0, [x8, #16]
151+ ; CHECK-CPA-O3-NEXT: str q2, [x8]
162152; CHECK-CPA-O3-NEXT: ret
163153;
164154; CHECK-NOCPA-O0-LABEL: msubpt1:
@@ -205,29 +195,29 @@ entry:
205195define void @subpt1 (i32 %index , i32 %elem ) {
206196; CHECK-CPA-O0-LABEL: subpt1:
207197; CHECK-CPA-O0: // %bb.0: // %entry
208- ; CHECK-CPA-O0-NEXT: adrp x9, array
209- ; CHECK-CPA-O0-NEXT: add x9, x9, :lo12:array
198+ ; CHECK-CPA-O0-NEXT: // implicit-def: $x8
199+ ; CHECK-CPA-O0-NEXT: mov w8, w0
200+ ; CHECK-CPA-O0-NEXT: sxtw x9, w8
210201; CHECK-CPA-O0-NEXT: mov w8, #96 // =0x60
211202; CHECK-CPA-O0-NEXT: // kill: def $x8 killed $w8
203+ ; CHECK-CPA-O0-NEXT: subs x8, x8, x9, lsl #8
204+ ; CHECK-CPA-O0-NEXT: adrp x9, array
205+ ; CHECK-CPA-O0-NEXT: add x9, x9, :lo12:array
212206; CHECK-CPA-O0-NEXT: addpt x8, x9, x8
213- ; CHECK-CPA-O0-NEXT: // implicit-def: $x10
214- ; CHECK-CPA-O0-NEXT: mov w10, w0
215- ; CHECK-CPA-O0-NEXT: sbfiz x10, x10, #8, #32
216- ; CHECK-CPA-O0-NEXT: subpt x8, x8, x10
217207; CHECK-CPA-O0-NEXT: ldr q0, [x9, #32]
218208; CHECK-CPA-O0-NEXT: str q0, [x8]
219209; CHECK-CPA-O0-NEXT: ret
220210;
221211; CHECK-CPA-O3-LABEL: subpt1:
222212; CHECK-CPA-O3: // %bb.0: // %entry
223213; CHECK-CPA-O3-NEXT: // kill: def $w0 killed $w0 def $x0
224- ; CHECK-CPA-O3-NEXT: adrp x8, array
225- ; CHECK-CPA-O3-NEXT: add x8, x8, :lo12:array
214+ ; CHECK-CPA-O3-NEXT: sxtw x8, w0
226215; CHECK-CPA-O3-NEXT: mov w9, #96 // =0x60
227- ; CHECK-CPA-O3-NEXT: sbfiz x10, x0, #8, #32
228- ; CHECK-CPA-O3-NEXT: addpt x9, x8, x9
229- ; CHECK-CPA-O3-NEXT: ldr q0, [x8, #32]
230- ; CHECK-CPA-O3-NEXT: subpt x8, x9, x10
216+ ; CHECK-CPA-O3-NEXT: sub x8, x9, x8, lsl #8
217+ ; CHECK-CPA-O3-NEXT: adrp x9, array
218+ ; CHECK-CPA-O3-NEXT: add x9, x9, :lo12:array
219+ ; CHECK-CPA-O3-NEXT: ldr q0, [x9, #32]
220+ ; CHECK-CPA-O3-NEXT: addpt x8, x9, x8
231221; CHECK-CPA-O3-NEXT: str q0, [x8]
232222; CHECK-CPA-O3-NEXT: ret
233223;
@@ -264,28 +254,24 @@ entry:
264254define void @subpt2 (i32 %index , i32 %elem ) {
265255; CHECK-CPA-O0-LABEL: subpt2:
266256; CHECK-CPA-O0: // %bb.0: // %entry
267- ; CHECK-CPA-O0-NEXT: mov x8, xzr
268- ; CHECK-CPA-O0-NEXT: subs x10, x8, w0, sxtw
269- ; CHECK-CPA-O0-NEXT: adrp x9, array
270- ; CHECK-CPA-O0-NEXT: add x9, x9, :lo12:array
271257; CHECK-CPA-O0-NEXT: mov w8, #96 // =0x60
272258; CHECK-CPA-O0-NEXT: // kill: def $x8 killed $w8
259+ ; CHECK-CPA-O0-NEXT: subs x8, x8, w0, sxtw #4
260+ ; CHECK-CPA-O0-NEXT: adrp x9, array
261+ ; CHECK-CPA-O0-NEXT: add x9, x9, :lo12:array
273262; CHECK-CPA-O0-NEXT: addpt x8, x9, x8
274- ; CHECK-CPA-O0-NEXT: addpt x8, x8, x10, lsl #4
275263; CHECK-CPA-O0-NEXT: ldr q0, [x9, #32]
276264; CHECK-CPA-O0-NEXT: str q0, [x8]
277265; CHECK-CPA-O0-NEXT: ret
278266;
279267; CHECK-CPA-O3-LABEL: subpt2:
280268; CHECK-CPA-O3: // %bb.0: // %entry
281- ; CHECK-CPA-O3-NEXT: mov x8, xzr
282- ; CHECK-CPA-O3-NEXT: mov w9, #96 // =0x60
283- ; CHECK-CPA-O3-NEXT: adrp x10, array
284- ; CHECK-CPA-O3-NEXT: add x10, x10, :lo12:array
285- ; CHECK-CPA-O3-NEXT: sub x8, x8, w0, sxtw
286- ; CHECK-CPA-O3-NEXT: addpt x9, x10, x9
287- ; CHECK-CPA-O3-NEXT: ldr q0, [x10, #32]
288- ; CHECK-CPA-O3-NEXT: addpt x8, x9, x8, lsl #4
269+ ; CHECK-CPA-O3-NEXT: mov w8, #96 // =0x60
270+ ; CHECK-CPA-O3-NEXT: adrp x9, array
271+ ; CHECK-CPA-O3-NEXT: add x9, x9, :lo12:array
272+ ; CHECK-CPA-O3-NEXT: sub x8, x8, w0, sxtw #4
273+ ; CHECK-CPA-O3-NEXT: ldr q0, [x9, #32]
274+ ; CHECK-CPA-O3-NEXT: addpt x8, x9, x8
289275; CHECK-CPA-O3-NEXT: str q0, [x8]
290276; CHECK-CPA-O3-NEXT: ret
291277;
@@ -670,14 +656,13 @@ define hidden void @multidim() {
670656; CHECK-CPA-O0-NEXT: .cfi_offset w30, -16
671657; CHECK-CPA-O0-NEXT: adrp x8, b
672658; CHECK-CPA-O0-NEXT: ldrh w9, [x8, :lo12:b]
659+ ; CHECK-CPA-O0-NEXT: // implicit-def: $x8
673660; CHECK-CPA-O0-NEXT: mov w8, w9
674- ; CHECK-CPA-O0-NEXT: mov w10, w8
661+ ; CHECK-CPA-O0-NEXT: ubfiz x8, x8, #1, #32
662+ ; CHECK-CPA-O0-NEXT: add x10, x8, #2
675663; CHECK-CPA-O0-NEXT: adrp x8, a
676664; CHECK-CPA-O0-NEXT: add x8, x8, :lo12:a
677- ; CHECK-CPA-O0-NEXT: mov w11, #2 // =0x2
678- ; CHECK-CPA-O0-NEXT: // kill: def $x11 killed $w11
679- ; CHECK-CPA-O0-NEXT: addpt x8, x8, x11
680- ; CHECK-CPA-O0-NEXT: addpt x8, x8, x10, lsl #1
665+ ; CHECK-CPA-O0-NEXT: addpt x8, x8, x10
681666; CHECK-CPA-O0-NEXT: add w9, w9, #1
682667; CHECK-CPA-O0-NEXT: mov w9, w9
683668; CHECK-CPA-O0-NEXT: // kill: def $x9 killed $w9
@@ -697,13 +682,13 @@ define hidden void @multidim() {
697682; CHECK-CPA-O3-LABEL: multidim:
698683; CHECK-CPA-O3: // %bb.0: // %entry
699684; CHECK-CPA-O3-NEXT: adrp x8, b
700- ; CHECK-CPA-O3-NEXT: mov w9, #2 // =0x2
701685; CHECK-CPA-O3-NEXT: adrp x10, a
702686; CHECK-CPA-O3-NEXT: add x10, x10, :lo12:a
703687; CHECK-CPA-O3-NEXT: ldrh w8, [x8, :lo12:b]
704- ; CHECK-CPA-O3-NEXT: addpt x9, x10, x9
705- ; CHECK-CPA-O3-NEXT: addpt x9, x9, x8, lsl #1
688+ ; CHECK-CPA-O3-NEXT: lsl x9, x8, #1
706689; CHECK-CPA-O3-NEXT: add x8, x8, #1
690+ ; CHECK-CPA-O3-NEXT: add x9, x9, #2
691+ ; CHECK-CPA-O3-NEXT: addpt x9, x10, x9
707692; CHECK-CPA-O3-NEXT: addpt x8, x9, x8
708693; CHECK-CPA-O3-NEXT: ldrb w8, [x8]
709694; CHECK-CPA-O3-NEXT: cbz w8, .LBB14_2
0 commit comments