Bump version to 19.1.0-rc3
[llvm-project.git] / llvm / test / CodeGen / RISCV / rvv / vmul.ll
blob91d255ffeeecfdc96db90abcc7bd8f3eb329424e
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
6 ; RUN: sed 's/iXLen/i32/g' %s | llc -mtriple=riscv32 -mattr=+zve64d \
7 ; RUN:   -verify-machineinstrs | FileCheck %s --check-prefixes=CHECK,RV32
8 ; RUN: sed 's/iXLen/i64/g' %s | llc -mtriple=riscv64 -mattr=+zve64d \
9 ; RUN:   -verify-machineinstrs | FileCheck %s --check-prefixes=CHECK,RV64
11 declare <vscale x 1 x i8> @llvm.riscv.vmul.nxv1i8.nxv1i8(
12   <vscale x 1 x i8>,
13   <vscale x 1 x i8>,
14   <vscale x 1 x i8>,
15   iXLen);
17 define <vscale x 1 x i8> @intrinsic_vmul_vv_nxv1i8_nxv1i8_nxv1i8(<vscale x 1 x i8> %0, <vscale x 1 x i8> %1, iXLen %2) nounwind {
18 ; CHECK-LABEL: intrinsic_vmul_vv_nxv1i8_nxv1i8_nxv1i8:
19 ; CHECK:       # %bb.0: # %entry
20 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf8, ta, ma
21 ; CHECK-NEXT:    vmul.vv v8, v8, v9
22 ; CHECK-NEXT:    ret
23 entry:
24   %a = call <vscale x 1 x i8> @llvm.riscv.vmul.nxv1i8.nxv1i8(
25     <vscale x 1 x i8> undef,
26     <vscale x 1 x i8> %0,
27     <vscale x 1 x i8> %1,
28     iXLen %2)
30   ret <vscale x 1 x i8> %a
33 declare <vscale x 1 x i8> @llvm.riscv.vmul.mask.nxv1i8.nxv1i8(
34   <vscale x 1 x i8>,
35   <vscale x 1 x i8>,
36   <vscale x 1 x i8>,
37   <vscale x 1 x i1>,
38   iXLen, iXLen);
40 define <vscale x 1 x i8> @intrinsic_vmul_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 {
41 ; CHECK-LABEL: intrinsic_vmul_mask_vv_nxv1i8_nxv1i8_nxv1i8:
42 ; CHECK:       # %bb.0: # %entry
43 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf8, ta, mu
44 ; CHECK-NEXT:    vmul.vv v8, v9, v10, v0.t
45 ; CHECK-NEXT:    ret
46 entry:
47   %a = call <vscale x 1 x i8> @llvm.riscv.vmul.mask.nxv1i8.nxv1i8(
48     <vscale x 1 x i8> %0,
49     <vscale x 1 x i8> %1,
50     <vscale x 1 x i8> %2,
51     <vscale x 1 x i1> %3,
52     iXLen %4, iXLen 1)
54   ret <vscale x 1 x i8> %a
57 declare <vscale x 2 x i8> @llvm.riscv.vmul.nxv2i8.nxv2i8(
58   <vscale x 2 x i8>,
59   <vscale x 2 x i8>,
60   <vscale x 2 x i8>,
61   iXLen);
63 define <vscale x 2 x i8> @intrinsic_vmul_vv_nxv2i8_nxv2i8_nxv2i8(<vscale x 2 x i8> %0, <vscale x 2 x i8> %1, iXLen %2) nounwind {
64 ; CHECK-LABEL: intrinsic_vmul_vv_nxv2i8_nxv2i8_nxv2i8:
65 ; CHECK:       # %bb.0: # %entry
66 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf4, ta, ma
67 ; CHECK-NEXT:    vmul.vv v8, v8, v9
68 ; CHECK-NEXT:    ret
69 entry:
70   %a = call <vscale x 2 x i8> @llvm.riscv.vmul.nxv2i8.nxv2i8(
71     <vscale x 2 x i8> undef,
72     <vscale x 2 x i8> %0,
73     <vscale x 2 x i8> %1,
74     iXLen %2)
76   ret <vscale x 2 x i8> %a
79 declare <vscale x 2 x i8> @llvm.riscv.vmul.mask.nxv2i8.nxv2i8(
80   <vscale x 2 x i8>,
81   <vscale x 2 x i8>,
82   <vscale x 2 x i8>,
83   <vscale x 2 x i1>,
84   iXLen, iXLen);
86 define <vscale x 2 x i8> @intrinsic_vmul_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 {
87 ; CHECK-LABEL: intrinsic_vmul_mask_vv_nxv2i8_nxv2i8_nxv2i8:
88 ; CHECK:       # %bb.0: # %entry
89 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf4, ta, mu
90 ; CHECK-NEXT:    vmul.vv v8, v9, v10, v0.t
91 ; CHECK-NEXT:    ret
92 entry:
93   %a = call <vscale x 2 x i8> @llvm.riscv.vmul.mask.nxv2i8.nxv2i8(
94     <vscale x 2 x i8> %0,
95     <vscale x 2 x i8> %1,
96     <vscale x 2 x i8> %2,
97     <vscale x 2 x i1> %3,
98     iXLen %4, iXLen 1)
100   ret <vscale x 2 x i8> %a
103 declare <vscale x 4 x i8> @llvm.riscv.vmul.nxv4i8.nxv4i8(
104   <vscale x 4 x i8>,
105   <vscale x 4 x i8>,
106   <vscale x 4 x i8>,
107   iXLen);
109 define <vscale x 4 x i8> @intrinsic_vmul_vv_nxv4i8_nxv4i8_nxv4i8(<vscale x 4 x i8> %0, <vscale x 4 x i8> %1, iXLen %2) nounwind {
110 ; CHECK-LABEL: intrinsic_vmul_vv_nxv4i8_nxv4i8_nxv4i8:
111 ; CHECK:       # %bb.0: # %entry
112 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf2, ta, ma
113 ; CHECK-NEXT:    vmul.vv v8, v8, v9
114 ; CHECK-NEXT:    ret
115 entry:
116   %a = call <vscale x 4 x i8> @llvm.riscv.vmul.nxv4i8.nxv4i8(
117     <vscale x 4 x i8> undef,
118     <vscale x 4 x i8> %0,
119     <vscale x 4 x i8> %1,
120     iXLen %2)
122   ret <vscale x 4 x i8> %a
125 declare <vscale x 4 x i8> @llvm.riscv.vmul.mask.nxv4i8.nxv4i8(
126   <vscale x 4 x i8>,
127   <vscale x 4 x i8>,
128   <vscale x 4 x i8>,
129   <vscale x 4 x i1>,
130   iXLen, iXLen);
132 define <vscale x 4 x i8> @intrinsic_vmul_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 {
133 ; CHECK-LABEL: intrinsic_vmul_mask_vv_nxv4i8_nxv4i8_nxv4i8:
134 ; CHECK:       # %bb.0: # %entry
135 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf2, ta, mu
136 ; CHECK-NEXT:    vmul.vv v8, v9, v10, v0.t
137 ; CHECK-NEXT:    ret
138 entry:
139   %a = call <vscale x 4 x i8> @llvm.riscv.vmul.mask.nxv4i8.nxv4i8(
140     <vscale x 4 x i8> %0,
141     <vscale x 4 x i8> %1,
142     <vscale x 4 x i8> %2,
143     <vscale x 4 x i1> %3,
144     iXLen %4, iXLen 1)
146   ret <vscale x 4 x i8> %a
149 declare <vscale x 8 x i8> @llvm.riscv.vmul.nxv8i8.nxv8i8(
150   <vscale x 8 x i8>,
151   <vscale x 8 x i8>,
152   <vscale x 8 x i8>,
153   iXLen);
155 define <vscale x 8 x i8> @intrinsic_vmul_vv_nxv8i8_nxv8i8_nxv8i8(<vscale x 8 x i8> %0, <vscale x 8 x i8> %1, iXLen %2) nounwind {
156 ; CHECK-LABEL: intrinsic_vmul_vv_nxv8i8_nxv8i8_nxv8i8:
157 ; CHECK:       # %bb.0: # %entry
158 ; CHECK-NEXT:    vsetvli zero, a0, e8, m1, ta, ma
159 ; CHECK-NEXT:    vmul.vv v8, v8, v9
160 ; CHECK-NEXT:    ret
161 entry:
162   %a = call <vscale x 8 x i8> @llvm.riscv.vmul.nxv8i8.nxv8i8(
163     <vscale x 8 x i8> undef,
164     <vscale x 8 x i8> %0,
165     <vscale x 8 x i8> %1,
166     iXLen %2)
168   ret <vscale x 8 x i8> %a
171 declare <vscale x 8 x i8> @llvm.riscv.vmul.mask.nxv8i8.nxv8i8(
172   <vscale x 8 x i8>,
173   <vscale x 8 x i8>,
174   <vscale x 8 x i8>,
175   <vscale x 8 x i1>,
176   iXLen, iXLen);
178 define <vscale x 8 x i8> @intrinsic_vmul_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_vmul_mask_vv_nxv8i8_nxv8i8_nxv8i8:
180 ; CHECK:       # %bb.0: # %entry
181 ; CHECK-NEXT:    vsetvli zero, a0, e8, m1, ta, mu
182 ; CHECK-NEXT:    vmul.vv v8, v9, v10, v0.t
183 ; CHECK-NEXT:    ret
184 entry:
185   %a = call <vscale x 8 x i8> @llvm.riscv.vmul.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.vmul.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_vmul_vv_nxv16i8_nxv16i8_nxv16i8(<vscale x 16 x i8> %0, <vscale x 16 x i8> %1, iXLen %2) nounwind {
202 ; CHECK-LABEL: intrinsic_vmul_vv_nxv16i8_nxv16i8_nxv16i8:
203 ; CHECK:       # %bb.0: # %entry
204 ; CHECK-NEXT:    vsetvli zero, a0, e8, m2, ta, ma
205 ; CHECK-NEXT:    vmul.vv v8, v8, v10
206 ; CHECK-NEXT:    ret
207 entry:
208   %a = call <vscale x 16 x i8> @llvm.riscv.vmul.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.vmul.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, iXLen);
224 define <vscale x 16 x i8> @intrinsic_vmul_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 {
225 ; CHECK-LABEL: intrinsic_vmul_mask_vv_nxv16i8_nxv16i8_nxv16i8:
226 ; CHECK:       # %bb.0: # %entry
227 ; CHECK-NEXT:    vsetvli zero, a0, e8, m2, ta, mu
228 ; CHECK-NEXT:    vmul.vv v8, v10, v12, v0.t
229 ; CHECK-NEXT:    ret
230 entry:
231   %a = call <vscale x 16 x i8> @llvm.riscv.vmul.mask.nxv16i8.nxv16i8(
232     <vscale x 16 x i8> %0,
233     <vscale x 16 x i8> %1,
234     <vscale x 16 x i8> %2,
235     <vscale x 16 x i1> %3,
236     iXLen %4, iXLen 1)
238   ret <vscale x 16 x i8> %a
241 declare <vscale x 32 x i8> @llvm.riscv.vmul.nxv32i8.nxv32i8(
242   <vscale x 32 x i8>,
243   <vscale x 32 x i8>,
244   <vscale x 32 x i8>,
245   iXLen);
247 define <vscale x 32 x i8> @intrinsic_vmul_vv_nxv32i8_nxv32i8_nxv32i8(<vscale x 32 x i8> %0, <vscale x 32 x i8> %1, iXLen %2) nounwind {
248 ; CHECK-LABEL: intrinsic_vmul_vv_nxv32i8_nxv32i8_nxv32i8:
249 ; CHECK:       # %bb.0: # %entry
250 ; CHECK-NEXT:    vsetvli zero, a0, e8, m4, ta, ma
251 ; CHECK-NEXT:    vmul.vv v8, v8, v12
252 ; CHECK-NEXT:    ret
253 entry:
254   %a = call <vscale x 32 x i8> @llvm.riscv.vmul.nxv32i8.nxv32i8(
255     <vscale x 32 x i8> undef,
256     <vscale x 32 x i8> %0,
257     <vscale x 32 x i8> %1,
258     iXLen %2)
260   ret <vscale x 32 x i8> %a
263 declare <vscale x 32 x i8> @llvm.riscv.vmul.mask.nxv32i8.nxv32i8(
264   <vscale x 32 x i8>,
265   <vscale x 32 x i8>,
266   <vscale x 32 x i8>,
267   <vscale x 32 x i1>,
268   iXLen, iXLen);
270 define <vscale x 32 x i8> @intrinsic_vmul_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 {
271 ; CHECK-LABEL: intrinsic_vmul_mask_vv_nxv32i8_nxv32i8_nxv32i8:
272 ; CHECK:       # %bb.0: # %entry
273 ; CHECK-NEXT:    vsetvli zero, a0, e8, m4, ta, mu
274 ; CHECK-NEXT:    vmul.vv v8, v12, v16, v0.t
275 ; CHECK-NEXT:    ret
276 entry:
277   %a = call <vscale x 32 x i8> @llvm.riscv.vmul.mask.nxv32i8.nxv32i8(
278     <vscale x 32 x i8> %0,
279     <vscale x 32 x i8> %1,
280     <vscale x 32 x i8> %2,
281     <vscale x 32 x i1> %3,
282     iXLen %4, iXLen 1)
284   ret <vscale x 32 x i8> %a
287 declare <vscale x 64 x i8> @llvm.riscv.vmul.nxv64i8.nxv64i8(
288   <vscale x 64 x i8>,
289   <vscale x 64 x i8>,
290   <vscale x 64 x i8>,
291   iXLen);
293 define <vscale x 64 x i8> @intrinsic_vmul_vv_nxv64i8_nxv64i8_nxv64i8(<vscale x 64 x i8> %0, <vscale x 64 x i8> %1, iXLen %2) nounwind {
294 ; CHECK-LABEL: intrinsic_vmul_vv_nxv64i8_nxv64i8_nxv64i8:
295 ; CHECK:       # %bb.0: # %entry
296 ; CHECK-NEXT:    vsetvli zero, a0, e8, m8, ta, ma
297 ; CHECK-NEXT:    vmul.vv v8, v8, v16
298 ; CHECK-NEXT:    ret
299 entry:
300   %a = call <vscale x 64 x i8> @llvm.riscv.vmul.nxv64i8.nxv64i8(
301     <vscale x 64 x i8> undef,
302     <vscale x 64 x i8> %0,
303     <vscale x 64 x i8> %1,
304     iXLen %2)
306   ret <vscale x 64 x i8> %a
309 declare <vscale x 64 x i8> @llvm.riscv.vmul.mask.nxv64i8.nxv64i8(
310   <vscale x 64 x i8>,
311   <vscale x 64 x i8>,
312   <vscale x 64 x i8>,
313   <vscale x 64 x i1>,
314   iXLen, iXLen);
316 define <vscale x 64 x i8> @intrinsic_vmul_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 {
317 ; CHECK-LABEL: intrinsic_vmul_mask_vv_nxv64i8_nxv64i8_nxv64i8:
318 ; CHECK:       # %bb.0: # %entry
319 ; CHECK-NEXT:    vl8r.v v24, (a0)
320 ; CHECK-NEXT:    vsetvli zero, a1, e8, m8, ta, mu
321 ; CHECK-NEXT:    vmul.vv v8, v16, v24, v0.t
322 ; CHECK-NEXT:    ret
323 entry:
324   %a = call <vscale x 64 x i8> @llvm.riscv.vmul.mask.nxv64i8.nxv64i8(
325     <vscale x 64 x i8> %0,
326     <vscale x 64 x i8> %1,
327     <vscale x 64 x i8> %2,
328     <vscale x 64 x i1> %3,
329     iXLen %4, iXLen 1)
331   ret <vscale x 64 x i8> %a
334 declare <vscale x 1 x i16> @llvm.riscv.vmul.nxv1i16.nxv1i16(
335   <vscale x 1 x i16>,
336   <vscale x 1 x i16>,
337   <vscale x 1 x i16>,
338   iXLen);
340 define <vscale x 1 x i16> @intrinsic_vmul_vv_nxv1i16_nxv1i16_nxv1i16(<vscale x 1 x i16> %0, <vscale x 1 x i16> %1, iXLen %2) nounwind {
341 ; CHECK-LABEL: intrinsic_vmul_vv_nxv1i16_nxv1i16_nxv1i16:
342 ; CHECK:       # %bb.0: # %entry
343 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma
344 ; CHECK-NEXT:    vmul.vv v8, v8, v9
345 ; CHECK-NEXT:    ret
346 entry:
347   %a = call <vscale x 1 x i16> @llvm.riscv.vmul.nxv1i16.nxv1i16(
348     <vscale x 1 x i16> undef,
349     <vscale x 1 x i16> %0,
350     <vscale x 1 x i16> %1,
351     iXLen %2)
353   ret <vscale x 1 x i16> %a
356 declare <vscale x 1 x i16> @llvm.riscv.vmul.mask.nxv1i16.nxv1i16(
357   <vscale x 1 x i16>,
358   <vscale x 1 x i16>,
359   <vscale x 1 x i16>,
360   <vscale x 1 x i1>,
361   iXLen, iXLen);
363 define <vscale x 1 x i16> @intrinsic_vmul_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 {
364 ; CHECK-LABEL: intrinsic_vmul_mask_vv_nxv1i16_nxv1i16_nxv1i16:
365 ; CHECK:       # %bb.0: # %entry
366 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, ta, mu
367 ; CHECK-NEXT:    vmul.vv v8, v9, v10, v0.t
368 ; CHECK-NEXT:    ret
369 entry:
370   %a = call <vscale x 1 x i16> @llvm.riscv.vmul.mask.nxv1i16.nxv1i16(
371     <vscale x 1 x i16> %0,
372     <vscale x 1 x i16> %1,
373     <vscale x 1 x i16> %2,
374     <vscale x 1 x i1> %3,
375     iXLen %4, iXLen 1)
377   ret <vscale x 1 x i16> %a
380 declare <vscale x 2 x i16> @llvm.riscv.vmul.nxv2i16.nxv2i16(
381   <vscale x 2 x i16>,
382   <vscale x 2 x i16>,
383   <vscale x 2 x i16>,
384   iXLen);
386 define <vscale x 2 x i16> @intrinsic_vmul_vv_nxv2i16_nxv2i16_nxv2i16(<vscale x 2 x i16> %0, <vscale x 2 x i16> %1, iXLen %2) nounwind {
387 ; CHECK-LABEL: intrinsic_vmul_vv_nxv2i16_nxv2i16_nxv2i16:
388 ; CHECK:       # %bb.0: # %entry
389 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf2, ta, ma
390 ; CHECK-NEXT:    vmul.vv v8, v8, v9
391 ; CHECK-NEXT:    ret
392 entry:
393   %a = call <vscale x 2 x i16> @llvm.riscv.vmul.nxv2i16.nxv2i16(
394     <vscale x 2 x i16> undef,
395     <vscale x 2 x i16> %0,
396     <vscale x 2 x i16> %1,
397     iXLen %2)
399   ret <vscale x 2 x i16> %a
402 declare <vscale x 2 x i16> @llvm.riscv.vmul.mask.nxv2i16.nxv2i16(
403   <vscale x 2 x i16>,
404   <vscale x 2 x i16>,
405   <vscale x 2 x i16>,
406   <vscale x 2 x i1>,
407   iXLen, iXLen);
409 define <vscale x 2 x i16> @intrinsic_vmul_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 {
410 ; CHECK-LABEL: intrinsic_vmul_mask_vv_nxv2i16_nxv2i16_nxv2i16:
411 ; CHECK:       # %bb.0: # %entry
412 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf2, ta, mu
413 ; CHECK-NEXT:    vmul.vv v8, v9, v10, v0.t
414 ; CHECK-NEXT:    ret
415 entry:
416   %a = call <vscale x 2 x i16> @llvm.riscv.vmul.mask.nxv2i16.nxv2i16(
417     <vscale x 2 x i16> %0,
418     <vscale x 2 x i16> %1,
419     <vscale x 2 x i16> %2,
420     <vscale x 2 x i1> %3,
421     iXLen %4, iXLen 1)
423   ret <vscale x 2 x i16> %a
426 declare <vscale x 4 x i16> @llvm.riscv.vmul.nxv4i16.nxv4i16(
427   <vscale x 4 x i16>,
428   <vscale x 4 x i16>,
429   <vscale x 4 x i16>,
430   iXLen);
432 define <vscale x 4 x i16> @intrinsic_vmul_vv_nxv4i16_nxv4i16_nxv4i16(<vscale x 4 x i16> %0, <vscale x 4 x i16> %1, iXLen %2) nounwind {
433 ; CHECK-LABEL: intrinsic_vmul_vv_nxv4i16_nxv4i16_nxv4i16:
434 ; CHECK:       # %bb.0: # %entry
435 ; CHECK-NEXT:    vsetvli zero, a0, e16, m1, ta, ma
436 ; CHECK-NEXT:    vmul.vv v8, v8, v9
437 ; CHECK-NEXT:    ret
438 entry:
439   %a = call <vscale x 4 x i16> @llvm.riscv.vmul.nxv4i16.nxv4i16(
440     <vscale x 4 x i16> undef,
441     <vscale x 4 x i16> %0,
442     <vscale x 4 x i16> %1,
443     iXLen %2)
445   ret <vscale x 4 x i16> %a
448 declare <vscale x 4 x i16> @llvm.riscv.vmul.mask.nxv4i16.nxv4i16(
449   <vscale x 4 x i16>,
450   <vscale x 4 x i16>,
451   <vscale x 4 x i16>,
452   <vscale x 4 x i1>,
453   iXLen, iXLen);
455 define <vscale x 4 x i16> @intrinsic_vmul_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 {
456 ; CHECK-LABEL: intrinsic_vmul_mask_vv_nxv4i16_nxv4i16_nxv4i16:
457 ; CHECK:       # %bb.0: # %entry
458 ; CHECK-NEXT:    vsetvli zero, a0, e16, m1, ta, mu
459 ; CHECK-NEXT:    vmul.vv v8, v9, v10, v0.t
460 ; CHECK-NEXT:    ret
461 entry:
462   %a = call <vscale x 4 x i16> @llvm.riscv.vmul.mask.nxv4i16.nxv4i16(
463     <vscale x 4 x i16> %0,
464     <vscale x 4 x i16> %1,
465     <vscale x 4 x i16> %2,
466     <vscale x 4 x i1> %3,
467     iXLen %4, iXLen 1)
469   ret <vscale x 4 x i16> %a
472 declare <vscale x 8 x i16> @llvm.riscv.vmul.nxv8i16.nxv8i16(
473   <vscale x 8 x i16>,
474   <vscale x 8 x i16>,
475   <vscale x 8 x i16>,
476   iXLen);
478 define <vscale x 8 x i16> @intrinsic_vmul_vv_nxv8i16_nxv8i16_nxv8i16(<vscale x 8 x i16> %0, <vscale x 8 x i16> %1, iXLen %2) nounwind {
479 ; CHECK-LABEL: intrinsic_vmul_vv_nxv8i16_nxv8i16_nxv8i16:
480 ; CHECK:       # %bb.0: # %entry
481 ; CHECK-NEXT:    vsetvli zero, a0, e16, m2, ta, ma
482 ; CHECK-NEXT:    vmul.vv v8, v8, v10
483 ; CHECK-NEXT:    ret
484 entry:
485   %a = call <vscale x 8 x i16> @llvm.riscv.vmul.nxv8i16.nxv8i16(
486     <vscale x 8 x i16> undef,
487     <vscale x 8 x i16> %0,
488     <vscale x 8 x i16> %1,
489     iXLen %2)
491   ret <vscale x 8 x i16> %a
494 declare <vscale x 8 x i16> @llvm.riscv.vmul.mask.nxv8i16.nxv8i16(
495   <vscale x 8 x i16>,
496   <vscale x 8 x i16>,
497   <vscale x 8 x i16>,
498   <vscale x 8 x i1>,
499   iXLen, iXLen);
501 define <vscale x 8 x i16> @intrinsic_vmul_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 {
502 ; CHECK-LABEL: intrinsic_vmul_mask_vv_nxv8i16_nxv8i16_nxv8i16:
503 ; CHECK:       # %bb.0: # %entry
504 ; CHECK-NEXT:    vsetvli zero, a0, e16, m2, ta, mu
505 ; CHECK-NEXT:    vmul.vv v8, v10, v12, v0.t
506 ; CHECK-NEXT:    ret
507 entry:
508   %a = call <vscale x 8 x i16> @llvm.riscv.vmul.mask.nxv8i16.nxv8i16(
509     <vscale x 8 x i16> %0,
510     <vscale x 8 x i16> %1,
511     <vscale x 8 x i16> %2,
512     <vscale x 8 x i1> %3,
513     iXLen %4, iXLen 1)
515   ret <vscale x 8 x i16> %a
518 declare <vscale x 16 x i16> @llvm.riscv.vmul.nxv16i16.nxv16i16(
519   <vscale x 16 x i16>,
520   <vscale x 16 x i16>,
521   <vscale x 16 x i16>,
522   iXLen);
524 define <vscale x 16 x i16> @intrinsic_vmul_vv_nxv16i16_nxv16i16_nxv16i16(<vscale x 16 x i16> %0, <vscale x 16 x i16> %1, iXLen %2) nounwind {
525 ; CHECK-LABEL: intrinsic_vmul_vv_nxv16i16_nxv16i16_nxv16i16:
526 ; CHECK:       # %bb.0: # %entry
527 ; CHECK-NEXT:    vsetvli zero, a0, e16, m4, ta, ma
528 ; CHECK-NEXT:    vmul.vv v8, v8, v12
529 ; CHECK-NEXT:    ret
530 entry:
531   %a = call <vscale x 16 x i16> @llvm.riscv.vmul.nxv16i16.nxv16i16(
532     <vscale x 16 x i16> undef,
533     <vscale x 16 x i16> %0,
534     <vscale x 16 x i16> %1,
535     iXLen %2)
537   ret <vscale x 16 x i16> %a
540 declare <vscale x 16 x i16> @llvm.riscv.vmul.mask.nxv16i16.nxv16i16(
541   <vscale x 16 x i16>,
542   <vscale x 16 x i16>,
543   <vscale x 16 x i16>,
544   <vscale x 16 x i1>,
545   iXLen, iXLen);
547 define <vscale x 16 x i16> @intrinsic_vmul_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 {
548 ; CHECK-LABEL: intrinsic_vmul_mask_vv_nxv16i16_nxv16i16_nxv16i16:
549 ; CHECK:       # %bb.0: # %entry
550 ; CHECK-NEXT:    vsetvli zero, a0, e16, m4, ta, mu
551 ; CHECK-NEXT:    vmul.vv v8, v12, v16, v0.t
552 ; CHECK-NEXT:    ret
553 entry:
554   %a = call <vscale x 16 x i16> @llvm.riscv.vmul.mask.nxv16i16.nxv16i16(
555     <vscale x 16 x i16> %0,
556     <vscale x 16 x i16> %1,
557     <vscale x 16 x i16> %2,
558     <vscale x 16 x i1> %3,
559     iXLen %4, iXLen 1)
561   ret <vscale x 16 x i16> %a
564 declare <vscale x 32 x i16> @llvm.riscv.vmul.nxv32i16.nxv32i16(
565   <vscale x 32 x i16>,
566   <vscale x 32 x i16>,
567   <vscale x 32 x i16>,
568   iXLen);
570 define <vscale x 32 x i16> @intrinsic_vmul_vv_nxv32i16_nxv32i16_nxv32i16(<vscale x 32 x i16> %0, <vscale x 32 x i16> %1, iXLen %2) nounwind {
571 ; CHECK-LABEL: intrinsic_vmul_vv_nxv32i16_nxv32i16_nxv32i16:
572 ; CHECK:       # %bb.0: # %entry
573 ; CHECK-NEXT:    vsetvli zero, a0, e16, m8, ta, ma
574 ; CHECK-NEXT:    vmul.vv v8, v8, v16
575 ; CHECK-NEXT:    ret
576 entry:
577   %a = call <vscale x 32 x i16> @llvm.riscv.vmul.nxv32i16.nxv32i16(
578     <vscale x 32 x i16> undef,
579     <vscale x 32 x i16> %0,
580     <vscale x 32 x i16> %1,
581     iXLen %2)
583   ret <vscale x 32 x i16> %a
586 declare <vscale x 32 x i16> @llvm.riscv.vmul.mask.nxv32i16.nxv32i16(
587   <vscale x 32 x i16>,
588   <vscale x 32 x i16>,
589   <vscale x 32 x i16>,
590   <vscale x 32 x i1>,
591   iXLen, iXLen);
593 define <vscale x 32 x i16> @intrinsic_vmul_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 {
594 ; CHECK-LABEL: intrinsic_vmul_mask_vv_nxv32i16_nxv32i16_nxv32i16:
595 ; CHECK:       # %bb.0: # %entry
596 ; CHECK-NEXT:    vl8re16.v v24, (a0)
597 ; CHECK-NEXT:    vsetvli zero, a1, e16, m8, ta, mu
598 ; CHECK-NEXT:    vmul.vv v8, v16, v24, v0.t
599 ; CHECK-NEXT:    ret
600 entry:
601   %a = call <vscale x 32 x i16> @llvm.riscv.vmul.mask.nxv32i16.nxv32i16(
602     <vscale x 32 x i16> %0,
603     <vscale x 32 x i16> %1,
604     <vscale x 32 x i16> %2,
605     <vscale x 32 x i1> %3,
606     iXLen %4, iXLen 1)
608   ret <vscale x 32 x i16> %a
611 declare <vscale x 1 x i32> @llvm.riscv.vmul.nxv1i32.nxv1i32(
612   <vscale x 1 x i32>,
613   <vscale x 1 x i32>,
614   <vscale x 1 x i32>,
615   iXLen);
617 define <vscale x 1 x i32> @intrinsic_vmul_vv_nxv1i32_nxv1i32_nxv1i32(<vscale x 1 x i32> %0, <vscale x 1 x i32> %1, iXLen %2) nounwind {
618 ; CHECK-LABEL: intrinsic_vmul_vv_nxv1i32_nxv1i32_nxv1i32:
619 ; CHECK:       # %bb.0: # %entry
620 ; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma
621 ; CHECK-NEXT:    vmul.vv v8, v8, v9
622 ; CHECK-NEXT:    ret
623 entry:
624   %a = call <vscale x 1 x i32> @llvm.riscv.vmul.nxv1i32.nxv1i32(
625     <vscale x 1 x i32> undef,
626     <vscale x 1 x i32> %0,
627     <vscale x 1 x i32> %1,
628     iXLen %2)
630   ret <vscale x 1 x i32> %a
633 declare <vscale x 1 x i32> @llvm.riscv.vmul.mask.nxv1i32.nxv1i32(
634   <vscale x 1 x i32>,
635   <vscale x 1 x i32>,
636   <vscale x 1 x i32>,
637   <vscale x 1 x i1>,
638   iXLen, iXLen);
640 define <vscale x 1 x i32> @intrinsic_vmul_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 {
641 ; CHECK-LABEL: intrinsic_vmul_mask_vv_nxv1i32_nxv1i32_nxv1i32:
642 ; CHECK:       # %bb.0: # %entry
643 ; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, mu
644 ; CHECK-NEXT:    vmul.vv v8, v9, v10, v0.t
645 ; CHECK-NEXT:    ret
646 entry:
647   %a = call <vscale x 1 x i32> @llvm.riscv.vmul.mask.nxv1i32.nxv1i32(
648     <vscale x 1 x i32> %0,
649     <vscale x 1 x i32> %1,
650     <vscale x 1 x i32> %2,
651     <vscale x 1 x i1> %3,
652     iXLen %4, iXLen 1)
654   ret <vscale x 1 x i32> %a
657 declare <vscale x 2 x i32> @llvm.riscv.vmul.nxv2i32.nxv2i32(
658   <vscale x 2 x i32>,
659   <vscale x 2 x i32>,
660   <vscale x 2 x i32>,
661   iXLen);
663 define <vscale x 2 x i32> @intrinsic_vmul_vv_nxv2i32_nxv2i32_nxv2i32(<vscale x 2 x i32> %0, <vscale x 2 x i32> %1, iXLen %2) nounwind {
664 ; CHECK-LABEL: intrinsic_vmul_vv_nxv2i32_nxv2i32_nxv2i32:
665 ; CHECK:       # %bb.0: # %entry
666 ; CHECK-NEXT:    vsetvli zero, a0, e32, m1, ta, ma
667 ; CHECK-NEXT:    vmul.vv v8, v8, v9
668 ; CHECK-NEXT:    ret
669 entry:
670   %a = call <vscale x 2 x i32> @llvm.riscv.vmul.nxv2i32.nxv2i32(
671     <vscale x 2 x i32> undef,
672     <vscale x 2 x i32> %0,
673     <vscale x 2 x i32> %1,
674     iXLen %2)
676   ret <vscale x 2 x i32> %a
679 declare <vscale x 2 x i32> @llvm.riscv.vmul.mask.nxv2i32.nxv2i32(
680   <vscale x 2 x i32>,
681   <vscale x 2 x i32>,
682   <vscale x 2 x i32>,
683   <vscale x 2 x i1>,
684   iXLen, iXLen);
686 define <vscale x 2 x i32> @intrinsic_vmul_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 {
687 ; CHECK-LABEL: intrinsic_vmul_mask_vv_nxv2i32_nxv2i32_nxv2i32:
688 ; CHECK:       # %bb.0: # %entry
689 ; CHECK-NEXT:    vsetvli zero, a0, e32, m1, ta, mu
690 ; CHECK-NEXT:    vmul.vv v8, v9, v10, v0.t
691 ; CHECK-NEXT:    ret
692 entry:
693   %a = call <vscale x 2 x i32> @llvm.riscv.vmul.mask.nxv2i32.nxv2i32(
694     <vscale x 2 x i32> %0,
695     <vscale x 2 x i32> %1,
696     <vscale x 2 x i32> %2,
697     <vscale x 2 x i1> %3,
698     iXLen %4, iXLen 1)
700   ret <vscale x 2 x i32> %a
703 declare <vscale x 4 x i32> @llvm.riscv.vmul.nxv4i32.nxv4i32(
704   <vscale x 4 x i32>,
705   <vscale x 4 x i32>,
706   <vscale x 4 x i32>,
707   iXLen);
709 define <vscale x 4 x i32> @intrinsic_vmul_vv_nxv4i32_nxv4i32_nxv4i32(<vscale x 4 x i32> %0, <vscale x 4 x i32> %1, iXLen %2) nounwind {
710 ; CHECK-LABEL: intrinsic_vmul_vv_nxv4i32_nxv4i32_nxv4i32:
711 ; CHECK:       # %bb.0: # %entry
712 ; CHECK-NEXT:    vsetvli zero, a0, e32, m2, ta, ma
713 ; CHECK-NEXT:    vmul.vv v8, v8, v10
714 ; CHECK-NEXT:    ret
715 entry:
716   %a = call <vscale x 4 x i32> @llvm.riscv.vmul.nxv4i32.nxv4i32(
717     <vscale x 4 x i32> undef,
718     <vscale x 4 x i32> %0,
719     <vscale x 4 x i32> %1,
720     iXLen %2)
722   ret <vscale x 4 x i32> %a
725 declare <vscale x 4 x i32> @llvm.riscv.vmul.mask.nxv4i32.nxv4i32(
726   <vscale x 4 x i32>,
727   <vscale x 4 x i32>,
728   <vscale x 4 x i32>,
729   <vscale x 4 x i1>,
730   iXLen, iXLen);
732 define <vscale x 4 x i32> @intrinsic_vmul_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 {
733 ; CHECK-LABEL: intrinsic_vmul_mask_vv_nxv4i32_nxv4i32_nxv4i32:
734 ; CHECK:       # %bb.0: # %entry
735 ; CHECK-NEXT:    vsetvli zero, a0, e32, m2, ta, mu
736 ; CHECK-NEXT:    vmul.vv v8, v10, v12, v0.t
737 ; CHECK-NEXT:    ret
738 entry:
739   %a = call <vscale x 4 x i32> @llvm.riscv.vmul.mask.nxv4i32.nxv4i32(
740     <vscale x 4 x i32> %0,
741     <vscale x 4 x i32> %1,
742     <vscale x 4 x i32> %2,
743     <vscale x 4 x i1> %3,
744     iXLen %4, iXLen 1)
746   ret <vscale x 4 x i32> %a
749 declare <vscale x 8 x i32> @llvm.riscv.vmul.nxv8i32.nxv8i32(
750   <vscale x 8 x i32>,
751   <vscale x 8 x i32>,
752   <vscale x 8 x i32>,
753   iXLen);
755 define <vscale x 8 x i32> @intrinsic_vmul_vv_nxv8i32_nxv8i32_nxv8i32(<vscale x 8 x i32> %0, <vscale x 8 x i32> %1, iXLen %2) nounwind {
756 ; CHECK-LABEL: intrinsic_vmul_vv_nxv8i32_nxv8i32_nxv8i32:
757 ; CHECK:       # %bb.0: # %entry
758 ; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, ma
759 ; CHECK-NEXT:    vmul.vv v8, v8, v12
760 ; CHECK-NEXT:    ret
761 entry:
762   %a = call <vscale x 8 x i32> @llvm.riscv.vmul.nxv8i32.nxv8i32(
763     <vscale x 8 x i32> undef,
764     <vscale x 8 x i32> %0,
765     <vscale x 8 x i32> %1,
766     iXLen %2)
768   ret <vscale x 8 x i32> %a
771 declare <vscale x 8 x i32> @llvm.riscv.vmul.mask.nxv8i32.nxv8i32(
772   <vscale x 8 x i32>,
773   <vscale x 8 x i32>,
774   <vscale x 8 x i32>,
775   <vscale x 8 x i1>,
776   iXLen, iXLen);
778 define <vscale x 8 x i32> @intrinsic_vmul_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 {
779 ; CHECK-LABEL: intrinsic_vmul_mask_vv_nxv8i32_nxv8i32_nxv8i32:
780 ; CHECK:       # %bb.0: # %entry
781 ; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, mu
782 ; CHECK-NEXT:    vmul.vv v8, v12, v16, v0.t
783 ; CHECK-NEXT:    ret
784 entry:
785   %a = call <vscale x 8 x i32> @llvm.riscv.vmul.mask.nxv8i32.nxv8i32(
786     <vscale x 8 x i32> %0,
787     <vscale x 8 x i32> %1,
788     <vscale x 8 x i32> %2,
789     <vscale x 8 x i1> %3,
790     iXLen %4, iXLen 1)
792   ret <vscale x 8 x i32> %a
795 declare <vscale x 16 x i32> @llvm.riscv.vmul.nxv16i32.nxv16i32(
796   <vscale x 16 x i32>,
797   <vscale x 16 x i32>,
798   <vscale x 16 x i32>,
799   iXLen);
801 define <vscale x 16 x i32> @intrinsic_vmul_vv_nxv16i32_nxv16i32_nxv16i32(<vscale x 16 x i32> %0, <vscale x 16 x i32> %1, iXLen %2) nounwind {
802 ; CHECK-LABEL: intrinsic_vmul_vv_nxv16i32_nxv16i32_nxv16i32:
803 ; CHECK:       # %bb.0: # %entry
804 ; CHECK-NEXT:    vsetvli zero, a0, e32, m8, ta, ma
805 ; CHECK-NEXT:    vmul.vv v8, v8, v16
806 ; CHECK-NEXT:    ret
807 entry:
808   %a = call <vscale x 16 x i32> @llvm.riscv.vmul.nxv16i32.nxv16i32(
809     <vscale x 16 x i32> undef,
810     <vscale x 16 x i32> %0,
811     <vscale x 16 x i32> %1,
812     iXLen %2)
814   ret <vscale x 16 x i32> %a
817 declare <vscale x 16 x i32> @llvm.riscv.vmul.mask.nxv16i32.nxv16i32(
818   <vscale x 16 x i32>,
819   <vscale x 16 x i32>,
820   <vscale x 16 x i32>,
821   <vscale x 16 x i1>,
822   iXLen, iXLen);
824 define <vscale x 16 x i32> @intrinsic_vmul_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 {
825 ; CHECK-LABEL: intrinsic_vmul_mask_vv_nxv16i32_nxv16i32_nxv16i32:
826 ; CHECK:       # %bb.0: # %entry
827 ; CHECK-NEXT:    vl8re32.v v24, (a0)
828 ; CHECK-NEXT:    vsetvli zero, a1, e32, m8, ta, mu
829 ; CHECK-NEXT:    vmul.vv v8, v16, v24, v0.t
830 ; CHECK-NEXT:    ret
831 entry:
832   %a = call <vscale x 16 x i32> @llvm.riscv.vmul.mask.nxv16i32.nxv16i32(
833     <vscale x 16 x i32> %0,
834     <vscale x 16 x i32> %1,
835     <vscale x 16 x i32> %2,
836     <vscale x 16 x i1> %3,
837     iXLen %4, iXLen 1)
839   ret <vscale x 16 x i32> %a
842 declare <vscale x 1 x i64> @llvm.riscv.vmul.nxv1i64.nxv1i64(
843   <vscale x 1 x i64>,
844   <vscale x 1 x i64>,
845   <vscale x 1 x i64>,
846   iXLen);
848 define <vscale x 1 x i64> @intrinsic_vmul_vv_nxv1i64_nxv1i64_nxv1i64(<vscale x 1 x i64> %0, <vscale x 1 x i64> %1, iXLen %2) nounwind {
849 ; CHECK-LABEL: intrinsic_vmul_vv_nxv1i64_nxv1i64_nxv1i64:
850 ; CHECK:       # %bb.0: # %entry
851 ; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
852 ; CHECK-NEXT:    vmul.vv v8, v8, v9
853 ; CHECK-NEXT:    ret
854 entry:
855   %a = call <vscale x 1 x i64> @llvm.riscv.vmul.nxv1i64.nxv1i64(
856     <vscale x 1 x i64> undef,
857     <vscale x 1 x i64> %0,
858     <vscale x 1 x i64> %1,
859     iXLen %2)
861   ret <vscale x 1 x i64> %a
864 declare <vscale x 1 x i64> @llvm.riscv.vmul.mask.nxv1i64.nxv1i64(
865   <vscale x 1 x i64>,
866   <vscale x 1 x i64>,
867   <vscale x 1 x i64>,
868   <vscale x 1 x i1>,
869   iXLen, iXLen);
871 define <vscale x 1 x i64> @intrinsic_vmul_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 {
872 ; CHECK-LABEL: intrinsic_vmul_mask_vv_nxv1i64_nxv1i64_nxv1i64:
873 ; CHECK:       # %bb.0: # %entry
874 ; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, mu
875 ; CHECK-NEXT:    vmul.vv v8, v9, v10, v0.t
876 ; CHECK-NEXT:    ret
877 entry:
878   %a = call <vscale x 1 x i64> @llvm.riscv.vmul.mask.nxv1i64.nxv1i64(
879     <vscale x 1 x i64> %0,
880     <vscale x 1 x i64> %1,
881     <vscale x 1 x i64> %2,
882     <vscale x 1 x i1> %3,
883     iXLen %4, iXLen 1)
885   ret <vscale x 1 x i64> %a
888 declare <vscale x 2 x i64> @llvm.riscv.vmul.nxv2i64.nxv2i64(
889   <vscale x 2 x i64>,
890   <vscale x 2 x i64>,
891   <vscale x 2 x i64>,
892   iXLen);
894 define <vscale x 2 x i64> @intrinsic_vmul_vv_nxv2i64_nxv2i64_nxv2i64(<vscale x 2 x i64> %0, <vscale x 2 x i64> %1, iXLen %2) nounwind {
895 ; CHECK-LABEL: intrinsic_vmul_vv_nxv2i64_nxv2i64_nxv2i64:
896 ; CHECK:       # %bb.0: # %entry
897 ; CHECK-NEXT:    vsetvli zero, a0, e64, m2, ta, ma
898 ; CHECK-NEXT:    vmul.vv v8, v8, v10
899 ; CHECK-NEXT:    ret
900 entry:
901   %a = call <vscale x 2 x i64> @llvm.riscv.vmul.nxv2i64.nxv2i64(
902     <vscale x 2 x i64> undef,
903     <vscale x 2 x i64> %0,
904     <vscale x 2 x i64> %1,
905     iXLen %2)
907   ret <vscale x 2 x i64> %a
910 declare <vscale x 2 x i64> @llvm.riscv.vmul.mask.nxv2i64.nxv2i64(
911   <vscale x 2 x i64>,
912   <vscale x 2 x i64>,
913   <vscale x 2 x i64>,
914   <vscale x 2 x i1>,
915   iXLen, iXLen);
917 define <vscale x 2 x i64> @intrinsic_vmul_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 {
918 ; CHECK-LABEL: intrinsic_vmul_mask_vv_nxv2i64_nxv2i64_nxv2i64:
919 ; CHECK:       # %bb.0: # %entry
920 ; CHECK-NEXT:    vsetvli zero, a0, e64, m2, ta, mu
921 ; CHECK-NEXT:    vmul.vv v8, v10, v12, v0.t
922 ; CHECK-NEXT:    ret
923 entry:
924   %a = call <vscale x 2 x i64> @llvm.riscv.vmul.mask.nxv2i64.nxv2i64(
925     <vscale x 2 x i64> %0,
926     <vscale x 2 x i64> %1,
927     <vscale x 2 x i64> %2,
928     <vscale x 2 x i1> %3,
929     iXLen %4, iXLen 1)
931   ret <vscale x 2 x i64> %a
934 declare <vscale x 4 x i64> @llvm.riscv.vmul.nxv4i64.nxv4i64(
935   <vscale x 4 x i64>,
936   <vscale x 4 x i64>,
937   <vscale x 4 x i64>,
938   iXLen);
940 define <vscale x 4 x i64> @intrinsic_vmul_vv_nxv4i64_nxv4i64_nxv4i64(<vscale x 4 x i64> %0, <vscale x 4 x i64> %1, iXLen %2) nounwind {
941 ; CHECK-LABEL: intrinsic_vmul_vv_nxv4i64_nxv4i64_nxv4i64:
942 ; CHECK:       # %bb.0: # %entry
943 ; CHECK-NEXT:    vsetvli zero, a0, e64, m4, ta, ma
944 ; CHECK-NEXT:    vmul.vv v8, v8, v12
945 ; CHECK-NEXT:    ret
946 entry:
947   %a = call <vscale x 4 x i64> @llvm.riscv.vmul.nxv4i64.nxv4i64(
948     <vscale x 4 x i64> undef,
949     <vscale x 4 x i64> %0,
950     <vscale x 4 x i64> %1,
951     iXLen %2)
953   ret <vscale x 4 x i64> %a
956 declare <vscale x 4 x i64> @llvm.riscv.vmul.mask.nxv4i64.nxv4i64(
957   <vscale x 4 x i64>,
958   <vscale x 4 x i64>,
959   <vscale x 4 x i64>,
960   <vscale x 4 x i1>,
961   iXLen, iXLen);
963 define <vscale x 4 x i64> @intrinsic_vmul_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 {
964 ; CHECK-LABEL: intrinsic_vmul_mask_vv_nxv4i64_nxv4i64_nxv4i64:
965 ; CHECK:       # %bb.0: # %entry
966 ; CHECK-NEXT:    vsetvli zero, a0, e64, m4, ta, mu
967 ; CHECK-NEXT:    vmul.vv v8, v12, v16, v0.t
968 ; CHECK-NEXT:    ret
969 entry:
970   %a = call <vscale x 4 x i64> @llvm.riscv.vmul.mask.nxv4i64.nxv4i64(
971     <vscale x 4 x i64> %0,
972     <vscale x 4 x i64> %1,
973     <vscale x 4 x i64> %2,
974     <vscale x 4 x i1> %3,
975     iXLen %4, iXLen 1)
977   ret <vscale x 4 x i64> %a
980 declare <vscale x 8 x i64> @llvm.riscv.vmul.nxv8i64.nxv8i64(
981   <vscale x 8 x i64>,
982   <vscale x 8 x i64>,
983   <vscale x 8 x i64>,
984   iXLen);
986 define <vscale x 8 x i64> @intrinsic_vmul_vv_nxv8i64_nxv8i64_nxv8i64(<vscale x 8 x i64> %0, <vscale x 8 x i64> %1, iXLen %2) nounwind {
987 ; CHECK-LABEL: intrinsic_vmul_vv_nxv8i64_nxv8i64_nxv8i64:
988 ; CHECK:       # %bb.0: # %entry
989 ; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma
990 ; CHECK-NEXT:    vmul.vv v8, v8, v16
991 ; CHECK-NEXT:    ret
992 entry:
993   %a = call <vscale x 8 x i64> @llvm.riscv.vmul.nxv8i64.nxv8i64(
994     <vscale x 8 x i64> undef,
995     <vscale x 8 x i64> %0,
996     <vscale x 8 x i64> %1,
997     iXLen %2)
999   ret <vscale x 8 x i64> %a
1002 declare <vscale x 8 x i64> @llvm.riscv.vmul.mask.nxv8i64.nxv8i64(
1003   <vscale x 8 x i64>,
1004   <vscale x 8 x i64>,
1005   <vscale x 8 x i64>,
1006   <vscale x 8 x i1>,
1007   iXLen, iXLen);
1009 define <vscale x 8 x i64> @intrinsic_vmul_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 {
1010 ; CHECK-LABEL: intrinsic_vmul_mask_vv_nxv8i64_nxv8i64_nxv8i64:
1011 ; CHECK:       # %bb.0: # %entry
1012 ; CHECK-NEXT:    vl8re64.v v24, (a0)
1013 ; CHECK-NEXT:    vsetvli zero, a1, e64, m8, ta, mu
1014 ; CHECK-NEXT:    vmul.vv v8, v16, v24, v0.t
1015 ; CHECK-NEXT:    ret
1016 entry:
1017   %a = call <vscale x 8 x i64> @llvm.riscv.vmul.mask.nxv8i64.nxv8i64(
1018     <vscale x 8 x i64> %0,
1019     <vscale x 8 x i64> %1,
1020     <vscale x 8 x i64> %2,
1021     <vscale x 8 x i1> %3,
1022     iXLen %4, iXLen 1)
1024   ret <vscale x 8 x i64> %a
1027 declare <vscale x 1 x i8> @llvm.riscv.vmul.nxv1i8.i8(
1028   <vscale x 1 x i8>,
1029   <vscale x 1 x i8>,
1030   i8,
1031   iXLen);
1033 define <vscale x 1 x i8> @intrinsic_vmul_vx_nxv1i8_nxv1i8_i8(<vscale x 1 x i8> %0, i8 %1, iXLen %2) nounwind {
1034 ; CHECK-LABEL: intrinsic_vmul_vx_nxv1i8_nxv1i8_i8:
1035 ; CHECK:       # %bb.0: # %entry
1036 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf8, ta, ma
1037 ; CHECK-NEXT:    vmul.vx v8, v8, a0
1038 ; CHECK-NEXT:    ret
1039 entry:
1040   %a = call <vscale x 1 x i8> @llvm.riscv.vmul.nxv1i8.i8(
1041     <vscale x 1 x i8> undef,
1042     <vscale x 1 x i8> %0,
1043     i8 %1,
1044     iXLen %2)
1046   ret <vscale x 1 x i8> %a
1049 declare <vscale x 1 x i8> @llvm.riscv.vmul.mask.nxv1i8.i8(
1050   <vscale x 1 x i8>,
1051   <vscale x 1 x i8>,
1052   i8,
1053   <vscale x 1 x i1>,
1054   iXLen, iXLen);
1056 define <vscale x 1 x i8> @intrinsic_vmul_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 {
1057 ; CHECK-LABEL: intrinsic_vmul_mask_vx_nxv1i8_nxv1i8_i8:
1058 ; CHECK:       # %bb.0: # %entry
1059 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf8, ta, mu
1060 ; CHECK-NEXT:    vmul.vx v8, v9, a0, v0.t
1061 ; CHECK-NEXT:    ret
1062 entry:
1063   %a = call <vscale x 1 x i8> @llvm.riscv.vmul.mask.nxv1i8.i8(
1064     <vscale x 1 x i8> %0,
1065     <vscale x 1 x i8> %1,
1066     i8 %2,
1067     <vscale x 1 x i1> %3,
1068     iXLen %4, iXLen 1)
1070   ret <vscale x 1 x i8> %a
1073 declare <vscale x 2 x i8> @llvm.riscv.vmul.nxv2i8.i8(
1074   <vscale x 2 x i8>,
1075   <vscale x 2 x i8>,
1076   i8,
1077   iXLen);
1079 define <vscale x 2 x i8> @intrinsic_vmul_vx_nxv2i8_nxv2i8_i8(<vscale x 2 x i8> %0, i8 %1, iXLen %2) nounwind {
1080 ; CHECK-LABEL: intrinsic_vmul_vx_nxv2i8_nxv2i8_i8:
1081 ; CHECK:       # %bb.0: # %entry
1082 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf4, ta, ma
1083 ; CHECK-NEXT:    vmul.vx v8, v8, a0
1084 ; CHECK-NEXT:    ret
1085 entry:
1086   %a = call <vscale x 2 x i8> @llvm.riscv.vmul.nxv2i8.i8(
1087     <vscale x 2 x i8> undef,
1088     <vscale x 2 x i8> %0,
1089     i8 %1,
1090     iXLen %2)
1092   ret <vscale x 2 x i8> %a
1095 declare <vscale x 2 x i8> @llvm.riscv.vmul.mask.nxv2i8.i8(
1096   <vscale x 2 x i8>,
1097   <vscale x 2 x i8>,
1098   i8,
1099   <vscale x 2 x i1>,
1100   iXLen, iXLen);
1102 define <vscale x 2 x i8> @intrinsic_vmul_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 {
1103 ; CHECK-LABEL: intrinsic_vmul_mask_vx_nxv2i8_nxv2i8_i8:
1104 ; CHECK:       # %bb.0: # %entry
1105 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf4, ta, mu
1106 ; CHECK-NEXT:    vmul.vx v8, v9, a0, v0.t
1107 ; CHECK-NEXT:    ret
1108 entry:
1109   %a = call <vscale x 2 x i8> @llvm.riscv.vmul.mask.nxv2i8.i8(
1110     <vscale x 2 x i8> %0,
1111     <vscale x 2 x i8> %1,
1112     i8 %2,
1113     <vscale x 2 x i1> %3,
1114     iXLen %4, iXLen 1)
1116   ret <vscale x 2 x i8> %a
1119 declare <vscale x 4 x i8> @llvm.riscv.vmul.nxv4i8.i8(
1120   <vscale x 4 x i8>,
1121   <vscale x 4 x i8>,
1122   i8,
1123   iXLen);
1125 define <vscale x 4 x i8> @intrinsic_vmul_vx_nxv4i8_nxv4i8_i8(<vscale x 4 x i8> %0, i8 %1, iXLen %2) nounwind {
1126 ; CHECK-LABEL: intrinsic_vmul_vx_nxv4i8_nxv4i8_i8:
1127 ; CHECK:       # %bb.0: # %entry
1128 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf2, ta, ma
1129 ; CHECK-NEXT:    vmul.vx v8, v8, a0
1130 ; CHECK-NEXT:    ret
1131 entry:
1132   %a = call <vscale x 4 x i8> @llvm.riscv.vmul.nxv4i8.i8(
1133     <vscale x 4 x i8> undef,
1134     <vscale x 4 x i8> %0,
1135     i8 %1,
1136     iXLen %2)
1138   ret <vscale x 4 x i8> %a
1141 declare <vscale x 4 x i8> @llvm.riscv.vmul.mask.nxv4i8.i8(
1142   <vscale x 4 x i8>,
1143   <vscale x 4 x i8>,
1144   i8,
1145   <vscale x 4 x i1>,
1146   iXLen, iXLen);
1148 define <vscale x 4 x i8> @intrinsic_vmul_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 {
1149 ; CHECK-LABEL: intrinsic_vmul_mask_vx_nxv4i8_nxv4i8_i8:
1150 ; CHECK:       # %bb.0: # %entry
1151 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf2, ta, mu
1152 ; CHECK-NEXT:    vmul.vx v8, v9, a0, v0.t
1153 ; CHECK-NEXT:    ret
1154 entry:
1155   %a = call <vscale x 4 x i8> @llvm.riscv.vmul.mask.nxv4i8.i8(
1156     <vscale x 4 x i8> %0,
1157     <vscale x 4 x i8> %1,
1158     i8 %2,
1159     <vscale x 4 x i1> %3,
1160     iXLen %4, iXLen 1)
1162   ret <vscale x 4 x i8> %a
1165 declare <vscale x 8 x i8> @llvm.riscv.vmul.nxv8i8.i8(
1166   <vscale x 8 x i8>,
1167   <vscale x 8 x i8>,
1168   i8,
1169   iXLen);
1171 define <vscale x 8 x i8> @intrinsic_vmul_vx_nxv8i8_nxv8i8_i8(<vscale x 8 x i8> %0, i8 %1, iXLen %2) nounwind {
1172 ; CHECK-LABEL: intrinsic_vmul_vx_nxv8i8_nxv8i8_i8:
1173 ; CHECK:       # %bb.0: # %entry
1174 ; CHECK-NEXT:    vsetvli zero, a1, e8, m1, ta, ma
1175 ; CHECK-NEXT:    vmul.vx v8, v8, a0
1176 ; CHECK-NEXT:    ret
1177 entry:
1178   %a = call <vscale x 8 x i8> @llvm.riscv.vmul.nxv8i8.i8(
1179     <vscale x 8 x i8> undef,
1180     <vscale x 8 x i8> %0,
1181     i8 %1,
1182     iXLen %2)
1184   ret <vscale x 8 x i8> %a
1187 declare <vscale x 8 x i8> @llvm.riscv.vmul.mask.nxv8i8.i8(
1188   <vscale x 8 x i8>,
1189   <vscale x 8 x i8>,
1190   i8,
1191   <vscale x 8 x i1>,
1192   iXLen, iXLen);
1194 define <vscale x 8 x i8> @intrinsic_vmul_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 {
1195 ; CHECK-LABEL: intrinsic_vmul_mask_vx_nxv8i8_nxv8i8_i8:
1196 ; CHECK:       # %bb.0: # %entry
1197 ; CHECK-NEXT:    vsetvli zero, a1, e8, m1, ta, mu
1198 ; CHECK-NEXT:    vmul.vx v8, v9, a0, v0.t
1199 ; CHECK-NEXT:    ret
1200 entry:
1201   %a = call <vscale x 8 x i8> @llvm.riscv.vmul.mask.nxv8i8.i8(
1202     <vscale x 8 x i8> %0,
1203     <vscale x 8 x i8> %1,
1204     i8 %2,
1205     <vscale x 8 x i1> %3,
1206     iXLen %4, iXLen 1)
1208   ret <vscale x 8 x i8> %a
1211 declare <vscale x 16 x i8> @llvm.riscv.vmul.nxv16i8.i8(
1212   <vscale x 16 x i8>,
1213   <vscale x 16 x i8>,
1214   i8,
1215   iXLen);
1217 define <vscale x 16 x i8> @intrinsic_vmul_vx_nxv16i8_nxv16i8_i8(<vscale x 16 x i8> %0, i8 %1, iXLen %2) nounwind {
1218 ; CHECK-LABEL: intrinsic_vmul_vx_nxv16i8_nxv16i8_i8:
1219 ; CHECK:       # %bb.0: # %entry
1220 ; CHECK-NEXT:    vsetvli zero, a1, e8, m2, ta, ma
1221 ; CHECK-NEXT:    vmul.vx v8, v8, a0
1222 ; CHECK-NEXT:    ret
1223 entry:
1224   %a = call <vscale x 16 x i8> @llvm.riscv.vmul.nxv16i8.i8(
1225     <vscale x 16 x i8> undef,
1226     <vscale x 16 x i8> %0,
1227     i8 %1,
1228     iXLen %2)
1230   ret <vscale x 16 x i8> %a
1233 declare <vscale x 16 x i8> @llvm.riscv.vmul.mask.nxv16i8.i8(
1234   <vscale x 16 x i8>,
1235   <vscale x 16 x i8>,
1236   i8,
1237   <vscale x 16 x i1>,
1238   iXLen, iXLen);
1240 define <vscale x 16 x i8> @intrinsic_vmul_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 {
1241 ; CHECK-LABEL: intrinsic_vmul_mask_vx_nxv16i8_nxv16i8_i8:
1242 ; CHECK:       # %bb.0: # %entry
1243 ; CHECK-NEXT:    vsetvli zero, a1, e8, m2, ta, mu
1244 ; CHECK-NEXT:    vmul.vx v8, v10, a0, v0.t
1245 ; CHECK-NEXT:    ret
1246 entry:
1247   %a = call <vscale x 16 x i8> @llvm.riscv.vmul.mask.nxv16i8.i8(
1248     <vscale x 16 x i8> %0,
1249     <vscale x 16 x i8> %1,
1250     i8 %2,
1251     <vscale x 16 x i1> %3,
1252     iXLen %4, iXLen 1)
1254   ret <vscale x 16 x i8> %a
1257 declare <vscale x 32 x i8> @llvm.riscv.vmul.nxv32i8.i8(
1258   <vscale x 32 x i8>,
1259   <vscale x 32 x i8>,
1260   i8,
1261   iXLen);
1263 define <vscale x 32 x i8> @intrinsic_vmul_vx_nxv32i8_nxv32i8_i8(<vscale x 32 x i8> %0, i8 %1, iXLen %2) nounwind {
1264 ; CHECK-LABEL: intrinsic_vmul_vx_nxv32i8_nxv32i8_i8:
1265 ; CHECK:       # %bb.0: # %entry
1266 ; CHECK-NEXT:    vsetvli zero, a1, e8, m4, ta, ma
1267 ; CHECK-NEXT:    vmul.vx v8, v8, a0
1268 ; CHECK-NEXT:    ret
1269 entry:
1270   %a = call <vscale x 32 x i8> @llvm.riscv.vmul.nxv32i8.i8(
1271     <vscale x 32 x i8> undef,
1272     <vscale x 32 x i8> %0,
1273     i8 %1,
1274     iXLen %2)
1276   ret <vscale x 32 x i8> %a
1279 declare <vscale x 32 x i8> @llvm.riscv.vmul.mask.nxv32i8.i8(
1280   <vscale x 32 x i8>,
1281   <vscale x 32 x i8>,
1282   i8,
1283   <vscale x 32 x i1>,
1284   iXLen, iXLen);
1286 define <vscale x 32 x i8> @intrinsic_vmul_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 {
1287 ; CHECK-LABEL: intrinsic_vmul_mask_vx_nxv32i8_nxv32i8_i8:
1288 ; CHECK:       # %bb.0: # %entry
1289 ; CHECK-NEXT:    vsetvli zero, a1, e8, m4, ta, mu
1290 ; CHECK-NEXT:    vmul.vx v8, v12, a0, v0.t
1291 ; CHECK-NEXT:    ret
1292 entry:
1293   %a = call <vscale x 32 x i8> @llvm.riscv.vmul.mask.nxv32i8.i8(
1294     <vscale x 32 x i8> %0,
1295     <vscale x 32 x i8> %1,
1296     i8 %2,
1297     <vscale x 32 x i1> %3,
1298     iXLen %4, iXLen 1)
1300   ret <vscale x 32 x i8> %a
1303 declare <vscale x 64 x i8> @llvm.riscv.vmul.nxv64i8.i8(
1304   <vscale x 64 x i8>,
1305   <vscale x 64 x i8>,
1306   i8,
1307   iXLen);
1309 define <vscale x 64 x i8> @intrinsic_vmul_vx_nxv64i8_nxv64i8_i8(<vscale x 64 x i8> %0, i8 %1, iXLen %2) nounwind {
1310 ; CHECK-LABEL: intrinsic_vmul_vx_nxv64i8_nxv64i8_i8:
1311 ; CHECK:       # %bb.0: # %entry
1312 ; CHECK-NEXT:    vsetvli zero, a1, e8, m8, ta, ma
1313 ; CHECK-NEXT:    vmul.vx v8, v8, a0
1314 ; CHECK-NEXT:    ret
1315 entry:
1316   %a = call <vscale x 64 x i8> @llvm.riscv.vmul.nxv64i8.i8(
1317     <vscale x 64 x i8> undef,
1318     <vscale x 64 x i8> %0,
1319     i8 %1,
1320     iXLen %2)
1322   ret <vscale x 64 x i8> %a
1325 declare <vscale x 64 x i8> @llvm.riscv.vmul.mask.nxv64i8.i8(
1326   <vscale x 64 x i8>,
1327   <vscale x 64 x i8>,
1328   i8,
1329   <vscale x 64 x i1>,
1330   iXLen, iXLen);
1332 define <vscale x 64 x i8> @intrinsic_vmul_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 {
1333 ; CHECK-LABEL: intrinsic_vmul_mask_vx_nxv64i8_nxv64i8_i8:
1334 ; CHECK:       # %bb.0: # %entry
1335 ; CHECK-NEXT:    vsetvli zero, a1, e8, m8, ta, mu
1336 ; CHECK-NEXT:    vmul.vx v8, v16, a0, v0.t
1337 ; CHECK-NEXT:    ret
1338 entry:
1339   %a = call <vscale x 64 x i8> @llvm.riscv.vmul.mask.nxv64i8.i8(
1340     <vscale x 64 x i8> %0,
1341     <vscale x 64 x i8> %1,
1342     i8 %2,
1343     <vscale x 64 x i1> %3,
1344     iXLen %4, iXLen 1)
1346   ret <vscale x 64 x i8> %a
1349 declare <vscale x 1 x i16> @llvm.riscv.vmul.nxv1i16.i16(
1350   <vscale x 1 x i16>,
1351   <vscale x 1 x i16>,
1352   i16,
1353   iXLen);
1355 define <vscale x 1 x i16> @intrinsic_vmul_vx_nxv1i16_nxv1i16_i16(<vscale x 1 x i16> %0, i16 %1, iXLen %2) nounwind {
1356 ; CHECK-LABEL: intrinsic_vmul_vx_nxv1i16_nxv1i16_i16:
1357 ; CHECK:       # %bb.0: # %entry
1358 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, ma
1359 ; CHECK-NEXT:    vmul.vx v8, v8, a0
1360 ; CHECK-NEXT:    ret
1361 entry:
1362   %a = call <vscale x 1 x i16> @llvm.riscv.vmul.nxv1i16.i16(
1363     <vscale x 1 x i16> undef,
1364     <vscale x 1 x i16> %0,
1365     i16 %1,
1366     iXLen %2)
1368   ret <vscale x 1 x i16> %a
1371 declare <vscale x 1 x i16> @llvm.riscv.vmul.mask.nxv1i16.i16(
1372   <vscale x 1 x i16>,
1373   <vscale x 1 x i16>,
1374   i16,
1375   <vscale x 1 x i1>,
1376   iXLen, iXLen);
1378 define <vscale x 1 x i16> @intrinsic_vmul_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 {
1379 ; CHECK-LABEL: intrinsic_vmul_mask_vx_nxv1i16_nxv1i16_i16:
1380 ; CHECK:       # %bb.0: # %entry
1381 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, mu
1382 ; CHECK-NEXT:    vmul.vx v8, v9, a0, v0.t
1383 ; CHECK-NEXT:    ret
1384 entry:
1385   %a = call <vscale x 1 x i16> @llvm.riscv.vmul.mask.nxv1i16.i16(
1386     <vscale x 1 x i16> %0,
1387     <vscale x 1 x i16> %1,
1388     i16 %2,
1389     <vscale x 1 x i1> %3,
1390     iXLen %4, iXLen 1)
1392   ret <vscale x 1 x i16> %a
1395 declare <vscale x 2 x i16> @llvm.riscv.vmul.nxv2i16.i16(
1396   <vscale x 2 x i16>,
1397   <vscale x 2 x i16>,
1398   i16,
1399   iXLen);
1401 define <vscale x 2 x i16> @intrinsic_vmul_vx_nxv2i16_nxv2i16_i16(<vscale x 2 x i16> %0, i16 %1, iXLen %2) nounwind {
1402 ; CHECK-LABEL: intrinsic_vmul_vx_nxv2i16_nxv2i16_i16:
1403 ; CHECK:       # %bb.0: # %entry
1404 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, ma
1405 ; CHECK-NEXT:    vmul.vx v8, v8, a0
1406 ; CHECK-NEXT:    ret
1407 entry:
1408   %a = call <vscale x 2 x i16> @llvm.riscv.vmul.nxv2i16.i16(
1409     <vscale x 2 x i16> undef,
1410     <vscale x 2 x i16> %0,
1411     i16 %1,
1412     iXLen %2)
1414   ret <vscale x 2 x i16> %a
1417 declare <vscale x 2 x i16> @llvm.riscv.vmul.mask.nxv2i16.i16(
1418   <vscale x 2 x i16>,
1419   <vscale x 2 x i16>,
1420   i16,
1421   <vscale x 2 x i1>,
1422   iXLen, iXLen);
1424 define <vscale x 2 x i16> @intrinsic_vmul_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 {
1425 ; CHECK-LABEL: intrinsic_vmul_mask_vx_nxv2i16_nxv2i16_i16:
1426 ; CHECK:       # %bb.0: # %entry
1427 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, mu
1428 ; CHECK-NEXT:    vmul.vx v8, v9, a0, v0.t
1429 ; CHECK-NEXT:    ret
1430 entry:
1431   %a = call <vscale x 2 x i16> @llvm.riscv.vmul.mask.nxv2i16.i16(
1432     <vscale x 2 x i16> %0,
1433     <vscale x 2 x i16> %1,
1434     i16 %2,
1435     <vscale x 2 x i1> %3,
1436     iXLen %4, iXLen 1)
1438   ret <vscale x 2 x i16> %a
1441 declare <vscale x 4 x i16> @llvm.riscv.vmul.nxv4i16.i16(
1442   <vscale x 4 x i16>,
1443   <vscale x 4 x i16>,
1444   i16,
1445   iXLen);
1447 define <vscale x 4 x i16> @intrinsic_vmul_vx_nxv4i16_nxv4i16_i16(<vscale x 4 x i16> %0, i16 %1, iXLen %2) nounwind {
1448 ; CHECK-LABEL: intrinsic_vmul_vx_nxv4i16_nxv4i16_i16:
1449 ; CHECK:       # %bb.0: # %entry
1450 ; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, ma
1451 ; CHECK-NEXT:    vmul.vx v8, v8, a0
1452 ; CHECK-NEXT:    ret
1453 entry:
1454   %a = call <vscale x 4 x i16> @llvm.riscv.vmul.nxv4i16.i16(
1455     <vscale x 4 x i16> undef,
1456     <vscale x 4 x i16> %0,
1457     i16 %1,
1458     iXLen %2)
1460   ret <vscale x 4 x i16> %a
1463 declare <vscale x 4 x i16> @llvm.riscv.vmul.mask.nxv4i16.i16(
1464   <vscale x 4 x i16>,
1465   <vscale x 4 x i16>,
1466   i16,
1467   <vscale x 4 x i1>,
1468   iXLen, iXLen);
1470 define <vscale x 4 x i16> @intrinsic_vmul_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 {
1471 ; CHECK-LABEL: intrinsic_vmul_mask_vx_nxv4i16_nxv4i16_i16:
1472 ; CHECK:       # %bb.0: # %entry
1473 ; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, mu
1474 ; CHECK-NEXT:    vmul.vx v8, v9, a0, v0.t
1475 ; CHECK-NEXT:    ret
1476 entry:
1477   %a = call <vscale x 4 x i16> @llvm.riscv.vmul.mask.nxv4i16.i16(
1478     <vscale x 4 x i16> %0,
1479     <vscale x 4 x i16> %1,
1480     i16 %2,
1481     <vscale x 4 x i1> %3,
1482     iXLen %4, iXLen 1)
1484   ret <vscale x 4 x i16> %a
1487 declare <vscale x 8 x i16> @llvm.riscv.vmul.nxv8i16.i16(
1488   <vscale x 8 x i16>,
1489   <vscale x 8 x i16>,
1490   i16,
1491   iXLen);
1493 define <vscale x 8 x i16> @intrinsic_vmul_vx_nxv8i16_nxv8i16_i16(<vscale x 8 x i16> %0, i16 %1, iXLen %2) nounwind {
1494 ; CHECK-LABEL: intrinsic_vmul_vx_nxv8i16_nxv8i16_i16:
1495 ; CHECK:       # %bb.0: # %entry
1496 ; CHECK-NEXT:    vsetvli zero, a1, e16, m2, ta, ma
1497 ; CHECK-NEXT:    vmul.vx v8, v8, a0
1498 ; CHECK-NEXT:    ret
1499 entry:
1500   %a = call <vscale x 8 x i16> @llvm.riscv.vmul.nxv8i16.i16(
1501     <vscale x 8 x i16> undef,
1502     <vscale x 8 x i16> %0,
1503     i16 %1,
1504     iXLen %2)
1506   ret <vscale x 8 x i16> %a
1509 declare <vscale x 8 x i16> @llvm.riscv.vmul.mask.nxv8i16.i16(
1510   <vscale x 8 x i16>,
1511   <vscale x 8 x i16>,
1512   i16,
1513   <vscale x 8 x i1>,
1514   iXLen, iXLen);
1516 define <vscale x 8 x i16> @intrinsic_vmul_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 {
1517 ; CHECK-LABEL: intrinsic_vmul_mask_vx_nxv8i16_nxv8i16_i16:
1518 ; CHECK:       # %bb.0: # %entry
1519 ; CHECK-NEXT:    vsetvli zero, a1, e16, m2, ta, mu
1520 ; CHECK-NEXT:    vmul.vx v8, v10, a0, v0.t
1521 ; CHECK-NEXT:    ret
1522 entry:
1523   %a = call <vscale x 8 x i16> @llvm.riscv.vmul.mask.nxv8i16.i16(
1524     <vscale x 8 x i16> %0,
1525     <vscale x 8 x i16> %1,
1526     i16 %2,
1527     <vscale x 8 x i1> %3,
1528     iXLen %4, iXLen 1)
1530   ret <vscale x 8 x i16> %a
1533 declare <vscale x 16 x i16> @llvm.riscv.vmul.nxv16i16.i16(
1534   <vscale x 16 x i16>,
1535   <vscale x 16 x i16>,
1536   i16,
1537   iXLen);
1539 define <vscale x 16 x i16> @intrinsic_vmul_vx_nxv16i16_nxv16i16_i16(<vscale x 16 x i16> %0, i16 %1, iXLen %2) nounwind {
1540 ; CHECK-LABEL: intrinsic_vmul_vx_nxv16i16_nxv16i16_i16:
1541 ; CHECK:       # %bb.0: # %entry
1542 ; CHECK-NEXT:    vsetvli zero, a1, e16, m4, ta, ma
1543 ; CHECK-NEXT:    vmul.vx v8, v8, a0
1544 ; CHECK-NEXT:    ret
1545 entry:
1546   %a = call <vscale x 16 x i16> @llvm.riscv.vmul.nxv16i16.i16(
1547     <vscale x 16 x i16> undef,
1548     <vscale x 16 x i16> %0,
1549     i16 %1,
1550     iXLen %2)
1552   ret <vscale x 16 x i16> %a
1555 declare <vscale x 16 x i16> @llvm.riscv.vmul.mask.nxv16i16.i16(
1556   <vscale x 16 x i16>,
1557   <vscale x 16 x i16>,
1558   i16,
1559   <vscale x 16 x i1>,
1560   iXLen, iXLen);
1562 define <vscale x 16 x i16> @intrinsic_vmul_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 {
1563 ; CHECK-LABEL: intrinsic_vmul_mask_vx_nxv16i16_nxv16i16_i16:
1564 ; CHECK:       # %bb.0: # %entry
1565 ; CHECK-NEXT:    vsetvli zero, a1, e16, m4, ta, mu
1566 ; CHECK-NEXT:    vmul.vx v8, v12, a0, v0.t
1567 ; CHECK-NEXT:    ret
1568 entry:
1569   %a = call <vscale x 16 x i16> @llvm.riscv.vmul.mask.nxv16i16.i16(
1570     <vscale x 16 x i16> %0,
1571     <vscale x 16 x i16> %1,
1572     i16 %2,
1573     <vscale x 16 x i1> %3,
1574     iXLen %4, iXLen 1)
1576   ret <vscale x 16 x i16> %a
1579 declare <vscale x 32 x i16> @llvm.riscv.vmul.nxv32i16.i16(
1580   <vscale x 32 x i16>,
1581   <vscale x 32 x i16>,
1582   i16,
1583   iXLen);
1585 define <vscale x 32 x i16> @intrinsic_vmul_vx_nxv32i16_nxv32i16_i16(<vscale x 32 x i16> %0, i16 %1, iXLen %2) nounwind {
1586 ; CHECK-LABEL: intrinsic_vmul_vx_nxv32i16_nxv32i16_i16:
1587 ; CHECK:       # %bb.0: # %entry
1588 ; CHECK-NEXT:    vsetvli zero, a1, e16, m8, ta, ma
1589 ; CHECK-NEXT:    vmul.vx v8, v8, a0
1590 ; CHECK-NEXT:    ret
1591 entry:
1592   %a = call <vscale x 32 x i16> @llvm.riscv.vmul.nxv32i16.i16(
1593     <vscale x 32 x i16> undef,
1594     <vscale x 32 x i16> %0,
1595     i16 %1,
1596     iXLen %2)
1598   ret <vscale x 32 x i16> %a
1601 declare <vscale x 32 x i16> @llvm.riscv.vmul.mask.nxv32i16.i16(
1602   <vscale x 32 x i16>,
1603   <vscale x 32 x i16>,
1604   i16,
1605   <vscale x 32 x i1>,
1606   iXLen, iXLen);
1608 define <vscale x 32 x i16> @intrinsic_vmul_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 {
1609 ; CHECK-LABEL: intrinsic_vmul_mask_vx_nxv32i16_nxv32i16_i16:
1610 ; CHECK:       # %bb.0: # %entry
1611 ; CHECK-NEXT:    vsetvli zero, a1, e16, m8, ta, mu
1612 ; CHECK-NEXT:    vmul.vx v8, v16, a0, v0.t
1613 ; CHECK-NEXT:    ret
1614 entry:
1615   %a = call <vscale x 32 x i16> @llvm.riscv.vmul.mask.nxv32i16.i16(
1616     <vscale x 32 x i16> %0,
1617     <vscale x 32 x i16> %1,
1618     i16 %2,
1619     <vscale x 32 x i1> %3,
1620     iXLen %4, iXLen 1)
1622   ret <vscale x 32 x i16> %a
1625 declare <vscale x 1 x i32> @llvm.riscv.vmul.nxv1i32.i32(
1626   <vscale x 1 x i32>,
1627   <vscale x 1 x i32>,
1628   i32,
1629   iXLen);
1631 define <vscale x 1 x i32> @intrinsic_vmul_vx_nxv1i32_nxv1i32_i32(<vscale x 1 x i32> %0, i32 %1, iXLen %2) nounwind {
1632 ; CHECK-LABEL: intrinsic_vmul_vx_nxv1i32_nxv1i32_i32:
1633 ; CHECK:       # %bb.0: # %entry
1634 ; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, ma
1635 ; CHECK-NEXT:    vmul.vx v8, v8, a0
1636 ; CHECK-NEXT:    ret
1637 entry:
1638   %a = call <vscale x 1 x i32> @llvm.riscv.vmul.nxv1i32.i32(
1639     <vscale x 1 x i32> undef,
1640     <vscale x 1 x i32> %0,
1641     i32 %1,
1642     iXLen %2)
1644   ret <vscale x 1 x i32> %a
1647 declare <vscale x 1 x i32> @llvm.riscv.vmul.mask.nxv1i32.i32(
1648   <vscale x 1 x i32>,
1649   <vscale x 1 x i32>,
1650   i32,
1651   <vscale x 1 x i1>,
1652   iXLen, iXLen);
1654 define <vscale x 1 x i32> @intrinsic_vmul_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 {
1655 ; CHECK-LABEL: intrinsic_vmul_mask_vx_nxv1i32_nxv1i32_i32:
1656 ; CHECK:       # %bb.0: # %entry
1657 ; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, mu
1658 ; CHECK-NEXT:    vmul.vx v8, v9, a0, v0.t
1659 ; CHECK-NEXT:    ret
1660 entry:
1661   %a = call <vscale x 1 x i32> @llvm.riscv.vmul.mask.nxv1i32.i32(
1662     <vscale x 1 x i32> %0,
1663     <vscale x 1 x i32> %1,
1664     i32 %2,
1665     <vscale x 1 x i1> %3,
1666     iXLen %4, iXLen 1)
1668   ret <vscale x 1 x i32> %a
1671 declare <vscale x 2 x i32> @llvm.riscv.vmul.nxv2i32.i32(
1672   <vscale x 2 x i32>,
1673   <vscale x 2 x i32>,
1674   i32,
1675   iXLen);
1677 define <vscale x 2 x i32> @intrinsic_vmul_vx_nxv2i32_nxv2i32_i32(<vscale x 2 x i32> %0, i32 %1, iXLen %2) nounwind {
1678 ; CHECK-LABEL: intrinsic_vmul_vx_nxv2i32_nxv2i32_i32:
1679 ; CHECK:       # %bb.0: # %entry
1680 ; CHECK-NEXT:    vsetvli zero, a1, e32, m1, ta, ma
1681 ; CHECK-NEXT:    vmul.vx v8, v8, a0
1682 ; CHECK-NEXT:    ret
1683 entry:
1684   %a = call <vscale x 2 x i32> @llvm.riscv.vmul.nxv2i32.i32(
1685     <vscale x 2 x i32> undef,
1686     <vscale x 2 x i32> %0,
1687     i32 %1,
1688     iXLen %2)
1690   ret <vscale x 2 x i32> %a
1693 declare <vscale x 2 x i32> @llvm.riscv.vmul.mask.nxv2i32.i32(
1694   <vscale x 2 x i32>,
1695   <vscale x 2 x i32>,
1696   i32,
1697   <vscale x 2 x i1>,
1698   iXLen, iXLen);
1700 define <vscale x 2 x i32> @intrinsic_vmul_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 {
1701 ; CHECK-LABEL: intrinsic_vmul_mask_vx_nxv2i32_nxv2i32_i32:
1702 ; CHECK:       # %bb.0: # %entry
1703 ; CHECK-NEXT:    vsetvli zero, a1, e32, m1, ta, mu
1704 ; CHECK-NEXT:    vmul.vx v8, v9, a0, v0.t
1705 ; CHECK-NEXT:    ret
1706 entry:
1707   %a = call <vscale x 2 x i32> @llvm.riscv.vmul.mask.nxv2i32.i32(
1708     <vscale x 2 x i32> %0,
1709     <vscale x 2 x i32> %1,
1710     i32 %2,
1711     <vscale x 2 x i1> %3,
1712     iXLen %4, iXLen 1)
1714   ret <vscale x 2 x i32> %a
1717 declare <vscale x 4 x i32> @llvm.riscv.vmul.nxv4i32.i32(
1718   <vscale x 4 x i32>,
1719   <vscale x 4 x i32>,
1720   i32,
1721   iXLen);
1723 define <vscale x 4 x i32> @intrinsic_vmul_vx_nxv4i32_nxv4i32_i32(<vscale x 4 x i32> %0, i32 %1, iXLen %2) nounwind {
1724 ; CHECK-LABEL: intrinsic_vmul_vx_nxv4i32_nxv4i32_i32:
1725 ; CHECK:       # %bb.0: # %entry
1726 ; CHECK-NEXT:    vsetvli zero, a1, e32, m2, ta, ma
1727 ; CHECK-NEXT:    vmul.vx v8, v8, a0
1728 ; CHECK-NEXT:    ret
1729 entry:
1730   %a = call <vscale x 4 x i32> @llvm.riscv.vmul.nxv4i32.i32(
1731     <vscale x 4 x i32> undef,
1732     <vscale x 4 x i32> %0,
1733     i32 %1,
1734     iXLen %2)
1736   ret <vscale x 4 x i32> %a
1739 declare <vscale x 4 x i32> @llvm.riscv.vmul.mask.nxv4i32.i32(
1740   <vscale x 4 x i32>,
1741   <vscale x 4 x i32>,
1742   i32,
1743   <vscale x 4 x i1>,
1744   iXLen, iXLen);
1746 define <vscale x 4 x i32> @intrinsic_vmul_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 {
1747 ; CHECK-LABEL: intrinsic_vmul_mask_vx_nxv4i32_nxv4i32_i32:
1748 ; CHECK:       # %bb.0: # %entry
1749 ; CHECK-NEXT:    vsetvli zero, a1, e32, m2, ta, mu
1750 ; CHECK-NEXT:    vmul.vx v8, v10, a0, v0.t
1751 ; CHECK-NEXT:    ret
1752 entry:
1753   %a = call <vscale x 4 x i32> @llvm.riscv.vmul.mask.nxv4i32.i32(
1754     <vscale x 4 x i32> %0,
1755     <vscale x 4 x i32> %1,
1756     i32 %2,
1757     <vscale x 4 x i1> %3,
1758     iXLen %4, iXLen 1)
1760   ret <vscale x 4 x i32> %a
1763 declare <vscale x 8 x i32> @llvm.riscv.vmul.nxv8i32.i32(
1764   <vscale x 8 x i32>,
1765   <vscale x 8 x i32>,
1766   i32,
1767   iXLen);
1769 define <vscale x 8 x i32> @intrinsic_vmul_vx_nxv8i32_nxv8i32_i32(<vscale x 8 x i32> %0, i32 %1, iXLen %2) nounwind {
1770 ; CHECK-LABEL: intrinsic_vmul_vx_nxv8i32_nxv8i32_i32:
1771 ; CHECK:       # %bb.0: # %entry
1772 ; CHECK-NEXT:    vsetvli zero, a1, e32, m4, ta, ma
1773 ; CHECK-NEXT:    vmul.vx v8, v8, a0
1774 ; CHECK-NEXT:    ret
1775 entry:
1776   %a = call <vscale x 8 x i32> @llvm.riscv.vmul.nxv8i32.i32(
1777     <vscale x 8 x i32> undef,
1778     <vscale x 8 x i32> %0,
1779     i32 %1,
1780     iXLen %2)
1782   ret <vscale x 8 x i32> %a
1785 declare <vscale x 8 x i32> @llvm.riscv.vmul.mask.nxv8i32.i32(
1786   <vscale x 8 x i32>,
1787   <vscale x 8 x i32>,
1788   i32,
1789   <vscale x 8 x i1>,
1790   iXLen, iXLen);
1792 define <vscale x 8 x i32> @intrinsic_vmul_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 {
1793 ; CHECK-LABEL: intrinsic_vmul_mask_vx_nxv8i32_nxv8i32_i32:
1794 ; CHECK:       # %bb.0: # %entry
1795 ; CHECK-NEXT:    vsetvli zero, a1, e32, m4, ta, mu
1796 ; CHECK-NEXT:    vmul.vx v8, v12, a0, v0.t
1797 ; CHECK-NEXT:    ret
1798 entry:
1799   %a = call <vscale x 8 x i32> @llvm.riscv.vmul.mask.nxv8i32.i32(
1800     <vscale x 8 x i32> %0,
1801     <vscale x 8 x i32> %1,
1802     i32 %2,
1803     <vscale x 8 x i1> %3,
1804     iXLen %4, iXLen 1)
1806   ret <vscale x 8 x i32> %a
1809 declare <vscale x 16 x i32> @llvm.riscv.vmul.nxv16i32.i32(
1810   <vscale x 16 x i32>,
1811   <vscale x 16 x i32>,
1812   i32,
1813   iXLen);
1815 define <vscale x 16 x i32> @intrinsic_vmul_vx_nxv16i32_nxv16i32_i32(<vscale x 16 x i32> %0, i32 %1, iXLen %2) nounwind {
1816 ; CHECK-LABEL: intrinsic_vmul_vx_nxv16i32_nxv16i32_i32:
1817 ; CHECK:       # %bb.0: # %entry
1818 ; CHECK-NEXT:    vsetvli zero, a1, e32, m8, ta, ma
1819 ; CHECK-NEXT:    vmul.vx v8, v8, a0
1820 ; CHECK-NEXT:    ret
1821 entry:
1822   %a = call <vscale x 16 x i32> @llvm.riscv.vmul.nxv16i32.i32(
1823     <vscale x 16 x i32> undef,
1824     <vscale x 16 x i32> %0,
1825     i32 %1,
1826     iXLen %2)
1828   ret <vscale x 16 x i32> %a
1831 declare <vscale x 16 x i32> @llvm.riscv.vmul.mask.nxv16i32.i32(
1832   <vscale x 16 x i32>,
1833   <vscale x 16 x i32>,
1834   i32,
1835   <vscale x 16 x i1>,
1836   iXLen, iXLen);
1838 define <vscale x 16 x i32> @intrinsic_vmul_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 {
1839 ; CHECK-LABEL: intrinsic_vmul_mask_vx_nxv16i32_nxv16i32_i32:
1840 ; CHECK:       # %bb.0: # %entry
1841 ; CHECK-NEXT:    vsetvli zero, a1, e32, m8, ta, mu
1842 ; CHECK-NEXT:    vmul.vx v8, v16, a0, v0.t
1843 ; CHECK-NEXT:    ret
1844 entry:
1845   %a = call <vscale x 16 x i32> @llvm.riscv.vmul.mask.nxv16i32.i32(
1846     <vscale x 16 x i32> %0,
1847     <vscale x 16 x i32> %1,
1848     i32 %2,
1849     <vscale x 16 x i1> %3,
1850     iXLen %4, iXLen 1)
1852   ret <vscale x 16 x i32> %a
1855 declare <vscale x 1 x i64> @llvm.riscv.vmul.nxv1i64.i64(
1856   <vscale x 1 x i64>,
1857   <vscale x 1 x i64>,
1858   i64,
1859   iXLen);
1861 define <vscale x 1 x i64> @intrinsic_vmul_vx_nxv1i64_nxv1i64_i64(<vscale x 1 x i64> %0, i64 %1, iXLen %2) nounwind {
1862 ; RV32-LABEL: intrinsic_vmul_vx_nxv1i64_nxv1i64_i64:
1863 ; RV32:       # %bb.0: # %entry
1864 ; RV32-NEXT:    addi sp, sp, -16
1865 ; RV32-NEXT:    sw a1, 12(sp)
1866 ; RV32-NEXT:    sw a0, 8(sp)
1867 ; RV32-NEXT:    addi a0, sp, 8
1868 ; RV32-NEXT:    vsetvli zero, a2, e64, m1, ta, ma
1869 ; RV32-NEXT:    vlse64.v v9, (a0), zero
1870 ; RV32-NEXT:    vmul.vv v8, v8, v9
1871 ; RV32-NEXT:    addi sp, sp, 16
1872 ; RV32-NEXT:    ret
1874 ; RV64-LABEL: intrinsic_vmul_vx_nxv1i64_nxv1i64_i64:
1875 ; RV64:       # %bb.0: # %entry
1876 ; RV64-NEXT:    vsetvli zero, a1, e64, m1, ta, ma
1877 ; RV64-NEXT:    vmul.vx v8, v8, a0
1878 ; RV64-NEXT:    ret
1879 entry:
1880   %a = call <vscale x 1 x i64> @llvm.riscv.vmul.nxv1i64.i64(
1881     <vscale x 1 x i64> undef,
1882     <vscale x 1 x i64> %0,
1883     i64 %1,
1884     iXLen %2)
1886   ret <vscale x 1 x i64> %a
1889 declare <vscale x 1 x i64> @llvm.riscv.vmul.mask.nxv1i64.i64(
1890   <vscale x 1 x i64>,
1891   <vscale x 1 x i64>,
1892   i64,
1893   <vscale x 1 x i1>,
1894   iXLen, iXLen);
1896 define <vscale x 1 x i64> @intrinsic_vmul_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 {
1897 ; RV32-LABEL: intrinsic_vmul_mask_vx_nxv1i64_nxv1i64_i64:
1898 ; RV32:       # %bb.0: # %entry
1899 ; RV32-NEXT:    addi sp, sp, -16
1900 ; RV32-NEXT:    sw a1, 12(sp)
1901 ; RV32-NEXT:    sw a0, 8(sp)
1902 ; RV32-NEXT:    addi a0, sp, 8
1903 ; RV32-NEXT:    vsetvli zero, a2, e64, m1, ta, mu
1904 ; RV32-NEXT:    vlse64.v v10, (a0), zero
1905 ; RV32-NEXT:    vmul.vv v8, v9, v10, v0.t
1906 ; RV32-NEXT:    addi sp, sp, 16
1907 ; RV32-NEXT:    ret
1909 ; RV64-LABEL: intrinsic_vmul_mask_vx_nxv1i64_nxv1i64_i64:
1910 ; RV64:       # %bb.0: # %entry
1911 ; RV64-NEXT:    vsetvli zero, a1, e64, m1, ta, mu
1912 ; RV64-NEXT:    vmul.vx v8, v9, a0, v0.t
1913 ; RV64-NEXT:    ret
1914 entry:
1915   %a = call <vscale x 1 x i64> @llvm.riscv.vmul.mask.nxv1i64.i64(
1916     <vscale x 1 x i64> %0,
1917     <vscale x 1 x i64> %1,
1918     i64 %2,
1919     <vscale x 1 x i1> %3,
1920     iXLen %4, iXLen 1)
1922   ret <vscale x 1 x i64> %a
1925 declare <vscale x 2 x i64> @llvm.riscv.vmul.nxv2i64.i64(
1926   <vscale x 2 x i64>,
1927   <vscale x 2 x i64>,
1928   i64,
1929   iXLen);
1931 define <vscale x 2 x i64> @intrinsic_vmul_vx_nxv2i64_nxv2i64_i64(<vscale x 2 x i64> %0, i64 %1, iXLen %2) nounwind {
1932 ; RV32-LABEL: intrinsic_vmul_vx_nxv2i64_nxv2i64_i64:
1933 ; RV32:       # %bb.0: # %entry
1934 ; RV32-NEXT:    addi sp, sp, -16
1935 ; RV32-NEXT:    sw a1, 12(sp)
1936 ; RV32-NEXT:    sw a0, 8(sp)
1937 ; RV32-NEXT:    addi a0, sp, 8
1938 ; RV32-NEXT:    vsetvli zero, a2, e64, m2, ta, ma
1939 ; RV32-NEXT:    vlse64.v v10, (a0), zero
1940 ; RV32-NEXT:    vmul.vv v8, v8, v10
1941 ; RV32-NEXT:    addi sp, sp, 16
1942 ; RV32-NEXT:    ret
1944 ; RV64-LABEL: intrinsic_vmul_vx_nxv2i64_nxv2i64_i64:
1945 ; RV64:       # %bb.0: # %entry
1946 ; RV64-NEXT:    vsetvli zero, a1, e64, m2, ta, ma
1947 ; RV64-NEXT:    vmul.vx v8, v8, a0
1948 ; RV64-NEXT:    ret
1949 entry:
1950   %a = call <vscale x 2 x i64> @llvm.riscv.vmul.nxv2i64.i64(
1951     <vscale x 2 x i64> undef,
1952     <vscale x 2 x i64> %0,
1953     i64 %1,
1954     iXLen %2)
1956   ret <vscale x 2 x i64> %a
1959 declare <vscale x 2 x i64> @llvm.riscv.vmul.mask.nxv2i64.i64(
1960   <vscale x 2 x i64>,
1961   <vscale x 2 x i64>,
1962   i64,
1963   <vscale x 2 x i1>,
1964   iXLen, iXLen);
1966 define <vscale x 2 x i64> @intrinsic_vmul_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 {
1967 ; RV32-LABEL: intrinsic_vmul_mask_vx_nxv2i64_nxv2i64_i64:
1968 ; RV32:       # %bb.0: # %entry
1969 ; RV32-NEXT:    addi sp, sp, -16
1970 ; RV32-NEXT:    sw a1, 12(sp)
1971 ; RV32-NEXT:    sw a0, 8(sp)
1972 ; RV32-NEXT:    addi a0, sp, 8
1973 ; RV32-NEXT:    vsetvli zero, a2, e64, m2, ta, mu
1974 ; RV32-NEXT:    vlse64.v v12, (a0), zero
1975 ; RV32-NEXT:    vmul.vv v8, v10, v12, v0.t
1976 ; RV32-NEXT:    addi sp, sp, 16
1977 ; RV32-NEXT:    ret
1979 ; RV64-LABEL: intrinsic_vmul_mask_vx_nxv2i64_nxv2i64_i64:
1980 ; RV64:       # %bb.0: # %entry
1981 ; RV64-NEXT:    vsetvli zero, a1, e64, m2, ta, mu
1982 ; RV64-NEXT:    vmul.vx v8, v10, a0, v0.t
1983 ; RV64-NEXT:    ret
1984 entry:
1985   %a = call <vscale x 2 x i64> @llvm.riscv.vmul.mask.nxv2i64.i64(
1986     <vscale x 2 x i64> %0,
1987     <vscale x 2 x i64> %1,
1988     i64 %2,
1989     <vscale x 2 x i1> %3,
1990     iXLen %4, iXLen 1)
1992   ret <vscale x 2 x i64> %a
1995 declare <vscale x 4 x i64> @llvm.riscv.vmul.nxv4i64.i64(
1996   <vscale x 4 x i64>,
1997   <vscale x 4 x i64>,
1998   i64,
1999   iXLen);
2001 define <vscale x 4 x i64> @intrinsic_vmul_vx_nxv4i64_nxv4i64_i64(<vscale x 4 x i64> %0, i64 %1, iXLen %2) nounwind {
2002 ; RV32-LABEL: intrinsic_vmul_vx_nxv4i64_nxv4i64_i64:
2003 ; RV32:       # %bb.0: # %entry
2004 ; RV32-NEXT:    addi sp, sp, -16
2005 ; RV32-NEXT:    sw a1, 12(sp)
2006 ; RV32-NEXT:    sw a0, 8(sp)
2007 ; RV32-NEXT:    addi a0, sp, 8
2008 ; RV32-NEXT:    vsetvli zero, a2, e64, m4, ta, ma
2009 ; RV32-NEXT:    vlse64.v v12, (a0), zero
2010 ; RV32-NEXT:    vmul.vv v8, v8, v12
2011 ; RV32-NEXT:    addi sp, sp, 16
2012 ; RV32-NEXT:    ret
2014 ; RV64-LABEL: intrinsic_vmul_vx_nxv4i64_nxv4i64_i64:
2015 ; RV64:       # %bb.0: # %entry
2016 ; RV64-NEXT:    vsetvli zero, a1, e64, m4, ta, ma
2017 ; RV64-NEXT:    vmul.vx v8, v8, a0
2018 ; RV64-NEXT:    ret
2019 entry:
2020   %a = call <vscale x 4 x i64> @llvm.riscv.vmul.nxv4i64.i64(
2021     <vscale x 4 x i64> undef,
2022     <vscale x 4 x i64> %0,
2023     i64 %1,
2024     iXLen %2)
2026   ret <vscale x 4 x i64> %a
2029 declare <vscale x 4 x i64> @llvm.riscv.vmul.mask.nxv4i64.i64(
2030   <vscale x 4 x i64>,
2031   <vscale x 4 x i64>,
2032   i64,
2033   <vscale x 4 x i1>,
2034   iXLen, iXLen);
2036 define <vscale x 4 x i64> @intrinsic_vmul_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 {
2037 ; RV32-LABEL: intrinsic_vmul_mask_vx_nxv4i64_nxv4i64_i64:
2038 ; RV32:       # %bb.0: # %entry
2039 ; RV32-NEXT:    addi sp, sp, -16
2040 ; RV32-NEXT:    sw a1, 12(sp)
2041 ; RV32-NEXT:    sw a0, 8(sp)
2042 ; RV32-NEXT:    addi a0, sp, 8
2043 ; RV32-NEXT:    vsetvli zero, a2, e64, m4, ta, mu
2044 ; RV32-NEXT:    vlse64.v v16, (a0), zero
2045 ; RV32-NEXT:    vmul.vv v8, v12, v16, v0.t
2046 ; RV32-NEXT:    addi sp, sp, 16
2047 ; RV32-NEXT:    ret
2049 ; RV64-LABEL: intrinsic_vmul_mask_vx_nxv4i64_nxv4i64_i64:
2050 ; RV64:       # %bb.0: # %entry
2051 ; RV64-NEXT:    vsetvli zero, a1, e64, m4, ta, mu
2052 ; RV64-NEXT:    vmul.vx v8, v12, a0, v0.t
2053 ; RV64-NEXT:    ret
2054 entry:
2055   %a = call <vscale x 4 x i64> @llvm.riscv.vmul.mask.nxv4i64.i64(
2056     <vscale x 4 x i64> %0,
2057     <vscale x 4 x i64> %1,
2058     i64 %2,
2059     <vscale x 4 x i1> %3,
2060     iXLen %4, iXLen 1)
2062   ret <vscale x 4 x i64> %a
2065 declare <vscale x 8 x i64> @llvm.riscv.vmul.nxv8i64.i64(
2066   <vscale x 8 x i64>,
2067   <vscale x 8 x i64>,
2068   i64,
2069   iXLen);
2071 define <vscale x 8 x i64> @intrinsic_vmul_vx_nxv8i64_nxv8i64_i64(<vscale x 8 x i64> %0, i64 %1, iXLen %2) nounwind {
2072 ; RV32-LABEL: intrinsic_vmul_vx_nxv8i64_nxv8i64_i64:
2073 ; RV32:       # %bb.0: # %entry
2074 ; RV32-NEXT:    addi sp, sp, -16
2075 ; RV32-NEXT:    sw a1, 12(sp)
2076 ; RV32-NEXT:    sw a0, 8(sp)
2077 ; RV32-NEXT:    addi a0, sp, 8
2078 ; RV32-NEXT:    vsetvli zero, a2, e64, m8, ta, ma
2079 ; RV32-NEXT:    vlse64.v v16, (a0), zero
2080 ; RV32-NEXT:    vmul.vv v8, v8, v16
2081 ; RV32-NEXT:    addi sp, sp, 16
2082 ; RV32-NEXT:    ret
2084 ; RV64-LABEL: intrinsic_vmul_vx_nxv8i64_nxv8i64_i64:
2085 ; RV64:       # %bb.0: # %entry
2086 ; RV64-NEXT:    vsetvli zero, a1, e64, m8, ta, ma
2087 ; RV64-NEXT:    vmul.vx v8, v8, a0
2088 ; RV64-NEXT:    ret
2089 entry:
2090   %a = call <vscale x 8 x i64> @llvm.riscv.vmul.nxv8i64.i64(
2091     <vscale x 8 x i64> undef,
2092     <vscale x 8 x i64> %0,
2093     i64 %1,
2094     iXLen %2)
2096   ret <vscale x 8 x i64> %a
2099 declare <vscale x 8 x i64> @llvm.riscv.vmul.mask.nxv8i64.i64(
2100   <vscale x 8 x i64>,
2101   <vscale x 8 x i64>,
2102   i64,
2103   <vscale x 8 x i1>,
2104   iXLen, iXLen);
2106 define <vscale x 8 x i64> @intrinsic_vmul_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 {
2107 ; RV32-LABEL: intrinsic_vmul_mask_vx_nxv8i64_nxv8i64_i64:
2108 ; RV32:       # %bb.0: # %entry
2109 ; RV32-NEXT:    addi sp, sp, -16
2110 ; RV32-NEXT:    sw a1, 12(sp)
2111 ; RV32-NEXT:    sw a0, 8(sp)
2112 ; RV32-NEXT:    addi a0, sp, 8
2113 ; RV32-NEXT:    vsetvli zero, a2, e64, m8, ta, mu
2114 ; RV32-NEXT:    vlse64.v v24, (a0), zero
2115 ; RV32-NEXT:    vmul.vv v8, v16, v24, v0.t
2116 ; RV32-NEXT:    addi sp, sp, 16
2117 ; RV32-NEXT:    ret
2119 ; RV64-LABEL: intrinsic_vmul_mask_vx_nxv8i64_nxv8i64_i64:
2120 ; RV64:       # %bb.0: # %entry
2121 ; RV64-NEXT:    vsetvli zero, a1, e64, m8, ta, mu
2122 ; RV64-NEXT:    vmul.vx v8, v16, a0, v0.t
2123 ; RV64-NEXT:    ret
2124 entry:
2125   %a = call <vscale x 8 x i64> @llvm.riscv.vmul.mask.nxv8i64.i64(
2126     <vscale x 8 x i64> %0,
2127     <vscale x 8 x i64> %1,
2128     i64 %2,
2129     <vscale x 8 x i1> %3,
2130     iXLen %4, iXLen 1)
2132   ret <vscale x 8 x i64> %a