[NFC][RemoveDIs] Prefer iterators over inst-pointers in InstCombine
[llvm-project.git] / llvm / test / CodeGen / AArch64 / sve-intrinsics-ff-gather-loads-32bit-unscaled-offsets.ll
blobab90115ee19936c86c99e5ec348fd296254eba2c
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
5 ; LDFF1B, LDFF1W, LDFF1H, LDFF1D: base + 32-bit unscaled offset, sign (sxtw) or zero
6 ; (uxtw) extended to 64 bits.
7 ;   e.g. ldff1h { z0.d }, p0/z, [x0, z0.d, uxtw]
10 ; LDFF1B
11 define <vscale x 4 x i32> @gldff1b_s_uxtw(<vscale x 4 x i1> %pg, ptr %base, <vscale x 4 x i32> %b) {
12 ; CHECK-LABEL: gldff1b_s_uxtw:
13 ; CHECK:       // %bb.0:
14 ; CHECK-NEXT:    ldff1b { z0.s }, p0/z, [x0, z0.s, uxtw]
15 ; CHECK-NEXT:    ret
16   %load = call <vscale x 4 x i8> @llvm.aarch64.sve.ldff1.gather.uxtw.nxv4i8(<vscale x 4 x i1> %pg,
17                                                                             ptr %base,
18                                                                             <vscale x 4 x i32> %b)
19   %res = zext <vscale x 4 x i8> %load to <vscale x 4 x i32>
20   ret <vscale x 4 x i32> %res
23 define <vscale x 4 x i32> @gldff1b_s_sxtw(<vscale x 4 x i1> %pg, ptr %base, <vscale x 4 x i32> %b) {
24 ; CHECK-LABEL: gldff1b_s_sxtw:
25 ; CHECK:       // %bb.0:
26 ; CHECK-NEXT:    ldff1b { z0.s }, p0/z, [x0, z0.s, sxtw]
27 ; CHECK-NEXT:    ret
28   %load = call <vscale x 4 x i8> @llvm.aarch64.sve.ldff1.gather.sxtw.nxv4i8(<vscale x 4 x i1> %pg,
29                                                                             ptr %base,
30                                                                             <vscale x 4 x i32> %b)
31   %res = zext <vscale x 4 x i8> %load to <vscale x 4 x i32>
32   ret <vscale x 4 x i32> %res
35 define <vscale x 2 x i64> @gldff1b_d_uxtw(<vscale x 2 x i1> %pg, ptr %base, <vscale x 2 x i32> %b) {
36 ; CHECK-LABEL: gldff1b_d_uxtw:
37 ; CHECK:       // %bb.0:
38 ; CHECK-NEXT:    ldff1b { z0.d }, p0/z, [x0, z0.d, uxtw]
39 ; CHECK-NEXT:    ret
40   %load = call <vscale x 2 x i8> @llvm.aarch64.sve.ldff1.gather.uxtw.nxv2i8(<vscale x 2 x i1> %pg,
41                                                                             ptr %base,
42                                                                             <vscale x 2 x i32> %b)
43   %res = zext <vscale x 2 x i8> %load to <vscale x 2 x i64>
44   ret <vscale x 2 x i64> %res
47 define <vscale x 2 x i64> @gldff1b_d_sxtw(<vscale x 2 x i1> %pg, ptr %base, <vscale x 2 x i32> %b) {
48 ; CHECK-LABEL: gldff1b_d_sxtw:
49 ; CHECK:       // %bb.0:
50 ; CHECK-NEXT:    ldff1b { z0.d }, p0/z, [x0, z0.d, sxtw]
51 ; CHECK-NEXT:    ret
52   %load = call <vscale x 2 x i8> @llvm.aarch64.sve.ldff1.gather.sxtw.nxv2i8(<vscale x 2 x i1> %pg,
53                                                                             ptr %base,
54                                                                             <vscale x 2 x i32> %b)
55   %res = zext <vscale x 2 x i8> %load to <vscale x 2 x i64>
56   ret <vscale x 2 x i64> %res
59 ; LDFF1H
60 define <vscale x 4 x i32> @gldff1h_s_uxtw(<vscale x 4 x i1> %pg, ptr %base, <vscale x 4 x i32> %b) {
61 ; CHECK-LABEL: gldff1h_s_uxtw:
62 ; CHECK:       // %bb.0:
63 ; CHECK-NEXT:    ldff1h { z0.s }, p0/z, [x0, z0.s, uxtw]
64 ; CHECK-NEXT:    ret
65   %load = call <vscale x 4 x i16> @llvm.aarch64.sve.ldff1.gather.uxtw.nxv4i16(<vscale x 4 x i1> %pg,
66                                                                               ptr %base,
67                                                                               <vscale x 4 x i32> %b)
68   %res = zext <vscale x 4 x i16> %load to <vscale x 4 x i32>
69   ret <vscale x 4 x i32> %res
72 define <vscale x 4 x i32> @gldff1h_s_sxtw(<vscale x 4 x i1> %pg, ptr %base, <vscale x 4 x i32> %b) {
73 ; CHECK-LABEL: gldff1h_s_sxtw:
74 ; CHECK:       // %bb.0:
75 ; CHECK-NEXT:    ldff1h { z0.s }, p0/z, [x0, z0.s, sxtw]
76 ; CHECK-NEXT:    ret
77   %load = call <vscale x 4 x i16> @llvm.aarch64.sve.ldff1.gather.sxtw.nxv4i16(<vscale x 4 x i1> %pg,
78                                                                               ptr %base,
79                                                                               <vscale x 4 x i32> %b)
80   %res = zext <vscale x 4 x i16> %load to <vscale x 4 x i32>
81   ret <vscale x 4 x i32> %res
84 define <vscale x 2 x i64> @gldff1h_d_uxtw(<vscale x 2 x i1> %pg, ptr %base, <vscale x 2 x i32> %b) {
85 ; CHECK-LABEL: gldff1h_d_uxtw:
86 ; CHECK:       // %bb.0:
87 ; CHECK-NEXT:    ldff1h { z0.d }, p0/z, [x0, z0.d, uxtw]
88 ; CHECK-NEXT:    ret
89   %load = call <vscale x 2 x i16> @llvm.aarch64.sve.ldff1.gather.uxtw.nxv2i16(<vscale x 2 x i1> %pg,
90                                                                               ptr %base,
91                                                                               <vscale x 2 x i32> %b)
92   %res = zext <vscale x 2 x i16> %load to <vscale x 2 x i64>
93   ret <vscale x 2 x i64> %res
96 define <vscale x 2 x i64> @gldff1h_d_sxtw(<vscale x 2 x i1> %pg, ptr %base, <vscale x 2 x i32> %b) {
97 ; CHECK-LABEL: gldff1h_d_sxtw:
98 ; CHECK:       // %bb.0:
99 ; CHECK-NEXT:    ldff1h { z0.d }, p0/z, [x0, z0.d, sxtw]
100 ; CHECK-NEXT:    ret
101   %load = call <vscale x 2 x i16> @llvm.aarch64.sve.ldff1.gather.sxtw.nxv2i16(<vscale x 2 x i1> %pg,
102                                                                               ptr %base,
103                                                                               <vscale x 2 x i32> %b)
104   %res = zext <vscale x 2 x i16> %load to <vscale x 2 x i64>
105   ret <vscale x 2 x i64> %res
108 ; LDFF1W
109 define <vscale x 4 x i32> @gldff1w_s_uxtw(<vscale x 4 x i1> %pg, ptr %base, <vscale x 4 x i32> %b) {
110 ; CHECK-LABEL: gldff1w_s_uxtw:
111 ; CHECK:       // %bb.0:
112 ; CHECK-NEXT:    ldff1w { z0.s }, p0/z, [x0, z0.s, uxtw]
113 ; CHECK-NEXT:    ret
114   %load = call <vscale x 4 x i32> @llvm.aarch64.sve.ldff1.gather.uxtw.nxv4i32(<vscale x 4 x i1> %pg,
115                                                                               ptr %base,
116                                                                               <vscale x 4 x i32> %b)
117   ret <vscale x 4 x i32> %load
120 define <vscale x 4 x i32> @gldff1w_s_sxtw(<vscale x 4 x i1> %pg, ptr %base, <vscale x 4 x i32> %b) {
121 ; CHECK-LABEL: gldff1w_s_sxtw:
122 ; CHECK:       // %bb.0:
123 ; CHECK-NEXT:    ldff1w { z0.s }, p0/z, [x0, z0.s, sxtw]
124 ; CHECK-NEXT:    ret
125   %load = call <vscale x 4 x i32> @llvm.aarch64.sve.ldff1.gather.sxtw.nxv4i32(<vscale x 4 x i1> %pg,
126                                                                               ptr %base,
127                                                                               <vscale x 4 x i32> %b)
128   ret <vscale x 4 x i32> %load
131 define <vscale x 2 x i64> @gldff1w_d_uxtw(<vscale x 2 x i1> %pg, ptr %base, <vscale x 2 x i32> %b) {
132 ; CHECK-LABEL: gldff1w_d_uxtw:
133 ; CHECK:       // %bb.0:
134 ; CHECK-NEXT:    ldff1w { z0.d }, p0/z, [x0, z0.d, uxtw]
135 ; CHECK-NEXT:    ret
136   %load = call <vscale x 2 x i32> @llvm.aarch64.sve.ldff1.gather.uxtw.nxv2i32(<vscale x 2 x i1> %pg,
137                                                                               ptr %base,
138                                                                               <vscale x 2 x i32> %b)
139   %res = zext <vscale x 2 x i32> %load to <vscale x 2 x i64>
140   ret <vscale x 2 x i64> %res
143 define <vscale x 2 x i64> @gldff1w_d_sxtw(<vscale x 2 x i1> %pg, ptr %base, <vscale x 2 x i32> %b) {
144 ; CHECK-LABEL: gldff1w_d_sxtw:
145 ; CHECK:       // %bb.0:
146 ; CHECK-NEXT:    ldff1w { z0.d }, p0/z, [x0, z0.d, sxtw]
147 ; CHECK-NEXT:    ret
148   %load = call <vscale x 2 x i32> @llvm.aarch64.sve.ldff1.gather.sxtw.nxv2i32(<vscale x 2 x i1> %pg,
149                                                                               ptr %base,
150                                                                               <vscale x 2 x i32> %b)
151   %res = zext <vscale x 2 x i32> %load to <vscale x 2 x i64>
152   ret <vscale x 2 x i64> %res
155 define <vscale x 4 x float> @gldff1w_s_uxtw_float(<vscale x 4 x i1> %pg, ptr %base, <vscale x 4 x i32> %b) {
156 ; CHECK-LABEL: gldff1w_s_uxtw_float:
157 ; CHECK:       // %bb.0:
158 ; CHECK-NEXT:    ldff1w { z0.s }, p0/z, [x0, z0.s, uxtw]
159 ; CHECK-NEXT:    ret
160   %load = call <vscale x 4 x float> @llvm.aarch64.sve.ldff1.gather.uxtw.nxv4f32(<vscale x 4 x i1> %pg,
161                                                                                 ptr %base,
162                                                                                 <vscale x 4 x i32> %b)
163   ret <vscale x 4 x float> %load
166 define <vscale x 4 x float> @gldff1w_s_sxtw_float(<vscale x 4 x i1> %pg, ptr %base, <vscale x 4 x i32> %b) {
167 ; CHECK-LABEL: gldff1w_s_sxtw_float:
168 ; CHECK:       // %bb.0:
169 ; CHECK-NEXT:    ldff1w { z0.s }, p0/z, [x0, z0.s, sxtw]
170 ; CHECK-NEXT:    ret
171   %load = call <vscale x 4 x float> @llvm.aarch64.sve.ldff1.gather.sxtw.nxv4f32(<vscale x 4 x i1> %pg,
172                                                                                 ptr %base,
173                                                                                 <vscale x 4 x i32> %b)
174   ret <vscale x 4 x float> %load
177 ; LDFF1D
178 define <vscale x 2 x i64> @gldff1d_d_uxtw(<vscale x 2 x i1> %pg, ptr %base, <vscale x 2 x i32> %b) {
179 ; CHECK-LABEL: gldff1d_d_uxtw:
180 ; CHECK:       // %bb.0:
181 ; CHECK-NEXT:    ldff1d { z0.d }, p0/z, [x0, z0.d, uxtw]
182 ; CHECK-NEXT:    ret
183   %load = call <vscale x 2 x i64> @llvm.aarch64.sve.ldff1.gather.uxtw.nxv2i64(<vscale x 2 x i1> %pg,
184                                                                               ptr %base,
185                                                                               <vscale x 2 x i32> %b)
186   ret <vscale x 2 x i64> %load
189 define <vscale x 2 x i64> @gldff1d_d_sxtw(<vscale x 2 x i1> %pg, ptr %base, <vscale x 2 x i32> %b) {
190 ; CHECK-LABEL: gldff1d_d_sxtw:
191 ; CHECK:       // %bb.0:
192 ; CHECK-NEXT:    ldff1d { z0.d }, p0/z, [x0, z0.d, sxtw]
193 ; CHECK-NEXT:    ret
194   %load = call <vscale x 2 x i64> @llvm.aarch64.sve.ldff1.gather.sxtw.nxv2i64(<vscale x 2 x i1> %pg,
195                                                                               ptr %base,
196                                                                               <vscale x 2 x i32> %b)
197   ret <vscale x 2 x i64> %load
200 define <vscale x 2 x double> @gldff1d_d_uxtw_double(<vscale x 2 x i1> %pg, ptr %base, <vscale x 2 x i32> %b) {
201 ; CHECK-LABEL: gldff1d_d_uxtw_double:
202 ; CHECK:       // %bb.0:
203 ; CHECK-NEXT:    ldff1d { z0.d }, p0/z, [x0, z0.d, uxtw]
204 ; CHECK-NEXT:    ret
205   %load = call <vscale x 2 x double> @llvm.aarch64.sve.ldff1.gather.uxtw.nxv2f64(<vscale x 2 x i1> %pg,
206                                                                                  ptr %base,
207                                                                                  <vscale x 2 x i32> %b)
208   ret <vscale x 2 x double> %load
211 define <vscale x 2 x double> @gldff1d_d_sxtw_double(<vscale x 2 x i1> %pg, ptr %base, <vscale x 2 x i32> %b) {
212 ; CHECK-LABEL: gldff1d_d_sxtw_double:
213 ; CHECK:       // %bb.0:
214 ; CHECK-NEXT:    ldff1d { z0.d }, p0/z, [x0, z0.d, sxtw]
215 ; CHECK-NEXT:    ret
216   %load = call <vscale x 2 x double> @llvm.aarch64.sve.ldff1.gather.sxtw.nxv2f64(<vscale x 2 x i1> %pg,
217                                                                                  ptr %base,
218                                                                                  <vscale x 2 x i32> %b)
219   ret <vscale x 2 x double> %load
223 ; LDFF1SB, LDFF1SW, LDFF1SH: base + 32-bit unscaled offset, sign (sxtw) or zero
224 ; (uxtw) extended to 64 bits.
225 ;   e.g. ldff1sh { z0.d }, p0/z, [x0, z0.d, uxtw]
228 ; LDFF1SB
229 define <vscale x 4 x i32> @gldff1sb_s_uxtw(<vscale x 4 x i1> %pg, ptr %base, <vscale x 4 x i32> %b) {
230 ; CHECK-LABEL: gldff1sb_s_uxtw:
231 ; CHECK:       // %bb.0:
232 ; CHECK-NEXT:    ldff1sb { z0.s }, p0/z, [x0, z0.s, uxtw]
233 ; CHECK-NEXT:    ret
234   %load = call <vscale x 4 x i8> @llvm.aarch64.sve.ldff1.gather.uxtw.nxv4i8(<vscale x 4 x i1> %pg,
235                                                                             ptr %base,
236                                                                             <vscale x 4 x i32> %b)
237   %res = sext <vscale x 4 x i8> %load to <vscale x 4 x i32>
238   ret <vscale x 4 x i32> %res
241 define <vscale x 4 x i32> @gldff1sb_s_sxtw(<vscale x 4 x i1> %pg, ptr %base, <vscale x 4 x i32> %b) {
242 ; CHECK-LABEL: gldff1sb_s_sxtw:
243 ; CHECK:       // %bb.0:
244 ; CHECK-NEXT:    ldff1sb { z0.s }, p0/z, [x0, z0.s, sxtw]
245 ; CHECK-NEXT:    ret
246   %load = call <vscale x 4 x i8> @llvm.aarch64.sve.ldff1.gather.sxtw.nxv4i8(<vscale x 4 x i1> %pg,
247                                                                             ptr %base,
248                                                                             <vscale x 4 x i32> %b)
249   %res = sext <vscale x 4 x i8> %load to <vscale x 4 x i32>
250   ret <vscale x 4 x i32> %res
253 define <vscale x 2 x i64> @gldff1sb_d_uxtw(<vscale x 2 x i1> %pg, ptr %base, <vscale x 2 x i32> %b) {
254 ; CHECK-LABEL: gldff1sb_d_uxtw:
255 ; CHECK:       // %bb.0:
256 ; CHECK-NEXT:    ldff1sb { z0.d }, p0/z, [x0, z0.d, uxtw]
257 ; CHECK-NEXT:    ret
258   %load = call <vscale x 2 x i8> @llvm.aarch64.sve.ldff1.gather.uxtw.nxv2i8(<vscale x 2 x i1> %pg,
259                                                                             ptr %base,
260                                                                             <vscale x 2 x i32> %b)
261   %res = sext <vscale x 2 x i8> %load to <vscale x 2 x i64>
262   ret <vscale x 2 x i64> %res
265 define <vscale x 2 x i64> @gldff1sb_d_sxtw(<vscale x 2 x i1> %pg, ptr %base, <vscale x 2 x i32> %b) {
266 ; CHECK-LABEL: gldff1sb_d_sxtw:
267 ; CHECK:       // %bb.0:
268 ; CHECK-NEXT:    ldff1sb { z0.d }, p0/z, [x0, z0.d, sxtw]
269 ; CHECK-NEXT:    ret
270   %load = call <vscale x 2 x i8> @llvm.aarch64.sve.ldff1.gather.sxtw.nxv2i8(<vscale x 2 x i1> %pg,
271                                                                             ptr %base,
272                                                                             <vscale x 2 x i32> %b)
273   %res = sext <vscale x 2 x i8> %load to <vscale x 2 x i64>
274   ret <vscale x 2 x i64> %res
277 ; LDFF1SH
278 define <vscale x 4 x i32> @gldff1sh_s_uxtw(<vscale x 4 x i1> %pg, ptr %base, <vscale x 4 x i32> %b) {
279 ; CHECK-LABEL: gldff1sh_s_uxtw:
280 ; CHECK:       // %bb.0:
281 ; CHECK-NEXT:    ldff1sh { z0.s }, p0/z, [x0, z0.s, uxtw]
282 ; CHECK-NEXT:    ret
283   %load = call <vscale x 4 x i16> @llvm.aarch64.sve.ldff1.gather.uxtw.nxv4i16(<vscale x 4 x i1> %pg,
284                                                                               ptr %base,
285                                                                               <vscale x 4 x i32> %b)
286   %res = sext <vscale x 4 x i16> %load to <vscale x 4 x i32>
287   ret <vscale x 4 x i32> %res
290 define <vscale x 4 x i32> @gldff1sh_s_sxtw(<vscale x 4 x i1> %pg, ptr %base, <vscale x 4 x i32> %b) {
291 ; CHECK-LABEL: gldff1sh_s_sxtw:
292 ; CHECK:       // %bb.0:
293 ; CHECK-NEXT:    ldff1sh { z0.s }, p0/z, [x0, z0.s, sxtw]
294 ; CHECK-NEXT:    ret
295   %load = call <vscale x 4 x i16> @llvm.aarch64.sve.ldff1.gather.sxtw.nxv4i16(<vscale x 4 x i1> %pg,
296                                                                               ptr %base,
297                                                                               <vscale x 4 x i32> %b)
298   %res = sext <vscale x 4 x i16> %load to <vscale x 4 x i32>
299   ret <vscale x 4 x i32> %res
302 define <vscale x 2 x i64> @gldff1sh_d_uxtw(<vscale x 2 x i1> %pg, ptr %base, <vscale x 2 x i32> %b) {
303 ; CHECK-LABEL: gldff1sh_d_uxtw:
304 ; CHECK:       // %bb.0:
305 ; CHECK-NEXT:    ldff1sh { z0.d }, p0/z, [x0, z0.d, uxtw]
306 ; CHECK-NEXT:    ret
307   %load = call <vscale x 2 x i16> @llvm.aarch64.sve.ldff1.gather.uxtw.nxv2i16(<vscale x 2 x i1> %pg,
308                                                                               ptr %base,
309                                                                               <vscale x 2 x i32> %b)
310   %res = sext <vscale x 2 x i16> %load to <vscale x 2 x i64>
311   ret <vscale x 2 x i64> %res
314 define <vscale x 2 x i64> @gldff1sh_d_sxtw(<vscale x 2 x i1> %pg, ptr %base, <vscale x 2 x i32> %b) {
315 ; CHECK-LABEL: gldff1sh_d_sxtw:
316 ; CHECK:       // %bb.0:
317 ; CHECK-NEXT:    ldff1sh { z0.d }, p0/z, [x0, z0.d, sxtw]
318 ; CHECK-NEXT:    ret
319   %load = call <vscale x 2 x i16> @llvm.aarch64.sve.ldff1.gather.sxtw.nxv2i16(<vscale x 2 x i1> %pg,
320                                                                               ptr %base,
321                                                                               <vscale x 2 x i32> %b)
322   %res = sext <vscale x 2 x i16> %load to <vscale x 2 x i64>
323   ret <vscale x 2 x i64> %res
326 ; LDFF1SW
327 define <vscale x 2 x i64> @gldff1sw_d_uxtw(<vscale x 2 x i1> %pg, ptr %base, <vscale x 2 x i32> %b) {
328 ; CHECK-LABEL: gldff1sw_d_uxtw:
329 ; CHECK:       // %bb.0:
330 ; CHECK-NEXT:    ldff1sw { z0.d }, p0/z, [x0, z0.d, uxtw]
331 ; CHECK-NEXT:    ret
332   %load = call <vscale x 2 x i32> @llvm.aarch64.sve.ldff1.gather.uxtw.nxv2i32(<vscale x 2 x i1> %pg,
333                                                                               ptr %base,
334                                                                               <vscale x 2 x i32> %b)
335   %res = sext <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> @gldff1sw_d_sxtw(<vscale x 2 x i1> %pg, ptr %base, <vscale x 2 x i32> %b) {
340 ; CHECK-LABEL: gldff1sw_d_sxtw:
341 ; CHECK:       // %bb.0:
342 ; CHECK-NEXT:    ldff1sw { z0.d }, p0/z, [x0, z0.d, sxtw]
343 ; CHECK-NEXT:    ret
344   %load = call <vscale x 2 x i32> @llvm.aarch64.sve.ldff1.gather.sxtw.nxv2i32(<vscale x 2 x i1> %pg,
345                                                                               ptr %base,
346                                                                               <vscale x 2 x i32> %b)
347   %res = sext <vscale x 2 x i32> %load to <vscale x 2 x i64>
348   ret <vscale x 2 x i64> %res
351 ; LDFF1B/LDFF1SB
352 declare <vscale x 4 x i8> @llvm.aarch64.sve.ldff1.gather.uxtw.nxv4i8(<vscale x 4 x i1>, ptr, <vscale x 4 x i32>)
353 declare <vscale x 2 x i8> @llvm.aarch64.sve.ldff1.gather.uxtw.nxv2i8(<vscale x 2 x i1>, ptr, <vscale x 2 x i32>)
354 declare <vscale x 4 x i8> @llvm.aarch64.sve.ldff1.gather.sxtw.nxv4i8(<vscale x 4 x i1>, ptr, <vscale x 4 x i32>)
355 declare <vscale x 2 x i8> @llvm.aarch64.sve.ldff1.gather.sxtw.nxv2i8(<vscale x 2 x i1>, ptr, <vscale x 2 x i32>)
357 ; LDFF1H/LDFF1SH
358 declare <vscale x 4 x i16> @llvm.aarch64.sve.ldff1.gather.sxtw.nxv4i16(<vscale x 4 x i1>, ptr, <vscale x 4 x i32>)
359 declare <vscale x 2 x i16> @llvm.aarch64.sve.ldff1.gather.sxtw.nxv2i16(<vscale x 2 x i1>, ptr, <vscale x 2 x i32>)
360 declare <vscale x 4 x i16> @llvm.aarch64.sve.ldff1.gather.uxtw.nxv4i16(<vscale x 4 x i1>, ptr, <vscale x 4 x i32>)
361 declare <vscale x 2 x i16> @llvm.aarch64.sve.ldff1.gather.uxtw.nxv2i16(<vscale x 2 x i1>, ptr, <vscale x 2 x i32>)
363 ; LDFF1W/LDFF1SW
364 declare <vscale x 4 x i32> @llvm.aarch64.sve.ldff1.gather.sxtw.nxv4i32(<vscale x 4 x i1>, ptr, <vscale x 4 x i32>)
365 declare <vscale x 2 x i32> @llvm.aarch64.sve.ldff1.gather.sxtw.nxv2i32(<vscale x 2 x i1>, ptr, <vscale x 2 x i32>)
366 declare <vscale x 4 x i32> @llvm.aarch64.sve.ldff1.gather.uxtw.nxv4i32(<vscale x 4 x i1>, ptr, <vscale x 4 x i32>)
367 declare <vscale x 2 x i32> @llvm.aarch64.sve.ldff1.gather.uxtw.nxv2i32(<vscale x 2 x i1>, ptr, <vscale x 2 x i32>)
369 declare <vscale x 4 x float> @llvm.aarch64.sve.ldff1.gather.sxtw.nxv4f32(<vscale x 4 x i1>, ptr, <vscale x 4 x i32>)
370 declare <vscale x 4 x float> @llvm.aarch64.sve.ldff1.gather.uxtw.nxv4f32(<vscale x 4 x i1>, ptr, <vscale x 4 x i32>)
372 ; LDFF1D
373 declare <vscale x 2 x i64> @llvm.aarch64.sve.ldff1.gather.sxtw.nxv2i64(<vscale x 2 x i1>, ptr, <vscale x 2 x i32>)
374 declare <vscale x 2 x i64> @llvm.aarch64.sve.ldff1.gather.uxtw.nxv2i64(<vscale x 2 x i1>, ptr, <vscale x 2 x i32>)
376 declare <vscale x 2 x double> @llvm.aarch64.sve.ldff1.gather.sxtw.nxv2f64(<vscale x 2 x i1>, ptr, <vscale x 2 x i32>)
377 declare <vscale x 2 x double> @llvm.aarch64.sve.ldff1.gather.uxtw.nxv2f64(<vscale x 2 x i1>, ptr, <vscale x 2 x i32>)