1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2 ; RUN: sed 's/iXLen/i32/g' %s | llc -mtriple=riscv32 -mattr=+v,+zvfh \
3 ; RUN: -verify-machineinstrs -target-abi=ilp32d | FileCheck %s
4 ; RUN: sed 's/iXLen/i64/g' %s | llc -mtriple=riscv64 -mattr=+v,+zvfh \
5 ; RUN: -verify-machineinstrs -target-abi=lp64d | FileCheck %s
7 declare <vscale x 4 x half> @llvm.riscv.vfredmin.nxv4f16.nxv1f16(
13 define <vscale x 4 x half> @intrinsic_vfredmin_vs_nxv4f16_nxv1f16_nxv4f16(<vscale x 4 x half> %0, <vscale x 1 x half> %1, <vscale x 4 x half> %2, iXLen %3) nounwind {
14 ; CHECK-LABEL: intrinsic_vfredmin_vs_nxv4f16_nxv1f16_nxv4f16:
15 ; CHECK: # %bb.0: # %entry
16 ; CHECK-NEXT: vsetvli zero, a0, e16, mf4, tu, ma
17 ; CHECK-NEXT: vfredmin.vs v8, v9, v10
20 %a = call <vscale x 4 x half> @llvm.riscv.vfredmin.nxv4f16.nxv1f16(
21 <vscale x 4 x half> %0,
22 <vscale x 1 x half> %1,
23 <vscale x 4 x half> %2,
26 ret <vscale x 4 x half> %a
29 declare <vscale x 4 x half> @llvm.riscv.vfredmin.mask.nxv4f16.nxv1f16.nxv1i1(
36 define <vscale x 4 x half> @intrinsic_vfredmin_mask_vs_nxv4f16_nxv1f16_nxv4f16(<vscale x 4 x half> %0, <vscale x 1 x half> %1, <vscale x 4 x half> %2, <vscale x 1 x i1> %3, iXLen %4) nounwind {
37 ; CHECK-LABEL: intrinsic_vfredmin_mask_vs_nxv4f16_nxv1f16_nxv4f16:
38 ; CHECK: # %bb.0: # %entry
39 ; CHECK-NEXT: vsetvli zero, a0, e16, mf4, tu, ma
40 ; CHECK-NEXT: vfredmin.vs v8, v9, v10, v0.t
43 %a = call <vscale x 4 x half> @llvm.riscv.vfredmin.mask.nxv4f16.nxv1f16.nxv1i1(
44 <vscale x 4 x half> %0,
45 <vscale x 1 x half> %1,
46 <vscale x 4 x half> %2,
50 ret <vscale x 4 x half> %a
53 declare <vscale x 4 x half> @llvm.riscv.vfredmin.nxv4f16.nxv2f16(
59 define <vscale x 4 x half> @intrinsic_vfredmin_vs_nxv4f16_nxv2f16_nxv4f16(<vscale x 4 x half> %0, <vscale x 2 x half> %1, <vscale x 4 x half> %2, iXLen %3) nounwind {
60 ; CHECK-LABEL: intrinsic_vfredmin_vs_nxv4f16_nxv2f16_nxv4f16:
61 ; CHECK: # %bb.0: # %entry
62 ; CHECK-NEXT: vsetvli zero, a0, e16, mf2, tu, ma
63 ; CHECK-NEXT: vfredmin.vs v8, v9, v10
66 %a = call <vscale x 4 x half> @llvm.riscv.vfredmin.nxv4f16.nxv2f16(
67 <vscale x 4 x half> %0,
68 <vscale x 2 x half> %1,
69 <vscale x 4 x half> %2,
72 ret <vscale x 4 x half> %a
75 declare <vscale x 4 x half> @llvm.riscv.vfredmin.mask.nxv4f16.nxv2f16.nxv2i1(
82 define <vscale x 4 x half> @intrinsic_vfredmin_mask_vs_nxv4f16_nxv2f16_nxv4f16(<vscale x 4 x half> %0, <vscale x 2 x half> %1, <vscale x 4 x half> %2, <vscale x 2 x i1> %3, iXLen %4) nounwind {
83 ; CHECK-LABEL: intrinsic_vfredmin_mask_vs_nxv4f16_nxv2f16_nxv4f16:
84 ; CHECK: # %bb.0: # %entry
85 ; CHECK-NEXT: vsetvli zero, a0, e16, mf2, tu, ma
86 ; CHECK-NEXT: vfredmin.vs v8, v9, v10, v0.t
89 %a = call <vscale x 4 x half> @llvm.riscv.vfredmin.mask.nxv4f16.nxv2f16.nxv2i1(
90 <vscale x 4 x half> %0,
91 <vscale x 2 x half> %1,
92 <vscale x 4 x half> %2,
96 ret <vscale x 4 x half> %a
99 declare <vscale x 4 x half> @llvm.riscv.vfredmin.nxv4f16.nxv4f16(
105 define <vscale x 4 x half> @intrinsic_vfredmin_vs_nxv4f16_nxv4f16_nxv4f16(<vscale x 4 x half> %0, <vscale x 4 x half> %1, <vscale x 4 x half> %2, iXLen %3) nounwind {
106 ; CHECK-LABEL: intrinsic_vfredmin_vs_nxv4f16_nxv4f16_nxv4f16:
107 ; CHECK: # %bb.0: # %entry
108 ; CHECK-NEXT: vsetvli zero, a0, e16, m1, tu, ma
109 ; CHECK-NEXT: vfredmin.vs v8, v9, v10
112 %a = call <vscale x 4 x half> @llvm.riscv.vfredmin.nxv4f16.nxv4f16(
113 <vscale x 4 x half> %0,
114 <vscale x 4 x half> %1,
115 <vscale x 4 x half> %2,
118 ret <vscale x 4 x half> %a
121 declare <vscale x 4 x half> @llvm.riscv.vfredmin.mask.nxv4f16.nxv4f16.nxv4i1(
128 define <vscale x 4 x half> @intrinsic_vfredmin_mask_vs_nxv4f16_nxv4f16_nxv4f16(<vscale x 4 x half> %0, <vscale x 4 x half> %1, <vscale x 4 x half> %2, <vscale x 4 x i1> %3, iXLen %4) nounwind {
129 ; CHECK-LABEL: intrinsic_vfredmin_mask_vs_nxv4f16_nxv4f16_nxv4f16:
130 ; CHECK: # %bb.0: # %entry
131 ; CHECK-NEXT: vsetvli zero, a0, e16, m1, tu, ma
132 ; CHECK-NEXT: vfredmin.vs v8, v9, v10, v0.t
135 %a = call <vscale x 4 x half> @llvm.riscv.vfredmin.mask.nxv4f16.nxv4f16.nxv4i1(
136 <vscale x 4 x half> %0,
137 <vscale x 4 x half> %1,
138 <vscale x 4 x half> %2,
139 <vscale x 4 x i1> %3,
142 ret <vscale x 4 x half> %a
145 declare <vscale x 4 x half> @llvm.riscv.vfredmin.nxv4f16.nxv8f16(
151 define <vscale x 4 x half> @intrinsic_vfredmin_vs_nxv4f16_nxv8f16_nxv4f16(<vscale x 4 x half> %0, <vscale x 8 x half> %1, <vscale x 4 x half> %2, iXLen %3) nounwind {
152 ; CHECK-LABEL: intrinsic_vfredmin_vs_nxv4f16_nxv8f16_nxv4f16:
153 ; CHECK: # %bb.0: # %entry
154 ; CHECK-NEXT: vsetvli zero, a0, e16, m2, tu, ma
155 ; CHECK-NEXT: vfredmin.vs v8, v10, v9
158 %a = call <vscale x 4 x half> @llvm.riscv.vfredmin.nxv4f16.nxv8f16(
159 <vscale x 4 x half> %0,
160 <vscale x 8 x half> %1,
161 <vscale x 4 x half> %2,
164 ret <vscale x 4 x half> %a
167 declare <vscale x 4 x half> @llvm.riscv.vfredmin.mask.nxv4f16.nxv8f16.nxv8i1(
174 define <vscale x 4 x half> @intrinsic_vfredmin_mask_vs_nxv4f16_nxv8f16_nxv4f16(<vscale x 4 x half> %0, <vscale x 8 x half> %1, <vscale x 4 x half> %2, <vscale x 8 x i1> %3, iXLen %4) nounwind {
175 ; CHECK-LABEL: intrinsic_vfredmin_mask_vs_nxv4f16_nxv8f16_nxv4f16:
176 ; CHECK: # %bb.0: # %entry
177 ; CHECK-NEXT: vsetvli zero, a0, e16, m2, tu, ma
178 ; CHECK-NEXT: vfredmin.vs v8, v10, v9, v0.t
181 %a = call <vscale x 4 x half> @llvm.riscv.vfredmin.mask.nxv4f16.nxv8f16.nxv8i1(
182 <vscale x 4 x half> %0,
183 <vscale x 8 x half> %1,
184 <vscale x 4 x half> %2,
185 <vscale x 8 x i1> %3,
188 ret <vscale x 4 x half> %a
191 declare <vscale x 4 x half> @llvm.riscv.vfredmin.nxv4f16.nxv16f16(
193 <vscale x 16 x half>,
197 define <vscale x 4 x half> @intrinsic_vfredmin_vs_nxv4f16_nxv16f16_nxv4f16(<vscale x 4 x half> %0, <vscale x 16 x half> %1, <vscale x 4 x half> %2, iXLen %3) nounwind {
198 ; CHECK-LABEL: intrinsic_vfredmin_vs_nxv4f16_nxv16f16_nxv4f16:
199 ; CHECK: # %bb.0: # %entry
200 ; CHECK-NEXT: vsetvli zero, a0, e16, m4, tu, ma
201 ; CHECK-NEXT: vfredmin.vs v8, v12, v9
204 %a = call <vscale x 4 x half> @llvm.riscv.vfredmin.nxv4f16.nxv16f16(
205 <vscale x 4 x half> %0,
206 <vscale x 16 x half> %1,
207 <vscale x 4 x half> %2,
210 ret <vscale x 4 x half> %a
213 declare <vscale x 4 x half> @llvm.riscv.vfredmin.mask.nxv4f16.nxv16f16.nxv16i1(
215 <vscale x 16 x half>,
220 define <vscale x 4 x half> @intrinsic_vfredmin_mask_vs_nxv4f16_nxv16f16_nxv4f16(<vscale x 4 x half> %0, <vscale x 16 x half> %1, <vscale x 4 x half> %2, <vscale x 16 x i1> %3, iXLen %4) nounwind {
221 ; CHECK-LABEL: intrinsic_vfredmin_mask_vs_nxv4f16_nxv16f16_nxv4f16:
222 ; CHECK: # %bb.0: # %entry
223 ; CHECK-NEXT: vsetvli zero, a0, e16, m4, tu, ma
224 ; CHECK-NEXT: vfredmin.vs v8, v12, v9, v0.t
227 %a = call <vscale x 4 x half> @llvm.riscv.vfredmin.mask.nxv4f16.nxv16f16.nxv16i1(
228 <vscale x 4 x half> %0,
229 <vscale x 16 x half> %1,
230 <vscale x 4 x half> %2,
231 <vscale x 16 x i1> %3,
234 ret <vscale x 4 x half> %a
237 declare <vscale x 4 x half> @llvm.riscv.vfredmin.nxv4f16.nxv32f16(
239 <vscale x 32 x half>,
243 define <vscale x 4 x half> @intrinsic_vfredmin_vs_nxv4f16_nxv32f16_nxv4f16(<vscale x 4 x half> %0, <vscale x 32 x half> %1, <vscale x 4 x half> %2, iXLen %3) nounwind {
244 ; CHECK-LABEL: intrinsic_vfredmin_vs_nxv4f16_nxv32f16_nxv4f16:
245 ; CHECK: # %bb.0: # %entry
246 ; CHECK-NEXT: vsetvli zero, a0, e16, m8, tu, ma
247 ; CHECK-NEXT: vfredmin.vs v8, v16, v9
250 %a = call <vscale x 4 x half> @llvm.riscv.vfredmin.nxv4f16.nxv32f16(
251 <vscale x 4 x half> %0,
252 <vscale x 32 x half> %1,
253 <vscale x 4 x half> %2,
256 ret <vscale x 4 x half> %a
259 declare <vscale x 4 x half> @llvm.riscv.vfredmin.mask.nxv4f16.nxv32f16.nxv32i1(
261 <vscale x 32 x half>,
266 define <vscale x 4 x half> @intrinsic_vfredmin_mask_vs_nxv4f16_nxv32f16_nxv4f16(<vscale x 4 x half> %0, <vscale x 32 x half> %1, <vscale x 4 x half> %2, <vscale x 32 x i1> %3, iXLen %4) nounwind {
267 ; CHECK-LABEL: intrinsic_vfredmin_mask_vs_nxv4f16_nxv32f16_nxv4f16:
268 ; CHECK: # %bb.0: # %entry
269 ; CHECK-NEXT: vsetvli zero, a0, e16, m8, tu, ma
270 ; CHECK-NEXT: vfredmin.vs v8, v16, v9, v0.t
273 %a = call <vscale x 4 x half> @llvm.riscv.vfredmin.mask.nxv4f16.nxv32f16.nxv32i1(
274 <vscale x 4 x half> %0,
275 <vscale x 32 x half> %1,
276 <vscale x 4 x half> %2,
277 <vscale x 32 x i1> %3,
280 ret <vscale x 4 x half> %a
283 declare <vscale x 2 x float> @llvm.riscv.vfredmin.nxv2f32.nxv1f32(
284 <vscale x 2 x float>,
285 <vscale x 1 x float>,
286 <vscale x 2 x float>,
289 define <vscale x 2 x float> @intrinsic_vfredmin_vs_nxv2f32_nxv1f32_nxv2f32(<vscale x 2 x float> %0, <vscale x 1 x float> %1, <vscale x 2 x float> %2, iXLen %3) nounwind {
290 ; CHECK-LABEL: intrinsic_vfredmin_vs_nxv2f32_nxv1f32_nxv2f32:
291 ; CHECK: # %bb.0: # %entry
292 ; CHECK-NEXT: vsetvli zero, a0, e32, mf2, tu, ma
293 ; CHECK-NEXT: vfredmin.vs v8, v9, v10
296 %a = call <vscale x 2 x float> @llvm.riscv.vfredmin.nxv2f32.nxv1f32(
297 <vscale x 2 x float> %0,
298 <vscale x 1 x float> %1,
299 <vscale x 2 x float> %2,
302 ret <vscale x 2 x float> %a
305 declare <vscale x 2 x float> @llvm.riscv.vfredmin.mask.nxv2f32.nxv1f32.nxv1i1(
306 <vscale x 2 x float>,
307 <vscale x 1 x float>,
308 <vscale x 2 x float>,
312 define <vscale x 2 x float> @intrinsic_vfredmin_mask_vs_nxv2f32_nxv1f32_nxv2f32(<vscale x 2 x float> %0, <vscale x 1 x float> %1, <vscale x 2 x float> %2, <vscale x 1 x i1> %3, iXLen %4) nounwind {
313 ; CHECK-LABEL: intrinsic_vfredmin_mask_vs_nxv2f32_nxv1f32_nxv2f32:
314 ; CHECK: # %bb.0: # %entry
315 ; CHECK-NEXT: vsetvli zero, a0, e32, mf2, tu, ma
316 ; CHECK-NEXT: vfredmin.vs v8, v9, v10, v0.t
319 %a = call <vscale x 2 x float> @llvm.riscv.vfredmin.mask.nxv2f32.nxv1f32.nxv1i1(
320 <vscale x 2 x float> %0,
321 <vscale x 1 x float> %1,
322 <vscale x 2 x float> %2,
323 <vscale x 1 x i1> %3,
326 ret <vscale x 2 x float> %a
329 declare <vscale x 2 x float> @llvm.riscv.vfredmin.nxv2f32.nxv2f32(
330 <vscale x 2 x float>,
331 <vscale x 2 x float>,
332 <vscale x 2 x float>,
335 define <vscale x 2 x float> @intrinsic_vfredmin_vs_nxv2f32_nxv2f32_nxv2f32(<vscale x 2 x float> %0, <vscale x 2 x float> %1, <vscale x 2 x float> %2, iXLen %3) nounwind {
336 ; CHECK-LABEL: intrinsic_vfredmin_vs_nxv2f32_nxv2f32_nxv2f32:
337 ; CHECK: # %bb.0: # %entry
338 ; CHECK-NEXT: vsetvli zero, a0, e32, m1, tu, ma
339 ; CHECK-NEXT: vfredmin.vs v8, v9, v10
342 %a = call <vscale x 2 x float> @llvm.riscv.vfredmin.nxv2f32.nxv2f32(
343 <vscale x 2 x float> %0,
344 <vscale x 2 x float> %1,
345 <vscale x 2 x float> %2,
348 ret <vscale x 2 x float> %a
351 declare <vscale x 2 x float> @llvm.riscv.vfredmin.mask.nxv2f32.nxv2f32.nxv2i1(
352 <vscale x 2 x float>,
353 <vscale x 2 x float>,
354 <vscale x 2 x float>,
358 define <vscale x 2 x float> @intrinsic_vfredmin_mask_vs_nxv2f32_nxv2f32_nxv2f32(<vscale x 2 x float> %0, <vscale x 2 x float> %1, <vscale x 2 x float> %2, <vscale x 2 x i1> %3, iXLen %4) nounwind {
359 ; CHECK-LABEL: intrinsic_vfredmin_mask_vs_nxv2f32_nxv2f32_nxv2f32:
360 ; CHECK: # %bb.0: # %entry
361 ; CHECK-NEXT: vsetvli zero, a0, e32, m1, tu, ma
362 ; CHECK-NEXT: vfredmin.vs v8, v9, v10, v0.t
365 %a = call <vscale x 2 x float> @llvm.riscv.vfredmin.mask.nxv2f32.nxv2f32.nxv2i1(
366 <vscale x 2 x float> %0,
367 <vscale x 2 x float> %1,
368 <vscale x 2 x float> %2,
369 <vscale x 2 x i1> %3,
372 ret <vscale x 2 x float> %a
375 declare <vscale x 2 x float> @llvm.riscv.vfredmin.nxv2f32.nxv4f32(
376 <vscale x 2 x float>,
377 <vscale x 4 x float>,
378 <vscale x 2 x float>,
381 define <vscale x 2 x float> @intrinsic_vfredmin_vs_nxv2f32_nxv4f32_nxv2f32(<vscale x 2 x float> %0, <vscale x 4 x float> %1, <vscale x 2 x float> %2, iXLen %3) nounwind {
382 ; CHECK-LABEL: intrinsic_vfredmin_vs_nxv2f32_nxv4f32_nxv2f32:
383 ; CHECK: # %bb.0: # %entry
384 ; CHECK-NEXT: vsetvli zero, a0, e32, m2, tu, ma
385 ; CHECK-NEXT: vfredmin.vs v8, v10, v9
388 %a = call <vscale x 2 x float> @llvm.riscv.vfredmin.nxv2f32.nxv4f32(
389 <vscale x 2 x float> %0,
390 <vscale x 4 x float> %1,
391 <vscale x 2 x float> %2,
394 ret <vscale x 2 x float> %a
397 declare <vscale x 2 x float> @llvm.riscv.vfredmin.mask.nxv2f32.nxv4f32.nxv4i1(
398 <vscale x 2 x float>,
399 <vscale x 4 x float>,
400 <vscale x 2 x float>,
404 define <vscale x 2 x float> @intrinsic_vfredmin_mask_vs_nxv2f32_nxv4f32_nxv2f32(<vscale x 2 x float> %0, <vscale x 4 x float> %1, <vscale x 2 x float> %2, <vscale x 4 x i1> %3, iXLen %4) nounwind {
405 ; CHECK-LABEL: intrinsic_vfredmin_mask_vs_nxv2f32_nxv4f32_nxv2f32:
406 ; CHECK: # %bb.0: # %entry
407 ; CHECK-NEXT: vsetvli zero, a0, e32, m2, tu, ma
408 ; CHECK-NEXT: vfredmin.vs v8, v10, v9, v0.t
411 %a = call <vscale x 2 x float> @llvm.riscv.vfredmin.mask.nxv2f32.nxv4f32.nxv4i1(
412 <vscale x 2 x float> %0,
413 <vscale x 4 x float> %1,
414 <vscale x 2 x float> %2,
415 <vscale x 4 x i1> %3,
418 ret <vscale x 2 x float> %a
421 declare <vscale x 2 x float> @llvm.riscv.vfredmin.nxv2f32.nxv8f32(
422 <vscale x 2 x float>,
423 <vscale x 8 x float>,
424 <vscale x 2 x float>,
427 define <vscale x 2 x float> @intrinsic_vfredmin_vs_nxv2f32_nxv8f32_nxv2f32(<vscale x 2 x float> %0, <vscale x 8 x float> %1, <vscale x 2 x float> %2, iXLen %3) nounwind {
428 ; CHECK-LABEL: intrinsic_vfredmin_vs_nxv2f32_nxv8f32_nxv2f32:
429 ; CHECK: # %bb.0: # %entry
430 ; CHECK-NEXT: vsetvli zero, a0, e32, m4, tu, ma
431 ; CHECK-NEXT: vfredmin.vs v8, v12, v9
434 %a = call <vscale x 2 x float> @llvm.riscv.vfredmin.nxv2f32.nxv8f32(
435 <vscale x 2 x float> %0,
436 <vscale x 8 x float> %1,
437 <vscale x 2 x float> %2,
440 ret <vscale x 2 x float> %a
443 declare <vscale x 2 x float> @llvm.riscv.vfredmin.mask.nxv2f32.nxv8f32.nxv8i1(
444 <vscale x 2 x float>,
445 <vscale x 8 x float>,
446 <vscale x 2 x float>,
450 define <vscale x 2 x float> @intrinsic_vfredmin_mask_vs_nxv2f32_nxv8f32_nxv2f32(<vscale x 2 x float> %0, <vscale x 8 x float> %1, <vscale x 2 x float> %2, <vscale x 8 x i1> %3, iXLen %4) nounwind {
451 ; CHECK-LABEL: intrinsic_vfredmin_mask_vs_nxv2f32_nxv8f32_nxv2f32:
452 ; CHECK: # %bb.0: # %entry
453 ; CHECK-NEXT: vsetvli zero, a0, e32, m4, tu, ma
454 ; CHECK-NEXT: vfredmin.vs v8, v12, v9, v0.t
457 %a = call <vscale x 2 x float> @llvm.riscv.vfredmin.mask.nxv2f32.nxv8f32.nxv8i1(
458 <vscale x 2 x float> %0,
459 <vscale x 8 x float> %1,
460 <vscale x 2 x float> %2,
461 <vscale x 8 x i1> %3,
464 ret <vscale x 2 x float> %a
467 declare <vscale x 2 x float> @llvm.riscv.vfredmin.nxv2f32.nxv16f32(
468 <vscale x 2 x float>,
469 <vscale x 16 x float>,
470 <vscale x 2 x float>,
473 define <vscale x 2 x float> @intrinsic_vfredmin_vs_nxv2f32_nxv16f32_nxv2f32(<vscale x 2 x float> %0, <vscale x 16 x float> %1, <vscale x 2 x float> %2, iXLen %3) nounwind {
474 ; CHECK-LABEL: intrinsic_vfredmin_vs_nxv2f32_nxv16f32_nxv2f32:
475 ; CHECK: # %bb.0: # %entry
476 ; CHECK-NEXT: vsetvli zero, a0, e32, m8, tu, ma
477 ; CHECK-NEXT: vfredmin.vs v8, v16, v9
480 %a = call <vscale x 2 x float> @llvm.riscv.vfredmin.nxv2f32.nxv16f32(
481 <vscale x 2 x float> %0,
482 <vscale x 16 x float> %1,
483 <vscale x 2 x float> %2,
486 ret <vscale x 2 x float> %a
489 declare <vscale x 2 x float> @llvm.riscv.vfredmin.mask.nxv2f32.nxv16f32.nxv16i1(
490 <vscale x 2 x float>,
491 <vscale x 16 x float>,
492 <vscale x 2 x float>,
496 define <vscale x 2 x float> @intrinsic_vfredmin_mask_vs_nxv2f32_nxv16f32_nxv2f32(<vscale x 2 x float> %0, <vscale x 16 x float> %1, <vscale x 2 x float> %2, <vscale x 16 x i1> %3, iXLen %4) nounwind {
497 ; CHECK-LABEL: intrinsic_vfredmin_mask_vs_nxv2f32_nxv16f32_nxv2f32:
498 ; CHECK: # %bb.0: # %entry
499 ; CHECK-NEXT: vsetvli zero, a0, e32, m8, tu, ma
500 ; CHECK-NEXT: vfredmin.vs v8, v16, v9, v0.t
503 %a = call <vscale x 2 x float> @llvm.riscv.vfredmin.mask.nxv2f32.nxv16f32.nxv16i1(
504 <vscale x 2 x float> %0,
505 <vscale x 16 x float> %1,
506 <vscale x 2 x float> %2,
507 <vscale x 16 x i1> %3,
510 ret <vscale x 2 x float> %a
513 declare <vscale x 1 x double> @llvm.riscv.vfredmin.nxv1f64.nxv1f64(
514 <vscale x 1 x double>,
515 <vscale x 1 x double>,
516 <vscale x 1 x double>,
519 define <vscale x 1 x double> @intrinsic_vfredmin_vs_nxv1f64_nxv1f64_nxv1f64(<vscale x 1 x double> %0, <vscale x 1 x double> %1, <vscale x 1 x double> %2, iXLen %3) nounwind {
520 ; CHECK-LABEL: intrinsic_vfredmin_vs_nxv1f64_nxv1f64_nxv1f64:
521 ; CHECK: # %bb.0: # %entry
522 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, tu, ma
523 ; CHECK-NEXT: vfredmin.vs v8, v9, v10
526 %a = call <vscale x 1 x double> @llvm.riscv.vfredmin.nxv1f64.nxv1f64(
527 <vscale x 1 x double> %0,
528 <vscale x 1 x double> %1,
529 <vscale x 1 x double> %2,
532 ret <vscale x 1 x double> %a
535 declare <vscale x 1 x double> @llvm.riscv.vfredmin.mask.nxv1f64.nxv1f64.nxv1i1(
536 <vscale x 1 x double>,
537 <vscale x 1 x double>,
538 <vscale x 1 x double>,
542 define <vscale x 1 x double> @intrinsic_vfredmin_mask_vs_nxv1f64_nxv1f64_nxv1f64(<vscale x 1 x double> %0, <vscale x 1 x double> %1, <vscale x 1 x double> %2, <vscale x 1 x i1> %3, iXLen %4) nounwind {
543 ; CHECK-LABEL: intrinsic_vfredmin_mask_vs_nxv1f64_nxv1f64_nxv1f64:
544 ; CHECK: # %bb.0: # %entry
545 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, tu, ma
546 ; CHECK-NEXT: vfredmin.vs v8, v9, v10, v0.t
549 %a = call <vscale x 1 x double> @llvm.riscv.vfredmin.mask.nxv1f64.nxv1f64.nxv1i1(
550 <vscale x 1 x double> %0,
551 <vscale x 1 x double> %1,
552 <vscale x 1 x double> %2,
553 <vscale x 1 x i1> %3,
556 ret <vscale x 1 x double> %a
559 declare <vscale x 1 x double> @llvm.riscv.vfredmin.nxv1f64.nxv2f64(
560 <vscale x 1 x double>,
561 <vscale x 2 x double>,
562 <vscale x 1 x double>,
565 define <vscale x 1 x double> @intrinsic_vfredmin_vs_nxv1f64_nxv2f64_nxv1f64(<vscale x 1 x double> %0, <vscale x 2 x double> %1, <vscale x 1 x double> %2, iXLen %3) nounwind {
566 ; CHECK-LABEL: intrinsic_vfredmin_vs_nxv1f64_nxv2f64_nxv1f64:
567 ; CHECK: # %bb.0: # %entry
568 ; CHECK-NEXT: vsetvli zero, a0, e64, m2, tu, ma
569 ; CHECK-NEXT: vfredmin.vs v8, v10, v9
572 %a = call <vscale x 1 x double> @llvm.riscv.vfredmin.nxv1f64.nxv2f64(
573 <vscale x 1 x double> %0,
574 <vscale x 2 x double> %1,
575 <vscale x 1 x double> %2,
578 ret <vscale x 1 x double> %a
581 declare <vscale x 1 x double> @llvm.riscv.vfredmin.mask.nxv1f64.nxv2f64.nxv2i1(
582 <vscale x 1 x double>,
583 <vscale x 2 x double>,
584 <vscale x 1 x double>,
588 define <vscale x 1 x double> @intrinsic_vfredmin_mask_vs_nxv1f64_nxv2f64_nxv1f64(<vscale x 1 x double> %0, <vscale x 2 x double> %1, <vscale x 1 x double> %2, <vscale x 2 x i1> %3, iXLen %4) nounwind {
589 ; CHECK-LABEL: intrinsic_vfredmin_mask_vs_nxv1f64_nxv2f64_nxv1f64:
590 ; CHECK: # %bb.0: # %entry
591 ; CHECK-NEXT: vsetvli zero, a0, e64, m2, tu, ma
592 ; CHECK-NEXT: vfredmin.vs v8, v10, v9, v0.t
595 %a = call <vscale x 1 x double> @llvm.riscv.vfredmin.mask.nxv1f64.nxv2f64.nxv2i1(
596 <vscale x 1 x double> %0,
597 <vscale x 2 x double> %1,
598 <vscale x 1 x double> %2,
599 <vscale x 2 x i1> %3,
602 ret <vscale x 1 x double> %a
605 declare <vscale x 1 x double> @llvm.riscv.vfredmin.nxv1f64.nxv4f64(
606 <vscale x 1 x double>,
607 <vscale x 4 x double>,
608 <vscale x 1 x double>,
611 define <vscale x 1 x double> @intrinsic_vfredmin_vs_nxv1f64_nxv4f64_nxv1f64(<vscale x 1 x double> %0, <vscale x 4 x double> %1, <vscale x 1 x double> %2, iXLen %3) nounwind {
612 ; CHECK-LABEL: intrinsic_vfredmin_vs_nxv1f64_nxv4f64_nxv1f64:
613 ; CHECK: # %bb.0: # %entry
614 ; CHECK-NEXT: vsetvli zero, a0, e64, m4, tu, ma
615 ; CHECK-NEXT: vfredmin.vs v8, v12, v9
618 %a = call <vscale x 1 x double> @llvm.riscv.vfredmin.nxv1f64.nxv4f64(
619 <vscale x 1 x double> %0,
620 <vscale x 4 x double> %1,
621 <vscale x 1 x double> %2,
624 ret <vscale x 1 x double> %a
627 declare <vscale x 1 x double> @llvm.riscv.vfredmin.mask.nxv1f64.nxv4f64.nxv4i1(
628 <vscale x 1 x double>,
629 <vscale x 4 x double>,
630 <vscale x 1 x double>,
634 define <vscale x 1 x double> @intrinsic_vfredmin_mask_vs_nxv1f64_nxv4f64_nxv1f64(<vscale x 1 x double> %0, <vscale x 4 x double> %1, <vscale x 1 x double> %2, <vscale x 4 x i1> %3, iXLen %4) nounwind {
635 ; CHECK-LABEL: intrinsic_vfredmin_mask_vs_nxv1f64_nxv4f64_nxv1f64:
636 ; CHECK: # %bb.0: # %entry
637 ; CHECK-NEXT: vsetvli zero, a0, e64, m4, tu, ma
638 ; CHECK-NEXT: vfredmin.vs v8, v12, v9, v0.t
641 %a = call <vscale x 1 x double> @llvm.riscv.vfredmin.mask.nxv1f64.nxv4f64.nxv4i1(
642 <vscale x 1 x double> %0,
643 <vscale x 4 x double> %1,
644 <vscale x 1 x double> %2,
645 <vscale x 4 x i1> %3,
648 ret <vscale x 1 x double> %a
651 declare <vscale x 1 x double> @llvm.riscv.vfredmin.nxv1f64.nxv8f64(
652 <vscale x 1 x double>,
653 <vscale x 8 x double>,
654 <vscale x 1 x double>,
657 define <vscale x 1 x double> @intrinsic_vfredmin_vs_nxv1f64_nxv8f64_nxv1f64(<vscale x 1 x double> %0, <vscale x 8 x double> %1, <vscale x 1 x double> %2, iXLen %3) nounwind {
658 ; CHECK-LABEL: intrinsic_vfredmin_vs_nxv1f64_nxv8f64_nxv1f64:
659 ; CHECK: # %bb.0: # %entry
660 ; CHECK-NEXT: vsetvli zero, a0, e64, m8, tu, ma
661 ; CHECK-NEXT: vfredmin.vs v8, v16, v9
664 %a = call <vscale x 1 x double> @llvm.riscv.vfredmin.nxv1f64.nxv8f64(
665 <vscale x 1 x double> %0,
666 <vscale x 8 x double> %1,
667 <vscale x 1 x double> %2,
670 ret <vscale x 1 x double> %a
673 declare <vscale x 1 x double> @llvm.riscv.vfredmin.mask.nxv1f64.nxv8f64.nxv8i1(
674 <vscale x 1 x double>,
675 <vscale x 8 x double>,
676 <vscale x 1 x double>,
680 define <vscale x 1 x double> @intrinsic_vfredmin_mask_vs_nxv1f64_nxv8f64_nxv1f64(<vscale x 1 x double> %0, <vscale x 8 x double> %1, <vscale x 1 x double> %2, <vscale x 8 x i1> %3, iXLen %4) nounwind {
681 ; CHECK-LABEL: intrinsic_vfredmin_mask_vs_nxv1f64_nxv8f64_nxv1f64:
682 ; CHECK: # %bb.0: # %entry
683 ; CHECK-NEXT: vsetvli zero, a0, e64, m8, tu, ma
684 ; CHECK-NEXT: vfredmin.vs v8, v16, v9, v0.t
687 %a = call <vscale x 1 x double> @llvm.riscv.vfredmin.mask.nxv1f64.nxv8f64.nxv8i1(
688 <vscale x 1 x double> %0,
689 <vscale x 8 x double> %1,
690 <vscale x 1 x double> %2,
691 <vscale x 8 x i1> %3,
694 ret <vscale x 1 x double> %a