1 ; RUN: llc -mtriple=aarch64-linux-gnu -mattr=+sve < %s | FileCheck %s
7 define <vscale x 16 x i8> @ldff1b(<vscale x 16 x i1> %pg, i8* %a) {
9 ; CHECK: ldff1b { z0.b }, p0/z, [x0]
11 %load = call <vscale x 16 x i8> @llvm.aarch64.sve.ldff1.nxv16i8(<vscale x 16 x i1> %pg, i8* %a)
12 ret <vscale x 16 x i8> %load
15 define <vscale x 16 x i8> @ldff1b_reg(<vscale x 16 x i1> %pg, i8* %a, i64 %offset) {
16 ; CHECK-LABEL: ldff1b_reg:
17 ; CHECK: ldff1b { z0.b }, p0/z, [x0, x1]
19 %base = getelementptr i8, i8* %a, i64 %offset
20 %load = call <vscale x 16 x i8> @llvm.aarch64.sve.ldff1.nxv16i8(<vscale x 16 x i1> %pg, i8* %base)
21 ret <vscale x 16 x i8> %load
24 define <vscale x 8 x i16> @ldff1b_h(<vscale x 8 x i1> %pg, i8* %a) {
25 ; CHECK-LABEL: ldff1b_h:
26 ; CHECK: ldff1b { z0.h }, p0/z, [x0]
28 %load = call <vscale x 8 x i8> @llvm.aarch64.sve.ldff1.nxv8i8(<vscale x 8 x i1> %pg, i8* %a)
29 %res = zext <vscale x 8 x i8> %load to <vscale x 8 x i16>
30 ret <vscale x 8 x i16> %res
33 define <vscale x 8 x i16> @ldff1b_h_reg(<vscale x 8 x i1> %pg, i8* %a, i64 %offset) {
34 ; CHECK-LABEL: ldff1b_h_reg:
35 ; CHECK: ldff1b { z0.h }, p0/z, [x0, x1]
37 %base = getelementptr i8, i8* %a, i64 %offset
38 %load = call <vscale x 8 x i8> @llvm.aarch64.sve.ldff1.nxv8i8(<vscale x 8 x i1> %pg, i8* %base)
39 %res = zext <vscale x 8 x i8> %load to <vscale x 8 x i16>
40 ret <vscale x 8 x i16> %res
43 define <vscale x 4 x i32> @ldff1b_s(<vscale x 4 x i1> %pg, i8* %a) {
44 ; CHECK-LABEL: ldff1b_s:
45 ; CHECK: ldff1b { z0.s }, p0/z, [x0]
47 %load = call <vscale x 4 x i8> @llvm.aarch64.sve.ldff1.nxv4i8(<vscale x 4 x i1> %pg, i8* %a)
48 %res = zext <vscale x 4 x i8> %load to <vscale x 4 x i32>
49 ret <vscale x 4 x i32> %res
52 define <vscale x 4 x i32> @ldff1b_s_reg(<vscale x 4 x i1> %pg, i8* %a, i64 %offset) {
53 ; CHECK-LABEL: ldff1b_s_reg:
54 ; CHECK: ldff1b { z0.s }, p0/z, [x0, x1]
56 %base = getelementptr i8, i8* %a, i64 %offset
57 %load = call <vscale x 4 x i8> @llvm.aarch64.sve.ldff1.nxv4i8(<vscale x 4 x i1> %pg, i8* %base)
58 %res = zext <vscale x 4 x i8> %load to <vscale x 4 x i32>
59 ret <vscale x 4 x i32> %res
62 define <vscale x 2 x i64> @ldff1b_d(<vscale x 2 x i1> %pg, i8* %a) {
63 ; CHECK-LABEL: ldff1b_d:
64 ; CHECK: ldff1b { z0.d }, p0/z, [x0]
66 %load = call <vscale x 2 x i8> @llvm.aarch64.sve.ldff1.nxv2i8(<vscale x 2 x i1> %pg, i8* %a)
67 %res = zext <vscale x 2 x i8> %load to <vscale x 2 x i64>
68 ret <vscale x 2 x i64> %res
71 define <vscale x 2 x i64> @ldff1b_d_reg(<vscale x 2 x i1> %pg, i8* %a, i64 %offset) {
72 ; CHECK-LABEL: ldff1b_d_reg:
73 ; CHECK: ldff1b { z0.d }, p0/z, [x0, x1]
75 %base = getelementptr i8, i8* %a, i64 %offset
76 %load = call <vscale x 2 x i8> @llvm.aarch64.sve.ldff1.nxv2i8(<vscale x 2 x i1> %pg, i8* %base)
77 %res = zext <vscale x 2 x i8> %load to <vscale x 2 x i64>
78 ret <vscale x 2 x i64> %res
85 define <vscale x 8 x i16> @ldff1sb_h(<vscale x 8 x i1> %pg, i8* %a) {
86 ; CHECK-LABEL: ldff1sb_h:
87 ; CHECK: ldff1sb { z0.h }, p0/z, [x0]
89 %load = call <vscale x 8 x i8> @llvm.aarch64.sve.ldff1.nxv8i8(<vscale x 8 x i1> %pg, i8* %a)
90 %res = sext <vscale x 8 x i8> %load to <vscale x 8 x i16>
91 ret <vscale x 8 x i16> %res
94 define <vscale x 8 x i16> @ldff1sb_h_reg(<vscale x 8 x i1> %pg, i8* %a, i64 %offset) {
95 ; CHECK-LABEL: ldff1sb_h_reg:
96 ; CHECK: ldff1sb { z0.h }, p0/z, [x0, x1]
98 %base = getelementptr i8, i8* %a, i64 %offset
99 %load = call <vscale x 8 x i8> @llvm.aarch64.sve.ldff1.nxv8i8(<vscale x 8 x i1> %pg, i8* %base)
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 4 x i32> @ldff1sb_s(<vscale x 4 x i1> %pg, i8* %a) {
105 ; CHECK-LABEL: ldff1sb_s:
106 ; CHECK: ldff1sb { z0.s }, p0/z, [x0]
108 %load = call <vscale x 4 x i8> @llvm.aarch64.sve.ldff1.nxv4i8(<vscale x 4 x i1> %pg, i8* %a)
109 %res = sext <vscale x 4 x i8> %load to <vscale x 4 x i32>
110 ret <vscale x 4 x i32> %res
113 define <vscale x 4 x i32> @ldff1sb_s_reg(<vscale x 4 x i1> %pg, i8* %a, i64 %offset) {
114 ; CHECK-LABEL: ldff1sb_s_reg:
115 ; CHECK: ldff1sb { z0.s }, p0/z, [x0, x1]
117 %base = getelementptr i8, i8* %a, i64 %offset
118 %load = call <vscale x 4 x i8> @llvm.aarch64.sve.ldff1.nxv4i8(<vscale x 4 x i1> %pg, i8* %base)
119 %res = sext <vscale x 4 x i8> %load to <vscale x 4 x i32>
120 ret <vscale x 4 x i32> %res
123 define <vscale x 2 x i64> @ldff1sb_d(<vscale x 2 x i1> %pg, i8* %a) {
124 ; CHECK-LABEL: ldff1sb_d:
125 ; CHECK: ldff1sb { z0.d }, p0/z, [x0]
127 %load = call <vscale x 2 x i8> @llvm.aarch64.sve.ldff1.nxv2i8(<vscale x 2 x i1> %pg, i8* %a)
128 %res = sext <vscale x 2 x i8> %load to <vscale x 2 x i64>
129 ret <vscale x 2 x i64> %res
132 define <vscale x 2 x i64> @ldff1sb_d_reg(<vscale x 2 x i1> %pg, i8* %a, i64 %offset) {
133 ; CHECK-LABEL: ldff1sb_d_reg:
134 ; CHECK: ldff1sb { z0.d }, p0/z, [x0, x1]
136 %base = getelementptr i8, i8* %a, i64 %offset
137 %load = call <vscale x 2 x i8> @llvm.aarch64.sve.ldff1.nxv2i8(<vscale x 2 x i1> %pg, i8* %base)
138 %res = sext <vscale x 2 x i8> %load to <vscale x 2 x i64>
139 ret <vscale x 2 x i64> %res
146 define <vscale x 8 x i16> @ldff1h(<vscale x 8 x i1> %pg, i16* %a) {
147 ; CHECK-LABEL: ldff1h:
148 ; CHECK: ldff1h { z0.h }, p0/z, [x0]
150 %load = call <vscale x 8 x i16> @llvm.aarch64.sve.ldff1.nxv8i16(<vscale x 8 x i1> %pg, i16* %a)
151 ret <vscale x 8 x i16> %load
154 define <vscale x 8 x i16> @ldff1h_reg(<vscale x 8 x i1> %pg, i16* %a, i64 %offset) {
155 ; CHECK-LABEL: ldff1h_reg:
156 ; CHECK: ldff1h { z0.h }, p0/z, [x0, x1, lsl #1]
158 %base = getelementptr i16, i16* %a, i64 %offset
159 %load = call <vscale x 8 x i16> @llvm.aarch64.sve.ldff1.nxv8i16(<vscale x 8 x i1> %pg, i16* %base)
160 ret <vscale x 8 x i16> %load
163 define <vscale x 4 x i32> @ldff1h_s(<vscale x 4 x i1> %pg, i16* %a) {
164 ; CHECK-LABEL: ldff1h_s:
165 ; CHECK: ldff1h { z0.s }, p0/z, [x0]
167 %load = call <vscale x 4 x i16> @llvm.aarch64.sve.ldff1.nxv4i16(<vscale x 4 x i1> %pg, i16* %a)
168 %res = zext <vscale x 4 x i16> %load to <vscale x 4 x i32>
169 ret <vscale x 4 x i32> %res
172 define <vscale x 4 x i32> @ldff1h_s_reg(<vscale x 4 x i1> %pg, i16* %a, i64 %offset) {
173 ; CHECK-LABEL: ldff1h_s_reg:
174 ; CHECK: ldff1h { z0.s }, p0/z, [x0, x1, lsl #1]
176 %base = getelementptr i16, i16* %a, i64 %offset
177 %load = call <vscale x 4 x i16> @llvm.aarch64.sve.ldff1.nxv4i16(<vscale x 4 x i1> %pg, i16* %base)
178 %res = zext <vscale x 4 x i16> %load to <vscale x 4 x i32>
179 ret <vscale x 4 x i32> %res
182 define <vscale x 2 x i64> @ldff1h_d(<vscale x 2 x i1> %pg, i16* %a) {
183 ; CHECK-LABEL: ldff1h_d:
184 ; CHECK: ldff1h { z0.d }, p0/z, [x0]
186 %load = call <vscale x 2 x i16> @llvm.aarch64.sve.ldff1.nxv2i16(<vscale x 2 x i1> %pg, i16* %a)
187 %res = zext <vscale x 2 x i16> %load to <vscale x 2 x i64>
188 ret <vscale x 2 x i64> %res
191 define <vscale x 2 x i64> @ldff1h_d_reg(<vscale x 2 x i1> %pg, i16* %a, i64 %offset) {
192 ; CHECK-LABEL: ldff1h_d_reg:
193 ; CHECK: ldff1h { z0.d }, p0/z, [x0, x1, lsl #1]
195 %base = getelementptr i16, i16* %a, i64 %offset
196 %load = call <vscale x 2 x i16> @llvm.aarch64.sve.ldff1.nxv2i16(<vscale x 2 x i1> %pg, i16* %base)
197 %res = zext <vscale x 2 x i16> %load to <vscale x 2 x i64>
198 ret <vscale x 2 x i64> %res
201 define <vscale x 8 x half> @ldff1h_f16(<vscale x 8 x i1> %pg, half* %a) {
202 ; CHECK-LABEL: ldff1h_f16:
203 ; CHECK: ldff1h { z0.h }, p0/z, [x0]
205 %load = call <vscale x 8 x half> @llvm.aarch64.sve.ldff1.nxv8f16(<vscale x 8 x i1> %pg, half* %a)
206 ret <vscale x 8 x half> %load
209 define <vscale x 8 x bfloat> @ldff1h_bf16(<vscale x 8 x i1> %pg, bfloat* %a) #0 {
210 ; CHECK-LABEL: ldff1h_bf16:
211 ; CHECK: ldff1h { z0.h }, p0/z, [x0]
213 %load = call <vscale x 8 x bfloat> @llvm.aarch64.sve.ldff1.nxv8bf16(<vscale x 8 x i1> %pg, bfloat* %a)
214 ret <vscale x 8 x bfloat> %load
217 define <vscale x 8 x half> @ldff1h_f16_reg(<vscale x 8 x i1> %pg, half* %a, i64 %offset) {
218 ; CHECK-LABEL: ldff1h_f16_reg:
219 ; CHECK: ldff1h { z0.h }, p0/z, [x0, x1, lsl #1]
221 %base = getelementptr half, half* %a, i64 %offset
222 %load = call <vscale x 8 x half> @llvm.aarch64.sve.ldff1.nxv8f16(<vscale x 8 x i1> %pg, half* %base)
223 ret <vscale x 8 x half> %load
226 define <vscale x 8 x bfloat> @ldff1h_bf16_reg(<vscale x 8 x i1> %pg, bfloat* %a, i64 %offset) #0 {
227 ; CHECK-LABEL: ldff1h_bf16_reg:
228 ; CHECK: ldff1h { z0.h }, p0/z, [x0, x1, lsl #1]
230 %base = getelementptr bfloat, bfloat* %a, i64 %offset
231 %load = call <vscale x 8 x bfloat> @llvm.aarch64.sve.ldff1.nxv8bf16(<vscale x 8 x i1> %pg, bfloat* %base)
232 ret <vscale x 8 x bfloat> %load
239 define <vscale x 4 x i32> @ldff1sh_s(<vscale x 4 x i1> %pg, i16* %a) {
240 ; CHECK-LABEL: ldff1sh_s:
241 ; CHECK: ldff1sh { z0.s }, p0/z, [x0]
243 %load = call <vscale x 4 x i16> @llvm.aarch64.sve.ldff1.nxv4i16(<vscale x 4 x i1> %pg, i16* %a)
244 %res = sext <vscale x 4 x i16> %load to <vscale x 4 x i32>
245 ret <vscale x 4 x i32> %res
248 define <vscale x 4 x i32> @ldff1sh_s_reg(<vscale x 4 x i1> %pg, i16* %a, i64 %offset) {
249 ; CHECK-LABEL: ldff1sh_s_reg:
250 ; CHECK: ldff1sh { z0.s }, p0/z, [x0, x1, lsl #1]
252 %base = getelementptr i16, i16* %a, i64 %offset
253 %load = call <vscale x 4 x i16> @llvm.aarch64.sve.ldff1.nxv4i16(<vscale x 4 x i1> %pg, i16* %base)
254 %res = sext <vscale x 4 x i16> %load to <vscale x 4 x i32>
255 ret <vscale x 4 x i32> %res
258 define <vscale x 2 x i64> @ldff1sh_d(<vscale x 2 x i1> %pg, i16* %a) {
259 ; CHECK-LABEL: ldff1sh_d:
260 ; CHECK: ldff1sh { z0.d }, p0/z, [x0]
262 %load = call <vscale x 2 x i16> @llvm.aarch64.sve.ldff1.nxv2i16(<vscale x 2 x i1> %pg, i16* %a)
263 %res = sext <vscale x 2 x i16> %load to <vscale x 2 x i64>
264 ret <vscale x 2 x i64> %res
267 define <vscale x 2 x i64> @ldff1sh_d_reg(<vscale x 2 x i1> %pg, i16* %a, i64 %offset) {
268 ; CHECK-LABEL: ldff1sh_d_reg:
269 ; CHECK: ldff1sh { z0.d }, p0/z, [x0, x1, lsl #1]
271 %base = getelementptr i16, i16* %a, i64 %offset
272 %load = call <vscale x 2 x i16> @llvm.aarch64.sve.ldff1.nxv2i16(<vscale x 2 x i1> %pg, i16* %base)
273 %res = sext <vscale x 2 x i16> %load to <vscale x 2 x i64>
274 ret <vscale x 2 x i64> %res
281 define <vscale x 4 x i32> @ldff1w(<vscale x 4 x i1> %pg, i32* %a) {
282 ; CHECK-LABEL: ldff1w:
283 ; CHECK: ldff1w { z0.s }, p0/z, [x0]
285 %load = call <vscale x 4 x i32> @llvm.aarch64.sve.ldff1.nxv4i32(<vscale x 4 x i1> %pg, i32* %a)
286 ret <vscale x 4 x i32> %load
289 define <vscale x 4 x i32> @ldff1w_reg(<vscale x 4 x i1> %pg, i32* %a, i64 %offset) {
290 ; CHECK-LABEL: ldff1w_reg:
291 ; CHECK: ldff1w { z0.s }, p0/z, [x0, x1, lsl #2]
293 %base = getelementptr i32, i32* %a, i64 %offset
294 %load = call <vscale x 4 x i32> @llvm.aarch64.sve.ldff1.nxv4i32(<vscale x 4 x i1> %pg, i32* %base)
295 ret <vscale x 4 x i32> %load
298 define <vscale x 2 x i64> @ldff1w_d(<vscale x 2 x i1> %pg, i32* %a) {
299 ; CHECK-LABEL: ldff1w_d:
300 ; CHECK: ldff1w { z0.d }, p0/z, [x0]
302 %load = call <vscale x 2 x i32> @llvm.aarch64.sve.ldff1.nxv2i32(<vscale x 2 x i1> %pg, i32* %a)
303 %res = zext <vscale x 2 x i32> %load to <vscale x 2 x i64>
304 ret <vscale x 2 x i64> %res
307 define <vscale x 2 x i64> @ldff1w_d_reg(<vscale x 2 x i1> %pg, i32* %a, i64 %offset) {
308 ; CHECK-LABEL: ldff1w_d_reg:
309 ; CHECK: ldff1w { z0.d }, p0/z, [x0, x1, lsl #2]
311 %base = getelementptr i32, i32* %a, i64 %offset
312 %load = call <vscale x 2 x i32> @llvm.aarch64.sve.ldff1.nxv2i32(<vscale x 2 x i1> %pg, i32* %base)
313 %res = zext <vscale x 2 x i32> %load to <vscale x 2 x i64>
314 ret <vscale x 2 x i64> %res
317 define <vscale x 4 x float> @ldff1w_f32(<vscale x 4 x i1> %pg, float* %a) {
318 ; CHECK-LABEL: ldff1w_f32:
319 ; CHECK: ldff1w { z0.s }, p0/z, [x0]
321 %load = call <vscale x 4 x float> @llvm.aarch64.sve.ldff1.nxv4f32(<vscale x 4 x i1> %pg, float* %a)
322 ret <vscale x 4 x float> %load
325 define <vscale x 4 x float> @ldff1w_f32_reg(<vscale x 4 x i1> %pg, float* %a, i64 %offset) {
326 ; CHECK-LABEL: ldff1w_f32_reg:
327 ; CHECK: ldff1w { z0.s }, p0/z, [x0, x1, lsl #2]
329 %base = getelementptr float, float* %a, i64 %offset
330 %load = call <vscale x 4 x float> @llvm.aarch64.sve.ldff1.nxv4f32(<vscale x 4 x i1> %pg, float* %base)
331 ret <vscale x 4 x float> %load
334 define <vscale x 2 x float> @ldff1w_2f32(<vscale x 2 x i1> %pg, float* %a) {
335 ; CHECK-LABEL: ldff1w_2f32:
336 ; CHECK: ldff1w { z0.d }, p0/z, [x0]
338 %load = call <vscale x 2 x float> @llvm.aarch64.sve.ldff1.nxv2f32(<vscale x 2 x i1> %pg, float* %a)
339 ret <vscale x 2 x float> %load
342 define <vscale x 2 x float> @ldff1w_2f32_reg(<vscale x 2 x i1> %pg, float* %a, i64 %offset) {
343 ; CHECK-LABEL: ldff1w_2f32_reg:
344 ; CHECK: ldff1w { z0.d }, p0/z, [x0, x1, lsl #2]
346 %base = getelementptr float, float* %a, i64 %offset
347 %load = call <vscale x 2 x float> @llvm.aarch64.sve.ldff1.nxv2f32(<vscale x 2 x i1> %pg, float* %base)
348 ret <vscale x 2 x float> %load
355 define <vscale x 2 x i64> @ldff1sw_d(<vscale x 2 x i1> %pg, i32* %a) {
356 ; CHECK-LABEL: ldff1sw_d:
357 ; CHECK: ldff1sw { z0.d }, p0/z, [x0]
359 %load = call <vscale x 2 x i32> @llvm.aarch64.sve.ldff1.nxv2i32(<vscale x 2 x i1> %pg, i32* %a)
360 %res = sext <vscale x 2 x i32> %load to <vscale x 2 x i64>
361 ret <vscale x 2 x i64> %res
364 define <vscale x 2 x i64> @ldff1sw_d_reg(<vscale x 2 x i1> %pg, i32* %a, i64 %offset) {
365 ; CHECK-LABEL: ldff1sw_d_reg:
366 ; CHECK: ldff1sw { z0.d }, p0/z, [x0, x1, lsl #2]
368 %base = getelementptr i32, i32* %a, i64 %offset
369 %load = call <vscale x 2 x i32> @llvm.aarch64.sve.ldff1.nxv2i32(<vscale x 2 x i1> %pg, i32* %base)
370 %res = sext <vscale x 2 x i32> %load to <vscale x 2 x i64>
371 ret <vscale x 2 x i64> %res
378 define <vscale x 2 x i64> @ldff1d(<vscale x 2 x i1> %pg, i64* %a) {
379 ; CHECK-LABEL: ldff1d:
380 ; CHECK: ldff1d { z0.d }, p0/z, [x0]
382 %load = call <vscale x 2 x i64> @llvm.aarch64.sve.ldff1.nxv2i64(<vscale x 2 x i1> %pg, i64* %a)
383 ret <vscale x 2 x i64> %load
386 define <vscale x 2 x i64> @ldff1d_reg(<vscale x 2 x i1> %pg, i64* %a, i64 %offset) {
387 ; CHECK-LABEL: ldff1d_reg:
388 ; CHECK: ldff1d { z0.d }, p0/z, [x0, x1, lsl #3]
390 %base = getelementptr i64, i64* %a, i64 %offset
391 %load = call <vscale x 2 x i64> @llvm.aarch64.sve.ldff1.nxv2i64(<vscale x 2 x i1> %pg, i64* %base)
392 ret <vscale x 2 x i64> %load
396 define <vscale x 2 x double> @ldff1d_f64(<vscale x 2 x i1> %pg, double* %a) {
397 ; CHECK-LABEL: ldff1d_f64:
398 ; CHECK: ldff1d { z0.d }, p0/z, [x0]
400 %load = call <vscale x 2 x double> @llvm.aarch64.sve.ldff1.nxv2f64(<vscale x 2 x i1> %pg, double* %a)
401 ret <vscale x 2 x double> %load
404 define <vscale x 2 x double> @ldff1d_f64_reg(<vscale x 2 x i1> %pg, double* %a, i64 %offset) {
405 ; CHECK-LABEL: ldff1d_f64_reg:
406 ; CHECK: ldff1d { z0.d }, p0/z, [x0, x1, lsl #3]
408 %base = getelementptr double, double* %a, i64 %offset
409 %load = call <vscale x 2 x double> @llvm.aarch64.sve.ldff1.nxv2f64(<vscale x 2 x i1> %pg, double* %base)
410 ret <vscale x 2 x double> %load
413 declare <vscale x 16 x i8> @llvm.aarch64.sve.ldff1.nxv16i8(<vscale x 16 x i1>, i8*)
415 declare <vscale x 8 x i8> @llvm.aarch64.sve.ldff1.nxv8i8(<vscale x 8 x i1>, i8*)
416 declare <vscale x 8 x i16> @llvm.aarch64.sve.ldff1.nxv8i16(<vscale x 8 x i1>, i16*)
417 declare <vscale x 8 x half> @llvm.aarch64.sve.ldff1.nxv8f16(<vscale x 8 x i1>, half*)
418 declare <vscale x 8 x bfloat> @llvm.aarch64.sve.ldff1.nxv8bf16(<vscale x 8 x i1>, bfloat*)
420 declare <vscale x 4 x i8> @llvm.aarch64.sve.ldff1.nxv4i8(<vscale x 4 x i1>, i8*)
421 declare <vscale x 4 x i16> @llvm.aarch64.sve.ldff1.nxv4i16(<vscale x 4 x i1>, i16*)
422 declare <vscale x 4 x i32> @llvm.aarch64.sve.ldff1.nxv4i32(<vscale x 4 x i1>, i32*)
423 declare <vscale x 2 x float> @llvm.aarch64.sve.ldff1.nxv2f32(<vscale x 2 x i1>, float*)
424 declare <vscale x 4 x float> @llvm.aarch64.sve.ldff1.nxv4f32(<vscale x 4 x i1>, float*)
426 declare <vscale x 2 x i8> @llvm.aarch64.sve.ldff1.nxv2i8(<vscale x 2 x i1>, i8*)
427 declare <vscale x 2 x i16> @llvm.aarch64.sve.ldff1.nxv2i16(<vscale x 2 x i1>, i16*)
428 declare <vscale x 2 x i32> @llvm.aarch64.sve.ldff1.nxv2i32(<vscale x 2 x i1>, i32*)
429 declare <vscale x 2 x i64> @llvm.aarch64.sve.ldff1.nxv2i64(<vscale x 2 x i1>, i64*)
430 declare <vscale x 2 x double> @llvm.aarch64.sve.ldff1.nxv2f64(<vscale x 2 x i1>, double*)
432 ; +bf16 is required for the bfloat version.
433 attributes #0 = { "target-features"="+sve,+bf16" }