1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2; RUN: llc -mtriple=riscv32 -mattr=+d,+zfh,+experimental-zvfh,+v -target-abi=ilp32d \
3; RUN:     -verify-machineinstrs < %s | FileCheck %s
4; RUN: llc -mtriple=riscv64 -mattr=+d,+zfh,+experimental-zvfh,+v -target-abi=lp64d \
5; RUN:     -verify-machineinstrs < %s | FileCheck %s
6
7declare <vscale x 1 x half> @llvm.maxnum.nxv1f16(<vscale x 1 x half>, <vscale x 1 x half>)
8
9define <vscale x 1 x half> @vfmax_nxv1f16_vv(<vscale x 1 x half> %a, <vscale x 1 x half> %b) {
10; CHECK-LABEL: vfmax_nxv1f16_vv:
11; CHECK:       # %bb.0:
12; CHECK-NEXT:    vsetvli a0, zero, e16, mf4, ta, mu
13; CHECK-NEXT:    vfmax.vv v8, v8, v9
14; CHECK-NEXT:    ret
15  %v = call <vscale x 1 x half> @llvm.maxnum.nxv1f16(<vscale x 1 x half> %a, <vscale x 1 x half> %b)
16  ret <vscale x 1 x half> %v
17}
18
19define <vscale x 1 x half> @vfmax_nxv1f16_vf(<vscale x 1 x half> %a, half %b) {
20; CHECK-LABEL: vfmax_nxv1f16_vf:
21; CHECK:       # %bb.0:
22; CHECK-NEXT:    vsetvli a0, zero, e16, mf4, ta, mu
23; CHECK-NEXT:    vfmax.vf v8, v8, fa0
24; CHECK-NEXT:    ret
25  %head = insertelement <vscale x 1 x half> poison, half %b, i32 0
26  %splat = shufflevector <vscale x 1 x half> %head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer
27  %v = call <vscale x 1 x half> @llvm.maxnum.nxv1f16(<vscale x 1 x half> %a, <vscale x 1 x half> %splat)
28  ret <vscale x 1 x half> %v
29}
30
31declare <vscale x 2 x half> @llvm.maxnum.nxv2f16(<vscale x 2 x half>, <vscale x 2 x half>)
32
33define <vscale x 2 x half> @vfmax_nxv2f16_vv(<vscale x 2 x half> %a, <vscale x 2 x half> %b) {
34; CHECK-LABEL: vfmax_nxv2f16_vv:
35; CHECK:       # %bb.0:
36; CHECK-NEXT:    vsetvli a0, zero, e16, mf2, ta, mu
37; CHECK-NEXT:    vfmax.vv v8, v8, v9
38; CHECK-NEXT:    ret
39  %v = call <vscale x 2 x half> @llvm.maxnum.nxv2f16(<vscale x 2 x half> %a, <vscale x 2 x half> %b)
40  ret <vscale x 2 x half> %v
41}
42
43define <vscale x 2 x half> @vfmax_nxv2f16_vf(<vscale x 2 x half> %a, half %b) {
44; CHECK-LABEL: vfmax_nxv2f16_vf:
45; CHECK:       # %bb.0:
46; CHECK-NEXT:    vsetvli a0, zero, e16, mf2, ta, mu
47; CHECK-NEXT:    vfmax.vf v8, v8, fa0
48; CHECK-NEXT:    ret
49  %head = insertelement <vscale x 2 x half> poison, half %b, i32 0
50  %splat = shufflevector <vscale x 2 x half> %head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer
51  %v = call <vscale x 2 x half> @llvm.maxnum.nxv2f16(<vscale x 2 x half> %a, <vscale x 2 x half> %splat)
52  ret <vscale x 2 x half> %v
53}
54
55declare <vscale x 4 x half> @llvm.maxnum.nxv4f16(<vscale x 4 x half>, <vscale x 4 x half>)
56
57define <vscale x 4 x half> @vfmax_nxv4f16_vv(<vscale x 4 x half> %a, <vscale x 4 x half> %b) {
58; CHECK-LABEL: vfmax_nxv4f16_vv:
59; CHECK:       # %bb.0:
60; CHECK-NEXT:    vsetvli a0, zero, e16, m1, ta, mu
61; CHECK-NEXT:    vfmax.vv v8, v8, v9
62; CHECK-NEXT:    ret
63  %v = call <vscale x 4 x half> @llvm.maxnum.nxv4f16(<vscale x 4 x half> %a, <vscale x 4 x half> %b)
64  ret <vscale x 4 x half> %v
65}
66
67define <vscale x 4 x half> @vfmax_nxv4f16_vf(<vscale x 4 x half> %a, half %b) {
68; CHECK-LABEL: vfmax_nxv4f16_vf:
69; CHECK:       # %bb.0:
70; CHECK-NEXT:    vsetvli a0, zero, e16, m1, ta, mu
71; CHECK-NEXT:    vfmax.vf v8, v8, fa0
72; CHECK-NEXT:    ret
73  %head = insertelement <vscale x 4 x half> poison, half %b, i32 0
74  %splat = shufflevector <vscale x 4 x half> %head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer
75  %v = call <vscale x 4 x half> @llvm.maxnum.nxv4f16(<vscale x 4 x half> %a, <vscale x 4 x half> %splat)
76  ret <vscale x 4 x half> %v
77}
78
79declare <vscale x 8 x half> @llvm.maxnum.nxv8f16(<vscale x 8 x half>, <vscale x 8 x half>)
80
81define <vscale x 8 x half> @vfmax_nxv8f16_vv(<vscale x 8 x half> %a, <vscale x 8 x half> %b) {
82; CHECK-LABEL: vfmax_nxv8f16_vv:
83; CHECK:       # %bb.0:
84; CHECK-NEXT:    vsetvli a0, zero, e16, m2, ta, mu
85; CHECK-NEXT:    vfmax.vv v8, v8, v10
86; CHECK-NEXT:    ret
87  %v = call <vscale x 8 x half> @llvm.maxnum.nxv8f16(<vscale x 8 x half> %a, <vscale x 8 x half> %b)
88  ret <vscale x 8 x half> %v
89}
90
91define <vscale x 8 x half> @vfmax_nxv8f16_vf(<vscale x 8 x half> %a, half %b) {
92; CHECK-LABEL: vfmax_nxv8f16_vf:
93; CHECK:       # %bb.0:
94; CHECK-NEXT:    vsetvli a0, zero, e16, m2, ta, mu
95; CHECK-NEXT:    vfmax.vf v8, v8, fa0
96; CHECK-NEXT:    ret
97  %head = insertelement <vscale x 8 x half> poison, half %b, i32 0
98  %splat = shufflevector <vscale x 8 x half> %head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer
99  %v = call <vscale x 8 x half> @llvm.maxnum.nxv8f16(<vscale x 8 x half> %a, <vscale x 8 x half> %splat)
100  ret <vscale x 8 x half> %v
101}
102
103declare <vscale x 16 x half> @llvm.maxnum.nxv16f16(<vscale x 16 x half>, <vscale x 16 x half>)
104
105define <vscale x 16 x half> @vfmax_nxv16f16_vv(<vscale x 16 x half> %a, <vscale x 16 x half> %b) {
106; CHECK-LABEL: vfmax_nxv16f16_vv:
107; CHECK:       # %bb.0:
108; CHECK-NEXT:    vsetvli a0, zero, e16, m4, ta, mu
109; CHECK-NEXT:    vfmax.vv v8, v8, v12
110; CHECK-NEXT:    ret
111  %v = call <vscale x 16 x half> @llvm.maxnum.nxv16f16(<vscale x 16 x half> %a, <vscale x 16 x half> %b)
112  ret <vscale x 16 x half> %v
113}
114
115define <vscale x 16 x half> @vfmax_nxv16f16_vf(<vscale x 16 x half> %a, half %b) {
116; CHECK-LABEL: vfmax_nxv16f16_vf:
117; CHECK:       # %bb.0:
118; CHECK-NEXT:    vsetvli a0, zero, e16, m4, ta, mu
119; CHECK-NEXT:    vfmax.vf v8, v8, fa0
120; CHECK-NEXT:    ret
121  %head = insertelement <vscale x 16 x half> poison, half %b, i32 0
122  %splat = shufflevector <vscale x 16 x half> %head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer
123  %v = call <vscale x 16 x half> @llvm.maxnum.nxv16f16(<vscale x 16 x half> %a, <vscale x 16 x half> %splat)
124  ret <vscale x 16 x half> %v
125}
126
127declare <vscale x 32 x half> @llvm.maxnum.nxv32f16(<vscale x 32 x half>, <vscale x 32 x half>)
128
129define <vscale x 32 x half> @vfmax_nxv32f16_vv(<vscale x 32 x half> %a, <vscale x 32 x half> %b) {
130; CHECK-LABEL: vfmax_nxv32f16_vv:
131; CHECK:       # %bb.0:
132; CHECK-NEXT:    vsetvli a0, zero, e16, m8, ta, mu
133; CHECK-NEXT:    vfmax.vv v8, v8, v16
134; CHECK-NEXT:    ret
135  %v = call <vscale x 32 x half> @llvm.maxnum.nxv32f16(<vscale x 32 x half> %a, <vscale x 32 x half> %b)
136  ret <vscale x 32 x half> %v
137}
138
139define <vscale x 32 x half> @vfmax_nxv32f16_vf(<vscale x 32 x half> %a, half %b) {
140; CHECK-LABEL: vfmax_nxv32f16_vf:
141; CHECK:       # %bb.0:
142; CHECK-NEXT:    vsetvli a0, zero, e16, m8, ta, mu
143; CHECK-NEXT:    vfmax.vf v8, v8, fa0
144; CHECK-NEXT:    ret
145  %head = insertelement <vscale x 32 x half> poison, half %b, i32 0
146  %splat = shufflevector <vscale x 32 x half> %head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer
147  %v = call <vscale x 32 x half> @llvm.maxnum.nxv32f16(<vscale x 32 x half> %a, <vscale x 32 x half> %splat)
148  ret <vscale x 32 x half> %v
149}
150
151declare <vscale x 1 x float> @llvm.maxnum.nxv1f32(<vscale x 1 x float>, <vscale x 1 x float>)
152
153define <vscale x 1 x float> @vfmax_nxv1f32_vv(<vscale x 1 x float> %a, <vscale x 1 x float> %b) {
154; CHECK-LABEL: vfmax_nxv1f32_vv:
155; CHECK:       # %bb.0:
156; CHECK-NEXT:    vsetvli a0, zero, e32, mf2, ta, mu
157; CHECK-NEXT:    vfmax.vv v8, v8, v9
158; CHECK-NEXT:    ret
159  %v = call <vscale x 1 x float> @llvm.maxnum.nxv1f32(<vscale x 1 x float> %a, <vscale x 1 x float> %b)
160  ret <vscale x 1 x float> %v
161}
162
163define <vscale x 1 x float> @vfmax_nxv1f32_vf(<vscale x 1 x float> %a, float %b) {
164; CHECK-LABEL: vfmax_nxv1f32_vf:
165; CHECK:       # %bb.0:
166; CHECK-NEXT:    vsetvli a0, zero, e32, mf2, ta, mu
167; CHECK-NEXT:    vfmax.vf v8, v8, fa0
168; CHECK-NEXT:    ret
169  %head = insertelement <vscale x 1 x float> poison, float %b, i32 0
170  %splat = shufflevector <vscale x 1 x float> %head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer
171  %v = call <vscale x 1 x float> @llvm.maxnum.nxv1f32(<vscale x 1 x float> %a, <vscale x 1 x float> %splat)
172  ret <vscale x 1 x float> %v
173}
174
175declare <vscale x 2 x float> @llvm.maxnum.nxv2f32(<vscale x 2 x float>, <vscale x 2 x float>)
176
177define <vscale x 2 x float> @vfmax_nxv2f32_vv(<vscale x 2 x float> %a, <vscale x 2 x float> %b) {
178; CHECK-LABEL: vfmax_nxv2f32_vv:
179; CHECK:       # %bb.0:
180; CHECK-NEXT:    vsetvli a0, zero, e32, m1, ta, mu
181; CHECK-NEXT:    vfmax.vv v8, v8, v9
182; CHECK-NEXT:    ret
183  %v = call <vscale x 2 x float> @llvm.maxnum.nxv2f32(<vscale x 2 x float> %a, <vscale x 2 x float> %b)
184  ret <vscale x 2 x float> %v
185}
186
187define <vscale x 2 x float> @vfmax_nxv2f32_vf(<vscale x 2 x float> %a, float %b) {
188; CHECK-LABEL: vfmax_nxv2f32_vf:
189; CHECK:       # %bb.0:
190; CHECK-NEXT:    vsetvli a0, zero, e32, m1, ta, mu
191; CHECK-NEXT:    vfmax.vf v8, v8, fa0
192; CHECK-NEXT:    ret
193  %head = insertelement <vscale x 2 x float> poison, float %b, i32 0
194  %splat = shufflevector <vscale x 2 x float> %head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer
195  %v = call <vscale x 2 x float> @llvm.maxnum.nxv2f32(<vscale x 2 x float> %a, <vscale x 2 x float> %splat)
196  ret <vscale x 2 x float> %v
197}
198
199declare <vscale x 4 x float> @llvm.maxnum.nxv4f32(<vscale x 4 x float>, <vscale x 4 x float>)
200
201define <vscale x 4 x float> @vfmax_nxv4f32_vv(<vscale x 4 x float> %a, <vscale x 4 x float> %b) {
202; CHECK-LABEL: vfmax_nxv4f32_vv:
203; CHECK:       # %bb.0:
204; CHECK-NEXT:    vsetvli a0, zero, e32, m2, ta, mu
205; CHECK-NEXT:    vfmax.vv v8, v8, v10
206; CHECK-NEXT:    ret
207  %v = call <vscale x 4 x float> @llvm.maxnum.nxv4f32(<vscale x 4 x float> %a, <vscale x 4 x float> %b)
208  ret <vscale x 4 x float> %v
209}
210
211define <vscale x 4 x float> @vfmax_nxv4f32_vf(<vscale x 4 x float> %a, float %b) {
212; CHECK-LABEL: vfmax_nxv4f32_vf:
213; CHECK:       # %bb.0:
214; CHECK-NEXT:    vsetvli a0, zero, e32, m2, ta, mu
215; CHECK-NEXT:    vfmax.vf v8, v8, fa0
216; CHECK-NEXT:    ret
217  %head = insertelement <vscale x 4 x float> poison, float %b, i32 0
218  %splat = shufflevector <vscale x 4 x float> %head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer
219  %v = call <vscale x 4 x float> @llvm.maxnum.nxv4f32(<vscale x 4 x float> %a, <vscale x 4 x float> %splat)
220  ret <vscale x 4 x float> %v
221}
222
223declare <vscale x 8 x float> @llvm.maxnum.nxv8f32(<vscale x 8 x float>, <vscale x 8 x float>)
224
225define <vscale x 8 x float> @vfmax_nxv8f32_vv(<vscale x 8 x float> %a, <vscale x 8 x float> %b) {
226; CHECK-LABEL: vfmax_nxv8f32_vv:
227; CHECK:       # %bb.0:
228; CHECK-NEXT:    vsetvli a0, zero, e32, m4, ta, mu
229; CHECK-NEXT:    vfmax.vv v8, v8, v12
230; CHECK-NEXT:    ret
231  %v = call <vscale x 8 x float> @llvm.maxnum.nxv8f32(<vscale x 8 x float> %a, <vscale x 8 x float> %b)
232  ret <vscale x 8 x float> %v
233}
234
235define <vscale x 8 x float> @vfmax_nxv8f32_vf(<vscale x 8 x float> %a, float %b) {
236; CHECK-LABEL: vfmax_nxv8f32_vf:
237; CHECK:       # %bb.0:
238; CHECK-NEXT:    vsetvli a0, zero, e32, m4, ta, mu
239; CHECK-NEXT:    vfmax.vf v8, v8, fa0
240; CHECK-NEXT:    ret
241  %head = insertelement <vscale x 8 x float> poison, float %b, i32 0
242  %splat = shufflevector <vscale x 8 x float> %head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer
243  %v = call <vscale x 8 x float> @llvm.maxnum.nxv8f32(<vscale x 8 x float> %a, <vscale x 8 x float> %splat)
244  ret <vscale x 8 x float> %v
245}
246
247declare <vscale x 16 x float> @llvm.maxnum.nxv16f32(<vscale x 16 x float>, <vscale x 16 x float>)
248
249define <vscale x 16 x float> @vfmax_nxv16f32_vv(<vscale x 16 x float> %a, <vscale x 16 x float> %b) {
250; CHECK-LABEL: vfmax_nxv16f32_vv:
251; CHECK:       # %bb.0:
252; CHECK-NEXT:    vsetvli a0, zero, e32, m8, ta, mu
253; CHECK-NEXT:    vfmax.vv v8, v8, v16
254; CHECK-NEXT:    ret
255  %v = call <vscale x 16 x float> @llvm.maxnum.nxv16f32(<vscale x 16 x float> %a, <vscale x 16 x float> %b)
256  ret <vscale x 16 x float> %v
257}
258
259define <vscale x 16 x float> @vfmax_nxv16f32_vf(<vscale x 16 x float> %a, float %b) {
260; CHECK-LABEL: vfmax_nxv16f32_vf:
261; CHECK:       # %bb.0:
262; CHECK-NEXT:    vsetvli a0, zero, e32, m8, ta, mu
263; CHECK-NEXT:    vfmax.vf v8, v8, fa0
264; CHECK-NEXT:    ret
265  %head = insertelement <vscale x 16 x float> poison, float %b, i32 0
266  %splat = shufflevector <vscale x 16 x float> %head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer
267  %v = call <vscale x 16 x float> @llvm.maxnum.nxv16f32(<vscale x 16 x float> %a, <vscale x 16 x float> %splat)
268  ret <vscale x 16 x float> %v
269}
270
271declare <vscale x 1 x double> @llvm.maxnum.nxv1f64(<vscale x 1 x double>, <vscale x 1 x double>)
272
273define <vscale x 1 x double> @vfmax_nxv1f64_vv(<vscale x 1 x double> %a, <vscale x 1 x double> %b) {
274; CHECK-LABEL: vfmax_nxv1f64_vv:
275; CHECK:       # %bb.0:
276; CHECK-NEXT:    vsetvli a0, zero, e64, m1, ta, mu
277; CHECK-NEXT:    vfmax.vv v8, v8, v9
278; CHECK-NEXT:    ret
279  %v = call <vscale x 1 x double> @llvm.maxnum.nxv1f64(<vscale x 1 x double> %a, <vscale x 1 x double> %b)
280  ret <vscale x 1 x double> %v
281}
282
283define <vscale x 1 x double> @vfmax_nxv1f64_vf(<vscale x 1 x double> %a, double %b) {
284; CHECK-LABEL: vfmax_nxv1f64_vf:
285; CHECK:       # %bb.0:
286; CHECK-NEXT:    vsetvli a0, zero, e64, m1, ta, mu
287; CHECK-NEXT:    vfmax.vf v8, v8, fa0
288; CHECK-NEXT:    ret
289  %head = insertelement <vscale x 1 x double> poison, double %b, i32 0
290  %splat = shufflevector <vscale x 1 x double> %head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer
291  %v = call <vscale x 1 x double> @llvm.maxnum.nxv1f64(<vscale x 1 x double> %a, <vscale x 1 x double> %splat)
292  ret <vscale x 1 x double> %v
293}
294
295declare <vscale x 2 x double> @llvm.maxnum.nxv2f64(<vscale x 2 x double>, <vscale x 2 x double>)
296
297define <vscale x 2 x double> @vfmax_nxv2f64_vv(<vscale x 2 x double> %a, <vscale x 2 x double> %b) {
298; CHECK-LABEL: vfmax_nxv2f64_vv:
299; CHECK:       # %bb.0:
300; CHECK-NEXT:    vsetvli a0, zero, e64, m2, ta, mu
301; CHECK-NEXT:    vfmax.vv v8, v8, v10
302; CHECK-NEXT:    ret
303  %v = call <vscale x 2 x double> @llvm.maxnum.nxv2f64(<vscale x 2 x double> %a, <vscale x 2 x double> %b)
304  ret <vscale x 2 x double> %v
305}
306
307define <vscale x 2 x double> @vfmax_nxv2f64_vf(<vscale x 2 x double> %a, double %b) {
308; CHECK-LABEL: vfmax_nxv2f64_vf:
309; CHECK:       # %bb.0:
310; CHECK-NEXT:    vsetvli a0, zero, e64, m2, ta, mu
311; CHECK-NEXT:    vfmax.vf v8, v8, fa0
312; CHECK-NEXT:    ret
313  %head = insertelement <vscale x 2 x double> poison, double %b, i32 0
314  %splat = shufflevector <vscale x 2 x double> %head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer
315  %v = call <vscale x 2 x double> @llvm.maxnum.nxv2f64(<vscale x 2 x double> %a, <vscale x 2 x double> %splat)
316  ret <vscale x 2 x double> %v
317}
318
319declare <vscale x 4 x double> @llvm.maxnum.nxv4f64(<vscale x 4 x double>, <vscale x 4 x double>)
320
321define <vscale x 4 x double> @vfmax_nxv4f64_vv(<vscale x 4 x double> %a, <vscale x 4 x double> %b) {
322; CHECK-LABEL: vfmax_nxv4f64_vv:
323; CHECK:       # %bb.0:
324; CHECK-NEXT:    vsetvli a0, zero, e64, m4, ta, mu
325; CHECK-NEXT:    vfmax.vv v8, v8, v12
326; CHECK-NEXT:    ret
327  %v = call <vscale x 4 x double> @llvm.maxnum.nxv4f64(<vscale x 4 x double> %a, <vscale x 4 x double> %b)
328  ret <vscale x 4 x double> %v
329}
330
331define <vscale x 4 x double> @vfmax_nxv4f64_vf(<vscale x 4 x double> %a, double %b) {
332; CHECK-LABEL: vfmax_nxv4f64_vf:
333; CHECK:       # %bb.0:
334; CHECK-NEXT:    vsetvli a0, zero, e64, m4, ta, mu
335; CHECK-NEXT:    vfmax.vf v8, v8, fa0
336; CHECK-NEXT:    ret
337  %head = insertelement <vscale x 4 x double> poison, double %b, i32 0
338  %splat = shufflevector <vscale x 4 x double> %head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer
339  %v = call <vscale x 4 x double> @llvm.maxnum.nxv4f64(<vscale x 4 x double> %a, <vscale x 4 x double> %splat)
340  ret <vscale x 4 x double> %v
341}
342
343declare <vscale x 8 x double> @llvm.maxnum.nxv8f64(<vscale x 8 x double>, <vscale x 8 x double>)
344
345define <vscale x 8 x double> @vfmax_nxv8f64_vv(<vscale x 8 x double> %a, <vscale x 8 x double> %b) {
346; CHECK-LABEL: vfmax_nxv8f64_vv:
347; CHECK:       # %bb.0:
348; CHECK-NEXT:    vsetvli a0, zero, e64, m8, ta, mu
349; CHECK-NEXT:    vfmax.vv v8, v8, v16
350; CHECK-NEXT:    ret
351  %v = call <vscale x 8 x double> @llvm.maxnum.nxv8f64(<vscale x 8 x double> %a, <vscale x 8 x double> %b)
352  ret <vscale x 8 x double> %v
353}
354
355define <vscale x 8 x double> @vfmax_nxv8f64_vf(<vscale x 8 x double> %a, double %b) {
356; CHECK-LABEL: vfmax_nxv8f64_vf:
357; CHECK:       # %bb.0:
358; CHECK-NEXT:    vsetvli a0, zero, e64, m8, ta, mu
359; CHECK-NEXT:    vfmax.vf v8, v8, fa0
360; CHECK-NEXT:    ret
361  %head = insertelement <vscale x 8 x double> poison, double %b, i32 0
362  %splat = shufflevector <vscale x 8 x double> %head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer
363  %v = call <vscale x 8 x double> @llvm.maxnum.nxv8f64(<vscale x 8 x double> %a, <vscale x 8 x double> %splat)
364  ret <vscale x 8 x double> %v
365}
366