[NFC][RemoveDIs] Prefer iterators over inst-pointers in InstCombine
[llvm-project.git] / llvm / test / CodeGen / AArch64 / sve-intrinsics-fp-arith-undef.ll
bloba77bcdf38643df579379ca5ba912b25b4b311614
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 ; FABD
8 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-LABEL: fabd_h:
10 ; CHECK:       // %bb.0:
11 ; CHECK-NEXT:    fabd z0.h, p0/m, z0.h, z1.h
12 ; CHECK-NEXT:    ret
13   %out = call <vscale x 8 x half> @llvm.aarch64.sve.fabd.u.nxv8f16(<vscale x 8 x i1> %pg,
14                                                                    <vscale x 8 x half> %a,
15                                                                    <vscale x 8 x half> %b)
16   ret <vscale x 8 x half> %out
19 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) {
20 ; CHECK-LABEL: fabd_s:
21 ; CHECK:       // %bb.0:
22 ; CHECK-NEXT:    fabd z0.s, p0/m, z0.s, z1.s
23 ; CHECK-NEXT:    ret
24   %out = call <vscale x 4 x float> @llvm.aarch64.sve.fabd.u.nxv4f32(<vscale x 4 x i1> %pg,
25                                                                     <vscale x 4 x float> %a,
26                                                                     <vscale x 4 x float> %b)
27   ret <vscale x 4 x float> %out
30 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) {
31 ; CHECK-LABEL: fabd_d:
32 ; CHECK:       // %bb.0:
33 ; CHECK-NEXT:    fabd z0.d, p0/m, z0.d, z1.d
34 ; CHECK-NEXT:    ret
35   %out = call <vscale x 2 x double> @llvm.aarch64.sve.fabd.u.nxv2f64(<vscale x 2 x i1> %pg,
36                                                                      <vscale x 2 x double> %a,
37                                                                      <vscale x 2 x double> %b)
38   ret <vscale x 2 x double> %out
42 ; FADD
45 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) {
46 ; CHECK-LABEL: fadd_h:
47 ; CHECK:       // %bb.0:
48 ; CHECK-NEXT:    fadd z0.h, p0/m, z0.h, z1.h
49 ; CHECK-NEXT:    ret
50   %out = call <vscale x 8 x half> @llvm.aarch64.sve.fadd.u.nxv8f16(<vscale x 8 x i1> %pg,
51                                                                    <vscale x 8 x half> %a,
52                                                                    <vscale x 8 x half> %b)
53   ret <vscale x 8 x half> %out
56 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) {
57 ; CHECK-LABEL: fadd_s:
58 ; CHECK:       // %bb.0:
59 ; CHECK-NEXT:    fadd z0.s, p0/m, z0.s, z1.s
60 ; CHECK-NEXT:    ret
61   %out = call <vscale x 4 x float> @llvm.aarch64.sve.fadd.u.nxv4f32(<vscale x 4 x i1> %pg,
62                                                                     <vscale x 4 x float> %a,
63                                                                     <vscale x 4 x float> %b)
64   ret <vscale x 4 x float> %out
67 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) {
68 ; CHECK-LABEL: fadd_d:
69 ; CHECK:       // %bb.0:
70 ; CHECK-NEXT:    fadd z0.d, p0/m, z0.d, z1.d
71 ; CHECK-NEXT:    ret
72   %out = call <vscale x 2 x double> @llvm.aarch64.sve.fadd.u.nxv2f64(<vscale x 2 x i1> %pg,
73                                                                      <vscale x 2 x double> %a,
74                                                                      <vscale x 2 x double> %b)
75   ret <vscale x 2 x double> %out
79 ; FDIV
82 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) {
83 ; CHECK-LABEL: fdiv_h:
84 ; CHECK:       // %bb.0:
85 ; CHECK-NEXT:    fdiv z0.h, p0/m, z0.h, z1.h
86 ; CHECK-NEXT:    ret
87   %out = call <vscale x 8 x half> @llvm.aarch64.sve.fdiv.u.nxv8f16(<vscale x 8 x i1> %pg,
88                                                                    <vscale x 8 x half> %a,
89                                                                    <vscale x 8 x half> %b)
90   ret <vscale x 8 x half> %out
93 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) {
94 ; CHECK-LABEL: fdiv_s:
95 ; CHECK:       // %bb.0:
96 ; CHECK-NEXT:    fdiv z0.s, p0/m, z0.s, z1.s
97 ; CHECK-NEXT:    ret
98   %out = call <vscale x 4 x float> @llvm.aarch64.sve.fdiv.u.nxv4f32(<vscale x 4 x i1> %pg,
99                                                                     <vscale x 4 x float> %a,
100                                                                     <vscale x 4 x float> %b)
101   ret <vscale x 4 x float> %out
104 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) {
105 ; CHECK-LABEL: fdiv_d:
106 ; CHECK:       // %bb.0:
107 ; CHECK-NEXT:    fdiv z0.d, p0/m, z0.d, z1.d
108 ; CHECK-NEXT:    ret
109   %out = call <vscale x 2 x double> @llvm.aarch64.sve.fdiv.u.nxv2f64(<vscale x 2 x i1> %pg,
110                                                                      <vscale x 2 x double> %a,
111                                                                      <vscale x 2 x double> %b)
112   ret <vscale x 2 x double> %out
116 ; FDIVR
119 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) {
120 ; CHECK-LABEL: fdivr_h:
121 ; CHECK:       // %bb.0:
122 ; CHECK-NEXT:    fdivr z0.h, p0/m, z0.h, z1.h
123 ; CHECK-NEXT:    ret
124   %out = call <vscale x 8 x half> @llvm.aarch64.sve.fdiv.u.nxv8f16(<vscale x 8 x i1> %pg,
125                                                                    <vscale x 8 x half> %b,
126                                                                    <vscale x 8 x half> %a)
127   ret <vscale x 8 x half> %out
130 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) {
131 ; CHECK-LABEL: fdivr_s:
132 ; CHECK:       // %bb.0:
133 ; CHECK-NEXT:    fdivr z0.s, p0/m, z0.s, z1.s
134 ; CHECK-NEXT:    ret
135   %out = call <vscale x 4 x float> @llvm.aarch64.sve.fdiv.u.nxv4f32(<vscale x 4 x i1> %pg,
136                                                                     <vscale x 4 x float> %b,
137                                                                     <vscale x 4 x float> %a)
138   ret <vscale x 4 x float> %out
141 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) {
142 ; CHECK-LABEL: fdivr_d:
143 ; CHECK:       // %bb.0:
144 ; CHECK-NEXT:    fdivr z0.d, p0/m, z0.d, z1.d
145 ; CHECK-NEXT:    ret
146   %out = call <vscale x 2 x double> @llvm.aarch64.sve.fdiv.u.nxv2f64(<vscale x 2 x i1> %pg,
147                                                                      <vscale x 2 x double> %b,
148                                                                      <vscale x 2 x double> %a)
149   ret <vscale x 2 x double> %out
153 ; FMAD
156 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) {
157 ; CHECK-LABEL: fmad_h:
158 ; CHECK:       // %bb.0:
159 ; CHECK-NEXT:    fmad z0.h, p0/m, z1.h, z2.h
160 ; CHECK-NEXT:    ret
161   %out = call <vscale x 8 x half> @llvm.aarch64.sve.fmla.u.nxv8f16(<vscale x 8 x i1> %pg,
162                                                                    <vscale x 8 x half> %c,
163                                                                    <vscale x 8 x half> %a,
164                                                                    <vscale x 8 x half> %b)
165   ret <vscale x 8 x half> %out
168 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) {
169 ; CHECK-LABEL: fmad_s:
170 ; CHECK:       // %bb.0:
171 ; CHECK-NEXT:    fmad z0.s, p0/m, z1.s, z2.s
172 ; CHECK-NEXT:    ret
173   %out = call <vscale x 4 x float> @llvm.aarch64.sve.fmla.u.nxv4f32(<vscale x 4 x i1> %pg,
174                                                                     <vscale x 4 x float> %c,
175                                                                     <vscale x 4 x float> %a,
176                                                                     <vscale x 4 x float> %b)
177   ret <vscale x 4 x float> %out
180 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) {
181 ; CHECK-LABEL: fmad_d:
182 ; CHECK:       // %bb.0:
183 ; CHECK-NEXT:    fmad z0.d, p0/m, z1.d, z2.d
184 ; CHECK-NEXT:    ret
185   %out = call <vscale x 2 x double> @llvm.aarch64.sve.fmla.u.nxv2f64(<vscale x 2 x i1> %pg,
186                                                                      <vscale x 2 x double> %c,
187                                                                      <vscale x 2 x double> %a,
188                                                                      <vscale x 2 x double> %b)
189   ret <vscale x 2 x double> %out
193 ; FMAX
196 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) {
197 ; CHECK-LABEL: fmax_h:
198 ; CHECK:       // %bb.0:
199 ; CHECK-NEXT:    fmax z0.h, p0/m, z0.h, z1.h
200 ; CHECK-NEXT:    ret
201   %out = call <vscale x 8 x half> @llvm.aarch64.sve.fmax.u.nxv8f16(<vscale x 8 x i1> %pg,
202                                                                    <vscale x 8 x half> %a,
203                                                                    <vscale x 8 x half> %b)
204   ret <vscale x 8 x half> %out
207 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) {
208 ; CHECK-LABEL: fmax_s:
209 ; CHECK:       // %bb.0:
210 ; CHECK-NEXT:    fmax z0.s, p0/m, z0.s, z1.s
211 ; CHECK-NEXT:    ret
212   %out = call <vscale x 4 x float> @llvm.aarch64.sve.fmax.u.nxv4f32(<vscale x 4 x i1> %pg,
213                                                                     <vscale x 4 x float> %a,
214                                                                     <vscale x 4 x float> %b)
215   ret <vscale x 4 x float> %out
218 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) {
219 ; CHECK-LABEL: fmax_d:
220 ; CHECK:       // %bb.0:
221 ; CHECK-NEXT:    fmax z0.d, p0/m, z0.d, z1.d
222 ; CHECK-NEXT:    ret
223   %out = call <vscale x 2 x double> @llvm.aarch64.sve.fmax.u.nxv2f64(<vscale x 2 x i1> %pg,
224                                                                      <vscale x 2 x double> %a,
225                                                                      <vscale x 2 x double> %b)
226   ret <vscale x 2 x double> %out
230 ; FMAXNM
233 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) {
234 ; CHECK-LABEL: fmaxnm_h:
235 ; CHECK:       // %bb.0:
236 ; CHECK-NEXT:    fmaxnm z0.h, p0/m, z0.h, z1.h
237 ; CHECK-NEXT:    ret
238   %out = call <vscale x 8 x half> @llvm.aarch64.sve.fmaxnm.u.nxv8f16(<vscale x 8 x i1> %pg,
239                                                                      <vscale x 8 x half> %a,
240                                                                      <vscale x 8 x half> %b)
241   ret <vscale x 8 x half> %out
244 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) {
245 ; CHECK-LABEL: fmaxnm_s:
246 ; CHECK:       // %bb.0:
247 ; CHECK-NEXT:    fmaxnm z0.s, p0/m, z0.s, z1.s
248 ; CHECK-NEXT:    ret
249   %out = call <vscale x 4 x float> @llvm.aarch64.sve.fmaxnm.u.nxv4f32(<vscale x 4 x i1> %pg,
250                                                                       <vscale x 4 x float> %a,
251                                                                       <vscale x 4 x float> %b)
252   ret <vscale x 4 x float> %out
255 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) {
256 ; CHECK-LABEL: fmaxnm_d:
257 ; CHECK:       // %bb.0:
258 ; CHECK-NEXT:    fmaxnm z0.d, p0/m, z0.d, z1.d
259 ; CHECK-NEXT:    ret
260   %out = call <vscale x 2 x double> @llvm.aarch64.sve.fmaxnm.u.nxv2f64(<vscale x 2 x i1> %pg,
261                                                                        <vscale x 2 x double> %a,
262                                                                        <vscale x 2 x double> %b)
263   ret <vscale x 2 x double> %out
267 ; FMIN
270 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) {
271 ; CHECK-LABEL: fmin_h:
272 ; CHECK:       // %bb.0:
273 ; CHECK-NEXT:    fmin z0.h, p0/m, z0.h, z1.h
274 ; CHECK-NEXT:    ret
275   %out = call <vscale x 8 x half> @llvm.aarch64.sve.fmin.u.nxv8f16(<vscale x 8 x i1> %pg,
276                                                                    <vscale x 8 x half> %a,
277                                                                    <vscale x 8 x half> %b)
278   ret <vscale x 8 x half> %out
281 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) {
282 ; CHECK-LABEL: fmin_s:
283 ; CHECK:       // %bb.0:
284 ; CHECK-NEXT:    fmin z0.s, p0/m, z0.s, z1.s
285 ; CHECK-NEXT:    ret
286   %out = call <vscale x 4 x float> @llvm.aarch64.sve.fmin.u.nxv4f32(<vscale x 4 x i1> %pg,
287                                                                     <vscale x 4 x float> %a,
288                                                                     <vscale x 4 x float> %b)
289   ret <vscale x 4 x float> %out
292 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) {
293 ; CHECK-LABEL: fmin_d:
294 ; CHECK:       // %bb.0:
295 ; CHECK-NEXT:    fmin z0.d, p0/m, z0.d, z1.d
296 ; CHECK-NEXT:    ret
297   %out = call <vscale x 2 x double> @llvm.aarch64.sve.fmin.u.nxv2f64(<vscale x 2 x i1> %pg,
298                                                                      <vscale x 2 x double> %a,
299                                                                      <vscale x 2 x double> %b)
300   ret <vscale x 2 x double> %out
304 ; FMINNM
307 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) {
308 ; CHECK-LABEL: fminnm_h:
309 ; CHECK:       // %bb.0:
310 ; CHECK-NEXT:    fminnm z0.h, p0/m, z0.h, z1.h
311 ; CHECK-NEXT:    ret
312   %out = call <vscale x 8 x half> @llvm.aarch64.sve.fminnm.u.nxv8f16(<vscale x 8 x i1> %pg,
313                                                                      <vscale x 8 x half> %a,
314                                                                      <vscale x 8 x half> %b)
315   ret <vscale x 8 x half> %out
318 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) {
319 ; CHECK-LABEL: fminnm_s:
320 ; CHECK:       // %bb.0:
321 ; CHECK-NEXT:    fminnm z0.s, p0/m, z0.s, z1.s
322 ; CHECK-NEXT:    ret
323   %out = call <vscale x 4 x float> @llvm.aarch64.sve.fminnm.u.nxv4f32(<vscale x 4 x i1> %pg,
324                                                                       <vscale x 4 x float> %a,
325                                                                       <vscale x 4 x float> %b)
326   ret <vscale x 4 x float> %out
329 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) {
330 ; CHECK-LABEL: fminnm_d:
331 ; CHECK:       // %bb.0:
332 ; CHECK-NEXT:    fminnm z0.d, p0/m, z0.d, z1.d
333 ; CHECK-NEXT:    ret
334   %out = call <vscale x 2 x double> @llvm.aarch64.sve.fminnm.u.nxv2f64(<vscale x 2 x i1> %pg,
335                                                                        <vscale x 2 x double> %a,
336                                                                        <vscale x 2 x double> %b)
337   ret <vscale x 2 x double> %out
341 ; FMLA
344 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) {
345 ; CHECK-LABEL: fmla_h:
346 ; CHECK:       // %bb.0:
347 ; CHECK-NEXT:    fmla z0.h, p0/m, z1.h, z2.h
348 ; CHECK-NEXT:    ret
349   %out = call <vscale x 8 x half> @llvm.aarch64.sve.fmla.u.nxv8f16(<vscale x 8 x i1> %pg,
350                                                                    <vscale x 8 x half> %a,
351                                                                    <vscale x 8 x half> %b,
352                                                                    <vscale x 8 x half> %c)
353   ret <vscale x 8 x half> %out
356 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) {
357 ; CHECK-LABEL: fmla_s:
358 ; CHECK:       // %bb.0:
359 ; CHECK-NEXT:    fmla z0.s, p0/m, z1.s, z2.s
360 ; CHECK-NEXT:    ret
361   %out = call <vscale x 4 x float> @llvm.aarch64.sve.fmla.u.nxv4f32(<vscale x 4 x i1> %pg,
362                                                                     <vscale x 4 x float> %a,
363                                                                     <vscale x 4 x float> %b,
364                                                                     <vscale x 4 x float> %c)
365   ret <vscale x 4 x float> %out
368 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) {
369 ; CHECK-LABEL: fmla_d:
370 ; CHECK:       // %bb.0:
371 ; CHECK-NEXT:    fmla z0.d, p0/m, z1.d, z2.d
372 ; CHECK-NEXT:    ret
373   %out = call <vscale x 2 x double> @llvm.aarch64.sve.fmla.u.nxv2f64(<vscale x 2 x i1> %pg,
374                                                                      <vscale x 2 x double> %a,
375                                                                      <vscale x 2 x double> %b,
376                                                                      <vscale x 2 x double> %c)
377   ret <vscale x 2 x double> %out
381 ; FMLS
384 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) {
385 ; CHECK-LABEL: fmls_h:
386 ; CHECK:       // %bb.0:
387 ; CHECK-NEXT:    fmls z0.h, p0/m, z1.h, z2.h
388 ; CHECK-NEXT:    ret
389   %out = call <vscale x 8 x half> @llvm.aarch64.sve.fmls.u.nxv8f16(<vscale x 8 x i1> %pg,
390                                                                    <vscale x 8 x half> %a,
391                                                                    <vscale x 8 x half> %b,
392                                                                    <vscale x 8 x half> %c)
393   ret <vscale x 8 x half> %out
396 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) {
397 ; CHECK-LABEL: fmls_s:
398 ; CHECK:       // %bb.0:
399 ; CHECK-NEXT:    fmls z0.s, p0/m, z1.s, z2.s
400 ; CHECK-NEXT:    ret
401   %out = call <vscale x 4 x float> @llvm.aarch64.sve.fmls.u.nxv4f32(<vscale x 4 x i1> %pg,
402                                                                     <vscale x 4 x float> %a,
403                                                                     <vscale x 4 x float> %b,
404                                                                     <vscale x 4 x float> %c)
405   ret <vscale x 4 x float> %out
408 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) {
409 ; CHECK-LABEL: fmls_d:
410 ; CHECK:       // %bb.0:
411 ; CHECK-NEXT:    fmls z0.d, p0/m, z1.d, z2.d
412 ; CHECK-NEXT:    ret
413   %out = call <vscale x 2 x double> @llvm.aarch64.sve.fmls.u.nxv2f64(<vscale x 2 x i1> %pg,
414                                                                      <vscale x 2 x double> %a,
415                                                                      <vscale x 2 x double> %b,
416                                                                      <vscale x 2 x double> %c)
417   ret <vscale x 2 x double> %out
421 ; FMSB
424 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) {
425 ; CHECK-LABEL: fmsb_h:
426 ; CHECK:       // %bb.0:
427 ; CHECK-NEXT:    fmsb z0.h, p0/m, z1.h, z2.h
428 ; CHECK-NEXT:    ret
429   %out = call <vscale x 8 x half> @llvm.aarch64.sve.fmls.u.nxv8f16(<vscale x 8 x i1> %pg,
430                                                                    <vscale x 8 x half> %c,
431                                                                    <vscale x 8 x half> %a,
432                                                                    <vscale x 8 x half> %b)
433   ret <vscale x 8 x half> %out
436 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) {
437 ; CHECK-LABEL: fmsb_s:
438 ; CHECK:       // %bb.0:
439 ; CHECK-NEXT:    fmsb z0.s, p0/m, z1.s, z2.s
440 ; CHECK-NEXT:    ret
441   %out = call <vscale x 4 x float> @llvm.aarch64.sve.fmls.u.nxv4f32(<vscale x 4 x i1> %pg,
442                                                                     <vscale x 4 x float> %c,
443                                                                     <vscale x 4 x float> %a,
444                                                                     <vscale x 4 x float> %b)
445   ret <vscale x 4 x float> %out
448 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) {
449 ; CHECK-LABEL: fmsb_d:
450 ; CHECK:       // %bb.0:
451 ; CHECK-NEXT:    fmsb z0.d, p0/m, z1.d, z2.d
452 ; CHECK-NEXT:    ret
453   %out = call <vscale x 2 x double> @llvm.aarch64.sve.fmls.u.nxv2f64(<vscale x 2 x i1> %pg,
454                                                                      <vscale x 2 x double> %c,
455                                                                      <vscale x 2 x double> %a,
456                                                                      <vscale x 2 x double> %b)
457   ret <vscale x 2 x double> %out
461 ; FMUL
464 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) {
465 ; CHECK-LABEL: fmul_h:
466 ; CHECK:       // %bb.0:
467 ; CHECK-NEXT:    fmul z0.h, p0/m, z0.h, z1.h
468 ; CHECK-NEXT:    ret
469   %out = call <vscale x 8 x half> @llvm.aarch64.sve.fmul.u.nxv8f16(<vscale x 8 x i1> %pg,
470                                                                    <vscale x 8 x half> %a,
471                                                                    <vscale x 8 x half> %b)
472   ret <vscale x 8 x half> %out
475 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) {
476 ; CHECK-LABEL: fmul_s:
477 ; CHECK:       // %bb.0:
478 ; CHECK-NEXT:    fmul z0.s, p0/m, z0.s, z1.s
479 ; CHECK-NEXT:    ret
480   %out = call <vscale x 4 x float> @llvm.aarch64.sve.fmul.u.nxv4f32(<vscale x 4 x i1> %pg,
481                                                                     <vscale x 4 x float> %a,
482                                                                     <vscale x 4 x float> %b)
483   ret <vscale x 4 x float> %out
486 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) {
487 ; CHECK-LABEL: fmul_d:
488 ; CHECK:       // %bb.0:
489 ; CHECK-NEXT:    fmul z0.d, p0/m, z0.d, z1.d
490 ; CHECK-NEXT:    ret
491   %out = call <vscale x 2 x double> @llvm.aarch64.sve.fmul.u.nxv2f64(<vscale x 2 x i1> %pg,
492                                                                      <vscale x 2 x double> %a,
493                                                                      <vscale x 2 x double> %b)
494   ret <vscale x 2 x double> %out
498 ; FMULX
501 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) {
502 ; CHECK-LABEL: fmulx_h:
503 ; CHECK:       // %bb.0:
504 ; CHECK-NEXT:    fmulx z0.h, p0/m, z0.h, z1.h
505 ; CHECK-NEXT:    ret
506   %out = call <vscale x 8 x half> @llvm.aarch64.sve.fmulx.u.nxv8f16(<vscale x 8 x i1> %pg,
507                                                                     <vscale x 8 x half> %a,
508                                                                     <vscale x 8 x half> %b)
509   ret <vscale x 8 x half> %out
512 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) {
513 ; CHECK-LABEL: fmulx_s:
514 ; CHECK:       // %bb.0:
515 ; CHECK-NEXT:    fmulx z0.s, p0/m, z0.s, z1.s
516 ; CHECK-NEXT:    ret
517   %out = call <vscale x 4 x float> @llvm.aarch64.sve.fmulx.u.nxv4f32(<vscale x 4 x i1> %pg,
518                                                                      <vscale x 4 x float> %a,
519                                                                      <vscale x 4 x float> %b)
520   ret <vscale x 4 x float> %out
523 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) {
524 ; CHECK-LABEL: fmulx_d:
525 ; CHECK:       // %bb.0:
526 ; CHECK-NEXT:    fmulx z0.d, p0/m, z0.d, z1.d
527 ; CHECK-NEXT:    ret
528   %out = call <vscale x 2 x double> @llvm.aarch64.sve.fmulx.u.nxv2f64(<vscale x 2 x i1> %pg,
529                                                                       <vscale x 2 x double> %a,
530                                                                       <vscale x 2 x double> %b)
531   ret <vscale x 2 x double> %out
535 ; FNMAD
538 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) {
539 ; CHECK-LABEL: fnmad_h:
540 ; CHECK:       // %bb.0:
541 ; CHECK-NEXT:    fnmad z0.h, p0/m, z1.h, z2.h
542 ; CHECK-NEXT:    ret
543   %out = call <vscale x 8 x half> @llvm.aarch64.sve.fnmla.u.nxv8f16(<vscale x 8 x i1> %pg,
544                                                                     <vscale x 8 x half> %c,
545                                                                     <vscale x 8 x half> %a,
546                                                                     <vscale x 8 x half> %b)
547   ret <vscale x 8 x half> %out
550 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) {
551 ; CHECK-LABEL: fnmad_s:
552 ; CHECK:       // %bb.0:
553 ; CHECK-NEXT:    fnmad z0.s, p0/m, z1.s, z2.s
554 ; CHECK-NEXT:    ret
555   %out = call <vscale x 4 x float> @llvm.aarch64.sve.fnmla.u.nxv4f32(<vscale x 4 x i1> %pg,
556                                                                      <vscale x 4 x float> %c,
557                                                                      <vscale x 4 x float> %a,
558                                                                      <vscale x 4 x float> %b)
559   ret <vscale x 4 x float> %out
562 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) {
563 ; CHECK-LABEL: fnmad_d:
564 ; CHECK:       // %bb.0:
565 ; CHECK-NEXT:    fnmad z0.d, p0/m, z1.d, z2.d
566 ; CHECK-NEXT:    ret
567   %out = call <vscale x 2 x double> @llvm.aarch64.sve.fnmla.u.nxv2f64(<vscale x 2 x i1> %pg,
568                                                                       <vscale x 2 x double> %c,
569                                                                       <vscale x 2 x double> %a,
570                                                                       <vscale x 2 x double> %b)
571   ret <vscale x 2 x double> %out
575 ; FNMLA
578 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) {
579 ; CHECK-LABEL: fnmla_h:
580 ; CHECK:       // %bb.0:
581 ; CHECK-NEXT:    fnmla z0.h, p0/m, z1.h, z2.h
582 ; CHECK-NEXT:    ret
583   %out = call <vscale x 8 x half> @llvm.aarch64.sve.fnmla.u.nxv8f16(<vscale x 8 x i1> %pg,
584                                                                     <vscale x 8 x half> %a,
585                                                                     <vscale x 8 x half> %b,
586                                                                     <vscale x 8 x half> %c)
587   ret <vscale x 8 x half> %out
590 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) {
591 ; CHECK-LABEL: fnmla_s:
592 ; CHECK:       // %bb.0:
593 ; CHECK-NEXT:    fnmla z0.s, p0/m, z1.s, z2.s
594 ; CHECK-NEXT:    ret
595   %out = call <vscale x 4 x float> @llvm.aarch64.sve.fnmla.u.nxv4f32(<vscale x 4 x i1> %pg,
596                                                                      <vscale x 4 x float> %a,
597                                                                      <vscale x 4 x float> %b,
598                                                                      <vscale x 4 x float> %c)
599   ret <vscale x 4 x float> %out
602 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) {
603 ; CHECK-LABEL: fnmla_d:
604 ; CHECK:       // %bb.0:
605 ; CHECK-NEXT:    fnmla z0.d, p0/m, z1.d, z2.d
606 ; CHECK-NEXT:    ret
607   %out = call <vscale x 2 x double> @llvm.aarch64.sve.fnmla.u.nxv2f64(<vscale x 2 x i1> %pg,
608                                                                       <vscale x 2 x double> %a,
609                                                                       <vscale x 2 x double> %b,
610                                                                       <vscale x 2 x double> %c)
611   ret <vscale x 2 x double> %out
615 ; FNMLS
618 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) {
619 ; CHECK-LABEL: fnmls_h:
620 ; CHECK:       // %bb.0:
621 ; CHECK-NEXT:    fnmls z0.h, p0/m, z1.h, z2.h
622 ; CHECK-NEXT:    ret
623   %out = call <vscale x 8 x half> @llvm.aarch64.sve.fnmls.u.nxv8f16(<vscale x 8 x i1> %pg,
624                                                                     <vscale x 8 x half> %a,
625                                                                     <vscale x 8 x half> %b,
626                                                                     <vscale x 8 x half> %c)
627   ret <vscale x 8 x half> %out
630 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) {
631 ; CHECK-LABEL: fnmls_s:
632 ; CHECK:       // %bb.0:
633 ; CHECK-NEXT:    fnmls z0.s, p0/m, z1.s, z2.s
634 ; CHECK-NEXT:    ret
635   %out = call <vscale x 4 x float> @llvm.aarch64.sve.fnmls.u.nxv4f32(<vscale x 4 x i1> %pg,
636                                                                      <vscale x 4 x float> %a,
637                                                                      <vscale x 4 x float> %b,
638                                                                      <vscale x 4 x float> %c)
639   ret <vscale x 4 x float> %out
642 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) {
643 ; CHECK-LABEL: fnmls_d:
644 ; CHECK:       // %bb.0:
645 ; CHECK-NEXT:    fnmls z0.d, p0/m, z1.d, z2.d
646 ; CHECK-NEXT:    ret
647   %out = call <vscale x 2 x double> @llvm.aarch64.sve.fnmls.u.nxv2f64(<vscale x 2 x i1> %pg,
648                                                                       <vscale x 2 x double> %a,
649                                                                       <vscale x 2 x double> %b,
650                                                                       <vscale x 2 x double> %c)
651   ret <vscale x 2 x double> %out
655 ; FNMSB
658 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) {
659 ; CHECK-LABEL: fnmsb_h:
660 ; CHECK:       // %bb.0:
661 ; CHECK-NEXT:    fnmsb z0.h, p0/m, z1.h, z2.h
662 ; CHECK-NEXT:    ret
663   %out = call <vscale x 8 x half> @llvm.aarch64.sve.fnmls.u.nxv8f16(<vscale x 8 x i1> %pg,
664                                                                     <vscale x 8 x half> %c,
665                                                                     <vscale x 8 x half> %a,
666                                                                     <vscale x 8 x half> %b)
667   ret <vscale x 8 x half> %out
670 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) {
671 ; CHECK-LABEL: fnmsb_s:
672 ; CHECK:       // %bb.0:
673 ; CHECK-NEXT:    fnmsb z0.s, p0/m, z1.s, z2.s
674 ; CHECK-NEXT:    ret
675   %out = call <vscale x 4 x float> @llvm.aarch64.sve.fnmls.u.nxv4f32(<vscale x 4 x i1> %pg,
676                                                                      <vscale x 4 x float> %c,
677                                                                      <vscale x 4 x float> %a,
678                                                                      <vscale x 4 x float> %b)
679   ret <vscale x 4 x float> %out
682 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) {
683 ; CHECK-LABEL: fnmsb_d:
684 ; CHECK:       // %bb.0:
685 ; CHECK-NEXT:    fnmsb z0.d, p0/m, z1.d, z2.d
686 ; CHECK-NEXT:    ret
687   %out = call <vscale x 2 x double> @llvm.aarch64.sve.fnmls.u.nxv2f64(<vscale x 2 x i1> %pg,
688                                                                       <vscale x 2 x double> %c,
689                                                                       <vscale x 2 x double> %a,
690                                                                       <vscale x 2 x double> %b)
691   ret <vscale x 2 x double> %out
695 ; FSUB
698 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) {
699 ; CHECK-LABEL: fsub_h:
700 ; CHECK:       // %bb.0:
701 ; CHECK-NEXT:    fsub z0.h, p0/m, z0.h, z1.h
702 ; CHECK-NEXT:    ret
703   %out = call <vscale x 8 x half> @llvm.aarch64.sve.fsub.u.nxv8f16(<vscale x 8 x i1> %pg,
704                                                                    <vscale x 8 x half> %a,
705                                                                    <vscale x 8 x half> %b)
706   ret <vscale x 8 x half> %out
709 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) {
710 ; CHECK-LABEL: fsub_s:
711 ; CHECK:       // %bb.0:
712 ; CHECK-NEXT:    fsub z0.s, p0/m, z0.s, z1.s
713 ; CHECK-NEXT:    ret
714   %out = call <vscale x 4 x float> @llvm.aarch64.sve.fsub.u.nxv4f32(<vscale x 4 x i1> %pg,
715                                                                     <vscale x 4 x float> %a,
716                                                                     <vscale x 4 x float> %b)
717   ret <vscale x 4 x float> %out
720 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) {
721 ; CHECK-LABEL: fsub_d:
722 ; CHECK:       // %bb.0:
723 ; CHECK-NEXT:    fsub z0.d, p0/m, z0.d, z1.d
724 ; CHECK-NEXT:    ret
725   %out = call <vscale x 2 x double> @llvm.aarch64.sve.fsub.u.nxv2f64(<vscale x 2 x i1> %pg,
726                                                                      <vscale x 2 x double> %a,
727                                                                      <vscale x 2 x double> %b)
728   ret <vscale x 2 x double> %out
732 ; FSUBR
735 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) {
736 ; CHECK-LABEL: fsubr_h:
737 ; CHECK:       // %bb.0:
738 ; CHECK-NEXT:    fsubr z0.h, p0/m, z0.h, z1.h
739 ; CHECK-NEXT:    ret
740   %out = call <vscale x 8 x half> @llvm.aarch64.sve.fsub.u.nxv8f16(<vscale x 8 x i1> %pg,
741                                                                    <vscale x 8 x half> %b,
742                                                                    <vscale x 8 x half> %a)
743   ret <vscale x 8 x half> %out
746 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) {
747 ; CHECK-LABEL: fsubr_s:
748 ; CHECK:       // %bb.0:
749 ; CHECK-NEXT:    fsubr z0.s, p0/m, z0.s, z1.s
750 ; CHECK-NEXT:    ret
751   %out = call <vscale x 4 x float> @llvm.aarch64.sve.fsub.u.nxv4f32(<vscale x 4 x i1> %pg,
752                                                                     <vscale x 4 x float> %b,
753                                                                     <vscale x 4 x float> %a)
754   ret <vscale x 4 x float> %out
757 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) {
758 ; CHECK-LABEL: fsubr_d:
759 ; CHECK:       // %bb.0:
760 ; CHECK-NEXT:    fsubr z0.d, p0/m, z0.d, z1.d
761 ; CHECK-NEXT:    ret
762   %out = call <vscale x 2 x double> @llvm.aarch64.sve.fsub.u.nxv2f64(<vscale x 2 x i1> %pg,
763                                                                      <vscale x 2 x double> %b,
764                                                                      <vscale x 2 x double> %a)
765   ret <vscale x 2 x double> %out
768 declare <vscale x 8 x half> @llvm.aarch64.sve.fabd.u.nxv8f16(<vscale x 8 x i1>, <vscale x 8 x half>, <vscale x 8 x half>)
769 declare <vscale x 4 x float> @llvm.aarch64.sve.fabd.u.nxv4f32(<vscale x 4 x i1>, <vscale x 4 x float>, <vscale x 4 x float>)
770 declare <vscale x 2 x double> @llvm.aarch64.sve.fabd.u.nxv2f64(<vscale x 2 x i1>, <vscale x 2 x double>, <vscale x 2 x double>)
772 declare <vscale x 8 x half> @llvm.aarch64.sve.fadd.u.nxv8f16(<vscale x 8 x i1>, <vscale x 8 x half>, <vscale x 8 x half>)
773 declare <vscale x 4 x float> @llvm.aarch64.sve.fadd.u.nxv4f32(<vscale x 4 x i1>, <vscale x 4 x float>, <vscale x 4 x float>)
774 declare <vscale x 2 x double> @llvm.aarch64.sve.fadd.u.nxv2f64(<vscale x 2 x i1>, <vscale x 2 x double>, <vscale x 2 x double>)
776 declare <vscale x 8 x half> @llvm.aarch64.sve.fdiv.u.nxv8f16(<vscale x 8 x i1>, <vscale x 8 x half>, <vscale x 8 x half>)
777 declare <vscale x 4 x float> @llvm.aarch64.sve.fdiv.u.nxv4f32(<vscale x 4 x i1>, <vscale x 4 x float>, <vscale x 4 x float>)
778 declare <vscale x 2 x double> @llvm.aarch64.sve.fdiv.u.nxv2f64(<vscale x 2 x i1>, <vscale x 2 x double>, <vscale x 2 x double>)
780 declare <vscale x 8 x half> @llvm.aarch64.sve.fmax.u.nxv8f16(<vscale x 8 x i1>, <vscale x 8 x half>, <vscale x 8 x half>)
781 declare <vscale x 4 x float> @llvm.aarch64.sve.fmax.u.nxv4f32(<vscale x 4 x i1>, <vscale x 4 x float>, <vscale x 4 x float>)
782 declare <vscale x 2 x double> @llvm.aarch64.sve.fmax.u.nxv2f64(<vscale x 2 x i1>, <vscale x 2 x double>, <vscale x 2 x double>)
784 declare <vscale x 8 x half> @llvm.aarch64.sve.fmaxnm.u.nxv8f16(<vscale x 8 x i1>, <vscale x 8 x half>, <vscale x 8 x half>)
785 declare <vscale x 4 x float> @llvm.aarch64.sve.fmaxnm.u.nxv4f32(<vscale x 4 x i1>, <vscale x 4 x float>, <vscale x 4 x float>)
786 declare <vscale x 2 x double> @llvm.aarch64.sve.fmaxnm.u.nxv2f64(<vscale x 2 x i1>, <vscale x 2 x double>, <vscale x 2 x double>)
788 declare <vscale x 8 x half> @llvm.aarch64.sve.fmin.u.nxv8f16(<vscale x 8 x i1>, <vscale x 8 x half>, <vscale x 8 x half>)
789 declare <vscale x 4 x float> @llvm.aarch64.sve.fmin.u.nxv4f32(<vscale x 4 x i1>, <vscale x 4 x float>, <vscale x 4 x float>)
790 declare <vscale x 2 x double> @llvm.aarch64.sve.fmin.u.nxv2f64(<vscale x 2 x i1>, <vscale x 2 x double>, <vscale x 2 x double>)
792 declare <vscale x 8 x half> @llvm.aarch64.sve.fminnm.u.nxv8f16(<vscale x 8 x i1>, <vscale x 8 x half>, <vscale x 8 x half>)
793 declare <vscale x 4 x float> @llvm.aarch64.sve.fminnm.u.nxv4f32(<vscale x 4 x i1>, <vscale x 4 x float>, <vscale x 4 x float>)
794 declare <vscale x 2 x double> @llvm.aarch64.sve.fminnm.u.nxv2f64(<vscale x 2 x i1>, <vscale x 2 x double>, <vscale x 2 x double>)
796 declare <vscale x 8 x half> @llvm.aarch64.sve.fmla.u.nxv8f16(<vscale x 8 x i1>, <vscale x 8 x half>, <vscale x 8 x half>, <vscale x 8 x half>)
797 declare <vscale x 4 x float> @llvm.aarch64.sve.fmla.u.nxv4f32(<vscale x 4 x i1>, <vscale x 4 x float>, <vscale x 4 x float>, <vscale x 4 x float>)
798 declare <vscale x 2 x double> @llvm.aarch64.sve.fmla.u.nxv2f64(<vscale x 2 x i1>, <vscale x 2 x double>, <vscale x 2 x double>, <vscale x 2 x double>)
800 declare <vscale x 8 x half> @llvm.aarch64.sve.fmls.u.nxv8f16(<vscale x 8 x i1>, <vscale x 8 x half>, <vscale x 8 x half>, <vscale x 8 x half>)
801 declare <vscale x 4 x float> @llvm.aarch64.sve.fmls.u.nxv4f32(<vscale x 4 x i1>, <vscale x 4 x float>, <vscale x 4 x float>, <vscale x 4 x float>)
802 declare <vscale x 2 x double> @llvm.aarch64.sve.fmls.u.nxv2f64(<vscale x 2 x i1>, <vscale x 2 x double>, <vscale x 2 x double>, <vscale x 2 x double>)
804 declare <vscale x 8 x half> @llvm.aarch64.sve.fmul.u.nxv8f16(<vscale x 8 x i1>, <vscale x 8 x half>, <vscale x 8 x half>)
805 declare <vscale x 4 x float> @llvm.aarch64.sve.fmul.u.nxv4f32(<vscale x 4 x i1>, <vscale x 4 x float>, <vscale x 4 x float>)
806 declare <vscale x 2 x double> @llvm.aarch64.sve.fmul.u.nxv2f64(<vscale x 2 x i1>, <vscale x 2 x double>, <vscale x 2 x double>)
808 declare <vscale x 8 x half> @llvm.aarch64.sve.fmulx.u.nxv8f16(<vscale x 8 x i1>, <vscale x 8 x half>, <vscale x 8 x half>)
809 declare <vscale x 4 x float> @llvm.aarch64.sve.fmulx.u.nxv4f32(<vscale x 4 x i1>, <vscale x 4 x float>, <vscale x 4 x float>)
810 declare <vscale x 2 x double> @llvm.aarch64.sve.fmulx.u.nxv2f64(<vscale x 2 x i1>, <vscale x 2 x double>, <vscale x 2 x double>)
812 declare <vscale x 8 x half> @llvm.aarch64.sve.fnmla.u.nxv8f16(<vscale x 8 x i1>, <vscale x 8 x half>, <vscale x 8 x half>, <vscale x 8 x half>)
813 declare <vscale x 4 x float> @llvm.aarch64.sve.fnmla.u.nxv4f32(<vscale x 4 x i1>, <vscale x 4 x float>, <vscale x 4 x float>, <vscale x 4 x float>)
814 declare <vscale x 2 x double> @llvm.aarch64.sve.fnmla.u.nxv2f64(<vscale x 2 x i1>, <vscale x 2 x double>, <vscale x 2 x double>, <vscale x 2 x double>)
816 declare <vscale x 8 x half> @llvm.aarch64.sve.fnmls.u.nxv8f16(<vscale x 8 x i1>, <vscale x 8 x half>, <vscale x 8 x half>, <vscale x 8 x half>)
817 declare <vscale x 4 x float> @llvm.aarch64.sve.fnmls.u.nxv4f32(<vscale x 4 x i1>, <vscale x 4 x float>, <vscale x 4 x float>, <vscale x 4 x float>)
818 declare <vscale x 2 x double> @llvm.aarch64.sve.fnmls.u.nxv2f64(<vscale x 2 x i1>, <vscale x 2 x double>, <vscale x 2 x double>, <vscale x 2 x double>)
820 declare <vscale x 8 x half> @llvm.aarch64.sve.fsub.u.nxv8f16(<vscale x 8 x i1>, <vscale x 8 x half>, <vscale x 8 x half>)
821 declare <vscale x 4 x float> @llvm.aarch64.sve.fsub.u.nxv4f32(<vscale x 4 x i1>, <vscale x 4 x float>, <vscale x 4 x float>)
822 declare <vscale x 2 x double> @llvm.aarch64.sve.fsub.u.nxv2f64(<vscale x 2 x i1>, <vscale x 2 x double>, <vscale x 2 x double>)