[RISCV] Support postRA vsetvl insertion pass (#70549)
[llvm-project.git] / llvm / test / CodeGen / RISCV / rvv / vredmin.ll
blob3b213eafff8b959a1eba650c7244bfcec38013be
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 \
3 ; RUN:   -verify-machineinstrs | FileCheck %s
4 ; RUN: sed 's/iXLen/i64/g' %s | llc -mtriple=riscv64 -mattr=+v \
5 ; RUN:   -verify-machineinstrs | FileCheck %s
7 declare <vscale x 8 x i8> @llvm.riscv.vredmin.nxv8i8.nxv1i8(
8   <vscale x 8 x i8>,
9   <vscale x 1 x i8>,
10   <vscale x 8 x i8>,
11   iXLen);
13 define <vscale x 8 x i8> @intrinsic_vredmin_vs_nxv8i8_nxv1i8_nxv8i8(<vscale x 8 x i8> %0, <vscale x 1 x i8> %1, <vscale x 8 x i8> %2, iXLen %3) nounwind {
14 ; CHECK-LABEL: intrinsic_vredmin_vs_nxv8i8_nxv1i8_nxv8i8:
15 ; CHECK:       # %bb.0: # %entry
16 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf8, ta, ma
17 ; CHECK-NEXT:    vredmin.vs v8, v9, v10
18 ; CHECK-NEXT:    ret
19 entry:
20   %a = call <vscale x 8 x i8> @llvm.riscv.vredmin.nxv8i8.nxv1i8(
21     <vscale x 8 x i8> %0,
22     <vscale x 1 x i8> %1,
23     <vscale x 8 x i8> %2,
24     iXLen %3)
26   ret <vscale x 8 x i8> %a
29 declare <vscale x 8 x i8> @llvm.riscv.vredmin.mask.nxv8i8.nxv1i8(
30   <vscale x 8 x i8>,
31   <vscale x 1 x i8>,
32   <vscale x 8 x i8>,
33   <vscale x 1 x i1>,
34   iXLen);
36 define <vscale x 8 x i8> @intrinsic_vredmin_mask_vs_nxv8i8_nxv1i8_nxv8i8(<vscale x 8 x i8> %0, <vscale x 1 x i8> %1, <vscale x 8 x i8> %2, <vscale x 1 x i1> %3, iXLen %4) nounwind {
37 ; CHECK-LABEL: intrinsic_vredmin_mask_vs_nxv8i8_nxv1i8_nxv8i8:
38 ; CHECK:       # %bb.0: # %entry
39 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf8, ta, ma
40 ; CHECK-NEXT:    vredmin.vs v8, v9, v10, v0.t
41 ; CHECK-NEXT:    ret
42 entry:
43   %a = call <vscale x 8 x i8> @llvm.riscv.vredmin.mask.nxv8i8.nxv1i8(
44     <vscale x 8 x i8> %0,
45     <vscale x 1 x i8> %1,
46     <vscale x 8 x i8> %2,
47     <vscale x 1 x i1> %3,
48     iXLen %4)
50   ret <vscale x 8 x i8> %a
53 declare <vscale x 8 x i8> @llvm.riscv.vredmin.nxv8i8.nxv2i8(
54   <vscale x 8 x i8>,
55   <vscale x 2 x i8>,
56   <vscale x 8 x i8>,
57   iXLen);
59 define <vscale x 8 x i8> @intrinsic_vredmin_vs_nxv8i8_nxv2i8_nxv8i8(<vscale x 8 x i8> %0, <vscale x 2 x i8> %1, <vscale x 8 x i8> %2, iXLen %3) nounwind {
60 ; CHECK-LABEL: intrinsic_vredmin_vs_nxv8i8_nxv2i8_nxv8i8:
61 ; CHECK:       # %bb.0: # %entry
62 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf4, ta, ma
63 ; CHECK-NEXT:    vredmin.vs v8, v9, v10
64 ; CHECK-NEXT:    ret
65 entry:
66   %a = call <vscale x 8 x i8> @llvm.riscv.vredmin.nxv8i8.nxv2i8(
67     <vscale x 8 x i8> %0,
68     <vscale x 2 x i8> %1,
69     <vscale x 8 x i8> %2,
70     iXLen %3)
72   ret <vscale x 8 x i8> %a
75 declare <vscale x 8 x i8> @llvm.riscv.vredmin.mask.nxv8i8.nxv2i8(
76   <vscale x 8 x i8>,
77   <vscale x 2 x i8>,
78   <vscale x 8 x i8>,
79   <vscale x 2 x i1>,
80   iXLen);
82 define <vscale x 8 x i8> @intrinsic_vredmin_mask_vs_nxv8i8_nxv2i8_nxv8i8(<vscale x 8 x i8> %0, <vscale x 2 x i8> %1, <vscale x 8 x i8> %2, <vscale x 2 x i1> %3, iXLen %4) nounwind {
83 ; CHECK-LABEL: intrinsic_vredmin_mask_vs_nxv8i8_nxv2i8_nxv8i8:
84 ; CHECK:       # %bb.0: # %entry
85 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf4, ta, ma
86 ; CHECK-NEXT:    vredmin.vs v8, v9, v10, v0.t
87 ; CHECK-NEXT:    ret
88 entry:
89   %a = call <vscale x 8 x i8> @llvm.riscv.vredmin.mask.nxv8i8.nxv2i8(
90     <vscale x 8 x i8> %0,
91     <vscale x 2 x i8> %1,
92     <vscale x 8 x i8> %2,
93     <vscale x 2 x i1> %3,
94     iXLen %4)
96   ret <vscale x 8 x i8> %a
99 declare <vscale x 8 x i8> @llvm.riscv.vredmin.nxv8i8.nxv4i8(
100   <vscale x 8 x i8>,
101   <vscale x 4 x i8>,
102   <vscale x 8 x i8>,
103   iXLen);
105 define <vscale x 8 x i8> @intrinsic_vredmin_vs_nxv8i8_nxv4i8_nxv8i8(<vscale x 8 x i8> %0, <vscale x 4 x i8> %1, <vscale x 8 x i8> %2, iXLen %3) nounwind {
106 ; CHECK-LABEL: intrinsic_vredmin_vs_nxv8i8_nxv4i8_nxv8i8:
107 ; CHECK:       # %bb.0: # %entry
108 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf2, ta, ma
109 ; CHECK-NEXT:    vredmin.vs v8, v9, v10
110 ; CHECK-NEXT:    ret
111 entry:
112   %a = call <vscale x 8 x i8> @llvm.riscv.vredmin.nxv8i8.nxv4i8(
113     <vscale x 8 x i8> %0,
114     <vscale x 4 x i8> %1,
115     <vscale x 8 x i8> %2,
116     iXLen %3)
118   ret <vscale x 8 x i8> %a
121 declare <vscale x 8 x i8> @llvm.riscv.vredmin.mask.nxv8i8.nxv4i8(
122   <vscale x 8 x i8>,
123   <vscale x 4 x i8>,
124   <vscale x 8 x i8>,
125   <vscale x 4 x i1>,
126   iXLen);
128 define <vscale x 8 x i8> @intrinsic_vredmin_mask_vs_nxv8i8_nxv4i8_nxv8i8(<vscale x 8 x i8> %0, <vscale x 4 x i8> %1, <vscale x 8 x i8> %2, <vscale x 4 x i1> %3, iXLen %4) nounwind {
129 ; CHECK-LABEL: intrinsic_vredmin_mask_vs_nxv8i8_nxv4i8_nxv8i8:
130 ; CHECK:       # %bb.0: # %entry
131 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf2, ta, ma
132 ; CHECK-NEXT:    vredmin.vs v8, v9, v10, v0.t
133 ; CHECK-NEXT:    ret
134 entry:
135   %a = call <vscale x 8 x i8> @llvm.riscv.vredmin.mask.nxv8i8.nxv4i8(
136     <vscale x 8 x i8> %0,
137     <vscale x 4 x i8> %1,
138     <vscale x 8 x i8> %2,
139     <vscale x 4 x i1> %3,
140     iXLen %4)
142   ret <vscale x 8 x i8> %a
145 declare <vscale x 8 x i8> @llvm.riscv.vredmin.nxv8i8.nxv8i8(
146   <vscale x 8 x i8>,
147   <vscale x 8 x i8>,
148   <vscale x 8 x i8>,
149   iXLen);
151 define <vscale x 8 x i8> @intrinsic_vredmin_vs_nxv8i8_nxv8i8_nxv8i8(<vscale x 8 x i8> %0, <vscale x 8 x i8> %1, <vscale x 8 x i8> %2, iXLen %3) nounwind {
152 ; CHECK-LABEL: intrinsic_vredmin_vs_nxv8i8_nxv8i8_nxv8i8:
153 ; CHECK:       # %bb.0: # %entry
154 ; CHECK-NEXT:    vsetvli zero, a0, e8, m1, ta, ma
155 ; CHECK-NEXT:    vredmin.vs v8, v9, v10
156 ; CHECK-NEXT:    ret
157 entry:
158   %a = call <vscale x 8 x i8> @llvm.riscv.vredmin.nxv8i8.nxv8i8(
159     <vscale x 8 x i8> %0,
160     <vscale x 8 x i8> %1,
161     <vscale x 8 x i8> %2,
162     iXLen %3)
164   ret <vscale x 8 x i8> %a
167 declare <vscale x 8 x i8> @llvm.riscv.vredmin.mask.nxv8i8.nxv8i8(
168   <vscale x 8 x i8>,
169   <vscale x 8 x i8>,
170   <vscale x 8 x i8>,
171   <vscale x 8 x i1>,
172   iXLen);
174 define <vscale x 8 x i8> @intrinsic_vredmin_mask_vs_nxv8i8_nxv8i8_nxv8i8(<vscale x 8 x i8> %0, <vscale x 8 x i8> %1, <vscale x 8 x i8> %2, <vscale x 8 x i1> %3, iXLen %4) nounwind {
175 ; CHECK-LABEL: intrinsic_vredmin_mask_vs_nxv8i8_nxv8i8_nxv8i8:
176 ; CHECK:       # %bb.0: # %entry
177 ; CHECK-NEXT:    vsetvli zero, a0, e8, m1, ta, ma
178 ; CHECK-NEXT:    vredmin.vs v8, v9, v10, v0.t
179 ; CHECK-NEXT:    ret
180 entry:
181   %a = call <vscale x 8 x i8> @llvm.riscv.vredmin.mask.nxv8i8.nxv8i8(
182     <vscale x 8 x i8> %0,
183     <vscale x 8 x i8> %1,
184     <vscale x 8 x i8> %2,
185     <vscale x 8 x i1> %3,
186     iXLen %4)
188   ret <vscale x 8 x i8> %a
191 declare <vscale x 8 x i8> @llvm.riscv.vredmin.nxv8i8.nxv16i8(
192   <vscale x 8 x i8>,
193   <vscale x 16 x i8>,
194   <vscale x 8 x i8>,
195   iXLen);
197 define <vscale x 8 x i8> @intrinsic_vredmin_vs_nxv8i8_nxv16i8_nxv8i8(<vscale x 8 x i8> %0, <vscale x 16 x i8> %1, <vscale x 8 x i8> %2, iXLen %3) nounwind {
198 ; CHECK-LABEL: intrinsic_vredmin_vs_nxv8i8_nxv16i8_nxv8i8:
199 ; CHECK:       # %bb.0: # %entry
200 ; CHECK-NEXT:    vsetvli zero, a0, e8, m2, ta, ma
201 ; CHECK-NEXT:    vredmin.vs v8, v10, v9
202 ; CHECK-NEXT:    ret
203 entry:
204   %a = call <vscale x 8 x i8> @llvm.riscv.vredmin.nxv8i8.nxv16i8(
205     <vscale x 8 x i8> %0,
206     <vscale x 16 x i8> %1,
207     <vscale x 8 x i8> %2,
208     iXLen %3)
210   ret <vscale x 8 x i8> %a
213 declare <vscale x 8 x i8> @llvm.riscv.vredmin.mask.nxv8i8.nxv16i8(
214   <vscale x 8 x i8>,
215   <vscale x 16 x i8>,
216   <vscale x 8 x i8>,
217   <vscale x 16 x i1>,
218   iXLen);
220 define <vscale x 8 x i8> @intrinsic_vredmin_mask_vs_nxv8i8_nxv16i8_nxv8i8(<vscale x 8 x i8> %0, <vscale x 16 x i8> %1, <vscale x 8 x i8> %2, <vscale x 16 x i1> %3, iXLen %4) nounwind {
221 ; CHECK-LABEL: intrinsic_vredmin_mask_vs_nxv8i8_nxv16i8_nxv8i8:
222 ; CHECK:       # %bb.0: # %entry
223 ; CHECK-NEXT:    vsetvli zero, a0, e8, m2, ta, ma
224 ; CHECK-NEXT:    vredmin.vs v8, v10, v9, v0.t
225 ; CHECK-NEXT:    ret
226 entry:
227   %a = call <vscale x 8 x i8> @llvm.riscv.vredmin.mask.nxv8i8.nxv16i8(
228     <vscale x 8 x i8> %0,
229     <vscale x 16 x i8> %1,
230     <vscale x 8 x i8> %2,
231     <vscale x 16 x i1> %3,
232     iXLen %4)
234   ret <vscale x 8 x i8> %a
237 declare <vscale x 8 x i8> @llvm.riscv.vredmin.nxv8i8.nxv32i8(
238   <vscale x 8 x i8>,
239   <vscale x 32 x i8>,
240   <vscale x 8 x i8>,
241   iXLen);
243 define <vscale x 8 x i8> @intrinsic_vredmin_vs_nxv8i8_nxv32i8_nxv8i8(<vscale x 8 x i8> %0, <vscale x 32 x i8> %1, <vscale x 8 x i8> %2, iXLen %3) nounwind {
244 ; CHECK-LABEL: intrinsic_vredmin_vs_nxv8i8_nxv32i8_nxv8i8:
245 ; CHECK:       # %bb.0: # %entry
246 ; CHECK-NEXT:    vsetvli zero, a0, e8, m4, ta, ma
247 ; CHECK-NEXT:    vredmin.vs v8, v12, v9
248 ; CHECK-NEXT:    ret
249 entry:
250   %a = call <vscale x 8 x i8> @llvm.riscv.vredmin.nxv8i8.nxv32i8(
251     <vscale x 8 x i8> %0,
252     <vscale x 32 x i8> %1,
253     <vscale x 8 x i8> %2,
254     iXLen %3)
256   ret <vscale x 8 x i8> %a
259 declare <vscale x 8 x i8> @llvm.riscv.vredmin.mask.nxv8i8.nxv32i8(
260   <vscale x 8 x i8>,
261   <vscale x 32 x i8>,
262   <vscale x 8 x i8>,
263   <vscale x 32 x i1>,
264   iXLen);
266 define <vscale x 8 x i8> @intrinsic_vredmin_mask_vs_nxv8i8_nxv32i8_nxv8i8(<vscale x 8 x i8> %0, <vscale x 32 x i8> %1, <vscale x 8 x i8> %2, <vscale x 32 x i1> %3, iXLen %4) nounwind {
267 ; CHECK-LABEL: intrinsic_vredmin_mask_vs_nxv8i8_nxv32i8_nxv8i8:
268 ; CHECK:       # %bb.0: # %entry
269 ; CHECK-NEXT:    vsetvli zero, a0, e8, m4, ta, ma
270 ; CHECK-NEXT:    vredmin.vs v8, v12, v9, v0.t
271 ; CHECK-NEXT:    ret
272 entry:
273   %a = call <vscale x 8 x i8> @llvm.riscv.vredmin.mask.nxv8i8.nxv32i8(
274     <vscale x 8 x i8> %0,
275     <vscale x 32 x i8> %1,
276     <vscale x 8 x i8> %2,
277     <vscale x 32 x i1> %3,
278     iXLen %4)
280   ret <vscale x 8 x i8> %a
283 declare <vscale x 4 x i16> @llvm.riscv.vredmin.nxv4i16.nxv1i16(
284   <vscale x 4 x i16>,
285   <vscale x 1 x i16>,
286   <vscale x 4 x i16>,
287   iXLen);
289 define <vscale x 4 x i16> @intrinsic_vredmin_vs_nxv4i16_nxv1i16_nxv4i16(<vscale x 4 x i16> %0, <vscale x 1 x i16> %1, <vscale x 4 x i16> %2, iXLen %3) nounwind {
290 ; CHECK-LABEL: intrinsic_vredmin_vs_nxv4i16_nxv1i16_nxv4i16:
291 ; CHECK:       # %bb.0: # %entry
292 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma
293 ; CHECK-NEXT:    vredmin.vs v8, v9, v10
294 ; CHECK-NEXT:    ret
295 entry:
296   %a = call <vscale x 4 x i16> @llvm.riscv.vredmin.nxv4i16.nxv1i16(
297     <vscale x 4 x i16> %0,
298     <vscale x 1 x i16> %1,
299     <vscale x 4 x i16> %2,
300     iXLen %3)
302   ret <vscale x 4 x i16> %a
305 declare <vscale x 4 x i16> @llvm.riscv.vredmin.mask.nxv4i16.nxv1i16(
306   <vscale x 4 x i16>,
307   <vscale x 1 x i16>,
308   <vscale x 4 x i16>,
309   <vscale x 1 x i1>,
310   iXLen);
312 define <vscale x 4 x i16> @intrinsic_vredmin_mask_vs_nxv4i16_nxv1i16_nxv4i16(<vscale x 4 x i16> %0, <vscale x 1 x i16> %1, <vscale x 4 x i16> %2, <vscale x 1 x i1> %3, iXLen %4) nounwind {
313 ; CHECK-LABEL: intrinsic_vredmin_mask_vs_nxv4i16_nxv1i16_nxv4i16:
314 ; CHECK:       # %bb.0: # %entry
315 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma
316 ; CHECK-NEXT:    vredmin.vs v8, v9, v10, v0.t
317 ; CHECK-NEXT:    ret
318 entry:
319   %a = call <vscale x 4 x i16> @llvm.riscv.vredmin.mask.nxv4i16.nxv1i16(
320     <vscale x 4 x i16> %0,
321     <vscale x 1 x i16> %1,
322     <vscale x 4 x i16> %2,
323     <vscale x 1 x i1> %3,
324     iXLen %4)
326   ret <vscale x 4 x i16> %a
329 declare <vscale x 4 x i16> @llvm.riscv.vredmin.nxv4i16.nxv2i16(
330   <vscale x 4 x i16>,
331   <vscale x 2 x i16>,
332   <vscale x 4 x i16>,
333   iXLen);
335 define <vscale x 4 x i16> @intrinsic_vredmin_vs_nxv4i16_nxv2i16_nxv4i16(<vscale x 4 x i16> %0, <vscale x 2 x i16> %1, <vscale x 4 x i16> %2, iXLen %3) nounwind {
336 ; CHECK-LABEL: intrinsic_vredmin_vs_nxv4i16_nxv2i16_nxv4i16:
337 ; CHECK:       # %bb.0: # %entry
338 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf2, ta, ma
339 ; CHECK-NEXT:    vredmin.vs v8, v9, v10
340 ; CHECK-NEXT:    ret
341 entry:
342   %a = call <vscale x 4 x i16> @llvm.riscv.vredmin.nxv4i16.nxv2i16(
343     <vscale x 4 x i16> %0,
344     <vscale x 2 x i16> %1,
345     <vscale x 4 x i16> %2,
346     iXLen %3)
348   ret <vscale x 4 x i16> %a
351 declare <vscale x 4 x i16> @llvm.riscv.vredmin.mask.nxv4i16.nxv2i16(
352   <vscale x 4 x i16>,
353   <vscale x 2 x i16>,
354   <vscale x 4 x i16>,
355   <vscale x 2 x i1>,
356   iXLen);
358 define <vscale x 4 x i16> @intrinsic_vredmin_mask_vs_nxv4i16_nxv2i16_nxv4i16(<vscale x 4 x i16> %0, <vscale x 2 x i16> %1, <vscale x 4 x i16> %2, <vscale x 2 x i1> %3, iXLen %4) nounwind {
359 ; CHECK-LABEL: intrinsic_vredmin_mask_vs_nxv4i16_nxv2i16_nxv4i16:
360 ; CHECK:       # %bb.0: # %entry
361 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf2, ta, ma
362 ; CHECK-NEXT:    vredmin.vs v8, v9, v10, v0.t
363 ; CHECK-NEXT:    ret
364 entry:
365   %a = call <vscale x 4 x i16> @llvm.riscv.vredmin.mask.nxv4i16.nxv2i16(
366     <vscale x 4 x i16> %0,
367     <vscale x 2 x i16> %1,
368     <vscale x 4 x i16> %2,
369     <vscale x 2 x i1> %3,
370     iXLen %4)
372   ret <vscale x 4 x i16> %a
375 declare <vscale x 4 x i16> @llvm.riscv.vredmin.nxv4i16.nxv4i16(
376   <vscale x 4 x i16>,
377   <vscale x 4 x i16>,
378   <vscale x 4 x i16>,
379   iXLen);
381 define <vscale x 4 x i16> @intrinsic_vredmin_vs_nxv4i16_nxv4i16_nxv4i16(<vscale x 4 x i16> %0, <vscale x 4 x i16> %1, <vscale x 4 x i16> %2, iXLen %3) nounwind {
382 ; CHECK-LABEL: intrinsic_vredmin_vs_nxv4i16_nxv4i16_nxv4i16:
383 ; CHECK:       # %bb.0: # %entry
384 ; CHECK-NEXT:    vsetvli zero, a0, e16, m1, ta, ma
385 ; CHECK-NEXT:    vredmin.vs v8, v9, v10
386 ; CHECK-NEXT:    ret
387 entry:
388   %a = call <vscale x 4 x i16> @llvm.riscv.vredmin.nxv4i16.nxv4i16(
389     <vscale x 4 x i16> %0,
390     <vscale x 4 x i16> %1,
391     <vscale x 4 x i16> %2,
392     iXLen %3)
394   ret <vscale x 4 x i16> %a
397 declare <vscale x 4 x i16> @llvm.riscv.vredmin.mask.nxv4i16.nxv4i16(
398   <vscale x 4 x i16>,
399   <vscale x 4 x i16>,
400   <vscale x 4 x i16>,
401   <vscale x 4 x i1>,
402   iXLen);
404 define <vscale x 4 x i16> @intrinsic_vredmin_mask_vs_nxv4i16_nxv4i16_nxv4i16(<vscale x 4 x i16> %0, <vscale x 4 x i16> %1, <vscale x 4 x i16> %2, <vscale x 4 x i1> %3, iXLen %4) nounwind {
405 ; CHECK-LABEL: intrinsic_vredmin_mask_vs_nxv4i16_nxv4i16_nxv4i16:
406 ; CHECK:       # %bb.0: # %entry
407 ; CHECK-NEXT:    vsetvli zero, a0, e16, m1, ta, ma
408 ; CHECK-NEXT:    vredmin.vs v8, v9, v10, v0.t
409 ; CHECK-NEXT:    ret
410 entry:
411   %a = call <vscale x 4 x i16> @llvm.riscv.vredmin.mask.nxv4i16.nxv4i16(
412     <vscale x 4 x i16> %0,
413     <vscale x 4 x i16> %1,
414     <vscale x 4 x i16> %2,
415     <vscale x 4 x i1> %3,
416     iXLen %4)
418   ret <vscale x 4 x i16> %a
421 declare <vscale x 4 x i16> @llvm.riscv.vredmin.nxv4i16.nxv8i16(
422   <vscale x 4 x i16>,
423   <vscale x 8 x i16>,
424   <vscale x 4 x i16>,
425   iXLen);
427 define <vscale x 4 x i16> @intrinsic_vredmin_vs_nxv4i16_nxv8i16_nxv4i16(<vscale x 4 x i16> %0, <vscale x 8 x i16> %1, <vscale x 4 x i16> %2, iXLen %3) nounwind {
428 ; CHECK-LABEL: intrinsic_vredmin_vs_nxv4i16_nxv8i16_nxv4i16:
429 ; CHECK:       # %bb.0: # %entry
430 ; CHECK-NEXT:    vsetvli zero, a0, e16, m2, ta, ma
431 ; CHECK-NEXT:    vredmin.vs v8, v10, v9
432 ; CHECK-NEXT:    ret
433 entry:
434   %a = call <vscale x 4 x i16> @llvm.riscv.vredmin.nxv4i16.nxv8i16(
435     <vscale x 4 x i16> %0,
436     <vscale x 8 x i16> %1,
437     <vscale x 4 x i16> %2,
438     iXLen %3)
440   ret <vscale x 4 x i16> %a
443 declare <vscale x 4 x i16> @llvm.riscv.vredmin.mask.nxv4i16.nxv8i16(
444   <vscale x 4 x i16>,
445   <vscale x 8 x i16>,
446   <vscale x 4 x i16>,
447   <vscale x 8 x i1>,
448   iXLen);
450 define <vscale x 4 x i16> @intrinsic_vredmin_mask_vs_nxv4i16_nxv8i16_nxv4i16(<vscale x 4 x i16> %0, <vscale x 8 x i16> %1, <vscale x 4 x i16> %2, <vscale x 8 x i1> %3, iXLen %4) nounwind {
451 ; CHECK-LABEL: intrinsic_vredmin_mask_vs_nxv4i16_nxv8i16_nxv4i16:
452 ; CHECK:       # %bb.0: # %entry
453 ; CHECK-NEXT:    vsetvli zero, a0, e16, m2, ta, ma
454 ; CHECK-NEXT:    vredmin.vs v8, v10, v9, v0.t
455 ; CHECK-NEXT:    ret
456 entry:
457   %a = call <vscale x 4 x i16> @llvm.riscv.vredmin.mask.nxv4i16.nxv8i16(
458     <vscale x 4 x i16> %0,
459     <vscale x 8 x i16> %1,
460     <vscale x 4 x i16> %2,
461     <vscale x 8 x i1> %3,
462     iXLen %4)
464   ret <vscale x 4 x i16> %a
467 declare <vscale x 4 x i16> @llvm.riscv.vredmin.nxv4i16.nxv16i16(
468   <vscale x 4 x i16>,
469   <vscale x 16 x i16>,
470   <vscale x 4 x i16>,
471   iXLen);
473 define <vscale x 4 x i16> @intrinsic_vredmin_vs_nxv4i16_nxv16i16_nxv4i16(<vscale x 4 x i16> %0, <vscale x 16 x i16> %1, <vscale x 4 x i16> %2, iXLen %3) nounwind {
474 ; CHECK-LABEL: intrinsic_vredmin_vs_nxv4i16_nxv16i16_nxv4i16:
475 ; CHECK:       # %bb.0: # %entry
476 ; CHECK-NEXT:    vsetvli zero, a0, e16, m4, ta, ma
477 ; CHECK-NEXT:    vredmin.vs v8, v12, v9
478 ; CHECK-NEXT:    ret
479 entry:
480   %a = call <vscale x 4 x i16> @llvm.riscv.vredmin.nxv4i16.nxv16i16(
481     <vscale x 4 x i16> %0,
482     <vscale x 16 x i16> %1,
483     <vscale x 4 x i16> %2,
484     iXLen %3)
486   ret <vscale x 4 x i16> %a
489 declare <vscale x 4 x i16> @llvm.riscv.vredmin.mask.nxv4i16.nxv16i16(
490   <vscale x 4 x i16>,
491   <vscale x 16 x i16>,
492   <vscale x 4 x i16>,
493   <vscale x 16 x i1>,
494   iXLen);
496 define <vscale x 4 x i16> @intrinsic_vredmin_mask_vs_nxv4i16_nxv16i16_nxv4i16(<vscale x 4 x i16> %0, <vscale x 16 x i16> %1, <vscale x 4 x i16> %2, <vscale x 16 x i1> %3, iXLen %4) nounwind {
497 ; CHECK-LABEL: intrinsic_vredmin_mask_vs_nxv4i16_nxv16i16_nxv4i16:
498 ; CHECK:       # %bb.0: # %entry
499 ; CHECK-NEXT:    vsetvli zero, a0, e16, m4, ta, ma
500 ; CHECK-NEXT:    vredmin.vs v8, v12, v9, v0.t
501 ; CHECK-NEXT:    ret
502 entry:
503   %a = call <vscale x 4 x i16> @llvm.riscv.vredmin.mask.nxv4i16.nxv16i16(
504     <vscale x 4 x i16> %0,
505     <vscale x 16 x i16> %1,
506     <vscale x 4 x i16> %2,
507     <vscale x 16 x i1> %3,
508     iXLen %4)
510   ret <vscale x 4 x i16> %a
513 declare <vscale x 4 x i16> @llvm.riscv.vredmin.nxv4i16.nxv32i16(
514   <vscale x 4 x i16>,
515   <vscale x 32 x i16>,
516   <vscale x 4 x i16>,
517   iXLen);
519 define <vscale x 4 x i16> @intrinsic_vredmin_vs_nxv4i16_nxv32i16_nxv4i16(<vscale x 4 x i16> %0, <vscale x 32 x i16> %1, <vscale x 4 x i16> %2, iXLen %3) nounwind {
520 ; CHECK-LABEL: intrinsic_vredmin_vs_nxv4i16_nxv32i16_nxv4i16:
521 ; CHECK:       # %bb.0: # %entry
522 ; CHECK-NEXT:    vsetvli zero, a0, e16, m8, ta, ma
523 ; CHECK-NEXT:    vredmin.vs v8, v16, v9
524 ; CHECK-NEXT:    ret
525 entry:
526   %a = call <vscale x 4 x i16> @llvm.riscv.vredmin.nxv4i16.nxv32i16(
527     <vscale x 4 x i16> %0,
528     <vscale x 32 x i16> %1,
529     <vscale x 4 x i16> %2,
530     iXLen %3)
532   ret <vscale x 4 x i16> %a
535 declare <vscale x 4 x i16> @llvm.riscv.vredmin.mask.nxv4i16.nxv32i16(
536   <vscale x 4 x i16>,
537   <vscale x 32 x i16>,
538   <vscale x 4 x i16>,
539   <vscale x 32 x i1>,
540   iXLen);
542 define <vscale x 4 x i16> @intrinsic_vredmin_mask_vs_nxv4i16_nxv32i16_nxv4i16(<vscale x 4 x i16> %0, <vscale x 32 x i16> %1, <vscale x 4 x i16> %2, <vscale x 32 x i1> %3, iXLen %4) nounwind {
543 ; CHECK-LABEL: intrinsic_vredmin_mask_vs_nxv4i16_nxv32i16_nxv4i16:
544 ; CHECK:       # %bb.0: # %entry
545 ; CHECK-NEXT:    vsetvli zero, a0, e16, m8, ta, ma
546 ; CHECK-NEXT:    vredmin.vs v8, v16, v9, v0.t
547 ; CHECK-NEXT:    ret
548 entry:
549   %a = call <vscale x 4 x i16> @llvm.riscv.vredmin.mask.nxv4i16.nxv32i16(
550     <vscale x 4 x i16> %0,
551     <vscale x 32 x i16> %1,
552     <vscale x 4 x i16> %2,
553     <vscale x 32 x i1> %3,
554     iXLen %4)
556   ret <vscale x 4 x i16> %a
559 declare <vscale x 2 x i32> @llvm.riscv.vredmin.nxv2i32.nxv1i32(
560   <vscale x 2 x i32>,
561   <vscale x 1 x i32>,
562   <vscale x 2 x i32>,
563   iXLen);
565 define <vscale x 2 x i32> @intrinsic_vredmin_vs_nxv2i32_nxv1i32_nxv2i32(<vscale x 2 x i32> %0, <vscale x 1 x i32> %1, <vscale x 2 x i32> %2, iXLen %3) nounwind {
566 ; CHECK-LABEL: intrinsic_vredmin_vs_nxv2i32_nxv1i32_nxv2i32:
567 ; CHECK:       # %bb.0: # %entry
568 ; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma
569 ; CHECK-NEXT:    vredmin.vs v8, v9, v10
570 ; CHECK-NEXT:    ret
571 entry:
572   %a = call <vscale x 2 x i32> @llvm.riscv.vredmin.nxv2i32.nxv1i32(
573     <vscale x 2 x i32> %0,
574     <vscale x 1 x i32> %1,
575     <vscale x 2 x i32> %2,
576     iXLen %3)
578   ret <vscale x 2 x i32> %a
581 declare <vscale x 2 x i32> @llvm.riscv.vredmin.mask.nxv2i32.nxv1i32(
582   <vscale x 2 x i32>,
583   <vscale x 1 x i32>,
584   <vscale x 2 x i32>,
585   <vscale x 1 x i1>,
586   iXLen);
588 define <vscale x 2 x i32> @intrinsic_vredmin_mask_vs_nxv2i32_nxv1i32_nxv2i32(<vscale x 2 x i32> %0, <vscale x 1 x i32> %1, <vscale x 2 x i32> %2, <vscale x 1 x i1> %3, iXLen %4) nounwind {
589 ; CHECK-LABEL: intrinsic_vredmin_mask_vs_nxv2i32_nxv1i32_nxv2i32:
590 ; CHECK:       # %bb.0: # %entry
591 ; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma
592 ; CHECK-NEXT:    vredmin.vs v8, v9, v10, v0.t
593 ; CHECK-NEXT:    ret
594 entry:
595   %a = call <vscale x 2 x i32> @llvm.riscv.vredmin.mask.nxv2i32.nxv1i32(
596     <vscale x 2 x i32> %0,
597     <vscale x 1 x i32> %1,
598     <vscale x 2 x i32> %2,
599     <vscale x 1 x i1> %3,
600     iXLen %4)
602   ret <vscale x 2 x i32> %a
605 declare <vscale x 2 x i32> @llvm.riscv.vredmin.nxv2i32.nxv2i32(
606   <vscale x 2 x i32>,
607   <vscale x 2 x i32>,
608   <vscale x 2 x i32>,
609   iXLen);
611 define <vscale x 2 x i32> @intrinsic_vredmin_vs_nxv2i32_nxv2i32_nxv2i32(<vscale x 2 x i32> %0, <vscale x 2 x i32> %1, <vscale x 2 x i32> %2, iXLen %3) nounwind {
612 ; CHECK-LABEL: intrinsic_vredmin_vs_nxv2i32_nxv2i32_nxv2i32:
613 ; CHECK:       # %bb.0: # %entry
614 ; CHECK-NEXT:    vsetvli zero, a0, e32, m1, ta, ma
615 ; CHECK-NEXT:    vredmin.vs v8, v9, v10
616 ; CHECK-NEXT:    ret
617 entry:
618   %a = call <vscale x 2 x i32> @llvm.riscv.vredmin.nxv2i32.nxv2i32(
619     <vscale x 2 x i32> %0,
620     <vscale x 2 x i32> %1,
621     <vscale x 2 x i32> %2,
622     iXLen %3)
624   ret <vscale x 2 x i32> %a
627 declare <vscale x 2 x i32> @llvm.riscv.vredmin.mask.nxv2i32.nxv2i32(
628   <vscale x 2 x i32>,
629   <vscale x 2 x i32>,
630   <vscale x 2 x i32>,
631   <vscale x 2 x i1>,
632   iXLen);
634 define <vscale x 2 x i32> @intrinsic_vredmin_mask_vs_nxv2i32_nxv2i32_nxv2i32(<vscale x 2 x i32> %0, <vscale x 2 x i32> %1, <vscale x 2 x i32> %2, <vscale x 2 x i1> %3, iXLen %4) nounwind {
635 ; CHECK-LABEL: intrinsic_vredmin_mask_vs_nxv2i32_nxv2i32_nxv2i32:
636 ; CHECK:       # %bb.0: # %entry
637 ; CHECK-NEXT:    vsetvli zero, a0, e32, m1, ta, ma
638 ; CHECK-NEXT:    vredmin.vs v8, v9, v10, v0.t
639 ; CHECK-NEXT:    ret
640 entry:
641   %a = call <vscale x 2 x i32> @llvm.riscv.vredmin.mask.nxv2i32.nxv2i32(
642     <vscale x 2 x i32> %0,
643     <vscale x 2 x i32> %1,
644     <vscale x 2 x i32> %2,
645     <vscale x 2 x i1> %3,
646     iXLen %4)
648   ret <vscale x 2 x i32> %a
651 declare <vscale x 2 x i32> @llvm.riscv.vredmin.nxv2i32.nxv4i32(
652   <vscale x 2 x i32>,
653   <vscale x 4 x i32>,
654   <vscale x 2 x i32>,
655   iXLen);
657 define <vscale x 2 x i32> @intrinsic_vredmin_vs_nxv2i32_nxv4i32_nxv2i32(<vscale x 2 x i32> %0, <vscale x 4 x i32> %1, <vscale x 2 x i32> %2, iXLen %3) nounwind {
658 ; CHECK-LABEL: intrinsic_vredmin_vs_nxv2i32_nxv4i32_nxv2i32:
659 ; CHECK:       # %bb.0: # %entry
660 ; CHECK-NEXT:    vsetvli zero, a0, e32, m2, ta, ma
661 ; CHECK-NEXT:    vredmin.vs v8, v10, v9
662 ; CHECK-NEXT:    ret
663 entry:
664   %a = call <vscale x 2 x i32> @llvm.riscv.vredmin.nxv2i32.nxv4i32(
665     <vscale x 2 x i32> %0,
666     <vscale x 4 x i32> %1,
667     <vscale x 2 x i32> %2,
668     iXLen %3)
670   ret <vscale x 2 x i32> %a
673 declare <vscale x 2 x i32> @llvm.riscv.vredmin.mask.nxv2i32.nxv4i32(
674   <vscale x 2 x i32>,
675   <vscale x 4 x i32>,
676   <vscale x 2 x i32>,
677   <vscale x 4 x i1>,
678   iXLen);
680 define <vscale x 2 x i32> @intrinsic_vredmin_mask_vs_nxv2i32_nxv4i32_nxv2i32(<vscale x 2 x i32> %0, <vscale x 4 x i32> %1, <vscale x 2 x i32> %2, <vscale x 4 x i1> %3, iXLen %4) nounwind {
681 ; CHECK-LABEL: intrinsic_vredmin_mask_vs_nxv2i32_nxv4i32_nxv2i32:
682 ; CHECK:       # %bb.0: # %entry
683 ; CHECK-NEXT:    vsetvli zero, a0, e32, m2, ta, ma
684 ; CHECK-NEXT:    vredmin.vs v8, v10, v9, v0.t
685 ; CHECK-NEXT:    ret
686 entry:
687   %a = call <vscale x 2 x i32> @llvm.riscv.vredmin.mask.nxv2i32.nxv4i32(
688     <vscale x 2 x i32> %0,
689     <vscale x 4 x i32> %1,
690     <vscale x 2 x i32> %2,
691     <vscale x 4 x i1> %3,
692     iXLen %4)
694   ret <vscale x 2 x i32> %a
697 declare <vscale x 2 x i32> @llvm.riscv.vredmin.nxv2i32.nxv8i32(
698   <vscale x 2 x i32>,
699   <vscale x 8 x i32>,
700   <vscale x 2 x i32>,
701   iXLen);
703 define <vscale x 2 x i32> @intrinsic_vredmin_vs_nxv2i32_nxv8i32_nxv2i32(<vscale x 2 x i32> %0, <vscale x 8 x i32> %1, <vscale x 2 x i32> %2, iXLen %3) nounwind {
704 ; CHECK-LABEL: intrinsic_vredmin_vs_nxv2i32_nxv8i32_nxv2i32:
705 ; CHECK:       # %bb.0: # %entry
706 ; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, ma
707 ; CHECK-NEXT:    vredmin.vs v8, v12, v9
708 ; CHECK-NEXT:    ret
709 entry:
710   %a = call <vscale x 2 x i32> @llvm.riscv.vredmin.nxv2i32.nxv8i32(
711     <vscale x 2 x i32> %0,
712     <vscale x 8 x i32> %1,
713     <vscale x 2 x i32> %2,
714     iXLen %3)
716   ret <vscale x 2 x i32> %a
719 declare <vscale x 2 x i32> @llvm.riscv.vredmin.mask.nxv2i32.nxv8i32(
720   <vscale x 2 x i32>,
721   <vscale x 8 x i32>,
722   <vscale x 2 x i32>,
723   <vscale x 8 x i1>,
724   iXLen);
726 define <vscale x 2 x i32> @intrinsic_vredmin_mask_vs_nxv2i32_nxv8i32_nxv2i32(<vscale x 2 x i32> %0, <vscale x 8 x i32> %1, <vscale x 2 x i32> %2, <vscale x 8 x i1> %3, iXLen %4) nounwind {
727 ; CHECK-LABEL: intrinsic_vredmin_mask_vs_nxv2i32_nxv8i32_nxv2i32:
728 ; CHECK:       # %bb.0: # %entry
729 ; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, ma
730 ; CHECK-NEXT:    vredmin.vs v8, v12, v9, v0.t
731 ; CHECK-NEXT:    ret
732 entry:
733   %a = call <vscale x 2 x i32> @llvm.riscv.vredmin.mask.nxv2i32.nxv8i32(
734     <vscale x 2 x i32> %0,
735     <vscale x 8 x i32> %1,
736     <vscale x 2 x i32> %2,
737     <vscale x 8 x i1> %3,
738     iXLen %4)
740   ret <vscale x 2 x i32> %a
743 declare <vscale x 2 x i32> @llvm.riscv.vredmin.nxv2i32.nxv16i32(
744   <vscale x 2 x i32>,
745   <vscale x 16 x i32>,
746   <vscale x 2 x i32>,
747   iXLen);
749 define <vscale x 2 x i32> @intrinsic_vredmin_vs_nxv2i32_nxv16i32_nxv2i32(<vscale x 2 x i32> %0, <vscale x 16 x i32> %1, <vscale x 2 x i32> %2, iXLen %3) nounwind {
750 ; CHECK-LABEL: intrinsic_vredmin_vs_nxv2i32_nxv16i32_nxv2i32:
751 ; CHECK:       # %bb.0: # %entry
752 ; CHECK-NEXT:    vsetvli zero, a0, e32, m8, ta, ma
753 ; CHECK-NEXT:    vredmin.vs v8, v16, v9
754 ; CHECK-NEXT:    ret
755 entry:
756   %a = call <vscale x 2 x i32> @llvm.riscv.vredmin.nxv2i32.nxv16i32(
757     <vscale x 2 x i32> %0,
758     <vscale x 16 x i32> %1,
759     <vscale x 2 x i32> %2,
760     iXLen %3)
762   ret <vscale x 2 x i32> %a
765 declare <vscale x 2 x i32> @llvm.riscv.vredmin.mask.nxv2i32.nxv16i32(
766   <vscale x 2 x i32>,
767   <vscale x 16 x i32>,
768   <vscale x 2 x i32>,
769   <vscale x 16 x i1>,
770   iXLen);
772 define <vscale x 2 x i32> @intrinsic_vredmin_mask_vs_nxv2i32_nxv16i32_nxv2i32(<vscale x 2 x i32> %0, <vscale x 16 x i32> %1, <vscale x 2 x i32> %2, <vscale x 16 x i1> %3, iXLen %4) nounwind {
773 ; CHECK-LABEL: intrinsic_vredmin_mask_vs_nxv2i32_nxv16i32_nxv2i32:
774 ; CHECK:       # %bb.0: # %entry
775 ; CHECK-NEXT:    vsetvli zero, a0, e32, m8, ta, ma
776 ; CHECK-NEXT:    vredmin.vs v8, v16, v9, v0.t
777 ; CHECK-NEXT:    ret
778 entry:
779   %a = call <vscale x 2 x i32> @llvm.riscv.vredmin.mask.nxv2i32.nxv16i32(
780     <vscale x 2 x i32> %0,
781     <vscale x 16 x i32> %1,
782     <vscale x 2 x i32> %2,
783     <vscale x 16 x i1> %3,
784     iXLen %4)
786   ret <vscale x 2 x i32> %a
789 declare <vscale x 1 x i64> @llvm.riscv.vredmin.nxv1i64.nxv1i64(
790   <vscale x 1 x i64>,
791   <vscale x 1 x i64>,
792   <vscale x 1 x i64>,
793   iXLen);
795 define <vscale x 1 x i64> @intrinsic_vredmin_vs_nxv1i64_nxv1i64_nxv1i64(<vscale x 1 x i64> %0, <vscale x 1 x i64> %1, <vscale x 1 x i64> %2, iXLen %3) nounwind {
796 ; CHECK-LABEL: intrinsic_vredmin_vs_nxv1i64_nxv1i64_nxv1i64:
797 ; CHECK:       # %bb.0: # %entry
798 ; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
799 ; CHECK-NEXT:    vredmin.vs v8, v9, v10
800 ; CHECK-NEXT:    ret
801 entry:
802   %a = call <vscale x 1 x i64> @llvm.riscv.vredmin.nxv1i64.nxv1i64(
803     <vscale x 1 x i64> %0,
804     <vscale x 1 x i64> %1,
805     <vscale x 1 x i64> %2,
806     iXLen %3)
808   ret <vscale x 1 x i64> %a
811 declare <vscale x 1 x i64> @llvm.riscv.vredmin.mask.nxv1i64.nxv1i64(
812   <vscale x 1 x i64>,
813   <vscale x 1 x i64>,
814   <vscale x 1 x i64>,
815   <vscale x 1 x i1>,
816   iXLen);
818 define <vscale x 1 x i64> @intrinsic_vredmin_mask_vs_nxv1i64_nxv1i64_nxv1i64(<vscale x 1 x i64> %0, <vscale x 1 x i64> %1, <vscale x 1 x i64> %2, <vscale x 1 x i1> %3, iXLen %4) nounwind {
819 ; CHECK-LABEL: intrinsic_vredmin_mask_vs_nxv1i64_nxv1i64_nxv1i64:
820 ; CHECK:       # %bb.0: # %entry
821 ; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
822 ; CHECK-NEXT:    vredmin.vs v8, v9, v10, v0.t
823 ; CHECK-NEXT:    ret
824 entry:
825   %a = call <vscale x 1 x i64> @llvm.riscv.vredmin.mask.nxv1i64.nxv1i64(
826     <vscale x 1 x i64> %0,
827     <vscale x 1 x i64> %1,
828     <vscale x 1 x i64> %2,
829     <vscale x 1 x i1> %3,
830     iXLen %4)
832   ret <vscale x 1 x i64> %a
835 declare <vscale x 1 x i64> @llvm.riscv.vredmin.nxv1i64.nxv2i64(
836   <vscale x 1 x i64>,
837   <vscale x 2 x i64>,
838   <vscale x 1 x i64>,
839   iXLen);
841 define <vscale x 1 x i64> @intrinsic_vredmin_vs_nxv1i64_nxv2i64_nxv1i64(<vscale x 1 x i64> %0, <vscale x 2 x i64> %1, <vscale x 1 x i64> %2, iXLen %3) nounwind {
842 ; CHECK-LABEL: intrinsic_vredmin_vs_nxv1i64_nxv2i64_nxv1i64:
843 ; CHECK:       # %bb.0: # %entry
844 ; CHECK-NEXT:    vsetvli zero, a0, e64, m2, ta, ma
845 ; CHECK-NEXT:    vredmin.vs v8, v10, v9
846 ; CHECK-NEXT:    ret
847 entry:
848   %a = call <vscale x 1 x i64> @llvm.riscv.vredmin.nxv1i64.nxv2i64(
849     <vscale x 1 x i64> %0,
850     <vscale x 2 x i64> %1,
851     <vscale x 1 x i64> %2,
852     iXLen %3)
854   ret <vscale x 1 x i64> %a
857 declare <vscale x 1 x i64> @llvm.riscv.vredmin.mask.nxv1i64.nxv2i64(
858   <vscale x 1 x i64>,
859   <vscale x 2 x i64>,
860   <vscale x 1 x i64>,
861   <vscale x 2 x i1>,
862   iXLen);
864 define <vscale x 1 x i64> @intrinsic_vredmin_mask_vs_nxv1i64_nxv2i64_nxv1i64(<vscale x 1 x i64> %0, <vscale x 2 x i64> %1, <vscale x 1 x i64> %2, <vscale x 2 x i1> %3, iXLen %4) nounwind {
865 ; CHECK-LABEL: intrinsic_vredmin_mask_vs_nxv1i64_nxv2i64_nxv1i64:
866 ; CHECK:       # %bb.0: # %entry
867 ; CHECK-NEXT:    vsetvli zero, a0, e64, m2, ta, ma
868 ; CHECK-NEXT:    vredmin.vs v8, v10, v9, v0.t
869 ; CHECK-NEXT:    ret
870 entry:
871   %a = call <vscale x 1 x i64> @llvm.riscv.vredmin.mask.nxv1i64.nxv2i64(
872     <vscale x 1 x i64> %0,
873     <vscale x 2 x i64> %1,
874     <vscale x 1 x i64> %2,
875     <vscale x 2 x i1> %3,
876     iXLen %4)
878   ret <vscale x 1 x i64> %a
881 declare <vscale x 1 x i64> @llvm.riscv.vredmin.nxv1i64.nxv4i64(
882   <vscale x 1 x i64>,
883   <vscale x 4 x i64>,
884   <vscale x 1 x i64>,
885   iXLen);
887 define <vscale x 1 x i64> @intrinsic_vredmin_vs_nxv1i64_nxv4i64_nxv1i64(<vscale x 1 x i64> %0, <vscale x 4 x i64> %1, <vscale x 1 x i64> %2, iXLen %3) nounwind {
888 ; CHECK-LABEL: intrinsic_vredmin_vs_nxv1i64_nxv4i64_nxv1i64:
889 ; CHECK:       # %bb.0: # %entry
890 ; CHECK-NEXT:    vsetvli zero, a0, e64, m4, ta, ma
891 ; CHECK-NEXT:    vredmin.vs v8, v12, v9
892 ; CHECK-NEXT:    ret
893 entry:
894   %a = call <vscale x 1 x i64> @llvm.riscv.vredmin.nxv1i64.nxv4i64(
895     <vscale x 1 x i64> %0,
896     <vscale x 4 x i64> %1,
897     <vscale x 1 x i64> %2,
898     iXLen %3)
900   ret <vscale x 1 x i64> %a
903 declare <vscale x 1 x i64> @llvm.riscv.vredmin.mask.nxv1i64.nxv4i64(
904   <vscale x 1 x i64>,
905   <vscale x 4 x i64>,
906   <vscale x 1 x i64>,
907   <vscale x 4 x i1>,
908   iXLen);
910 define <vscale x 1 x i64> @intrinsic_vredmin_mask_vs_nxv1i64_nxv4i64_nxv1i64(<vscale x 1 x i64> %0, <vscale x 4 x i64> %1, <vscale x 1 x i64> %2, <vscale x 4 x i1> %3, iXLen %4) nounwind {
911 ; CHECK-LABEL: intrinsic_vredmin_mask_vs_nxv1i64_nxv4i64_nxv1i64:
912 ; CHECK:       # %bb.0: # %entry
913 ; CHECK-NEXT:    vsetvli zero, a0, e64, m4, ta, ma
914 ; CHECK-NEXT:    vredmin.vs v8, v12, v9, v0.t
915 ; CHECK-NEXT:    ret
916 entry:
917   %a = call <vscale x 1 x i64> @llvm.riscv.vredmin.mask.nxv1i64.nxv4i64(
918     <vscale x 1 x i64> %0,
919     <vscale x 4 x i64> %1,
920     <vscale x 1 x i64> %2,
921     <vscale x 4 x i1> %3,
922     iXLen %4)
924   ret <vscale x 1 x i64> %a
927 declare <vscale x 1 x i64> @llvm.riscv.vredmin.nxv1i64.nxv8i64(
928   <vscale x 1 x i64>,
929   <vscale x 8 x i64>,
930   <vscale x 1 x i64>,
931   iXLen);
933 define <vscale x 1 x i64> @intrinsic_vredmin_vs_nxv1i64_nxv8i64_nxv1i64(<vscale x 1 x i64> %0, <vscale x 8 x i64> %1, <vscale x 1 x i64> %2, iXLen %3) nounwind {
934 ; CHECK-LABEL: intrinsic_vredmin_vs_nxv1i64_nxv8i64_nxv1i64:
935 ; CHECK:       # %bb.0: # %entry
936 ; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma
937 ; CHECK-NEXT:    vredmin.vs v8, v16, v9
938 ; CHECK-NEXT:    ret
939 entry:
940   %a = call <vscale x 1 x i64> @llvm.riscv.vredmin.nxv1i64.nxv8i64(
941     <vscale x 1 x i64> %0,
942     <vscale x 8 x i64> %1,
943     <vscale x 1 x i64> %2,
944     iXLen %3)
946   ret <vscale x 1 x i64> %a
949 declare <vscale x 1 x i64> @llvm.riscv.vredmin.mask.nxv1i64.nxv8i64(
950   <vscale x 1 x i64>,
951   <vscale x 8 x i64>,
952   <vscale x 1 x i64>,
953   <vscale x 8 x i1>,
954   iXLen);
956 define <vscale x 1 x i64> @intrinsic_vredmin_mask_vs_nxv1i64_nxv8i64_nxv1i64(<vscale x 1 x i64> %0, <vscale x 8 x i64> %1, <vscale x 1 x i64> %2, <vscale x 8 x i1> %3, iXLen %4) nounwind {
957 ; CHECK-LABEL: intrinsic_vredmin_mask_vs_nxv1i64_nxv8i64_nxv1i64:
958 ; CHECK:       # %bb.0: # %entry
959 ; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma
960 ; CHECK-NEXT:    vredmin.vs v8, v16, v9, v0.t
961 ; CHECK-NEXT:    ret
962 entry:
963   %a = call <vscale x 1 x i64> @llvm.riscv.vredmin.mask.nxv1i64.nxv8i64(
964     <vscale x 1 x i64> %0,
965     <vscale x 8 x i64> %1,
966     <vscale x 1 x i64> %2,
967     <vscale x 8 x i1> %3,
968     iXLen %4)
970   ret <vscale x 1 x i64> %a