Bump version to 19.1.0-rc3
[llvm-project.git] / llvm / test / CodeGen / RISCV / rvv / vmin.ll
blob311c9f9f1526bd921e179c42f6d6e6a71d94a0e1
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 --check-prefixes=CHECK,RV32
4 ; RUN: sed 's/iXLen/i64/g' %s | llc -mtriple=riscv64 -mattr=+v \
5 ; RUN:   -verify-machineinstrs | FileCheck %s --check-prefixes=CHECK,RV64
7 declare <vscale x 1 x i8> @llvm.riscv.vmin.nxv1i8.nxv1i8(
8   <vscale x 1 x i8>,
9   <vscale x 1 x i8>,
10   <vscale x 1 x i8>,
11   iXLen);
13 define <vscale x 1 x i8> @intrinsic_vmin_vv_nxv1i8_nxv1i8_nxv1i8(<vscale x 1 x i8> %0, <vscale x 1 x i8> %1, iXLen %2) nounwind {
14 ; CHECK-LABEL: intrinsic_vmin_vv_nxv1i8_nxv1i8_nxv1i8:
15 ; CHECK:       # %bb.0: # %entry
16 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf8, ta, ma
17 ; CHECK-NEXT:    vmin.vv v8, v8, v9
18 ; CHECK-NEXT:    ret
19 entry:
20   %a = call <vscale x 1 x i8> @llvm.riscv.vmin.nxv1i8.nxv1i8(
21     <vscale x 1 x i8> undef,
22     <vscale x 1 x i8> %0,
23     <vscale x 1 x i8> %1,
24     iXLen %2)
26   ret <vscale x 1 x i8> %a
29 declare <vscale x 1 x i8> @llvm.riscv.vmin.mask.nxv1i8.nxv1i8(
30   <vscale x 1 x i8>,
31   <vscale x 1 x i8>,
32   <vscale x 1 x i8>,
33   <vscale x 1 x i1>,
34   iXLen,
35   iXLen);
37 define <vscale x 1 x i8> @intrinsic_vmin_mask_vv_nxv1i8_nxv1i8_nxv1i8(<vscale x 1 x i8> %0, <vscale x 1 x i8> %1, <vscale x 1 x i8> %2, <vscale x 1 x i1> %3, iXLen %4) nounwind {
38 ; CHECK-LABEL: intrinsic_vmin_mask_vv_nxv1i8_nxv1i8_nxv1i8:
39 ; CHECK:       # %bb.0: # %entry
40 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf8, ta, mu
41 ; CHECK-NEXT:    vmin.vv v8, v9, v10, v0.t
42 ; CHECK-NEXT:    ret
43 entry:
44   %a = call <vscale x 1 x i8> @llvm.riscv.vmin.mask.nxv1i8.nxv1i8(
45     <vscale x 1 x i8> %0,
46     <vscale x 1 x i8> %1,
47     <vscale x 1 x i8> %2,
48     <vscale x 1 x i1> %3,
49     iXLen %4, iXLen 1)
51   ret <vscale x 1 x i8> %a
54 declare <vscale x 2 x i8> @llvm.riscv.vmin.nxv2i8.nxv2i8(
55   <vscale x 2 x i8>,
56   <vscale x 2 x i8>,
57   <vscale x 2 x i8>,
58   iXLen);
60 define <vscale x 2 x i8> @intrinsic_vmin_vv_nxv2i8_nxv2i8_nxv2i8(<vscale x 2 x i8> %0, <vscale x 2 x i8> %1, iXLen %2) nounwind {
61 ; CHECK-LABEL: intrinsic_vmin_vv_nxv2i8_nxv2i8_nxv2i8:
62 ; CHECK:       # %bb.0: # %entry
63 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf4, ta, ma
64 ; CHECK-NEXT:    vmin.vv v8, v8, v9
65 ; CHECK-NEXT:    ret
66 entry:
67   %a = call <vscale x 2 x i8> @llvm.riscv.vmin.nxv2i8.nxv2i8(
68     <vscale x 2 x i8> undef,
69     <vscale x 2 x i8> %0,
70     <vscale x 2 x i8> %1,
71     iXLen %2)
73   ret <vscale x 2 x i8> %a
76 declare <vscale x 2 x i8> @llvm.riscv.vmin.mask.nxv2i8.nxv2i8(
77   <vscale x 2 x i8>,
78   <vscale x 2 x i8>,
79   <vscale x 2 x i8>,
80   <vscale x 2 x i1>,
81   iXLen,
82   iXLen);
84 define <vscale x 2 x i8> @intrinsic_vmin_mask_vv_nxv2i8_nxv2i8_nxv2i8(<vscale x 2 x i8> %0, <vscale x 2 x i8> %1, <vscale x 2 x i8> %2, <vscale x 2 x i1> %3, iXLen %4) nounwind {
85 ; CHECK-LABEL: intrinsic_vmin_mask_vv_nxv2i8_nxv2i8_nxv2i8:
86 ; CHECK:       # %bb.0: # %entry
87 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf4, ta, mu
88 ; CHECK-NEXT:    vmin.vv v8, v9, v10, v0.t
89 ; CHECK-NEXT:    ret
90 entry:
91   %a = call <vscale x 2 x i8> @llvm.riscv.vmin.mask.nxv2i8.nxv2i8(
92     <vscale x 2 x i8> %0,
93     <vscale x 2 x i8> %1,
94     <vscale x 2 x i8> %2,
95     <vscale x 2 x i1> %3,
96     iXLen %4, iXLen 1)
98   ret <vscale x 2 x i8> %a
101 declare <vscale x 4 x i8> @llvm.riscv.vmin.nxv4i8.nxv4i8(
102   <vscale x 4 x i8>,
103   <vscale x 4 x i8>,
104   <vscale x 4 x i8>,
105   iXLen);
107 define <vscale x 4 x i8> @intrinsic_vmin_vv_nxv4i8_nxv4i8_nxv4i8(<vscale x 4 x i8> %0, <vscale x 4 x i8> %1, iXLen %2) nounwind {
108 ; CHECK-LABEL: intrinsic_vmin_vv_nxv4i8_nxv4i8_nxv4i8:
109 ; CHECK:       # %bb.0: # %entry
110 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf2, ta, ma
111 ; CHECK-NEXT:    vmin.vv v8, v8, v9
112 ; CHECK-NEXT:    ret
113 entry:
114   %a = call <vscale x 4 x i8> @llvm.riscv.vmin.nxv4i8.nxv4i8(
115     <vscale x 4 x i8> undef,
116     <vscale x 4 x i8> %0,
117     <vscale x 4 x i8> %1,
118     iXLen %2)
120   ret <vscale x 4 x i8> %a
123 declare <vscale x 4 x i8> @llvm.riscv.vmin.mask.nxv4i8.nxv4i8(
124   <vscale x 4 x i8>,
125   <vscale x 4 x i8>,
126   <vscale x 4 x i8>,
127   <vscale x 4 x i1>,
128   iXLen,
129   iXLen);
131 define <vscale x 4 x i8> @intrinsic_vmin_mask_vv_nxv4i8_nxv4i8_nxv4i8(<vscale x 4 x i8> %0, <vscale x 4 x i8> %1, <vscale x 4 x i8> %2, <vscale x 4 x i1> %3, iXLen %4) nounwind {
132 ; CHECK-LABEL: intrinsic_vmin_mask_vv_nxv4i8_nxv4i8_nxv4i8:
133 ; CHECK:       # %bb.0: # %entry
134 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf2, ta, mu
135 ; CHECK-NEXT:    vmin.vv v8, v9, v10, v0.t
136 ; CHECK-NEXT:    ret
137 entry:
138   %a = call <vscale x 4 x i8> @llvm.riscv.vmin.mask.nxv4i8.nxv4i8(
139     <vscale x 4 x i8> %0,
140     <vscale x 4 x i8> %1,
141     <vscale x 4 x i8> %2,
142     <vscale x 4 x i1> %3,
143     iXLen %4, iXLen 1)
145   ret <vscale x 4 x i8> %a
148 declare <vscale x 8 x i8> @llvm.riscv.vmin.nxv8i8.nxv8i8(
149   <vscale x 8 x i8>,
150   <vscale x 8 x i8>,
151   <vscale x 8 x i8>,
152   iXLen);
154 define <vscale x 8 x i8> @intrinsic_vmin_vv_nxv8i8_nxv8i8_nxv8i8(<vscale x 8 x i8> %0, <vscale x 8 x i8> %1, iXLen %2) nounwind {
155 ; CHECK-LABEL: intrinsic_vmin_vv_nxv8i8_nxv8i8_nxv8i8:
156 ; CHECK:       # %bb.0: # %entry
157 ; CHECK-NEXT:    vsetvli zero, a0, e8, m1, ta, ma
158 ; CHECK-NEXT:    vmin.vv v8, v8, v9
159 ; CHECK-NEXT:    ret
160 entry:
161   %a = call <vscale x 8 x i8> @llvm.riscv.vmin.nxv8i8.nxv8i8(
162     <vscale x 8 x i8> undef,
163     <vscale x 8 x i8> %0,
164     <vscale x 8 x i8> %1,
165     iXLen %2)
167   ret <vscale x 8 x i8> %a
170 declare <vscale x 8 x i8> @llvm.riscv.vmin.mask.nxv8i8.nxv8i8(
171   <vscale x 8 x i8>,
172   <vscale x 8 x i8>,
173   <vscale x 8 x i8>,
174   <vscale x 8 x i1>,
175   iXLen,
176   iXLen);
178 define <vscale x 8 x i8> @intrinsic_vmin_mask_vv_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 {
179 ; CHECK-LABEL: intrinsic_vmin_mask_vv_nxv8i8_nxv8i8_nxv8i8:
180 ; CHECK:       # %bb.0: # %entry
181 ; CHECK-NEXT:    vsetvli zero, a0, e8, m1, ta, mu
182 ; CHECK-NEXT:    vmin.vv v8, v9, v10, v0.t
183 ; CHECK-NEXT:    ret
184 entry:
185   %a = call <vscale x 8 x i8> @llvm.riscv.vmin.mask.nxv8i8.nxv8i8(
186     <vscale x 8 x i8> %0,
187     <vscale x 8 x i8> %1,
188     <vscale x 8 x i8> %2,
189     <vscale x 8 x i1> %3,
190     iXLen %4, iXLen 1)
192   ret <vscale x 8 x i8> %a
195 declare <vscale x 16 x i8> @llvm.riscv.vmin.nxv16i8.nxv16i8(
196   <vscale x 16 x i8>,
197   <vscale x 16 x i8>,
198   <vscale x 16 x i8>,
199   iXLen);
201 define <vscale x 16 x i8> @intrinsic_vmin_vv_nxv16i8_nxv16i8_nxv16i8(<vscale x 16 x i8> %0, <vscale x 16 x i8> %1, iXLen %2) nounwind {
202 ; CHECK-LABEL: intrinsic_vmin_vv_nxv16i8_nxv16i8_nxv16i8:
203 ; CHECK:       # %bb.0: # %entry
204 ; CHECK-NEXT:    vsetvli zero, a0, e8, m2, ta, ma
205 ; CHECK-NEXT:    vmin.vv v8, v8, v10
206 ; CHECK-NEXT:    ret
207 entry:
208   %a = call <vscale x 16 x i8> @llvm.riscv.vmin.nxv16i8.nxv16i8(
209     <vscale x 16 x i8> undef,
210     <vscale x 16 x i8> %0,
211     <vscale x 16 x i8> %1,
212     iXLen %2)
214   ret <vscale x 16 x i8> %a
217 declare <vscale x 16 x i8> @llvm.riscv.vmin.mask.nxv16i8.nxv16i8(
218   <vscale x 16 x i8>,
219   <vscale x 16 x i8>,
220   <vscale x 16 x i8>,
221   <vscale x 16 x i1>,
222   iXLen,
223   iXLen);
225 define <vscale x 16 x i8> @intrinsic_vmin_mask_vv_nxv16i8_nxv16i8_nxv16i8(<vscale x 16 x i8> %0, <vscale x 16 x i8> %1, <vscale x 16 x i8> %2, <vscale x 16 x i1> %3, iXLen %4) nounwind {
226 ; CHECK-LABEL: intrinsic_vmin_mask_vv_nxv16i8_nxv16i8_nxv16i8:
227 ; CHECK:       # %bb.0: # %entry
228 ; CHECK-NEXT:    vsetvli zero, a0, e8, m2, ta, mu
229 ; CHECK-NEXT:    vmin.vv v8, v10, v12, v0.t
230 ; CHECK-NEXT:    ret
231 entry:
232   %a = call <vscale x 16 x i8> @llvm.riscv.vmin.mask.nxv16i8.nxv16i8(
233     <vscale x 16 x i8> %0,
234     <vscale x 16 x i8> %1,
235     <vscale x 16 x i8> %2,
236     <vscale x 16 x i1> %3,
237     iXLen %4, iXLen 1)
239   ret <vscale x 16 x i8> %a
242 declare <vscale x 32 x i8> @llvm.riscv.vmin.nxv32i8.nxv32i8(
243   <vscale x 32 x i8>,
244   <vscale x 32 x i8>,
245   <vscale x 32 x i8>,
246   iXLen);
248 define <vscale x 32 x i8> @intrinsic_vmin_vv_nxv32i8_nxv32i8_nxv32i8(<vscale x 32 x i8> %0, <vscale x 32 x i8> %1, iXLen %2) nounwind {
249 ; CHECK-LABEL: intrinsic_vmin_vv_nxv32i8_nxv32i8_nxv32i8:
250 ; CHECK:       # %bb.0: # %entry
251 ; CHECK-NEXT:    vsetvli zero, a0, e8, m4, ta, ma
252 ; CHECK-NEXT:    vmin.vv v8, v8, v12
253 ; CHECK-NEXT:    ret
254 entry:
255   %a = call <vscale x 32 x i8> @llvm.riscv.vmin.nxv32i8.nxv32i8(
256     <vscale x 32 x i8> undef,
257     <vscale x 32 x i8> %0,
258     <vscale x 32 x i8> %1,
259     iXLen %2)
261   ret <vscale x 32 x i8> %a
264 declare <vscale x 32 x i8> @llvm.riscv.vmin.mask.nxv32i8.nxv32i8(
265   <vscale x 32 x i8>,
266   <vscale x 32 x i8>,
267   <vscale x 32 x i8>,
268   <vscale x 32 x i1>,
269   iXLen,
270   iXLen);
272 define <vscale x 32 x i8> @intrinsic_vmin_mask_vv_nxv32i8_nxv32i8_nxv32i8(<vscale x 32 x i8> %0, <vscale x 32 x i8> %1, <vscale x 32 x i8> %2, <vscale x 32 x i1> %3, iXLen %4) nounwind {
273 ; CHECK-LABEL: intrinsic_vmin_mask_vv_nxv32i8_nxv32i8_nxv32i8:
274 ; CHECK:       # %bb.0: # %entry
275 ; CHECK-NEXT:    vsetvli zero, a0, e8, m4, ta, mu
276 ; CHECK-NEXT:    vmin.vv v8, v12, v16, v0.t
277 ; CHECK-NEXT:    ret
278 entry:
279   %a = call <vscale x 32 x i8> @llvm.riscv.vmin.mask.nxv32i8.nxv32i8(
280     <vscale x 32 x i8> %0,
281     <vscale x 32 x i8> %1,
282     <vscale x 32 x i8> %2,
283     <vscale x 32 x i1> %3,
284     iXLen %4, iXLen 1)
286   ret <vscale x 32 x i8> %a
289 declare <vscale x 64 x i8> @llvm.riscv.vmin.nxv64i8.nxv64i8(
290   <vscale x 64 x i8>,
291   <vscale x 64 x i8>,
292   <vscale x 64 x i8>,
293   iXLen);
295 define <vscale x 64 x i8> @intrinsic_vmin_vv_nxv64i8_nxv64i8_nxv64i8(<vscale x 64 x i8> %0, <vscale x 64 x i8> %1, iXLen %2) nounwind {
296 ; CHECK-LABEL: intrinsic_vmin_vv_nxv64i8_nxv64i8_nxv64i8:
297 ; CHECK:       # %bb.0: # %entry
298 ; CHECK-NEXT:    vsetvli zero, a0, e8, m8, ta, ma
299 ; CHECK-NEXT:    vmin.vv v8, v8, v16
300 ; CHECK-NEXT:    ret
301 entry:
302   %a = call <vscale x 64 x i8> @llvm.riscv.vmin.nxv64i8.nxv64i8(
303     <vscale x 64 x i8> undef,
304     <vscale x 64 x i8> %0,
305     <vscale x 64 x i8> %1,
306     iXLen %2)
308   ret <vscale x 64 x i8> %a
311 declare <vscale x 64 x i8> @llvm.riscv.vmin.mask.nxv64i8.nxv64i8(
312   <vscale x 64 x i8>,
313   <vscale x 64 x i8>,
314   <vscale x 64 x i8>,
315   <vscale x 64 x i1>,
316   iXLen,
317   iXLen);
319 define <vscale x 64 x i8> @intrinsic_vmin_mask_vv_nxv64i8_nxv64i8_nxv64i8(<vscale x 64 x i8> %0, <vscale x 64 x i8> %1, <vscale x 64 x i8> %2, <vscale x 64 x i1> %3, iXLen %4) nounwind {
320 ; CHECK-LABEL: intrinsic_vmin_mask_vv_nxv64i8_nxv64i8_nxv64i8:
321 ; CHECK:       # %bb.0: # %entry
322 ; CHECK-NEXT:    vl8r.v v24, (a0)
323 ; CHECK-NEXT:    vsetvli zero, a1, e8, m8, ta, mu
324 ; CHECK-NEXT:    vmin.vv v8, v16, v24, v0.t
325 ; CHECK-NEXT:    ret
326 entry:
327   %a = call <vscale x 64 x i8> @llvm.riscv.vmin.mask.nxv64i8.nxv64i8(
328     <vscale x 64 x i8> %0,
329     <vscale x 64 x i8> %1,
330     <vscale x 64 x i8> %2,
331     <vscale x 64 x i1> %3,
332     iXLen %4, iXLen 1)
334   ret <vscale x 64 x i8> %a
337 declare <vscale x 1 x i16> @llvm.riscv.vmin.nxv1i16.nxv1i16(
338   <vscale x 1 x i16>,
339   <vscale x 1 x i16>,
340   <vscale x 1 x i16>,
341   iXLen);
343 define <vscale x 1 x i16> @intrinsic_vmin_vv_nxv1i16_nxv1i16_nxv1i16(<vscale x 1 x i16> %0, <vscale x 1 x i16> %1, iXLen %2) nounwind {
344 ; CHECK-LABEL: intrinsic_vmin_vv_nxv1i16_nxv1i16_nxv1i16:
345 ; CHECK:       # %bb.0: # %entry
346 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma
347 ; CHECK-NEXT:    vmin.vv v8, v8, v9
348 ; CHECK-NEXT:    ret
349 entry:
350   %a = call <vscale x 1 x i16> @llvm.riscv.vmin.nxv1i16.nxv1i16(
351     <vscale x 1 x i16> undef,
352     <vscale x 1 x i16> %0,
353     <vscale x 1 x i16> %1,
354     iXLen %2)
356   ret <vscale x 1 x i16> %a
359 declare <vscale x 1 x i16> @llvm.riscv.vmin.mask.nxv1i16.nxv1i16(
360   <vscale x 1 x i16>,
361   <vscale x 1 x i16>,
362   <vscale x 1 x i16>,
363   <vscale x 1 x i1>,
364   iXLen,
365   iXLen);
367 define <vscale x 1 x i16> @intrinsic_vmin_mask_vv_nxv1i16_nxv1i16_nxv1i16(<vscale x 1 x i16> %0, <vscale x 1 x i16> %1, <vscale x 1 x i16> %2, <vscale x 1 x i1> %3, iXLen %4) nounwind {
368 ; CHECK-LABEL: intrinsic_vmin_mask_vv_nxv1i16_nxv1i16_nxv1i16:
369 ; CHECK:       # %bb.0: # %entry
370 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, ta, mu
371 ; CHECK-NEXT:    vmin.vv v8, v9, v10, v0.t
372 ; CHECK-NEXT:    ret
373 entry:
374   %a = call <vscale x 1 x i16> @llvm.riscv.vmin.mask.nxv1i16.nxv1i16(
375     <vscale x 1 x i16> %0,
376     <vscale x 1 x i16> %1,
377     <vscale x 1 x i16> %2,
378     <vscale x 1 x i1> %3,
379     iXLen %4, iXLen 1)
381   ret <vscale x 1 x i16> %a
384 declare <vscale x 2 x i16> @llvm.riscv.vmin.nxv2i16.nxv2i16(
385   <vscale x 2 x i16>,
386   <vscale x 2 x i16>,
387   <vscale x 2 x i16>,
388   iXLen);
390 define <vscale x 2 x i16> @intrinsic_vmin_vv_nxv2i16_nxv2i16_nxv2i16(<vscale x 2 x i16> %0, <vscale x 2 x i16> %1, iXLen %2) nounwind {
391 ; CHECK-LABEL: intrinsic_vmin_vv_nxv2i16_nxv2i16_nxv2i16:
392 ; CHECK:       # %bb.0: # %entry
393 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf2, ta, ma
394 ; CHECK-NEXT:    vmin.vv v8, v8, v9
395 ; CHECK-NEXT:    ret
396 entry:
397   %a = call <vscale x 2 x i16> @llvm.riscv.vmin.nxv2i16.nxv2i16(
398     <vscale x 2 x i16> undef,
399     <vscale x 2 x i16> %0,
400     <vscale x 2 x i16> %1,
401     iXLen %2)
403   ret <vscale x 2 x i16> %a
406 declare <vscale x 2 x i16> @llvm.riscv.vmin.mask.nxv2i16.nxv2i16(
407   <vscale x 2 x i16>,
408   <vscale x 2 x i16>,
409   <vscale x 2 x i16>,
410   <vscale x 2 x i1>,
411   iXLen,
412   iXLen);
414 define <vscale x 2 x i16> @intrinsic_vmin_mask_vv_nxv2i16_nxv2i16_nxv2i16(<vscale x 2 x i16> %0, <vscale x 2 x i16> %1, <vscale x 2 x i16> %2, <vscale x 2 x i1> %3, iXLen %4) nounwind {
415 ; CHECK-LABEL: intrinsic_vmin_mask_vv_nxv2i16_nxv2i16_nxv2i16:
416 ; CHECK:       # %bb.0: # %entry
417 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf2, ta, mu
418 ; CHECK-NEXT:    vmin.vv v8, v9, v10, v0.t
419 ; CHECK-NEXT:    ret
420 entry:
421   %a = call <vscale x 2 x i16> @llvm.riscv.vmin.mask.nxv2i16.nxv2i16(
422     <vscale x 2 x i16> %0,
423     <vscale x 2 x i16> %1,
424     <vscale x 2 x i16> %2,
425     <vscale x 2 x i1> %3,
426     iXLen %4, iXLen 1)
428   ret <vscale x 2 x i16> %a
431 declare <vscale x 4 x i16> @llvm.riscv.vmin.nxv4i16.nxv4i16(
432   <vscale x 4 x i16>,
433   <vscale x 4 x i16>,
434   <vscale x 4 x i16>,
435   iXLen);
437 define <vscale x 4 x i16> @intrinsic_vmin_vv_nxv4i16_nxv4i16_nxv4i16(<vscale x 4 x i16> %0, <vscale x 4 x i16> %1, iXLen %2) nounwind {
438 ; CHECK-LABEL: intrinsic_vmin_vv_nxv4i16_nxv4i16_nxv4i16:
439 ; CHECK:       # %bb.0: # %entry
440 ; CHECK-NEXT:    vsetvli zero, a0, e16, m1, ta, ma
441 ; CHECK-NEXT:    vmin.vv v8, v8, v9
442 ; CHECK-NEXT:    ret
443 entry:
444   %a = call <vscale x 4 x i16> @llvm.riscv.vmin.nxv4i16.nxv4i16(
445     <vscale x 4 x i16> undef,
446     <vscale x 4 x i16> %0,
447     <vscale x 4 x i16> %1,
448     iXLen %2)
450   ret <vscale x 4 x i16> %a
453 declare <vscale x 4 x i16> @llvm.riscv.vmin.mask.nxv4i16.nxv4i16(
454   <vscale x 4 x i16>,
455   <vscale x 4 x i16>,
456   <vscale x 4 x i16>,
457   <vscale x 4 x i1>,
458   iXLen,
459   iXLen);
461 define <vscale x 4 x i16> @intrinsic_vmin_mask_vv_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 {
462 ; CHECK-LABEL: intrinsic_vmin_mask_vv_nxv4i16_nxv4i16_nxv4i16:
463 ; CHECK:       # %bb.0: # %entry
464 ; CHECK-NEXT:    vsetvli zero, a0, e16, m1, ta, mu
465 ; CHECK-NEXT:    vmin.vv v8, v9, v10, v0.t
466 ; CHECK-NEXT:    ret
467 entry:
468   %a = call <vscale x 4 x i16> @llvm.riscv.vmin.mask.nxv4i16.nxv4i16(
469     <vscale x 4 x i16> %0,
470     <vscale x 4 x i16> %1,
471     <vscale x 4 x i16> %2,
472     <vscale x 4 x i1> %3,
473     iXLen %4, iXLen 1)
475   ret <vscale x 4 x i16> %a
478 declare <vscale x 8 x i16> @llvm.riscv.vmin.nxv8i16.nxv8i16(
479   <vscale x 8 x i16>,
480   <vscale x 8 x i16>,
481   <vscale x 8 x i16>,
482   iXLen);
484 define <vscale x 8 x i16> @intrinsic_vmin_vv_nxv8i16_nxv8i16_nxv8i16(<vscale x 8 x i16> %0, <vscale x 8 x i16> %1, iXLen %2) nounwind {
485 ; CHECK-LABEL: intrinsic_vmin_vv_nxv8i16_nxv8i16_nxv8i16:
486 ; CHECK:       # %bb.0: # %entry
487 ; CHECK-NEXT:    vsetvli zero, a0, e16, m2, ta, ma
488 ; CHECK-NEXT:    vmin.vv v8, v8, v10
489 ; CHECK-NEXT:    ret
490 entry:
491   %a = call <vscale x 8 x i16> @llvm.riscv.vmin.nxv8i16.nxv8i16(
492     <vscale x 8 x i16> undef,
493     <vscale x 8 x i16> %0,
494     <vscale x 8 x i16> %1,
495     iXLen %2)
497   ret <vscale x 8 x i16> %a
500 declare <vscale x 8 x i16> @llvm.riscv.vmin.mask.nxv8i16.nxv8i16(
501   <vscale x 8 x i16>,
502   <vscale x 8 x i16>,
503   <vscale x 8 x i16>,
504   <vscale x 8 x i1>,
505   iXLen,
506   iXLen);
508 define <vscale x 8 x i16> @intrinsic_vmin_mask_vv_nxv8i16_nxv8i16_nxv8i16(<vscale x 8 x i16> %0, <vscale x 8 x i16> %1, <vscale x 8 x i16> %2, <vscale x 8 x i1> %3, iXLen %4) nounwind {
509 ; CHECK-LABEL: intrinsic_vmin_mask_vv_nxv8i16_nxv8i16_nxv8i16:
510 ; CHECK:       # %bb.0: # %entry
511 ; CHECK-NEXT:    vsetvli zero, a0, e16, m2, ta, mu
512 ; CHECK-NEXT:    vmin.vv v8, v10, v12, v0.t
513 ; CHECK-NEXT:    ret
514 entry:
515   %a = call <vscale x 8 x i16> @llvm.riscv.vmin.mask.nxv8i16.nxv8i16(
516     <vscale x 8 x i16> %0,
517     <vscale x 8 x i16> %1,
518     <vscale x 8 x i16> %2,
519     <vscale x 8 x i1> %3,
520     iXLen %4, iXLen 1)
522   ret <vscale x 8 x i16> %a
525 declare <vscale x 16 x i16> @llvm.riscv.vmin.nxv16i16.nxv16i16(
526   <vscale x 16 x i16>,
527   <vscale x 16 x i16>,
528   <vscale x 16 x i16>,
529   iXLen);
531 define <vscale x 16 x i16> @intrinsic_vmin_vv_nxv16i16_nxv16i16_nxv16i16(<vscale x 16 x i16> %0, <vscale x 16 x i16> %1, iXLen %2) nounwind {
532 ; CHECK-LABEL: intrinsic_vmin_vv_nxv16i16_nxv16i16_nxv16i16:
533 ; CHECK:       # %bb.0: # %entry
534 ; CHECK-NEXT:    vsetvli zero, a0, e16, m4, ta, ma
535 ; CHECK-NEXT:    vmin.vv v8, v8, v12
536 ; CHECK-NEXT:    ret
537 entry:
538   %a = call <vscale x 16 x i16> @llvm.riscv.vmin.nxv16i16.nxv16i16(
539     <vscale x 16 x i16> undef,
540     <vscale x 16 x i16> %0,
541     <vscale x 16 x i16> %1,
542     iXLen %2)
544   ret <vscale x 16 x i16> %a
547 declare <vscale x 16 x i16> @llvm.riscv.vmin.mask.nxv16i16.nxv16i16(
548   <vscale x 16 x i16>,
549   <vscale x 16 x i16>,
550   <vscale x 16 x i16>,
551   <vscale x 16 x i1>,
552   iXLen,
553   iXLen);
555 define <vscale x 16 x i16> @intrinsic_vmin_mask_vv_nxv16i16_nxv16i16_nxv16i16(<vscale x 16 x i16> %0, <vscale x 16 x i16> %1, <vscale x 16 x i16> %2, <vscale x 16 x i1> %3, iXLen %4) nounwind {
556 ; CHECK-LABEL: intrinsic_vmin_mask_vv_nxv16i16_nxv16i16_nxv16i16:
557 ; CHECK:       # %bb.0: # %entry
558 ; CHECK-NEXT:    vsetvli zero, a0, e16, m4, ta, mu
559 ; CHECK-NEXT:    vmin.vv v8, v12, v16, v0.t
560 ; CHECK-NEXT:    ret
561 entry:
562   %a = call <vscale x 16 x i16> @llvm.riscv.vmin.mask.nxv16i16.nxv16i16(
563     <vscale x 16 x i16> %0,
564     <vscale x 16 x i16> %1,
565     <vscale x 16 x i16> %2,
566     <vscale x 16 x i1> %3,
567     iXLen %4, iXLen 1)
569   ret <vscale x 16 x i16> %a
572 declare <vscale x 32 x i16> @llvm.riscv.vmin.nxv32i16.nxv32i16(
573   <vscale x 32 x i16>,
574   <vscale x 32 x i16>,
575   <vscale x 32 x i16>,
576   iXLen);
578 define <vscale x 32 x i16> @intrinsic_vmin_vv_nxv32i16_nxv32i16_nxv32i16(<vscale x 32 x i16> %0, <vscale x 32 x i16> %1, iXLen %2) nounwind {
579 ; CHECK-LABEL: intrinsic_vmin_vv_nxv32i16_nxv32i16_nxv32i16:
580 ; CHECK:       # %bb.0: # %entry
581 ; CHECK-NEXT:    vsetvli zero, a0, e16, m8, ta, ma
582 ; CHECK-NEXT:    vmin.vv v8, v8, v16
583 ; CHECK-NEXT:    ret
584 entry:
585   %a = call <vscale x 32 x i16> @llvm.riscv.vmin.nxv32i16.nxv32i16(
586     <vscale x 32 x i16> undef,
587     <vscale x 32 x i16> %0,
588     <vscale x 32 x i16> %1,
589     iXLen %2)
591   ret <vscale x 32 x i16> %a
594 declare <vscale x 32 x i16> @llvm.riscv.vmin.mask.nxv32i16.nxv32i16(
595   <vscale x 32 x i16>,
596   <vscale x 32 x i16>,
597   <vscale x 32 x i16>,
598   <vscale x 32 x i1>,
599   iXLen,
600   iXLen);
602 define <vscale x 32 x i16> @intrinsic_vmin_mask_vv_nxv32i16_nxv32i16_nxv32i16(<vscale x 32 x i16> %0, <vscale x 32 x i16> %1, <vscale x 32 x i16> %2, <vscale x 32 x i1> %3, iXLen %4) nounwind {
603 ; CHECK-LABEL: intrinsic_vmin_mask_vv_nxv32i16_nxv32i16_nxv32i16:
604 ; CHECK:       # %bb.0: # %entry
605 ; CHECK-NEXT:    vl8re16.v v24, (a0)
606 ; CHECK-NEXT:    vsetvli zero, a1, e16, m8, ta, mu
607 ; CHECK-NEXT:    vmin.vv v8, v16, v24, v0.t
608 ; CHECK-NEXT:    ret
609 entry:
610   %a = call <vscale x 32 x i16> @llvm.riscv.vmin.mask.nxv32i16.nxv32i16(
611     <vscale x 32 x i16> %0,
612     <vscale x 32 x i16> %1,
613     <vscale x 32 x i16> %2,
614     <vscale x 32 x i1> %3,
615     iXLen %4, iXLen 1)
617   ret <vscale x 32 x i16> %a
620 declare <vscale x 1 x i32> @llvm.riscv.vmin.nxv1i32.nxv1i32(
621   <vscale x 1 x i32>,
622   <vscale x 1 x i32>,
623   <vscale x 1 x i32>,
624   iXLen);
626 define <vscale x 1 x i32> @intrinsic_vmin_vv_nxv1i32_nxv1i32_nxv1i32(<vscale x 1 x i32> %0, <vscale x 1 x i32> %1, iXLen %2) nounwind {
627 ; CHECK-LABEL: intrinsic_vmin_vv_nxv1i32_nxv1i32_nxv1i32:
628 ; CHECK:       # %bb.0: # %entry
629 ; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma
630 ; CHECK-NEXT:    vmin.vv v8, v8, v9
631 ; CHECK-NEXT:    ret
632 entry:
633   %a = call <vscale x 1 x i32> @llvm.riscv.vmin.nxv1i32.nxv1i32(
634     <vscale x 1 x i32> undef,
635     <vscale x 1 x i32> %0,
636     <vscale x 1 x i32> %1,
637     iXLen %2)
639   ret <vscale x 1 x i32> %a
642 declare <vscale x 1 x i32> @llvm.riscv.vmin.mask.nxv1i32.nxv1i32(
643   <vscale x 1 x i32>,
644   <vscale x 1 x i32>,
645   <vscale x 1 x i32>,
646   <vscale x 1 x i1>,
647   iXLen,
648   iXLen);
650 define <vscale x 1 x i32> @intrinsic_vmin_mask_vv_nxv1i32_nxv1i32_nxv1i32(<vscale x 1 x i32> %0, <vscale x 1 x i32> %1, <vscale x 1 x i32> %2, <vscale x 1 x i1> %3, iXLen %4) nounwind {
651 ; CHECK-LABEL: intrinsic_vmin_mask_vv_nxv1i32_nxv1i32_nxv1i32:
652 ; CHECK:       # %bb.0: # %entry
653 ; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, mu
654 ; CHECK-NEXT:    vmin.vv v8, v9, v10, v0.t
655 ; CHECK-NEXT:    ret
656 entry:
657   %a = call <vscale x 1 x i32> @llvm.riscv.vmin.mask.nxv1i32.nxv1i32(
658     <vscale x 1 x i32> %0,
659     <vscale x 1 x i32> %1,
660     <vscale x 1 x i32> %2,
661     <vscale x 1 x i1> %3,
662     iXLen %4, iXLen 1)
664   ret <vscale x 1 x i32> %a
667 declare <vscale x 2 x i32> @llvm.riscv.vmin.nxv2i32.nxv2i32(
668   <vscale x 2 x i32>,
669   <vscale x 2 x i32>,
670   <vscale x 2 x i32>,
671   iXLen);
673 define <vscale x 2 x i32> @intrinsic_vmin_vv_nxv2i32_nxv2i32_nxv2i32(<vscale x 2 x i32> %0, <vscale x 2 x i32> %1, iXLen %2) nounwind {
674 ; CHECK-LABEL: intrinsic_vmin_vv_nxv2i32_nxv2i32_nxv2i32:
675 ; CHECK:       # %bb.0: # %entry
676 ; CHECK-NEXT:    vsetvli zero, a0, e32, m1, ta, ma
677 ; CHECK-NEXT:    vmin.vv v8, v8, v9
678 ; CHECK-NEXT:    ret
679 entry:
680   %a = call <vscale x 2 x i32> @llvm.riscv.vmin.nxv2i32.nxv2i32(
681     <vscale x 2 x i32> undef,
682     <vscale x 2 x i32> %0,
683     <vscale x 2 x i32> %1,
684     iXLen %2)
686   ret <vscale x 2 x i32> %a
689 declare <vscale x 2 x i32> @llvm.riscv.vmin.mask.nxv2i32.nxv2i32(
690   <vscale x 2 x i32>,
691   <vscale x 2 x i32>,
692   <vscale x 2 x i32>,
693   <vscale x 2 x i1>,
694   iXLen,
695   iXLen);
697 define <vscale x 2 x i32> @intrinsic_vmin_mask_vv_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 {
698 ; CHECK-LABEL: intrinsic_vmin_mask_vv_nxv2i32_nxv2i32_nxv2i32:
699 ; CHECK:       # %bb.0: # %entry
700 ; CHECK-NEXT:    vsetvli zero, a0, e32, m1, ta, mu
701 ; CHECK-NEXT:    vmin.vv v8, v9, v10, v0.t
702 ; CHECK-NEXT:    ret
703 entry:
704   %a = call <vscale x 2 x i32> @llvm.riscv.vmin.mask.nxv2i32.nxv2i32(
705     <vscale x 2 x i32> %0,
706     <vscale x 2 x i32> %1,
707     <vscale x 2 x i32> %2,
708     <vscale x 2 x i1> %3,
709     iXLen %4, iXLen 1)
711   ret <vscale x 2 x i32> %a
714 declare <vscale x 4 x i32> @llvm.riscv.vmin.nxv4i32.nxv4i32(
715   <vscale x 4 x i32>,
716   <vscale x 4 x i32>,
717   <vscale x 4 x i32>,
718   iXLen);
720 define <vscale x 4 x i32> @intrinsic_vmin_vv_nxv4i32_nxv4i32_nxv4i32(<vscale x 4 x i32> %0, <vscale x 4 x i32> %1, iXLen %2) nounwind {
721 ; CHECK-LABEL: intrinsic_vmin_vv_nxv4i32_nxv4i32_nxv4i32:
722 ; CHECK:       # %bb.0: # %entry
723 ; CHECK-NEXT:    vsetvli zero, a0, e32, m2, ta, ma
724 ; CHECK-NEXT:    vmin.vv v8, v8, v10
725 ; CHECK-NEXT:    ret
726 entry:
727   %a = call <vscale x 4 x i32> @llvm.riscv.vmin.nxv4i32.nxv4i32(
728     <vscale x 4 x i32> undef,
729     <vscale x 4 x i32> %0,
730     <vscale x 4 x i32> %1,
731     iXLen %2)
733   ret <vscale x 4 x i32> %a
736 declare <vscale x 4 x i32> @llvm.riscv.vmin.mask.nxv4i32.nxv4i32(
737   <vscale x 4 x i32>,
738   <vscale x 4 x i32>,
739   <vscale x 4 x i32>,
740   <vscale x 4 x i1>,
741   iXLen,
742   iXLen);
744 define <vscale x 4 x i32> @intrinsic_vmin_mask_vv_nxv4i32_nxv4i32_nxv4i32(<vscale x 4 x i32> %0, <vscale x 4 x i32> %1, <vscale x 4 x i32> %2, <vscale x 4 x i1> %3, iXLen %4) nounwind {
745 ; CHECK-LABEL: intrinsic_vmin_mask_vv_nxv4i32_nxv4i32_nxv4i32:
746 ; CHECK:       # %bb.0: # %entry
747 ; CHECK-NEXT:    vsetvli zero, a0, e32, m2, ta, mu
748 ; CHECK-NEXT:    vmin.vv v8, v10, v12, v0.t
749 ; CHECK-NEXT:    ret
750 entry:
751   %a = call <vscale x 4 x i32> @llvm.riscv.vmin.mask.nxv4i32.nxv4i32(
752     <vscale x 4 x i32> %0,
753     <vscale x 4 x i32> %1,
754     <vscale x 4 x i32> %2,
755     <vscale x 4 x i1> %3,
756     iXLen %4, iXLen 1)
758   ret <vscale x 4 x i32> %a
761 declare <vscale x 8 x i32> @llvm.riscv.vmin.nxv8i32.nxv8i32(
762   <vscale x 8 x i32>,
763   <vscale x 8 x i32>,
764   <vscale x 8 x i32>,
765   iXLen);
767 define <vscale x 8 x i32> @intrinsic_vmin_vv_nxv8i32_nxv8i32_nxv8i32(<vscale x 8 x i32> %0, <vscale x 8 x i32> %1, iXLen %2) nounwind {
768 ; CHECK-LABEL: intrinsic_vmin_vv_nxv8i32_nxv8i32_nxv8i32:
769 ; CHECK:       # %bb.0: # %entry
770 ; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, ma
771 ; CHECK-NEXT:    vmin.vv v8, v8, v12
772 ; CHECK-NEXT:    ret
773 entry:
774   %a = call <vscale x 8 x i32> @llvm.riscv.vmin.nxv8i32.nxv8i32(
775     <vscale x 8 x i32> undef,
776     <vscale x 8 x i32> %0,
777     <vscale x 8 x i32> %1,
778     iXLen %2)
780   ret <vscale x 8 x i32> %a
783 declare <vscale x 8 x i32> @llvm.riscv.vmin.mask.nxv8i32.nxv8i32(
784   <vscale x 8 x i32>,
785   <vscale x 8 x i32>,
786   <vscale x 8 x i32>,
787   <vscale x 8 x i1>,
788   iXLen,
789   iXLen);
791 define <vscale x 8 x i32> @intrinsic_vmin_mask_vv_nxv8i32_nxv8i32_nxv8i32(<vscale x 8 x i32> %0, <vscale x 8 x i32> %1, <vscale x 8 x i32> %2, <vscale x 8 x i1> %3, iXLen %4) nounwind {
792 ; CHECK-LABEL: intrinsic_vmin_mask_vv_nxv8i32_nxv8i32_nxv8i32:
793 ; CHECK:       # %bb.0: # %entry
794 ; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, mu
795 ; CHECK-NEXT:    vmin.vv v8, v12, v16, v0.t
796 ; CHECK-NEXT:    ret
797 entry:
798   %a = call <vscale x 8 x i32> @llvm.riscv.vmin.mask.nxv8i32.nxv8i32(
799     <vscale x 8 x i32> %0,
800     <vscale x 8 x i32> %1,
801     <vscale x 8 x i32> %2,
802     <vscale x 8 x i1> %3,
803     iXLen %4, iXLen 1)
805   ret <vscale x 8 x i32> %a
808 declare <vscale x 16 x i32> @llvm.riscv.vmin.nxv16i32.nxv16i32(
809   <vscale x 16 x i32>,
810   <vscale x 16 x i32>,
811   <vscale x 16 x i32>,
812   iXLen);
814 define <vscale x 16 x i32> @intrinsic_vmin_vv_nxv16i32_nxv16i32_nxv16i32(<vscale x 16 x i32> %0, <vscale x 16 x i32> %1, iXLen %2) nounwind {
815 ; CHECK-LABEL: intrinsic_vmin_vv_nxv16i32_nxv16i32_nxv16i32:
816 ; CHECK:       # %bb.0: # %entry
817 ; CHECK-NEXT:    vsetvli zero, a0, e32, m8, ta, ma
818 ; CHECK-NEXT:    vmin.vv v8, v8, v16
819 ; CHECK-NEXT:    ret
820 entry:
821   %a = call <vscale x 16 x i32> @llvm.riscv.vmin.nxv16i32.nxv16i32(
822     <vscale x 16 x i32> undef,
823     <vscale x 16 x i32> %0,
824     <vscale x 16 x i32> %1,
825     iXLen %2)
827   ret <vscale x 16 x i32> %a
830 declare <vscale x 16 x i32> @llvm.riscv.vmin.mask.nxv16i32.nxv16i32(
831   <vscale x 16 x i32>,
832   <vscale x 16 x i32>,
833   <vscale x 16 x i32>,
834   <vscale x 16 x i1>,
835   iXLen,
836   iXLen);
838 define <vscale x 16 x i32> @intrinsic_vmin_mask_vv_nxv16i32_nxv16i32_nxv16i32(<vscale x 16 x i32> %0, <vscale x 16 x i32> %1, <vscale x 16 x i32> %2, <vscale x 16 x i1> %3, iXLen %4) nounwind {
839 ; CHECK-LABEL: intrinsic_vmin_mask_vv_nxv16i32_nxv16i32_nxv16i32:
840 ; CHECK:       # %bb.0: # %entry
841 ; CHECK-NEXT:    vl8re32.v v24, (a0)
842 ; CHECK-NEXT:    vsetvli zero, a1, e32, m8, ta, mu
843 ; CHECK-NEXT:    vmin.vv v8, v16, v24, v0.t
844 ; CHECK-NEXT:    ret
845 entry:
846   %a = call <vscale x 16 x i32> @llvm.riscv.vmin.mask.nxv16i32.nxv16i32(
847     <vscale x 16 x i32> %0,
848     <vscale x 16 x i32> %1,
849     <vscale x 16 x i32> %2,
850     <vscale x 16 x i1> %3,
851     iXLen %4, iXLen 1)
853   ret <vscale x 16 x i32> %a
856 declare <vscale x 1 x i64> @llvm.riscv.vmin.nxv1i64.nxv1i64(
857   <vscale x 1 x i64>,
858   <vscale x 1 x i64>,
859   <vscale x 1 x i64>,
860   iXLen);
862 define <vscale x 1 x i64> @intrinsic_vmin_vv_nxv1i64_nxv1i64_nxv1i64(<vscale x 1 x i64> %0, <vscale x 1 x i64> %1, iXLen %2) nounwind {
863 ; CHECK-LABEL: intrinsic_vmin_vv_nxv1i64_nxv1i64_nxv1i64:
864 ; CHECK:       # %bb.0: # %entry
865 ; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
866 ; CHECK-NEXT:    vmin.vv v8, v8, v9
867 ; CHECK-NEXT:    ret
868 entry:
869   %a = call <vscale x 1 x i64> @llvm.riscv.vmin.nxv1i64.nxv1i64(
870     <vscale x 1 x i64> undef,
871     <vscale x 1 x i64> %0,
872     <vscale x 1 x i64> %1,
873     iXLen %2)
875   ret <vscale x 1 x i64> %a
878 declare <vscale x 1 x i64> @llvm.riscv.vmin.mask.nxv1i64.nxv1i64(
879   <vscale x 1 x i64>,
880   <vscale x 1 x i64>,
881   <vscale x 1 x i64>,
882   <vscale x 1 x i1>,
883   iXLen,
884   iXLen);
886 define <vscale x 1 x i64> @intrinsic_vmin_mask_vv_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 {
887 ; CHECK-LABEL: intrinsic_vmin_mask_vv_nxv1i64_nxv1i64_nxv1i64:
888 ; CHECK:       # %bb.0: # %entry
889 ; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, mu
890 ; CHECK-NEXT:    vmin.vv v8, v9, v10, v0.t
891 ; CHECK-NEXT:    ret
892 entry:
893   %a = call <vscale x 1 x i64> @llvm.riscv.vmin.mask.nxv1i64.nxv1i64(
894     <vscale x 1 x i64> %0,
895     <vscale x 1 x i64> %1,
896     <vscale x 1 x i64> %2,
897     <vscale x 1 x i1> %3,
898     iXLen %4, iXLen 1)
900   ret <vscale x 1 x i64> %a
903 declare <vscale x 2 x i64> @llvm.riscv.vmin.nxv2i64.nxv2i64(
904   <vscale x 2 x i64>,
905   <vscale x 2 x i64>,
906   <vscale x 2 x i64>,
907   iXLen);
909 define <vscale x 2 x i64> @intrinsic_vmin_vv_nxv2i64_nxv2i64_nxv2i64(<vscale x 2 x i64> %0, <vscale x 2 x i64> %1, iXLen %2) nounwind {
910 ; CHECK-LABEL: intrinsic_vmin_vv_nxv2i64_nxv2i64_nxv2i64:
911 ; CHECK:       # %bb.0: # %entry
912 ; CHECK-NEXT:    vsetvli zero, a0, e64, m2, ta, ma
913 ; CHECK-NEXT:    vmin.vv v8, v8, v10
914 ; CHECK-NEXT:    ret
915 entry:
916   %a = call <vscale x 2 x i64> @llvm.riscv.vmin.nxv2i64.nxv2i64(
917     <vscale x 2 x i64> undef,
918     <vscale x 2 x i64> %0,
919     <vscale x 2 x i64> %1,
920     iXLen %2)
922   ret <vscale x 2 x i64> %a
925 declare <vscale x 2 x i64> @llvm.riscv.vmin.mask.nxv2i64.nxv2i64(
926   <vscale x 2 x i64>,
927   <vscale x 2 x i64>,
928   <vscale x 2 x i64>,
929   <vscale x 2 x i1>,
930   iXLen,
931   iXLen);
933 define <vscale x 2 x i64> @intrinsic_vmin_mask_vv_nxv2i64_nxv2i64_nxv2i64(<vscale x 2 x i64> %0, <vscale x 2 x i64> %1, <vscale x 2 x i64> %2, <vscale x 2 x i1> %3, iXLen %4) nounwind {
934 ; CHECK-LABEL: intrinsic_vmin_mask_vv_nxv2i64_nxv2i64_nxv2i64:
935 ; CHECK:       # %bb.0: # %entry
936 ; CHECK-NEXT:    vsetvli zero, a0, e64, m2, ta, mu
937 ; CHECK-NEXT:    vmin.vv v8, v10, v12, v0.t
938 ; CHECK-NEXT:    ret
939 entry:
940   %a = call <vscale x 2 x i64> @llvm.riscv.vmin.mask.nxv2i64.nxv2i64(
941     <vscale x 2 x i64> %0,
942     <vscale x 2 x i64> %1,
943     <vscale x 2 x i64> %2,
944     <vscale x 2 x i1> %3,
945     iXLen %4, iXLen 1)
947   ret <vscale x 2 x i64> %a
950 declare <vscale x 4 x i64> @llvm.riscv.vmin.nxv4i64.nxv4i64(
951   <vscale x 4 x i64>,
952   <vscale x 4 x i64>,
953   <vscale x 4 x i64>,
954   iXLen);
956 define <vscale x 4 x i64> @intrinsic_vmin_vv_nxv4i64_nxv4i64_nxv4i64(<vscale x 4 x i64> %0, <vscale x 4 x i64> %1, iXLen %2) nounwind {
957 ; CHECK-LABEL: intrinsic_vmin_vv_nxv4i64_nxv4i64_nxv4i64:
958 ; CHECK:       # %bb.0: # %entry
959 ; CHECK-NEXT:    vsetvli zero, a0, e64, m4, ta, ma
960 ; CHECK-NEXT:    vmin.vv v8, v8, v12
961 ; CHECK-NEXT:    ret
962 entry:
963   %a = call <vscale x 4 x i64> @llvm.riscv.vmin.nxv4i64.nxv4i64(
964     <vscale x 4 x i64> undef,
965     <vscale x 4 x i64> %0,
966     <vscale x 4 x i64> %1,
967     iXLen %2)
969   ret <vscale x 4 x i64> %a
972 declare <vscale x 4 x i64> @llvm.riscv.vmin.mask.nxv4i64.nxv4i64(
973   <vscale x 4 x i64>,
974   <vscale x 4 x i64>,
975   <vscale x 4 x i64>,
976   <vscale x 4 x i1>,
977   iXLen,
978   iXLen);
980 define <vscale x 4 x i64> @intrinsic_vmin_mask_vv_nxv4i64_nxv4i64_nxv4i64(<vscale x 4 x i64> %0, <vscale x 4 x i64> %1, <vscale x 4 x i64> %2, <vscale x 4 x i1> %3, iXLen %4) nounwind {
981 ; CHECK-LABEL: intrinsic_vmin_mask_vv_nxv4i64_nxv4i64_nxv4i64:
982 ; CHECK:       # %bb.0: # %entry
983 ; CHECK-NEXT:    vsetvli zero, a0, e64, m4, ta, mu
984 ; CHECK-NEXT:    vmin.vv v8, v12, v16, v0.t
985 ; CHECK-NEXT:    ret
986 entry:
987   %a = call <vscale x 4 x i64> @llvm.riscv.vmin.mask.nxv4i64.nxv4i64(
988     <vscale x 4 x i64> %0,
989     <vscale x 4 x i64> %1,
990     <vscale x 4 x i64> %2,
991     <vscale x 4 x i1> %3,
992     iXLen %4, iXLen 1)
994   ret <vscale x 4 x i64> %a
997 declare <vscale x 8 x i64> @llvm.riscv.vmin.nxv8i64.nxv8i64(
998   <vscale x 8 x i64>,
999   <vscale x 8 x i64>,
1000   <vscale x 8 x i64>,
1001   iXLen);
1003 define <vscale x 8 x i64> @intrinsic_vmin_vv_nxv8i64_nxv8i64_nxv8i64(<vscale x 8 x i64> %0, <vscale x 8 x i64> %1, iXLen %2) nounwind {
1004 ; CHECK-LABEL: intrinsic_vmin_vv_nxv8i64_nxv8i64_nxv8i64:
1005 ; CHECK:       # %bb.0: # %entry
1006 ; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma
1007 ; CHECK-NEXT:    vmin.vv v8, v8, v16
1008 ; CHECK-NEXT:    ret
1009 entry:
1010   %a = call <vscale x 8 x i64> @llvm.riscv.vmin.nxv8i64.nxv8i64(
1011     <vscale x 8 x i64> undef,
1012     <vscale x 8 x i64> %0,
1013     <vscale x 8 x i64> %1,
1014     iXLen %2)
1016   ret <vscale x 8 x i64> %a
1019 declare <vscale x 8 x i64> @llvm.riscv.vmin.mask.nxv8i64.nxv8i64(
1020   <vscale x 8 x i64>,
1021   <vscale x 8 x i64>,
1022   <vscale x 8 x i64>,
1023   <vscale x 8 x i1>,
1024   iXLen,
1025   iXLen);
1027 define <vscale x 8 x i64> @intrinsic_vmin_mask_vv_nxv8i64_nxv8i64_nxv8i64(<vscale x 8 x i64> %0, <vscale x 8 x i64> %1, <vscale x 8 x i64> %2, <vscale x 8 x i1> %3, iXLen %4) nounwind {
1028 ; CHECK-LABEL: intrinsic_vmin_mask_vv_nxv8i64_nxv8i64_nxv8i64:
1029 ; CHECK:       # %bb.0: # %entry
1030 ; CHECK-NEXT:    vl8re64.v v24, (a0)
1031 ; CHECK-NEXT:    vsetvli zero, a1, e64, m8, ta, mu
1032 ; CHECK-NEXT:    vmin.vv v8, v16, v24, v0.t
1033 ; CHECK-NEXT:    ret
1034 entry:
1035   %a = call <vscale x 8 x i64> @llvm.riscv.vmin.mask.nxv8i64.nxv8i64(
1036     <vscale x 8 x i64> %0,
1037     <vscale x 8 x i64> %1,
1038     <vscale x 8 x i64> %2,
1039     <vscale x 8 x i1> %3,
1040     iXLen %4, iXLen 1)
1042   ret <vscale x 8 x i64> %a
1045 declare <vscale x 1 x i8> @llvm.riscv.vmin.nxv1i8.i8(
1046   <vscale x 1 x i8>,
1047   <vscale x 1 x i8>,
1048   i8,
1049   iXLen);
1051 define <vscale x 1 x i8> @intrinsic_vmin_vx_nxv1i8_nxv1i8_i8(<vscale x 1 x i8> %0, i8 %1, iXLen %2) nounwind {
1052 ; CHECK-LABEL: intrinsic_vmin_vx_nxv1i8_nxv1i8_i8:
1053 ; CHECK:       # %bb.0: # %entry
1054 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf8, ta, ma
1055 ; CHECK-NEXT:    vmin.vx v8, v8, a0
1056 ; CHECK-NEXT:    ret
1057 entry:
1058   %a = call <vscale x 1 x i8> @llvm.riscv.vmin.nxv1i8.i8(
1059     <vscale x 1 x i8> undef,
1060     <vscale x 1 x i8> %0,
1061     i8 %1,
1062     iXLen %2)
1064   ret <vscale x 1 x i8> %a
1067 declare <vscale x 1 x i8> @llvm.riscv.vmin.mask.nxv1i8.i8(
1068   <vscale x 1 x i8>,
1069   <vscale x 1 x i8>,
1070   i8,
1071   <vscale x 1 x i1>,
1072   iXLen,
1073   iXLen);
1075 define <vscale x 1 x i8> @intrinsic_vmin_mask_vx_nxv1i8_nxv1i8_i8(<vscale x 1 x i8> %0, <vscale x 1 x i8> %1, i8 %2, <vscale x 1 x i1> %3, iXLen %4) nounwind {
1076 ; CHECK-LABEL: intrinsic_vmin_mask_vx_nxv1i8_nxv1i8_i8:
1077 ; CHECK:       # %bb.0: # %entry
1078 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf8, ta, mu
1079 ; CHECK-NEXT:    vmin.vx v8, v9, a0, v0.t
1080 ; CHECK-NEXT:    ret
1081 entry:
1082   %a = call <vscale x 1 x i8> @llvm.riscv.vmin.mask.nxv1i8.i8(
1083     <vscale x 1 x i8> %0,
1084     <vscale x 1 x i8> %1,
1085     i8 %2,
1086     <vscale x 1 x i1> %3,
1087     iXLen %4, iXLen 1)
1089   ret <vscale x 1 x i8> %a
1092 declare <vscale x 2 x i8> @llvm.riscv.vmin.nxv2i8.i8(
1093   <vscale x 2 x i8>,
1094   <vscale x 2 x i8>,
1095   i8,
1096   iXLen);
1098 define <vscale x 2 x i8> @intrinsic_vmin_vx_nxv2i8_nxv2i8_i8(<vscale x 2 x i8> %0, i8 %1, iXLen %2) nounwind {
1099 ; CHECK-LABEL: intrinsic_vmin_vx_nxv2i8_nxv2i8_i8:
1100 ; CHECK:       # %bb.0: # %entry
1101 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf4, ta, ma
1102 ; CHECK-NEXT:    vmin.vx v8, v8, a0
1103 ; CHECK-NEXT:    ret
1104 entry:
1105   %a = call <vscale x 2 x i8> @llvm.riscv.vmin.nxv2i8.i8(
1106     <vscale x 2 x i8> undef,
1107     <vscale x 2 x i8> %0,
1108     i8 %1,
1109     iXLen %2)
1111   ret <vscale x 2 x i8> %a
1114 declare <vscale x 2 x i8> @llvm.riscv.vmin.mask.nxv2i8.i8(
1115   <vscale x 2 x i8>,
1116   <vscale x 2 x i8>,
1117   i8,
1118   <vscale x 2 x i1>,
1119   iXLen,
1120   iXLen);
1122 define <vscale x 2 x i8> @intrinsic_vmin_mask_vx_nxv2i8_nxv2i8_i8(<vscale x 2 x i8> %0, <vscale x 2 x i8> %1, i8 %2, <vscale x 2 x i1> %3, iXLen %4) nounwind {
1123 ; CHECK-LABEL: intrinsic_vmin_mask_vx_nxv2i8_nxv2i8_i8:
1124 ; CHECK:       # %bb.0: # %entry
1125 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf4, ta, mu
1126 ; CHECK-NEXT:    vmin.vx v8, v9, a0, v0.t
1127 ; CHECK-NEXT:    ret
1128 entry:
1129   %a = call <vscale x 2 x i8> @llvm.riscv.vmin.mask.nxv2i8.i8(
1130     <vscale x 2 x i8> %0,
1131     <vscale x 2 x i8> %1,
1132     i8 %2,
1133     <vscale x 2 x i1> %3,
1134     iXLen %4, iXLen 1)
1136   ret <vscale x 2 x i8> %a
1139 declare <vscale x 4 x i8> @llvm.riscv.vmin.nxv4i8.i8(
1140   <vscale x 4 x i8>,
1141   <vscale x 4 x i8>,
1142   i8,
1143   iXLen);
1145 define <vscale x 4 x i8> @intrinsic_vmin_vx_nxv4i8_nxv4i8_i8(<vscale x 4 x i8> %0, i8 %1, iXLen %2) nounwind {
1146 ; CHECK-LABEL: intrinsic_vmin_vx_nxv4i8_nxv4i8_i8:
1147 ; CHECK:       # %bb.0: # %entry
1148 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf2, ta, ma
1149 ; CHECK-NEXT:    vmin.vx v8, v8, a0
1150 ; CHECK-NEXT:    ret
1151 entry:
1152   %a = call <vscale x 4 x i8> @llvm.riscv.vmin.nxv4i8.i8(
1153     <vscale x 4 x i8> undef,
1154     <vscale x 4 x i8> %0,
1155     i8 %1,
1156     iXLen %2)
1158   ret <vscale x 4 x i8> %a
1161 declare <vscale x 4 x i8> @llvm.riscv.vmin.mask.nxv4i8.i8(
1162   <vscale x 4 x i8>,
1163   <vscale x 4 x i8>,
1164   i8,
1165   <vscale x 4 x i1>,
1166   iXLen,
1167   iXLen);
1169 define <vscale x 4 x i8> @intrinsic_vmin_mask_vx_nxv4i8_nxv4i8_i8(<vscale x 4 x i8> %0, <vscale x 4 x i8> %1, i8 %2, <vscale x 4 x i1> %3, iXLen %4) nounwind {
1170 ; CHECK-LABEL: intrinsic_vmin_mask_vx_nxv4i8_nxv4i8_i8:
1171 ; CHECK:       # %bb.0: # %entry
1172 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf2, ta, mu
1173 ; CHECK-NEXT:    vmin.vx v8, v9, a0, v0.t
1174 ; CHECK-NEXT:    ret
1175 entry:
1176   %a = call <vscale x 4 x i8> @llvm.riscv.vmin.mask.nxv4i8.i8(
1177     <vscale x 4 x i8> %0,
1178     <vscale x 4 x i8> %1,
1179     i8 %2,
1180     <vscale x 4 x i1> %3,
1181     iXLen %4, iXLen 1)
1183   ret <vscale x 4 x i8> %a
1186 declare <vscale x 8 x i8> @llvm.riscv.vmin.nxv8i8.i8(
1187   <vscale x 8 x i8>,
1188   <vscale x 8 x i8>,
1189   i8,
1190   iXLen);
1192 define <vscale x 8 x i8> @intrinsic_vmin_vx_nxv8i8_nxv8i8_i8(<vscale x 8 x i8> %0, i8 %1, iXLen %2) nounwind {
1193 ; CHECK-LABEL: intrinsic_vmin_vx_nxv8i8_nxv8i8_i8:
1194 ; CHECK:       # %bb.0: # %entry
1195 ; CHECK-NEXT:    vsetvli zero, a1, e8, m1, ta, ma
1196 ; CHECK-NEXT:    vmin.vx v8, v8, a0
1197 ; CHECK-NEXT:    ret
1198 entry:
1199   %a = call <vscale x 8 x i8> @llvm.riscv.vmin.nxv8i8.i8(
1200     <vscale x 8 x i8> undef,
1201     <vscale x 8 x i8> %0,
1202     i8 %1,
1203     iXLen %2)
1205   ret <vscale x 8 x i8> %a
1208 declare <vscale x 8 x i8> @llvm.riscv.vmin.mask.nxv8i8.i8(
1209   <vscale x 8 x i8>,
1210   <vscale x 8 x i8>,
1211   i8,
1212   <vscale x 8 x i1>,
1213   iXLen,
1214   iXLen);
1216 define <vscale x 8 x i8> @intrinsic_vmin_mask_vx_nxv8i8_nxv8i8_i8(<vscale x 8 x i8> %0, <vscale x 8 x i8> %1, i8 %2, <vscale x 8 x i1> %3, iXLen %4) nounwind {
1217 ; CHECK-LABEL: intrinsic_vmin_mask_vx_nxv8i8_nxv8i8_i8:
1218 ; CHECK:       # %bb.0: # %entry
1219 ; CHECK-NEXT:    vsetvli zero, a1, e8, m1, ta, mu
1220 ; CHECK-NEXT:    vmin.vx v8, v9, a0, v0.t
1221 ; CHECK-NEXT:    ret
1222 entry:
1223   %a = call <vscale x 8 x i8> @llvm.riscv.vmin.mask.nxv8i8.i8(
1224     <vscale x 8 x i8> %0,
1225     <vscale x 8 x i8> %1,
1226     i8 %2,
1227     <vscale x 8 x i1> %3,
1228     iXLen %4, iXLen 1)
1230   ret <vscale x 8 x i8> %a
1233 declare <vscale x 16 x i8> @llvm.riscv.vmin.nxv16i8.i8(
1234   <vscale x 16 x i8>,
1235   <vscale x 16 x i8>,
1236   i8,
1237   iXLen);
1239 define <vscale x 16 x i8> @intrinsic_vmin_vx_nxv16i8_nxv16i8_i8(<vscale x 16 x i8> %0, i8 %1, iXLen %2) nounwind {
1240 ; CHECK-LABEL: intrinsic_vmin_vx_nxv16i8_nxv16i8_i8:
1241 ; CHECK:       # %bb.0: # %entry
1242 ; CHECK-NEXT:    vsetvli zero, a1, e8, m2, ta, ma
1243 ; CHECK-NEXT:    vmin.vx v8, v8, a0
1244 ; CHECK-NEXT:    ret
1245 entry:
1246   %a = call <vscale x 16 x i8> @llvm.riscv.vmin.nxv16i8.i8(
1247     <vscale x 16 x i8> undef,
1248     <vscale x 16 x i8> %0,
1249     i8 %1,
1250     iXLen %2)
1252   ret <vscale x 16 x i8> %a
1255 declare <vscale x 16 x i8> @llvm.riscv.vmin.mask.nxv16i8.i8(
1256   <vscale x 16 x i8>,
1257   <vscale x 16 x i8>,
1258   i8,
1259   <vscale x 16 x i1>,
1260   iXLen,
1261   iXLen);
1263 define <vscale x 16 x i8> @intrinsic_vmin_mask_vx_nxv16i8_nxv16i8_i8(<vscale x 16 x i8> %0, <vscale x 16 x i8> %1, i8 %2, <vscale x 16 x i1> %3, iXLen %4) nounwind {
1264 ; CHECK-LABEL: intrinsic_vmin_mask_vx_nxv16i8_nxv16i8_i8:
1265 ; CHECK:       # %bb.0: # %entry
1266 ; CHECK-NEXT:    vsetvli zero, a1, e8, m2, ta, mu
1267 ; CHECK-NEXT:    vmin.vx v8, v10, a0, v0.t
1268 ; CHECK-NEXT:    ret
1269 entry:
1270   %a = call <vscale x 16 x i8> @llvm.riscv.vmin.mask.nxv16i8.i8(
1271     <vscale x 16 x i8> %0,
1272     <vscale x 16 x i8> %1,
1273     i8 %2,
1274     <vscale x 16 x i1> %3,
1275     iXLen %4, iXLen 1)
1277   ret <vscale x 16 x i8> %a
1280 declare <vscale x 32 x i8> @llvm.riscv.vmin.nxv32i8.i8(
1281   <vscale x 32 x i8>,
1282   <vscale x 32 x i8>,
1283   i8,
1284   iXLen);
1286 define <vscale x 32 x i8> @intrinsic_vmin_vx_nxv32i8_nxv32i8_i8(<vscale x 32 x i8> %0, i8 %1, iXLen %2) nounwind {
1287 ; CHECK-LABEL: intrinsic_vmin_vx_nxv32i8_nxv32i8_i8:
1288 ; CHECK:       # %bb.0: # %entry
1289 ; CHECK-NEXT:    vsetvli zero, a1, e8, m4, ta, ma
1290 ; CHECK-NEXT:    vmin.vx v8, v8, a0
1291 ; CHECK-NEXT:    ret
1292 entry:
1293   %a = call <vscale x 32 x i8> @llvm.riscv.vmin.nxv32i8.i8(
1294     <vscale x 32 x i8> undef,
1295     <vscale x 32 x i8> %0,
1296     i8 %1,
1297     iXLen %2)
1299   ret <vscale x 32 x i8> %a
1302 declare <vscale x 32 x i8> @llvm.riscv.vmin.mask.nxv32i8.i8(
1303   <vscale x 32 x i8>,
1304   <vscale x 32 x i8>,
1305   i8,
1306   <vscale x 32 x i1>,
1307   iXLen,
1308   iXLen);
1310 define <vscale x 32 x i8> @intrinsic_vmin_mask_vx_nxv32i8_nxv32i8_i8(<vscale x 32 x i8> %0, <vscale x 32 x i8> %1, i8 %2, <vscale x 32 x i1> %3, iXLen %4) nounwind {
1311 ; CHECK-LABEL: intrinsic_vmin_mask_vx_nxv32i8_nxv32i8_i8:
1312 ; CHECK:       # %bb.0: # %entry
1313 ; CHECK-NEXT:    vsetvli zero, a1, e8, m4, ta, mu
1314 ; CHECK-NEXT:    vmin.vx v8, v12, a0, v0.t
1315 ; CHECK-NEXT:    ret
1316 entry:
1317   %a = call <vscale x 32 x i8> @llvm.riscv.vmin.mask.nxv32i8.i8(
1318     <vscale x 32 x i8> %0,
1319     <vscale x 32 x i8> %1,
1320     i8 %2,
1321     <vscale x 32 x i1> %3,
1322     iXLen %4, iXLen 1)
1324   ret <vscale x 32 x i8> %a
1327 declare <vscale x 64 x i8> @llvm.riscv.vmin.nxv64i8.i8(
1328   <vscale x 64 x i8>,
1329   <vscale x 64 x i8>,
1330   i8,
1331   iXLen);
1333 define <vscale x 64 x i8> @intrinsic_vmin_vx_nxv64i8_nxv64i8_i8(<vscale x 64 x i8> %0, i8 %1, iXLen %2) nounwind {
1334 ; CHECK-LABEL: intrinsic_vmin_vx_nxv64i8_nxv64i8_i8:
1335 ; CHECK:       # %bb.0: # %entry
1336 ; CHECK-NEXT:    vsetvli zero, a1, e8, m8, ta, ma
1337 ; CHECK-NEXT:    vmin.vx v8, v8, a0
1338 ; CHECK-NEXT:    ret
1339 entry:
1340   %a = call <vscale x 64 x i8> @llvm.riscv.vmin.nxv64i8.i8(
1341     <vscale x 64 x i8> undef,
1342     <vscale x 64 x i8> %0,
1343     i8 %1,
1344     iXLen %2)
1346   ret <vscale x 64 x i8> %a
1349 declare <vscale x 64 x i8> @llvm.riscv.vmin.mask.nxv64i8.i8(
1350   <vscale x 64 x i8>,
1351   <vscale x 64 x i8>,
1352   i8,
1353   <vscale x 64 x i1>,
1354   iXLen,
1355   iXLen);
1357 define <vscale x 64 x i8> @intrinsic_vmin_mask_vx_nxv64i8_nxv64i8_i8(<vscale x 64 x i8> %0, <vscale x 64 x i8> %1, i8 %2, <vscale x 64 x i1> %3, iXLen %4) nounwind {
1358 ; CHECK-LABEL: intrinsic_vmin_mask_vx_nxv64i8_nxv64i8_i8:
1359 ; CHECK:       # %bb.0: # %entry
1360 ; CHECK-NEXT:    vsetvli zero, a1, e8, m8, ta, mu
1361 ; CHECK-NEXT:    vmin.vx v8, v16, a0, v0.t
1362 ; CHECK-NEXT:    ret
1363 entry:
1364   %a = call <vscale x 64 x i8> @llvm.riscv.vmin.mask.nxv64i8.i8(
1365     <vscale x 64 x i8> %0,
1366     <vscale x 64 x i8> %1,
1367     i8 %2,
1368     <vscale x 64 x i1> %3,
1369     iXLen %4, iXLen 1)
1371   ret <vscale x 64 x i8> %a
1374 declare <vscale x 1 x i16> @llvm.riscv.vmin.nxv1i16.i16(
1375   <vscale x 1 x i16>,
1376   <vscale x 1 x i16>,
1377   i16,
1378   iXLen);
1380 define <vscale x 1 x i16> @intrinsic_vmin_vx_nxv1i16_nxv1i16_i16(<vscale x 1 x i16> %0, i16 %1, iXLen %2) nounwind {
1381 ; CHECK-LABEL: intrinsic_vmin_vx_nxv1i16_nxv1i16_i16:
1382 ; CHECK:       # %bb.0: # %entry
1383 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, ma
1384 ; CHECK-NEXT:    vmin.vx v8, v8, a0
1385 ; CHECK-NEXT:    ret
1386 entry:
1387   %a = call <vscale x 1 x i16> @llvm.riscv.vmin.nxv1i16.i16(
1388     <vscale x 1 x i16> undef,
1389     <vscale x 1 x i16> %0,
1390     i16 %1,
1391     iXLen %2)
1393   ret <vscale x 1 x i16> %a
1396 declare <vscale x 1 x i16> @llvm.riscv.vmin.mask.nxv1i16.i16(
1397   <vscale x 1 x i16>,
1398   <vscale x 1 x i16>,
1399   i16,
1400   <vscale x 1 x i1>,
1401   iXLen,
1402   iXLen);
1404 define <vscale x 1 x i16> @intrinsic_vmin_mask_vx_nxv1i16_nxv1i16_i16(<vscale x 1 x i16> %0, <vscale x 1 x i16> %1, i16 %2, <vscale x 1 x i1> %3, iXLen %4) nounwind {
1405 ; CHECK-LABEL: intrinsic_vmin_mask_vx_nxv1i16_nxv1i16_i16:
1406 ; CHECK:       # %bb.0: # %entry
1407 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, mu
1408 ; CHECK-NEXT:    vmin.vx v8, v9, a0, v0.t
1409 ; CHECK-NEXT:    ret
1410 entry:
1411   %a = call <vscale x 1 x i16> @llvm.riscv.vmin.mask.nxv1i16.i16(
1412     <vscale x 1 x i16> %0,
1413     <vscale x 1 x i16> %1,
1414     i16 %2,
1415     <vscale x 1 x i1> %3,
1416     iXLen %4, iXLen 1)
1418   ret <vscale x 1 x i16> %a
1421 declare <vscale x 2 x i16> @llvm.riscv.vmin.nxv2i16.i16(
1422   <vscale x 2 x i16>,
1423   <vscale x 2 x i16>,
1424   i16,
1425   iXLen);
1427 define <vscale x 2 x i16> @intrinsic_vmin_vx_nxv2i16_nxv2i16_i16(<vscale x 2 x i16> %0, i16 %1, iXLen %2) nounwind {
1428 ; CHECK-LABEL: intrinsic_vmin_vx_nxv2i16_nxv2i16_i16:
1429 ; CHECK:       # %bb.0: # %entry
1430 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, ma
1431 ; CHECK-NEXT:    vmin.vx v8, v8, a0
1432 ; CHECK-NEXT:    ret
1433 entry:
1434   %a = call <vscale x 2 x i16> @llvm.riscv.vmin.nxv2i16.i16(
1435     <vscale x 2 x i16> undef,
1436     <vscale x 2 x i16> %0,
1437     i16 %1,
1438     iXLen %2)
1440   ret <vscale x 2 x i16> %a
1443 declare <vscale x 2 x i16> @llvm.riscv.vmin.mask.nxv2i16.i16(
1444   <vscale x 2 x i16>,
1445   <vscale x 2 x i16>,
1446   i16,
1447   <vscale x 2 x i1>,
1448   iXLen,
1449   iXLen);
1451 define <vscale x 2 x i16> @intrinsic_vmin_mask_vx_nxv2i16_nxv2i16_i16(<vscale x 2 x i16> %0, <vscale x 2 x i16> %1, i16 %2, <vscale x 2 x i1> %3, iXLen %4) nounwind {
1452 ; CHECK-LABEL: intrinsic_vmin_mask_vx_nxv2i16_nxv2i16_i16:
1453 ; CHECK:       # %bb.0: # %entry
1454 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, mu
1455 ; CHECK-NEXT:    vmin.vx v8, v9, a0, v0.t
1456 ; CHECK-NEXT:    ret
1457 entry:
1458   %a = call <vscale x 2 x i16> @llvm.riscv.vmin.mask.nxv2i16.i16(
1459     <vscale x 2 x i16> %0,
1460     <vscale x 2 x i16> %1,
1461     i16 %2,
1462     <vscale x 2 x i1> %3,
1463     iXLen %4, iXLen 1)
1465   ret <vscale x 2 x i16> %a
1468 declare <vscale x 4 x i16> @llvm.riscv.vmin.nxv4i16.i16(
1469   <vscale x 4 x i16>,
1470   <vscale x 4 x i16>,
1471   i16,
1472   iXLen);
1474 define <vscale x 4 x i16> @intrinsic_vmin_vx_nxv4i16_nxv4i16_i16(<vscale x 4 x i16> %0, i16 %1, iXLen %2) nounwind {
1475 ; CHECK-LABEL: intrinsic_vmin_vx_nxv4i16_nxv4i16_i16:
1476 ; CHECK:       # %bb.0: # %entry
1477 ; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, ma
1478 ; CHECK-NEXT:    vmin.vx v8, v8, a0
1479 ; CHECK-NEXT:    ret
1480 entry:
1481   %a = call <vscale x 4 x i16> @llvm.riscv.vmin.nxv4i16.i16(
1482     <vscale x 4 x i16> undef,
1483     <vscale x 4 x i16> %0,
1484     i16 %1,
1485     iXLen %2)
1487   ret <vscale x 4 x i16> %a
1490 declare <vscale x 4 x i16> @llvm.riscv.vmin.mask.nxv4i16.i16(
1491   <vscale x 4 x i16>,
1492   <vscale x 4 x i16>,
1493   i16,
1494   <vscale x 4 x i1>,
1495   iXLen,
1496   iXLen);
1498 define <vscale x 4 x i16> @intrinsic_vmin_mask_vx_nxv4i16_nxv4i16_i16(<vscale x 4 x i16> %0, <vscale x 4 x i16> %1, i16 %2, <vscale x 4 x i1> %3, iXLen %4) nounwind {
1499 ; CHECK-LABEL: intrinsic_vmin_mask_vx_nxv4i16_nxv4i16_i16:
1500 ; CHECK:       # %bb.0: # %entry
1501 ; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, mu
1502 ; CHECK-NEXT:    vmin.vx v8, v9, a0, v0.t
1503 ; CHECK-NEXT:    ret
1504 entry:
1505   %a = call <vscale x 4 x i16> @llvm.riscv.vmin.mask.nxv4i16.i16(
1506     <vscale x 4 x i16> %0,
1507     <vscale x 4 x i16> %1,
1508     i16 %2,
1509     <vscale x 4 x i1> %3,
1510     iXLen %4, iXLen 1)
1512   ret <vscale x 4 x i16> %a
1515 declare <vscale x 8 x i16> @llvm.riscv.vmin.nxv8i16.i16(
1516   <vscale x 8 x i16>,
1517   <vscale x 8 x i16>,
1518   i16,
1519   iXLen);
1521 define <vscale x 8 x i16> @intrinsic_vmin_vx_nxv8i16_nxv8i16_i16(<vscale x 8 x i16> %0, i16 %1, iXLen %2) nounwind {
1522 ; CHECK-LABEL: intrinsic_vmin_vx_nxv8i16_nxv8i16_i16:
1523 ; CHECK:       # %bb.0: # %entry
1524 ; CHECK-NEXT:    vsetvli zero, a1, e16, m2, ta, ma
1525 ; CHECK-NEXT:    vmin.vx v8, v8, a0
1526 ; CHECK-NEXT:    ret
1527 entry:
1528   %a = call <vscale x 8 x i16> @llvm.riscv.vmin.nxv8i16.i16(
1529     <vscale x 8 x i16> undef,
1530     <vscale x 8 x i16> %0,
1531     i16 %1,
1532     iXLen %2)
1534   ret <vscale x 8 x i16> %a
1537 declare <vscale x 8 x i16> @llvm.riscv.vmin.mask.nxv8i16.i16(
1538   <vscale x 8 x i16>,
1539   <vscale x 8 x i16>,
1540   i16,
1541   <vscale x 8 x i1>,
1542   iXLen,
1543   iXLen);
1545 define <vscale x 8 x i16> @intrinsic_vmin_mask_vx_nxv8i16_nxv8i16_i16(<vscale x 8 x i16> %0, <vscale x 8 x i16> %1, i16 %2, <vscale x 8 x i1> %3, iXLen %4) nounwind {
1546 ; CHECK-LABEL: intrinsic_vmin_mask_vx_nxv8i16_nxv8i16_i16:
1547 ; CHECK:       # %bb.0: # %entry
1548 ; CHECK-NEXT:    vsetvli zero, a1, e16, m2, ta, mu
1549 ; CHECK-NEXT:    vmin.vx v8, v10, a0, v0.t
1550 ; CHECK-NEXT:    ret
1551 entry:
1552   %a = call <vscale x 8 x i16> @llvm.riscv.vmin.mask.nxv8i16.i16(
1553     <vscale x 8 x i16> %0,
1554     <vscale x 8 x i16> %1,
1555     i16 %2,
1556     <vscale x 8 x i1> %3,
1557     iXLen %4, iXLen 1)
1559   ret <vscale x 8 x i16> %a
1562 declare <vscale x 16 x i16> @llvm.riscv.vmin.nxv16i16.i16(
1563   <vscale x 16 x i16>,
1564   <vscale x 16 x i16>,
1565   i16,
1566   iXLen);
1568 define <vscale x 16 x i16> @intrinsic_vmin_vx_nxv16i16_nxv16i16_i16(<vscale x 16 x i16> %0, i16 %1, iXLen %2) nounwind {
1569 ; CHECK-LABEL: intrinsic_vmin_vx_nxv16i16_nxv16i16_i16:
1570 ; CHECK:       # %bb.0: # %entry
1571 ; CHECK-NEXT:    vsetvli zero, a1, e16, m4, ta, ma
1572 ; CHECK-NEXT:    vmin.vx v8, v8, a0
1573 ; CHECK-NEXT:    ret
1574 entry:
1575   %a = call <vscale x 16 x i16> @llvm.riscv.vmin.nxv16i16.i16(
1576     <vscale x 16 x i16> undef,
1577     <vscale x 16 x i16> %0,
1578     i16 %1,
1579     iXLen %2)
1581   ret <vscale x 16 x i16> %a
1584 declare <vscale x 16 x i16> @llvm.riscv.vmin.mask.nxv16i16.i16(
1585   <vscale x 16 x i16>,
1586   <vscale x 16 x i16>,
1587   i16,
1588   <vscale x 16 x i1>,
1589   iXLen,
1590   iXLen);
1592 define <vscale x 16 x i16> @intrinsic_vmin_mask_vx_nxv16i16_nxv16i16_i16(<vscale x 16 x i16> %0, <vscale x 16 x i16> %1, i16 %2, <vscale x 16 x i1> %3, iXLen %4) nounwind {
1593 ; CHECK-LABEL: intrinsic_vmin_mask_vx_nxv16i16_nxv16i16_i16:
1594 ; CHECK:       # %bb.0: # %entry
1595 ; CHECK-NEXT:    vsetvli zero, a1, e16, m4, ta, mu
1596 ; CHECK-NEXT:    vmin.vx v8, v12, a0, v0.t
1597 ; CHECK-NEXT:    ret
1598 entry:
1599   %a = call <vscale x 16 x i16> @llvm.riscv.vmin.mask.nxv16i16.i16(
1600     <vscale x 16 x i16> %0,
1601     <vscale x 16 x i16> %1,
1602     i16 %2,
1603     <vscale x 16 x i1> %3,
1604     iXLen %4, iXLen 1)
1606   ret <vscale x 16 x i16> %a
1609 declare <vscale x 32 x i16> @llvm.riscv.vmin.nxv32i16.i16(
1610   <vscale x 32 x i16>,
1611   <vscale x 32 x i16>,
1612   i16,
1613   iXLen);
1615 define <vscale x 32 x i16> @intrinsic_vmin_vx_nxv32i16_nxv32i16_i16(<vscale x 32 x i16> %0, i16 %1, iXLen %2) nounwind {
1616 ; CHECK-LABEL: intrinsic_vmin_vx_nxv32i16_nxv32i16_i16:
1617 ; CHECK:       # %bb.0: # %entry
1618 ; CHECK-NEXT:    vsetvli zero, a1, e16, m8, ta, ma
1619 ; CHECK-NEXT:    vmin.vx v8, v8, a0
1620 ; CHECK-NEXT:    ret
1621 entry:
1622   %a = call <vscale x 32 x i16> @llvm.riscv.vmin.nxv32i16.i16(
1623     <vscale x 32 x i16> undef,
1624     <vscale x 32 x i16> %0,
1625     i16 %1,
1626     iXLen %2)
1628   ret <vscale x 32 x i16> %a
1631 declare <vscale x 32 x i16> @llvm.riscv.vmin.mask.nxv32i16.i16(
1632   <vscale x 32 x i16>,
1633   <vscale x 32 x i16>,
1634   i16,
1635   <vscale x 32 x i1>,
1636   iXLen,
1637   iXLen);
1639 define <vscale x 32 x i16> @intrinsic_vmin_mask_vx_nxv32i16_nxv32i16_i16(<vscale x 32 x i16> %0, <vscale x 32 x i16> %1, i16 %2, <vscale x 32 x i1> %3, iXLen %4) nounwind {
1640 ; CHECK-LABEL: intrinsic_vmin_mask_vx_nxv32i16_nxv32i16_i16:
1641 ; CHECK:       # %bb.0: # %entry
1642 ; CHECK-NEXT:    vsetvli zero, a1, e16, m8, ta, mu
1643 ; CHECK-NEXT:    vmin.vx v8, v16, a0, v0.t
1644 ; CHECK-NEXT:    ret
1645 entry:
1646   %a = call <vscale x 32 x i16> @llvm.riscv.vmin.mask.nxv32i16.i16(
1647     <vscale x 32 x i16> %0,
1648     <vscale x 32 x i16> %1,
1649     i16 %2,
1650     <vscale x 32 x i1> %3,
1651     iXLen %4, iXLen 1)
1653   ret <vscale x 32 x i16> %a
1656 declare <vscale x 1 x i32> @llvm.riscv.vmin.nxv1i32.i32(
1657   <vscale x 1 x i32>,
1658   <vscale x 1 x i32>,
1659   i32,
1660   iXLen);
1662 define <vscale x 1 x i32> @intrinsic_vmin_vx_nxv1i32_nxv1i32_i32(<vscale x 1 x i32> %0, i32 %1, iXLen %2) nounwind {
1663 ; CHECK-LABEL: intrinsic_vmin_vx_nxv1i32_nxv1i32_i32:
1664 ; CHECK:       # %bb.0: # %entry
1665 ; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, ma
1666 ; CHECK-NEXT:    vmin.vx v8, v8, a0
1667 ; CHECK-NEXT:    ret
1668 entry:
1669   %a = call <vscale x 1 x i32> @llvm.riscv.vmin.nxv1i32.i32(
1670     <vscale x 1 x i32> undef,
1671     <vscale x 1 x i32> %0,
1672     i32 %1,
1673     iXLen %2)
1675   ret <vscale x 1 x i32> %a
1678 declare <vscale x 1 x i32> @llvm.riscv.vmin.mask.nxv1i32.i32(
1679   <vscale x 1 x i32>,
1680   <vscale x 1 x i32>,
1681   i32,
1682   <vscale x 1 x i1>,
1683   iXLen,
1684   iXLen);
1686 define <vscale x 1 x i32> @intrinsic_vmin_mask_vx_nxv1i32_nxv1i32_i32(<vscale x 1 x i32> %0, <vscale x 1 x i32> %1, i32 %2, <vscale x 1 x i1> %3, iXLen %4) nounwind {
1687 ; CHECK-LABEL: intrinsic_vmin_mask_vx_nxv1i32_nxv1i32_i32:
1688 ; CHECK:       # %bb.0: # %entry
1689 ; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, mu
1690 ; CHECK-NEXT:    vmin.vx v8, v9, a0, v0.t
1691 ; CHECK-NEXT:    ret
1692 entry:
1693   %a = call <vscale x 1 x i32> @llvm.riscv.vmin.mask.nxv1i32.i32(
1694     <vscale x 1 x i32> %0,
1695     <vscale x 1 x i32> %1,
1696     i32 %2,
1697     <vscale x 1 x i1> %3,
1698     iXLen %4, iXLen 1)
1700   ret <vscale x 1 x i32> %a
1703 declare <vscale x 2 x i32> @llvm.riscv.vmin.nxv2i32.i32(
1704   <vscale x 2 x i32>,
1705   <vscale x 2 x i32>,
1706   i32,
1707   iXLen);
1709 define <vscale x 2 x i32> @intrinsic_vmin_vx_nxv2i32_nxv2i32_i32(<vscale x 2 x i32> %0, i32 %1, iXLen %2) nounwind {
1710 ; CHECK-LABEL: intrinsic_vmin_vx_nxv2i32_nxv2i32_i32:
1711 ; CHECK:       # %bb.0: # %entry
1712 ; CHECK-NEXT:    vsetvli zero, a1, e32, m1, ta, ma
1713 ; CHECK-NEXT:    vmin.vx v8, v8, a0
1714 ; CHECK-NEXT:    ret
1715 entry:
1716   %a = call <vscale x 2 x i32> @llvm.riscv.vmin.nxv2i32.i32(
1717     <vscale x 2 x i32> undef,
1718     <vscale x 2 x i32> %0,
1719     i32 %1,
1720     iXLen %2)
1722   ret <vscale x 2 x i32> %a
1725 declare <vscale x 2 x i32> @llvm.riscv.vmin.mask.nxv2i32.i32(
1726   <vscale x 2 x i32>,
1727   <vscale x 2 x i32>,
1728   i32,
1729   <vscale x 2 x i1>,
1730   iXLen,
1731   iXLen);
1733 define <vscale x 2 x i32> @intrinsic_vmin_mask_vx_nxv2i32_nxv2i32_i32(<vscale x 2 x i32> %0, <vscale x 2 x i32> %1, i32 %2, <vscale x 2 x i1> %3, iXLen %4) nounwind {
1734 ; CHECK-LABEL: intrinsic_vmin_mask_vx_nxv2i32_nxv2i32_i32:
1735 ; CHECK:       # %bb.0: # %entry
1736 ; CHECK-NEXT:    vsetvli zero, a1, e32, m1, ta, mu
1737 ; CHECK-NEXT:    vmin.vx v8, v9, a0, v0.t
1738 ; CHECK-NEXT:    ret
1739 entry:
1740   %a = call <vscale x 2 x i32> @llvm.riscv.vmin.mask.nxv2i32.i32(
1741     <vscale x 2 x i32> %0,
1742     <vscale x 2 x i32> %1,
1743     i32 %2,
1744     <vscale x 2 x i1> %3,
1745     iXLen %4, iXLen 1)
1747   ret <vscale x 2 x i32> %a
1750 declare <vscale x 4 x i32> @llvm.riscv.vmin.nxv4i32.i32(
1751   <vscale x 4 x i32>,
1752   <vscale x 4 x i32>,
1753   i32,
1754   iXLen);
1756 define <vscale x 4 x i32> @intrinsic_vmin_vx_nxv4i32_nxv4i32_i32(<vscale x 4 x i32> %0, i32 %1, iXLen %2) nounwind {
1757 ; CHECK-LABEL: intrinsic_vmin_vx_nxv4i32_nxv4i32_i32:
1758 ; CHECK:       # %bb.0: # %entry
1759 ; CHECK-NEXT:    vsetvli zero, a1, e32, m2, ta, ma
1760 ; CHECK-NEXT:    vmin.vx v8, v8, a0
1761 ; CHECK-NEXT:    ret
1762 entry:
1763   %a = call <vscale x 4 x i32> @llvm.riscv.vmin.nxv4i32.i32(
1764     <vscale x 4 x i32> undef,
1765     <vscale x 4 x i32> %0,
1766     i32 %1,
1767     iXLen %2)
1769   ret <vscale x 4 x i32> %a
1772 declare <vscale x 4 x i32> @llvm.riscv.vmin.mask.nxv4i32.i32(
1773   <vscale x 4 x i32>,
1774   <vscale x 4 x i32>,
1775   i32,
1776   <vscale x 4 x i1>,
1777   iXLen,
1778   iXLen);
1780 define <vscale x 4 x i32> @intrinsic_vmin_mask_vx_nxv4i32_nxv4i32_i32(<vscale x 4 x i32> %0, <vscale x 4 x i32> %1, i32 %2, <vscale x 4 x i1> %3, iXLen %4) nounwind {
1781 ; CHECK-LABEL: intrinsic_vmin_mask_vx_nxv4i32_nxv4i32_i32:
1782 ; CHECK:       # %bb.0: # %entry
1783 ; CHECK-NEXT:    vsetvli zero, a1, e32, m2, ta, mu
1784 ; CHECK-NEXT:    vmin.vx v8, v10, a0, v0.t
1785 ; CHECK-NEXT:    ret
1786 entry:
1787   %a = call <vscale x 4 x i32> @llvm.riscv.vmin.mask.nxv4i32.i32(
1788     <vscale x 4 x i32> %0,
1789     <vscale x 4 x i32> %1,
1790     i32 %2,
1791     <vscale x 4 x i1> %3,
1792     iXLen %4, iXLen 1)
1794   ret <vscale x 4 x i32> %a
1797 declare <vscale x 8 x i32> @llvm.riscv.vmin.nxv8i32.i32(
1798   <vscale x 8 x i32>,
1799   <vscale x 8 x i32>,
1800   i32,
1801   iXLen);
1803 define <vscale x 8 x i32> @intrinsic_vmin_vx_nxv8i32_nxv8i32_i32(<vscale x 8 x i32> %0, i32 %1, iXLen %2) nounwind {
1804 ; CHECK-LABEL: intrinsic_vmin_vx_nxv8i32_nxv8i32_i32:
1805 ; CHECK:       # %bb.0: # %entry
1806 ; CHECK-NEXT:    vsetvli zero, a1, e32, m4, ta, ma
1807 ; CHECK-NEXT:    vmin.vx v8, v8, a0
1808 ; CHECK-NEXT:    ret
1809 entry:
1810   %a = call <vscale x 8 x i32> @llvm.riscv.vmin.nxv8i32.i32(
1811     <vscale x 8 x i32> undef,
1812     <vscale x 8 x i32> %0,
1813     i32 %1,
1814     iXLen %2)
1816   ret <vscale x 8 x i32> %a
1819 declare <vscale x 8 x i32> @llvm.riscv.vmin.mask.nxv8i32.i32(
1820   <vscale x 8 x i32>,
1821   <vscale x 8 x i32>,
1822   i32,
1823   <vscale x 8 x i1>,
1824   iXLen,
1825   iXLen);
1827 define <vscale x 8 x i32> @intrinsic_vmin_mask_vx_nxv8i32_nxv8i32_i32(<vscale x 8 x i32> %0, <vscale x 8 x i32> %1, i32 %2, <vscale x 8 x i1> %3, iXLen %4) nounwind {
1828 ; CHECK-LABEL: intrinsic_vmin_mask_vx_nxv8i32_nxv8i32_i32:
1829 ; CHECK:       # %bb.0: # %entry
1830 ; CHECK-NEXT:    vsetvli zero, a1, e32, m4, ta, mu
1831 ; CHECK-NEXT:    vmin.vx v8, v12, a0, v0.t
1832 ; CHECK-NEXT:    ret
1833 entry:
1834   %a = call <vscale x 8 x i32> @llvm.riscv.vmin.mask.nxv8i32.i32(
1835     <vscale x 8 x i32> %0,
1836     <vscale x 8 x i32> %1,
1837     i32 %2,
1838     <vscale x 8 x i1> %3,
1839     iXLen %4, iXLen 1)
1841   ret <vscale x 8 x i32> %a
1844 declare <vscale x 16 x i32> @llvm.riscv.vmin.nxv16i32.i32(
1845   <vscale x 16 x i32>,
1846   <vscale x 16 x i32>,
1847   i32,
1848   iXLen);
1850 define <vscale x 16 x i32> @intrinsic_vmin_vx_nxv16i32_nxv16i32_i32(<vscale x 16 x i32> %0, i32 %1, iXLen %2) nounwind {
1851 ; CHECK-LABEL: intrinsic_vmin_vx_nxv16i32_nxv16i32_i32:
1852 ; CHECK:       # %bb.0: # %entry
1853 ; CHECK-NEXT:    vsetvli zero, a1, e32, m8, ta, ma
1854 ; CHECK-NEXT:    vmin.vx v8, v8, a0
1855 ; CHECK-NEXT:    ret
1856 entry:
1857   %a = call <vscale x 16 x i32> @llvm.riscv.vmin.nxv16i32.i32(
1858     <vscale x 16 x i32> undef,
1859     <vscale x 16 x i32> %0,
1860     i32 %1,
1861     iXLen %2)
1863   ret <vscale x 16 x i32> %a
1866 declare <vscale x 16 x i32> @llvm.riscv.vmin.mask.nxv16i32.i32(
1867   <vscale x 16 x i32>,
1868   <vscale x 16 x i32>,
1869   i32,
1870   <vscale x 16 x i1>,
1871   iXLen,
1872   iXLen);
1874 define <vscale x 16 x i32> @intrinsic_vmin_mask_vx_nxv16i32_nxv16i32_i32(<vscale x 16 x i32> %0, <vscale x 16 x i32> %1, i32 %2, <vscale x 16 x i1> %3, iXLen %4) nounwind {
1875 ; CHECK-LABEL: intrinsic_vmin_mask_vx_nxv16i32_nxv16i32_i32:
1876 ; CHECK:       # %bb.0: # %entry
1877 ; CHECK-NEXT:    vsetvli zero, a1, e32, m8, ta, mu
1878 ; CHECK-NEXT:    vmin.vx v8, v16, a0, v0.t
1879 ; CHECK-NEXT:    ret
1880 entry:
1881   %a = call <vscale x 16 x i32> @llvm.riscv.vmin.mask.nxv16i32.i32(
1882     <vscale x 16 x i32> %0,
1883     <vscale x 16 x i32> %1,
1884     i32 %2,
1885     <vscale x 16 x i1> %3,
1886     iXLen %4, iXLen 1)
1888   ret <vscale x 16 x i32> %a
1891 declare <vscale x 1 x i64> @llvm.riscv.vmin.nxv1i64.i64(
1892   <vscale x 1 x i64>,
1893   <vscale x 1 x i64>,
1894   i64,
1895   iXLen);
1897 define <vscale x 1 x i64> @intrinsic_vmin_vx_nxv1i64_nxv1i64_i64(<vscale x 1 x i64> %0, i64 %1, iXLen %2) nounwind {
1898 ; RV32-LABEL: intrinsic_vmin_vx_nxv1i64_nxv1i64_i64:
1899 ; RV32:       # %bb.0: # %entry
1900 ; RV32-NEXT:    addi sp, sp, -16
1901 ; RV32-NEXT:    sw a1, 12(sp)
1902 ; RV32-NEXT:    sw a0, 8(sp)
1903 ; RV32-NEXT:    addi a0, sp, 8
1904 ; RV32-NEXT:    vsetvli zero, a2, e64, m1, ta, ma
1905 ; RV32-NEXT:    vlse64.v v9, (a0), zero
1906 ; RV32-NEXT:    vmin.vv v8, v8, v9
1907 ; RV32-NEXT:    addi sp, sp, 16
1908 ; RV32-NEXT:    ret
1910 ; RV64-LABEL: intrinsic_vmin_vx_nxv1i64_nxv1i64_i64:
1911 ; RV64:       # %bb.0: # %entry
1912 ; RV64-NEXT:    vsetvli zero, a1, e64, m1, ta, ma
1913 ; RV64-NEXT:    vmin.vx v8, v8, a0
1914 ; RV64-NEXT:    ret
1915 entry:
1916   %a = call <vscale x 1 x i64> @llvm.riscv.vmin.nxv1i64.i64(
1917     <vscale x 1 x i64> undef,
1918     <vscale x 1 x i64> %0,
1919     i64 %1,
1920     iXLen %2)
1922   ret <vscale x 1 x i64> %a
1925 declare <vscale x 1 x i64> @llvm.riscv.vmin.mask.nxv1i64.i64(
1926   <vscale x 1 x i64>,
1927   <vscale x 1 x i64>,
1928   i64,
1929   <vscale x 1 x i1>,
1930   iXLen,
1931   iXLen);
1933 define <vscale x 1 x i64> @intrinsic_vmin_mask_vx_nxv1i64_nxv1i64_i64(<vscale x 1 x i64> %0, <vscale x 1 x i64> %1, i64 %2, <vscale x 1 x i1> %3, iXLen %4) nounwind {
1934 ; RV32-LABEL: intrinsic_vmin_mask_vx_nxv1i64_nxv1i64_i64:
1935 ; RV32:       # %bb.0: # %entry
1936 ; RV32-NEXT:    addi sp, sp, -16
1937 ; RV32-NEXT:    sw a1, 12(sp)
1938 ; RV32-NEXT:    sw a0, 8(sp)
1939 ; RV32-NEXT:    addi a0, sp, 8
1940 ; RV32-NEXT:    vsetvli zero, a2, e64, m1, ta, mu
1941 ; RV32-NEXT:    vlse64.v v10, (a0), zero
1942 ; RV32-NEXT:    vmin.vv v8, v9, v10, v0.t
1943 ; RV32-NEXT:    addi sp, sp, 16
1944 ; RV32-NEXT:    ret
1946 ; RV64-LABEL: intrinsic_vmin_mask_vx_nxv1i64_nxv1i64_i64:
1947 ; RV64:       # %bb.0: # %entry
1948 ; RV64-NEXT:    vsetvli zero, a1, e64, m1, ta, mu
1949 ; RV64-NEXT:    vmin.vx v8, v9, a0, v0.t
1950 ; RV64-NEXT:    ret
1951 entry:
1952   %a = call <vscale x 1 x i64> @llvm.riscv.vmin.mask.nxv1i64.i64(
1953     <vscale x 1 x i64> %0,
1954     <vscale x 1 x i64> %1,
1955     i64 %2,
1956     <vscale x 1 x i1> %3,
1957     iXLen %4, iXLen 1)
1959   ret <vscale x 1 x i64> %a
1962 declare <vscale x 2 x i64> @llvm.riscv.vmin.nxv2i64.i64(
1963   <vscale x 2 x i64>,
1964   <vscale x 2 x i64>,
1965   i64,
1966   iXLen);
1968 define <vscale x 2 x i64> @intrinsic_vmin_vx_nxv2i64_nxv2i64_i64(<vscale x 2 x i64> %0, i64 %1, iXLen %2) nounwind {
1969 ; RV32-LABEL: intrinsic_vmin_vx_nxv2i64_nxv2i64_i64:
1970 ; RV32:       # %bb.0: # %entry
1971 ; RV32-NEXT:    addi sp, sp, -16
1972 ; RV32-NEXT:    sw a1, 12(sp)
1973 ; RV32-NEXT:    sw a0, 8(sp)
1974 ; RV32-NEXT:    addi a0, sp, 8
1975 ; RV32-NEXT:    vsetvli zero, a2, e64, m2, ta, ma
1976 ; RV32-NEXT:    vlse64.v v10, (a0), zero
1977 ; RV32-NEXT:    vmin.vv v8, v8, v10
1978 ; RV32-NEXT:    addi sp, sp, 16
1979 ; RV32-NEXT:    ret
1981 ; RV64-LABEL: intrinsic_vmin_vx_nxv2i64_nxv2i64_i64:
1982 ; RV64:       # %bb.0: # %entry
1983 ; RV64-NEXT:    vsetvli zero, a1, e64, m2, ta, ma
1984 ; RV64-NEXT:    vmin.vx v8, v8, a0
1985 ; RV64-NEXT:    ret
1986 entry:
1987   %a = call <vscale x 2 x i64> @llvm.riscv.vmin.nxv2i64.i64(
1988     <vscale x 2 x i64> undef,
1989     <vscale x 2 x i64> %0,
1990     i64 %1,
1991     iXLen %2)
1993   ret <vscale x 2 x i64> %a
1996 declare <vscale x 2 x i64> @llvm.riscv.vmin.mask.nxv2i64.i64(
1997   <vscale x 2 x i64>,
1998   <vscale x 2 x i64>,
1999   i64,
2000   <vscale x 2 x i1>,
2001   iXLen,
2002   iXLen);
2004 define <vscale x 2 x i64> @intrinsic_vmin_mask_vx_nxv2i64_nxv2i64_i64(<vscale x 2 x i64> %0, <vscale x 2 x i64> %1, i64 %2, <vscale x 2 x i1> %3, iXLen %4) nounwind {
2005 ; RV32-LABEL: intrinsic_vmin_mask_vx_nxv2i64_nxv2i64_i64:
2006 ; RV32:       # %bb.0: # %entry
2007 ; RV32-NEXT:    addi sp, sp, -16
2008 ; RV32-NEXT:    sw a1, 12(sp)
2009 ; RV32-NEXT:    sw a0, 8(sp)
2010 ; RV32-NEXT:    addi a0, sp, 8
2011 ; RV32-NEXT:    vsetvli zero, a2, e64, m2, ta, mu
2012 ; RV32-NEXT:    vlse64.v v12, (a0), zero
2013 ; RV32-NEXT:    vmin.vv v8, v10, v12, v0.t
2014 ; RV32-NEXT:    addi sp, sp, 16
2015 ; RV32-NEXT:    ret
2017 ; RV64-LABEL: intrinsic_vmin_mask_vx_nxv2i64_nxv2i64_i64:
2018 ; RV64:       # %bb.0: # %entry
2019 ; RV64-NEXT:    vsetvli zero, a1, e64, m2, ta, mu
2020 ; RV64-NEXT:    vmin.vx v8, v10, a0, v0.t
2021 ; RV64-NEXT:    ret
2022 entry:
2023   %a = call <vscale x 2 x i64> @llvm.riscv.vmin.mask.nxv2i64.i64(
2024     <vscale x 2 x i64> %0,
2025     <vscale x 2 x i64> %1,
2026     i64 %2,
2027     <vscale x 2 x i1> %3,
2028     iXLen %4, iXLen 1)
2030   ret <vscale x 2 x i64> %a
2033 declare <vscale x 4 x i64> @llvm.riscv.vmin.nxv4i64.i64(
2034   <vscale x 4 x i64>,
2035   <vscale x 4 x i64>,
2036   i64,
2037   iXLen);
2039 define <vscale x 4 x i64> @intrinsic_vmin_vx_nxv4i64_nxv4i64_i64(<vscale x 4 x i64> %0, i64 %1, iXLen %2) nounwind {
2040 ; RV32-LABEL: intrinsic_vmin_vx_nxv4i64_nxv4i64_i64:
2041 ; RV32:       # %bb.0: # %entry
2042 ; RV32-NEXT:    addi sp, sp, -16
2043 ; RV32-NEXT:    sw a1, 12(sp)
2044 ; RV32-NEXT:    sw a0, 8(sp)
2045 ; RV32-NEXT:    addi a0, sp, 8
2046 ; RV32-NEXT:    vsetvli zero, a2, e64, m4, ta, ma
2047 ; RV32-NEXT:    vlse64.v v12, (a0), zero
2048 ; RV32-NEXT:    vmin.vv v8, v8, v12
2049 ; RV32-NEXT:    addi sp, sp, 16
2050 ; RV32-NEXT:    ret
2052 ; RV64-LABEL: intrinsic_vmin_vx_nxv4i64_nxv4i64_i64:
2053 ; RV64:       # %bb.0: # %entry
2054 ; RV64-NEXT:    vsetvli zero, a1, e64, m4, ta, ma
2055 ; RV64-NEXT:    vmin.vx v8, v8, a0
2056 ; RV64-NEXT:    ret
2057 entry:
2058   %a = call <vscale x 4 x i64> @llvm.riscv.vmin.nxv4i64.i64(
2059     <vscale x 4 x i64> undef,
2060     <vscale x 4 x i64> %0,
2061     i64 %1,
2062     iXLen %2)
2064   ret <vscale x 4 x i64> %a
2067 declare <vscale x 4 x i64> @llvm.riscv.vmin.mask.nxv4i64.i64(
2068   <vscale x 4 x i64>,
2069   <vscale x 4 x i64>,
2070   i64,
2071   <vscale x 4 x i1>,
2072   iXLen,
2073   iXLen);
2075 define <vscale x 4 x i64> @intrinsic_vmin_mask_vx_nxv4i64_nxv4i64_i64(<vscale x 4 x i64> %0, <vscale x 4 x i64> %1, i64 %2, <vscale x 4 x i1> %3, iXLen %4) nounwind {
2076 ; RV32-LABEL: intrinsic_vmin_mask_vx_nxv4i64_nxv4i64_i64:
2077 ; RV32:       # %bb.0: # %entry
2078 ; RV32-NEXT:    addi sp, sp, -16
2079 ; RV32-NEXT:    sw a1, 12(sp)
2080 ; RV32-NEXT:    sw a0, 8(sp)
2081 ; RV32-NEXT:    addi a0, sp, 8
2082 ; RV32-NEXT:    vsetvli zero, a2, e64, m4, ta, mu
2083 ; RV32-NEXT:    vlse64.v v16, (a0), zero
2084 ; RV32-NEXT:    vmin.vv v8, v12, v16, v0.t
2085 ; RV32-NEXT:    addi sp, sp, 16
2086 ; RV32-NEXT:    ret
2088 ; RV64-LABEL: intrinsic_vmin_mask_vx_nxv4i64_nxv4i64_i64:
2089 ; RV64:       # %bb.0: # %entry
2090 ; RV64-NEXT:    vsetvli zero, a1, e64, m4, ta, mu
2091 ; RV64-NEXT:    vmin.vx v8, v12, a0, v0.t
2092 ; RV64-NEXT:    ret
2093 entry:
2094   %a = call <vscale x 4 x i64> @llvm.riscv.vmin.mask.nxv4i64.i64(
2095     <vscale x 4 x i64> %0,
2096     <vscale x 4 x i64> %1,
2097     i64 %2,
2098     <vscale x 4 x i1> %3,
2099     iXLen %4, iXLen 1)
2101   ret <vscale x 4 x i64> %a
2104 declare <vscale x 8 x i64> @llvm.riscv.vmin.nxv8i64.i64(
2105   <vscale x 8 x i64>,
2106   <vscale x 8 x i64>,
2107   i64,
2108   iXLen);
2110 define <vscale x 8 x i64> @intrinsic_vmin_vx_nxv8i64_nxv8i64_i64(<vscale x 8 x i64> %0, i64 %1, iXLen %2) nounwind {
2111 ; RV32-LABEL: intrinsic_vmin_vx_nxv8i64_nxv8i64_i64:
2112 ; RV32:       # %bb.0: # %entry
2113 ; RV32-NEXT:    addi sp, sp, -16
2114 ; RV32-NEXT:    sw a1, 12(sp)
2115 ; RV32-NEXT:    sw a0, 8(sp)
2116 ; RV32-NEXT:    addi a0, sp, 8
2117 ; RV32-NEXT:    vsetvli zero, a2, e64, m8, ta, ma
2118 ; RV32-NEXT:    vlse64.v v16, (a0), zero
2119 ; RV32-NEXT:    vmin.vv v8, v8, v16
2120 ; RV32-NEXT:    addi sp, sp, 16
2121 ; RV32-NEXT:    ret
2123 ; RV64-LABEL: intrinsic_vmin_vx_nxv8i64_nxv8i64_i64:
2124 ; RV64:       # %bb.0: # %entry
2125 ; RV64-NEXT:    vsetvli zero, a1, e64, m8, ta, ma
2126 ; RV64-NEXT:    vmin.vx v8, v8, a0
2127 ; RV64-NEXT:    ret
2128 entry:
2129   %a = call <vscale x 8 x i64> @llvm.riscv.vmin.nxv8i64.i64(
2130     <vscale x 8 x i64> undef,
2131     <vscale x 8 x i64> %0,
2132     i64 %1,
2133     iXLen %2)
2135   ret <vscale x 8 x i64> %a
2138 declare <vscale x 8 x i64> @llvm.riscv.vmin.mask.nxv8i64.i64(
2139   <vscale x 8 x i64>,
2140   <vscale x 8 x i64>,
2141   i64,
2142   <vscale x 8 x i1>,
2143   iXLen,
2144   iXLen);
2146 define <vscale x 8 x i64> @intrinsic_vmin_mask_vx_nxv8i64_nxv8i64_i64(<vscale x 8 x i64> %0, <vscale x 8 x i64> %1, i64 %2, <vscale x 8 x i1> %3, iXLen %4) nounwind {
2147 ; RV32-LABEL: intrinsic_vmin_mask_vx_nxv8i64_nxv8i64_i64:
2148 ; RV32:       # %bb.0: # %entry
2149 ; RV32-NEXT:    addi sp, sp, -16
2150 ; RV32-NEXT:    sw a1, 12(sp)
2151 ; RV32-NEXT:    sw a0, 8(sp)
2152 ; RV32-NEXT:    addi a0, sp, 8
2153 ; RV32-NEXT:    vsetvli zero, a2, e64, m8, ta, mu
2154 ; RV32-NEXT:    vlse64.v v24, (a0), zero
2155 ; RV32-NEXT:    vmin.vv v8, v16, v24, v0.t
2156 ; RV32-NEXT:    addi sp, sp, 16
2157 ; RV32-NEXT:    ret
2159 ; RV64-LABEL: intrinsic_vmin_mask_vx_nxv8i64_nxv8i64_i64:
2160 ; RV64:       # %bb.0: # %entry
2161 ; RV64-NEXT:    vsetvli zero, a1, e64, m8, ta, mu
2162 ; RV64-NEXT:    vmin.vx v8, v16, a0, v0.t
2163 ; RV64-NEXT:    ret
2164 entry:
2165   %a = call <vscale x 8 x i64> @llvm.riscv.vmin.mask.nxv8i64.i64(
2166     <vscale x 8 x i64> %0,
2167     <vscale x 8 x i64> %1,
2168     i64 %2,
2169     <vscale x 8 x i1> %3,
2170     iXLen %4, iXLen 1)
2172   ret <vscale x 8 x i64> %a