1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2 ; RUN: llc < %s | FileCheck %s
3 ; RUN: llc -use-constant-fp-for-scalable-splat < %s | FileCheck %s
5 target triple = "aarch64-unknown-linux-gnu"
11 define <vscale x 8 x half> @fadd_h_immhalf(<vscale x 8 x half> %a) #0 {
12 ; CHECK-LABEL: fadd_h_immhalf:
14 ; CHECK-NEXT: ptrue p0.h
15 ; CHECK-NEXT: fadd z0.h, p0/m, z0.h, #0.5
17 %out = fadd <vscale x 8 x half> %a, splat(half 0.500000e+00)
18 ret <vscale x 8 x half> %out
21 define <vscale x 8 x half> @fadd_h_immone(<vscale x 8 x half> %a) #0 {
22 ; CHECK-LABEL: fadd_h_immone:
24 ; CHECK-NEXT: ptrue p0.h
25 ; CHECK-NEXT: fadd z0.h, p0/m, z0.h, #1.0
27 %out = fadd <vscale x 8 x half> %a, splat(half 1.000000e+00)
28 ret <vscale x 8 x half> %out
31 define <vscale x 4 x half> @fadd_4h_immhalf(<vscale x 4 x half> %a) #0 {
32 ; CHECK-LABEL: fadd_4h_immhalf:
34 ; CHECK-NEXT: ptrue p0.s
35 ; CHECK-NEXT: fadd z0.h, p0/m, z0.h, #0.5
37 %out = fadd <vscale x 4 x half> %a, splat(half 0.500000e+00)
38 ret <vscale x 4 x half> %out
41 define <vscale x 4 x half> @fadd_4h_immone(<vscale x 4 x half> %a) #0 {
42 ; CHECK-LABEL: fadd_4h_immone:
44 ; CHECK-NEXT: ptrue p0.s
45 ; CHECK-NEXT: fadd z0.h, p0/m, z0.h, #1.0
47 %out = fadd <vscale x 4 x half> %a, splat(half 1.000000e+00)
48 ret <vscale x 4 x half> %out
51 define <vscale x 2 x half> @fadd_2h_immhalf(<vscale x 2 x half> %a) #0 {
52 ; CHECK-LABEL: fadd_2h_immhalf:
54 ; CHECK-NEXT: ptrue p0.d
55 ; CHECK-NEXT: fadd z0.h, p0/m, z0.h, #0.5
57 %out = fadd <vscale x 2 x half> %a, splat(half 0.500000e+00)
58 ret <vscale x 2 x half> %out
61 define <vscale x 2 x half> @fadd_2h_immone(<vscale x 2 x half> %a) #0 {
62 ; CHECK-LABEL: fadd_2h_immone:
64 ; CHECK-NEXT: ptrue p0.d
65 ; CHECK-NEXT: fadd z0.h, p0/m, z0.h, #1.0
67 %out = fadd <vscale x 2 x half> %a, splat(half 1.000000e+00)
68 ret <vscale x 2 x half> %out
71 define <vscale x 4 x float> @fadd_s_immhalf(<vscale x 4 x float> %a) #0 {
72 ; CHECK-LABEL: fadd_s_immhalf:
74 ; CHECK-NEXT: ptrue p0.s
75 ; CHECK-NEXT: fadd z0.s, p0/m, z0.s, #0.5
77 %out = fadd <vscale x 4 x float> %a, splat(float 0.500000e+00)
78 ret <vscale x 4 x float> %out
81 define <vscale x 4 x float> @fadd_s_immone(<vscale x 4 x float> %a) #0 {
82 ; CHECK-LABEL: fadd_s_immone:
84 ; CHECK-NEXT: ptrue p0.s
85 ; CHECK-NEXT: fadd z0.s, p0/m, z0.s, #1.0
87 %out = fadd <vscale x 4 x float> %a, splat(float 1.000000e+00)
88 ret <vscale x 4 x float> %out
91 define <vscale x 2 x float> @fadd_2s_immhalf(<vscale x 2 x float> %a) #0 {
92 ; CHECK-LABEL: fadd_2s_immhalf:
94 ; CHECK-NEXT: ptrue p0.d
95 ; CHECK-NEXT: fadd z0.s, p0/m, z0.s, #0.5
97 %out = fadd <vscale x 2 x float> %a, splat(float 0.500000e+00)
98 ret <vscale x 2 x float> %out
101 define <vscale x 2 x float> @fadd_2s_immone(<vscale x 2 x float> %a) #0 {
102 ; CHECK-LABEL: fadd_2s_immone:
104 ; CHECK-NEXT: ptrue p0.d
105 ; CHECK-NEXT: fadd z0.s, p0/m, z0.s, #1.0
107 %out = fadd <vscale x 2 x float> %a, splat(float 1.000000e+00)
108 ret <vscale x 2 x float> %out
112 define <vscale x 2 x double> @fadd_d_immhalf(<vscale x 2 x double> %a) #0 {
113 ; CHECK-LABEL: fadd_d_immhalf:
115 ; CHECK-NEXT: ptrue p0.d
116 ; CHECK-NEXT: fadd z0.d, p0/m, z0.d, #0.5
118 %out = fadd <vscale x 2 x double> %a, splat(double 0.500000e+00)
119 ret <vscale x 2 x double> %out
122 define <vscale x 2 x double> @fadd_d_immone(<vscale x 2 x double> %a) #0 {
123 ; CHECK-LABEL: fadd_d_immone:
125 ; CHECK-NEXT: ptrue p0.d
126 ; CHECK-NEXT: fadd z0.d, p0/m, z0.d, #1.0
128 %out = fadd <vscale x 2 x double> %a, splat(double 1.000000e+00)
129 ret <vscale x 2 x double> %out
136 define <vscale x 8 x half> @fmax_h_immzero(<vscale x 8 x half> %a) #0 {
137 ; CHECK-LABEL: fmax_h_immzero:
139 ; CHECK-NEXT: ptrue p0.h
140 ; CHECK-NEXT: fmax z0.h, p0/m, z0.h, #0.0
142 %out = call <vscale x 8 x half> @llvm.maximum.nxv8f16(<vscale x 8 x half> %a, <vscale x 8 x half> zeroinitializer)
143 ret <vscale x 8 x half> %out
146 define <vscale x 8 x half> @fmax_h_immone(<vscale x 8 x half> %a) #0 {
147 ; CHECK-LABEL: fmax_h_immone:
149 ; CHECK-NEXT: ptrue p0.h
150 ; CHECK-NEXT: fmax z0.h, p0/m, z0.h, #1.0
152 %out = call <vscale x 8 x half> @llvm.maximum.nxv8f16(<vscale x 8 x half> %a, <vscale x 8 x half> splat(half 1.000000e+00))
153 ret <vscale x 8 x half> %out
156 define <vscale x 4 x half> @fmax_4h_immzero(<vscale x 4 x half> %a) #0 {
157 ; CHECK-LABEL: fmax_4h_immzero:
159 ; CHECK-NEXT: ptrue p0.s
160 ; CHECK-NEXT: fmax z0.h, p0/m, z0.h, #0.0
162 %out = call <vscale x 4 x half> @llvm.maximum.nxv4f16(<vscale x 4 x half> %a, <vscale x 4 x half> zeroinitializer)
163 ret <vscale x 4 x half> %out
166 define <vscale x 4 x half> @fmax_4h_immone(<vscale x 4 x half> %a) #0 {
167 ; CHECK-LABEL: fmax_4h_immone:
169 ; CHECK-NEXT: ptrue p0.s
170 ; CHECK-NEXT: fmax z0.h, p0/m, z0.h, #1.0
172 %out = call <vscale x 4 x half> @llvm.maximum.nxv4f16(<vscale x 4 x half> %a, <vscale x 4 x half> splat(half 1.000000e+00))
173 ret <vscale x 4 x half> %out
176 define <vscale x 2 x half> @fmax_2h_immzero(<vscale x 2 x half> %a) #0 {
177 ; CHECK-LABEL: fmax_2h_immzero:
179 ; CHECK-NEXT: ptrue p0.d
180 ; CHECK-NEXT: fmax z0.h, p0/m, z0.h, #0.0
182 %out = call <vscale x 2 x half> @llvm.maximum.nxv2f16(<vscale x 2 x half> %a, <vscale x 2 x half> zeroinitializer)
183 ret <vscale x 2 x half> %out
186 define <vscale x 2 x half> @fmax_2h_immone(<vscale x 2 x half> %a) #0 {
187 ; CHECK-LABEL: fmax_2h_immone:
189 ; CHECK-NEXT: ptrue p0.d
190 ; CHECK-NEXT: fmax z0.h, p0/m, z0.h, #1.0
192 %out = call <vscale x 2 x half> @llvm.maximum.nxv2f16(<vscale x 2 x half> %a, <vscale x 2 x half> splat(half 1.000000e+00))
193 ret <vscale x 2 x half> %out
196 define <vscale x 4 x float> @fmax_s_immzero(<vscale x 4 x float> %a) #0 {
197 ; CHECK-LABEL: fmax_s_immzero:
199 ; CHECK-NEXT: ptrue p0.s
200 ; CHECK-NEXT: fmax z0.s, p0/m, z0.s, #0.0
202 %out = call <vscale x 4 x float> @llvm.maximum.nxv4f32(<vscale x 4 x float> %a, <vscale x 4 x float> zeroinitializer)
203 ret <vscale x 4 x float> %out
206 define <vscale x 4 x float> @fmax_s_immone(<vscale x 4 x float> %a) #0 {
207 ; CHECK-LABEL: fmax_s_immone:
209 ; CHECK-NEXT: ptrue p0.s
210 ; CHECK-NEXT: fmax z0.s, p0/m, z0.s, #1.0
212 %out = call <vscale x 4 x float> @llvm.maximum.nxv4f32(<vscale x 4 x float> %a, <vscale x 4 x float> splat(float 1.000000e+00))
213 ret <vscale x 4 x float> %out
216 define <vscale x 2 x float> @fmax_2s_immzero(<vscale x 2 x float> %a) #0 {
217 ; CHECK-LABEL: fmax_2s_immzero:
219 ; CHECK-NEXT: ptrue p0.d
220 ; CHECK-NEXT: fmax z0.s, p0/m, z0.s, #0.0
222 %out = call <vscale x 2 x float> @llvm.maximum.nxv2f32(<vscale x 2 x float> %a, <vscale x 2 x float> zeroinitializer)
223 ret <vscale x 2 x float> %out
226 define <vscale x 2 x float> @fmax_2s_immone(<vscale x 2 x float> %a) #0 {
227 ; CHECK-LABEL: fmax_2s_immone:
229 ; CHECK-NEXT: ptrue p0.d
230 ; CHECK-NEXT: fmax z0.s, p0/m, z0.s, #1.0
232 %out = call <vscale x 2 x float> @llvm.maximum.nxv2f32(<vscale x 2 x float> %a, <vscale x 2 x float> splat(float 1.000000e+00))
233 ret <vscale x 2 x float> %out
236 define <vscale x 2 x double> @fmax_d_immzero(<vscale x 2 x double> %a) #0 {
237 ; CHECK-LABEL: fmax_d_immzero:
239 ; CHECK-NEXT: ptrue p0.d
240 ; CHECK-NEXT: fmax z0.d, p0/m, z0.d, #0.0
242 %out = call <vscale x 2 x double> @llvm.maximum.nxv2f64(<vscale x 2 x double> %a, <vscale x 2 x double> zeroinitializer)
243 ret <vscale x 2 x double> %out
246 define <vscale x 2 x double> @fmax_d_immone(<vscale x 2 x double> %a) #0 {
247 ; CHECK-LABEL: fmax_d_immone:
249 ; CHECK-NEXT: ptrue p0.d
250 ; CHECK-NEXT: fmax z0.d, p0/m, z0.d, #1.0
252 %out = call <vscale x 2 x double> @llvm.maximum.nxv2f64(<vscale x 2 x double> %a, <vscale x 2 x double> splat(double 1.000000e+00))
253 ret <vscale x 2 x double> %out
260 define <vscale x 8 x half> @fmaxnm_h_immzero(<vscale x 8 x half> %a) #0 {
261 ; CHECK-LABEL: fmaxnm_h_immzero:
263 ; CHECK-NEXT: ptrue p0.h
264 ; CHECK-NEXT: fmaxnm z0.h, p0/m, z0.h, #0.0
266 %out = call <vscale x 8 x half> @llvm.maxnum.nxv8f16(<vscale x 8 x half> %a, <vscale x 8 x half> zeroinitializer)
267 ret <vscale x 8 x half> %out
270 define <vscale x 8 x half> @fmaxnm_h_immone(<vscale x 8 x half> %a) #0 {
271 ; CHECK-LABEL: fmaxnm_h_immone:
273 ; CHECK-NEXT: ptrue p0.h
274 ; CHECK-NEXT: fmaxnm z0.h, p0/m, z0.h, #1.0
276 %out = call <vscale x 8 x half> @llvm.maxnum.nxv8f16(<vscale x 8 x half> %a, <vscale x 8 x half> splat(half 1.000000e+00))
277 ret <vscale x 8 x half> %out
280 define <vscale x 4 x half> @fmaxnm_4h_immzero(<vscale x 4 x half> %a) #0 {
281 ; CHECK-LABEL: fmaxnm_4h_immzero:
283 ; CHECK-NEXT: ptrue p0.s
284 ; CHECK-NEXT: fmaxnm z0.h, p0/m, z0.h, #0.0
286 %out = call <vscale x 4 x half> @llvm.maxnum.nxv4f16(<vscale x 4 x half> %a, <vscale x 4 x half> zeroinitializer)
287 ret <vscale x 4 x half> %out
290 define <vscale x 4 x half> @fmaxnm_4h_immone(<vscale x 4 x half> %a) #0 {
291 ; CHECK-LABEL: fmaxnm_4h_immone:
293 ; CHECK-NEXT: ptrue p0.s
294 ; CHECK-NEXT: fmaxnm z0.h, p0/m, z0.h, #1.0
296 %out = call <vscale x 4 x half> @llvm.maxnum.nxv4f16(<vscale x 4 x half> %a, <vscale x 4 x half> splat(half 1.000000e+00))
297 ret <vscale x 4 x half> %out
300 define <vscale x 2 x half> @fmaxnm_2h_immzero(<vscale x 2 x half> %a) #0 {
301 ; CHECK-LABEL: fmaxnm_2h_immzero:
303 ; CHECK-NEXT: ptrue p0.d
304 ; CHECK-NEXT: fmaxnm z0.h, p0/m, z0.h, #0.0
306 %out = call <vscale x 2 x half> @llvm.maxnum.nxv2f16(<vscale x 2 x half> %a, <vscale x 2 x half> zeroinitializer)
307 ret <vscale x 2 x half> %out
310 define <vscale x 2 x half> @fmaxnm_2h_immone(<vscale x 2 x half> %a) #0 {
311 ; CHECK-LABEL: fmaxnm_2h_immone:
313 ; CHECK-NEXT: ptrue p0.d
314 ; CHECK-NEXT: fmaxnm z0.h, p0/m, z0.h, #1.0
316 %out = call <vscale x 2 x half> @llvm.maxnum.nxv2f16(<vscale x 2 x half> %a, <vscale x 2 x half> splat(half 1.000000e+00))
317 ret <vscale x 2 x half> %out
320 define <vscale x 4 x float> @fmaxnm_s_immzero(<vscale x 4 x float> %a) #0 {
321 ; CHECK-LABEL: fmaxnm_s_immzero:
323 ; CHECK-NEXT: ptrue p0.s
324 ; CHECK-NEXT: fmaxnm z0.s, p0/m, z0.s, #0.0
326 %out = call <vscale x 4 x float> @llvm.maxnum.nxv4f32(<vscale x 4 x float> %a, <vscale x 4 x float> zeroinitializer)
327 ret <vscale x 4 x float> %out
330 define <vscale x 4 x float> @fmaxnm_s_immone(<vscale x 4 x float> %a) #0 {
331 ; CHECK-LABEL: fmaxnm_s_immone:
333 ; CHECK-NEXT: ptrue p0.s
334 ; CHECK-NEXT: fmaxnm z0.s, p0/m, z0.s, #1.0
336 %out = call <vscale x 4 x float> @llvm.maxnum.nxv4f32(<vscale x 4 x float> %a, <vscale x 4 x float> splat(float 1.000000e+00))
337 ret <vscale x 4 x float> %out
340 define <vscale x 2 x float> @fmaxnm_2s_immzero(<vscale x 2 x float> %a) #0 {
341 ; CHECK-LABEL: fmaxnm_2s_immzero:
343 ; CHECK-NEXT: ptrue p0.d
344 ; CHECK-NEXT: fmaxnm z0.s, p0/m, z0.s, #0.0
346 %out = call <vscale x 2 x float> @llvm.maxnum.nxv2f32(<vscale x 2 x float> %a, <vscale x 2 x float> zeroinitializer)
347 ret <vscale x 2 x float> %out
350 define <vscale x 2 x float> @fmaxnm_2s_immone(<vscale x 2 x float> %a) #0 {
351 ; CHECK-LABEL: fmaxnm_2s_immone:
353 ; CHECK-NEXT: ptrue p0.d
354 ; CHECK-NEXT: fmaxnm z0.s, p0/m, z0.s, #1.0
356 %out = call <vscale x 2 x float> @llvm.maxnum.nxv2f32(<vscale x 2 x float> %a, <vscale x 2 x float> splat(float 1.000000e+00))
357 ret <vscale x 2 x float> %out
360 define <vscale x 2 x double> @fmaxnm_d_immzero(<vscale x 2 x double> %a) #0 {
361 ; CHECK-LABEL: fmaxnm_d_immzero:
363 ; CHECK-NEXT: ptrue p0.d
364 ; CHECK-NEXT: fmaxnm z0.d, p0/m, z0.d, #0.0
366 %out = call <vscale x 2 x double> @llvm.maxnum.nxv2f64(<vscale x 2 x double> %a, <vscale x 2 x double> zeroinitializer)
367 ret <vscale x 2 x double> %out
370 define <vscale x 2 x double> @fmaxnm_d_immone(<vscale x 2 x double> %a) #0 {
371 ; CHECK-LABEL: fmaxnm_d_immone:
373 ; CHECK-NEXT: ptrue p0.d
374 ; CHECK-NEXT: fmaxnm z0.d, p0/m, z0.d, #1.0
376 %out = call <vscale x 2 x double> @llvm.maxnum.nxv2f64(<vscale x 2 x double> %a, <vscale x 2 x double> splat(double 1.000000e+00))
377 ret <vscale x 2 x double> %out
384 define <vscale x 8 x half> @fmin_h_immzero(<vscale x 8 x half> %a) #0 {
385 ; CHECK-LABEL: fmin_h_immzero:
387 ; CHECK-NEXT: ptrue p0.h
388 ; CHECK-NEXT: fmin z0.h, p0/m, z0.h, #0.0
390 %out = call <vscale x 8 x half> @llvm.minimum.nxv8f16(<vscale x 8 x half> %a, <vscale x 8 x half> zeroinitializer)
391 ret <vscale x 8 x half> %out
394 define <vscale x 8 x half> @fmin_h_immone(<vscale x 8 x half> %a) #0 {
395 ; CHECK-LABEL: fmin_h_immone:
397 ; CHECK-NEXT: ptrue p0.h
398 ; CHECK-NEXT: fmin z0.h, p0/m, z0.h, #1.0
400 %out = call <vscale x 8 x half> @llvm.minimum.nxv8f16(<vscale x 8 x half> %a, <vscale x 8 x half> splat(half 1.000000e+00))
401 ret <vscale x 8 x half> %out
404 define <vscale x 4 x half> @fmin_4h_immzero(<vscale x 4 x half> %a) #0 {
405 ; CHECK-LABEL: fmin_4h_immzero:
407 ; CHECK-NEXT: ptrue p0.s
408 ; CHECK-NEXT: fmin z0.h, p0/m, z0.h, #0.0
410 %out = call <vscale x 4 x half> @llvm.minimum.nxv4f16(<vscale x 4 x half> %a, <vscale x 4 x half> zeroinitializer)
411 ret <vscale x 4 x half> %out
414 define <vscale x 4 x half> @fmin_4h_immone(<vscale x 4 x half> %a) #0 {
415 ; CHECK-LABEL: fmin_4h_immone:
417 ; CHECK-NEXT: ptrue p0.s
418 ; CHECK-NEXT: fmin z0.h, p0/m, z0.h, #1.0
420 %out = call <vscale x 4 x half> @llvm.minimum.nxv4f16(<vscale x 4 x half> %a, <vscale x 4 x half> splat(half 1.000000e+00))
421 ret <vscale x 4 x half> %out
424 define <vscale x 2 x half> @fmin_2h_immzero(<vscale x 2 x half> %a) #0 {
425 ; CHECK-LABEL: fmin_2h_immzero:
427 ; CHECK-NEXT: ptrue p0.d
428 ; CHECK-NEXT: fmin z0.h, p0/m, z0.h, #0.0
430 %out = call <vscale x 2 x half> @llvm.minimum.nxv2f16(<vscale x 2 x half> %a, <vscale x 2 x half> zeroinitializer)
431 ret <vscale x 2 x half> %out
434 define <vscale x 2 x half> @fmin_2h_immone(<vscale x 2 x half> %a) #0 {
435 ; CHECK-LABEL: fmin_2h_immone:
437 ; CHECK-NEXT: ptrue p0.d
438 ; CHECK-NEXT: fmin z0.h, p0/m, z0.h, #1.0
440 %out = call <vscale x 2 x half> @llvm.minimum.nxv2f16(<vscale x 2 x half> %a, <vscale x 2 x half> splat(half 1.000000e+00))
441 ret <vscale x 2 x half> %out
444 define <vscale x 4 x float> @fmin_s_immzero(<vscale x 4 x float> %a) #0 {
445 ; CHECK-LABEL: fmin_s_immzero:
447 ; CHECK-NEXT: ptrue p0.s
448 ; CHECK-NEXT: fmin z0.s, p0/m, z0.s, #0.0
450 %out = call <vscale x 4 x float> @llvm.minimum.nxv4f32(<vscale x 4 x float> %a, <vscale x 4 x float> zeroinitializer)
451 ret <vscale x 4 x float> %out
454 define <vscale x 4 x float> @fmin_s_immone(<vscale x 4 x float> %a) #0 {
455 ; CHECK-LABEL: fmin_s_immone:
457 ; CHECK-NEXT: ptrue p0.s
458 ; CHECK-NEXT: fmin z0.s, p0/m, z0.s, #1.0
460 %out = call <vscale x 4 x float> @llvm.minimum.nxv4f32(<vscale x 4 x float> %a, <vscale x 4 x float> splat(float 1.000000e+00))
461 ret <vscale x 4 x float> %out
464 define <vscale x 2 x float> @fmin_2s_immzero(<vscale x 2 x float> %a) #0 {
465 ; CHECK-LABEL: fmin_2s_immzero:
467 ; CHECK-NEXT: ptrue p0.d
468 ; CHECK-NEXT: fmin z0.s, p0/m, z0.s, #0.0
470 %out = call <vscale x 2 x float> @llvm.minimum.nxv2f32(<vscale x 2 x float> %a, <vscale x 2 x float> zeroinitializer)
471 ret <vscale x 2 x float> %out
474 define <vscale x 2 x float> @fmin_2s_immone(<vscale x 2 x float> %a) #0 {
475 ; CHECK-LABEL: fmin_2s_immone:
477 ; CHECK-NEXT: ptrue p0.d
478 ; CHECK-NEXT: fmin z0.s, p0/m, z0.s, #1.0
480 %out = call <vscale x 2 x float> @llvm.minimum.nxv2f32(<vscale x 2 x float> %a, <vscale x 2 x float> splat(float 1.000000e+00))
481 ret <vscale x 2 x float> %out
484 define <vscale x 2 x double> @fmin_d_immzero(<vscale x 2 x double> %a) #0 {
485 ; CHECK-LABEL: fmin_d_immzero:
487 ; CHECK-NEXT: ptrue p0.d
488 ; CHECK-NEXT: fmin z0.d, p0/m, z0.d, #0.0
490 %out = call <vscale x 2 x double> @llvm.minimum.nxv2f64(<vscale x 2 x double> %a, <vscale x 2 x double> zeroinitializer)
491 ret <vscale x 2 x double> %out
494 define <vscale x 2 x double> @fmin_d_immone(<vscale x 2 x double> %a) #0 {
495 ; CHECK-LABEL: fmin_d_immone:
497 ; CHECK-NEXT: ptrue p0.d
498 ; CHECK-NEXT: fmin z0.d, p0/m, z0.d, #1.0
500 %out = call <vscale x 2 x double> @llvm.minimum.nxv2f64(<vscale x 2 x double> %a, <vscale x 2 x double> splat(double 1.000000e+00))
501 ret <vscale x 2 x double> %out
508 define <vscale x 8 x half> @fminnm_h_immzero(<vscale x 8 x half> %a) #0 {
509 ; CHECK-LABEL: fminnm_h_immzero:
511 ; CHECK-NEXT: ptrue p0.h
512 ; CHECK-NEXT: fminnm z0.h, p0/m, z0.h, #0.0
514 %out = call <vscale x 8 x half> @llvm.minnum.nxv8f16(<vscale x 8 x half> %a, <vscale x 8 x half> zeroinitializer)
515 ret <vscale x 8 x half> %out
518 define <vscale x 8 x half> @fminnm_h_immone(<vscale x 8 x half> %a) #0 {
519 ; CHECK-LABEL: fminnm_h_immone:
521 ; CHECK-NEXT: ptrue p0.h
522 ; CHECK-NEXT: fminnm z0.h, p0/m, z0.h, #1.0
524 %out = call <vscale x 8 x half> @llvm.minnum.nxv8f16(<vscale x 8 x half> %a, <vscale x 8 x half> splat(half 1.000000e+00))
525 ret <vscale x 8 x half> %out
528 define <vscale x 4 x half> @fminnm_4h_immzero(<vscale x 4 x half> %a) #0 {
529 ; CHECK-LABEL: fminnm_4h_immzero:
531 ; CHECK-NEXT: ptrue p0.s
532 ; CHECK-NEXT: fminnm z0.h, p0/m, z0.h, #0.0
534 %out = call <vscale x 4 x half> @llvm.minnum.nxv4f16(<vscale x 4 x half> %a, <vscale x 4 x half> zeroinitializer)
535 ret <vscale x 4 x half> %out
538 define <vscale x 4 x half> @fminnm_4h_immone(<vscale x 4 x half> %a) #0 {
539 ; CHECK-LABEL: fminnm_4h_immone:
541 ; CHECK-NEXT: ptrue p0.s
542 ; CHECK-NEXT: fminnm z0.h, p0/m, z0.h, #1.0
544 %out = call <vscale x 4 x half> @llvm.minnum.nxv4f16(<vscale x 4 x half> %a, <vscale x 4 x half> splat(half 1.000000e+00))
545 ret <vscale x 4 x half> %out
548 define <vscale x 2 x half> @fminnm_2h_immzero(<vscale x 2 x half> %a) #0 {
549 ; CHECK-LABEL: fminnm_2h_immzero:
551 ; CHECK-NEXT: ptrue p0.d
552 ; CHECK-NEXT: fminnm z0.h, p0/m, z0.h, #0.0
554 %out = call <vscale x 2 x half> @llvm.minnum.nxv2f16(<vscale x 2 x half> %a, <vscale x 2 x half> zeroinitializer)
555 ret <vscale x 2 x half> %out
558 define <vscale x 2 x half> @fminnm_2h_immone(<vscale x 2 x half> %a) #0 {
559 ; CHECK-LABEL: fminnm_2h_immone:
561 ; CHECK-NEXT: ptrue p0.d
562 ; CHECK-NEXT: fminnm z0.h, p0/m, z0.h, #1.0
564 %out = call <vscale x 2 x half> @llvm.minnum.nxv2f16(<vscale x 2 x half> %a, <vscale x 2 x half> splat(half 1.000000e+00))
565 ret <vscale x 2 x half> %out
568 define <vscale x 4 x float> @fminnm_s_immzero(<vscale x 4 x float> %a) #0 {
569 ; CHECK-LABEL: fminnm_s_immzero:
571 ; CHECK-NEXT: ptrue p0.s
572 ; CHECK-NEXT: fminnm z0.s, p0/m, z0.s, #0.0
574 %out = call <vscale x 4 x float> @llvm.minnum.nxv4f32(<vscale x 4 x float> %a, <vscale x 4 x float> zeroinitializer)
575 ret <vscale x 4 x float> %out
578 define <vscale x 4 x float> @fminnm_s_immone(<vscale x 4 x float> %a) #0 {
579 ; CHECK-LABEL: fminnm_s_immone:
581 ; CHECK-NEXT: ptrue p0.s
582 ; CHECK-NEXT: fminnm z0.s, p0/m, z0.s, #1.0
584 %out = call <vscale x 4 x float> @llvm.minnum.nxv4f32(<vscale x 4 x float> %a, <vscale x 4 x float> splat(float 1.000000e+00))
585 ret <vscale x 4 x float> %out
588 define <vscale x 2 x float> @fminnm_2s_immzero(<vscale x 2 x float> %a) #0 {
589 ; CHECK-LABEL: fminnm_2s_immzero:
591 ; CHECK-NEXT: ptrue p0.d
592 ; CHECK-NEXT: fminnm z0.s, p0/m, z0.s, #0.0
594 %out = call <vscale x 2 x float> @llvm.minnum.nxv2f32(<vscale x 2 x float> %a, <vscale x 2 x float> zeroinitializer)
595 ret <vscale x 2 x float> %out
598 define <vscale x 2 x float> @fminnm_2s_immone(<vscale x 2 x float> %a) #0 {
599 ; CHECK-LABEL: fminnm_2s_immone:
601 ; CHECK-NEXT: ptrue p0.d
602 ; CHECK-NEXT: fminnm z0.s, p0/m, z0.s, #1.0
604 %out = call <vscale x 2 x float> @llvm.minnum.nxv2f32(<vscale x 2 x float> %a, <vscale x 2 x float> splat(float 1.000000e+00))
605 ret <vscale x 2 x float> %out
608 define <vscale x 2 x double> @fminnm_d_immzero(<vscale x 2 x double> %a) #0 {
609 ; CHECK-LABEL: fminnm_d_immzero:
611 ; CHECK-NEXT: ptrue p0.d
612 ; CHECK-NEXT: fminnm z0.d, p0/m, z0.d, #0.0
614 %out = call <vscale x 2 x double> @llvm.minnum.nxv2f64(<vscale x 2 x double> %a, <vscale x 2 x double> zeroinitializer)
615 ret <vscale x 2 x double> %out
618 define <vscale x 2 x double> @fminnm_d_immone(<vscale x 2 x double> %a) #0 {
619 ; CHECK-LABEL: fminnm_d_immone:
621 ; CHECK-NEXT: ptrue p0.d
622 ; CHECK-NEXT: fminnm z0.d, p0/m, z0.d, #1.0
624 %out = call <vscale x 2 x double> @llvm.minnum.nxv2f64(<vscale x 2 x double> %a, <vscale x 2 x double> splat(double 1.000000e+00))
625 ret <vscale x 2 x double> %out
632 define <vscale x 8 x half> @fmul_h_immhalf(<vscale x 8 x half> %a) #0 {
633 ; CHECK-LABEL: fmul_h_immhalf:
635 ; CHECK-NEXT: ptrue p0.h
636 ; CHECK-NEXT: fmul z0.h, p0/m, z0.h, #0.5
638 %out = fmul <vscale x 8 x half> %a, splat(half 0.500000e+00)
639 ret <vscale x 8 x half> %out
642 define <vscale x 8 x half> @fmul_h_immtwo(<vscale x 8 x half> %a) #0 {
643 ; CHECK-LABEL: fmul_h_immtwo:
645 ; CHECK-NEXT: fadd z0.h, z0.h, z0.h
647 %out = fmul <vscale x 8 x half> %a, splat(half 2.000000e+00)
648 ret <vscale x 8 x half> %out
651 define <vscale x 4 x half> @fmul_4h_immhalf(<vscale x 4 x half> %a) #0 {
652 ; CHECK-LABEL: fmul_4h_immhalf:
654 ; CHECK-NEXT: ptrue p0.s
655 ; CHECK-NEXT: fmul z0.h, p0/m, z0.h, #0.5
657 %out = fmul <vscale x 4 x half> %a, splat(half 0.500000e+00)
658 ret <vscale x 4 x half> %out
661 define <vscale x 4 x half> @fmul_4h_immtwo(<vscale x 4 x half> %a) #0 {
662 ; CHECK-LABEL: fmul_4h_immtwo:
664 ; CHECK-NEXT: ptrue p0.s
665 ; CHECK-NEXT: fadd z0.h, p0/m, z0.h, z0.h
667 %out = fmul <vscale x 4 x half> %a, splat(half 2.000000e+00)
668 ret <vscale x 4 x half> %out
671 define <vscale x 2 x half> @fmul_2h_immhalf(<vscale x 2 x half> %a) #0 {
672 ; CHECK-LABEL: fmul_2h_immhalf:
674 ; CHECK-NEXT: ptrue p0.d
675 ; CHECK-NEXT: fmul z0.h, p0/m, z0.h, #0.5
677 %out = fmul <vscale x 2 x half> %a, splat(half 0.500000e+00)
678 ret <vscale x 2 x half> %out
681 define <vscale x 2 x half> @fmul_2h_immtwo(<vscale x 2 x half> %a) #0 {
682 ; CHECK-LABEL: fmul_2h_immtwo:
684 ; CHECK-NEXT: ptrue p0.d
685 ; CHECK-NEXT: fadd z0.h, p0/m, z0.h, z0.h
687 %out = fmul <vscale x 2 x half> %a, splat(half 2.000000e+00)
688 ret <vscale x 2 x half> %out
691 define <vscale x 4 x float> @fmul_s_immhalf(<vscale x 4 x float> %a) #0 {
692 ; CHECK-LABEL: fmul_s_immhalf:
694 ; CHECK-NEXT: ptrue p0.s
695 ; CHECK-NEXT: fmul z0.s, p0/m, z0.s, #0.5
697 %out = fmul <vscale x 4 x float> %a, splat(float 0.500000e+00)
698 ret <vscale x 4 x float> %out
701 define <vscale x 4 x float> @fmul_s_immtwo(<vscale x 4 x float> %a) #0 {
702 ; CHECK-LABEL: fmul_s_immtwo:
704 ; CHECK-NEXT: fadd z0.s, z0.s, z0.s
706 %out = fmul <vscale x 4 x float> %a, splat(float 2.000000e+00)
707 ret <vscale x 4 x float> %out
710 define <vscale x 2 x float> @fmul_2s_immhalf(<vscale x 2 x float> %a) #0 {
711 ; CHECK-LABEL: fmul_2s_immhalf:
713 ; CHECK-NEXT: ptrue p0.d
714 ; CHECK-NEXT: fmul z0.s, p0/m, z0.s, #0.5
716 %out = fmul <vscale x 2 x float> %a, splat(float 0.500000e+00)
717 ret <vscale x 2 x float> %out
720 define <vscale x 2 x float> @fmul_2s_immtwo(<vscale x 2 x float> %a) #0 {
721 ; CHECK-LABEL: fmul_2s_immtwo:
723 ; CHECK-NEXT: ptrue p0.d
724 ; CHECK-NEXT: fadd z0.s, p0/m, z0.s, z0.s
726 %out = fmul <vscale x 2 x float> %a, splat(float 2.000000e+00)
727 ret <vscale x 2 x float> %out
730 define <vscale x 2 x double> @fmul_d_immhalf(<vscale x 2 x double> %a) #0 {
731 ; CHECK-LABEL: fmul_d_immhalf:
733 ; CHECK-NEXT: ptrue p0.d
734 ; CHECK-NEXT: fmul z0.d, p0/m, z0.d, #0.5
736 %out = fmul <vscale x 2 x double> %a, splat(double 0.500000e+00)
737 ret <vscale x 2 x double> %out
740 define <vscale x 2 x double> @fmul_d_immtwo(<vscale x 2 x double> %a) #0 {
741 ; CHECK-LABEL: fmul_d_immtwo:
743 ; CHECK-NEXT: fadd z0.d, z0.d, z0.d
745 %out = fmul <vscale x 2 x double> %a, splat(double 2.000000e+00)
746 ret <vscale x 2 x double> %out
753 define <vscale x 8 x half> @fsub_h_immhalf(<vscale x 8 x half> %a) #0 {
754 ; CHECK-LABEL: fsub_h_immhalf:
756 ; CHECK-NEXT: ptrue p0.h
757 ; CHECK-NEXT: fsub z0.h, p0/m, z0.h, #0.5
759 %out = fsub <vscale x 8 x half> %a, splat(half 0.500000e+00)
760 ret <vscale x 8 x half> %out
763 define <vscale x 8 x half> @fsub_h_immone(<vscale x 8 x half> %a) #0 {
764 ; CHECK-LABEL: fsub_h_immone:
766 ; CHECK-NEXT: ptrue p0.h
767 ; CHECK-NEXT: fsub z0.h, p0/m, z0.h, #1.0
769 %out = fsub <vscale x 8 x half> %a, splat(half 1.000000e+00)
770 ret <vscale x 8 x half> %out
773 define <vscale x 4 x half> @fsub_4h_immhalf(<vscale x 4 x half> %a) #0 {
774 ; CHECK-LABEL: fsub_4h_immhalf:
776 ; CHECK-NEXT: ptrue p0.s
777 ; CHECK-NEXT: fsub z0.h, p0/m, z0.h, #0.5
779 %out = fsub <vscale x 4 x half> %a, splat(half 0.500000e+00)
780 ret <vscale x 4 x half> %out
783 define <vscale x 4 x half> @fsub_4h_immone(<vscale x 4 x half> %a) #0 {
784 ; CHECK-LABEL: fsub_4h_immone:
786 ; CHECK-NEXT: ptrue p0.s
787 ; CHECK-NEXT: fsub z0.h, p0/m, z0.h, #1.0
789 %out = fsub <vscale x 4 x half> %a, splat(half 1.000000e+00)
790 ret <vscale x 4 x half> %out
793 define <vscale x 2 x half> @fsub_2h_immhalf(<vscale x 2 x half> %a) #0 {
794 ; CHECK-LABEL: fsub_2h_immhalf:
796 ; CHECK-NEXT: ptrue p0.d
797 ; CHECK-NEXT: fsub z0.h, p0/m, z0.h, #0.5
799 %out = fsub <vscale x 2 x half> %a, splat(half 0.500000e+00)
800 ret <vscale x 2 x half> %out
803 define <vscale x 2 x half> @fsub_2h_immone(<vscale x 2 x half> %a) #0 {
804 ; CHECK-LABEL: fsub_2h_immone:
806 ; CHECK-NEXT: ptrue p0.d
807 ; CHECK-NEXT: fsub z0.h, p0/m, z0.h, #1.0
809 %out = fsub <vscale x 2 x half> %a, splat(half 1.000000e+00)
810 ret <vscale x 2 x half> %out
813 define <vscale x 4 x float> @fsub_s_immhalf(<vscale x 4 x float> %a) #0 {
814 ; CHECK-LABEL: fsub_s_immhalf:
816 ; CHECK-NEXT: ptrue p0.s
817 ; CHECK-NEXT: fsub z0.s, p0/m, z0.s, #0.5
819 %out = fsub <vscale x 4 x float> %a, splat(float 0.500000e+00)
820 ret <vscale x 4 x float> %out
823 define <vscale x 4 x float> @fsub_s_immone(<vscale x 4 x float> %a) #0 {
824 ; CHECK-LABEL: fsub_s_immone:
826 ; CHECK-NEXT: ptrue p0.s
827 ; CHECK-NEXT: fsub z0.s, p0/m, z0.s, #1.0
829 %out = fsub <vscale x 4 x float> %a, splat(float 1.000000e+00)
830 ret <vscale x 4 x float> %out
833 define <vscale x 2 x float> @fsub_2s_immhalf(<vscale x 2 x float> %a) #0 {
834 ; CHECK-LABEL: fsub_2s_immhalf:
836 ; CHECK-NEXT: ptrue p0.d
837 ; CHECK-NEXT: fsub z0.s, p0/m, z0.s, #0.5
839 %out = fsub <vscale x 2 x float> %a, splat(float 0.500000e+00)
840 ret <vscale x 2 x float> %out
843 define <vscale x 2 x float> @fsub_2s_immone(<vscale x 2 x float> %a) #0 {
844 ; CHECK-LABEL: fsub_2s_immone:
846 ; CHECK-NEXT: ptrue p0.d
847 ; CHECK-NEXT: fsub z0.s, p0/m, z0.s, #1.0
849 %out = fsub <vscale x 2 x float> %a, splat(float 1.000000e+00)
850 ret <vscale x 2 x float> %out
853 define <vscale x 2 x double> @fsub_d_immhalf(<vscale x 2 x double> %a) #0 {
854 ; CHECK-LABEL: fsub_d_immhalf:
856 ; CHECK-NEXT: ptrue p0.d
857 ; CHECK-NEXT: fsub z0.d, p0/m, z0.d, #0.5
859 %out = fsub <vscale x 2 x double> %a, splat(double 0.500000e+00)
860 ret <vscale x 2 x double> %out
863 define <vscale x 2 x double> @fsub_d_immone(<vscale x 2 x double> %a) #0 {
864 ; CHECK-LABEL: fsub_d_immone:
866 ; CHECK-NEXT: ptrue p0.d
867 ; CHECK-NEXT: fsub z0.d, p0/m, z0.d, #1.0
869 %out = fsub <vscale x 2 x double> %a, splat(double 1.000000e+00)
870 ret <vscale x 2 x double> %out
877 define <vscale x 8 x half> @fsubr_h_immhalf(<vscale x 8 x half> %a) #0 {
878 ; CHECK-LABEL: fsubr_h_immhalf:
880 ; CHECK-NEXT: ptrue p0.h
881 ; CHECK-NEXT: fsubr z0.h, p0/m, z0.h, #0.5
883 %out = fsub <vscale x 8 x half> splat(half 0.500000e+00), %a
884 ret <vscale x 8 x half> %out
887 define <vscale x 8 x half> @fsubr_h_immone(<vscale x 8 x half> %a) #0 {
888 ; CHECK-LABEL: fsubr_h_immone:
890 ; CHECK-NEXT: ptrue p0.h
891 ; CHECK-NEXT: fsubr z0.h, p0/m, z0.h, #1.0
893 %out = fsub <vscale x 8 x half> splat(half 1.000000e+00), %a
894 ret <vscale x 8 x half> %out
897 define <vscale x 4 x half> @fsubr_4h_immhalf(<vscale x 4 x half> %a) #0 {
898 ; CHECK-LABEL: fsubr_4h_immhalf:
900 ; CHECK-NEXT: ptrue p0.s
901 ; CHECK-NEXT: fsubr z0.h, p0/m, z0.h, #0.5
903 %out = fsub <vscale x 4 x half> splat(half 0.500000e+00), %a
904 ret <vscale x 4 x half> %out
907 define <vscale x 4 x half> @fsubr_4h_immone(<vscale x 4 x half> %a) #0 {
908 ; CHECK-LABEL: fsubr_4h_immone:
910 ; CHECK-NEXT: ptrue p0.s
911 ; CHECK-NEXT: fsubr z0.h, p0/m, z0.h, #1.0
913 %out = fsub <vscale x 4 x half> splat(half 1.000000e+00), %a
914 ret <vscale x 4 x half> %out
917 define <vscale x 2 x half> @fsubr_2h_immhalf(<vscale x 2 x half> %a) #0 {
918 ; CHECK-LABEL: fsubr_2h_immhalf:
920 ; CHECK-NEXT: ptrue p0.d
921 ; CHECK-NEXT: fsubr z0.h, p0/m, z0.h, #0.5
923 %out = fsub <vscale x 2 x half> splat(half 0.500000e+00), %a
924 ret <vscale x 2 x half> %out
927 define <vscale x 2 x half> @fsubr_2h_immone(<vscale x 2 x half> %a) #0 {
928 ; CHECK-LABEL: fsubr_2h_immone:
930 ; CHECK-NEXT: ptrue p0.d
931 ; CHECK-NEXT: fsubr z0.h, p0/m, z0.h, #1.0
933 %out = fsub <vscale x 2 x half> splat(half 1.000000e+00), %a
934 ret <vscale x 2 x half> %out
937 define <vscale x 4 x float> @fsubr_s_immhalf(<vscale x 4 x float> %a) #0 {
938 ; CHECK-LABEL: fsubr_s_immhalf:
940 ; CHECK-NEXT: ptrue p0.s
941 ; CHECK-NEXT: fsubr z0.s, p0/m, z0.s, #0.5
943 %out = fsub <vscale x 4 x float> splat(float 0.500000e+00), %a
944 ret <vscale x 4 x float> %out
947 define <vscale x 4 x float> @fsubr_s_immone(<vscale x 4 x float> %a) #0 {
948 ; CHECK-LABEL: fsubr_s_immone:
950 ; CHECK-NEXT: ptrue p0.s
951 ; CHECK-NEXT: fsubr z0.s, p0/m, z0.s, #1.0
953 %out = fsub <vscale x 4 x float> splat(float 1.000000e+00), %a
954 ret <vscale x 4 x float> %out
957 define <vscale x 2 x float> @fsubr_2s_immhalf(<vscale x 2 x float> %a) #0 {
958 ; CHECK-LABEL: fsubr_2s_immhalf:
960 ; CHECK-NEXT: ptrue p0.d
961 ; CHECK-NEXT: fsubr z0.s, p0/m, z0.s, #0.5
963 %out = fsub <vscale x 2 x float> splat(float 0.500000e+00), %a
964 ret <vscale x 2 x float> %out
967 define <vscale x 2 x float> @fsubr_2s_immone(<vscale x 2 x float> %a) #0 {
968 ; CHECK-LABEL: fsubr_2s_immone:
970 ; CHECK-NEXT: ptrue p0.d
971 ; CHECK-NEXT: fsubr z0.s, p0/m, z0.s, #1.0
973 %out = fsub <vscale x 2 x float> splat(float 1.000000e+00), %a
974 ret <vscale x 2 x float> %out
977 define <vscale x 2 x double> @fsubr_d_immhalf(<vscale x 2 x double> %a) #0 {
978 ; CHECK-LABEL: fsubr_d_immhalf:
980 ; CHECK-NEXT: ptrue p0.d
981 ; CHECK-NEXT: fsubr z0.d, p0/m, z0.d, #0.5
983 %out = fsub <vscale x 2 x double> splat(double 0.500000e+00), %a
984 ret <vscale x 2 x double> %out
987 define <vscale x 2 x double> @fsubr_d_immone(<vscale x 2 x double> %a) #0 {
988 ; CHECK-LABEL: fsubr_d_immone:
990 ; CHECK-NEXT: ptrue p0.d
991 ; CHECK-NEXT: fsubr z0.d, p0/m, z0.d, #1.0
993 %out = fsub <vscale x 2 x double> splat(double 1.000000e+00), %a
994 ret <vscale x 2 x double> %out
997 declare <vscale x 8 x half> @llvm.maximum.nxv8f16(<vscale x 8 x half>, <vscale x 8 x half>)
998 declare <vscale x 4 x half> @llvm.maximum.nxv4f16(<vscale x 4 x half>, <vscale x 4 x half>)
999 declare <vscale x 2 x half> @llvm.maximum.nxv2f16(<vscale x 2 x half>, <vscale x 2 x half>)
1000 declare <vscale x 4 x float> @llvm.maximum.nxv4f32(<vscale x 4 x float>, <vscale x 4 x float>)
1001 declare <vscale x 2 x float> @llvm.maximum.nxv2f32(<vscale x 2 x float>, <vscale x 2 x float>)
1002 declare <vscale x 2 x double> @llvm.maximum.nxv2f64(<vscale x 2 x double>, <vscale x 2 x double>)
1004 declare <vscale x 8 x half> @llvm.maxnum.nxv8f16(<vscale x 8 x half>, <vscale x 8 x half>)
1005 declare <vscale x 4 x half> @llvm.maxnum.nxv4f16(<vscale x 4 x half>, <vscale x 4 x half>)
1006 declare <vscale x 2 x half> @llvm.maxnum.nxv2f16(<vscale x 2 x half>, <vscale x 2 x half>)
1007 declare <vscale x 4 x float> @llvm.maxnum.nxv4f32(<vscale x 4 x float>, <vscale x 4 x float>)
1008 declare <vscale x 2 x float> @llvm.maxnum.nxv2f32(<vscale x 2 x float>, <vscale x 2 x float>)
1009 declare <vscale x 2 x double> @llvm.maxnum.nxv2f64(<vscale x 2 x double>, <vscale x 2 x double>)
1011 declare <vscale x 8 x half> @llvm.minimum.nxv8f16(<vscale x 8 x half>, <vscale x 8 x half>)
1012 declare <vscale x 4 x half> @llvm.minimum.nxv4f16(<vscale x 4 x half>, <vscale x 4 x half>)
1013 declare <vscale x 2 x half> @llvm.minimum.nxv2f16(<vscale x 2 x half>, <vscale x 2 x half>)
1014 declare <vscale x 4 x float> @llvm.minimum.nxv4f32(<vscale x 4 x float>, <vscale x 4 x float>)
1015 declare <vscale x 2 x float> @llvm.minimum.nxv2f32(<vscale x 2 x float>, <vscale x 2 x float>)
1016 declare <vscale x 2 x double> @llvm.minimum.nxv2f64(<vscale x 2 x double>, <vscale x 2 x double>)
1018 declare <vscale x 8 x half> @llvm.minnum.nxv8f16(<vscale x 8 x half>, <vscale x 8 x half>)
1019 declare <vscale x 4 x half> @llvm.minnum.nxv4f16(<vscale x 4 x half>, <vscale x 4 x half>)
1020 declare <vscale x 2 x half> @llvm.minnum.nxv2f16(<vscale x 2 x half>, <vscale x 2 x half>)
1021 declare <vscale x 4 x float> @llvm.minnum.nxv4f32(<vscale x 4 x float>, <vscale x 4 x float>)
1022 declare <vscale x 2 x float> @llvm.minnum.nxv2f32(<vscale x 2 x float>, <vscale x 2 x float>)
1023 declare <vscale x 2 x double> @llvm.minnum.nxv2f64(<vscale x 2 x double>, <vscale x 2 x double>)
1025 attributes #0 = { "target-features"="+sve" }
1026 attributes #1 = { "target-features"="+sve,+use-experimental-zeroing-pseudos" }