@@ -22,11 +22,9 @@ entry:
22
22
define <vscale x 16 x i8 > @i8_4s_1v (ptr %b ) {
23
23
; CHECK-LABEL: i8_4s_1v:
24
24
; CHECK: // %bb.0: // %entry
25
- ; CHECK-NEXT: rdvl x8, #1
26
25
; CHECK-NEXT: ptrue p0.b
27
- ; CHECK-NEXT: mov w9, #4 // =0x4
28
- ; CHECK-NEXT: add x8, x0, x8
29
- ; CHECK-NEXT: ld1b { z0.b }, p0/z, [x8, x9]
26
+ ; CHECK-NEXT: add x8, x0, #4
27
+ ; CHECK-NEXT: ld1b { z0.b }, p0/z, [x8, #1, mul vl]
30
28
; CHECK-NEXT: ret
31
29
entry:
32
30
%add.ptr = getelementptr inbounds i8 , ptr %b , i64 4
@@ -58,11 +56,9 @@ entry:
58
56
define <vscale x 8 x i16 > @i16_8s_1v (ptr %b ) {
59
57
; CHECK-LABEL: i16_8s_1v:
60
58
; CHECK: // %bb.0: // %entry
61
- ; CHECK-NEXT: rdvl x8, #1
62
59
; CHECK-NEXT: ptrue p0.h
63
- ; CHECK-NEXT: mov x9, #4 // =0x4
64
- ; CHECK-NEXT: add x8, x0, x8
65
- ; CHECK-NEXT: ld1h { z0.h }, p0/z, [x8, x9, lsl #1]
60
+ ; CHECK-NEXT: add x8, x0, #8
61
+ ; CHECK-NEXT: ld1h { z0.h }, p0/z, [x8, #1, mul vl]
66
62
; CHECK-NEXT: ret
67
63
entry:
68
64
%add.ptr = getelementptr inbounds i8 , ptr %b , i64 8
@@ -94,11 +90,9 @@ entry:
94
90
define <vscale x 8 x i16 > @i16_8s_2v (ptr %b ) {
95
91
; CHECK-LABEL: i16_8s_2v:
96
92
; CHECK: // %bb.0: // %entry
97
- ; CHECK-NEXT: rdvl x8, #2
98
93
; CHECK-NEXT: ptrue p0.h
99
- ; CHECK-NEXT: mov x9, #4 // =0x4
100
- ; CHECK-NEXT: add x8, x0, x8
101
- ; CHECK-NEXT: ld1h { z0.h }, p0/z, [x8, x9, lsl #1]
94
+ ; CHECK-NEXT: add x8, x0, #8
95
+ ; CHECK-NEXT: ld1h { z0.h }, p0/z, [x8, #2, mul vl]
102
96
; CHECK-NEXT: ret
103
97
entry:
104
98
%add.ptr = getelementptr inbounds i8 , ptr %b , i64 8
@@ -130,11 +124,9 @@ entry:
130
124
define <vscale x 4 x i32 > @i32_16s_2v (ptr %b ) {
131
125
; CHECK-LABEL: i32_16s_2v:
132
126
; CHECK: // %bb.0: // %entry
133
- ; CHECK-NEXT: rdvl x8, #1
134
127
; CHECK-NEXT: ptrue p0.s
135
- ; CHECK-NEXT: mov x9, #4 // =0x4
136
- ; CHECK-NEXT: add x8, x0, x8
137
- ; CHECK-NEXT: ld1w { z0.s }, p0/z, [x8, x9, lsl #2]
128
+ ; CHECK-NEXT: add x8, x0, #16
129
+ ; CHECK-NEXT: ld1w { z0.s }, p0/z, [x8, #1, mul vl]
138
130
; CHECK-NEXT: ret
139
131
entry:
140
132
%add.ptr = getelementptr inbounds i8 , ptr %b , i64 16
@@ -166,11 +158,9 @@ entry:
166
158
define <vscale x 2 x i64 > @i64_32s_2v (ptr %b ) {
167
159
; CHECK-LABEL: i64_32s_2v:
168
160
; CHECK: // %bb.0: // %entry
169
- ; CHECK-NEXT: rdvl x8, #1
170
161
; CHECK-NEXT: ptrue p0.d
171
- ; CHECK-NEXT: mov x9, #4 // =0x4
172
- ; CHECK-NEXT: add x8, x0, x8
173
- ; CHECK-NEXT: ld1d { z0.d }, p0/z, [x8, x9, lsl #3]
162
+ ; CHECK-NEXT: add x8, x0, #32
163
+ ; CHECK-NEXT: ld1d { z0.d }, p0/z, [x8, #1, mul vl]
174
164
; CHECK-NEXT: ret
175
165
entry:
176
166
%add.ptr = getelementptr inbounds i8 , ptr %b , i64 32
@@ -203,11 +193,9 @@ entry:
203
193
define <vscale x 16 x i8 > @i8_4s_m2v (ptr %b ) {
204
194
; CHECK-LABEL: i8_4s_m2v:
205
195
; CHECK: // %bb.0: // %entry
206
- ; CHECK-NEXT: cnth x8, all, mul #4
207
196
; CHECK-NEXT: ptrue p0.b
208
- ; CHECK-NEXT: mov w9, #4 // =0x4
209
- ; CHECK-NEXT: sub x8, x0, x8
210
- ; CHECK-NEXT: ld1b { z0.b }, p0/z, [x8, x9]
197
+ ; CHECK-NEXT: add x8, x0, #4
198
+ ; CHECK-NEXT: ld1b { z0.b }, p0/z, [x8, #-2, mul vl]
211
199
; CHECK-NEXT: ret
212
200
entry:
213
201
%add.ptr = getelementptr inbounds i8 , ptr %b , i64 4
@@ -239,11 +227,9 @@ entry:
239
227
define <vscale x 8 x i16 > @i16_8s_m2v (ptr %b ) {
240
228
; CHECK-LABEL: i16_8s_m2v:
241
229
; CHECK: // %bb.0: // %entry
242
- ; CHECK-NEXT: cnth x8, all, mul #4
243
230
; CHECK-NEXT: ptrue p0.h
244
- ; CHECK-NEXT: mov x9, #4 // =0x4
245
- ; CHECK-NEXT: sub x8, x0, x8
246
- ; CHECK-NEXT: ld1h { z0.h }, p0/z, [x8, x9, lsl #1]
231
+ ; CHECK-NEXT: add x8, x0, #8
232
+ ; CHECK-NEXT: ld1h { z0.h }, p0/z, [x8, #-2, mul vl]
247
233
; CHECK-NEXT: ret
248
234
entry:
249
235
%add.ptr = getelementptr inbounds i8 , ptr %b , i64 8
@@ -275,11 +261,9 @@ entry:
275
261
define <vscale x 4 x i32 > @i32_16s_m2v (ptr %b ) {
276
262
; CHECK-LABEL: i32_16s_m2v:
277
263
; CHECK: // %bb.0: // %entry
278
- ; CHECK-NEXT: cnth x8, all, mul #4
279
264
; CHECK-NEXT: ptrue p0.s
280
- ; CHECK-NEXT: mov x9, #4 // =0x4
281
- ; CHECK-NEXT: sub x8, x0, x8
282
- ; CHECK-NEXT: ld1w { z0.s }, p0/z, [x8, x9, lsl #2]
265
+ ; CHECK-NEXT: add x8, x0, #16
266
+ ; CHECK-NEXT: ld1w { z0.s }, p0/z, [x8, #-2, mul vl]
283
267
; CHECK-NEXT: ret
284
268
entry:
285
269
%add.ptr = getelementptr inbounds i8 , ptr %b , i64 16
@@ -311,11 +295,9 @@ entry:
311
295
define <vscale x 2 x i64 > @i64_32s_m2v (ptr %b ) {
312
296
; CHECK-LABEL: i64_32s_m2v:
313
297
; CHECK: // %bb.0: // %entry
314
- ; CHECK-NEXT: cnth x8, all, mul #4
315
298
; CHECK-NEXT: ptrue p0.d
316
- ; CHECK-NEXT: mov x9, #4 // =0x4
317
- ; CHECK-NEXT: sub x8, x0, x8
318
- ; CHECK-NEXT: ld1d { z0.d }, p0/z, [x8, x9, lsl #3]
299
+ ; CHECK-NEXT: add x8, x0, #32
300
+ ; CHECK-NEXT: ld1d { z0.d }, p0/z, [x8, #-2, mul vl]
319
301
; CHECK-NEXT: ret
320
302
entry:
321
303
%add.ptr = getelementptr inbounds i8 , ptr %b , i64 32
0 commit comments