1 ; RUN: llc -mtriple=aarch64-linux-gnu -mattr=+sve < %s | FileCheck %s
7 define <vscale x 8 x half> @fabd_h(<vscale x 8 x i1> %pg, <vscale x 8 x half> %a, <vscale x 8 x half> %b) {
9 ; CHECK: fabd z0.h, p0/m, z0.h, z1.h
11 %out = call <vscale x 8 x half> @llvm.aarch64.sve.fabd.nxv8f16(<vscale x 8 x i1> %pg,
12 <vscale x 8 x half> %a,
13 <vscale x 8 x half> %b)
14 ret <vscale x 8 x half> %out
17 define <vscale x 4 x float> @fabd_s(<vscale x 4 x i1> %pg, <vscale x 4 x float> %a, <vscale x 4 x float> %b) {
18 ; CHECK-LABEL: fabd_s:
19 ; CHECK: fabd z0.s, p0/m, z0.s, z1.s
21 %out = call <vscale x 4 x float> @llvm.aarch64.sve.fabd.nxv4f32(<vscale x 4 x i1> %pg,
22 <vscale x 4 x float> %a,
23 <vscale x 4 x float> %b)
24 ret <vscale x 4 x float> %out
27 define <vscale x 2 x double> @fabd_d(<vscale x 2 x i1> %pg, <vscale x 2 x double> %a, <vscale x 2 x double> %b) {
28 ; CHECK-LABEL: fabd_d:
29 ; CHECK: fabd z0.d, p0/m, z0.d, z1.d
31 %out = call <vscale x 2 x double> @llvm.aarch64.sve.fabd.nxv2f64(<vscale x 2 x i1> %pg,
32 <vscale x 2 x double> %a,
33 <vscale x 2 x double> %b)
34 ret <vscale x 2 x double> %out
41 define <vscale x 8 x half> @fabs_h(<vscale x 8 x half> %a, <vscale x 8 x i1> %pg, <vscale x 8 x half> %b) {
42 ; CHECK-LABEL: fabs_h:
43 ; CHECK: fabs z0.h, p0/m, z1.h
45 %out = call <vscale x 8 x half> @llvm.aarch64.sve.fabs.nxv8f16(<vscale x 8 x half> %a,
46 <vscale x 8 x i1> %pg,
47 <vscale x 8 x half> %b)
48 ret <vscale x 8 x half> %out
51 define <vscale x 4 x float> @fabs_s(<vscale x 4 x float> %a, <vscale x 4 x i1> %pg, <vscale x 4 x float> %b) {
52 ; CHECK-LABEL: fabs_s:
53 ; CHECK: fabs z0.s, p0/m, z1.s
55 %out = call <vscale x 4 x float> @llvm.aarch64.sve.fabs.nxv4f32(<vscale x 4 x float> %a,
56 <vscale x 4 x i1> %pg,
57 <vscale x 4 x float> %b)
58 ret <vscale x 4 x float> %out
61 define <vscale x 2 x double> @fabs_d(<vscale x 2 x double> %a, <vscale x 2 x i1> %pg, <vscale x 2 x double> %b) {
62 ; CHECK-LABEL: fabs_d:
63 ; CHECK: fabs z0.d, p0/m, z1.d
65 %out = call <vscale x 2 x double> @llvm.aarch64.sve.fabs.nxv2f64(<vscale x 2 x double> %a,
66 <vscale x 2 x i1> %pg,
67 <vscale x 2 x double> %b)
68 ret <vscale x 2 x double> %out
75 define <vscale x 8 x half> @fadd_h(<vscale x 8 x i1> %pg, <vscale x 8 x half> %a, <vscale x 8 x half> %b) {
76 ; CHECK-LABEL: fadd_h:
77 ; CHECK: fadd z0.h, p0/m, z0.h, z1.h
79 %out = call <vscale x 8 x half> @llvm.aarch64.sve.fadd.nxv8f16(<vscale x 8 x i1> %pg,
80 <vscale x 8 x half> %a,
81 <vscale x 8 x half> %b)
82 ret <vscale x 8 x half> %out
85 define <vscale x 4 x float> @fadd_s(<vscale x 4 x i1> %pg, <vscale x 4 x float> %a, <vscale x 4 x float> %b) {
86 ; CHECK-LABEL: fadd_s:
87 ; CHECK: fadd z0.s, p0/m, z0.s, z1.s
89 %out = call <vscale x 4 x float> @llvm.aarch64.sve.fadd.nxv4f32(<vscale x 4 x i1> %pg,
90 <vscale x 4 x float> %a,
91 <vscale x 4 x float> %b)
92 ret <vscale x 4 x float> %out
95 define <vscale x 2 x double> @fadd_d(<vscale x 2 x i1> %pg, <vscale x 2 x double> %a, <vscale x 2 x double> %b) {
96 ; CHECK-LABEL: fadd_d:
97 ; CHECK: fadd z0.d, p0/m, z0.d, z1.d
99 %out = call <vscale x 2 x double> @llvm.aarch64.sve.fadd.nxv2f64(<vscale x 2 x i1> %pg,
100 <vscale x 2 x double> %a,
101 <vscale x 2 x double> %b)
102 ret <vscale x 2 x double> %out
109 define <vscale x 8 x half> @fcadd_h(<vscale x 8 x i1> %pg, <vscale x 8 x half> %a, <vscale x 8 x half> %b) {
110 ; CHECK-LABEL: fcadd_h:
111 ; CHECK: fcadd z0.h, p0/m, z0.h, z1.h, #90
113 %out = call <vscale x 8 x half> @llvm.aarch64.sve.fcadd.nxv8f16(<vscale x 8 x i1> %pg,
114 <vscale x 8 x half> %a,
115 <vscale x 8 x half> %b,
117 ret <vscale x 8 x half> %out
120 define <vscale x 4 x float> @fcadd_s(<vscale x 4 x i1> %pg, <vscale x 4 x float> %a, <vscale x 4 x float> %b) {
121 ; CHECK-LABEL: fcadd_s:
122 ; CHECK: fcadd z0.s, p0/m, z0.s, z1.s, #270
124 %out = call <vscale x 4 x float> @llvm.aarch64.sve.fcadd.nxv4f32(<vscale x 4 x i1> %pg,
125 <vscale x 4 x float> %a,
126 <vscale x 4 x float> %b,
128 ret <vscale x 4 x float> %out
131 define <vscale x 2 x double> @fcadd_d(<vscale x 2 x i1> %pg, <vscale x 2 x double> %a, <vscale x 2 x double> %b) {
132 ; CHECK-LABEL: fcadd_d:
133 ; CHECK: fcadd z0.d, p0/m, z0.d, z1.d, #90
135 %out = call <vscale x 2 x double> @llvm.aarch64.sve.fcadd.nxv2f64(<vscale x 2 x i1> %pg,
136 <vscale x 2 x double> %a,
137 <vscale x 2 x double> %b,
139 ret <vscale x 2 x double> %out
146 define <vscale x 8 x half> @fcmla_h(<vscale x 8 x i1> %pg, <vscale x 8 x half> %a, <vscale x 8 x half> %b, <vscale x 8 x half> %c) {
147 ; CHECK-LABEL: fcmla_h:
148 ; CHECK: fcmla z0.h, p0/m, z1.h, z2.h, #90
150 %out = call <vscale x 8 x half> @llvm.aarch64.sve.fcmla.nxv8f16(<vscale x 8 x i1> %pg,
151 <vscale x 8 x half> %a,
152 <vscale x 8 x half> %b,
153 <vscale x 8 x half> %c,
155 ret <vscale x 8 x half> %out
158 define <vscale x 4 x float> @fcmla_s(<vscale x 4 x i1> %pg, <vscale x 4 x float> %a, <vscale x 4 x float> %b, <vscale x 4 x float> %c) {
159 ; CHECK-LABEL: fcmla_s:
160 ; CHECK: fcmla z0.s, p0/m, z1.s, z2.s, #180
162 %out = call <vscale x 4 x float> @llvm.aarch64.sve.fcmla.nxv4f32(<vscale x 4 x i1> %pg,
163 <vscale x 4 x float> %a,
164 <vscale x 4 x float> %b,
165 <vscale x 4 x float> %c,
167 ret <vscale x 4 x float> %out
170 define <vscale x 2 x double> @fcmla_d(<vscale x 2 x i1> %pg, <vscale x 2 x double> %a, <vscale x 2 x double> %b, <vscale x 2 x double> %c) {
171 ; CHECK-LABEL: fcmla_d:
172 ; CHECK: fcmla z0.d, p0/m, z1.d, z2.d, #270
174 %out = call <vscale x 2 x double> @llvm.aarch64.sve.fcmla.nxv2f64(<vscale x 2 x i1> %pg,
175 <vscale x 2 x double> %a,
176 <vscale x 2 x double> %b,
177 <vscale x 2 x double> %c,
179 ret <vscale x 2 x double> %out
186 define <vscale x 8 x half> @fcmla_lane_h(<vscale x 8 x half> %a, <vscale x 8 x half> %b, <vscale x 8 x half> %c) {
187 ; CHECK-LABEL: fcmla_lane_h:
188 ; CHECK: fcmla z0.h, z1.h, z2.h[3], #0
190 %out = call <vscale x 8 x half> @llvm.aarch64.sve.fcmla.lane.nxv8f16(<vscale x 8 x half> %a,
191 <vscale x 8 x half> %b,
192 <vscale x 8 x half> %c,
195 ret <vscale x 8 x half> %out
198 define <vscale x 4 x float> @fcmla_lane_s(<vscale x 4 x float> %a, <vscale x 4 x float> %b, <vscale x 4 x float> %c) {
199 ; CHECK-LABEL: fcmla_lane_s:
200 ; CHECK: fcmla z0.s, z1.s, z2.s[1], #90
202 %out = call <vscale x 4 x float> @llvm.aarch64.sve.fcmla.lane.nxv4f32(<vscale x 4 x float> %a,
203 <vscale x 4 x float> %b,
204 <vscale x 4 x float> %c,
207 ret <vscale x 4 x float> %out
214 define <vscale x 8 x half> @fdiv_h(<vscale x 8 x i1> %pg, <vscale x 8 x half> %a, <vscale x 8 x half> %b) {
215 ; CHECK-LABEL: fdiv_h:
216 ; CHECK: fdiv z0.h, p0/m, z0.h, z1.h
218 %out = call <vscale x 8 x half> @llvm.aarch64.sve.fdiv.nxv8f16(<vscale x 8 x i1> %pg,
219 <vscale x 8 x half> %a,
220 <vscale x 8 x half> %b)
221 ret <vscale x 8 x half> %out
224 define <vscale x 4 x float> @fdiv_s(<vscale x 4 x i1> %pg, <vscale x 4 x float> %a, <vscale x 4 x float> %b) {
225 ; CHECK-LABEL: fdiv_s:
226 ; CHECK: fdiv z0.s, p0/m, z0.s, z1.s
228 %out = call <vscale x 4 x float> @llvm.aarch64.sve.fdiv.nxv4f32(<vscale x 4 x i1> %pg,
229 <vscale x 4 x float> %a,
230 <vscale x 4 x float> %b)
231 ret <vscale x 4 x float> %out
234 define <vscale x 2 x double> @fdiv_d(<vscale x 2 x i1> %pg, <vscale x 2 x double> %a, <vscale x 2 x double> %b) {
235 ; CHECK-LABEL: fdiv_d:
236 ; CHECK: fdiv z0.d, p0/m, z0.d, z1.d
238 %out = call <vscale x 2 x double> @llvm.aarch64.sve.fdiv.nxv2f64(<vscale x 2 x i1> %pg,
239 <vscale x 2 x double> %a,
240 <vscale x 2 x double> %b)
241 ret <vscale x 2 x double> %out
248 define <vscale x 8 x half> @fdivr_h(<vscale x 8 x i1> %pg, <vscale x 8 x half> %a, <vscale x 8 x half> %b) {
249 ; CHECK-LABEL: fdivr_h:
250 ; CHECK: fdivr z0.h, p0/m, z0.h, z1.h
252 %out = call <vscale x 8 x half> @llvm.aarch64.sve.fdivr.nxv8f16(<vscale x 8 x i1> %pg,
253 <vscale x 8 x half> %a,
254 <vscale x 8 x half> %b)
255 ret <vscale x 8 x half> %out
258 define <vscale x 4 x float> @fdivr_s(<vscale x 4 x i1> %pg, <vscale x 4 x float> %a, <vscale x 4 x float> %b) {
259 ; CHECK-LABEL: fdivr_s:
260 ; CHECK: fdivr z0.s, p0/m, z0.s, z1.s
262 %out = call <vscale x 4 x float> @llvm.aarch64.sve.fdivr.nxv4f32(<vscale x 4 x i1> %pg,
263 <vscale x 4 x float> %a,
264 <vscale x 4 x float> %b)
265 ret <vscale x 4 x float> %out
268 define <vscale x 2 x double> @fdivr_d(<vscale x 2 x i1> %pg, <vscale x 2 x double> %a, <vscale x 2 x double> %b) {
269 ; CHECK-LABEL: fdivr_d:
270 ; CHECK: fdivr z0.d, p0/m, z0.d, z1.d
272 %out = call <vscale x 2 x double> @llvm.aarch64.sve.fdivr.nxv2f64(<vscale x 2 x i1> %pg,
273 <vscale x 2 x double> %a,
274 <vscale x 2 x double> %b)
275 ret <vscale x 2 x double> %out
282 define <vscale x 8 x half> @fexpa_h(<vscale x 8 x i16> %a) {
283 ; CHECK-LABEL: fexpa_h:
284 ; CHECK: fexpa z0.h, z0.h
286 %out = call <vscale x 8 x half> @llvm.aarch64.sve.fexpa.x.nxv8f16(<vscale x 8 x i16> %a)
287 ret <vscale x 8 x half> %out
290 define <vscale x 4 x float> @fexpa_s(<vscale x 4 x i32> %a) {
291 ; CHECK-LABEL: fexpa_s:
292 ; CHECK: fexpa z0.s, z0.s
294 %out = call <vscale x 4 x float> @llvm.aarch64.sve.fexpa.x.nxv4f32(<vscale x 4 x i32> %a)
295 ret <vscale x 4 x float> %out
298 define <vscale x 2 x double> @fexpa_d(<vscale x 2 x i1> %pg, <vscale x 2 x i64> %a) {
299 ; CHECK-LABEL: fexpa_d:
300 ; CHECK: fexpa z0.d, z0.d
302 %out = call <vscale x 2 x double> @llvm.aarch64.sve.fexpa.x.nxv2f64(<vscale x 2 x i64> %a)
303 ret <vscale x 2 x double> %out
310 define <vscale x 8 x half> @fmad_h(<vscale x 8 x i1> %pg, <vscale x 8 x half> %a, <vscale x 8 x half> %b, <vscale x 8 x half> %c) {
311 ; CHECK-LABEL: fmad_h:
312 ; CHECK: fmad z0.h, p0/m, z1.h, z2.h
314 %out = call <vscale x 8 x half> @llvm.aarch64.sve.fmad.nxv8f16(<vscale x 8 x i1> %pg,
315 <vscale x 8 x half> %a,
316 <vscale x 8 x half> %b,
317 <vscale x 8 x half> %c)
318 ret <vscale x 8 x half> %out
321 define <vscale x 4 x float> @fmad_s(<vscale x 4 x i1> %pg, <vscale x 4 x float> %a, <vscale x 4 x float> %b, <vscale x 4 x float> %c) {
322 ; CHECK-LABEL: fmad_s:
323 ; CHECK: fmad z0.s, p0/m, z1.s, z2.s
325 %out = call <vscale x 4 x float> @llvm.aarch64.sve.fmad.nxv4f32(<vscale x 4 x i1> %pg,
326 <vscale x 4 x float> %a,
327 <vscale x 4 x float> %b,
328 <vscale x 4 x float> %c)
329 ret <vscale x 4 x float> %out
332 define <vscale x 2 x double> @fmad_d(<vscale x 2 x i1> %pg, <vscale x 2 x double> %a, <vscale x 2 x double> %b, <vscale x 2 x double> %c) {
333 ; CHECK-LABEL: fmad_d:
334 ; CHECK: fmad z0.d, p0/m, z1.d, z2.d
336 %out = call <vscale x 2 x double> @llvm.aarch64.sve.fmad.nxv2f64(<vscale x 2 x i1> %pg,
337 <vscale x 2 x double> %a,
338 <vscale x 2 x double> %b,
339 <vscale x 2 x double> %c)
340 ret <vscale x 2 x double> %out
347 define <vscale x 8 x half> @fmax_h(<vscale x 8 x i1> %pg, <vscale x 8 x half> %a, <vscale x 8 x half> %b) {
348 ; CHECK-LABEL: fmax_h:
349 ; CHECK: fmax z0.h, p0/m, z0.h, z1.h
351 %out = call <vscale x 8 x half> @llvm.aarch64.sve.fmax.nxv8f16(<vscale x 8 x i1> %pg,
352 <vscale x 8 x half> %a,
353 <vscale x 8 x half> %b)
354 ret <vscale x 8 x half> %out
357 define <vscale x 4 x float> @fmax_s(<vscale x 4 x i1> %pg, <vscale x 4 x float> %a, <vscale x 4 x float> %b) {
358 ; CHECK-LABEL: fmax_s:
359 ; CHECK: fmax z0.s, p0/m, z0.s, z1.s
361 %out = call <vscale x 4 x float> @llvm.aarch64.sve.fmax.nxv4f32(<vscale x 4 x i1> %pg,
362 <vscale x 4 x float> %a,
363 <vscale x 4 x float> %b)
364 ret <vscale x 4 x float> %out
367 define <vscale x 2 x double> @fmax_d(<vscale x 2 x i1> %pg, <vscale x 2 x double> %a, <vscale x 2 x double> %b) {
368 ; CHECK-LABEL: fmax_d:
369 ; CHECK: fmax z0.d, p0/m, z0.d, z1.d
371 %out = call <vscale x 2 x double> @llvm.aarch64.sve.fmax.nxv2f64(<vscale x 2 x i1> %pg,
372 <vscale x 2 x double> %a,
373 <vscale x 2 x double> %b)
374 ret <vscale x 2 x double> %out
381 define <vscale x 8 x half> @fmaxnm_h(<vscale x 8 x i1> %pg, <vscale x 8 x half> %a, <vscale x 8 x half> %b) {
382 ; CHECK-LABEL: fmaxnm_h:
383 ; CHECK: fmaxnm z0.h, p0/m, z0.h, z1.h
385 %out = call <vscale x 8 x half> @llvm.aarch64.sve.fmaxnm.nxv8f16(<vscale x 8 x i1> %pg,
386 <vscale x 8 x half> %a,
387 <vscale x 8 x half> %b)
388 ret <vscale x 8 x half> %out
391 define <vscale x 4 x float> @fmaxnm_s(<vscale x 4 x i1> %pg, <vscale x 4 x float> %a, <vscale x 4 x float> %b) {
392 ; CHECK-LABEL: fmaxnm_s:
393 ; CHECK: fmaxnm z0.s, p0/m, z0.s, z1.s
395 %out = call <vscale x 4 x float> @llvm.aarch64.sve.fmaxnm.nxv4f32(<vscale x 4 x i1> %pg,
396 <vscale x 4 x float> %a,
397 <vscale x 4 x float> %b)
398 ret <vscale x 4 x float> %out
401 define <vscale x 2 x double> @fmaxnm_d(<vscale x 2 x i1> %pg, <vscale x 2 x double> %a, <vscale x 2 x double> %b) {
402 ; CHECK-LABEL: fmaxnm_d:
403 ; CHECK: fmaxnm z0.d, p0/m, z0.d, z1.d
405 %out = call <vscale x 2 x double> @llvm.aarch64.sve.fmaxnm.nxv2f64(<vscale x 2 x i1> %pg,
406 <vscale x 2 x double> %a,
407 <vscale x 2 x double> %b)
408 ret <vscale x 2 x double> %out
415 define <vscale x 8 x half> @fmin_h(<vscale x 8 x i1> %pg, <vscale x 8 x half> %a, <vscale x 8 x half> %b) {
416 ; CHECK-LABEL: fmin_h:
417 ; CHECK: fmin z0.h, p0/m, z0.h, z1.h
419 %out = call <vscale x 8 x half> @llvm.aarch64.sve.fmin.nxv8f16(<vscale x 8 x i1> %pg,
420 <vscale x 8 x half> %a,
421 <vscale x 8 x half> %b)
422 ret <vscale x 8 x half> %out
425 define <vscale x 4 x float> @fmin_s(<vscale x 4 x i1> %pg, <vscale x 4 x float> %a, <vscale x 4 x float> %b) {
426 ; CHECK-LABEL: fmin_s:
427 ; CHECK: fmin z0.s, p0/m, z0.s, z1.s
429 %out = call <vscale x 4 x float> @llvm.aarch64.sve.fmin.nxv4f32(<vscale x 4 x i1> %pg,
430 <vscale x 4 x float> %a,
431 <vscale x 4 x float> %b)
432 ret <vscale x 4 x float> %out
435 define <vscale x 2 x double> @fmin_d(<vscale x 2 x i1> %pg, <vscale x 2 x double> %a, <vscale x 2 x double> %b) {
436 ; CHECK-LABEL: fmin_d:
437 ; CHECK: fmin z0.d, p0/m, z0.d, z1.d
439 %out = call <vscale x 2 x double> @llvm.aarch64.sve.fmin.nxv2f64(<vscale x 2 x i1> %pg,
440 <vscale x 2 x double> %a,
441 <vscale x 2 x double> %b)
442 ret <vscale x 2 x double> %out
449 define <vscale x 8 x half> @fminnm_h(<vscale x 8 x i1> %pg, <vscale x 8 x half> %a, <vscale x 8 x half> %b) {
450 ; CHECK-LABEL: fminnm_h:
451 ; CHECK: fminnm z0.h, p0/m, z0.h, z1.h
453 %out = call <vscale x 8 x half> @llvm.aarch64.sve.fminnm.nxv8f16(<vscale x 8 x i1> %pg,
454 <vscale x 8 x half> %a,
455 <vscale x 8 x half> %b)
456 ret <vscale x 8 x half> %out
459 define <vscale x 4 x float> @fminnm_s(<vscale x 4 x i1> %pg, <vscale x 4 x float> %a, <vscale x 4 x float> %b) {
460 ; CHECK-LABEL: fminnm_s:
461 ; CHECK: fminnm z0.s, p0/m, z0.s, z1.s
463 %out = call <vscale x 4 x float> @llvm.aarch64.sve.fminnm.nxv4f32(<vscale x 4 x i1> %pg,
464 <vscale x 4 x float> %a,
465 <vscale x 4 x float> %b)
466 ret <vscale x 4 x float> %out
469 define <vscale x 2 x double> @fminnm_d(<vscale x 2 x i1> %pg, <vscale x 2 x double> %a, <vscale x 2 x double> %b) {
470 ; CHECK-LABEL: fminnm_d:
471 ; CHECK: fminnm z0.d, p0/m, z0.d, z1.d
473 %out = call <vscale x 2 x double> @llvm.aarch64.sve.fminnm.nxv2f64(<vscale x 2 x i1> %pg,
474 <vscale x 2 x double> %a,
475 <vscale x 2 x double> %b)
476 ret <vscale x 2 x double> %out
483 define <vscale x 8 x half> @fmla_h(<vscale x 8 x i1> %pg, <vscale x 8 x half> %a, <vscale x 8 x half> %b, <vscale x 8 x half> %c) {
484 ; CHECK-LABEL: fmla_h:
485 ; CHECK: fmla z0.h, p0/m, z1.h, z2.h
487 %out = call <vscale x 8 x half> @llvm.aarch64.sve.fmla.nxv8f16(<vscale x 8 x i1> %pg,
488 <vscale x 8 x half> %a,
489 <vscale x 8 x half> %b,
490 <vscale x 8 x half> %c)
491 ret <vscale x 8 x half> %out
494 define <vscale x 4 x float> @fmla_s(<vscale x 4 x i1> %pg, <vscale x 4 x float> %a, <vscale x 4 x float> %b, <vscale x 4 x float> %c) {
495 ; CHECK-LABEL: fmla_s:
496 ; CHECK: fmla z0.s, p0/m, z1.s, z2.s
498 %out = call <vscale x 4 x float> @llvm.aarch64.sve.fmla.nxv4f32(<vscale x 4 x i1> %pg,
499 <vscale x 4 x float> %a,
500 <vscale x 4 x float> %b,
501 <vscale x 4 x float> %c)
502 ret <vscale x 4 x float> %out
505 define <vscale x 2 x double> @fmla_d(<vscale x 2 x i1> %pg, <vscale x 2 x double> %a, <vscale x 2 x double> %b, <vscale x 2 x double> %c) {
506 ; CHECK-LABEL: fmla_d:
507 ; CHECK: fmla z0.d, p0/m, z1.d, z2.d
509 %out = call <vscale x 2 x double> @llvm.aarch64.sve.fmla.nxv2f64(<vscale x 2 x i1> %pg,
510 <vscale x 2 x double> %a,
511 <vscale x 2 x double> %b,
512 <vscale x 2 x double> %c)
513 ret <vscale x 2 x double> %out
520 define <vscale x 8 x half> @fmla_lane_h(<vscale x 8 x half> %a, <vscale x 8 x half> %b, <vscale x 8 x half> %c) {
521 ; CHECK-LABEL: fmla_lane_h:
522 ; CHECK: fmla z0.h, z1.h, z2.h[3]
524 %out = call <vscale x 8 x half> @llvm.aarch64.sve.fmla.lane.nxv8f16(<vscale x 8 x half> %a,
525 <vscale x 8 x half> %b,
526 <vscale x 8 x half> %c,
528 ret <vscale x 8 x half> %out
531 define <vscale x 4 x float> @fmla_lane_s(<vscale x 4 x float> %a, <vscale x 4 x float> %b, <vscale x 4 x float> %c) {
532 ; CHECK-LABEL: fmla_lane_s:
533 ; CHECK: fmla z0.s, z1.s, z2.s[2]
535 %out = call <vscale x 4 x float> @llvm.aarch64.sve.fmla.lane.nxv4f32(<vscale x 4 x float> %a,
536 <vscale x 4 x float> %b,
537 <vscale x 4 x float> %c,
539 ret <vscale x 4 x float> %out
542 define <vscale x 2 x double> @fmla_lane_d(<vscale x 2 x double> %a, <vscale x 2 x double> %b, <vscale x 2 x double> %c) {
543 ; CHECK-LABEL: fmla_lane_d:
544 ; CHECK: fmla z0.d, z1.d, z2.d[1]
546 %out = call <vscale x 2 x double> @llvm.aarch64.sve.fmla.lane.nxv2f64(<vscale x 2 x double> %a,
547 <vscale x 2 x double> %b,
548 <vscale x 2 x double> %c,
550 ret <vscale x 2 x double> %out
557 define <vscale x 8 x half> @fmls_h(<vscale x 8 x i1> %pg, <vscale x 8 x half> %a, <vscale x 8 x half> %b, <vscale x 8 x half> %c) {
558 ; CHECK-LABEL: fmls_h:
559 ; CHECK: fmls z0.h, p0/m, z1.h, z2.h
561 %out = call <vscale x 8 x half> @llvm.aarch64.sve.fmls.nxv8f16(<vscale x 8 x i1> %pg,
562 <vscale x 8 x half> %a,
563 <vscale x 8 x half> %b,
564 <vscale x 8 x half> %c)
565 ret <vscale x 8 x half> %out
568 define <vscale x 4 x float> @fmls_s(<vscale x 4 x i1> %pg, <vscale x 4 x float> %a, <vscale x 4 x float> %b, <vscale x 4 x float> %c) {
569 ; CHECK-LABEL: fmls_s:
570 ; CHECK: fmls z0.s, p0/m, z1.s, z2.s
572 %out = call <vscale x 4 x float> @llvm.aarch64.sve.fmls.nxv4f32(<vscale x 4 x i1> %pg,
573 <vscale x 4 x float> %a,
574 <vscale x 4 x float> %b,
575 <vscale x 4 x float> %c)
576 ret <vscale x 4 x float> %out
579 define <vscale x 2 x double> @fmls_d(<vscale x 2 x i1> %pg, <vscale x 2 x double> %a, <vscale x 2 x double> %b, <vscale x 2 x double> %c) {
580 ; CHECK-LABEL: fmls_d:
581 ; CHECK: fmls z0.d, p0/m, z1.d, z2.d
583 %out = call <vscale x 2 x double> @llvm.aarch64.sve.fmls.nxv2f64(<vscale x 2 x i1> %pg,
584 <vscale x 2 x double> %a,
585 <vscale x 2 x double> %b,
586 <vscale x 2 x double> %c)
587 ret <vscale x 2 x double> %out
594 define <vscale x 8 x half> @fmls_lane_h(<vscale x 8 x half> %a, <vscale x 8 x half> %b, <vscale x 8 x half> %c) {
595 ; CHECK-LABEL: fmls_lane_h:
596 ; CHECK: fmls z0.h, z1.h, z2.h[3]
598 %out = call <vscale x 8 x half> @llvm.aarch64.sve.fmls.lane.nxv8f16(<vscale x 8 x half> %a,
599 <vscale x 8 x half> %b,
600 <vscale x 8 x half> %c,
602 ret <vscale x 8 x half> %out
605 define <vscale x 4 x float> @fmls_lane_s(<vscale x 4 x float> %a, <vscale x 4 x float> %b, <vscale x 4 x float> %c) {
606 ; CHECK-LABEL: fmls_lane_s:
607 ; CHECK: fmls z0.s, z1.s, z2.s[2]
609 %out = call <vscale x 4 x float> @llvm.aarch64.sve.fmls.lane.nxv4f32(<vscale x 4 x float> %a,
610 <vscale x 4 x float> %b,
611 <vscale x 4 x float> %c,
613 ret <vscale x 4 x float> %out
616 define <vscale x 2 x double> @fmls_lane_d(<vscale x 2 x double> %a, <vscale x 2 x double> %b, <vscale x 2 x double> %c) {
617 ; CHECK-LABEL: fmls_lane_d:
618 ; CHECK: fmls z0.d, z1.d, z2.d[1]
620 %out = call <vscale x 2 x double> @llvm.aarch64.sve.fmls.lane.nxv2f64(<vscale x 2 x double> %a,
621 <vscale x 2 x double> %b,
622 <vscale x 2 x double> %c,
624 ret <vscale x 2 x double> %out
631 define <vscale x 8 x half> @fmsb_h(<vscale x 8 x i1> %pg, <vscale x 8 x half> %a, <vscale x 8 x half> %b, <vscale x 8 x half> %c) {
632 ; CHECK-LABEL: fmsb_h:
633 ; CHECK: fmsb z0.h, p0/m, z1.h, z2.h
635 %out = call <vscale x 8 x half> @llvm.aarch64.sve.fmsb.nxv8f16(<vscale x 8 x i1> %pg,
636 <vscale x 8 x half> %a,
637 <vscale x 8 x half> %b,
638 <vscale x 8 x half> %c)
639 ret <vscale x 8 x half> %out
642 define <vscale x 4 x float> @fmsb_s(<vscale x 4 x i1> %pg, <vscale x 4 x float> %a, <vscale x 4 x float> %b, <vscale x 4 x float> %c) {
643 ; CHECK-LABEL: fmsb_s:
644 ; CHECK: fmsb z0.s, p0/m, z1.s, z2.s
646 %out = call <vscale x 4 x float> @llvm.aarch64.sve.fmsb.nxv4f32(<vscale x 4 x i1> %pg,
647 <vscale x 4 x float> %a,
648 <vscale x 4 x float> %b,
649 <vscale x 4 x float> %c)
650 ret <vscale x 4 x float> %out
653 define <vscale x 2 x double> @fmsb_d(<vscale x 2 x i1> %pg, <vscale x 2 x double> %a, <vscale x 2 x double> %b, <vscale x 2 x double> %c) {
654 ; CHECK-LABEL: fmsb_d:
655 ; CHECK: fmsb z0.d, p0/m, z1.d, z2.d
657 %out = call <vscale x 2 x double> @llvm.aarch64.sve.fmsb.nxv2f64(<vscale x 2 x i1> %pg,
658 <vscale x 2 x double> %a,
659 <vscale x 2 x double> %b,
660 <vscale x 2 x double> %c)
661 ret <vscale x 2 x double> %out
668 define <vscale x 8 x half> @fmul_h(<vscale x 8 x i1> %pg, <vscale x 8 x half> %a, <vscale x 8 x half> %b) {
669 ; CHECK-LABEL: fmul_h:
670 ; CHECK: fmul z0.h, p0/m, z0.h, z1.h
672 %out = call <vscale x 8 x half> @llvm.aarch64.sve.fmul.nxv8f16(<vscale x 8 x i1> %pg,
673 <vscale x 8 x half> %a,
674 <vscale x 8 x half> %b)
675 ret <vscale x 8 x half> %out
678 define <vscale x 4 x float> @fmul_s(<vscale x 4 x i1> %pg, <vscale x 4 x float> %a, <vscale x 4 x float> %b) {
679 ; CHECK-LABEL: fmul_s:
680 ; CHECK: fmul z0.s, p0/m, z0.s, z1.s
682 %out = call <vscale x 4 x float> @llvm.aarch64.sve.fmul.nxv4f32(<vscale x 4 x i1> %pg,
683 <vscale x 4 x float> %a,
684 <vscale x 4 x float> %b)
685 ret <vscale x 4 x float> %out
688 define <vscale x 2 x double> @fmul_d(<vscale x 2 x i1> %pg, <vscale x 2 x double> %a, <vscale x 2 x double> %b) {
689 ; CHECK-LABEL: fmul_d:
690 ; CHECK: fmul z0.d, p0/m, z0.d, z1.d
692 %out = call <vscale x 2 x double> @llvm.aarch64.sve.fmul.nxv2f64(<vscale x 2 x i1> %pg,
693 <vscale x 2 x double> %a,
694 <vscale x 2 x double> %b)
695 ret <vscale x 2 x double> %out
702 define <vscale x 8 x half> @fmul_lane_h(<vscale x 8 x half> %a, <vscale x 8 x half> %b) {
703 ; CHECK-LABEL: fmul_lane_h:
704 ; CHECK: fmul z0.h, z0.h, z1.h[3]
706 %out = call <vscale x 8 x half> @llvm.aarch64.sve.fmul.lane.nxv8f16(<vscale x 8 x half> %a,
707 <vscale x 8 x half> %b,
709 ret <vscale x 8 x half> %out
712 define <vscale x 4 x float> @fmul_lane_s(<vscale x 4 x float> %a, <vscale x 4 x float> %b) {
713 ; CHECK-LABEL: fmul_lane_s:
714 ; CHECK: fmul z0.s, z0.s, z1.s[2]
716 %out = call <vscale x 4 x float> @llvm.aarch64.sve.fmul.lane.nxv4f32(<vscale x 4 x float> %a,
717 <vscale x 4 x float> %b,
719 ret <vscale x 4 x float> %out
722 define <vscale x 2 x double> @fmul_lane_d(<vscale x 2 x double> %a, <vscale x 2 x double> %b) {
723 ; CHECK-LABEL: fmul_lane_d:
724 ; CHECK: fmul z0.d, z0.d, z1.d[1]
726 %out = call <vscale x 2 x double> @llvm.aarch64.sve.fmul.lane.nxv2f64(<vscale x 2 x double> %a,
727 <vscale x 2 x double> %b,
729 ret <vscale x 2 x double> %out
736 define <vscale x 8 x half> @fmulx_h(<vscale x 8 x i1> %pg, <vscale x 8 x half> %a, <vscale x 8 x half> %b) {
737 ; CHECK-LABEL: fmulx_h:
738 ; CHECK: fmulx z0.h, p0/m, z0.h, z1.h
740 %out = call <vscale x 8 x half> @llvm.aarch64.sve.fmulx.nxv8f16(<vscale x 8 x i1> %pg,
741 <vscale x 8 x half> %a,
742 <vscale x 8 x half> %b)
743 ret <vscale x 8 x half> %out
746 define <vscale x 4 x float> @fmulx_s(<vscale x 4 x i1> %pg, <vscale x 4 x float> %a, <vscale x 4 x float> %b) {
747 ; CHECK-LABEL: fmulx_s:
748 ; CHECK: fmulx z0.s, p0/m, z0.s, z1.s
750 %out = call <vscale x 4 x float> @llvm.aarch64.sve.fmulx.nxv4f32(<vscale x 4 x i1> %pg,
751 <vscale x 4 x float> %a,
752 <vscale x 4 x float> %b)
753 ret <vscale x 4 x float> %out
756 define <vscale x 2 x double> @fmulx_d(<vscale x 2 x i1> %pg, <vscale x 2 x double> %a, <vscale x 2 x double> %b) {
757 ; CHECK-LABEL: fmulx_d:
758 ; CHECK: fmulx z0.d, p0/m, z0.d, z1.d
760 %out = call <vscale x 2 x double> @llvm.aarch64.sve.fmulx.nxv2f64(<vscale x 2 x i1> %pg,
761 <vscale x 2 x double> %a,
762 <vscale x 2 x double> %b)
763 ret <vscale x 2 x double> %out
770 define <vscale x 8 x half> @fneg_h(<vscale x 8 x half> %a, <vscale x 8 x i1> %pg, <vscale x 8 x half> %b) {
771 ; CHECK-LABEL: fneg_h:
772 ; CHECK: fneg z0.h, p0/m, z1.h
774 %out = call <vscale x 8 x half> @llvm.aarch64.sve.fneg.nxv8f16(<vscale x 8 x half> %a,
775 <vscale x 8 x i1> %pg,
776 <vscale x 8 x half> %b)
777 ret <vscale x 8 x half> %out
780 define <vscale x 4 x float> @fneg_s(<vscale x 4 x float> %a, <vscale x 4 x i1> %pg, <vscale x 4 x float> %b) {
781 ; CHECK-LABEL: fneg_s:
782 ; CHECK: fneg z0.s, p0/m, z1.s
784 %out = call <vscale x 4 x float> @llvm.aarch64.sve.fneg.nxv4f32(<vscale x 4 x float> %a,
785 <vscale x 4 x i1> %pg,
786 <vscale x 4 x float> %b)
787 ret <vscale x 4 x float> %out
790 define <vscale x 2 x double> @fneg_d(<vscale x 2 x double> %a, <vscale x 2 x i1> %pg, <vscale x 2 x double> %b) {
791 ; CHECK-LABEL: fneg_d:
792 ; CHECK: fneg z0.d, p0/m, z1.d
794 %out = call <vscale x 2 x double> @llvm.aarch64.sve.fneg.nxv2f64(<vscale x 2 x double> %a,
795 <vscale x 2 x i1> %pg,
796 <vscale x 2 x double> %b)
797 ret <vscale x 2 x double> %out
804 define <vscale x 8 x half> @fnmad_h(<vscale x 8 x i1> %pg, <vscale x 8 x half> %a, <vscale x 8 x half> %b, <vscale x 8 x half> %c) {
805 ; CHECK-LABEL: fnmad_h:
806 ; CHECK: fnmad z0.h, p0/m, z1.h, z2.h
808 %out = call <vscale x 8 x half> @llvm.aarch64.sve.fnmad.nxv8f16(<vscale x 8 x i1> %pg,
809 <vscale x 8 x half> %a,
810 <vscale x 8 x half> %b,
811 <vscale x 8 x half> %c)
812 ret <vscale x 8 x half> %out
815 define <vscale x 4 x float> @fnmad_s(<vscale x 4 x i1> %pg, <vscale x 4 x float> %a, <vscale x 4 x float> %b, <vscale x 4 x float> %c) {
816 ; CHECK-LABEL: fnmad_s:
817 ; CHECK: fnmad z0.s, p0/m, z1.s, z2.s
819 %out = call <vscale x 4 x float> @llvm.aarch64.sve.fnmad.nxv4f32(<vscale x 4 x i1> %pg,
820 <vscale x 4 x float> %a,
821 <vscale x 4 x float> %b,
822 <vscale x 4 x float> %c)
823 ret <vscale x 4 x float> %out
826 define <vscale x 2 x double> @fnmad_d(<vscale x 2 x i1> %pg, <vscale x 2 x double> %a, <vscale x 2 x double> %b, <vscale x 2 x double> %c) {
827 ; CHECK-LABEL: fnmad_d:
828 ; CHECK: fnmad z0.d, p0/m, z1.d, z2.d
830 %out = call <vscale x 2 x double> @llvm.aarch64.sve.fnmad.nxv2f64(<vscale x 2 x i1> %pg,
831 <vscale x 2 x double> %a,
832 <vscale x 2 x double> %b,
833 <vscale x 2 x double> %c)
834 ret <vscale x 2 x double> %out
841 define <vscale x 8 x half> @fnmla_h(<vscale x 8 x i1> %pg, <vscale x 8 x half> %a, <vscale x 8 x half> %b, <vscale x 8 x half> %c) {
842 ; CHECK-LABEL: fnmla_h:
843 ; CHECK: fnmla z0.h, p0/m, z1.h, z2.h
845 %out = call <vscale x 8 x half> @llvm.aarch64.sve.fnmla.nxv8f16(<vscale x 8 x i1> %pg,
846 <vscale x 8 x half> %a,
847 <vscale x 8 x half> %b,
848 <vscale x 8 x half> %c)
849 ret <vscale x 8 x half> %out
852 define <vscale x 4 x float> @fnmla_s(<vscale x 4 x i1> %pg, <vscale x 4 x float> %a, <vscale x 4 x float> %b, <vscale x 4 x float> %c) {
853 ; CHECK-LABEL: fnmla_s:
854 ; CHECK: fnmla z0.s, p0/m, z1.s, z2.s
856 %out = call <vscale x 4 x float> @llvm.aarch64.sve.fnmla.nxv4f32(<vscale x 4 x i1> %pg,
857 <vscale x 4 x float> %a,
858 <vscale x 4 x float> %b,
859 <vscale x 4 x float> %c)
860 ret <vscale x 4 x float> %out
863 define <vscale x 2 x double> @fnmla_d(<vscale x 2 x i1> %pg, <vscale x 2 x double> %a, <vscale x 2 x double> %b, <vscale x 2 x double> %c) {
864 ; CHECK-LABEL: fnmla_d:
865 ; CHECK: fnmla z0.d, p0/m, z1.d, z2.d
867 %out = call <vscale x 2 x double> @llvm.aarch64.sve.fnmla.nxv2f64(<vscale x 2 x i1> %pg,
868 <vscale x 2 x double> %a,
869 <vscale x 2 x double> %b,
870 <vscale x 2 x double> %c)
871 ret <vscale x 2 x double> %out
878 define <vscale x 8 x half> @fnmls_h(<vscale x 8 x i1> %pg, <vscale x 8 x half> %a, <vscale x 8 x half> %b, <vscale x 8 x half> %c) {
879 ; CHECK-LABEL: fnmls_h:
880 ; CHECK: fnmls z0.h, p0/m, z1.h, z2.h
882 %out = call <vscale x 8 x half> @llvm.aarch64.sve.fnmls.nxv8f16(<vscale x 8 x i1> %pg,
883 <vscale x 8 x half> %a,
884 <vscale x 8 x half> %b,
885 <vscale x 8 x half> %c)
886 ret <vscale x 8 x half> %out
889 define <vscale x 4 x float> @fnmls_s(<vscale x 4 x i1> %pg, <vscale x 4 x float> %a, <vscale x 4 x float> %b, <vscale x 4 x float> %c) {
890 ; CHECK-LABEL: fnmls_s:
891 ; CHECK: fnmls z0.s, p0/m, z1.s, z2.s
893 %out = call <vscale x 4 x float> @llvm.aarch64.sve.fnmls.nxv4f32(<vscale x 4 x i1> %pg,
894 <vscale x 4 x float> %a,
895 <vscale x 4 x float> %b,
896 <vscale x 4 x float> %c)
897 ret <vscale x 4 x float> %out
900 define <vscale x 2 x double> @fnmls_d(<vscale x 2 x i1> %pg, <vscale x 2 x double> %a, <vscale x 2 x double> %b, <vscale x 2 x double> %c) {
901 ; CHECK-LABEL: fnmls_d:
902 ; CHECK: fnmls z0.d, p0/m, z1.d, z2.d
904 %out = call <vscale x 2 x double> @llvm.aarch64.sve.fnmls.nxv2f64(<vscale x 2 x i1> %pg,
905 <vscale x 2 x double> %a,
906 <vscale x 2 x double> %b,
907 <vscale x 2 x double> %c)
908 ret <vscale x 2 x double> %out
915 define <vscale x 8 x half> @fnmsb_h(<vscale x 8 x i1> %pg, <vscale x 8 x half> %a, <vscale x 8 x half> %b, <vscale x 8 x half> %c) {
916 ; CHECK-LABEL: fnmsb_h:
917 ; CHECK: fnmsb z0.h, p0/m, z1.h, z2.h
919 %out = call <vscale x 8 x half> @llvm.aarch64.sve.fnmsb.nxv8f16(<vscale x 8 x i1> %pg,
920 <vscale x 8 x half> %a,
921 <vscale x 8 x half> %b,
922 <vscale x 8 x half> %c)
923 ret <vscale x 8 x half> %out
926 define <vscale x 4 x float> @fnmsb_s(<vscale x 4 x i1> %pg, <vscale x 4 x float> %a, <vscale x 4 x float> %b, <vscale x 4 x float> %c) {
927 ; CHECK-LABEL: fnmsb_s:
928 ; CHECK: fnmsb z0.s, p0/m, z1.s, z2.s
930 %out = call <vscale x 4 x float> @llvm.aarch64.sve.fnmsb.nxv4f32(<vscale x 4 x i1> %pg,
931 <vscale x 4 x float> %a,
932 <vscale x 4 x float> %b,
933 <vscale x 4 x float> %c)
934 ret <vscale x 4 x float> %out
937 define <vscale x 2 x double> @fnmsb_d(<vscale x 2 x i1> %pg, <vscale x 2 x double> %a, <vscale x 2 x double> %b, <vscale x 2 x double> %c) {
938 ; CHECK-LABEL: fnmsb_d:
939 ; CHECK: fnmsb z0.d, p0/m, z1.d, z2.d
941 %out = call <vscale x 2 x double> @llvm.aarch64.sve.fnmsb.nxv2f64(<vscale x 2 x i1> %pg,
942 <vscale x 2 x double> %a,
943 <vscale x 2 x double> %b,
944 <vscale x 2 x double> %c)
945 ret <vscale x 2 x double> %out
952 define <vscale x 8 x half> @frecpe_h(<vscale x 8 x half> %a) {
953 ; CHECK-LABEL: frecpe_h:
954 ; CHECK: frecpe z0.h, z0.h
956 %out = call <vscale x 8 x half> @llvm.aarch64.sve.frecpe.x.nxv8f16(<vscale x 8 x half> %a)
957 ret <vscale x 8 x half> %out
960 define <vscale x 4 x float> @frecpe_s(<vscale x 4 x float> %a) {
961 ; CHECK-LABEL: frecpe_s:
962 ; CHECK: frecpe z0.s, z0.s
964 %out = call <vscale x 4 x float> @llvm.aarch64.sve.frecpe.x.nxv4f32(<vscale x 4 x float> %a)
965 ret <vscale x 4 x float> %out
968 define <vscale x 2 x double> @frecpe_d(<vscale x 2 x i1> %pg, <vscale x 2 x double> %a) {
969 ; CHECK-LABEL: frecpe_d:
970 ; CHECK: frecpe z0.d, z0.d
972 %out = call <vscale x 2 x double> @llvm.aarch64.sve.frecpe.x.nxv2f64(<vscale x 2 x double> %a)
973 ret <vscale x 2 x double> %out
980 define <vscale x 8 x half> @frecpx_h(<vscale x 8 x half> %a, <vscale x 8 x i1> %pg, <vscale x 8 x half> %b) {
981 ; CHECK-LABEL: frecpx_h:
982 ; CHECK: frecpx z0.h, p0/m, z1.h
984 %out = call <vscale x 8 x half> @llvm.aarch64.sve.frecpx.nxv8f16(<vscale x 8 x half> %a,
985 <vscale x 8 x i1> %pg,
986 <vscale x 8 x half> %b)
987 ret <vscale x 8 x half> %out
990 define <vscale x 4 x float> @frecpx_s(<vscale x 4 x float> %a, <vscale x 4 x i1> %pg, <vscale x 4 x float> %b) {
991 ; CHECK-LABEL: frecpx_s:
992 ; CHECK: frecpx z0.s, p0/m, z1.s
994 %out = call <vscale x 4 x float> @llvm.aarch64.sve.frecpx.nxv4f32(<vscale x 4 x float> %a,
995 <vscale x 4 x i1> %pg,
996 <vscale x 4 x float> %b)
997 ret <vscale x 4 x float> %out
1000 define <vscale x 2 x double> @frecpx_d(<vscale x 2 x double> %a, <vscale x 2 x i1> %pg, <vscale x 2 x double> %b) {
1001 ; CHECK-LABEL: frecpx_d:
1002 ; CHECK: frecpx z0.d, p0/m, z1.d
1004 %out = call <vscale x 2 x double> @llvm.aarch64.sve.frecpx.nxv2f64(<vscale x 2 x double> %a,
1005 <vscale x 2 x i1> %pg,
1006 <vscale x 2 x double> %b)
1007 ret <vscale x 2 x double> %out
1014 define <vscale x 8 x half> @frinta_h(<vscale x 8 x half> %a, <vscale x 8 x i1> %pg, <vscale x 8 x half> %b) {
1015 ; CHECK-LABEL: frinta_h:
1016 ; CHECK: frinta z0.h, p0/m, z1.h
1018 %out = call <vscale x 8 x half> @llvm.aarch64.sve.frinta.nxv8f16(<vscale x 8 x half> %a,
1019 <vscale x 8 x i1> %pg,
1020 <vscale x 8 x half> %b)
1021 ret <vscale x 8 x half> %out
1024 define <vscale x 4 x float> @frinta_s(<vscale x 4 x float> %a, <vscale x 4 x i1> %pg, <vscale x 4 x float> %b) {
1025 ; CHECK-LABEL: frinta_s:
1026 ; CHECK: frinta z0.s, p0/m, z1.s
1028 %out = call <vscale x 4 x float> @llvm.aarch64.sve.frinta.nxv4f32(<vscale x 4 x float> %a,
1029 <vscale x 4 x i1> %pg,
1030 <vscale x 4 x float> %b)
1031 ret <vscale x 4 x float> %out
1034 define <vscale x 2 x double> @frinta_d(<vscale x 2 x double> %a, <vscale x 2 x i1> %pg, <vscale x 2 x double> %b) {
1035 ; CHECK-LABEL: frinta_d:
1036 ; CHECK: frinta z0.d, p0/m, z1.d
1038 %out = call <vscale x 2 x double> @llvm.aarch64.sve.frinta.nxv2f64(<vscale x 2 x double> %a,
1039 <vscale x 2 x i1> %pg,
1040 <vscale x 2 x double> %b)
1041 ret <vscale x 2 x double> %out
1048 define <vscale x 8 x half> @frinti_h(<vscale x 8 x half> %a, <vscale x 8 x i1> %pg, <vscale x 8 x half> %b) {
1049 ; CHECK-LABEL: frinti_h:
1050 ; CHECK: frinti z0.h, p0/m, z1.h
1052 %out = call <vscale x 8 x half> @llvm.aarch64.sve.frinti.nxv8f16(<vscale x 8 x half> %a,
1053 <vscale x 8 x i1> %pg,
1054 <vscale x 8 x half> %b)
1055 ret <vscale x 8 x half> %out
1058 define <vscale x 4 x float> @frinti_s(<vscale x 4 x float> %a, <vscale x 4 x i1> %pg, <vscale x 4 x float> %b) {
1059 ; CHECK-LABEL: frinti_s:
1060 ; CHECK: frinti z0.s, p0/m, z1.s
1062 %out = call <vscale x 4 x float> @llvm.aarch64.sve.frinti.nxv4f32(<vscale x 4 x float> %a,
1063 <vscale x 4 x i1> %pg,
1064 <vscale x 4 x float> %b)
1065 ret <vscale x 4 x float> %out
1068 define <vscale x 2 x double> @frinti_d(<vscale x 2 x double> %a, <vscale x 2 x i1> %pg, <vscale x 2 x double> %b) {
1069 ; CHECK-LABEL: frinti_d:
1070 ; CHECK: frinti z0.d, p0/m, z1.d
1072 %out = call <vscale x 2 x double> @llvm.aarch64.sve.frinti.nxv2f64(<vscale x 2 x double> %a,
1073 <vscale x 2 x i1> %pg,
1074 <vscale x 2 x double> %b)
1075 ret <vscale x 2 x double> %out
1082 define <vscale x 8 x half> @frintm_h(<vscale x 8 x half> %a, <vscale x 8 x i1> %pg, <vscale x 8 x half> %b) {
1083 ; CHECK-LABEL: frintm_h:
1084 ; CHECK: frintm z0.h, p0/m, z1.h
1086 %out = call <vscale x 8 x half> @llvm.aarch64.sve.frintm.nxv8f16(<vscale x 8 x half> %a,
1087 <vscale x 8 x i1> %pg,
1088 <vscale x 8 x half> %b)
1089 ret <vscale x 8 x half> %out
1092 define <vscale x 4 x float> @frintm_s(<vscale x 4 x float> %a, <vscale x 4 x i1> %pg, <vscale x 4 x float> %b) {
1093 ; CHECK-LABEL: frintm_s:
1094 ; CHECK: frintm z0.s, p0/m, z1.s
1096 %out = call <vscale x 4 x float> @llvm.aarch64.sve.frintm.nxv4f32(<vscale x 4 x float> %a,
1097 <vscale x 4 x i1> %pg,
1098 <vscale x 4 x float> %b)
1099 ret <vscale x 4 x float> %out
1102 define <vscale x 2 x double> @frintm_d(<vscale x 2 x double> %a, <vscale x 2 x i1> %pg, <vscale x 2 x double> %b) {
1103 ; CHECK-LABEL: frintm_d:
1104 ; CHECK: frintm z0.d, p0/m, z1.d
1106 %out = call <vscale x 2 x double> @llvm.aarch64.sve.frintm.nxv2f64(<vscale x 2 x double> %a,
1107 <vscale x 2 x i1> %pg,
1108 <vscale x 2 x double> %b)
1109 ret <vscale x 2 x double> %out
1116 define <vscale x 8 x half> @frintn_h(<vscale x 8 x half> %a, <vscale x 8 x i1> %pg, <vscale x 8 x half> %b) {
1117 ; CHECK-LABEL: frintn_h:
1118 ; CHECK: frintn z0.h, p0/m, z1.h
1120 %out = call <vscale x 8 x half> @llvm.aarch64.sve.frintn.nxv8f16(<vscale x 8 x half> %a,
1121 <vscale x 8 x i1> %pg,
1122 <vscale x 8 x half> %b)
1123 ret <vscale x 8 x half> %out
1126 define <vscale x 4 x float> @frintn_s(<vscale x 4 x float> %a, <vscale x 4 x i1> %pg, <vscale x 4 x float> %b) {
1127 ; CHECK-LABEL: frintn_s:
1128 ; CHECK: frintn z0.s, p0/m, z1.s
1130 %out = call <vscale x 4 x float> @llvm.aarch64.sve.frintn.nxv4f32(<vscale x 4 x float> %a,
1131 <vscale x 4 x i1> %pg,
1132 <vscale x 4 x float> %b)
1133 ret <vscale x 4 x float> %out
1136 define <vscale x 2 x double> @frintn_d(<vscale x 2 x double> %a, <vscale x 2 x i1> %pg, <vscale x 2 x double> %b) {
1137 ; CHECK-LABEL: frintn_d:
1138 ; CHECK: frintn z0.d, p0/m, z1.d
1140 %out = call <vscale x 2 x double> @llvm.aarch64.sve.frintn.nxv2f64(<vscale x 2 x double> %a,
1141 <vscale x 2 x i1> %pg,
1142 <vscale x 2 x double> %b)
1143 ret <vscale x 2 x double> %out
1150 define <vscale x 8 x half> @frintp_h(<vscale x 8 x half> %a, <vscale x 8 x i1> %pg, <vscale x 8 x half> %b) {
1151 ; CHECK-LABEL: frintp_h:
1152 ; CHECK: frintp z0.h, p0/m, z1.h
1154 %out = call <vscale x 8 x half> @llvm.aarch64.sve.frintp.nxv8f16(<vscale x 8 x half> %a,
1155 <vscale x 8 x i1> %pg,
1156 <vscale x 8 x half> %b)
1157 ret <vscale x 8 x half> %out
1160 define <vscale x 4 x float> @frintp_s(<vscale x 4 x float> %a, <vscale x 4 x i1> %pg, <vscale x 4 x float> %b) {
1161 ; CHECK-LABEL: frintp_s:
1162 ; CHECK: frintp z0.s, p0/m, z1.s
1164 %out = call <vscale x 4 x float> @llvm.aarch64.sve.frintp.nxv4f32(<vscale x 4 x float> %a,
1165 <vscale x 4 x i1> %pg,
1166 <vscale x 4 x float> %b)
1167 ret <vscale x 4 x float> %out
1170 define <vscale x 2 x double> @frintp_d(<vscale x 2 x double> %a, <vscale x 2 x i1> %pg, <vscale x 2 x double> %b) {
1171 ; CHECK-LABEL: frintp_d:
1172 ; CHECK: frintp z0.d, p0/m, z1.d
1174 %out = call <vscale x 2 x double> @llvm.aarch64.sve.frintp.nxv2f64(<vscale x 2 x double> %a,
1175 <vscale x 2 x i1> %pg,
1176 <vscale x 2 x double> %b)
1177 ret <vscale x 2 x double> %out
1184 define <vscale x 8 x half> @frintx_h(<vscale x 8 x half> %a, <vscale x 8 x i1> %pg, <vscale x 8 x half> %b) {
1185 ; CHECK-LABEL: frintx_h:
1186 ; CHECK: frintx z0.h, p0/m, z1.h
1188 %out = call <vscale x 8 x half> @llvm.aarch64.sve.frintx.nxv8f16(<vscale x 8 x half> %a,
1189 <vscale x 8 x i1> %pg,
1190 <vscale x 8 x half> %b)
1191 ret <vscale x 8 x half> %out
1194 define <vscale x 4 x float> @frintx_s(<vscale x 4 x float> %a, <vscale x 4 x i1> %pg, <vscale x 4 x float> %b) {
1195 ; CHECK-LABEL: frintx_s:
1196 ; CHECK: frintx z0.s, p0/m, z1.s
1198 %out = call <vscale x 4 x float> @llvm.aarch64.sve.frintx.nxv4f32(<vscale x 4 x float> %a,
1199 <vscale x 4 x i1> %pg,
1200 <vscale x 4 x float> %b)
1201 ret <vscale x 4 x float> %out
1204 define <vscale x 2 x double> @frintx_d(<vscale x 2 x double> %a, <vscale x 2 x i1> %pg, <vscale x 2 x double> %b) {
1205 ; CHECK-LABEL: frintx_d:
1206 ; CHECK: frintx z0.d, p0/m, z1.d
1208 %out = call <vscale x 2 x double> @llvm.aarch64.sve.frintx.nxv2f64(<vscale x 2 x double> %a,
1209 <vscale x 2 x i1> %pg,
1210 <vscale x 2 x double> %b)
1211 ret <vscale x 2 x double> %out
1218 define <vscale x 8 x half> @frintz_h(<vscale x 8 x half> %a, <vscale x 8 x i1> %pg, <vscale x 8 x half> %b) {
1219 ; CHECK-LABEL: frintz_h:
1220 ; CHECK: frintz z0.h, p0/m, z1.h
1222 %out = call <vscale x 8 x half> @llvm.aarch64.sve.frintz.nxv8f16(<vscale x 8 x half> %a,
1223 <vscale x 8 x i1> %pg,
1224 <vscale x 8 x half> %b)
1225 ret <vscale x 8 x half> %out
1228 define <vscale x 4 x float> @frintz_s(<vscale x 4 x float> %a, <vscale x 4 x i1> %pg, <vscale x 4 x float> %b) {
1229 ; CHECK-LABEL: frintz_s:
1230 ; CHECK: frintz z0.s, p0/m, z1.s
1232 %out = call <vscale x 4 x float> @llvm.aarch64.sve.frintz.nxv4f32(<vscale x 4 x float> %a,
1233 <vscale x 4 x i1> %pg,
1234 <vscale x 4 x float> %b)
1235 ret <vscale x 4 x float> %out
1238 define <vscale x 2 x double> @frintz_d(<vscale x 2 x double> %a, <vscale x 2 x i1> %pg, <vscale x 2 x double> %b) {
1239 ; CHECK-LABEL: frintz_d:
1240 ; CHECK: frintz z0.d, p0/m, z1.d
1242 %out = call <vscale x 2 x double> @llvm.aarch64.sve.frintz.nxv2f64(<vscale x 2 x double> %a,
1243 <vscale x 2 x i1> %pg,
1244 <vscale x 2 x double> %b)
1245 ret <vscale x 2 x double> %out
1252 define <vscale x 8 x half> @frsqrte_h(<vscale x 8 x half> %a) {
1253 ; CHECK-LABEL: frsqrte_h:
1254 ; CHECK: frsqrte z0.h, z0.h
1256 %out = call <vscale x 8 x half> @llvm.aarch64.sve.frsqrte.x.nxv8f16(<vscale x 8 x half> %a)
1257 ret <vscale x 8 x half> %out
1260 define <vscale x 4 x float> @frsqrte_s(<vscale x 4 x float> %a) {
1261 ; CHECK-LABEL: frsqrte_s:
1262 ; CHECK: frsqrte z0.s, z0.s
1264 %out = call <vscale x 4 x float> @llvm.aarch64.sve.frsqrte.x.nxv4f32(<vscale x 4 x float> %a)
1265 ret <vscale x 4 x float> %out
1268 define <vscale x 2 x double> @frsqrte_d(<vscale x 2 x i1> %pg, <vscale x 2 x double> %a) {
1269 ; CHECK-LABEL: frsqrte_d:
1270 ; CHECK: frsqrte z0.d, z0.d
1272 %out = call <vscale x 2 x double> @llvm.aarch64.sve.frsqrte.x.nxv2f64(<vscale x 2 x double> %a)
1273 ret <vscale x 2 x double> %out
1280 define <vscale x 8 x half> @fscale_h(<vscale x 8 x i1> %pg, <vscale x 8 x half> %a, <vscale x 8 x i16> %b) {
1281 ; CHECK-LABEL: fscale_h:
1282 ; CHECK: fscale z0.h, p0/m, z0.h, z1.h
1284 %out = call <vscale x 8 x half> @llvm.aarch64.sve.fscale.nxv8f16(<vscale x 8 x i1> %pg,
1285 <vscale x 8 x half> %a,
1286 <vscale x 8 x i16> %b)
1287 ret <vscale x 8 x half> %out
1290 define <vscale x 4 x float> @fscale_s(<vscale x 4 x i1> %pg, <vscale x 4 x float> %a, <vscale x 4 x i32> %b) {
1291 ; CHECK-LABEL: fscale_s:
1292 ; CHECK: fscale z0.s, p0/m, z0.s, z1.s
1294 %out = call <vscale x 4 x float> @llvm.aarch64.sve.fscale.nxv4f32(<vscale x 4 x i1> %pg,
1295 <vscale x 4 x float> %a,
1296 <vscale x 4 x i32> %b)
1297 ret <vscale x 4 x float> %out
1300 define <vscale x 2 x double> @fscale_d(<vscale x 2 x i1> %pg, <vscale x 2 x double> %a, <vscale x 2 x i64> %b) {
1301 ; CHECK-LABEL: fscale_d:
1302 ; CHECK: fscale z0.d, p0/m, z0.d, z1.d
1304 %out = call <vscale x 2 x double> @llvm.aarch64.sve.fscale.nxv2f64(<vscale x 2 x i1> %pg,
1305 <vscale x 2 x double> %a,
1306 <vscale x 2 x i64> %b)
1307 ret <vscale x 2 x double> %out
1314 define <vscale x 8 x half> @fsqrt_h(<vscale x 8 x half> %a, <vscale x 8 x i1> %pg, <vscale x 8 x half> %b) {
1315 ; CHECK-LABEL: fsqrt_h:
1316 ; CHECK: fsqrt z0.h, p0/m, z1.h
1318 %out = call <vscale x 8 x half> @llvm.aarch64.sve.fsqrt.nxv8f16(<vscale x 8 x half> %a,
1319 <vscale x 8 x i1> %pg,
1320 <vscale x 8 x half> %b)
1321 ret <vscale x 8 x half> %out
1324 define <vscale x 4 x float> @fsqrt_s(<vscale x 4 x float> %a, <vscale x 4 x i1> %pg, <vscale x 4 x float> %b) {
1325 ; CHECK-LABEL: fsqrt_s:
1326 ; CHECK: fsqrt z0.s, p0/m, z1.s
1328 %out = call <vscale x 4 x float> @llvm.aarch64.sve.fsqrt.nxv4f32(<vscale x 4 x float> %a,
1329 <vscale x 4 x i1> %pg,
1330 <vscale x 4 x float> %b)
1331 ret <vscale x 4 x float> %out
1334 define <vscale x 2 x double> @fsqrt_d(<vscale x 2 x double> %a, <vscale x 2 x i1> %pg, <vscale x 2 x double> %b) {
1335 ; CHECK-LABEL: fsqrt_d:
1336 ; CHECK: fsqrt z0.d, p0/m, z1.d
1338 %out = call <vscale x 2 x double> @llvm.aarch64.sve.fsqrt.nxv2f64(<vscale x 2 x double> %a,
1339 <vscale x 2 x i1> %pg,
1340 <vscale x 2 x double> %b)
1341 ret <vscale x 2 x double> %out
1348 define <vscale x 8 x half> @fsub_h(<vscale x 8 x i1> %pg, <vscale x 8 x half> %a, <vscale x 8 x half> %b) {
1349 ; CHECK-LABEL: fsub_h:
1350 ; CHECK: fsub z0.h, p0/m, z0.h, z1.h
1352 %out = call <vscale x 8 x half> @llvm.aarch64.sve.fsub.nxv8f16(<vscale x 8 x i1> %pg,
1353 <vscale x 8 x half> %a,
1354 <vscale x 8 x half> %b)
1355 ret <vscale x 8 x half> %out
1358 define <vscale x 4 x float> @fsub_s(<vscale x 4 x i1> %pg, <vscale x 4 x float> %a, <vscale x 4 x float> %b) {
1359 ; CHECK-LABEL: fsub_s:
1360 ; CHECK: fsub z0.s, p0/m, z0.s, z1.s
1362 %out = call <vscale x 4 x float> @llvm.aarch64.sve.fsub.nxv4f32(<vscale x 4 x i1> %pg,
1363 <vscale x 4 x float> %a,
1364 <vscale x 4 x float> %b)
1365 ret <vscale x 4 x float> %out
1368 define <vscale x 2 x double> @fsub_d(<vscale x 2 x i1> %pg, <vscale x 2 x double> %a, <vscale x 2 x double> %b) {
1369 ; CHECK-LABEL: fsub_d:
1370 ; CHECK: fsub z0.d, p0/m, z0.d, z1.d
1372 %out = call <vscale x 2 x double> @llvm.aarch64.sve.fsub.nxv2f64(<vscale x 2 x i1> %pg,
1373 <vscale x 2 x double> %a,
1374 <vscale x 2 x double> %b)
1375 ret <vscale x 2 x double> %out
1382 define <vscale x 8 x half> @fsubr_h(<vscale x 8 x i1> %pg, <vscale x 8 x half> %a, <vscale x 8 x half> %b) {
1383 ; CHECK-LABEL: fsubr_h:
1384 ; CHECK: fsubr z0.h, p0/m, z0.h, z1.h
1386 %out = call <vscale x 8 x half> @llvm.aarch64.sve.fsubr.nxv8f16(<vscale x 8 x i1> %pg,
1387 <vscale x 8 x half> %a,
1388 <vscale x 8 x half> %b)
1389 ret <vscale x 8 x half> %out
1392 define <vscale x 4 x float> @fsubr_s(<vscale x 4 x i1> %pg, <vscale x 4 x float> %a, <vscale x 4 x float> %b) {
1393 ; CHECK-LABEL: fsubr_s:
1394 ; CHECK: fsubr z0.s, p0/m, z0.s, z1.s
1396 %out = call <vscale x 4 x float> @llvm.aarch64.sve.fsubr.nxv4f32(<vscale x 4 x i1> %pg,
1397 <vscale x 4 x float> %a,
1398 <vscale x 4 x float> %b)
1399 ret <vscale x 4 x float> %out
1402 define <vscale x 2 x double> @fsubr_d(<vscale x 2 x i1> %pg, <vscale x 2 x double> %a, <vscale x 2 x double> %b) {
1403 ; CHECK-LABEL: fsubr_d:
1404 ; CHECK: fsubr z0.d, p0/m, z0.d, z1.d
1406 %out = call <vscale x 2 x double> @llvm.aarch64.sve.fsubr.nxv2f64(<vscale x 2 x i1> %pg,
1407 <vscale x 2 x double> %a,
1408 <vscale x 2 x double> %b)
1409 ret <vscale x 2 x double> %out
1416 define <vscale x 8 x half> @ftmad_h(<vscale x 8 x half> %a, <vscale x 8 x half> %b) {
1417 ; CHECK-LABEL: ftmad_h:
1418 ; CHECK: ftmad z0.h, z0.h, z1.h, #0
1420 %out = call <vscale x 8 x half> @llvm.aarch64.sve.ftmad.x.nxv8f16(<vscale x 8 x half> %a,
1421 <vscale x 8 x half> %b,
1423 ret <vscale x 8 x half> %out
1426 define <vscale x 4 x float> @ftmad_s(<vscale x 4 x float> %a, <vscale x 4 x float> %b) {
1427 ; CHECK-LABEL: ftmad_s:
1428 ; CHECK: ftmad z0.s, z0.s, z1.s, #0
1430 %out = call <vscale x 4 x float> @llvm.aarch64.sve.ftmad.x.nxv4f32(<vscale x 4 x float> %a,
1431 <vscale x 4 x float> %b,
1433 ret <vscale x 4 x float> %out
1436 define <vscale x 2 x double> @ftmad_d(<vscale x 2 x double> %a, <vscale x 2 x double> %b) {
1437 ; CHECK-LABEL: ftmad_d:
1438 ; CHECK: ftmad z0.d, z0.d, z1.d, #7
1440 %out = call <vscale x 2 x double> @llvm.aarch64.sve.ftmad.x.nxv2f64(<vscale x 2 x double> %a,
1441 <vscale x 2 x double> %b,
1443 ret <vscale x 2 x double> %out
1450 define <vscale x 8 x half> @ftsmul_h(<vscale x 8 x half> %a, <vscale x 8 x i16> %b) {
1451 ; CHECK-LABEL: ftsmul_h:
1452 ; CHECK: ftsmul z0.h, z0.h, z1.h
1454 %out = call <vscale x 8 x half> @llvm.aarch64.sve.ftsmul.x.nxv8f16(<vscale x 8 x half> %a,
1455 <vscale x 8 x i16> %b)
1456 ret <vscale x 8 x half> %out
1459 define <vscale x 4 x float> @ftsmul_s(<vscale x 4 x float> %a, <vscale x 4 x i32> %b) {
1460 ; CHECK-LABEL: ftsmul_s:
1461 ; CHECK: ftsmul z0.s, z0.s, z1.s
1463 %out = call <vscale x 4 x float> @llvm.aarch64.sve.ftsmul.x.nxv4f32(<vscale x 4 x float> %a,
1464 <vscale x 4 x i32> %b)
1465 ret <vscale x 4 x float> %out
1468 define <vscale x 2 x double> @ftsmul_d(<vscale x 2 x double> %a, <vscale x 2 x i64> %b) {
1469 ; CHECK-LABEL: ftsmul_d:
1470 ; CHECK: ftsmul z0.d, z0.d, z1.d
1472 %out = call <vscale x 2 x double> @llvm.aarch64.sve.ftsmul.x.nxv2f64(<vscale x 2 x double> %a,
1473 <vscale x 2 x i64> %b)
1474 ret <vscale x 2 x double> %out
1481 define <vscale x 8 x half> @ftssel_h(<vscale x 8 x half> %a, <vscale x 8 x i16> %b) {
1482 ; CHECK-LABEL: ftssel_h:
1483 ; CHECK: ftssel z0.h, z0.h, z1.h
1485 %out = call <vscale x 8 x half> @llvm.aarch64.sve.ftssel.x.nxv8f16(<vscale x 8 x half> %a,
1486 <vscale x 8 x i16> %b)
1487 ret <vscale x 8 x half> %out
1490 define <vscale x 4 x float> @ftssel_s(<vscale x 4 x float> %a, <vscale x 4 x i32> %b) {
1491 ; CHECK-LABEL: ftssel_s:
1492 ; CHECK: ftssel z0.s, z0.s, z1.s
1494 %out = call <vscale x 4 x float> @llvm.aarch64.sve.ftssel.x.nxv4f32(<vscale x 4 x float> %a,
1495 <vscale x 4 x i32> %b)
1496 ret <vscale x 4 x float> %out
1499 define <vscale x 2 x double> @ftssel_d(<vscale x 2 x double> %a, <vscale x 2 x i64> %b) {
1500 ; CHECK-LABEL: ftssel_d:
1501 ; CHECK: ftssel z0.d, z0.d, z1.d
1503 %out = call <vscale x 2 x double> @llvm.aarch64.sve.ftssel.x.nxv2f64(<vscale x 2 x double> %a,
1504 <vscale x 2 x i64> %b)
1505 ret <vscale x 2 x double> %out
1508 declare <vscale x 8 x half> @llvm.aarch64.sve.fabd.nxv8f16(<vscale x 8 x i1>, <vscale x 8 x half>, <vscale x 8 x half>)
1509 declare <vscale x 4 x float> @llvm.aarch64.sve.fabd.nxv4f32(<vscale x 4 x i1>, <vscale x 4 x float>, <vscale x 4 x float>)
1510 declare <vscale x 2 x double> @llvm.aarch64.sve.fabd.nxv2f64(<vscale x 2 x i1>, <vscale x 2 x double>, <vscale x 2 x double>)
1512 declare <vscale x 8 x half> @llvm.aarch64.sve.fabs.nxv8f16(<vscale x 8 x half>, <vscale x 8 x i1>, <vscale x 8 x half>)
1513 declare <vscale x 4 x float> @llvm.aarch64.sve.fabs.nxv4f32(<vscale x 4 x float>, <vscale x 4 x i1>, <vscale x 4 x float>)
1514 declare <vscale x 2 x double> @llvm.aarch64.sve.fabs.nxv2f64(<vscale x 2 x double>, <vscale x 2 x i1>, <vscale x 2 x double>)
1516 declare <vscale x 8 x half> @llvm.aarch64.sve.fadd.nxv8f16(<vscale x 8 x i1>, <vscale x 8 x half>, <vscale x 8 x half>)
1517 declare <vscale x 4 x float> @llvm.aarch64.sve.fadd.nxv4f32(<vscale x 4 x i1>, <vscale x 4 x float>, <vscale x 4 x float>)
1518 declare <vscale x 2 x double> @llvm.aarch64.sve.fadd.nxv2f64(<vscale x 2 x i1>, <vscale x 2 x double>, <vscale x 2 x double>)
1520 declare <vscale x 8 x half> @llvm.aarch64.sve.fcadd.nxv8f16(<vscale x 8 x i1>, <vscale x 8 x half>, <vscale x 8 x half>, i32)
1521 declare <vscale x 4 x float> @llvm.aarch64.sve.fcadd.nxv4f32(<vscale x 4 x i1>, <vscale x 4 x float>, <vscale x 4 x float>, i32)
1522 declare <vscale x 2 x double> @llvm.aarch64.sve.fcadd.nxv2f64(<vscale x 2 x i1>, <vscale x 2 x double>, <vscale x 2 x double>, i32)
1524 declare <vscale x 8 x half> @llvm.aarch64.sve.fcmla.nxv8f16(<vscale x 8 x i1>, <vscale x 8 x half>, <vscale x 8 x half>, <vscale x 8 x half>, i32)
1525 declare <vscale x 4 x float> @llvm.aarch64.sve.fcmla.nxv4f32(<vscale x 4 x i1>, <vscale x 4 x float>, <vscale x 4 x float>, <vscale x 4 x float>, i32)
1526 declare <vscale x 2 x double> @llvm.aarch64.sve.fcmla.nxv2f64(<vscale x 2 x i1>, <vscale x 2 x double>, <vscale x 2 x double>, <vscale x 2 x double>, i32)
1528 declare <vscale x 8 x half> @llvm.aarch64.sve.fcmla.lane.nxv8f16(<vscale x 8 x half>, <vscale x 8 x half>, <vscale x 8 x half>, i32, i32)
1529 declare <vscale x 4 x float> @llvm.aarch64.sve.fcmla.lane.nxv4f32(<vscale x 4 x float>, <vscale x 4 x float>, <vscale x 4 x float>, i32, i32)
1531 declare <vscale x 8 x half> @llvm.aarch64.sve.fdiv.nxv8f16(<vscale x 8 x i1>, <vscale x 8 x half>, <vscale x 8 x half>)
1532 declare <vscale x 4 x float> @llvm.aarch64.sve.fdiv.nxv4f32(<vscale x 4 x i1>, <vscale x 4 x float>, <vscale x 4 x float>)
1533 declare <vscale x 2 x double> @llvm.aarch64.sve.fdiv.nxv2f64(<vscale x 2 x i1>, <vscale x 2 x double>, <vscale x 2 x double>)
1535 declare <vscale x 8 x half> @llvm.aarch64.sve.fdivr.nxv8f16(<vscale x 8 x i1>, <vscale x 8 x half>, <vscale x 8 x half>)
1536 declare <vscale x 4 x float> @llvm.aarch64.sve.fdivr.nxv4f32(<vscale x 4 x i1>, <vscale x 4 x float>, <vscale x 4 x float>)
1537 declare <vscale x 2 x double> @llvm.aarch64.sve.fdivr.nxv2f64(<vscale x 2 x i1>, <vscale x 2 x double>, <vscale x 2 x double>)
1539 declare <vscale x 8 x half> @llvm.aarch64.sve.fexpa.x.nxv8f16(<vscale x 8 x i16>)
1540 declare <vscale x 4 x float> @llvm.aarch64.sve.fexpa.x.nxv4f32(<vscale x 4 x i32>)
1541 declare <vscale x 2 x double> @llvm.aarch64.sve.fexpa.x.nxv2f64(<vscale x 2 x i64>)
1543 declare <vscale x 8 x half> @llvm.aarch64.sve.fmad.nxv8f16(<vscale x 8 x i1>, <vscale x 8 x half>, <vscale x 8 x half>, <vscale x 8 x half>)
1544 declare <vscale x 4 x float> @llvm.aarch64.sve.fmad.nxv4f32(<vscale x 4 x i1>, <vscale x 4 x float>, <vscale x 4 x float>, <vscale x 4 x float>)
1545 declare <vscale x 2 x double> @llvm.aarch64.sve.fmad.nxv2f64(<vscale x 2 x i1>, <vscale x 2 x double>, <vscale x 2 x double>, <vscale x 2 x double>)
1547 declare <vscale x 8 x half> @llvm.aarch64.sve.fmax.nxv8f16(<vscale x 8 x i1>, <vscale x 8 x half>, <vscale x 8 x half>)
1548 declare <vscale x 4 x float> @llvm.aarch64.sve.fmax.nxv4f32(<vscale x 4 x i1>, <vscale x 4 x float>, <vscale x 4 x float>)
1549 declare <vscale x 2 x double> @llvm.aarch64.sve.fmax.nxv2f64(<vscale x 2 x i1>, <vscale x 2 x double>, <vscale x 2 x double>)
1551 declare <vscale x 8 x half> @llvm.aarch64.sve.fmaxnm.nxv8f16(<vscale x 8 x i1>, <vscale x 8 x half>, <vscale x 8 x half>)
1552 declare <vscale x 4 x float> @llvm.aarch64.sve.fmaxnm.nxv4f32(<vscale x 4 x i1>, <vscale x 4 x float>, <vscale x 4 x float>)
1553 declare <vscale x 2 x double> @llvm.aarch64.sve.fmaxnm.nxv2f64(<vscale x 2 x i1>, <vscale x 2 x double>, <vscale x 2 x double>)
1555 declare <vscale x 8 x half> @llvm.aarch64.sve.fmin.nxv8f16(<vscale x 8 x i1>, <vscale x 8 x half>, <vscale x 8 x half>)
1556 declare <vscale x 4 x float> @llvm.aarch64.sve.fmin.nxv4f32(<vscale x 4 x i1>, <vscale x 4 x float>, <vscale x 4 x float>)
1557 declare <vscale x 2 x double> @llvm.aarch64.sve.fmin.nxv2f64(<vscale x 2 x i1>, <vscale x 2 x double>, <vscale x 2 x double>)
1559 declare <vscale x 8 x half> @llvm.aarch64.sve.fminnm.nxv8f16(<vscale x 8 x i1>, <vscale x 8 x half>, <vscale x 8 x half>)
1560 declare <vscale x 4 x float> @llvm.aarch64.sve.fminnm.nxv4f32(<vscale x 4 x i1>, <vscale x 4 x float>, <vscale x 4 x float>)
1561 declare <vscale x 2 x double> @llvm.aarch64.sve.fminnm.nxv2f64(<vscale x 2 x i1>, <vscale x 2 x double>, <vscale x 2 x double>)
1563 declare <vscale x 8 x half> @llvm.aarch64.sve.fmla.nxv8f16(<vscale x 8 x i1>, <vscale x 8 x half>, <vscale x 8 x half>, <vscale x 8 x half>)
1564 declare <vscale x 4 x float> @llvm.aarch64.sve.fmla.nxv4f32(<vscale x 4 x i1>, <vscale x 4 x float>, <vscale x 4 x float>, <vscale x 4 x float>)
1565 declare <vscale x 2 x double> @llvm.aarch64.sve.fmla.nxv2f64(<vscale x 2 x i1>, <vscale x 2 x double>, <vscale x 2 x double>, <vscale x 2 x double>)
1567 declare <vscale x 8 x half> @llvm.aarch64.sve.fmla.lane.nxv8f16(<vscale x 8 x half>, <vscale x 8 x half>, <vscale x 8 x half>, i32)
1568 declare <vscale x 4 x float> @llvm.aarch64.sve.fmla.lane.nxv4f32(<vscale x 4 x float>, <vscale x 4 x float>, <vscale x 4 x float>, i32)
1569 declare <vscale x 2 x double> @llvm.aarch64.sve.fmla.lane.nxv2f64(<vscale x 2 x double>, <vscale x 2 x double>, <vscale x 2 x double>, i32)
1571 declare <vscale x 8 x half> @llvm.aarch64.sve.fmls.nxv8f16(<vscale x 8 x i1>, <vscale x 8 x half>, <vscale x 8 x half>, <vscale x 8 x half>)
1572 declare <vscale x 4 x float> @llvm.aarch64.sve.fmls.nxv4f32(<vscale x 4 x i1>, <vscale x 4 x float>, <vscale x 4 x float>, <vscale x 4 x float>)
1573 declare <vscale x 2 x double> @llvm.aarch64.sve.fmls.nxv2f64(<vscale x 2 x i1>, <vscale x 2 x double>, <vscale x 2 x double>, <vscale x 2 x double>)
1575 declare <vscale x 8 x half> @llvm.aarch64.sve.fmls.lane.nxv8f16(<vscale x 8 x half>, <vscale x 8 x half>, <vscale x 8 x half>, i32)
1576 declare <vscale x 4 x float> @llvm.aarch64.sve.fmls.lane.nxv4f32(<vscale x 4 x float>, <vscale x 4 x float>, <vscale x 4 x float>, i32)
1577 declare <vscale x 2 x double> @llvm.aarch64.sve.fmls.lane.nxv2f64(<vscale x 2 x double>, <vscale x 2 x double>, <vscale x 2 x double>, i32)
1579 declare <vscale x 8 x half> @llvm.aarch64.sve.fmsb.nxv8f16(<vscale x 8 x i1>, <vscale x 8 x half>, <vscale x 8 x half>, <vscale x 8 x half>)
1580 declare <vscale x 4 x float> @llvm.aarch64.sve.fmsb.nxv4f32(<vscale x 4 x i1>, <vscale x 4 x float>, <vscale x 4 x float>, <vscale x 4 x float>)
1581 declare <vscale x 2 x double> @llvm.aarch64.sve.fmsb.nxv2f64(<vscale x 2 x i1>, <vscale x 2 x double>, <vscale x 2 x double>, <vscale x 2 x double>)
1583 declare <vscale x 8 x half> @llvm.aarch64.sve.fmul.nxv8f16(<vscale x 8 x i1>, <vscale x 8 x half>, <vscale x 8 x half>)
1584 declare <vscale x 4 x float> @llvm.aarch64.sve.fmul.nxv4f32(<vscale x 4 x i1>, <vscale x 4 x float>, <vscale x 4 x float>)
1585 declare <vscale x 2 x double> @llvm.aarch64.sve.fmul.nxv2f64(<vscale x 2 x i1>, <vscale x 2 x double>, <vscale x 2 x double>)
1587 declare <vscale x 8 x half> @llvm.aarch64.sve.fmul.lane.nxv8f16(<vscale x 8 x half>, <vscale x 8 x half>, i32)
1588 declare <vscale x 4 x float> @llvm.aarch64.sve.fmul.lane.nxv4f32(<vscale x 4 x float>, <vscale x 4 x float>, i32)
1589 declare <vscale x 2 x double> @llvm.aarch64.sve.fmul.lane.nxv2f64(<vscale x 2 x double>, <vscale x 2 x double>, i32)
1591 declare <vscale x 8 x half> @llvm.aarch64.sve.fmulx.nxv8f16(<vscale x 8 x i1>, <vscale x 8 x half>, <vscale x 8 x half>)
1592 declare <vscale x 4 x float> @llvm.aarch64.sve.fmulx.nxv4f32(<vscale x 4 x i1>, <vscale x 4 x float>, <vscale x 4 x float>)
1593 declare <vscale x 2 x double> @llvm.aarch64.sve.fmulx.nxv2f64(<vscale x 2 x i1>, <vscale x 2 x double>, <vscale x 2 x double>)
1595 declare <vscale x 8 x half> @llvm.aarch64.sve.fneg.nxv8f16(<vscale x 8 x half>, <vscale x 8 x i1>, <vscale x 8 x half>)
1596 declare <vscale x 4 x float> @llvm.aarch64.sve.fneg.nxv4f32(<vscale x 4 x float>, <vscale x 4 x i1>, <vscale x 4 x float>)
1597 declare <vscale x 2 x double> @llvm.aarch64.sve.fneg.nxv2f64(<vscale x 2 x double>, <vscale x 2 x i1>, <vscale x 2 x double>)
1599 declare <vscale x 8 x half> @llvm.aarch64.sve.fnmad.nxv8f16(<vscale x 8 x i1>, <vscale x 8 x half>, <vscale x 8 x half>, <vscale x 8 x half>)
1600 declare <vscale x 4 x float> @llvm.aarch64.sve.fnmad.nxv4f32(<vscale x 4 x i1>, <vscale x 4 x float>, <vscale x 4 x float>, <vscale x 4 x float>)
1601 declare <vscale x 2 x double> @llvm.aarch64.sve.fnmad.nxv2f64(<vscale x 2 x i1>, <vscale x 2 x double>, <vscale x 2 x double>, <vscale x 2 x double>)
1603 declare <vscale x 8 x half> @llvm.aarch64.sve.fnmla.nxv8f16(<vscale x 8 x i1>, <vscale x 8 x half>, <vscale x 8 x half>, <vscale x 8 x half>)
1604 declare <vscale x 4 x float> @llvm.aarch64.sve.fnmla.nxv4f32(<vscale x 4 x i1>, <vscale x 4 x float>, <vscale x 4 x float>, <vscale x 4 x float>)
1605 declare <vscale x 2 x double> @llvm.aarch64.sve.fnmla.nxv2f64(<vscale x 2 x i1>, <vscale x 2 x double>, <vscale x 2 x double>, <vscale x 2 x double>)
1607 declare <vscale x 8 x half> @llvm.aarch64.sve.fnmls.nxv8f16(<vscale x 8 x i1>, <vscale x 8 x half>, <vscale x 8 x half>, <vscale x 8 x half>)
1608 declare <vscale x 4 x float> @llvm.aarch64.sve.fnmls.nxv4f32(<vscale x 4 x i1>, <vscale x 4 x float>, <vscale x 4 x float>, <vscale x 4 x float>)
1609 declare <vscale x 2 x double> @llvm.aarch64.sve.fnmls.nxv2f64(<vscale x 2 x i1>, <vscale x 2 x double>, <vscale x 2 x double>, <vscale x 2 x double>)
1611 declare <vscale x 8 x half> @llvm.aarch64.sve.fnmsb.nxv8f16(<vscale x 8 x i1>, <vscale x 8 x half>, <vscale x 8 x half>, <vscale x 8 x half>)
1612 declare <vscale x 4 x float> @llvm.aarch64.sve.fnmsb.nxv4f32(<vscale x 4 x i1>, <vscale x 4 x float>, <vscale x 4 x float>, <vscale x 4 x float>)
1613 declare <vscale x 2 x double> @llvm.aarch64.sve.fnmsb.nxv2f64(<vscale x 2 x i1>, <vscale x 2 x double>, <vscale x 2 x double>, <vscale x 2 x double>)
1615 declare <vscale x 8 x half> @llvm.aarch64.sve.frecpe.x.nxv8f16(<vscale x 8 x half>)
1616 declare <vscale x 4 x float> @llvm.aarch64.sve.frecpe.x.nxv4f32(<vscale x 4 x float>)
1617 declare <vscale x 2 x double> @llvm.aarch64.sve.frecpe.x.nxv2f64(<vscale x 2 x double>)
1619 declare <vscale x 8 x half> @llvm.aarch64.sve.frecpx.nxv8f16(<vscale x 8 x half>, <vscale x 8 x i1>, <vscale x 8 x half>)
1620 declare <vscale x 4 x float> @llvm.aarch64.sve.frecpx.nxv4f32(<vscale x 4 x float>, <vscale x 4 x i1>, <vscale x 4 x float>)
1621 declare <vscale x 2 x double> @llvm.aarch64.sve.frecpx.nxv2f64(<vscale x 2 x double>, <vscale x 2 x i1>, <vscale x 2 x double>)
1623 declare <vscale x 8 x half> @llvm.aarch64.sve.frinta.nxv8f16(<vscale x 8 x half>, <vscale x 8 x i1>, <vscale x 8 x half>)
1624 declare <vscale x 4 x float> @llvm.aarch64.sve.frinta.nxv4f32(<vscale x 4 x float>, <vscale x 4 x i1>, <vscale x 4 x float>)
1625 declare <vscale x 2 x double> @llvm.aarch64.sve.frinta.nxv2f64(<vscale x 2 x double>, <vscale x 2 x i1>, <vscale x 2 x double>)
1627 declare <vscale x 8 x half> @llvm.aarch64.sve.frinti.nxv8f16(<vscale x 8 x half>, <vscale x 8 x i1>, <vscale x 8 x half>)
1628 declare <vscale x 4 x float> @llvm.aarch64.sve.frinti.nxv4f32(<vscale x 4 x float>, <vscale x 4 x i1>, <vscale x 4 x float>)
1629 declare <vscale x 2 x double> @llvm.aarch64.sve.frinti.nxv2f64(<vscale x 2 x double>, <vscale x 2 x i1>, <vscale x 2 x double>)
1631 declare <vscale x 8 x half> @llvm.aarch64.sve.frintm.nxv8f16(<vscale x 8 x half>, <vscale x 8 x i1>, <vscale x 8 x half>)
1632 declare <vscale x 4 x float> @llvm.aarch64.sve.frintm.nxv4f32(<vscale x 4 x float>, <vscale x 4 x i1>, <vscale x 4 x float>)
1633 declare <vscale x 2 x double> @llvm.aarch64.sve.frintm.nxv2f64(<vscale x 2 x double>, <vscale x 2 x i1>, <vscale x 2 x double>)
1635 declare <vscale x 8 x half> @llvm.aarch64.sve.frintn.nxv8f16(<vscale x 8 x half>, <vscale x 8 x i1>, <vscale x 8 x half>)
1636 declare <vscale x 4 x float> @llvm.aarch64.sve.frintn.nxv4f32(<vscale x 4 x float>, <vscale x 4 x i1>, <vscale x 4 x float>)
1637 declare <vscale x 2 x double> @llvm.aarch64.sve.frintn.nxv2f64(<vscale x 2 x double>, <vscale x 2 x i1>, <vscale x 2 x double>)
1639 declare <vscale x 8 x half> @llvm.aarch64.sve.frintp.nxv8f16(<vscale x 8 x half>, <vscale x 8 x i1>, <vscale x 8 x half>)
1640 declare <vscale x 4 x float> @llvm.aarch64.sve.frintp.nxv4f32(<vscale x 4 x float>, <vscale x 4 x i1>, <vscale x 4 x float>)
1641 declare <vscale x 2 x double> @llvm.aarch64.sve.frintp.nxv2f64(<vscale x 2 x double>, <vscale x 2 x i1>, <vscale x 2 x double>)
1643 declare <vscale x 8 x half> @llvm.aarch64.sve.frintx.nxv8f16(<vscale x 8 x half>, <vscale x 8 x i1>, <vscale x 8 x half>)
1644 declare <vscale x 4 x float> @llvm.aarch64.sve.frintx.nxv4f32(<vscale x 4 x float>, <vscale x 4 x i1>, <vscale x 4 x float>)
1645 declare <vscale x 2 x double> @llvm.aarch64.sve.frintx.nxv2f64(<vscale x 2 x double>, <vscale x 2 x i1>, <vscale x 2 x double>)
1647 declare <vscale x 8 x half> @llvm.aarch64.sve.frintz.nxv8f16(<vscale x 8 x half>, <vscale x 8 x i1>, <vscale x 8 x half>)
1648 declare <vscale x 4 x float> @llvm.aarch64.sve.frintz.nxv4f32(<vscale x 4 x float>, <vscale x 4 x i1>, <vscale x 4 x float>)
1649 declare <vscale x 2 x double> @llvm.aarch64.sve.frintz.nxv2f64(<vscale x 2 x double>, <vscale x 2 x i1>, <vscale x 2 x double>)
1651 declare <vscale x 8 x half> @llvm.aarch64.sve.frsqrte.x.nxv8f16(<vscale x 8 x half>)
1652 declare <vscale x 4 x float> @llvm.aarch64.sve.frsqrte.x.nxv4f32(<vscale x 4 x float>)
1653 declare <vscale x 2 x double> @llvm.aarch64.sve.frsqrte.x.nxv2f64(<vscale x 2 x double>)
1655 declare <vscale x 8 x half> @llvm.aarch64.sve.fscale.nxv8f16(<vscale x 8 x i1>, <vscale x 8 x half>, <vscale x 8 x i16>)
1656 declare <vscale x 4 x float> @llvm.aarch64.sve.fscale.nxv4f32(<vscale x 4 x i1>, <vscale x 4 x float>, <vscale x 4 x i32>)
1657 declare <vscale x 2 x double> @llvm.aarch64.sve.fscale.nxv2f64(<vscale x 2 x i1>, <vscale x 2 x double>, <vscale x 2 x i64>)
1659 declare <vscale x 8 x half> @llvm.aarch64.sve.fsqrt.nxv8f16(<vscale x 8 x half>, <vscale x 8 x i1>, <vscale x 8 x half>)
1660 declare <vscale x 4 x float> @llvm.aarch64.sve.fsqrt.nxv4f32(<vscale x 4 x float>, <vscale x 4 x i1>, <vscale x 4 x float>)
1661 declare <vscale x 2 x double> @llvm.aarch64.sve.fsqrt.nxv2f64(<vscale x 2 x double>, <vscale x 2 x i1>, <vscale x 2 x double>)
1663 declare <vscale x 8 x half> @llvm.aarch64.sve.fsub.nxv8f16(<vscale x 8 x i1>, <vscale x 8 x half>, <vscale x 8 x half>)
1664 declare <vscale x 4 x float> @llvm.aarch64.sve.fsub.nxv4f32(<vscale x 4 x i1>, <vscale x 4 x float>, <vscale x 4 x float>)
1665 declare <vscale x 2 x double> @llvm.aarch64.sve.fsub.nxv2f64(<vscale x 2 x i1>, <vscale x 2 x double>, <vscale x 2 x double>)
1667 declare <vscale x 8 x half> @llvm.aarch64.sve.fsubr.nxv8f16(<vscale x 8 x i1>, <vscale x 8 x half>, <vscale x 8 x half>)
1668 declare <vscale x 4 x float> @llvm.aarch64.sve.fsubr.nxv4f32(<vscale x 4 x i1>, <vscale x 4 x float>, <vscale x 4 x float>)
1669 declare <vscale x 2 x double> @llvm.aarch64.sve.fsubr.nxv2f64(<vscale x 2 x i1>, <vscale x 2 x double>, <vscale x 2 x double>)
1671 declare <vscale x 8 x half> @llvm.aarch64.sve.ftmad.x.nxv8f16(<vscale x 8 x half>, <vscale x 8 x half>, i32)
1672 declare <vscale x 4 x float> @llvm.aarch64.sve.ftmad.x.nxv4f32(<vscale x 4 x float>, <vscale x 4 x float>, i32)
1673 declare <vscale x 2 x double> @llvm.aarch64.sve.ftmad.x.nxv2f64(<vscale x 2 x double>, <vscale x 2 x double>, i32)
1675 declare <vscale x 8 x half> @llvm.aarch64.sve.ftsmul.x.nxv8f16(<vscale x 8 x half>, <vscale x 8 x i16>)
1676 declare <vscale x 4 x float> @llvm.aarch64.sve.ftsmul.x.nxv4f32(<vscale x 4 x float>, <vscale x 4 x i32>)
1677 declare <vscale x 2 x double> @llvm.aarch64.sve.ftsmul.x.nxv2f64(<vscale x 2 x double>, <vscale x 2 x i64>)
1679 declare <vscale x 8 x half> @llvm.aarch64.sve.ftssel.x.nxv8f16(<vscale x 8 x half>, <vscale x 8 x i16>)
1680 declare <vscale x 4 x float> @llvm.aarch64.sve.ftssel.x.nxv4f32(<vscale x 4 x float>, <vscale x 4 x i32>)
1681 declare <vscale x 2 x double> @llvm.aarch64.sve.ftssel.x.nxv2f64(<vscale x 2 x double>, <vscale x 2 x i64>)