@@ -119,23 +119,17 @@ define void @msubpt1(i32 %index, i32 %elem) {
119
119
; CHECK-CPA-O0: // %bb.0: // %entry
120
120
; CHECK-CPA-O0-NEXT: // implicit-def: $x8
121
121
; 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
127
127
; CHECK-CPA-O0-NEXT: adrp x9, array2
128
128
; 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
131
129
; 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]
138
130
; 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]
139
133
; CHECK-CPA-O0-NEXT: str q2, [x8, #32]
140
134
; CHECK-CPA-O0-NEXT: str q1, [x8, #16]
141
135
; CHECK-CPA-O0-NEXT: str q0, [x8]
@@ -144,21 +138,17 @@ define void @msubpt1(i32 %index, i32 %elem) {
144
138
; CHECK-CPA-O3-LABEL: msubpt1:
145
139
; CHECK-CPA-O3: // %bb.0: // %entry
146
140
; 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]
162
152
; CHECK-CPA-O3-NEXT: ret
163
153
;
164
154
; CHECK-NOCPA-O0-LABEL: msubpt1:
@@ -205,29 +195,29 @@ entry:
205
195
define void @subpt1 (i32 %index , i32 %elem ) {
206
196
; CHECK-CPA-O0-LABEL: subpt1:
207
197
; 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
210
201
; CHECK-CPA-O0-NEXT: mov w8, #96 // =0x60
211
202
; 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
212
206
; 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
217
207
; CHECK-CPA-O0-NEXT: ldr q0, [x9, #32]
218
208
; CHECK-CPA-O0-NEXT: str q0, [x8]
219
209
; CHECK-CPA-O0-NEXT: ret
220
210
;
221
211
; CHECK-CPA-O3-LABEL: subpt1:
222
212
; CHECK-CPA-O3: // %bb.0: // %entry
223
213
; 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
226
215
; 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
231
221
; CHECK-CPA-O3-NEXT: str q0, [x8]
232
222
; CHECK-CPA-O3-NEXT: ret
233
223
;
@@ -264,28 +254,24 @@ entry:
264
254
define void @subpt2 (i32 %index , i32 %elem ) {
265
255
; CHECK-CPA-O0-LABEL: subpt2:
266
256
; 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
271
257
; CHECK-CPA-O0-NEXT: mov w8, #96 // =0x60
272
258
; 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
273
262
; CHECK-CPA-O0-NEXT: addpt x8, x9, x8
274
- ; CHECK-CPA-O0-NEXT: addpt x8, x8, x10, lsl #4
275
263
; CHECK-CPA-O0-NEXT: ldr q0, [x9, #32]
276
264
; CHECK-CPA-O0-NEXT: str q0, [x8]
277
265
; CHECK-CPA-O0-NEXT: ret
278
266
;
279
267
; CHECK-CPA-O3-LABEL: subpt2:
280
268
; 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
289
275
; CHECK-CPA-O3-NEXT: str q0, [x8]
290
276
; CHECK-CPA-O3-NEXT: ret
291
277
;
@@ -670,14 +656,13 @@ define hidden void @multidim() {
670
656
; CHECK-CPA-O0-NEXT: .cfi_offset w30, -16
671
657
; CHECK-CPA-O0-NEXT: adrp x8, b
672
658
; CHECK-CPA-O0-NEXT: ldrh w9, [x8, :lo12:b]
659
+ ; CHECK-CPA-O0-NEXT: // implicit-def: $x8
673
660
; 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
675
663
; CHECK-CPA-O0-NEXT: adrp x8, a
676
664
; 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
681
666
; CHECK-CPA-O0-NEXT: add w9, w9, #1
682
667
; CHECK-CPA-O0-NEXT: mov w9, w9
683
668
; CHECK-CPA-O0-NEXT: // kill: def $x9 killed $w9
@@ -697,13 +682,13 @@ define hidden void @multidim() {
697
682
; CHECK-CPA-O3-LABEL: multidim:
698
683
; CHECK-CPA-O3: // %bb.0: // %entry
699
684
; CHECK-CPA-O3-NEXT: adrp x8, b
700
- ; CHECK-CPA-O3-NEXT: mov w9, #2 // =0x2
701
685
; CHECK-CPA-O3-NEXT: adrp x10, a
702
686
; CHECK-CPA-O3-NEXT: add x10, x10, :lo12:a
703
687
; 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
706
689
; 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
707
692
; CHECK-CPA-O3-NEXT: addpt x8, x9, x8
708
693
; CHECK-CPA-O3-NEXT: ldrb w8, [x8]
709
694
; CHECK-CPA-O3-NEXT: cbz w8, .LBB14_2
0 commit comments