1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2 ; RUN: llc -mtriple=aarch64-linux-gnu -mattr=+sve < %s | FileCheck %s
8 define <vscale x 16 x i8> @ldff1b(<vscale x 16 x i1> %pg, ptr %a) {
11 ; CHECK-NEXT: ldff1b { z0.b }, p0/z, [x0]
13 %load = call <vscale x 16 x i8> @llvm.aarch64.sve.ldff1.nxv16i8(<vscale x 16 x i1> %pg, ptr %a)
14 ret <vscale x 16 x i8> %load
17 define <vscale x 16 x i8> @ldff1b_reg(<vscale x 16 x i1> %pg, ptr %a, i64 %offset) {
18 ; CHECK-LABEL: ldff1b_reg:
20 ; CHECK-NEXT: ldff1b { z0.b }, p0/z, [x0, x1]
22 %base = getelementptr i8, ptr %a, i64 %offset
23 %load = call <vscale x 16 x i8> @llvm.aarch64.sve.ldff1.nxv16i8(<vscale x 16 x i1> %pg, ptr %base)
24 ret <vscale x 16 x i8> %load
27 define <vscale x 8 x i16> @ldff1b_h(<vscale x 8 x i1> %pg, ptr %a) {
28 ; CHECK-LABEL: ldff1b_h:
30 ; CHECK-NEXT: ldff1b { z0.h }, p0/z, [x0]
32 %load = call <vscale x 8 x i8> @llvm.aarch64.sve.ldff1.nxv8i8(<vscale x 8 x i1> %pg, ptr %a)
33 %res = zext <vscale x 8 x i8> %load to <vscale x 8 x i16>
34 ret <vscale x 8 x i16> %res
37 define <vscale x 8 x i16> @ldff1b_h_reg(<vscale x 8 x i1> %pg, ptr %a, i64 %offset) {
38 ; CHECK-LABEL: ldff1b_h_reg:
40 ; CHECK-NEXT: ldff1b { z0.h }, p0/z, [x0, x1]
42 %base = getelementptr i8, ptr %a, i64 %offset
43 %load = call <vscale x 8 x i8> @llvm.aarch64.sve.ldff1.nxv8i8(<vscale x 8 x i1> %pg, ptr %base)
44 %res = zext <vscale x 8 x i8> %load to <vscale x 8 x i16>
45 ret <vscale x 8 x i16> %res
48 define <vscale x 4 x i32> @ldff1b_s(<vscale x 4 x i1> %pg, ptr %a) {
49 ; CHECK-LABEL: ldff1b_s:
51 ; CHECK-NEXT: ldff1b { z0.s }, p0/z, [x0]
53 %load = call <vscale x 4 x i8> @llvm.aarch64.sve.ldff1.nxv4i8(<vscale x 4 x i1> %pg, ptr %a)
54 %res = zext <vscale x 4 x i8> %load to <vscale x 4 x i32>
55 ret <vscale x 4 x i32> %res
58 define <vscale x 4 x i32> @ldff1b_s_reg(<vscale x 4 x i1> %pg, ptr %a, i64 %offset) {
59 ; CHECK-LABEL: ldff1b_s_reg:
61 ; CHECK-NEXT: ldff1b { z0.s }, p0/z, [x0, x1]
63 %base = getelementptr i8, ptr %a, i64 %offset
64 %load = call <vscale x 4 x i8> @llvm.aarch64.sve.ldff1.nxv4i8(<vscale x 4 x i1> %pg, ptr %base)
65 %res = zext <vscale x 4 x i8> %load to <vscale x 4 x i32>
66 ret <vscale x 4 x i32> %res
69 define <vscale x 2 x i64> @ldff1b_d(<vscale x 2 x i1> %pg, ptr %a) {
70 ; CHECK-LABEL: ldff1b_d:
72 ; CHECK-NEXT: ldff1b { z0.d }, p0/z, [x0]
74 %load = call <vscale x 2 x i8> @llvm.aarch64.sve.ldff1.nxv2i8(<vscale x 2 x i1> %pg, ptr %a)
75 %res = zext <vscale x 2 x i8> %load to <vscale x 2 x i64>
76 ret <vscale x 2 x i64> %res
79 define <vscale x 2 x i64> @ldff1b_d_reg(<vscale x 2 x i1> %pg, ptr %a, i64 %offset) {
80 ; CHECK-LABEL: ldff1b_d_reg:
82 ; CHECK-NEXT: ldff1b { z0.d }, p0/z, [x0, x1]
84 %base = getelementptr i8, ptr %a, i64 %offset
85 %load = call <vscale x 2 x i8> @llvm.aarch64.sve.ldff1.nxv2i8(<vscale x 2 x i1> %pg, ptr %base)
86 %res = zext <vscale x 2 x i8> %load to <vscale x 2 x i64>
87 ret <vscale x 2 x i64> %res
94 define <vscale x 8 x i16> @ldff1sb_h(<vscale x 8 x i1> %pg, ptr %a) {
95 ; CHECK-LABEL: ldff1sb_h:
97 ; CHECK-NEXT: ldff1sb { z0.h }, p0/z, [x0]
99 %load = call <vscale x 8 x i8> @llvm.aarch64.sve.ldff1.nxv8i8(<vscale x 8 x i1> %pg, ptr %a)
100 %res = sext <vscale x 8 x i8> %load to <vscale x 8 x i16>
101 ret <vscale x 8 x i16> %res
104 define <vscale x 8 x i16> @ldff1sb_h_reg(<vscale x 8 x i1> %pg, ptr %a, i64 %offset) {
105 ; CHECK-LABEL: ldff1sb_h_reg:
107 ; CHECK-NEXT: ldff1sb { z0.h }, p0/z, [x0, x1]
109 %base = getelementptr i8, ptr %a, i64 %offset
110 %load = call <vscale x 8 x i8> @llvm.aarch64.sve.ldff1.nxv8i8(<vscale x 8 x i1> %pg, ptr %base)
111 %res = sext <vscale x 8 x i8> %load to <vscale x 8 x i16>
112 ret <vscale x 8 x i16> %res
115 define <vscale x 4 x i32> @ldff1sb_s(<vscale x 4 x i1> %pg, ptr %a) {
116 ; CHECK-LABEL: ldff1sb_s:
118 ; CHECK-NEXT: ldff1sb { z0.s }, p0/z, [x0]
120 %load = call <vscale x 4 x i8> @llvm.aarch64.sve.ldff1.nxv4i8(<vscale x 4 x i1> %pg, ptr %a)
121 %res = sext <vscale x 4 x i8> %load to <vscale x 4 x i32>
122 ret <vscale x 4 x i32> %res
125 define <vscale x 4 x i32> @ldff1sb_s_reg(<vscale x 4 x i1> %pg, ptr %a, i64 %offset) {
126 ; CHECK-LABEL: ldff1sb_s_reg:
128 ; CHECK-NEXT: ldff1sb { z0.s }, p0/z, [x0, x1]
130 %base = getelementptr i8, ptr %a, i64 %offset
131 %load = call <vscale x 4 x i8> @llvm.aarch64.sve.ldff1.nxv4i8(<vscale x 4 x i1> %pg, ptr %base)
132 %res = sext <vscale x 4 x i8> %load to <vscale x 4 x i32>
133 ret <vscale x 4 x i32> %res
136 define <vscale x 2 x i64> @ldff1sb_d(<vscale x 2 x i1> %pg, ptr %a) {
137 ; CHECK-LABEL: ldff1sb_d:
139 ; CHECK-NEXT: ldff1sb { z0.d }, p0/z, [x0]
141 %load = call <vscale x 2 x i8> @llvm.aarch64.sve.ldff1.nxv2i8(<vscale x 2 x i1> %pg, ptr %a)
142 %res = sext <vscale x 2 x i8> %load to <vscale x 2 x i64>
143 ret <vscale x 2 x i64> %res
146 define <vscale x 2 x i64> @ldff1sb_d_reg(<vscale x 2 x i1> %pg, ptr %a, i64 %offset) {
147 ; CHECK-LABEL: ldff1sb_d_reg:
149 ; CHECK-NEXT: ldff1sb { z0.d }, p0/z, [x0, x1]
151 %base = getelementptr i8, ptr %a, i64 %offset
152 %load = call <vscale x 2 x i8> @llvm.aarch64.sve.ldff1.nxv2i8(<vscale x 2 x i1> %pg, ptr %base)
153 %res = sext <vscale x 2 x i8> %load to <vscale x 2 x i64>
154 ret <vscale x 2 x i64> %res
161 define <vscale x 8 x i16> @ldff1h(<vscale x 8 x i1> %pg, ptr %a) {
162 ; CHECK-LABEL: ldff1h:
164 ; CHECK-NEXT: ldff1h { z0.h }, p0/z, [x0]
166 %load = call <vscale x 8 x i16> @llvm.aarch64.sve.ldff1.nxv8i16(<vscale x 8 x i1> %pg, ptr %a)
167 ret <vscale x 8 x i16> %load
170 define <vscale x 8 x i16> @ldff1h_reg(<vscale x 8 x i1> %pg, ptr %a, i64 %offset) {
171 ; CHECK-LABEL: ldff1h_reg:
173 ; CHECK-NEXT: ldff1h { z0.h }, p0/z, [x0, x1, lsl #1]
175 %base = getelementptr i16, ptr %a, i64 %offset
176 %load = call <vscale x 8 x i16> @llvm.aarch64.sve.ldff1.nxv8i16(<vscale x 8 x i1> %pg, ptr %base)
177 ret <vscale x 8 x i16> %load
180 define <vscale x 4 x i32> @ldff1h_s(<vscale x 4 x i1> %pg, ptr %a) {
181 ; CHECK-LABEL: ldff1h_s:
183 ; CHECK-NEXT: ldff1h { z0.s }, p0/z, [x0]
185 %load = call <vscale x 4 x i16> @llvm.aarch64.sve.ldff1.nxv4i16(<vscale x 4 x i1> %pg, ptr %a)
186 %res = zext <vscale x 4 x i16> %load to <vscale x 4 x i32>
187 ret <vscale x 4 x i32> %res
190 define <vscale x 4 x i32> @ldff1h_s_reg(<vscale x 4 x i1> %pg, ptr %a, i64 %offset) {
191 ; CHECK-LABEL: ldff1h_s_reg:
193 ; CHECK-NEXT: ldff1h { z0.s }, p0/z, [x0, x1, lsl #1]
195 %base = getelementptr i16, ptr %a, i64 %offset
196 %load = call <vscale x 4 x i16> @llvm.aarch64.sve.ldff1.nxv4i16(<vscale x 4 x i1> %pg, ptr %base)
197 %res = zext <vscale x 4 x i16> %load to <vscale x 4 x i32>
198 ret <vscale x 4 x i32> %res
201 define <vscale x 2 x i64> @ldff1h_d(<vscale x 2 x i1> %pg, ptr %a) {
202 ; CHECK-LABEL: ldff1h_d:
204 ; CHECK-NEXT: ldff1h { z0.d }, p0/z, [x0]
206 %load = call <vscale x 2 x i16> @llvm.aarch64.sve.ldff1.nxv2i16(<vscale x 2 x i1> %pg, ptr %a)
207 %res = zext <vscale x 2 x i16> %load to <vscale x 2 x i64>
208 ret <vscale x 2 x i64> %res
211 define <vscale x 2 x i64> @ldff1h_d_reg(<vscale x 2 x i1> %pg, ptr %a, i64 %offset) {
212 ; CHECK-LABEL: ldff1h_d_reg:
214 ; CHECK-NEXT: ldff1h { z0.d }, p0/z, [x0, x1, lsl #1]
216 %base = getelementptr i16, ptr %a, i64 %offset
217 %load = call <vscale x 2 x i16> @llvm.aarch64.sve.ldff1.nxv2i16(<vscale x 2 x i1> %pg, ptr %base)
218 %res = zext <vscale x 2 x i16> %load to <vscale x 2 x i64>
219 ret <vscale x 2 x i64> %res
222 define <vscale x 8 x half> @ldff1h_f16(<vscale x 8 x i1> %pg, ptr %a) {
223 ; CHECK-LABEL: ldff1h_f16:
225 ; CHECK-NEXT: ldff1h { z0.h }, p0/z, [x0]
227 %load = call <vscale x 8 x half> @llvm.aarch64.sve.ldff1.nxv8f16(<vscale x 8 x i1> %pg, ptr %a)
228 ret <vscale x 8 x half> %load
231 define <vscale x 8 x bfloat> @ldff1h_bf16(<vscale x 8 x i1> %pg, ptr %a) #0 {
232 ; CHECK-LABEL: ldff1h_bf16:
234 ; CHECK-NEXT: ldff1h { z0.h }, p0/z, [x0]
236 %load = call <vscale x 8 x bfloat> @llvm.aarch64.sve.ldff1.nxv8bf16(<vscale x 8 x i1> %pg, ptr %a)
237 ret <vscale x 8 x bfloat> %load
240 define <vscale x 8 x half> @ldff1h_f16_reg(<vscale x 8 x i1> %pg, ptr %a, i64 %offset) {
241 ; CHECK-LABEL: ldff1h_f16_reg:
243 ; CHECK-NEXT: ldff1h { z0.h }, p0/z, [x0, x1, lsl #1]
245 %base = getelementptr half, ptr %a, i64 %offset
246 %load = call <vscale x 8 x half> @llvm.aarch64.sve.ldff1.nxv8f16(<vscale x 8 x i1> %pg, ptr %base)
247 ret <vscale x 8 x half> %load
250 define <vscale x 8 x bfloat> @ldff1h_bf16_reg(<vscale x 8 x i1> %pg, ptr %a, i64 %offset) #0 {
251 ; CHECK-LABEL: ldff1h_bf16_reg:
253 ; CHECK-NEXT: ldff1h { z0.h }, p0/z, [x0, x1, lsl #1]
255 %base = getelementptr bfloat, ptr %a, i64 %offset
256 %load = call <vscale x 8 x bfloat> @llvm.aarch64.sve.ldff1.nxv8bf16(<vscale x 8 x i1> %pg, ptr %base)
257 ret <vscale x 8 x bfloat> %load
264 define <vscale x 4 x i32> @ldff1sh_s(<vscale x 4 x i1> %pg, ptr %a) {
265 ; CHECK-LABEL: ldff1sh_s:
267 ; CHECK-NEXT: ldff1sh { z0.s }, p0/z, [x0]
269 %load = call <vscale x 4 x i16> @llvm.aarch64.sve.ldff1.nxv4i16(<vscale x 4 x i1> %pg, ptr %a)
270 %res = sext <vscale x 4 x i16> %load to <vscale x 4 x i32>
271 ret <vscale x 4 x i32> %res
274 define <vscale x 4 x i32> @ldff1sh_s_reg(<vscale x 4 x i1> %pg, ptr %a, i64 %offset) {
275 ; CHECK-LABEL: ldff1sh_s_reg:
277 ; CHECK-NEXT: ldff1sh { z0.s }, p0/z, [x0, x1, lsl #1]
279 %base = getelementptr i16, ptr %a, i64 %offset
280 %load = call <vscale x 4 x i16> @llvm.aarch64.sve.ldff1.nxv4i16(<vscale x 4 x i1> %pg, ptr %base)
281 %res = sext <vscale x 4 x i16> %load to <vscale x 4 x i32>
282 ret <vscale x 4 x i32> %res
285 define <vscale x 2 x i64> @ldff1sh_d(<vscale x 2 x i1> %pg, ptr %a) {
286 ; CHECK-LABEL: ldff1sh_d:
288 ; CHECK-NEXT: ldff1sh { z0.d }, p0/z, [x0]
290 %load = call <vscale x 2 x i16> @llvm.aarch64.sve.ldff1.nxv2i16(<vscale x 2 x i1> %pg, ptr %a)
291 %res = sext <vscale x 2 x i16> %load to <vscale x 2 x i64>
292 ret <vscale x 2 x i64> %res
295 define <vscale x 2 x i64> @ldff1sh_d_reg(<vscale x 2 x i1> %pg, ptr %a, i64 %offset) {
296 ; CHECK-LABEL: ldff1sh_d_reg:
298 ; CHECK-NEXT: ldff1sh { z0.d }, p0/z, [x0, x1, lsl #1]
300 %base = getelementptr i16, ptr %a, i64 %offset
301 %load = call <vscale x 2 x i16> @llvm.aarch64.sve.ldff1.nxv2i16(<vscale x 2 x i1> %pg, ptr %base)
302 %res = sext <vscale x 2 x i16> %load to <vscale x 2 x i64>
303 ret <vscale x 2 x i64> %res
310 define <vscale x 4 x i32> @ldff1w(<vscale x 4 x i1> %pg, ptr %a) {
311 ; CHECK-LABEL: ldff1w:
313 ; CHECK-NEXT: ldff1w { z0.s }, p0/z, [x0]
315 %load = call <vscale x 4 x i32> @llvm.aarch64.sve.ldff1.nxv4i32(<vscale x 4 x i1> %pg, ptr %a)
316 ret <vscale x 4 x i32> %load
319 define <vscale x 4 x i32> @ldff1w_reg(<vscale x 4 x i1> %pg, ptr %a, i64 %offset) {
320 ; CHECK-LABEL: ldff1w_reg:
322 ; CHECK-NEXT: ldff1w { z0.s }, p0/z, [x0, x1, lsl #2]
324 %base = getelementptr i32, ptr %a, i64 %offset
325 %load = call <vscale x 4 x i32> @llvm.aarch64.sve.ldff1.nxv4i32(<vscale x 4 x i1> %pg, ptr %base)
326 ret <vscale x 4 x i32> %load
329 define <vscale x 2 x i64> @ldff1w_d(<vscale x 2 x i1> %pg, ptr %a) {
330 ; CHECK-LABEL: ldff1w_d:
332 ; CHECK-NEXT: ldff1w { z0.d }, p0/z, [x0]
334 %load = call <vscale x 2 x i32> @llvm.aarch64.sve.ldff1.nxv2i32(<vscale x 2 x i1> %pg, ptr %a)
335 %res = zext <vscale x 2 x i32> %load to <vscale x 2 x i64>
336 ret <vscale x 2 x i64> %res
339 define <vscale x 2 x i64> @ldff1w_d_reg(<vscale x 2 x i1> %pg, ptr %a, i64 %offset) {
340 ; CHECK-LABEL: ldff1w_d_reg:
342 ; CHECK-NEXT: ldff1w { z0.d }, p0/z, [x0, x1, lsl #2]
344 %base = getelementptr i32, ptr %a, i64 %offset
345 %load = call <vscale x 2 x i32> @llvm.aarch64.sve.ldff1.nxv2i32(<vscale x 2 x i1> %pg, ptr %base)
346 %res = zext <vscale x 2 x i32> %load to <vscale x 2 x i64>
347 ret <vscale x 2 x i64> %res
350 define <vscale x 4 x float> @ldff1w_f32(<vscale x 4 x i1> %pg, ptr %a) {
351 ; CHECK-LABEL: ldff1w_f32:
353 ; CHECK-NEXT: ldff1w { z0.s }, p0/z, [x0]
355 %load = call <vscale x 4 x float> @llvm.aarch64.sve.ldff1.nxv4f32(<vscale x 4 x i1> %pg, ptr %a)
356 ret <vscale x 4 x float> %load
359 define <vscale x 4 x float> @ldff1w_f32_reg(<vscale x 4 x i1> %pg, ptr %a, i64 %offset) {
360 ; CHECK-LABEL: ldff1w_f32_reg:
362 ; CHECK-NEXT: ldff1w { z0.s }, p0/z, [x0, x1, lsl #2]
364 %base = getelementptr float, ptr %a, i64 %offset
365 %load = call <vscale x 4 x float> @llvm.aarch64.sve.ldff1.nxv4f32(<vscale x 4 x i1> %pg, ptr %base)
366 ret <vscale x 4 x float> %load
369 define <vscale x 2 x float> @ldff1w_2f32(<vscale x 2 x i1> %pg, ptr %a) {
370 ; CHECK-LABEL: ldff1w_2f32:
372 ; CHECK-NEXT: ldff1w { z0.d }, p0/z, [x0]
374 %load = call <vscale x 2 x float> @llvm.aarch64.sve.ldff1.nxv2f32(<vscale x 2 x i1> %pg, ptr %a)
375 ret <vscale x 2 x float> %load
378 define <vscale x 2 x float> @ldff1w_2f32_reg(<vscale x 2 x i1> %pg, ptr %a, i64 %offset) {
379 ; CHECK-LABEL: ldff1w_2f32_reg:
381 ; CHECK-NEXT: ldff1w { z0.d }, p0/z, [x0, x1, lsl #2]
383 %base = getelementptr float, ptr %a, i64 %offset
384 %load = call <vscale x 2 x float> @llvm.aarch64.sve.ldff1.nxv2f32(<vscale x 2 x i1> %pg, ptr %base)
385 ret <vscale x 2 x float> %load
392 define <vscale x 2 x i64> @ldff1sw_d(<vscale x 2 x i1> %pg, ptr %a) {
393 ; CHECK-LABEL: ldff1sw_d:
395 ; CHECK-NEXT: ldff1sw { z0.d }, p0/z, [x0]
397 %load = call <vscale x 2 x i32> @llvm.aarch64.sve.ldff1.nxv2i32(<vscale x 2 x i1> %pg, ptr %a)
398 %res = sext <vscale x 2 x i32> %load to <vscale x 2 x i64>
399 ret <vscale x 2 x i64> %res
402 define <vscale x 2 x i64> @ldff1sw_d_reg(<vscale x 2 x i1> %pg, ptr %a, i64 %offset) {
403 ; CHECK-LABEL: ldff1sw_d_reg:
405 ; CHECK-NEXT: ldff1sw { z0.d }, p0/z, [x0, x1, lsl #2]
407 %base = getelementptr i32, ptr %a, i64 %offset
408 %load = call <vscale x 2 x i32> @llvm.aarch64.sve.ldff1.nxv2i32(<vscale x 2 x i1> %pg, ptr %base)
409 %res = sext <vscale x 2 x i32> %load to <vscale x 2 x i64>
410 ret <vscale x 2 x i64> %res
417 define <vscale x 2 x i64> @ldff1d(<vscale x 2 x i1> %pg, ptr %a) {
418 ; CHECK-LABEL: ldff1d:
420 ; CHECK-NEXT: ldff1d { z0.d }, p0/z, [x0]
422 %load = call <vscale x 2 x i64> @llvm.aarch64.sve.ldff1.nxv2i64(<vscale x 2 x i1> %pg, ptr %a)
423 ret <vscale x 2 x i64> %load
426 define <vscale x 2 x i64> @ldff1d_reg(<vscale x 2 x i1> %pg, ptr %a, i64 %offset) {
427 ; CHECK-LABEL: ldff1d_reg:
429 ; CHECK-NEXT: ldff1d { z0.d }, p0/z, [x0, x1, lsl #3]
431 %base = getelementptr i64, ptr %a, i64 %offset
432 %load = call <vscale x 2 x i64> @llvm.aarch64.sve.ldff1.nxv2i64(<vscale x 2 x i1> %pg, ptr %base)
433 ret <vscale x 2 x i64> %load
437 define <vscale x 2 x double> @ldff1d_f64(<vscale x 2 x i1> %pg, ptr %a) {
438 ; CHECK-LABEL: ldff1d_f64:
440 ; CHECK-NEXT: ldff1d { z0.d }, p0/z, [x0]
442 %load = call <vscale x 2 x double> @llvm.aarch64.sve.ldff1.nxv2f64(<vscale x 2 x i1> %pg, ptr %a)
443 ret <vscale x 2 x double> %load
446 define <vscale x 2 x double> @ldff1d_f64_reg(<vscale x 2 x i1> %pg, ptr %a, i64 %offset) {
447 ; CHECK-LABEL: ldff1d_f64_reg:
449 ; CHECK-NEXT: ldff1d { z0.d }, p0/z, [x0, x1, lsl #3]
451 %base = getelementptr double, ptr %a, i64 %offset
452 %load = call <vscale x 2 x double> @llvm.aarch64.sve.ldff1.nxv2f64(<vscale x 2 x i1> %pg, ptr %base)
453 ret <vscale x 2 x double> %load
456 declare <vscale x 16 x i8> @llvm.aarch64.sve.ldff1.nxv16i8(<vscale x 16 x i1>, ptr)
458 declare <vscale x 8 x i8> @llvm.aarch64.sve.ldff1.nxv8i8(<vscale x 8 x i1>, ptr)
459 declare <vscale x 8 x i16> @llvm.aarch64.sve.ldff1.nxv8i16(<vscale x 8 x i1>, ptr)
460 declare <vscale x 8 x half> @llvm.aarch64.sve.ldff1.nxv8f16(<vscale x 8 x i1>, ptr)
461 declare <vscale x 8 x bfloat> @llvm.aarch64.sve.ldff1.nxv8bf16(<vscale x 8 x i1>, ptr)
463 declare <vscale x 4 x i8> @llvm.aarch64.sve.ldff1.nxv4i8(<vscale x 4 x i1>, ptr)
464 declare <vscale x 4 x i16> @llvm.aarch64.sve.ldff1.nxv4i16(<vscale x 4 x i1>, ptr)
465 declare <vscale x 4 x i32> @llvm.aarch64.sve.ldff1.nxv4i32(<vscale x 4 x i1>, ptr)
466 declare <vscale x 2 x float> @llvm.aarch64.sve.ldff1.nxv2f32(<vscale x 2 x i1>, ptr)
467 declare <vscale x 4 x float> @llvm.aarch64.sve.ldff1.nxv4f32(<vscale x 4 x i1>, ptr)
469 declare <vscale x 2 x i8> @llvm.aarch64.sve.ldff1.nxv2i8(<vscale x 2 x i1>, ptr)
470 declare <vscale x 2 x i16> @llvm.aarch64.sve.ldff1.nxv2i16(<vscale x 2 x i1>, ptr)
471 declare <vscale x 2 x i32> @llvm.aarch64.sve.ldff1.nxv2i32(<vscale x 2 x i1>, ptr)
472 declare <vscale x 2 x i64> @llvm.aarch64.sve.ldff1.nxv2i64(<vscale x 2 x i1>, ptr)
473 declare <vscale x 2 x double> @llvm.aarch64.sve.ldff1.nxv2f64(<vscale x 2 x i1>, ptr)
475 ; +bf16 is required for the bfloat version.
476 attributes #0 = { "target-features"="+sve,+bf16" }