Bump version to 19.1.0-rc3
[llvm-project.git] / llvm / test / CodeGen / RISCV / rvv / vwmaccus.ll
blob18c69b9d92b1b32c5f0ab55704259cece66bacc1
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,+d \
3 ; RUN:   -verify-machineinstrs | FileCheck %s
4 ; RUN: sed 's/iXLen/i64/g' %s | llc -mtriple=riscv64 -mattr=+v,+d \
5 ; RUN:   -verify-machineinstrs | FileCheck %s
7 declare <vscale x 1 x i16> @llvm.riscv.vwmaccus.nxv1i16.i8(
8   <vscale x 1 x i16>,
9   i8,
10   <vscale x 1 x i8>,
11   iXLen,
12   iXLen);
14 define <vscale x 1 x i16>  @intrinsic_vwmaccus_vx_nxv1i16_i8_nxv1i8(<vscale x 1 x i16> %0, i8 %1, <vscale x 1 x i8> %2, iXLen %3) nounwind {
15 ; CHECK-LABEL: intrinsic_vwmaccus_vx_nxv1i16_i8_nxv1i8:
16 ; CHECK:       # %bb.0: # %entry
17 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf8, tu, ma
18 ; CHECK-NEXT:    vwmaccus.vx v8, a0, v9
19 ; CHECK-NEXT:    ret
20 entry:
21   %a = call <vscale x 1 x i16> @llvm.riscv.vwmaccus.nxv1i16.i8(
22     <vscale x 1 x i16> %0,
23     i8 %1,
24     <vscale x 1 x i8> %2,
25     iXLen %3, iXLen 0)
27   ret <vscale x 1 x i16> %a
30 declare <vscale x 1 x i16> @llvm.riscv.vwmaccus.mask.nxv1i16.i8(
31   <vscale x 1 x i16>,
32   i8,
33   <vscale x 1 x i8>,
34   <vscale x 1 x i1>,
35   iXLen, iXLen);
37 define <vscale x 1 x i16> @intrinsic_vwmaccus_mask_vx_nxv1i16_i8_nxv1i8(<vscale x 1 x i16> %0, i8 %1, <vscale x 1 x i8> %2, <vscale x 1 x i1> %3, iXLen %4) nounwind {
38 ; CHECK-LABEL: intrinsic_vwmaccus_mask_vx_nxv1i16_i8_nxv1i8:
39 ; CHECK:       # %bb.0: # %entry
40 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf8, tu, mu
41 ; CHECK-NEXT:    vwmaccus.vx v8, a0, v9, v0.t
42 ; CHECK-NEXT:    ret
43 entry:
44   %a = call <vscale x 1 x i16> @llvm.riscv.vwmaccus.mask.nxv1i16.i8(
45     <vscale x 1 x i16> %0,
46     i8 %1,
47     <vscale x 1 x i8> %2,
48     <vscale x 1 x i1> %3,
49     iXLen %4, iXLen 0)
51   ret <vscale x 1 x i16> %a
54 declare <vscale x 2 x i16> @llvm.riscv.vwmaccus.nxv2i16.i8(
55   <vscale x 2 x i16>,
56   i8,
57   <vscale x 2 x i8>,
58   iXLen,
59   iXLen);
61 define <vscale x 2 x i16>  @intrinsic_vwmaccus_vx_nxv2i16_i8_nxv2i8(<vscale x 2 x i16> %0, i8 %1, <vscale x 2 x i8> %2, iXLen %3) nounwind {
62 ; CHECK-LABEL: intrinsic_vwmaccus_vx_nxv2i16_i8_nxv2i8:
63 ; CHECK:       # %bb.0: # %entry
64 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf4, tu, ma
65 ; CHECK-NEXT:    vwmaccus.vx v8, a0, v9
66 ; CHECK-NEXT:    ret
67 entry:
68   %a = call <vscale x 2 x i16> @llvm.riscv.vwmaccus.nxv2i16.i8(
69     <vscale x 2 x i16> %0,
70     i8 %1,
71     <vscale x 2 x i8> %2,
72     iXLen %3, iXLen 0)
74   ret <vscale x 2 x i16> %a
77 declare <vscale x 2 x i16> @llvm.riscv.vwmaccus.mask.nxv2i16.i8(
78   <vscale x 2 x i16>,
79   i8,
80   <vscale x 2 x i8>,
81   <vscale x 2 x i1>,
82   iXLen, iXLen);
84 define <vscale x 2 x i16> @intrinsic_vwmaccus_mask_vx_nxv2i16_i8_nxv2i8(<vscale x 2 x i16> %0, i8 %1, <vscale x 2 x i8> %2, <vscale x 2 x i1> %3, iXLen %4) nounwind {
85 ; CHECK-LABEL: intrinsic_vwmaccus_mask_vx_nxv2i16_i8_nxv2i8:
86 ; CHECK:       # %bb.0: # %entry
87 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf4, tu, mu
88 ; CHECK-NEXT:    vwmaccus.vx v8, a0, v9, v0.t
89 ; CHECK-NEXT:    ret
90 entry:
91   %a = call <vscale x 2 x i16> @llvm.riscv.vwmaccus.mask.nxv2i16.i8(
92     <vscale x 2 x i16> %0,
93     i8 %1,
94     <vscale x 2 x i8> %2,
95     <vscale x 2 x i1> %3,
96     iXLen %4, iXLen 0)
98   ret <vscale x 2 x i16> %a
101 declare <vscale x 4 x i16> @llvm.riscv.vwmaccus.nxv4i16.i8(
102   <vscale x 4 x i16>,
103   i8,
104   <vscale x 4 x i8>,
105   iXLen,
106   iXLen);
108 define <vscale x 4 x i16>  @intrinsic_vwmaccus_vx_nxv4i16_i8_nxv4i8(<vscale x 4 x i16> %0, i8 %1, <vscale x 4 x i8> %2, iXLen %3) nounwind {
109 ; CHECK-LABEL: intrinsic_vwmaccus_vx_nxv4i16_i8_nxv4i8:
110 ; CHECK:       # %bb.0: # %entry
111 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf2, tu, ma
112 ; CHECK-NEXT:    vwmaccus.vx v8, a0, v9
113 ; CHECK-NEXT:    ret
114 entry:
115   %a = call <vscale x 4 x i16> @llvm.riscv.vwmaccus.nxv4i16.i8(
116     <vscale x 4 x i16> %0,
117     i8 %1,
118     <vscale x 4 x i8> %2,
119     iXLen %3, iXLen 0)
121   ret <vscale x 4 x i16> %a
124 declare <vscale x 4 x i16> @llvm.riscv.vwmaccus.mask.nxv4i16.i8(
125   <vscale x 4 x i16>,
126   i8,
127   <vscale x 4 x i8>,
128   <vscale x 4 x i1>,
129   iXLen, iXLen);
131 define <vscale x 4 x i16> @intrinsic_vwmaccus_mask_vx_nxv4i16_i8_nxv4i8(<vscale x 4 x i16> %0, i8 %1, <vscale x 4 x i8> %2, <vscale x 4 x i1> %3, iXLen %4) nounwind {
132 ; CHECK-LABEL: intrinsic_vwmaccus_mask_vx_nxv4i16_i8_nxv4i8:
133 ; CHECK:       # %bb.0: # %entry
134 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf2, tu, mu
135 ; CHECK-NEXT:    vwmaccus.vx v8, a0, v9, v0.t
136 ; CHECK-NEXT:    ret
137 entry:
138   %a = call <vscale x 4 x i16> @llvm.riscv.vwmaccus.mask.nxv4i16.i8(
139     <vscale x 4 x i16> %0,
140     i8 %1,
141     <vscale x 4 x i8> %2,
142     <vscale x 4 x i1> %3,
143     iXLen %4, iXLen 0)
145   ret <vscale x 4 x i16> %a
148 declare <vscale x 8 x i16> @llvm.riscv.vwmaccus.nxv8i16.i8(
149   <vscale x 8 x i16>,
150   i8,
151   <vscale x 8 x i8>,
152   iXLen,
153   iXLen);
155 define <vscale x 8 x i16>  @intrinsic_vwmaccus_vx_nxv8i16_i8_nxv8i8(<vscale x 8 x i16> %0, i8 %1, <vscale x 8 x i8> %2, iXLen %3) nounwind {
156 ; CHECK-LABEL: intrinsic_vwmaccus_vx_nxv8i16_i8_nxv8i8:
157 ; CHECK:       # %bb.0: # %entry
158 ; CHECK-NEXT:    vsetvli zero, a1, e8, m1, tu, ma
159 ; CHECK-NEXT:    vwmaccus.vx v8, a0, v10
160 ; CHECK-NEXT:    ret
161 entry:
162   %a = call <vscale x 8 x i16> @llvm.riscv.vwmaccus.nxv8i16.i8(
163     <vscale x 8 x i16> %0,
164     i8 %1,
165     <vscale x 8 x i8> %2,
166     iXLen %3, iXLen 0)
168   ret <vscale x 8 x i16> %a
171 declare <vscale x 8 x i16> @llvm.riscv.vwmaccus.mask.nxv8i16.i8(
172   <vscale x 8 x i16>,
173   i8,
174   <vscale x 8 x i8>,
175   <vscale x 8 x i1>,
176   iXLen, iXLen);
178 define <vscale x 8 x i16> @intrinsic_vwmaccus_mask_vx_nxv8i16_i8_nxv8i8(<vscale x 8 x i16> %0, i8 %1, <vscale x 8 x i8> %2, <vscale x 8 x i1> %3, iXLen %4) nounwind {
179 ; CHECK-LABEL: intrinsic_vwmaccus_mask_vx_nxv8i16_i8_nxv8i8:
180 ; CHECK:       # %bb.0: # %entry
181 ; CHECK-NEXT:    vsetvli zero, a1, e8, m1, tu, mu
182 ; CHECK-NEXT:    vwmaccus.vx v8, a0, v10, v0.t
183 ; CHECK-NEXT:    ret
184 entry:
185   %a = call <vscale x 8 x i16> @llvm.riscv.vwmaccus.mask.nxv8i16.i8(
186     <vscale x 8 x i16> %0,
187     i8 %1,
188     <vscale x 8 x i8> %2,
189     <vscale x 8 x i1> %3,
190     iXLen %4, iXLen 0)
192   ret <vscale x 8 x i16> %a
195 declare <vscale x 16 x i16> @llvm.riscv.vwmaccus.nxv16i16.i8(
196   <vscale x 16 x i16>,
197   i8,
198   <vscale x 16 x i8>,
199   iXLen,
200   iXLen);
202 define <vscale x 16 x i16>  @intrinsic_vwmaccus_vx_nxv16i16_i8_nxv16i8(<vscale x 16 x i16> %0, i8 %1, <vscale x 16 x i8> %2, iXLen %3) nounwind {
203 ; CHECK-LABEL: intrinsic_vwmaccus_vx_nxv16i16_i8_nxv16i8:
204 ; CHECK:       # %bb.0: # %entry
205 ; CHECK-NEXT:    vsetvli zero, a1, e8, m2, tu, ma
206 ; CHECK-NEXT:    vwmaccus.vx v8, a0, v12
207 ; CHECK-NEXT:    ret
208 entry:
209   %a = call <vscale x 16 x i16> @llvm.riscv.vwmaccus.nxv16i16.i8(
210     <vscale x 16 x i16> %0,
211     i8 %1,
212     <vscale x 16 x i8> %2,
213     iXLen %3, iXLen 0)
215   ret <vscale x 16 x i16> %a
218 declare <vscale x 16 x i16> @llvm.riscv.vwmaccus.mask.nxv16i16.i8(
219   <vscale x 16 x i16>,
220   i8,
221   <vscale x 16 x i8>,
222   <vscale x 16 x i1>,
223   iXLen, iXLen);
225 define <vscale x 16 x i16> @intrinsic_vwmaccus_mask_vx_nxv16i16_i8_nxv16i8(<vscale x 16 x i16> %0, i8 %1, <vscale x 16 x i8> %2, <vscale x 16 x i1> %3, iXLen %4) nounwind {
226 ; CHECK-LABEL: intrinsic_vwmaccus_mask_vx_nxv16i16_i8_nxv16i8:
227 ; CHECK:       # %bb.0: # %entry
228 ; CHECK-NEXT:    vsetvli zero, a1, e8, m2, tu, mu
229 ; CHECK-NEXT:    vwmaccus.vx v8, a0, v12, v0.t
230 ; CHECK-NEXT:    ret
231 entry:
232   %a = call <vscale x 16 x i16> @llvm.riscv.vwmaccus.mask.nxv16i16.i8(
233     <vscale x 16 x i16> %0,
234     i8 %1,
235     <vscale x 16 x i8> %2,
236     <vscale x 16 x i1> %3,
237     iXLen %4, iXLen 0)
239   ret <vscale x 16 x i16> %a
242 declare <vscale x 32 x i16> @llvm.riscv.vwmaccus.nxv32i16.i8(
243   <vscale x 32 x i16>,
244   i8,
245   <vscale x 32 x i8>,
246   iXLen,
247   iXLen);
249 define <vscale x 32 x i16>  @intrinsic_vwmaccus_vx_nxv32i16_i8_nxv32i8(<vscale x 32 x i16> %0, i8 %1, <vscale x 32 x i8> %2, iXLen %3) nounwind {
250 ; CHECK-LABEL: intrinsic_vwmaccus_vx_nxv32i16_i8_nxv32i8:
251 ; CHECK:       # %bb.0: # %entry
252 ; CHECK-NEXT:    vsetvli zero, a1, e8, m4, tu, ma
253 ; CHECK-NEXT:    vwmaccus.vx v8, a0, v16
254 ; CHECK-NEXT:    ret
255 entry:
256   %a = call <vscale x 32 x i16> @llvm.riscv.vwmaccus.nxv32i16.i8(
257     <vscale x 32 x i16> %0,
258     i8 %1,
259     <vscale x 32 x i8> %2,
260     iXLen %3, iXLen 0)
262   ret <vscale x 32 x i16> %a
265 declare <vscale x 32 x i16> @llvm.riscv.vwmaccus.mask.nxv32i16.i8(
266   <vscale x 32 x i16>,
267   i8,
268   <vscale x 32 x i8>,
269   <vscale x 32 x i1>,
270   iXLen, iXLen);
272 define <vscale x 32 x i16> @intrinsic_vwmaccus_mask_vx_nxv32i16_i8_nxv32i8(<vscale x 32 x i16> %0, i8 %1, <vscale x 32 x i8> %2, <vscale x 32 x i1> %3, iXLen %4) nounwind {
273 ; CHECK-LABEL: intrinsic_vwmaccus_mask_vx_nxv32i16_i8_nxv32i8:
274 ; CHECK:       # %bb.0: # %entry
275 ; CHECK-NEXT:    vsetvli zero, a1, e8, m4, tu, mu
276 ; CHECK-NEXT:    vwmaccus.vx v8, a0, v16, v0.t
277 ; CHECK-NEXT:    ret
278 entry:
279   %a = call <vscale x 32 x i16> @llvm.riscv.vwmaccus.mask.nxv32i16.i8(
280     <vscale x 32 x i16> %0,
281     i8 %1,
282     <vscale x 32 x i8> %2,
283     <vscale x 32 x i1> %3,
284     iXLen %4, iXLen 0)
286   ret <vscale x 32 x i16> %a
289 declare <vscale x 1 x i32> @llvm.riscv.vwmaccus.nxv1i32.i16(
290   <vscale x 1 x i32>,
291   i16,
292   <vscale x 1 x i16>,
293   iXLen,
294   iXLen);
296 define <vscale x 1 x i32>  @intrinsic_vwmaccus_vx_nxv1i32_i16_nxv1i16(<vscale x 1 x i32> %0, i16 %1, <vscale x 1 x i16> %2, iXLen %3) nounwind {
297 ; CHECK-LABEL: intrinsic_vwmaccus_vx_nxv1i32_i16_nxv1i16:
298 ; CHECK:       # %bb.0: # %entry
299 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, tu, ma
300 ; CHECK-NEXT:    vwmaccus.vx v8, a0, v9
301 ; CHECK-NEXT:    ret
302 entry:
303   %a = call <vscale x 1 x i32> @llvm.riscv.vwmaccus.nxv1i32.i16(
304     <vscale x 1 x i32> %0,
305     i16 %1,
306     <vscale x 1 x i16> %2,
307     iXLen %3, iXLen 0)
309   ret <vscale x 1 x i32> %a
312 declare <vscale x 1 x i32> @llvm.riscv.vwmaccus.mask.nxv1i32.i16(
313   <vscale x 1 x i32>,
314   i16,
315   <vscale x 1 x i16>,
316   <vscale x 1 x i1>,
317   iXLen, iXLen);
319 define <vscale x 1 x i32> @intrinsic_vwmaccus_mask_vx_nxv1i32_i16_nxv1i16(<vscale x 1 x i32> %0, i16 %1, <vscale x 1 x i16> %2, <vscale x 1 x i1> %3, iXLen %4) nounwind {
320 ; CHECK-LABEL: intrinsic_vwmaccus_mask_vx_nxv1i32_i16_nxv1i16:
321 ; CHECK:       # %bb.0: # %entry
322 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, tu, mu
323 ; CHECK-NEXT:    vwmaccus.vx v8, a0, v9, v0.t
324 ; CHECK-NEXT:    ret
325 entry:
326   %a = call <vscale x 1 x i32> @llvm.riscv.vwmaccus.mask.nxv1i32.i16(
327     <vscale x 1 x i32> %0,
328     i16 %1,
329     <vscale x 1 x i16> %2,
330     <vscale x 1 x i1> %3,
331     iXLen %4, iXLen 0)
333   ret <vscale x 1 x i32> %a
336 declare <vscale x 2 x i32> @llvm.riscv.vwmaccus.nxv2i32.i16(
337   <vscale x 2 x i32>,
338   i16,
339   <vscale x 2 x i16>,
340   iXLen,
341   iXLen);
343 define <vscale x 2 x i32>  @intrinsic_vwmaccus_vx_nxv2i32_i16_nxv2i16(<vscale x 2 x i32> %0, i16 %1, <vscale x 2 x i16> %2, iXLen %3) nounwind {
344 ; CHECK-LABEL: intrinsic_vwmaccus_vx_nxv2i32_i16_nxv2i16:
345 ; CHECK:       # %bb.0: # %entry
346 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, tu, ma
347 ; CHECK-NEXT:    vwmaccus.vx v8, a0, v9
348 ; CHECK-NEXT:    ret
349 entry:
350   %a = call <vscale x 2 x i32> @llvm.riscv.vwmaccus.nxv2i32.i16(
351     <vscale x 2 x i32> %0,
352     i16 %1,
353     <vscale x 2 x i16> %2,
354     iXLen %3, iXLen 0)
356   ret <vscale x 2 x i32> %a
359 declare <vscale x 2 x i32> @llvm.riscv.vwmaccus.mask.nxv2i32.i16(
360   <vscale x 2 x i32>,
361   i16,
362   <vscale x 2 x i16>,
363   <vscale x 2 x i1>,
364   iXLen, iXLen);
366 define <vscale x 2 x i32> @intrinsic_vwmaccus_mask_vx_nxv2i32_i16_nxv2i16(<vscale x 2 x i32> %0, i16 %1, <vscale x 2 x i16> %2, <vscale x 2 x i1> %3, iXLen %4) nounwind {
367 ; CHECK-LABEL: intrinsic_vwmaccus_mask_vx_nxv2i32_i16_nxv2i16:
368 ; CHECK:       # %bb.0: # %entry
369 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, tu, mu
370 ; CHECK-NEXT:    vwmaccus.vx v8, a0, v9, v0.t
371 ; CHECK-NEXT:    ret
372 entry:
373   %a = call <vscale x 2 x i32> @llvm.riscv.vwmaccus.mask.nxv2i32.i16(
374     <vscale x 2 x i32> %0,
375     i16 %1,
376     <vscale x 2 x i16> %2,
377     <vscale x 2 x i1> %3,
378     iXLen %4, iXLen 0)
380   ret <vscale x 2 x i32> %a
383 declare <vscale x 4 x i32> @llvm.riscv.vwmaccus.nxv4i32.i16(
384   <vscale x 4 x i32>,
385   i16,
386   <vscale x 4 x i16>,
387   iXLen,
388   iXLen);
390 define <vscale x 4 x i32>  @intrinsic_vwmaccus_vx_nxv4i32_i16_nxv4i16(<vscale x 4 x i32> %0, i16 %1, <vscale x 4 x i16> %2, iXLen %3) nounwind {
391 ; CHECK-LABEL: intrinsic_vwmaccus_vx_nxv4i32_i16_nxv4i16:
392 ; CHECK:       # %bb.0: # %entry
393 ; CHECK-NEXT:    vsetvli zero, a1, e16, m1, tu, ma
394 ; CHECK-NEXT:    vwmaccus.vx v8, a0, v10
395 ; CHECK-NEXT:    ret
396 entry:
397   %a = call <vscale x 4 x i32> @llvm.riscv.vwmaccus.nxv4i32.i16(
398     <vscale x 4 x i32> %0,
399     i16 %1,
400     <vscale x 4 x i16> %2,
401     iXLen %3, iXLen 0)
403   ret <vscale x 4 x i32> %a
406 declare <vscale x 4 x i32> @llvm.riscv.vwmaccus.mask.nxv4i32.i16(
407   <vscale x 4 x i32>,
408   i16,
409   <vscale x 4 x i16>,
410   <vscale x 4 x i1>,
411   iXLen, iXLen);
413 define <vscale x 4 x i32> @intrinsic_vwmaccus_mask_vx_nxv4i32_i16_nxv4i16(<vscale x 4 x i32> %0, i16 %1, <vscale x 4 x i16> %2, <vscale x 4 x i1> %3, iXLen %4) nounwind {
414 ; CHECK-LABEL: intrinsic_vwmaccus_mask_vx_nxv4i32_i16_nxv4i16:
415 ; CHECK:       # %bb.0: # %entry
416 ; CHECK-NEXT:    vsetvli zero, a1, e16, m1, tu, mu
417 ; CHECK-NEXT:    vwmaccus.vx v8, a0, v10, v0.t
418 ; CHECK-NEXT:    ret
419 entry:
420   %a = call <vscale x 4 x i32> @llvm.riscv.vwmaccus.mask.nxv4i32.i16(
421     <vscale x 4 x i32> %0,
422     i16 %1,
423     <vscale x 4 x i16> %2,
424     <vscale x 4 x i1> %3,
425     iXLen %4, iXLen 0)
427   ret <vscale x 4 x i32> %a
430 declare <vscale x 8 x i32> @llvm.riscv.vwmaccus.nxv8i32.i16(
431   <vscale x 8 x i32>,
432   i16,
433   <vscale x 8 x i16>,
434   iXLen,
435   iXLen);
437 define <vscale x 8 x i32>  @intrinsic_vwmaccus_vx_nxv8i32_i16_nxv8i16(<vscale x 8 x i32> %0, i16 %1, <vscale x 8 x i16> %2, iXLen %3) nounwind {
438 ; CHECK-LABEL: intrinsic_vwmaccus_vx_nxv8i32_i16_nxv8i16:
439 ; CHECK:       # %bb.0: # %entry
440 ; CHECK-NEXT:    vsetvli zero, a1, e16, m2, tu, ma
441 ; CHECK-NEXT:    vwmaccus.vx v8, a0, v12
442 ; CHECK-NEXT:    ret
443 entry:
444   %a = call <vscale x 8 x i32> @llvm.riscv.vwmaccus.nxv8i32.i16(
445     <vscale x 8 x i32> %0,
446     i16 %1,
447     <vscale x 8 x i16> %2,
448     iXLen %3, iXLen 0)
450   ret <vscale x 8 x i32> %a
453 declare <vscale x 8 x i32> @llvm.riscv.vwmaccus.mask.nxv8i32.i16(
454   <vscale x 8 x i32>,
455   i16,
456   <vscale x 8 x i16>,
457   <vscale x 8 x i1>,
458   iXLen, iXLen);
460 define <vscale x 8 x i32> @intrinsic_vwmaccus_mask_vx_nxv8i32_i16_nxv8i16(<vscale x 8 x i32> %0, i16 %1, <vscale x 8 x i16> %2, <vscale x 8 x i1> %3, iXLen %4) nounwind {
461 ; CHECK-LABEL: intrinsic_vwmaccus_mask_vx_nxv8i32_i16_nxv8i16:
462 ; CHECK:       # %bb.0: # %entry
463 ; CHECK-NEXT:    vsetvli zero, a1, e16, m2, tu, mu
464 ; CHECK-NEXT:    vwmaccus.vx v8, a0, v12, v0.t
465 ; CHECK-NEXT:    ret
466 entry:
467   %a = call <vscale x 8 x i32> @llvm.riscv.vwmaccus.mask.nxv8i32.i16(
468     <vscale x 8 x i32> %0,
469     i16 %1,
470     <vscale x 8 x i16> %2,
471     <vscale x 8 x i1> %3,
472     iXLen %4, iXLen 0)
474   ret <vscale x 8 x i32> %a
477 declare <vscale x 16 x i32> @llvm.riscv.vwmaccus.nxv16i32.i16(
478   <vscale x 16 x i32>,
479   i16,
480   <vscale x 16 x i16>,
481   iXLen,
482   iXLen);
484 define <vscale x 16 x i32>  @intrinsic_vwmaccus_vx_nxv16i32_i16_nxv16i16(<vscale x 16 x i32> %0, i16 %1, <vscale x 16 x i16> %2, iXLen %3) nounwind {
485 ; CHECK-LABEL: intrinsic_vwmaccus_vx_nxv16i32_i16_nxv16i16:
486 ; CHECK:       # %bb.0: # %entry
487 ; CHECK-NEXT:    vsetvli zero, a1, e16, m4, tu, ma
488 ; CHECK-NEXT:    vwmaccus.vx v8, a0, v16
489 ; CHECK-NEXT:    ret
490 entry:
491   %a = call <vscale x 16 x i32> @llvm.riscv.vwmaccus.nxv16i32.i16(
492     <vscale x 16 x i32> %0,
493     i16 %1,
494     <vscale x 16 x i16> %2,
495     iXLen %3, iXLen 0)
497   ret <vscale x 16 x i32> %a
500 declare <vscale x 16 x i32> @llvm.riscv.vwmaccus.mask.nxv16i32.i16(
501   <vscale x 16 x i32>,
502   i16,
503   <vscale x 16 x i16>,
504   <vscale x 16 x i1>,
505   iXLen, iXLen);
507 define <vscale x 16 x i32> @intrinsic_vwmaccus_mask_vx_nxv16i32_i16_nxv16i16(<vscale x 16 x i32> %0, i16 %1, <vscale x 16 x i16> %2, <vscale x 16 x i1> %3, iXLen %4) nounwind {
508 ; CHECK-LABEL: intrinsic_vwmaccus_mask_vx_nxv16i32_i16_nxv16i16:
509 ; CHECK:       # %bb.0: # %entry
510 ; CHECK-NEXT:    vsetvli zero, a1, e16, m4, tu, mu
511 ; CHECK-NEXT:    vwmaccus.vx v8, a0, v16, v0.t
512 ; CHECK-NEXT:    ret
513 entry:
514   %a = call <vscale x 16 x i32> @llvm.riscv.vwmaccus.mask.nxv16i32.i16(
515     <vscale x 16 x i32> %0,
516     i16 %1,
517     <vscale x 16 x i16> %2,
518     <vscale x 16 x i1> %3,
519     iXLen %4, iXLen 0)
521   ret <vscale x 16 x i32> %a
524 declare <vscale x 1 x i64> @llvm.riscv.vwmaccus.nxv1i64.i32(
525   <vscale x 1 x i64>,
526   i32,
527   <vscale x 1 x i32>,
528   iXLen,
529   iXLen);
531 define <vscale x 1 x i64>  @intrinsic_vwmaccus_vx_nxv1i64_i32_nxv1i32(<vscale x 1 x i64> %0, i32 %1, <vscale x 1 x i32> %2, iXLen %3) nounwind {
532 ; CHECK-LABEL: intrinsic_vwmaccus_vx_nxv1i64_i32_nxv1i32:
533 ; CHECK:       # %bb.0: # %entry
534 ; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, tu, ma
535 ; CHECK-NEXT:    vwmaccus.vx v8, a0, v9
536 ; CHECK-NEXT:    ret
537 entry:
538   %a = call <vscale x 1 x i64> @llvm.riscv.vwmaccus.nxv1i64.i32(
539     <vscale x 1 x i64> %0,
540     i32 %1,
541     <vscale x 1 x i32> %2,
542     iXLen %3, iXLen 0)
544   ret <vscale x 1 x i64> %a
547 declare <vscale x 1 x i64> @llvm.riscv.vwmaccus.mask.nxv1i64.i32(
548   <vscale x 1 x i64>,
549   i32,
550   <vscale x 1 x i32>,
551   <vscale x 1 x i1>,
552   iXLen, iXLen);
554 define <vscale x 1 x i64> @intrinsic_vwmaccus_mask_vx_nxv1i64_i32_nxv1i32(<vscale x 1 x i64> %0, i32 %1, <vscale x 1 x i32> %2, <vscale x 1 x i1> %3, iXLen %4) nounwind {
555 ; CHECK-LABEL: intrinsic_vwmaccus_mask_vx_nxv1i64_i32_nxv1i32:
556 ; CHECK:       # %bb.0: # %entry
557 ; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, tu, mu
558 ; CHECK-NEXT:    vwmaccus.vx v8, a0, v9, v0.t
559 ; CHECK-NEXT:    ret
560 entry:
561   %a = call <vscale x 1 x i64> @llvm.riscv.vwmaccus.mask.nxv1i64.i32(
562     <vscale x 1 x i64> %0,
563     i32 %1,
564     <vscale x 1 x i32> %2,
565     <vscale x 1 x i1> %3,
566     iXLen %4, iXLen 0)
568   ret <vscale x 1 x i64> %a
571 declare <vscale x 2 x i64> @llvm.riscv.vwmaccus.nxv2i64.i32(
572   <vscale x 2 x i64>,
573   i32,
574   <vscale x 2 x i32>,
575   iXLen,
576   iXLen);
578 define <vscale x 2 x i64>  @intrinsic_vwmaccus_vx_nxv2i64_i32_nxv2i32(<vscale x 2 x i64> %0, i32 %1, <vscale x 2 x i32> %2, iXLen %3) nounwind {
579 ; CHECK-LABEL: intrinsic_vwmaccus_vx_nxv2i64_i32_nxv2i32:
580 ; CHECK:       # %bb.0: # %entry
581 ; CHECK-NEXT:    vsetvli zero, a1, e32, m1, tu, ma
582 ; CHECK-NEXT:    vwmaccus.vx v8, a0, v10
583 ; CHECK-NEXT:    ret
584 entry:
585   %a = call <vscale x 2 x i64> @llvm.riscv.vwmaccus.nxv2i64.i32(
586     <vscale x 2 x i64> %0,
587     i32 %1,
588     <vscale x 2 x i32> %2,
589     iXLen %3, iXLen 0)
591   ret <vscale x 2 x i64> %a
594 declare <vscale x 2 x i64> @llvm.riscv.vwmaccus.mask.nxv2i64.i32(
595   <vscale x 2 x i64>,
596   i32,
597   <vscale x 2 x i32>,
598   <vscale x 2 x i1>,
599   iXLen, iXLen);
601 define <vscale x 2 x i64> @intrinsic_vwmaccus_mask_vx_nxv2i64_i32_nxv2i32(<vscale x 2 x i64> %0, i32 %1, <vscale x 2 x i32> %2, <vscale x 2 x i1> %3, iXLen %4) nounwind {
602 ; CHECK-LABEL: intrinsic_vwmaccus_mask_vx_nxv2i64_i32_nxv2i32:
603 ; CHECK:       # %bb.0: # %entry
604 ; CHECK-NEXT:    vsetvli zero, a1, e32, m1, tu, mu
605 ; CHECK-NEXT:    vwmaccus.vx v8, a0, v10, v0.t
606 ; CHECK-NEXT:    ret
607 entry:
608   %a = call <vscale x 2 x i64> @llvm.riscv.vwmaccus.mask.nxv2i64.i32(
609     <vscale x 2 x i64> %0,
610     i32 %1,
611     <vscale x 2 x i32> %2,
612     <vscale x 2 x i1> %3,
613     iXLen %4, iXLen 0)
615   ret <vscale x 2 x i64> %a
618 declare <vscale x 4 x i64> @llvm.riscv.vwmaccus.nxv4i64.i32(
619   <vscale x 4 x i64>,
620   i32,
621   <vscale x 4 x i32>,
622   iXLen,
623   iXLen);
625 define <vscale x 4 x i64>  @intrinsic_vwmaccus_vx_nxv4i64_i32_nxv4i32(<vscale x 4 x i64> %0, i32 %1, <vscale x 4 x i32> %2, iXLen %3) nounwind {
626 ; CHECK-LABEL: intrinsic_vwmaccus_vx_nxv4i64_i32_nxv4i32:
627 ; CHECK:       # %bb.0: # %entry
628 ; CHECK-NEXT:    vsetvli zero, a1, e32, m2, tu, ma
629 ; CHECK-NEXT:    vwmaccus.vx v8, a0, v12
630 ; CHECK-NEXT:    ret
631 entry:
632   %a = call <vscale x 4 x i64> @llvm.riscv.vwmaccus.nxv4i64.i32(
633     <vscale x 4 x i64> %0,
634     i32 %1,
635     <vscale x 4 x i32> %2,
636     iXLen %3, iXLen 0)
638   ret <vscale x 4 x i64> %a
641 declare <vscale x 4 x i64> @llvm.riscv.vwmaccus.mask.nxv4i64.i32(
642   <vscale x 4 x i64>,
643   i32,
644   <vscale x 4 x i32>,
645   <vscale x 4 x i1>,
646   iXLen, iXLen);
648 define <vscale x 4 x i64> @intrinsic_vwmaccus_mask_vx_nxv4i64_i32_nxv4i32(<vscale x 4 x i64> %0, i32 %1, <vscale x 4 x i32> %2, <vscale x 4 x i1> %3, iXLen %4) nounwind {
649 ; CHECK-LABEL: intrinsic_vwmaccus_mask_vx_nxv4i64_i32_nxv4i32:
650 ; CHECK:       # %bb.0: # %entry
651 ; CHECK-NEXT:    vsetvli zero, a1, e32, m2, tu, mu
652 ; CHECK-NEXT:    vwmaccus.vx v8, a0, v12, v0.t
653 ; CHECK-NEXT:    ret
654 entry:
655   %a = call <vscale x 4 x i64> @llvm.riscv.vwmaccus.mask.nxv4i64.i32(
656     <vscale x 4 x i64> %0,
657     i32 %1,
658     <vscale x 4 x i32> %2,
659     <vscale x 4 x i1> %3,
660     iXLen %4, iXLen 0)
662   ret <vscale x 4 x i64> %a
665 declare <vscale x 8 x i64> @llvm.riscv.vwmaccus.nxv8i64.i32(
666   <vscale x 8 x i64>,
667   i32,
668   <vscale x 8 x i32>,
669   iXLen,
670   iXLen);
672 define <vscale x 8 x i64>  @intrinsic_vwmaccus_vx_nxv8i64_i32_nxv8i32(<vscale x 8 x i64> %0, i32 %1, <vscale x 8 x i32> %2, iXLen %3) nounwind {
673 ; CHECK-LABEL: intrinsic_vwmaccus_vx_nxv8i64_i32_nxv8i32:
674 ; CHECK:       # %bb.0: # %entry
675 ; CHECK-NEXT:    vsetvli zero, a1, e32, m4, tu, ma
676 ; CHECK-NEXT:    vwmaccus.vx v8, a0, v16
677 ; CHECK-NEXT:    ret
678 entry:
679   %a = call <vscale x 8 x i64> @llvm.riscv.vwmaccus.nxv8i64.i32(
680     <vscale x 8 x i64> %0,
681     i32 %1,
682     <vscale x 8 x i32> %2,
683     iXLen %3, iXLen 0)
685   ret <vscale x 8 x i64> %a
688 declare <vscale x 8 x i64> @llvm.riscv.vwmaccus.mask.nxv8i64.i32(
689   <vscale x 8 x i64>,
690   i32,
691   <vscale x 8 x i32>,
692   <vscale x 8 x i1>,
693   iXLen, iXLen);
695 define <vscale x 8 x i64> @intrinsic_vwmaccus_mask_vx_nxv8i64_i32_nxv8i32(<vscale x 8 x i64> %0, i32 %1, <vscale x 8 x i32> %2, <vscale x 8 x i1> %3, iXLen %4) nounwind {
696 ; CHECK-LABEL: intrinsic_vwmaccus_mask_vx_nxv8i64_i32_nxv8i32:
697 ; CHECK:       # %bb.0: # %entry
698 ; CHECK-NEXT:    vsetvli zero, a1, e32, m4, tu, mu
699 ; CHECK-NEXT:    vwmaccus.vx v8, a0, v16, v0.t
700 ; CHECK-NEXT:    ret
701 entry:
702   %a = call <vscale x 8 x i64> @llvm.riscv.vwmaccus.mask.nxv8i64.i32(
703     <vscale x 8 x i64> %0,
704     i32 %1,
705     <vscale x 8 x i32> %2,
706     <vscale x 8 x i1> %3,
707     iXLen %4, iXLen 0)
709   ret <vscale x 8 x i64> %a