Re-land [openmp] Fix warnings when building on Windows with latest MSVC or Clang...
[llvm-project.git] / llvm / test / CodeGen / RISCV / rvv / vror.ll
blob1e8fa86119b6b31ff1c24606c2da046924cc91c1
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,+zvkb \
3 ; RUN:   -verify-machineinstrs | FileCheck %s --check-prefixes=CHECK
4 ; RUN: sed 's/iXLen/i64/g' %s | llc -mtriple=riscv64 -mattr=+v,+zvkb \
5 ; RUN:   -verify-machineinstrs | FileCheck %s --check-prefixes=CHECK
7 declare <vscale x 1 x i8> @llvm.riscv.vror.nxv1i8.nxv1i8(
8   <vscale x 1 x i8>,
9   <vscale x 1 x i8>,
10   <vscale x 1 x i8>,
11   iXLen)
13 define <vscale x 1 x i8> @intrinsic_vror_vv_nxv1i8_nxv1i8(<vscale x 1 x i8> %0, <vscale x 1 x i8> %1, iXLen %2) nounwind {
14 ; CHECK-LABEL: intrinsic_vror_vv_nxv1i8_nxv1i8:
15 ; CHECK:       # %bb.0: # %entry
16 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf8, ta, ma
17 ; CHECK-NEXT:    vror.vv v8, v8, v9
18 ; CHECK-NEXT:    ret
19 entry:
20   %a = call <vscale x 1 x i8> @llvm.riscv.vror.nxv1i8.nxv1i8(
21     <vscale x 1 x i8> undef,
22     <vscale x 1 x i8> %0,
23     <vscale x 1 x i8> %1,
24     iXLen %2)
26   ret <vscale x 1 x i8> %a
29 declare <vscale x 1 x i8> @llvm.riscv.vror.mask.nxv1i8.nxv1i8(
30   <vscale x 1 x i8>,
31   <vscale x 1 x i8>,
32   <vscale x 1 x i8>,
33   <vscale x 1 x i1>,
34   iXLen,
35   iXLen)
37 define <vscale x 1 x i8> @intrinsic_vror_mask_vv_nxv1i8_nxv1i8(<vscale x 1 x i8> %0, <vscale x 1 x i8> %1, <vscale x 1 x i8> %2, <vscale x 1 x i1> %3, iXLen %4) nounwind {
38 ; CHECK-LABEL: intrinsic_vror_mask_vv_nxv1i8_nxv1i8:
39 ; CHECK:       # %bb.0: # %entry
40 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf8, ta, mu
41 ; CHECK-NEXT:    vror.vv v8, v9, v10, v0.t
42 ; CHECK-NEXT:    ret
43 entry:
44   %a = call <vscale x 1 x i8> @llvm.riscv.vror.mask.nxv1i8.nxv1i8(
45     <vscale x 1 x i8> %0,
46     <vscale x 1 x i8> %1,
47     <vscale x 1 x i8> %2,
48     <vscale x 1 x i1> %3,
49     iXLen %4, iXLen 1)
51   ret <vscale x 1 x i8> %a
54 declare <vscale x 2 x i8> @llvm.riscv.vror.nxv2i8.nxv2i8(
55   <vscale x 2 x i8>,
56   <vscale x 2 x i8>,
57   <vscale x 2 x i8>,
58   iXLen)
60 define <vscale x 2 x i8> @intrinsic_vror_vv_nxv2i8_nxv2i8(<vscale x 2 x i8> %0, <vscale x 2 x i8> %1, iXLen %2) nounwind {
61 ; CHECK-LABEL: intrinsic_vror_vv_nxv2i8_nxv2i8:
62 ; CHECK:       # %bb.0: # %entry
63 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf4, ta, ma
64 ; CHECK-NEXT:    vror.vv v8, v8, v9
65 ; CHECK-NEXT:    ret
66 entry:
67   %a = call <vscale x 2 x i8> @llvm.riscv.vror.nxv2i8.nxv2i8(
68     <vscale x 2 x i8> undef,
69     <vscale x 2 x i8> %0,
70     <vscale x 2 x i8> %1,
71     iXLen %2)
73   ret <vscale x 2 x i8> %a
76 declare <vscale x 2 x i8> @llvm.riscv.vror.mask.nxv2i8.nxv2i8(
77   <vscale x 2 x i8>,
78   <vscale x 2 x i8>,
79   <vscale x 2 x i8>,
80   <vscale x 2 x i1>,
81   iXLen,
82   iXLen)
84 define <vscale x 2 x i8> @intrinsic_vror_mask_vv_nxv2i8_nxv2i8(<vscale x 2 x i8> %0, <vscale x 2 x i8> %1, <vscale x 2 x i8> %2, <vscale x 2 x i1> %3, iXLen %4) nounwind {
85 ; CHECK-LABEL: intrinsic_vror_mask_vv_nxv2i8_nxv2i8:
86 ; CHECK:       # %bb.0: # %entry
87 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf4, ta, mu
88 ; CHECK-NEXT:    vror.vv v8, v9, v10, v0.t
89 ; CHECK-NEXT:    ret
90 entry:
91   %a = call <vscale x 2 x i8> @llvm.riscv.vror.mask.nxv2i8.nxv2i8(
92     <vscale x 2 x i8> %0,
93     <vscale x 2 x i8> %1,
94     <vscale x 2 x i8> %2,
95     <vscale x 2 x i1> %3,
96     iXLen %4, iXLen 1)
98   ret <vscale x 2 x i8> %a
101 declare <vscale x 4 x i8> @llvm.riscv.vror.nxv4i8.nxv4i8(
102   <vscale x 4 x i8>,
103   <vscale x 4 x i8>,
104   <vscale x 4 x i8>,
105   iXLen)
107 define <vscale x 4 x i8> @intrinsic_vror_vv_nxv4i8_nxv4i8(<vscale x 4 x i8> %0, <vscale x 4 x i8> %1, iXLen %2) nounwind {
108 ; CHECK-LABEL: intrinsic_vror_vv_nxv4i8_nxv4i8:
109 ; CHECK:       # %bb.0: # %entry
110 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf2, ta, ma
111 ; CHECK-NEXT:    vror.vv v8, v8, v9
112 ; CHECK-NEXT:    ret
113 entry:
114   %a = call <vscale x 4 x i8> @llvm.riscv.vror.nxv4i8.nxv4i8(
115     <vscale x 4 x i8> undef,
116     <vscale x 4 x i8> %0,
117     <vscale x 4 x i8> %1,
118     iXLen %2)
120   ret <vscale x 4 x i8> %a
123 declare <vscale x 4 x i8> @llvm.riscv.vror.mask.nxv4i8.nxv4i8(
124   <vscale x 4 x i8>,
125   <vscale x 4 x i8>,
126   <vscale x 4 x i8>,
127   <vscale x 4 x i1>,
128   iXLen,
129   iXLen)
131 define <vscale x 4 x i8> @intrinsic_vror_mask_vv_nxv4i8_nxv4i8(<vscale x 4 x i8> %0, <vscale x 4 x i8> %1, <vscale x 4 x i8> %2, <vscale x 4 x i1> %3, iXLen %4) nounwind {
132 ; CHECK-LABEL: intrinsic_vror_mask_vv_nxv4i8_nxv4i8:
133 ; CHECK:       # %bb.0: # %entry
134 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf2, ta, mu
135 ; CHECK-NEXT:    vror.vv v8, v9, v10, v0.t
136 ; CHECK-NEXT:    ret
137 entry:
138   %a = call <vscale x 4 x i8> @llvm.riscv.vror.mask.nxv4i8.nxv4i8(
139     <vscale x 4 x i8> %0,
140     <vscale x 4 x i8> %1,
141     <vscale x 4 x i8> %2,
142     <vscale x 4 x i1> %3,
143     iXLen %4, iXLen 1)
145   ret <vscale x 4 x i8> %a
148 declare <vscale x 8 x i8> @llvm.riscv.vror.nxv8i8.nxv8i8(
149   <vscale x 8 x i8>,
150   <vscale x 8 x i8>,
151   <vscale x 8 x i8>,
152   iXLen)
154 define <vscale x 8 x i8> @intrinsic_vror_vv_nxv8i8_nxv8i8(<vscale x 8 x i8> %0, <vscale x 8 x i8> %1, iXLen %2) nounwind {
155 ; CHECK-LABEL: intrinsic_vror_vv_nxv8i8_nxv8i8:
156 ; CHECK:       # %bb.0: # %entry
157 ; CHECK-NEXT:    vsetvli zero, a0, e8, m1, ta, ma
158 ; CHECK-NEXT:    vror.vv v8, v8, v9
159 ; CHECK-NEXT:    ret
160 entry:
161   %a = call <vscale x 8 x i8> @llvm.riscv.vror.nxv8i8.nxv8i8(
162     <vscale x 8 x i8> undef,
163     <vscale x 8 x i8> %0,
164     <vscale x 8 x i8> %1,
165     iXLen %2)
167   ret <vscale x 8 x i8> %a
170 declare <vscale x 8 x i8> @llvm.riscv.vror.mask.nxv8i8.nxv8i8(
171   <vscale x 8 x i8>,
172   <vscale x 8 x i8>,
173   <vscale x 8 x i8>,
174   <vscale x 8 x i1>,
175   iXLen,
176   iXLen)
178 define <vscale x 8 x i8> @intrinsic_vror_mask_vv_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_vror_mask_vv_nxv8i8_nxv8i8:
180 ; CHECK:       # %bb.0: # %entry
181 ; CHECK-NEXT:    vsetvli zero, a0, e8, m1, ta, mu
182 ; CHECK-NEXT:    vror.vv v8, v9, v10, v0.t
183 ; CHECK-NEXT:    ret
184 entry:
185   %a = call <vscale x 8 x i8> @llvm.riscv.vror.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.vror.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_vror_vv_nxv16i8_nxv16i8(<vscale x 16 x i8> %0, <vscale x 16 x i8> %1, iXLen %2) nounwind {
202 ; CHECK-LABEL: intrinsic_vror_vv_nxv16i8_nxv16i8:
203 ; CHECK:       # %bb.0: # %entry
204 ; CHECK-NEXT:    vsetvli zero, a0, e8, m2, ta, ma
205 ; CHECK-NEXT:    vror.vv v8, v8, v10
206 ; CHECK-NEXT:    ret
207 entry:
208   %a = call <vscale x 16 x i8> @llvm.riscv.vror.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.vror.mask.nxv16i8.nxv16i8(
218   <vscale x 16 x i8>,
219   <vscale x 16 x i8>,
220   <vscale x 16 x i8>,
221   <vscale x 16 x i1>,
222   iXLen,
223   iXLen)
225 define <vscale x 16 x i8> @intrinsic_vror_mask_vv_nxv16i8_nxv16i8(<vscale x 16 x i8> %0, <vscale x 16 x i8> %1, <vscale x 16 x i8> %2, <vscale x 16 x i1> %3, iXLen %4) nounwind {
226 ; CHECK-LABEL: intrinsic_vror_mask_vv_nxv16i8_nxv16i8:
227 ; CHECK:       # %bb.0: # %entry
228 ; CHECK-NEXT:    vsetvli zero, a0, e8, m2, ta, mu
229 ; CHECK-NEXT:    vror.vv v8, v10, v12, v0.t
230 ; CHECK-NEXT:    ret
231 entry:
232   %a = call <vscale x 16 x i8> @llvm.riscv.vror.mask.nxv16i8.nxv16i8(
233     <vscale x 16 x i8> %0,
234     <vscale x 16 x i8> %1,
235     <vscale x 16 x i8> %2,
236     <vscale x 16 x i1> %3,
237     iXLen %4, iXLen 1)
239   ret <vscale x 16 x i8> %a
242 declare <vscale x 32 x i8> @llvm.riscv.vror.nxv32i8.nxv32i8(
243   <vscale x 32 x i8>,
244   <vscale x 32 x i8>,
245   <vscale x 32 x i8>,
246   iXLen)
248 define <vscale x 32 x i8> @intrinsic_vror_vv_nxv32i8_nxv32i8(<vscale x 32 x i8> %0, <vscale x 32 x i8> %1, iXLen %2) nounwind {
249 ; CHECK-LABEL: intrinsic_vror_vv_nxv32i8_nxv32i8:
250 ; CHECK:       # %bb.0: # %entry
251 ; CHECK-NEXT:    vsetvli zero, a0, e8, m4, ta, ma
252 ; CHECK-NEXT:    vror.vv v8, v8, v12
253 ; CHECK-NEXT:    ret
254 entry:
255   %a = call <vscale x 32 x i8> @llvm.riscv.vror.nxv32i8.nxv32i8(
256     <vscale x 32 x i8> undef,
257     <vscale x 32 x i8> %0,
258     <vscale x 32 x i8> %1,
259     iXLen %2)
261   ret <vscale x 32 x i8> %a
264 declare <vscale x 32 x i8> @llvm.riscv.vror.mask.nxv32i8.nxv32i8(
265   <vscale x 32 x i8>,
266   <vscale x 32 x i8>,
267   <vscale x 32 x i8>,
268   <vscale x 32 x i1>,
269   iXLen,
270   iXLen)
272 define <vscale x 32 x i8> @intrinsic_vror_mask_vv_nxv32i8_nxv32i8(<vscale x 32 x i8> %0, <vscale x 32 x i8> %1, <vscale x 32 x i8> %2, <vscale x 32 x i1> %3, iXLen %4) nounwind {
273 ; CHECK-LABEL: intrinsic_vror_mask_vv_nxv32i8_nxv32i8:
274 ; CHECK:       # %bb.0: # %entry
275 ; CHECK-NEXT:    vsetvli zero, a0, e8, m4, ta, mu
276 ; CHECK-NEXT:    vror.vv v8, v12, v16, v0.t
277 ; CHECK-NEXT:    ret
278 entry:
279   %a = call <vscale x 32 x i8> @llvm.riscv.vror.mask.nxv32i8.nxv32i8(
280     <vscale x 32 x i8> %0,
281     <vscale x 32 x i8> %1,
282     <vscale x 32 x i8> %2,
283     <vscale x 32 x i1> %3,
284     iXLen %4, iXLen 1)
286   ret <vscale x 32 x i8> %a
289 declare <vscale x 64 x i8> @llvm.riscv.vror.nxv64i8.nxv64i8(
290   <vscale x 64 x i8>,
291   <vscale x 64 x i8>,
292   <vscale x 64 x i8>,
293   iXLen)
295 define <vscale x 64 x i8> @intrinsic_vror_vv_nxv64i8_nxv64i8(<vscale x 64 x i8> %0, <vscale x 64 x i8> %1, iXLen %2) nounwind {
296 ; CHECK-LABEL: intrinsic_vror_vv_nxv64i8_nxv64i8:
297 ; CHECK:       # %bb.0: # %entry
298 ; CHECK-NEXT:    vsetvli zero, a0, e8, m8, ta, ma
299 ; CHECK-NEXT:    vror.vv v8, v8, v16
300 ; CHECK-NEXT:    ret
301 entry:
302   %a = call <vscale x 64 x i8> @llvm.riscv.vror.nxv64i8.nxv64i8(
303     <vscale x 64 x i8> undef,
304     <vscale x 64 x i8> %0,
305     <vscale x 64 x i8> %1,
306     iXLen %2)
308   ret <vscale x 64 x i8> %a
311 declare <vscale x 64 x i8> @llvm.riscv.vror.mask.nxv64i8.nxv64i8(
312   <vscale x 64 x i8>,
313   <vscale x 64 x i8>,
314   <vscale x 64 x i8>,
315   <vscale x 64 x i1>,
316   iXLen,
317   iXLen)
319 define <vscale x 64 x i8> @intrinsic_vror_mask_vv_nxv64i8_nxv64i8(<vscale x 64 x i8> %0, <vscale x 64 x i8> %1, <vscale x 64 x i8> %2, <vscale x 64 x i1> %3, iXLen %4) nounwind {
320 ; CHECK-LABEL: intrinsic_vror_mask_vv_nxv64i8_nxv64i8:
321 ; CHECK:       # %bb.0: # %entry
322 ; CHECK-NEXT:    vl8r.v v24, (a0)
323 ; CHECK-NEXT:    vsetvli zero, a1, e8, m8, ta, mu
324 ; CHECK-NEXT:    vror.vv v8, v16, v24, v0.t
325 ; CHECK-NEXT:    ret
326 entry:
327   %a = call <vscale x 64 x i8> @llvm.riscv.vror.mask.nxv64i8.nxv64i8(
328     <vscale x 64 x i8> %0,
329     <vscale x 64 x i8> %1,
330     <vscale x 64 x i8> %2,
331     <vscale x 64 x i1> %3,
332     iXLen %4, iXLen 1)
334   ret <vscale x 64 x i8> %a
337 declare <vscale x 1 x i16> @llvm.riscv.vror.nxv1i16.nxv1i16(
338   <vscale x 1 x i16>,
339   <vscale x 1 x i16>,
340   <vscale x 1 x i16>,
341   iXLen)
343 define <vscale x 1 x i16> @intrinsic_vror_vv_nxv1i16_nxv1i16(<vscale x 1 x i16> %0, <vscale x 1 x i16> %1, iXLen %2) nounwind {
344 ; CHECK-LABEL: intrinsic_vror_vv_nxv1i16_nxv1i16:
345 ; CHECK:       # %bb.0: # %entry
346 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma
347 ; CHECK-NEXT:    vror.vv v8, v8, v9
348 ; CHECK-NEXT:    ret
349 entry:
350   %a = call <vscale x 1 x i16> @llvm.riscv.vror.nxv1i16.nxv1i16(
351     <vscale x 1 x i16> undef,
352     <vscale x 1 x i16> %0,
353     <vscale x 1 x i16> %1,
354     iXLen %2)
356   ret <vscale x 1 x i16> %a
359 declare <vscale x 1 x i16> @llvm.riscv.vror.mask.nxv1i16.nxv1i16(
360   <vscale x 1 x i16>,
361   <vscale x 1 x i16>,
362   <vscale x 1 x i16>,
363   <vscale x 1 x i1>,
364   iXLen,
365   iXLen)
367 define <vscale x 1 x i16> @intrinsic_vror_mask_vv_nxv1i16_nxv1i16(<vscale x 1 x i16> %0, <vscale x 1 x i16> %1, <vscale x 1 x i16> %2, <vscale x 1 x i1> %3, iXLen %4) nounwind {
368 ; CHECK-LABEL: intrinsic_vror_mask_vv_nxv1i16_nxv1i16:
369 ; CHECK:       # %bb.0: # %entry
370 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, ta, mu
371 ; CHECK-NEXT:    vror.vv v8, v9, v10, v0.t
372 ; CHECK-NEXT:    ret
373 entry:
374   %a = call <vscale x 1 x i16> @llvm.riscv.vror.mask.nxv1i16.nxv1i16(
375     <vscale x 1 x i16> %0,
376     <vscale x 1 x i16> %1,
377     <vscale x 1 x i16> %2,
378     <vscale x 1 x i1> %3,
379     iXLen %4, iXLen 1)
381   ret <vscale x 1 x i16> %a
384 declare <vscale x 2 x i16> @llvm.riscv.vror.nxv2i16.nxv2i16(
385   <vscale x 2 x i16>,
386   <vscale x 2 x i16>,
387   <vscale x 2 x i16>,
388   iXLen)
390 define <vscale x 2 x i16> @intrinsic_vror_vv_nxv2i16_nxv2i16(<vscale x 2 x i16> %0, <vscale x 2 x i16> %1, iXLen %2) nounwind {
391 ; CHECK-LABEL: intrinsic_vror_vv_nxv2i16_nxv2i16:
392 ; CHECK:       # %bb.0: # %entry
393 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf2, ta, ma
394 ; CHECK-NEXT:    vror.vv v8, v8, v9
395 ; CHECK-NEXT:    ret
396 entry:
397   %a = call <vscale x 2 x i16> @llvm.riscv.vror.nxv2i16.nxv2i16(
398     <vscale x 2 x i16> undef,
399     <vscale x 2 x i16> %0,
400     <vscale x 2 x i16> %1,
401     iXLen %2)
403   ret <vscale x 2 x i16> %a
406 declare <vscale x 2 x i16> @llvm.riscv.vror.mask.nxv2i16.nxv2i16(
407   <vscale x 2 x i16>,
408   <vscale x 2 x i16>,
409   <vscale x 2 x i16>,
410   <vscale x 2 x i1>,
411   iXLen,
412   iXLen)
414 define <vscale x 2 x i16> @intrinsic_vror_mask_vv_nxv2i16_nxv2i16(<vscale x 2 x i16> %0, <vscale x 2 x i16> %1, <vscale x 2 x i16> %2, <vscale x 2 x i1> %3, iXLen %4) nounwind {
415 ; CHECK-LABEL: intrinsic_vror_mask_vv_nxv2i16_nxv2i16:
416 ; CHECK:       # %bb.0: # %entry
417 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf2, ta, mu
418 ; CHECK-NEXT:    vror.vv v8, v9, v10, v0.t
419 ; CHECK-NEXT:    ret
420 entry:
421   %a = call <vscale x 2 x i16> @llvm.riscv.vror.mask.nxv2i16.nxv2i16(
422     <vscale x 2 x i16> %0,
423     <vscale x 2 x i16> %1,
424     <vscale x 2 x i16> %2,
425     <vscale x 2 x i1> %3,
426     iXLen %4, iXLen 1)
428   ret <vscale x 2 x i16> %a
431 declare <vscale x 4 x i16> @llvm.riscv.vror.nxv4i16.nxv4i16(
432   <vscale x 4 x i16>,
433   <vscale x 4 x i16>,
434   <vscale x 4 x i16>,
435   iXLen)
437 define <vscale x 4 x i16> @intrinsic_vror_vv_nxv4i16_nxv4i16(<vscale x 4 x i16> %0, <vscale x 4 x i16> %1, iXLen %2) nounwind {
438 ; CHECK-LABEL: intrinsic_vror_vv_nxv4i16_nxv4i16:
439 ; CHECK:       # %bb.0: # %entry
440 ; CHECK-NEXT:    vsetvli zero, a0, e16, m1, ta, ma
441 ; CHECK-NEXT:    vror.vv v8, v8, v9
442 ; CHECK-NEXT:    ret
443 entry:
444   %a = call <vscale x 4 x i16> @llvm.riscv.vror.nxv4i16.nxv4i16(
445     <vscale x 4 x i16> undef,
446     <vscale x 4 x i16> %0,
447     <vscale x 4 x i16> %1,
448     iXLen %2)
450   ret <vscale x 4 x i16> %a
453 declare <vscale x 4 x i16> @llvm.riscv.vror.mask.nxv4i16.nxv4i16(
454   <vscale x 4 x i16>,
455   <vscale x 4 x i16>,
456   <vscale x 4 x i16>,
457   <vscale x 4 x i1>,
458   iXLen,
459   iXLen)
461 define <vscale x 4 x i16> @intrinsic_vror_mask_vv_nxv4i16_nxv4i16(<vscale x 4 x i16> %0, <vscale x 4 x i16> %1, <vscale x 4 x i16> %2, <vscale x 4 x i1> %3, iXLen %4) nounwind {
462 ; CHECK-LABEL: intrinsic_vror_mask_vv_nxv4i16_nxv4i16:
463 ; CHECK:       # %bb.0: # %entry
464 ; CHECK-NEXT:    vsetvli zero, a0, e16, m1, ta, mu
465 ; CHECK-NEXT:    vror.vv v8, v9, v10, v0.t
466 ; CHECK-NEXT:    ret
467 entry:
468   %a = call <vscale x 4 x i16> @llvm.riscv.vror.mask.nxv4i16.nxv4i16(
469     <vscale x 4 x i16> %0,
470     <vscale x 4 x i16> %1,
471     <vscale x 4 x i16> %2,
472     <vscale x 4 x i1> %3,
473     iXLen %4, iXLen 1)
475   ret <vscale x 4 x i16> %a
478 declare <vscale x 8 x i16> @llvm.riscv.vror.nxv8i16.nxv8i16(
479   <vscale x 8 x i16>,
480   <vscale x 8 x i16>,
481   <vscale x 8 x i16>,
482   iXLen)
484 define <vscale x 8 x i16> @intrinsic_vror_vv_nxv8i16_nxv8i16(<vscale x 8 x i16> %0, <vscale x 8 x i16> %1, iXLen %2) nounwind {
485 ; CHECK-LABEL: intrinsic_vror_vv_nxv8i16_nxv8i16:
486 ; CHECK:       # %bb.0: # %entry
487 ; CHECK-NEXT:    vsetvli zero, a0, e16, m2, ta, ma
488 ; CHECK-NEXT:    vror.vv v8, v8, v10
489 ; CHECK-NEXT:    ret
490 entry:
491   %a = call <vscale x 8 x i16> @llvm.riscv.vror.nxv8i16.nxv8i16(
492     <vscale x 8 x i16> undef,
493     <vscale x 8 x i16> %0,
494     <vscale x 8 x i16> %1,
495     iXLen %2)
497   ret <vscale x 8 x i16> %a
500 declare <vscale x 8 x i16> @llvm.riscv.vror.mask.nxv8i16.nxv8i16(
501   <vscale x 8 x i16>,
502   <vscale x 8 x i16>,
503   <vscale x 8 x i16>,
504   <vscale x 8 x i1>,
505   iXLen,
506   iXLen)
508 define <vscale x 8 x i16> @intrinsic_vror_mask_vv_nxv8i16_nxv8i16(<vscale x 8 x i16> %0, <vscale x 8 x i16> %1, <vscale x 8 x i16> %2, <vscale x 8 x i1> %3, iXLen %4) nounwind {
509 ; CHECK-LABEL: intrinsic_vror_mask_vv_nxv8i16_nxv8i16:
510 ; CHECK:       # %bb.0: # %entry
511 ; CHECK-NEXT:    vsetvli zero, a0, e16, m2, ta, mu
512 ; CHECK-NEXT:    vror.vv v8, v10, v12, v0.t
513 ; CHECK-NEXT:    ret
514 entry:
515   %a = call <vscale x 8 x i16> @llvm.riscv.vror.mask.nxv8i16.nxv8i16(
516     <vscale x 8 x i16> %0,
517     <vscale x 8 x i16> %1,
518     <vscale x 8 x i16> %2,
519     <vscale x 8 x i1> %3,
520     iXLen %4, iXLen 1)
522   ret <vscale x 8 x i16> %a
525 declare <vscale x 16 x i16> @llvm.riscv.vror.nxv16i16.nxv16i16(
526   <vscale x 16 x i16>,
527   <vscale x 16 x i16>,
528   <vscale x 16 x i16>,
529   iXLen)
531 define <vscale x 16 x i16> @intrinsic_vror_vv_nxv16i16_nxv16i16(<vscale x 16 x i16> %0, <vscale x 16 x i16> %1, iXLen %2) nounwind {
532 ; CHECK-LABEL: intrinsic_vror_vv_nxv16i16_nxv16i16:
533 ; CHECK:       # %bb.0: # %entry
534 ; CHECK-NEXT:    vsetvli zero, a0, e16, m4, ta, ma
535 ; CHECK-NEXT:    vror.vv v8, v8, v12
536 ; CHECK-NEXT:    ret
537 entry:
538   %a = call <vscale x 16 x i16> @llvm.riscv.vror.nxv16i16.nxv16i16(
539     <vscale x 16 x i16> undef,
540     <vscale x 16 x i16> %0,
541     <vscale x 16 x i16> %1,
542     iXLen %2)
544   ret <vscale x 16 x i16> %a
547 declare <vscale x 16 x i16> @llvm.riscv.vror.mask.nxv16i16.nxv16i16(
548   <vscale x 16 x i16>,
549   <vscale x 16 x i16>,
550   <vscale x 16 x i16>,
551   <vscale x 16 x i1>,
552   iXLen,
553   iXLen)
555 define <vscale x 16 x i16> @intrinsic_vror_mask_vv_nxv16i16_nxv16i16(<vscale x 16 x i16> %0, <vscale x 16 x i16> %1, <vscale x 16 x i16> %2, <vscale x 16 x i1> %3, iXLen %4) nounwind {
556 ; CHECK-LABEL: intrinsic_vror_mask_vv_nxv16i16_nxv16i16:
557 ; CHECK:       # %bb.0: # %entry
558 ; CHECK-NEXT:    vsetvli zero, a0, e16, m4, ta, mu
559 ; CHECK-NEXT:    vror.vv v8, v12, v16, v0.t
560 ; CHECK-NEXT:    ret
561 entry:
562   %a = call <vscale x 16 x i16> @llvm.riscv.vror.mask.nxv16i16.nxv16i16(
563     <vscale x 16 x i16> %0,
564     <vscale x 16 x i16> %1,
565     <vscale x 16 x i16> %2,
566     <vscale x 16 x i1> %3,
567     iXLen %4, iXLen 1)
569   ret <vscale x 16 x i16> %a
572 declare <vscale x 32 x i16> @llvm.riscv.vror.nxv32i16.nxv32i16(
573   <vscale x 32 x i16>,
574   <vscale x 32 x i16>,
575   <vscale x 32 x i16>,
576   iXLen)
578 define <vscale x 32 x i16> @intrinsic_vror_vv_nxv32i16_nxv32i16(<vscale x 32 x i16> %0, <vscale x 32 x i16> %1, iXLen %2) nounwind {
579 ; CHECK-LABEL: intrinsic_vror_vv_nxv32i16_nxv32i16:
580 ; CHECK:       # %bb.0: # %entry
581 ; CHECK-NEXT:    vsetvli zero, a0, e16, m8, ta, ma
582 ; CHECK-NEXT:    vror.vv v8, v8, v16
583 ; CHECK-NEXT:    ret
584 entry:
585   %a = call <vscale x 32 x i16> @llvm.riscv.vror.nxv32i16.nxv32i16(
586     <vscale x 32 x i16> undef,
587     <vscale x 32 x i16> %0,
588     <vscale x 32 x i16> %1,
589     iXLen %2)
591   ret <vscale x 32 x i16> %a
594 declare <vscale x 32 x i16> @llvm.riscv.vror.mask.nxv32i16.nxv32i16(
595   <vscale x 32 x i16>,
596   <vscale x 32 x i16>,
597   <vscale x 32 x i16>,
598   <vscale x 32 x i1>,
599   iXLen,
600   iXLen)
602 define <vscale x 32 x i16> @intrinsic_vror_mask_vv_nxv32i16_nxv32i16(<vscale x 32 x i16> %0, <vscale x 32 x i16> %1, <vscale x 32 x i16> %2, <vscale x 32 x i1> %3, iXLen %4) nounwind {
603 ; CHECK-LABEL: intrinsic_vror_mask_vv_nxv32i16_nxv32i16:
604 ; CHECK:       # %bb.0: # %entry
605 ; CHECK-NEXT:    vl8re16.v v24, (a0)
606 ; CHECK-NEXT:    vsetvli zero, a1, e16, m8, ta, mu
607 ; CHECK-NEXT:    vror.vv v8, v16, v24, v0.t
608 ; CHECK-NEXT:    ret
609 entry:
610   %a = call <vscale x 32 x i16> @llvm.riscv.vror.mask.nxv32i16.nxv32i16(
611     <vscale x 32 x i16> %0,
612     <vscale x 32 x i16> %1,
613     <vscale x 32 x i16> %2,
614     <vscale x 32 x i1> %3,
615     iXLen %4, iXLen 1)
617   ret <vscale x 32 x i16> %a
620 declare <vscale x 1 x i32> @llvm.riscv.vror.nxv1i32.nxv1i32(
621   <vscale x 1 x i32>,
622   <vscale x 1 x i32>,
623   <vscale x 1 x i32>,
624   iXLen)
626 define <vscale x 1 x i32> @intrinsic_vror_vv_nxv1i32_nxv1i32(<vscale x 1 x i32> %0, <vscale x 1 x i32> %1, iXLen %2) nounwind {
627 ; CHECK-LABEL: intrinsic_vror_vv_nxv1i32_nxv1i32:
628 ; CHECK:       # %bb.0: # %entry
629 ; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma
630 ; CHECK-NEXT:    vror.vv v8, v8, v9
631 ; CHECK-NEXT:    ret
632 entry:
633   %a = call <vscale x 1 x i32> @llvm.riscv.vror.nxv1i32.nxv1i32(
634     <vscale x 1 x i32> undef,
635     <vscale x 1 x i32> %0,
636     <vscale x 1 x i32> %1,
637     iXLen %2)
639   ret <vscale x 1 x i32> %a
642 declare <vscale x 1 x i32> @llvm.riscv.vror.mask.nxv1i32.nxv1i32(
643   <vscale x 1 x i32>,
644   <vscale x 1 x i32>,
645   <vscale x 1 x i32>,
646   <vscale x 1 x i1>,
647   iXLen,
648   iXLen)
650 define <vscale x 1 x i32> @intrinsic_vror_mask_vv_nxv1i32_nxv1i32(<vscale x 1 x i32> %0, <vscale x 1 x i32> %1, <vscale x 1 x i32> %2, <vscale x 1 x i1> %3, iXLen %4) nounwind {
651 ; CHECK-LABEL: intrinsic_vror_mask_vv_nxv1i32_nxv1i32:
652 ; CHECK:       # %bb.0: # %entry
653 ; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, mu
654 ; CHECK-NEXT:    vror.vv v8, v9, v10, v0.t
655 ; CHECK-NEXT:    ret
656 entry:
657   %a = call <vscale x 1 x i32> @llvm.riscv.vror.mask.nxv1i32.nxv1i32(
658     <vscale x 1 x i32> %0,
659     <vscale x 1 x i32> %1,
660     <vscale x 1 x i32> %2,
661     <vscale x 1 x i1> %3,
662     iXLen %4, iXLen 1)
664   ret <vscale x 1 x i32> %a
667 declare <vscale x 2 x i32> @llvm.riscv.vror.nxv2i32.nxv2i32(
668   <vscale x 2 x i32>,
669   <vscale x 2 x i32>,
670   <vscale x 2 x i32>,
671   iXLen)
673 define <vscale x 2 x i32> @intrinsic_vror_vv_nxv2i32_nxv2i32(<vscale x 2 x i32> %0, <vscale x 2 x i32> %1, iXLen %2) nounwind {
674 ; CHECK-LABEL: intrinsic_vror_vv_nxv2i32_nxv2i32:
675 ; CHECK:       # %bb.0: # %entry
676 ; CHECK-NEXT:    vsetvli zero, a0, e32, m1, ta, ma
677 ; CHECK-NEXT:    vror.vv v8, v8, v9
678 ; CHECK-NEXT:    ret
679 entry:
680   %a = call <vscale x 2 x i32> @llvm.riscv.vror.nxv2i32.nxv2i32(
681     <vscale x 2 x i32> undef,
682     <vscale x 2 x i32> %0,
683     <vscale x 2 x i32> %1,
684     iXLen %2)
686   ret <vscale x 2 x i32> %a
689 declare <vscale x 2 x i32> @llvm.riscv.vror.mask.nxv2i32.nxv2i32(
690   <vscale x 2 x i32>,
691   <vscale x 2 x i32>,
692   <vscale x 2 x i32>,
693   <vscale x 2 x i1>,
694   iXLen,
695   iXLen)
697 define <vscale x 2 x i32> @intrinsic_vror_mask_vv_nxv2i32_nxv2i32(<vscale x 2 x i32> %0, <vscale x 2 x i32> %1, <vscale x 2 x i32> %2, <vscale x 2 x i1> %3, iXLen %4) nounwind {
698 ; CHECK-LABEL: intrinsic_vror_mask_vv_nxv2i32_nxv2i32:
699 ; CHECK:       # %bb.0: # %entry
700 ; CHECK-NEXT:    vsetvli zero, a0, e32, m1, ta, mu
701 ; CHECK-NEXT:    vror.vv v8, v9, v10, v0.t
702 ; CHECK-NEXT:    ret
703 entry:
704   %a = call <vscale x 2 x i32> @llvm.riscv.vror.mask.nxv2i32.nxv2i32(
705     <vscale x 2 x i32> %0,
706     <vscale x 2 x i32> %1,
707     <vscale x 2 x i32> %2,
708     <vscale x 2 x i1> %3,
709     iXLen %4, iXLen 1)
711   ret <vscale x 2 x i32> %a
714 declare <vscale x 4 x i32> @llvm.riscv.vror.nxv4i32.nxv4i32(
715   <vscale x 4 x i32>,
716   <vscale x 4 x i32>,
717   <vscale x 4 x i32>,
718   iXLen)
720 define <vscale x 4 x i32> @intrinsic_vror_vv_nxv4i32_nxv4i32(<vscale x 4 x i32> %0, <vscale x 4 x i32> %1, iXLen %2) nounwind {
721 ; CHECK-LABEL: intrinsic_vror_vv_nxv4i32_nxv4i32:
722 ; CHECK:       # %bb.0: # %entry
723 ; CHECK-NEXT:    vsetvli zero, a0, e32, m2, ta, ma
724 ; CHECK-NEXT:    vror.vv v8, v8, v10
725 ; CHECK-NEXT:    ret
726 entry:
727   %a = call <vscale x 4 x i32> @llvm.riscv.vror.nxv4i32.nxv4i32(
728     <vscale x 4 x i32> undef,
729     <vscale x 4 x i32> %0,
730     <vscale x 4 x i32> %1,
731     iXLen %2)
733   ret <vscale x 4 x i32> %a
736 declare <vscale x 4 x i32> @llvm.riscv.vror.mask.nxv4i32.nxv4i32(
737   <vscale x 4 x i32>,
738   <vscale x 4 x i32>,
739   <vscale x 4 x i32>,
740   <vscale x 4 x i1>,
741   iXLen,
742   iXLen)
744 define <vscale x 4 x i32> @intrinsic_vror_mask_vv_nxv4i32_nxv4i32(<vscale x 4 x i32> %0, <vscale x 4 x i32> %1, <vscale x 4 x i32> %2, <vscale x 4 x i1> %3, iXLen %4) nounwind {
745 ; CHECK-LABEL: intrinsic_vror_mask_vv_nxv4i32_nxv4i32:
746 ; CHECK:       # %bb.0: # %entry
747 ; CHECK-NEXT:    vsetvli zero, a0, e32, m2, ta, mu
748 ; CHECK-NEXT:    vror.vv v8, v10, v12, v0.t
749 ; CHECK-NEXT:    ret
750 entry:
751   %a = call <vscale x 4 x i32> @llvm.riscv.vror.mask.nxv4i32.nxv4i32(
752     <vscale x 4 x i32> %0,
753     <vscale x 4 x i32> %1,
754     <vscale x 4 x i32> %2,
755     <vscale x 4 x i1> %3,
756     iXLen %4, iXLen 1)
758   ret <vscale x 4 x i32> %a
761 declare <vscale x 8 x i32> @llvm.riscv.vror.nxv8i32.nxv8i32(
762   <vscale x 8 x i32>,
763   <vscale x 8 x i32>,
764   <vscale x 8 x i32>,
765   iXLen)
767 define <vscale x 8 x i32> @intrinsic_vror_vv_nxv8i32_nxv8i32(<vscale x 8 x i32> %0, <vscale x 8 x i32> %1, iXLen %2) nounwind {
768 ; CHECK-LABEL: intrinsic_vror_vv_nxv8i32_nxv8i32:
769 ; CHECK:       # %bb.0: # %entry
770 ; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, ma
771 ; CHECK-NEXT:    vror.vv v8, v8, v12
772 ; CHECK-NEXT:    ret
773 entry:
774   %a = call <vscale x 8 x i32> @llvm.riscv.vror.nxv8i32.nxv8i32(
775     <vscale x 8 x i32> undef,
776     <vscale x 8 x i32> %0,
777     <vscale x 8 x i32> %1,
778     iXLen %2)
780   ret <vscale x 8 x i32> %a
783 declare <vscale x 8 x i32> @llvm.riscv.vror.mask.nxv8i32.nxv8i32(
784   <vscale x 8 x i32>,
785   <vscale x 8 x i32>,
786   <vscale x 8 x i32>,
787   <vscale x 8 x i1>,
788   iXLen,
789   iXLen)
791 define <vscale x 8 x i32> @intrinsic_vror_mask_vv_nxv8i32_nxv8i32(<vscale x 8 x i32> %0, <vscale x 8 x i32> %1, <vscale x 8 x i32> %2, <vscale x 8 x i1> %3, iXLen %4) nounwind {
792 ; CHECK-LABEL: intrinsic_vror_mask_vv_nxv8i32_nxv8i32:
793 ; CHECK:       # %bb.0: # %entry
794 ; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, mu
795 ; CHECK-NEXT:    vror.vv v8, v12, v16, v0.t
796 ; CHECK-NEXT:    ret
797 entry:
798   %a = call <vscale x 8 x i32> @llvm.riscv.vror.mask.nxv8i32.nxv8i32(
799     <vscale x 8 x i32> %0,
800     <vscale x 8 x i32> %1,
801     <vscale x 8 x i32> %2,
802     <vscale x 8 x i1> %3,
803     iXLen %4, iXLen 1)
805   ret <vscale x 8 x i32> %a
808 declare <vscale x 16 x i32> @llvm.riscv.vror.nxv16i32.nxv16i32(
809   <vscale x 16 x i32>,
810   <vscale x 16 x i32>,
811   <vscale x 16 x i32>,
812   iXLen)
814 define <vscale x 16 x i32> @intrinsic_vror_vv_nxv16i32_nxv16i32(<vscale x 16 x i32> %0, <vscale x 16 x i32> %1, iXLen %2) nounwind {
815 ; CHECK-LABEL: intrinsic_vror_vv_nxv16i32_nxv16i32:
816 ; CHECK:       # %bb.0: # %entry
817 ; CHECK-NEXT:    vsetvli zero, a0, e32, m8, ta, ma
818 ; CHECK-NEXT:    vror.vv v8, v8, v16
819 ; CHECK-NEXT:    ret
820 entry:
821   %a = call <vscale x 16 x i32> @llvm.riscv.vror.nxv16i32.nxv16i32(
822     <vscale x 16 x i32> undef,
823     <vscale x 16 x i32> %0,
824     <vscale x 16 x i32> %1,
825     iXLen %2)
827   ret <vscale x 16 x i32> %a
830 declare <vscale x 16 x i32> @llvm.riscv.vror.mask.nxv16i32.nxv16i32(
831   <vscale x 16 x i32>,
832   <vscale x 16 x i32>,
833   <vscale x 16 x i32>,
834   <vscale x 16 x i1>,
835   iXLen,
836   iXLen)
838 define <vscale x 16 x i32> @intrinsic_vror_mask_vv_nxv16i32_nxv16i32(<vscale x 16 x i32> %0, <vscale x 16 x i32> %1, <vscale x 16 x i32> %2, <vscale x 16 x i1> %3, iXLen %4) nounwind {
839 ; CHECK-LABEL: intrinsic_vror_mask_vv_nxv16i32_nxv16i32:
840 ; CHECK:       # %bb.0: # %entry
841 ; CHECK-NEXT:    vl8re32.v v24, (a0)
842 ; CHECK-NEXT:    vsetvli zero, a1, e32, m8, ta, mu
843 ; CHECK-NEXT:    vror.vv v8, v16, v24, v0.t
844 ; CHECK-NEXT:    ret
845 entry:
846   %a = call <vscale x 16 x i32> @llvm.riscv.vror.mask.nxv16i32.nxv16i32(
847     <vscale x 16 x i32> %0,
848     <vscale x 16 x i32> %1,
849     <vscale x 16 x i32> %2,
850     <vscale x 16 x i1> %3,
851     iXLen %4, iXLen 1)
853   ret <vscale x 16 x i32> %a
856 declare <vscale x 1 x i64> @llvm.riscv.vror.nxv1i64.nxv1i64(
857   <vscale x 1 x i64>,
858   <vscale x 1 x i64>,
859   <vscale x 1 x i64>,
860   iXLen)
862 define <vscale x 1 x i64> @intrinsic_vror_vv_nxv1i64_nxv1i64(<vscale x 1 x i64> %0, <vscale x 1 x i64> %1, iXLen %2) nounwind {
863 ; CHECK-LABEL: intrinsic_vror_vv_nxv1i64_nxv1i64:
864 ; CHECK:       # %bb.0: # %entry
865 ; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
866 ; CHECK-NEXT:    vror.vv v8, v8, v9
867 ; CHECK-NEXT:    ret
868 entry:
869   %a = call <vscale x 1 x i64> @llvm.riscv.vror.nxv1i64.nxv1i64(
870     <vscale x 1 x i64> undef,
871     <vscale x 1 x i64> %0,
872     <vscale x 1 x i64> %1,
873     iXLen %2)
875   ret <vscale x 1 x i64> %a
878 declare <vscale x 1 x i64> @llvm.riscv.vror.mask.nxv1i64.nxv1i64(
879   <vscale x 1 x i64>,
880   <vscale x 1 x i64>,
881   <vscale x 1 x i64>,
882   <vscale x 1 x i1>,
883   iXLen,
884   iXLen)
886 define <vscale x 1 x i64> @intrinsic_vror_mask_vv_nxv1i64_nxv1i64(<vscale x 1 x i64> %0, <vscale x 1 x i64> %1, <vscale x 1 x i64> %2, <vscale x 1 x i1> %3, iXLen %4) nounwind {
887 ; CHECK-LABEL: intrinsic_vror_mask_vv_nxv1i64_nxv1i64:
888 ; CHECK:       # %bb.0: # %entry
889 ; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, mu
890 ; CHECK-NEXT:    vror.vv v8, v9, v10, v0.t
891 ; CHECK-NEXT:    ret
892 entry:
893   %a = call <vscale x 1 x i64> @llvm.riscv.vror.mask.nxv1i64.nxv1i64(
894     <vscale x 1 x i64> %0,
895     <vscale x 1 x i64> %1,
896     <vscale x 1 x i64> %2,
897     <vscale x 1 x i1> %3,
898     iXLen %4, iXLen 1)
900   ret <vscale x 1 x i64> %a
903 declare <vscale x 2 x i64> @llvm.riscv.vror.nxv2i64.nxv2i64(
904   <vscale x 2 x i64>,
905   <vscale x 2 x i64>,
906   <vscale x 2 x i64>,
907   iXLen)
909 define <vscale x 2 x i64> @intrinsic_vror_vv_nxv2i64_nxv2i64(<vscale x 2 x i64> %0, <vscale x 2 x i64> %1, iXLen %2) nounwind {
910 ; CHECK-LABEL: intrinsic_vror_vv_nxv2i64_nxv2i64:
911 ; CHECK:       # %bb.0: # %entry
912 ; CHECK-NEXT:    vsetvli zero, a0, e64, m2, ta, ma
913 ; CHECK-NEXT:    vror.vv v8, v8, v10
914 ; CHECK-NEXT:    ret
915 entry:
916   %a = call <vscale x 2 x i64> @llvm.riscv.vror.nxv2i64.nxv2i64(
917     <vscale x 2 x i64> undef,
918     <vscale x 2 x i64> %0,
919     <vscale x 2 x i64> %1,
920     iXLen %2)
922   ret <vscale x 2 x i64> %a
925 declare <vscale x 2 x i64> @llvm.riscv.vror.mask.nxv2i64.nxv2i64(
926   <vscale x 2 x i64>,
927   <vscale x 2 x i64>,
928   <vscale x 2 x i64>,
929   <vscale x 2 x i1>,
930   iXLen,
931   iXLen)
933 define <vscale x 2 x i64> @intrinsic_vror_mask_vv_nxv2i64_nxv2i64(<vscale x 2 x i64> %0, <vscale x 2 x i64> %1, <vscale x 2 x i64> %2, <vscale x 2 x i1> %3, iXLen %4) nounwind {
934 ; CHECK-LABEL: intrinsic_vror_mask_vv_nxv2i64_nxv2i64:
935 ; CHECK:       # %bb.0: # %entry
936 ; CHECK-NEXT:    vsetvli zero, a0, e64, m2, ta, mu
937 ; CHECK-NEXT:    vror.vv v8, v10, v12, v0.t
938 ; CHECK-NEXT:    ret
939 entry:
940   %a = call <vscale x 2 x i64> @llvm.riscv.vror.mask.nxv2i64.nxv2i64(
941     <vscale x 2 x i64> %0,
942     <vscale x 2 x i64> %1,
943     <vscale x 2 x i64> %2,
944     <vscale x 2 x i1> %3,
945     iXLen %4, iXLen 1)
947   ret <vscale x 2 x i64> %a
950 declare <vscale x 4 x i64> @llvm.riscv.vror.nxv4i64.nxv4i64(
951   <vscale x 4 x i64>,
952   <vscale x 4 x i64>,
953   <vscale x 4 x i64>,
954   iXLen)
956 define <vscale x 4 x i64> @intrinsic_vror_vv_nxv4i64_nxv4i64(<vscale x 4 x i64> %0, <vscale x 4 x i64> %1, iXLen %2) nounwind {
957 ; CHECK-LABEL: intrinsic_vror_vv_nxv4i64_nxv4i64:
958 ; CHECK:       # %bb.0: # %entry
959 ; CHECK-NEXT:    vsetvli zero, a0, e64, m4, ta, ma
960 ; CHECK-NEXT:    vror.vv v8, v8, v12
961 ; CHECK-NEXT:    ret
962 entry:
963   %a = call <vscale x 4 x i64> @llvm.riscv.vror.nxv4i64.nxv4i64(
964     <vscale x 4 x i64> undef,
965     <vscale x 4 x i64> %0,
966     <vscale x 4 x i64> %1,
967     iXLen %2)
969   ret <vscale x 4 x i64> %a
972 declare <vscale x 4 x i64> @llvm.riscv.vror.mask.nxv4i64.nxv4i64(
973   <vscale x 4 x i64>,
974   <vscale x 4 x i64>,
975   <vscale x 4 x i64>,
976   <vscale x 4 x i1>,
977   iXLen,
978   iXLen)
980 define <vscale x 4 x i64> @intrinsic_vror_mask_vv_nxv4i64_nxv4i64(<vscale x 4 x i64> %0, <vscale x 4 x i64> %1, <vscale x 4 x i64> %2, <vscale x 4 x i1> %3, iXLen %4) nounwind {
981 ; CHECK-LABEL: intrinsic_vror_mask_vv_nxv4i64_nxv4i64:
982 ; CHECK:       # %bb.0: # %entry
983 ; CHECK-NEXT:    vsetvli zero, a0, e64, m4, ta, mu
984 ; CHECK-NEXT:    vror.vv v8, v12, v16, v0.t
985 ; CHECK-NEXT:    ret
986 entry:
987   %a = call <vscale x 4 x i64> @llvm.riscv.vror.mask.nxv4i64.nxv4i64(
988     <vscale x 4 x i64> %0,
989     <vscale x 4 x i64> %1,
990     <vscale x 4 x i64> %2,
991     <vscale x 4 x i1> %3,
992     iXLen %4, iXLen 1)
994   ret <vscale x 4 x i64> %a
997 declare <vscale x 8 x i64> @llvm.riscv.vror.nxv8i64.nxv8i64(
998   <vscale x 8 x i64>,
999   <vscale x 8 x i64>,
1000   <vscale x 8 x i64>,
1001   iXLen)
1003 define <vscale x 8 x i64> @intrinsic_vror_vv_nxv8i64_nxv8i64(<vscale x 8 x i64> %0, <vscale x 8 x i64> %1, iXLen %2) nounwind {
1004 ; CHECK-LABEL: intrinsic_vror_vv_nxv8i64_nxv8i64:
1005 ; CHECK:       # %bb.0: # %entry
1006 ; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma
1007 ; CHECK-NEXT:    vror.vv v8, v8, v16
1008 ; CHECK-NEXT:    ret
1009 entry:
1010   %a = call <vscale x 8 x i64> @llvm.riscv.vror.nxv8i64.nxv8i64(
1011     <vscale x 8 x i64> undef,
1012     <vscale x 8 x i64> %0,
1013     <vscale x 8 x i64> %1,
1014     iXLen %2)
1016   ret <vscale x 8 x i64> %a
1019 declare <vscale x 8 x i64> @llvm.riscv.vror.mask.nxv8i64.nxv8i64(
1020   <vscale x 8 x i64>,
1021   <vscale x 8 x i64>,
1022   <vscale x 8 x i64>,
1023   <vscale x 8 x i1>,
1024   iXLen,
1025   iXLen)
1027 define <vscale x 8 x i64> @intrinsic_vror_mask_vv_nxv8i64_nxv8i64(<vscale x 8 x i64> %0, <vscale x 8 x i64> %1, <vscale x 8 x i64> %2, <vscale x 8 x i1> %3, iXLen %4) nounwind {
1028 ; CHECK-LABEL: intrinsic_vror_mask_vv_nxv8i64_nxv8i64:
1029 ; CHECK:       # %bb.0: # %entry
1030 ; CHECK-NEXT:    vl8re64.v v24, (a0)
1031 ; CHECK-NEXT:    vsetvli zero, a1, e64, m8, ta, mu
1032 ; CHECK-NEXT:    vror.vv v8, v16, v24, v0.t
1033 ; CHECK-NEXT:    ret
1034 entry:
1035   %a = call <vscale x 8 x i64> @llvm.riscv.vror.mask.nxv8i64.nxv8i64(
1036     <vscale x 8 x i64> %0,
1037     <vscale x 8 x i64> %1,
1038     <vscale x 8 x i64> %2,
1039     <vscale x 8 x i1> %3,
1040     iXLen %4, iXLen 1)
1042   ret <vscale x 8 x i64> %a
1045 declare <vscale x 1 x i8> @llvm.riscv.vror.nxv1i8(
1046   <vscale x 1 x i8>,
1047   <vscale x 1 x i8>,
1048   iXLen,
1049   iXLen)
1051 define <vscale x 1 x i8> @intrinsic_vror_vx_nxv1i8(<vscale x 1 x i8> %0, iXLen %1, iXLen %2) nounwind {
1052 ; CHECK-LABEL: intrinsic_vror_vx_nxv1i8:
1053 ; CHECK:       # %bb.0: # %entry
1054 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf8, ta, ma
1055 ; CHECK-NEXT:    vror.vx v8, v8, a0
1056 ; CHECK-NEXT:    ret
1057 entry:
1058   %a = call <vscale x 1 x i8> @llvm.riscv.vror.nxv1i8(
1059     <vscale x 1 x i8> undef,
1060     <vscale x 1 x i8> %0,
1061     iXLen %1,
1062     iXLen %2)
1064   ret <vscale x 1 x i8> %a
1067 declare <vscale x 1 x i8> @llvm.riscv.vror.mask.nxv1i8(
1068   <vscale x 1 x i8>,
1069   <vscale x 1 x i8>,
1070   iXLen,
1071   <vscale x 1 x i1>,
1072   iXLen,
1073   iXLen)
1075 define <vscale x 1 x i8> @intrinsic_vror_mask_vx_nxv1i8(<vscale x 1 x i8> %0, <vscale x 1 x i8> %1, iXLen %2, <vscale x 1 x i1> %3, iXLen %4) nounwind {
1076 ; CHECK-LABEL: intrinsic_vror_mask_vx_nxv1i8:
1077 ; CHECK:       # %bb.0: # %entry
1078 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf8, ta, mu
1079 ; CHECK-NEXT:    vror.vx v8, v9, a0, v0.t
1080 ; CHECK-NEXT:    ret
1081 entry:
1082   %a = call <vscale x 1 x i8> @llvm.riscv.vror.mask.nxv1i8(
1083     <vscale x 1 x i8> %0,
1084     <vscale x 1 x i8> %1,
1085     iXLen %2,
1086     <vscale x 1 x i1> %3,
1087     iXLen %4, iXLen 1)
1089   ret <vscale x 1 x i8> %a
1092 declare <vscale x 2 x i8> @llvm.riscv.vror.nxv2i8(
1093   <vscale x 2 x i8>,
1094   <vscale x 2 x i8>,
1095   iXLen,
1096   iXLen)
1098 define <vscale x 2 x i8> @intrinsic_vror_vx_nxv2i8(<vscale x 2 x i8> %0, iXLen %1, iXLen %2) nounwind {
1099 ; CHECK-LABEL: intrinsic_vror_vx_nxv2i8:
1100 ; CHECK:       # %bb.0: # %entry
1101 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf4, ta, ma
1102 ; CHECK-NEXT:    vror.vx v8, v8, a0
1103 ; CHECK-NEXT:    ret
1104 entry:
1105   %a = call <vscale x 2 x i8> @llvm.riscv.vror.nxv2i8(
1106     <vscale x 2 x i8> undef,
1107     <vscale x 2 x i8> %0,
1108     iXLen %1,
1109     iXLen %2)
1111   ret <vscale x 2 x i8> %a
1114 declare <vscale x 2 x i8> @llvm.riscv.vror.mask.nxv2i8(
1115   <vscale x 2 x i8>,
1116   <vscale x 2 x i8>,
1117   iXLen,
1118   <vscale x 2 x i1>,
1119   iXLen,
1120   iXLen)
1122 define <vscale x 2 x i8> @intrinsic_vror_mask_vx_nxv2i8(<vscale x 2 x i8> %0, <vscale x 2 x i8> %1, iXLen %2, <vscale x 2 x i1> %3, iXLen %4) nounwind {
1123 ; CHECK-LABEL: intrinsic_vror_mask_vx_nxv2i8:
1124 ; CHECK:       # %bb.0: # %entry
1125 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf4, ta, mu
1126 ; CHECK-NEXT:    vror.vx v8, v9, a0, v0.t
1127 ; CHECK-NEXT:    ret
1128 entry:
1129   %a = call <vscale x 2 x i8> @llvm.riscv.vror.mask.nxv2i8(
1130     <vscale x 2 x i8> %0,
1131     <vscale x 2 x i8> %1,
1132     iXLen %2,
1133     <vscale x 2 x i1> %3,
1134     iXLen %4, iXLen 1)
1136   ret <vscale x 2 x i8> %a
1139 declare <vscale x 4 x i8> @llvm.riscv.vror.nxv4i8(
1140   <vscale x 4 x i8>,
1141   <vscale x 4 x i8>,
1142   iXLen,
1143   iXLen)
1145 define <vscale x 4 x i8> @intrinsic_vror_vx_nxv4i8(<vscale x 4 x i8> %0, iXLen %1, iXLen %2) nounwind {
1146 ; CHECK-LABEL: intrinsic_vror_vx_nxv4i8:
1147 ; CHECK:       # %bb.0: # %entry
1148 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf2, ta, ma
1149 ; CHECK-NEXT:    vror.vx v8, v8, a0
1150 ; CHECK-NEXT:    ret
1151 entry:
1152   %a = call <vscale x 4 x i8> @llvm.riscv.vror.nxv4i8(
1153     <vscale x 4 x i8> undef,
1154     <vscale x 4 x i8> %0,
1155     iXLen %1,
1156     iXLen %2)
1158   ret <vscale x 4 x i8> %a
1161 declare <vscale x 4 x i8> @llvm.riscv.vror.mask.nxv4i8(
1162   <vscale x 4 x i8>,
1163   <vscale x 4 x i8>,
1164   iXLen,
1165   <vscale x 4 x i1>,
1166   iXLen,
1167   iXLen)
1169 define <vscale x 4 x i8> @intrinsic_vror_mask_vx_nxv4i8(<vscale x 4 x i8> %0, <vscale x 4 x i8> %1, iXLen %2, <vscale x 4 x i1> %3, iXLen %4) nounwind {
1170 ; CHECK-LABEL: intrinsic_vror_mask_vx_nxv4i8:
1171 ; CHECK:       # %bb.0: # %entry
1172 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf2, ta, mu
1173 ; CHECK-NEXT:    vror.vx v8, v9, a0, v0.t
1174 ; CHECK-NEXT:    ret
1175 entry:
1176   %a = call <vscale x 4 x i8> @llvm.riscv.vror.mask.nxv4i8(
1177     <vscale x 4 x i8> %0,
1178     <vscale x 4 x i8> %1,
1179     iXLen %2,
1180     <vscale x 4 x i1> %3,
1181     iXLen %4, iXLen 1)
1183   ret <vscale x 4 x i8> %a
1186 declare <vscale x 8 x i8> @llvm.riscv.vror.nxv8i8(
1187   <vscale x 8 x i8>,
1188   <vscale x 8 x i8>,
1189   iXLen,
1190   iXLen)
1192 define <vscale x 8 x i8> @intrinsic_vror_vx_nxv8i8(<vscale x 8 x i8> %0, iXLen %1, iXLen %2) nounwind {
1193 ; CHECK-LABEL: intrinsic_vror_vx_nxv8i8:
1194 ; CHECK:       # %bb.0: # %entry
1195 ; CHECK-NEXT:    vsetvli zero, a1, e8, m1, ta, ma
1196 ; CHECK-NEXT:    vror.vx v8, v8, a0
1197 ; CHECK-NEXT:    ret
1198 entry:
1199   %a = call <vscale x 8 x i8> @llvm.riscv.vror.nxv8i8(
1200     <vscale x 8 x i8> undef,
1201     <vscale x 8 x i8> %0,
1202     iXLen %1,
1203     iXLen %2)
1205   ret <vscale x 8 x i8> %a
1208 declare <vscale x 8 x i8> @llvm.riscv.vror.mask.nxv8i8(
1209   <vscale x 8 x i8>,
1210   <vscale x 8 x i8>,
1211   iXLen,
1212   <vscale x 8 x i1>,
1213   iXLen,
1214   iXLen)
1216 define <vscale x 8 x i8> @intrinsic_vror_mask_vx_nxv8i8(<vscale x 8 x i8> %0, <vscale x 8 x i8> %1, iXLen %2, <vscale x 8 x i1> %3, iXLen %4) nounwind {
1217 ; CHECK-LABEL: intrinsic_vror_mask_vx_nxv8i8:
1218 ; CHECK:       # %bb.0: # %entry
1219 ; CHECK-NEXT:    vsetvli zero, a1, e8, m1, ta, mu
1220 ; CHECK-NEXT:    vror.vx v8, v9, a0, v0.t
1221 ; CHECK-NEXT:    ret
1222 entry:
1223   %a = call <vscale x 8 x i8> @llvm.riscv.vror.mask.nxv8i8(
1224     <vscale x 8 x i8> %0,
1225     <vscale x 8 x i8> %1,
1226     iXLen %2,
1227     <vscale x 8 x i1> %3,
1228     iXLen %4, iXLen 1)
1230   ret <vscale x 8 x i8> %a
1233 declare <vscale x 16 x i8> @llvm.riscv.vror.nxv16i8(
1234   <vscale x 16 x i8>,
1235   <vscale x 16 x i8>,
1236   iXLen,
1237   iXLen)
1239 define <vscale x 16 x i8> @intrinsic_vror_vx_nxv16i8(<vscale x 16 x i8> %0, iXLen %1, iXLen %2) nounwind {
1240 ; CHECK-LABEL: intrinsic_vror_vx_nxv16i8:
1241 ; CHECK:       # %bb.0: # %entry
1242 ; CHECK-NEXT:    vsetvli zero, a1, e8, m2, ta, ma
1243 ; CHECK-NEXT:    vror.vx v8, v8, a0
1244 ; CHECK-NEXT:    ret
1245 entry:
1246   %a = call <vscale x 16 x i8> @llvm.riscv.vror.nxv16i8(
1247     <vscale x 16 x i8> undef,
1248     <vscale x 16 x i8> %0,
1249     iXLen %1,
1250     iXLen %2)
1252   ret <vscale x 16 x i8> %a
1255 declare <vscale x 16 x i8> @llvm.riscv.vror.mask.nxv16i8(
1256   <vscale x 16 x i8>,
1257   <vscale x 16 x i8>,
1258   iXLen,
1259   <vscale x 16 x i1>,
1260   iXLen,
1261   iXLen)
1263 define <vscale x 16 x i8> @intrinsic_vror_mask_vx_nxv16i8(<vscale x 16 x i8> %0, <vscale x 16 x i8> %1, iXLen %2, <vscale x 16 x i1> %3, iXLen %4) nounwind {
1264 ; CHECK-LABEL: intrinsic_vror_mask_vx_nxv16i8:
1265 ; CHECK:       # %bb.0: # %entry
1266 ; CHECK-NEXT:    vsetvli zero, a1, e8, m2, ta, mu
1267 ; CHECK-NEXT:    vror.vx v8, v10, a0, v0.t
1268 ; CHECK-NEXT:    ret
1269 entry:
1270   %a = call <vscale x 16 x i8> @llvm.riscv.vror.mask.nxv16i8(
1271     <vscale x 16 x i8> %0,
1272     <vscale x 16 x i8> %1,
1273     iXLen %2,
1274     <vscale x 16 x i1> %3,
1275     iXLen %4, iXLen 1)
1277   ret <vscale x 16 x i8> %a
1280 declare <vscale x 32 x i8> @llvm.riscv.vror.nxv32i8(
1281   <vscale x 32 x i8>,
1282   <vscale x 32 x i8>,
1283   iXLen,
1284   iXLen)
1286 define <vscale x 32 x i8> @intrinsic_vror_vx_nxv32i8(<vscale x 32 x i8> %0, iXLen %1, iXLen %2) nounwind {
1287 ; CHECK-LABEL: intrinsic_vror_vx_nxv32i8:
1288 ; CHECK:       # %bb.0: # %entry
1289 ; CHECK-NEXT:    vsetvli zero, a1, e8, m4, ta, ma
1290 ; CHECK-NEXT:    vror.vx v8, v8, a0
1291 ; CHECK-NEXT:    ret
1292 entry:
1293   %a = call <vscale x 32 x i8> @llvm.riscv.vror.nxv32i8(
1294     <vscale x 32 x i8> undef,
1295     <vscale x 32 x i8> %0,
1296     iXLen %1,
1297     iXLen %2)
1299   ret <vscale x 32 x i8> %a
1302 declare <vscale x 32 x i8> @llvm.riscv.vror.mask.nxv32i8(
1303   <vscale x 32 x i8>,
1304   <vscale x 32 x i8>,
1305   iXLen,
1306   <vscale x 32 x i1>,
1307   iXLen,
1308   iXLen)
1310 define <vscale x 32 x i8> @intrinsic_vror_mask_vx_nxv32i8(<vscale x 32 x i8> %0, <vscale x 32 x i8> %1, iXLen %2, <vscale x 32 x i1> %3, iXLen %4) nounwind {
1311 ; CHECK-LABEL: intrinsic_vror_mask_vx_nxv32i8:
1312 ; CHECK:       # %bb.0: # %entry
1313 ; CHECK-NEXT:    vsetvli zero, a1, e8, m4, ta, mu
1314 ; CHECK-NEXT:    vror.vx v8, v12, a0, v0.t
1315 ; CHECK-NEXT:    ret
1316 entry:
1317   %a = call <vscale x 32 x i8> @llvm.riscv.vror.mask.nxv32i8(
1318     <vscale x 32 x i8> %0,
1319     <vscale x 32 x i8> %1,
1320     iXLen %2,
1321     <vscale x 32 x i1> %3,
1322     iXLen %4, iXLen 1)
1324   ret <vscale x 32 x i8> %a
1327 declare <vscale x 64 x i8> @llvm.riscv.vror.nxv64i8(
1328   <vscale x 64 x i8>,
1329   <vscale x 64 x i8>,
1330   iXLen,
1331   iXLen)
1333 define <vscale x 64 x i8> @intrinsic_vror_vx_nxv64i8(<vscale x 64 x i8> %0, iXLen %1, iXLen %2) nounwind {
1334 ; CHECK-LABEL: intrinsic_vror_vx_nxv64i8:
1335 ; CHECK:       # %bb.0: # %entry
1336 ; CHECK-NEXT:    vsetvli zero, a1, e8, m8, ta, ma
1337 ; CHECK-NEXT:    vror.vx v8, v8, a0
1338 ; CHECK-NEXT:    ret
1339 entry:
1340   %a = call <vscale x 64 x i8> @llvm.riscv.vror.nxv64i8(
1341     <vscale x 64 x i8> undef,
1342     <vscale x 64 x i8> %0,
1343     iXLen %1,
1344     iXLen %2)
1346   ret <vscale x 64 x i8> %a
1349 declare <vscale x 64 x i8> @llvm.riscv.vror.mask.nxv64i8(
1350   <vscale x 64 x i8>,
1351   <vscale x 64 x i8>,
1352   iXLen,
1353   <vscale x 64 x i1>,
1354   iXLen,
1355   iXLen)
1357 define <vscale x 64 x i8> @intrinsic_vror_mask_vx_nxv64i8(<vscale x 64 x i8> %0, <vscale x 64 x i8> %1, iXLen %2, <vscale x 64 x i1> %3, iXLen %4) nounwind {
1358 ; CHECK-LABEL: intrinsic_vror_mask_vx_nxv64i8:
1359 ; CHECK:       # %bb.0: # %entry
1360 ; CHECK-NEXT:    vsetvli zero, a1, e8, m8, ta, mu
1361 ; CHECK-NEXT:    vror.vx v8, v16, a0, v0.t
1362 ; CHECK-NEXT:    ret
1363 entry:
1364   %a = call <vscale x 64 x i8> @llvm.riscv.vror.mask.nxv64i8(
1365     <vscale x 64 x i8> %0,
1366     <vscale x 64 x i8> %1,
1367     iXLen %2,
1368     <vscale x 64 x i1> %3,
1369     iXLen %4, iXLen 1)
1371   ret <vscale x 64 x i8> %a
1374 declare <vscale x 1 x i16> @llvm.riscv.vror.nxv1i16(
1375   <vscale x 1 x i16>,
1376   <vscale x 1 x i16>,
1377   iXLen,
1378   iXLen)
1380 define <vscale x 1 x i16> @intrinsic_vror_vx_nxv1i16(<vscale x 1 x i16> %0, iXLen %1, iXLen %2) nounwind {
1381 ; CHECK-LABEL: intrinsic_vror_vx_nxv1i16:
1382 ; CHECK:       # %bb.0: # %entry
1383 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, ma
1384 ; CHECK-NEXT:    vror.vx v8, v8, a0
1385 ; CHECK-NEXT:    ret
1386 entry:
1387   %a = call <vscale x 1 x i16> @llvm.riscv.vror.nxv1i16(
1388     <vscale x 1 x i16> undef,
1389     <vscale x 1 x i16> %0,
1390     iXLen %1,
1391     iXLen %2)
1393   ret <vscale x 1 x i16> %a
1396 declare <vscale x 1 x i16> @llvm.riscv.vror.mask.nxv1i16(
1397   <vscale x 1 x i16>,
1398   <vscale x 1 x i16>,
1399   iXLen,
1400   <vscale x 1 x i1>,
1401   iXLen,
1402   iXLen)
1404 define <vscale x 1 x i16> @intrinsic_vror_mask_vx_nxv1i16(<vscale x 1 x i16> %0, <vscale x 1 x i16> %1, iXLen %2, <vscale x 1 x i1> %3, iXLen %4) nounwind {
1405 ; CHECK-LABEL: intrinsic_vror_mask_vx_nxv1i16:
1406 ; CHECK:       # %bb.0: # %entry
1407 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, mu
1408 ; CHECK-NEXT:    vror.vx v8, v9, a0, v0.t
1409 ; CHECK-NEXT:    ret
1410 entry:
1411   %a = call <vscale x 1 x i16> @llvm.riscv.vror.mask.nxv1i16(
1412     <vscale x 1 x i16> %0,
1413     <vscale x 1 x i16> %1,
1414     iXLen %2,
1415     <vscale x 1 x i1> %3,
1416     iXLen %4, iXLen 1)
1418   ret <vscale x 1 x i16> %a
1421 declare <vscale x 2 x i16> @llvm.riscv.vror.nxv2i16(
1422   <vscale x 2 x i16>,
1423   <vscale x 2 x i16>,
1424   iXLen,
1425   iXLen)
1427 define <vscale x 2 x i16> @intrinsic_vror_vx_nxv2i16(<vscale x 2 x i16> %0, iXLen %1, iXLen %2) nounwind {
1428 ; CHECK-LABEL: intrinsic_vror_vx_nxv2i16:
1429 ; CHECK:       # %bb.0: # %entry
1430 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, ma
1431 ; CHECK-NEXT:    vror.vx v8, v8, a0
1432 ; CHECK-NEXT:    ret
1433 entry:
1434   %a = call <vscale x 2 x i16> @llvm.riscv.vror.nxv2i16(
1435     <vscale x 2 x i16> undef,
1436     <vscale x 2 x i16> %0,
1437     iXLen %1,
1438     iXLen %2)
1440   ret <vscale x 2 x i16> %a
1443 declare <vscale x 2 x i16> @llvm.riscv.vror.mask.nxv2i16(
1444   <vscale x 2 x i16>,
1445   <vscale x 2 x i16>,
1446   iXLen,
1447   <vscale x 2 x i1>,
1448   iXLen,
1449   iXLen)
1451 define <vscale x 2 x i16> @intrinsic_vror_mask_vx_nxv2i16(<vscale x 2 x i16> %0, <vscale x 2 x i16> %1, iXLen %2, <vscale x 2 x i1> %3, iXLen %4) nounwind {
1452 ; CHECK-LABEL: intrinsic_vror_mask_vx_nxv2i16:
1453 ; CHECK:       # %bb.0: # %entry
1454 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, mu
1455 ; CHECK-NEXT:    vror.vx v8, v9, a0, v0.t
1456 ; CHECK-NEXT:    ret
1457 entry:
1458   %a = call <vscale x 2 x i16> @llvm.riscv.vror.mask.nxv2i16(
1459     <vscale x 2 x i16> %0,
1460     <vscale x 2 x i16> %1,
1461     iXLen %2,
1462     <vscale x 2 x i1> %3,
1463     iXLen %4, iXLen 1)
1465   ret <vscale x 2 x i16> %a
1468 declare <vscale x 4 x i16> @llvm.riscv.vror.nxv4i16(
1469   <vscale x 4 x i16>,
1470   <vscale x 4 x i16>,
1471   iXLen,
1472   iXLen)
1474 define <vscale x 4 x i16> @intrinsic_vror_vx_nxv4i16(<vscale x 4 x i16> %0, iXLen %1, iXLen %2) nounwind {
1475 ; CHECK-LABEL: intrinsic_vror_vx_nxv4i16:
1476 ; CHECK:       # %bb.0: # %entry
1477 ; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, ma
1478 ; CHECK-NEXT:    vror.vx v8, v8, a0
1479 ; CHECK-NEXT:    ret
1480 entry:
1481   %a = call <vscale x 4 x i16> @llvm.riscv.vror.nxv4i16(
1482     <vscale x 4 x i16> undef,
1483     <vscale x 4 x i16> %0,
1484     iXLen %1,
1485     iXLen %2)
1487   ret <vscale x 4 x i16> %a
1490 declare <vscale x 4 x i16> @llvm.riscv.vror.mask.nxv4i16(
1491   <vscale x 4 x i16>,
1492   <vscale x 4 x i16>,
1493   iXLen,
1494   <vscale x 4 x i1>,
1495   iXLen,
1496   iXLen)
1498 define <vscale x 4 x i16> @intrinsic_vror_mask_vx_nxv4i16(<vscale x 4 x i16> %0, <vscale x 4 x i16> %1, iXLen %2, <vscale x 4 x i1> %3, iXLen %4) nounwind {
1499 ; CHECK-LABEL: intrinsic_vror_mask_vx_nxv4i16:
1500 ; CHECK:       # %bb.0: # %entry
1501 ; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, mu
1502 ; CHECK-NEXT:    vror.vx v8, v9, a0, v0.t
1503 ; CHECK-NEXT:    ret
1504 entry:
1505   %a = call <vscale x 4 x i16> @llvm.riscv.vror.mask.nxv4i16(
1506     <vscale x 4 x i16> %0,
1507     <vscale x 4 x i16> %1,
1508     iXLen %2,
1509     <vscale x 4 x i1> %3,
1510     iXLen %4, iXLen 1)
1512   ret <vscale x 4 x i16> %a
1515 declare <vscale x 8 x i16> @llvm.riscv.vror.nxv8i16(
1516   <vscale x 8 x i16>,
1517   <vscale x 8 x i16>,
1518   iXLen,
1519   iXLen)
1521 define <vscale x 8 x i16> @intrinsic_vror_vx_nxv8i16(<vscale x 8 x i16> %0, iXLen %1, iXLen %2) nounwind {
1522 ; CHECK-LABEL: intrinsic_vror_vx_nxv8i16:
1523 ; CHECK:       # %bb.0: # %entry
1524 ; CHECK-NEXT:    vsetvli zero, a1, e16, m2, ta, ma
1525 ; CHECK-NEXT:    vror.vx v8, v8, a0
1526 ; CHECK-NEXT:    ret
1527 entry:
1528   %a = call <vscale x 8 x i16> @llvm.riscv.vror.nxv8i16(
1529     <vscale x 8 x i16> undef,
1530     <vscale x 8 x i16> %0,
1531     iXLen %1,
1532     iXLen %2)
1534   ret <vscale x 8 x i16> %a
1537 declare <vscale x 8 x i16> @llvm.riscv.vror.mask.nxv8i16(
1538   <vscale x 8 x i16>,
1539   <vscale x 8 x i16>,
1540   iXLen,
1541   <vscale x 8 x i1>,
1542   iXLen,
1543   iXLen)
1545 define <vscale x 8 x i16> @intrinsic_vror_mask_vx_nxv8i16(<vscale x 8 x i16> %0, <vscale x 8 x i16> %1, iXLen %2, <vscale x 8 x i1> %3, iXLen %4) nounwind {
1546 ; CHECK-LABEL: intrinsic_vror_mask_vx_nxv8i16:
1547 ; CHECK:       # %bb.0: # %entry
1548 ; CHECK-NEXT:    vsetvli zero, a1, e16, m2, ta, mu
1549 ; CHECK-NEXT:    vror.vx v8, v10, a0, v0.t
1550 ; CHECK-NEXT:    ret
1551 entry:
1552   %a = call <vscale x 8 x i16> @llvm.riscv.vror.mask.nxv8i16(
1553     <vscale x 8 x i16> %0,
1554     <vscale x 8 x i16> %1,
1555     iXLen %2,
1556     <vscale x 8 x i1> %3,
1557     iXLen %4, iXLen 1)
1559   ret <vscale x 8 x i16> %a
1562 declare <vscale x 16 x i16> @llvm.riscv.vror.nxv16i16(
1563   <vscale x 16 x i16>,
1564   <vscale x 16 x i16>,
1565   iXLen,
1566   iXLen)
1568 define <vscale x 16 x i16> @intrinsic_vror_vx_nxv16i16(<vscale x 16 x i16> %0, iXLen %1, iXLen %2) nounwind {
1569 ; CHECK-LABEL: intrinsic_vror_vx_nxv16i16:
1570 ; CHECK:       # %bb.0: # %entry
1571 ; CHECK-NEXT:    vsetvli zero, a1, e16, m4, ta, ma
1572 ; CHECK-NEXT:    vror.vx v8, v8, a0
1573 ; CHECK-NEXT:    ret
1574 entry:
1575   %a = call <vscale x 16 x i16> @llvm.riscv.vror.nxv16i16(
1576     <vscale x 16 x i16> undef,
1577     <vscale x 16 x i16> %0,
1578     iXLen %1,
1579     iXLen %2)
1581   ret <vscale x 16 x i16> %a
1584 declare <vscale x 16 x i16> @llvm.riscv.vror.mask.nxv16i16(
1585   <vscale x 16 x i16>,
1586   <vscale x 16 x i16>,
1587   iXLen,
1588   <vscale x 16 x i1>,
1589   iXLen,
1590   iXLen)
1592 define <vscale x 16 x i16> @intrinsic_vror_mask_vx_nxv16i16(<vscale x 16 x i16> %0, <vscale x 16 x i16> %1, iXLen %2, <vscale x 16 x i1> %3, iXLen %4) nounwind {
1593 ; CHECK-LABEL: intrinsic_vror_mask_vx_nxv16i16:
1594 ; CHECK:       # %bb.0: # %entry
1595 ; CHECK-NEXT:    vsetvli zero, a1, e16, m4, ta, mu
1596 ; CHECK-NEXT:    vror.vx v8, v12, a0, v0.t
1597 ; CHECK-NEXT:    ret
1598 entry:
1599   %a = call <vscale x 16 x i16> @llvm.riscv.vror.mask.nxv16i16(
1600     <vscale x 16 x i16> %0,
1601     <vscale x 16 x i16> %1,
1602     iXLen %2,
1603     <vscale x 16 x i1> %3,
1604     iXLen %4, iXLen 1)
1606   ret <vscale x 16 x i16> %a
1609 declare <vscale x 32 x i16> @llvm.riscv.vror.nxv32i16(
1610   <vscale x 32 x i16>,
1611   <vscale x 32 x i16>,
1612   iXLen,
1613   iXLen)
1615 define <vscale x 32 x i16> @intrinsic_vror_vx_nxv32i16(<vscale x 32 x i16> %0, iXLen %1, iXLen %2) nounwind {
1616 ; CHECK-LABEL: intrinsic_vror_vx_nxv32i16:
1617 ; CHECK:       # %bb.0: # %entry
1618 ; CHECK-NEXT:    vsetvli zero, a1, e16, m8, ta, ma
1619 ; CHECK-NEXT:    vror.vx v8, v8, a0
1620 ; CHECK-NEXT:    ret
1621 entry:
1622   %a = call <vscale x 32 x i16> @llvm.riscv.vror.nxv32i16(
1623     <vscale x 32 x i16> undef,
1624     <vscale x 32 x i16> %0,
1625     iXLen %1,
1626     iXLen %2)
1628   ret <vscale x 32 x i16> %a
1631 declare <vscale x 32 x i16> @llvm.riscv.vror.mask.nxv32i16(
1632   <vscale x 32 x i16>,
1633   <vscale x 32 x i16>,
1634   iXLen,
1635   <vscale x 32 x i1>,
1636   iXLen,
1637   iXLen)
1639 define <vscale x 32 x i16> @intrinsic_vror_mask_vx_nxv32i16(<vscale x 32 x i16> %0, <vscale x 32 x i16> %1, iXLen %2, <vscale x 32 x i1> %3, iXLen %4) nounwind {
1640 ; CHECK-LABEL: intrinsic_vror_mask_vx_nxv32i16:
1641 ; CHECK:       # %bb.0: # %entry
1642 ; CHECK-NEXT:    vsetvli zero, a1, e16, m8, ta, mu
1643 ; CHECK-NEXT:    vror.vx v8, v16, a0, v0.t
1644 ; CHECK-NEXT:    ret
1645 entry:
1646   %a = call <vscale x 32 x i16> @llvm.riscv.vror.mask.nxv32i16(
1647     <vscale x 32 x i16> %0,
1648     <vscale x 32 x i16> %1,
1649     iXLen %2,
1650     <vscale x 32 x i1> %3,
1651     iXLen %4, iXLen 1)
1653   ret <vscale x 32 x i16> %a
1656 declare <vscale x 1 x i32> @llvm.riscv.vror.nxv1i32(
1657   <vscale x 1 x i32>,
1658   <vscale x 1 x i32>,
1659   iXLen,
1660   iXLen)
1662 define <vscale x 1 x i32> @intrinsic_vror_vx_nxv1i32(<vscale x 1 x i32> %0, iXLen %1, iXLen %2) nounwind {
1663 ; CHECK-LABEL: intrinsic_vror_vx_nxv1i32:
1664 ; CHECK:       # %bb.0: # %entry
1665 ; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, ma
1666 ; CHECK-NEXT:    vror.vx v8, v8, a0
1667 ; CHECK-NEXT:    ret
1668 entry:
1669   %a = call <vscale x 1 x i32> @llvm.riscv.vror.nxv1i32(
1670     <vscale x 1 x i32> undef,
1671     <vscale x 1 x i32> %0,
1672     iXLen %1,
1673     iXLen %2)
1675   ret <vscale x 1 x i32> %a
1678 declare <vscale x 1 x i32> @llvm.riscv.vror.mask.nxv1i32(
1679   <vscale x 1 x i32>,
1680   <vscale x 1 x i32>,
1681   iXLen,
1682   <vscale x 1 x i1>,
1683   iXLen,
1684   iXLen)
1686 define <vscale x 1 x i32> @intrinsic_vror_mask_vx_nxv1i32(<vscale x 1 x i32> %0, <vscale x 1 x i32> %1, iXLen %2, <vscale x 1 x i1> %3, iXLen %4) nounwind {
1687 ; CHECK-LABEL: intrinsic_vror_mask_vx_nxv1i32:
1688 ; CHECK:       # %bb.0: # %entry
1689 ; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, mu
1690 ; CHECK-NEXT:    vror.vx v8, v9, a0, v0.t
1691 ; CHECK-NEXT:    ret
1692 entry:
1693   %a = call <vscale x 1 x i32> @llvm.riscv.vror.mask.nxv1i32(
1694     <vscale x 1 x i32> %0,
1695     <vscale x 1 x i32> %1,
1696     iXLen %2,
1697     <vscale x 1 x i1> %3,
1698     iXLen %4, iXLen 1)
1700   ret <vscale x 1 x i32> %a
1703 declare <vscale x 2 x i32> @llvm.riscv.vror.nxv2i32(
1704   <vscale x 2 x i32>,
1705   <vscale x 2 x i32>,
1706   iXLen,
1707   iXLen)
1709 define <vscale x 2 x i32> @intrinsic_vror_vx_nxv2i32(<vscale x 2 x i32> %0, iXLen %1, iXLen %2) nounwind {
1710 ; CHECK-LABEL: intrinsic_vror_vx_nxv2i32:
1711 ; CHECK:       # %bb.0: # %entry
1712 ; CHECK-NEXT:    vsetvli zero, a1, e32, m1, ta, ma
1713 ; CHECK-NEXT:    vror.vx v8, v8, a0
1714 ; CHECK-NEXT:    ret
1715 entry:
1716   %a = call <vscale x 2 x i32> @llvm.riscv.vror.nxv2i32(
1717     <vscale x 2 x i32> undef,
1718     <vscale x 2 x i32> %0,
1719     iXLen %1,
1720     iXLen %2)
1722   ret <vscale x 2 x i32> %a
1725 declare <vscale x 2 x i32> @llvm.riscv.vror.mask.nxv2i32(
1726   <vscale x 2 x i32>,
1727   <vscale x 2 x i32>,
1728   iXLen,
1729   <vscale x 2 x i1>,
1730   iXLen,
1731   iXLen)
1733 define <vscale x 2 x i32> @intrinsic_vror_mask_vx_nxv2i32(<vscale x 2 x i32> %0, <vscale x 2 x i32> %1, iXLen %2, <vscale x 2 x i1> %3, iXLen %4) nounwind {
1734 ; CHECK-LABEL: intrinsic_vror_mask_vx_nxv2i32:
1735 ; CHECK:       # %bb.0: # %entry
1736 ; CHECK-NEXT:    vsetvli zero, a1, e32, m1, ta, mu
1737 ; CHECK-NEXT:    vror.vx v8, v9, a0, v0.t
1738 ; CHECK-NEXT:    ret
1739 entry:
1740   %a = call <vscale x 2 x i32> @llvm.riscv.vror.mask.nxv2i32(
1741     <vscale x 2 x i32> %0,
1742     <vscale x 2 x i32> %1,
1743     iXLen %2,
1744     <vscale x 2 x i1> %3,
1745     iXLen %4, iXLen 1)
1747   ret <vscale x 2 x i32> %a
1750 declare <vscale x 4 x i32> @llvm.riscv.vror.nxv4i32(
1751   <vscale x 4 x i32>,
1752   <vscale x 4 x i32>,
1753   iXLen,
1754   iXLen)
1756 define <vscale x 4 x i32> @intrinsic_vror_vx_nxv4i32(<vscale x 4 x i32> %0, iXLen %1, iXLen %2) nounwind {
1757 ; CHECK-LABEL: intrinsic_vror_vx_nxv4i32:
1758 ; CHECK:       # %bb.0: # %entry
1759 ; CHECK-NEXT:    vsetvli zero, a1, e32, m2, ta, ma
1760 ; CHECK-NEXT:    vror.vx v8, v8, a0
1761 ; CHECK-NEXT:    ret
1762 entry:
1763   %a = call <vscale x 4 x i32> @llvm.riscv.vror.nxv4i32(
1764     <vscale x 4 x i32> undef,
1765     <vscale x 4 x i32> %0,
1766     iXLen %1,
1767     iXLen %2)
1769   ret <vscale x 4 x i32> %a
1772 declare <vscale x 4 x i32> @llvm.riscv.vror.mask.nxv4i32(
1773   <vscale x 4 x i32>,
1774   <vscale x 4 x i32>,
1775   iXLen,
1776   <vscale x 4 x i1>,
1777   iXLen,
1778   iXLen)
1780 define <vscale x 4 x i32> @intrinsic_vror_mask_vx_nxv4i32(<vscale x 4 x i32> %0, <vscale x 4 x i32> %1, iXLen %2, <vscale x 4 x i1> %3, iXLen %4) nounwind {
1781 ; CHECK-LABEL: intrinsic_vror_mask_vx_nxv4i32:
1782 ; CHECK:       # %bb.0: # %entry
1783 ; CHECK-NEXT:    vsetvli zero, a1, e32, m2, ta, mu
1784 ; CHECK-NEXT:    vror.vx v8, v10, a0, v0.t
1785 ; CHECK-NEXT:    ret
1786 entry:
1787   %a = call <vscale x 4 x i32> @llvm.riscv.vror.mask.nxv4i32(
1788     <vscale x 4 x i32> %0,
1789     <vscale x 4 x i32> %1,
1790     iXLen %2,
1791     <vscale x 4 x i1> %3,
1792     iXLen %4, iXLen 1)
1794   ret <vscale x 4 x i32> %a
1797 declare <vscale x 8 x i32> @llvm.riscv.vror.nxv8i32(
1798   <vscale x 8 x i32>,
1799   <vscale x 8 x i32>,
1800   iXLen,
1801   iXLen)
1803 define <vscale x 8 x i32> @intrinsic_vror_vx_nxv8i32(<vscale x 8 x i32> %0, iXLen %1, iXLen %2) nounwind {
1804 ; CHECK-LABEL: intrinsic_vror_vx_nxv8i32:
1805 ; CHECK:       # %bb.0: # %entry
1806 ; CHECK-NEXT:    vsetvli zero, a1, e32, m4, ta, ma
1807 ; CHECK-NEXT:    vror.vx v8, v8, a0
1808 ; CHECK-NEXT:    ret
1809 entry:
1810   %a = call <vscale x 8 x i32> @llvm.riscv.vror.nxv8i32(
1811     <vscale x 8 x i32> undef,
1812     <vscale x 8 x i32> %0,
1813     iXLen %1,
1814     iXLen %2)
1816   ret <vscale x 8 x i32> %a
1819 declare <vscale x 8 x i32> @llvm.riscv.vror.mask.nxv8i32(
1820   <vscale x 8 x i32>,
1821   <vscale x 8 x i32>,
1822   iXLen,
1823   <vscale x 8 x i1>,
1824   iXLen,
1825   iXLen)
1827 define <vscale x 8 x i32> @intrinsic_vror_mask_vx_nxv8i32(<vscale x 8 x i32> %0, <vscale x 8 x i32> %1, iXLen %2, <vscale x 8 x i1> %3, iXLen %4) nounwind {
1828 ; CHECK-LABEL: intrinsic_vror_mask_vx_nxv8i32:
1829 ; CHECK:       # %bb.0: # %entry
1830 ; CHECK-NEXT:    vsetvli zero, a1, e32, m4, ta, mu
1831 ; CHECK-NEXT:    vror.vx v8, v12, a0, v0.t
1832 ; CHECK-NEXT:    ret
1833 entry:
1834   %a = call <vscale x 8 x i32> @llvm.riscv.vror.mask.nxv8i32(
1835     <vscale x 8 x i32> %0,
1836     <vscale x 8 x i32> %1,
1837     iXLen %2,
1838     <vscale x 8 x i1> %3,
1839     iXLen %4, iXLen 1)
1841   ret <vscale x 8 x i32> %a
1844 declare <vscale x 16 x i32> @llvm.riscv.vror.nxv16i32(
1845   <vscale x 16 x i32>,
1846   <vscale x 16 x i32>,
1847   iXLen,
1848   iXLen)
1850 define <vscale x 16 x i32> @intrinsic_vror_vx_nxv16i32(<vscale x 16 x i32> %0, iXLen %1, iXLen %2) nounwind {
1851 ; CHECK-LABEL: intrinsic_vror_vx_nxv16i32:
1852 ; CHECK:       # %bb.0: # %entry
1853 ; CHECK-NEXT:    vsetvli zero, a1, e32, m8, ta, ma
1854 ; CHECK-NEXT:    vror.vx v8, v8, a0
1855 ; CHECK-NEXT:    ret
1856 entry:
1857   %a = call <vscale x 16 x i32> @llvm.riscv.vror.nxv16i32(
1858     <vscale x 16 x i32> undef,
1859     <vscale x 16 x i32> %0,
1860     iXLen %1,
1861     iXLen %2)
1863   ret <vscale x 16 x i32> %a
1866 declare <vscale x 16 x i32> @llvm.riscv.vror.mask.nxv16i32(
1867   <vscale x 16 x i32>,
1868   <vscale x 16 x i32>,
1869   iXLen,
1870   <vscale x 16 x i1>,
1871   iXLen,
1872   iXLen)
1874 define <vscale x 16 x i32> @intrinsic_vror_mask_vx_nxv16i32(<vscale x 16 x i32> %0, <vscale x 16 x i32> %1, iXLen %2, <vscale x 16 x i1> %3, iXLen %4) nounwind {
1875 ; CHECK-LABEL: intrinsic_vror_mask_vx_nxv16i32:
1876 ; CHECK:       # %bb.0: # %entry
1877 ; CHECK-NEXT:    vsetvli zero, a1, e32, m8, ta, mu
1878 ; CHECK-NEXT:    vror.vx v8, v16, a0, v0.t
1879 ; CHECK-NEXT:    ret
1880 entry:
1881   %a = call <vscale x 16 x i32> @llvm.riscv.vror.mask.nxv16i32(
1882     <vscale x 16 x i32> %0,
1883     <vscale x 16 x i32> %1,
1884     iXLen %2,
1885     <vscale x 16 x i1> %3,
1886     iXLen %4, iXLen 1)
1888   ret <vscale x 16 x i32> %a
1891 declare <vscale x 1 x i64> @llvm.riscv.vror.nxv1i64(
1892   <vscale x 1 x i64>,
1893   <vscale x 1 x i64>,
1894   iXLen,
1895   iXLen)
1897 define <vscale x 1 x i64> @intrinsic_vror_vx_nxv1i64(<vscale x 1 x i64> %0, iXLen %1, iXLen %2) nounwind {
1898 ; CHECK-LABEL: intrinsic_vror_vx_nxv1i64:
1899 ; CHECK:       # %bb.0: # %entry
1900 ; CHECK-NEXT:    vsetvli zero, a1, e64, m1, ta, ma
1901 ; CHECK-NEXT:    vror.vx v8, v8, a0
1902 ; CHECK-NEXT:    ret
1903 entry:
1904   %a = call <vscale x 1 x i64> @llvm.riscv.vror.nxv1i64(
1905     <vscale x 1 x i64> undef,
1906     <vscale x 1 x i64> %0,
1907     iXLen %1,
1908     iXLen %2)
1910   ret <vscale x 1 x i64> %a
1913 declare <vscale x 1 x i64> @llvm.riscv.vror.mask.nxv1i64(
1914   <vscale x 1 x i64>,
1915   <vscale x 1 x i64>,
1916   iXLen,
1917   <vscale x 1 x i1>,
1918   iXLen,
1919   iXLen)
1921 define <vscale x 1 x i64> @intrinsic_vror_mask_vx_nxv1i64(<vscale x 1 x i64> %0, <vscale x 1 x i64> %1, iXLen %2, <vscale x 1 x i1> %3, iXLen %4) nounwind {
1922 ; CHECK-LABEL: intrinsic_vror_mask_vx_nxv1i64:
1923 ; CHECK:       # %bb.0: # %entry
1924 ; CHECK-NEXT:    vsetvli zero, a1, e64, m1, ta, mu
1925 ; CHECK-NEXT:    vror.vx v8, v9, a0, v0.t
1926 ; CHECK-NEXT:    ret
1927 entry:
1928   %a = call <vscale x 1 x i64> @llvm.riscv.vror.mask.nxv1i64(
1929     <vscale x 1 x i64> %0,
1930     <vscale x 1 x i64> %1,
1931     iXLen %2,
1932     <vscale x 1 x i1> %3,
1933     iXLen %4, iXLen 1)
1935   ret <vscale x 1 x i64> %a
1938 declare <vscale x 2 x i64> @llvm.riscv.vror.nxv2i64(
1939   <vscale x 2 x i64>,
1940   <vscale x 2 x i64>,
1941   iXLen,
1942   iXLen)
1944 define <vscale x 2 x i64> @intrinsic_vror_vx_nxv2i64(<vscale x 2 x i64> %0, iXLen %1, iXLen %2) nounwind {
1945 ; CHECK-LABEL: intrinsic_vror_vx_nxv2i64:
1946 ; CHECK:       # %bb.0: # %entry
1947 ; CHECK-NEXT:    vsetvli zero, a1, e64, m2, ta, ma
1948 ; CHECK-NEXT:    vror.vx v8, v8, a0
1949 ; CHECK-NEXT:    ret
1950 entry:
1951   %a = call <vscale x 2 x i64> @llvm.riscv.vror.nxv2i64(
1952     <vscale x 2 x i64> undef,
1953     <vscale x 2 x i64> %0,
1954     iXLen %1,
1955     iXLen %2)
1957   ret <vscale x 2 x i64> %a
1960 declare <vscale x 2 x i64> @llvm.riscv.vror.mask.nxv2i64(
1961   <vscale x 2 x i64>,
1962   <vscale x 2 x i64>,
1963   iXLen,
1964   <vscale x 2 x i1>,
1965   iXLen,
1966   iXLen)
1968 define <vscale x 2 x i64> @intrinsic_vror_mask_vx_nxv2i64(<vscale x 2 x i64> %0, <vscale x 2 x i64> %1, iXLen %2, <vscale x 2 x i1> %3, iXLen %4) nounwind {
1969 ; CHECK-LABEL: intrinsic_vror_mask_vx_nxv2i64:
1970 ; CHECK:       # %bb.0: # %entry
1971 ; CHECK-NEXT:    vsetvli zero, a1, e64, m2, ta, mu
1972 ; CHECK-NEXT:    vror.vx v8, v10, a0, v0.t
1973 ; CHECK-NEXT:    ret
1974 entry:
1975   %a = call <vscale x 2 x i64> @llvm.riscv.vror.mask.nxv2i64(
1976     <vscale x 2 x i64> %0,
1977     <vscale x 2 x i64> %1,
1978     iXLen %2,
1979     <vscale x 2 x i1> %3,
1980     iXLen %4, iXLen 1)
1982   ret <vscale x 2 x i64> %a
1985 declare <vscale x 4 x i64> @llvm.riscv.vror.nxv4i64(
1986   <vscale x 4 x i64>,
1987   <vscale x 4 x i64>,
1988   iXLen,
1989   iXLen)
1991 define <vscale x 4 x i64> @intrinsic_vror_vx_nxv4i64(<vscale x 4 x i64> %0, iXLen %1, iXLen %2) nounwind {
1992 ; CHECK-LABEL: intrinsic_vror_vx_nxv4i64:
1993 ; CHECK:       # %bb.0: # %entry
1994 ; CHECK-NEXT:    vsetvli zero, a1, e64, m4, ta, ma
1995 ; CHECK-NEXT:    vror.vx v8, v8, a0
1996 ; CHECK-NEXT:    ret
1997 entry:
1998   %a = call <vscale x 4 x i64> @llvm.riscv.vror.nxv4i64(
1999     <vscale x 4 x i64> undef,
2000     <vscale x 4 x i64> %0,
2001     iXLen %1,
2002     iXLen %2)
2004   ret <vscale x 4 x i64> %a
2007 declare <vscale x 4 x i64> @llvm.riscv.vror.mask.nxv4i64(
2008   <vscale x 4 x i64>,
2009   <vscale x 4 x i64>,
2010   iXLen,
2011   <vscale x 4 x i1>,
2012   iXLen,
2013   iXLen)
2015 define <vscale x 4 x i64> @intrinsic_vror_mask_vx_nxv4i64(<vscale x 4 x i64> %0, <vscale x 4 x i64> %1, iXLen %2, <vscale x 4 x i1> %3, iXLen %4) nounwind {
2016 ; CHECK-LABEL: intrinsic_vror_mask_vx_nxv4i64:
2017 ; CHECK:       # %bb.0: # %entry
2018 ; CHECK-NEXT:    vsetvli zero, a1, e64, m4, ta, mu
2019 ; CHECK-NEXT:    vror.vx v8, v12, a0, v0.t
2020 ; CHECK-NEXT:    ret
2021 entry:
2022   %a = call <vscale x 4 x i64> @llvm.riscv.vror.mask.nxv4i64(
2023     <vscale x 4 x i64> %0,
2024     <vscale x 4 x i64> %1,
2025     iXLen %2,
2026     <vscale x 4 x i1> %3,
2027     iXLen %4, iXLen 1)
2029   ret <vscale x 4 x i64> %a
2032 declare <vscale x 8 x i64> @llvm.riscv.vror.nxv8i64(
2033   <vscale x 8 x i64>,
2034   <vscale x 8 x i64>,
2035   iXLen,
2036   iXLen)
2038 define <vscale x 8 x i64> @intrinsic_vror_vx_nxv8i64(<vscale x 8 x i64> %0, iXLen %1, iXLen %2) nounwind {
2039 ; CHECK-LABEL: intrinsic_vror_vx_nxv8i64:
2040 ; CHECK:       # %bb.0: # %entry
2041 ; CHECK-NEXT:    vsetvli zero, a1, e64, m8, ta, ma
2042 ; CHECK-NEXT:    vror.vx v8, v8, a0
2043 ; CHECK-NEXT:    ret
2044 entry:
2045   %a = call <vscale x 8 x i64> @llvm.riscv.vror.nxv8i64(
2046     <vscale x 8 x i64> undef,
2047     <vscale x 8 x i64> %0,
2048     iXLen %1,
2049     iXLen %2)
2051   ret <vscale x 8 x i64> %a
2054 declare <vscale x 8 x i64> @llvm.riscv.vror.mask.nxv8i64(
2055   <vscale x 8 x i64>,
2056   <vscale x 8 x i64>,
2057   iXLen,
2058   <vscale x 8 x i1>,
2059   iXLen,
2060   iXLen)
2062 define <vscale x 8 x i64> @intrinsic_vror_mask_vx_nxv8i64(<vscale x 8 x i64> %0, <vscale x 8 x i64> %1, iXLen %2, <vscale x 8 x i1> %3, iXLen %4) nounwind {
2063 ; CHECK-LABEL: intrinsic_vror_mask_vx_nxv8i64:
2064 ; CHECK:       # %bb.0: # %entry
2065 ; CHECK-NEXT:    vsetvli zero, a1, e64, m8, ta, mu
2066 ; CHECK-NEXT:    vror.vx v8, v16, a0, v0.t
2067 ; CHECK-NEXT:    ret
2068 entry:
2069   %a = call <vscale x 8 x i64> @llvm.riscv.vror.mask.nxv8i64(
2070     <vscale x 8 x i64> %0,
2071     <vscale x 8 x i64> %1,
2072     iXLen %2,
2073     <vscale x 8 x i1> %3,
2074     iXLen %4, iXLen 1)
2076   ret <vscale x 8 x i64> %a
2079 define <vscale x 1 x i8> @intrinsic_vror_vi_nxv1i8(<vscale x 1 x i8> %0, iXLen %1) nounwind {
2080 ; CHECK-LABEL: intrinsic_vror_vi_nxv1i8:
2081 ; CHECK:       # %bb.0: # %entry
2082 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf8, ta, ma
2083 ; CHECK-NEXT:    vror.vi v8, v8, 2
2084 ; CHECK-NEXT:    ret
2085 entry:
2086   %a = call <vscale x 1 x i8> @llvm.riscv.vror.nxv1i8(
2087     <vscale x 1 x i8> undef,
2088     <vscale x 1 x i8> %0,
2089     iXLen 2,
2090     iXLen %1)
2092   ret <vscale x 1 x i8> %a
2095 define <vscale x 1 x i8> @intrinsic_vror_mask_vi_nxv1i8(<vscale x 1 x i8> %0, <vscale x 1 x i8> %1, <vscale x 1 x i1> %2, iXLen %3) nounwind {
2096 ; CHECK-LABEL: intrinsic_vror_mask_vi_nxv1i8:
2097 ; CHECK:       # %bb.0: # %entry
2098 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf8, ta, mu
2099 ; CHECK-NEXT:    vror.vi v8, v9, 2, v0.t
2100 ; CHECK-NEXT:    ret
2101 entry:
2102   %a = call <vscale x 1 x i8> @llvm.riscv.vror.mask.nxv1i8(
2103     <vscale x 1 x i8> %0,
2104     <vscale x 1 x i8> %1,
2105     iXLen 2,
2106     <vscale x 1 x i1> %2,
2107     iXLen %3, iXLen 1)
2109   ret <vscale x 1 x i8> %a
2112 define <vscale x 2 x i8> @intrinsic_vror_vi_nxv2i8(<vscale x 2 x i8> %0, iXLen %1) nounwind {
2113 ; CHECK-LABEL: intrinsic_vror_vi_nxv2i8:
2114 ; CHECK:       # %bb.0: # %entry
2115 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf4, ta, ma
2116 ; CHECK-NEXT:    vror.vi v8, v8, 2
2117 ; CHECK-NEXT:    ret
2118 entry:
2119   %a = call <vscale x 2 x i8> @llvm.riscv.vror.nxv2i8(
2120     <vscale x 2 x i8> undef,
2121     <vscale x 2 x i8> %0,
2122     iXLen 2,
2123     iXLen %1)
2125   ret <vscale x 2 x i8> %a
2128 define <vscale x 2 x i8> @intrinsic_vror_mask_vi_nxv2i8(<vscale x 2 x i8> %0, <vscale x 2 x i8> %1, <vscale x 2 x i1> %2, iXLen %3) nounwind {
2129 ; CHECK-LABEL: intrinsic_vror_mask_vi_nxv2i8:
2130 ; CHECK:       # %bb.0: # %entry
2131 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf4, ta, mu
2132 ; CHECK-NEXT:    vror.vi v8, v9, 2, v0.t
2133 ; CHECK-NEXT:    ret
2134 entry:
2135   %a = call <vscale x 2 x i8> @llvm.riscv.vror.mask.nxv2i8(
2136     <vscale x 2 x i8> %0,
2137     <vscale x 2 x i8> %1,
2138     iXLen 2,
2139     <vscale x 2 x i1> %2,
2140     iXLen %3, iXLen 1)
2142   ret <vscale x 2 x i8> %a
2145 define <vscale x 4 x i8> @intrinsic_vror_vi_nxv4i8(<vscale x 4 x i8> %0, iXLen %1) nounwind {
2146 ; CHECK-LABEL: intrinsic_vror_vi_nxv4i8:
2147 ; CHECK:       # %bb.0: # %entry
2148 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf2, ta, ma
2149 ; CHECK-NEXT:    vror.vi v8, v8, 2
2150 ; CHECK-NEXT:    ret
2151 entry:
2152   %a = call <vscale x 4 x i8> @llvm.riscv.vror.nxv4i8(
2153     <vscale x 4 x i8> undef,
2154     <vscale x 4 x i8> %0,
2155     iXLen 2,
2156     iXLen %1)
2158   ret <vscale x 4 x i8> %a
2161 define <vscale x 4 x i8> @intrinsic_vror_mask_vi_nxv4i8(<vscale x 4 x i8> %0, <vscale x 4 x i8> %1, <vscale x 4 x i1> %2, iXLen %3) nounwind {
2162 ; CHECK-LABEL: intrinsic_vror_mask_vi_nxv4i8:
2163 ; CHECK:       # %bb.0: # %entry
2164 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf2, ta, mu
2165 ; CHECK-NEXT:    vror.vi v8, v9, 2, v0.t
2166 ; CHECK-NEXT:    ret
2167 entry:
2168   %a = call <vscale x 4 x i8> @llvm.riscv.vror.mask.nxv4i8(
2169     <vscale x 4 x i8> %0,
2170     <vscale x 4 x i8> %1,
2171     iXLen 2,
2172     <vscale x 4 x i1> %2,
2173     iXLen %3, iXLen 1)
2175   ret <vscale x 4 x i8> %a
2178 define <vscale x 8 x i8> @intrinsic_vror_vi_nxv8i8(<vscale x 8 x i8> %0, iXLen %1) nounwind {
2179 ; CHECK-LABEL: intrinsic_vror_vi_nxv8i8:
2180 ; CHECK:       # %bb.0: # %entry
2181 ; CHECK-NEXT:    vsetvli zero, a0, e8, m1, ta, ma
2182 ; CHECK-NEXT:    vror.vi v8, v8, 2
2183 ; CHECK-NEXT:    ret
2184 entry:
2185   %a = call <vscale x 8 x i8> @llvm.riscv.vror.nxv8i8(
2186     <vscale x 8 x i8> undef,
2187     <vscale x 8 x i8> %0,
2188     iXLen 2,
2189     iXLen %1)
2191   ret <vscale x 8 x i8> %a
2194 define <vscale x 8 x i8> @intrinsic_vror_mask_vi_nxv8i8(<vscale x 8 x i8> %0, <vscale x 8 x i8> %1, <vscale x 8 x i1> %2, iXLen %3) nounwind {
2195 ; CHECK-LABEL: intrinsic_vror_mask_vi_nxv8i8:
2196 ; CHECK:       # %bb.0: # %entry
2197 ; CHECK-NEXT:    vsetvli zero, a0, e8, m1, ta, mu
2198 ; CHECK-NEXT:    vror.vi v8, v9, 2, v0.t
2199 ; CHECK-NEXT:    ret
2200 entry:
2201   %a = call <vscale x 8 x i8> @llvm.riscv.vror.mask.nxv8i8(
2202     <vscale x 8 x i8> %0,
2203     <vscale x 8 x i8> %1,
2204     iXLen 2,
2205     <vscale x 8 x i1> %2,
2206     iXLen %3, iXLen 1)
2208   ret <vscale x 8 x i8> %a
2211 define <vscale x 16 x i8> @intrinsic_vror_vi_nxv16i8(<vscale x 16 x i8> %0, iXLen %1) nounwind {
2212 ; CHECK-LABEL: intrinsic_vror_vi_nxv16i8:
2213 ; CHECK:       # %bb.0: # %entry
2214 ; CHECK-NEXT:    vsetvli zero, a0, e8, m2, ta, ma
2215 ; CHECK-NEXT:    vror.vi v8, v8, 2
2216 ; CHECK-NEXT:    ret
2217 entry:
2218   %a = call <vscale x 16 x i8> @llvm.riscv.vror.nxv16i8(
2219     <vscale x 16 x i8> undef,
2220     <vscale x 16 x i8> %0,
2221     iXLen 2,
2222     iXLen %1)
2224   ret <vscale x 16 x i8> %a
2227 define <vscale x 16 x i8> @intrinsic_vror_mask_vi_nxv16i8(<vscale x 16 x i8> %0, <vscale x 16 x i8> %1, <vscale x 16 x i1> %2, iXLen %3) nounwind {
2228 ; CHECK-LABEL: intrinsic_vror_mask_vi_nxv16i8:
2229 ; CHECK:       # %bb.0: # %entry
2230 ; CHECK-NEXT:    vsetvli zero, a0, e8, m2, ta, mu
2231 ; CHECK-NEXT:    vror.vi v8, v10, 2, v0.t
2232 ; CHECK-NEXT:    ret
2233 entry:
2234   %a = call <vscale x 16 x i8> @llvm.riscv.vror.mask.nxv16i8(
2235     <vscale x 16 x i8> %0,
2236     <vscale x 16 x i8> %1,
2237     iXLen 2,
2238     <vscale x 16 x i1> %2,
2239     iXLen %3, iXLen 1)
2241   ret <vscale x 16 x i8> %a
2244 define <vscale x 32 x i8> @intrinsic_vror_vi_nxv32i8(<vscale x 32 x i8> %0, iXLen %1) nounwind {
2245 ; CHECK-LABEL: intrinsic_vror_vi_nxv32i8:
2246 ; CHECK:       # %bb.0: # %entry
2247 ; CHECK-NEXT:    vsetvli zero, a0, e8, m4, ta, ma
2248 ; CHECK-NEXT:    vror.vi v8, v8, 2
2249 ; CHECK-NEXT:    ret
2250 entry:
2251   %a = call <vscale x 32 x i8> @llvm.riscv.vror.nxv32i8(
2252     <vscale x 32 x i8> undef,
2253     <vscale x 32 x i8> %0,
2254     iXLen 2,
2255     iXLen %1)
2257   ret <vscale x 32 x i8> %a
2260 define <vscale x 32 x i8> @intrinsic_vror_mask_vi_nxv32i8(<vscale x 32 x i8> %0, <vscale x 32 x i8> %1, <vscale x 32 x i1> %2, iXLen %3) nounwind {
2261 ; CHECK-LABEL: intrinsic_vror_mask_vi_nxv32i8:
2262 ; CHECK:       # %bb.0: # %entry
2263 ; CHECK-NEXT:    vsetvli zero, a0, e8, m4, ta, mu
2264 ; CHECK-NEXT:    vror.vi v8, v12, 2, v0.t
2265 ; CHECK-NEXT:    ret
2266 entry:
2267   %a = call <vscale x 32 x i8> @llvm.riscv.vror.mask.nxv32i8(
2268     <vscale x 32 x i8> %0,
2269     <vscale x 32 x i8> %1,
2270     iXLen 2,
2271     <vscale x 32 x i1> %2,
2272     iXLen %3, iXLen 1)
2274   ret <vscale x 32 x i8> %a
2277 define <vscale x 64 x i8> @intrinsic_vror_vi_nxv64i8(<vscale x 64 x i8> %0, iXLen %1) nounwind {
2278 ; CHECK-LABEL: intrinsic_vror_vi_nxv64i8:
2279 ; CHECK:       # %bb.0: # %entry
2280 ; CHECK-NEXT:    vsetvli zero, a0, e8, m8, ta, ma
2281 ; CHECK-NEXT:    vror.vi v8, v8, 2
2282 ; CHECK-NEXT:    ret
2283 entry:
2284   %a = call <vscale x 64 x i8> @llvm.riscv.vror.nxv64i8(
2285     <vscale x 64 x i8> undef,
2286     <vscale x 64 x i8> %0,
2287     iXLen 2,
2288     iXLen %1)
2290   ret <vscale x 64 x i8> %a
2293 define <vscale x 64 x i8> @intrinsic_vror_mask_vi_nxv64i8(<vscale x 64 x i8> %0, <vscale x 64 x i8> %1, <vscale x 64 x i1> %2, iXLen %3) nounwind {
2294 ; CHECK-LABEL: intrinsic_vror_mask_vi_nxv64i8:
2295 ; CHECK:       # %bb.0: # %entry
2296 ; CHECK-NEXT:    vsetvli zero, a0, e8, m8, ta, mu
2297 ; CHECK-NEXT:    vror.vi v8, v16, 2, v0.t
2298 ; CHECK-NEXT:    ret
2299 entry:
2300   %a = call <vscale x 64 x i8> @llvm.riscv.vror.mask.nxv64i8(
2301     <vscale x 64 x i8> %0,
2302     <vscale x 64 x i8> %1,
2303     iXLen 2,
2304     <vscale x 64 x i1> %2,
2305     iXLen %3, iXLen 1)
2307   ret <vscale x 64 x i8> %a
2310 define <vscale x 1 x i16> @intrinsic_vror_vi_nxv1i16(<vscale x 1 x i16> %0, iXLen %1) nounwind {
2311 ; CHECK-LABEL: intrinsic_vror_vi_nxv1i16:
2312 ; CHECK:       # %bb.0: # %entry
2313 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma
2314 ; CHECK-NEXT:    vror.vi v8, v8, 2
2315 ; CHECK-NEXT:    ret
2316 entry:
2317   %a = call <vscale x 1 x i16> @llvm.riscv.vror.nxv1i16(
2318     <vscale x 1 x i16> undef,
2319     <vscale x 1 x i16> %0,
2320     iXLen 2,
2321     iXLen %1)
2323   ret <vscale x 1 x i16> %a
2326 define <vscale x 1 x i16> @intrinsic_vror_mask_vi_nxv1i16(<vscale x 1 x i16> %0, <vscale x 1 x i16> %1, <vscale x 1 x i1> %2, iXLen %3) nounwind {
2327 ; CHECK-LABEL: intrinsic_vror_mask_vi_nxv1i16:
2328 ; CHECK:       # %bb.0: # %entry
2329 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, ta, mu
2330 ; CHECK-NEXT:    vror.vi v8, v9, 2, v0.t
2331 ; CHECK-NEXT:    ret
2332 entry:
2333   %a = call <vscale x 1 x i16> @llvm.riscv.vror.mask.nxv1i16(
2334     <vscale x 1 x i16> %0,
2335     <vscale x 1 x i16> %1,
2336     iXLen 2,
2337     <vscale x 1 x i1> %2,
2338     iXLen %3, iXLen 1)
2340   ret <vscale x 1 x i16> %a
2343 define <vscale x 2 x i16> @intrinsic_vror_vi_nxv2i16(<vscale x 2 x i16> %0, iXLen %1) nounwind {
2344 ; CHECK-LABEL: intrinsic_vror_vi_nxv2i16:
2345 ; CHECK:       # %bb.0: # %entry
2346 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf2, ta, ma
2347 ; CHECK-NEXT:    vror.vi v8, v8, 2
2348 ; CHECK-NEXT:    ret
2349 entry:
2350   %a = call <vscale x 2 x i16> @llvm.riscv.vror.nxv2i16(
2351     <vscale x 2 x i16> undef,
2352     <vscale x 2 x i16> %0,
2353     iXLen 2,
2354     iXLen %1)
2356   ret <vscale x 2 x i16> %a
2359 define <vscale x 2 x i16> @intrinsic_vror_mask_vi_nxv2i16(<vscale x 2 x i16> %0, <vscale x 2 x i16> %1, <vscale x 2 x i1> %2, iXLen %3) nounwind {
2360 ; CHECK-LABEL: intrinsic_vror_mask_vi_nxv2i16:
2361 ; CHECK:       # %bb.0: # %entry
2362 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf2, ta, mu
2363 ; CHECK-NEXT:    vror.vi v8, v9, 2, v0.t
2364 ; CHECK-NEXT:    ret
2365 entry:
2366   %a = call <vscale x 2 x i16> @llvm.riscv.vror.mask.nxv2i16(
2367     <vscale x 2 x i16> %0,
2368     <vscale x 2 x i16> %1,
2369     iXLen 2,
2370     <vscale x 2 x i1> %2,
2371     iXLen %3, iXLen 1)
2373   ret <vscale x 2 x i16> %a
2376 define <vscale x 4 x i16> @intrinsic_vror_vi_nxv4i16(<vscale x 4 x i16> %0, iXLen %1) nounwind {
2377 ; CHECK-LABEL: intrinsic_vror_vi_nxv4i16:
2378 ; CHECK:       # %bb.0: # %entry
2379 ; CHECK-NEXT:    vsetvli zero, a0, e16, m1, ta, ma
2380 ; CHECK-NEXT:    vror.vi v8, v8, 2
2381 ; CHECK-NEXT:    ret
2382 entry:
2383   %a = call <vscale x 4 x i16> @llvm.riscv.vror.nxv4i16(
2384     <vscale x 4 x i16> undef,
2385     <vscale x 4 x i16> %0,
2386     iXLen 2,
2387     iXLen %1)
2389   ret <vscale x 4 x i16> %a
2392 define <vscale x 4 x i16> @intrinsic_vror_mask_vi_nxv4i16(<vscale x 4 x i16> %0, <vscale x 4 x i16> %1, <vscale x 4 x i1> %2, iXLen %3) nounwind {
2393 ; CHECK-LABEL: intrinsic_vror_mask_vi_nxv4i16:
2394 ; CHECK:       # %bb.0: # %entry
2395 ; CHECK-NEXT:    vsetvli zero, a0, e16, m1, ta, mu
2396 ; CHECK-NEXT:    vror.vi v8, v9, 2, v0.t
2397 ; CHECK-NEXT:    ret
2398 entry:
2399   %a = call <vscale x 4 x i16> @llvm.riscv.vror.mask.nxv4i16(
2400     <vscale x 4 x i16> %0,
2401     <vscale x 4 x i16> %1,
2402     iXLen 2,
2403     <vscale x 4 x i1> %2,
2404     iXLen %3, iXLen 1)
2406   ret <vscale x 4 x i16> %a
2409 define <vscale x 8 x i16> @intrinsic_vror_vi_nxv8i16(<vscale x 8 x i16> %0, iXLen %1) nounwind {
2410 ; CHECK-LABEL: intrinsic_vror_vi_nxv8i16:
2411 ; CHECK:       # %bb.0: # %entry
2412 ; CHECK-NEXT:    vsetvli zero, a0, e16, m2, ta, ma
2413 ; CHECK-NEXT:    vror.vi v8, v8, 2
2414 ; CHECK-NEXT:    ret
2415 entry:
2416   %a = call <vscale x 8 x i16> @llvm.riscv.vror.nxv8i16(
2417     <vscale x 8 x i16> undef,
2418     <vscale x 8 x i16> %0,
2419     iXLen 2,
2420     iXLen %1)
2422   ret <vscale x 8 x i16> %a
2425 define <vscale x 8 x i16> @intrinsic_vror_mask_vi_nxv8i16(<vscale x 8 x i16> %0, <vscale x 8 x i16> %1, <vscale x 8 x i1> %2, iXLen %3) nounwind {
2426 ; CHECK-LABEL: intrinsic_vror_mask_vi_nxv8i16:
2427 ; CHECK:       # %bb.0: # %entry
2428 ; CHECK-NEXT:    vsetvli zero, a0, e16, m2, ta, mu
2429 ; CHECK-NEXT:    vror.vi v8, v10, 2, v0.t
2430 ; CHECK-NEXT:    ret
2431 entry:
2432   %a = call <vscale x 8 x i16> @llvm.riscv.vror.mask.nxv8i16(
2433     <vscale x 8 x i16> %0,
2434     <vscale x 8 x i16> %1,
2435     iXLen 2,
2436     <vscale x 8 x i1> %2,
2437     iXLen %3, iXLen 1)
2439   ret <vscale x 8 x i16> %a
2442 define <vscale x 16 x i16> @intrinsic_vror_vi_nxv16i16(<vscale x 16 x i16> %0, iXLen %1) nounwind {
2443 ; CHECK-LABEL: intrinsic_vror_vi_nxv16i16:
2444 ; CHECK:       # %bb.0: # %entry
2445 ; CHECK-NEXT:    vsetvli zero, a0, e16, m4, ta, ma
2446 ; CHECK-NEXT:    vror.vi v8, v8, 2
2447 ; CHECK-NEXT:    ret
2448 entry:
2449   %a = call <vscale x 16 x i16> @llvm.riscv.vror.nxv16i16(
2450     <vscale x 16 x i16> undef,
2451     <vscale x 16 x i16> %0,
2452     iXLen 2,
2453     iXLen %1)
2455   ret <vscale x 16 x i16> %a
2458 define <vscale x 16 x i16> @intrinsic_vror_mask_vi_nxv16i16(<vscale x 16 x i16> %0, <vscale x 16 x i16> %1, <vscale x 16 x i1> %2, iXLen %3) nounwind {
2459 ; CHECK-LABEL: intrinsic_vror_mask_vi_nxv16i16:
2460 ; CHECK:       # %bb.0: # %entry
2461 ; CHECK-NEXT:    vsetvli zero, a0, e16, m4, ta, mu
2462 ; CHECK-NEXT:    vror.vi v8, v12, 2, v0.t
2463 ; CHECK-NEXT:    ret
2464 entry:
2465   %a = call <vscale x 16 x i16> @llvm.riscv.vror.mask.nxv16i16(
2466     <vscale x 16 x i16> %0,
2467     <vscale x 16 x i16> %1,
2468     iXLen 2,
2469     <vscale x 16 x i1> %2,
2470     iXLen %3, iXLen 1)
2472   ret <vscale x 16 x i16> %a
2475 define <vscale x 32 x i16> @intrinsic_vror_vi_nxv32i16(<vscale x 32 x i16> %0, iXLen %1) nounwind {
2476 ; CHECK-LABEL: intrinsic_vror_vi_nxv32i16:
2477 ; CHECK:       # %bb.0: # %entry
2478 ; CHECK-NEXT:    vsetvli zero, a0, e16, m8, ta, ma
2479 ; CHECK-NEXT:    vror.vi v8, v8, 2
2480 ; CHECK-NEXT:    ret
2481 entry:
2482   %a = call <vscale x 32 x i16> @llvm.riscv.vror.nxv32i16(
2483     <vscale x 32 x i16> undef,
2484     <vscale x 32 x i16> %0,
2485     iXLen 2,
2486     iXLen %1)
2488   ret <vscale x 32 x i16> %a
2491 define <vscale x 32 x i16> @intrinsic_vror_mask_vi_nxv32i16(<vscale x 32 x i16> %0, <vscale x 32 x i16> %1, <vscale x 32 x i1> %2, iXLen %3) nounwind {
2492 ; CHECK-LABEL: intrinsic_vror_mask_vi_nxv32i16:
2493 ; CHECK:       # %bb.0: # %entry
2494 ; CHECK-NEXT:    vsetvli zero, a0, e16, m8, ta, mu
2495 ; CHECK-NEXT:    vror.vi v8, v16, 2, v0.t
2496 ; CHECK-NEXT:    ret
2497 entry:
2498   %a = call <vscale x 32 x i16> @llvm.riscv.vror.mask.nxv32i16(
2499     <vscale x 32 x i16> %0,
2500     <vscale x 32 x i16> %1,
2501     iXLen 2,
2502     <vscale x 32 x i1> %2,
2503     iXLen %3, iXLen 1)
2505   ret <vscale x 32 x i16> %a
2508 define <vscale x 1 x i32> @intrinsic_vror_vi_nxv1i32(<vscale x 1 x i32> %0, iXLen %1) nounwind {
2509 ; CHECK-LABEL: intrinsic_vror_vi_nxv1i32:
2510 ; CHECK:       # %bb.0: # %entry
2511 ; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma
2512 ; CHECK-NEXT:    vror.vi v8, v8, 2
2513 ; CHECK-NEXT:    ret
2514 entry:
2515   %a = call <vscale x 1 x i32> @llvm.riscv.vror.nxv1i32(
2516     <vscale x 1 x i32> undef,
2517     <vscale x 1 x i32> %0,
2518     iXLen 2,
2519     iXLen %1)
2521   ret <vscale x 1 x i32> %a
2524 define <vscale x 1 x i32> @intrinsic_vror_mask_vi_nxv1i32(<vscale x 1 x i32> %0, <vscale x 1 x i32> %1, <vscale x 1 x i1> %2, iXLen %3) nounwind {
2525 ; CHECK-LABEL: intrinsic_vror_mask_vi_nxv1i32:
2526 ; CHECK:       # %bb.0: # %entry
2527 ; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, mu
2528 ; CHECK-NEXT:    vror.vi v8, v9, 2, v0.t
2529 ; CHECK-NEXT:    ret
2530 entry:
2531   %a = call <vscale x 1 x i32> @llvm.riscv.vror.mask.nxv1i32(
2532     <vscale x 1 x i32> %0,
2533     <vscale x 1 x i32> %1,
2534     iXLen 2,
2535     <vscale x 1 x i1> %2,
2536     iXLen %3, iXLen 1)
2538   ret <vscale x 1 x i32> %a
2541 define <vscale x 2 x i32> @intrinsic_vror_vi_nxv2i32(<vscale x 2 x i32> %0, iXLen %1) nounwind {
2542 ; CHECK-LABEL: intrinsic_vror_vi_nxv2i32:
2543 ; CHECK:       # %bb.0: # %entry
2544 ; CHECK-NEXT:    vsetvli zero, a0, e32, m1, ta, ma
2545 ; CHECK-NEXT:    vror.vi v8, v8, 2
2546 ; CHECK-NEXT:    ret
2547 entry:
2548   %a = call <vscale x 2 x i32> @llvm.riscv.vror.nxv2i32(
2549     <vscale x 2 x i32> undef,
2550     <vscale x 2 x i32> %0,
2551     iXLen 2,
2552     iXLen %1)
2554   ret <vscale x 2 x i32> %a
2557 define <vscale x 2 x i32> @intrinsic_vror_mask_vi_nxv2i32(<vscale x 2 x i32> %0, <vscale x 2 x i32> %1, <vscale x 2 x i1> %2, iXLen %3) nounwind {
2558 ; CHECK-LABEL: intrinsic_vror_mask_vi_nxv2i32:
2559 ; CHECK:       # %bb.0: # %entry
2560 ; CHECK-NEXT:    vsetvli zero, a0, e32, m1, ta, mu
2561 ; CHECK-NEXT:    vror.vi v8, v9, 2, v0.t
2562 ; CHECK-NEXT:    ret
2563 entry:
2564   %a = call <vscale x 2 x i32> @llvm.riscv.vror.mask.nxv2i32(
2565     <vscale x 2 x i32> %0,
2566     <vscale x 2 x i32> %1,
2567     iXLen 2,
2568     <vscale x 2 x i1> %2,
2569     iXLen %3, iXLen 1)
2571   ret <vscale x 2 x i32> %a
2574 define <vscale x 4 x i32> @intrinsic_vror_vi_nxv4i32(<vscale x 4 x i32> %0, iXLen %1) nounwind {
2575 ; CHECK-LABEL: intrinsic_vror_vi_nxv4i32:
2576 ; CHECK:       # %bb.0: # %entry
2577 ; CHECK-NEXT:    vsetvli zero, a0, e32, m2, ta, ma
2578 ; CHECK-NEXT:    vror.vi v8, v8, 2
2579 ; CHECK-NEXT:    ret
2580 entry:
2581   %a = call <vscale x 4 x i32> @llvm.riscv.vror.nxv4i32(
2582     <vscale x 4 x i32> undef,
2583     <vscale x 4 x i32> %0,
2584     iXLen 2,
2585     iXLen %1)
2587   ret <vscale x 4 x i32> %a
2590 define <vscale x 4 x i32> @intrinsic_vror_mask_vi_nxv4i32(<vscale x 4 x i32> %0, <vscale x 4 x i32> %1, <vscale x 4 x i1> %2, iXLen %3) nounwind {
2591 ; CHECK-LABEL: intrinsic_vror_mask_vi_nxv4i32:
2592 ; CHECK:       # %bb.0: # %entry
2593 ; CHECK-NEXT:    vsetvli zero, a0, e32, m2, ta, mu
2594 ; CHECK-NEXT:    vror.vi v8, v10, 2, v0.t
2595 ; CHECK-NEXT:    ret
2596 entry:
2597   %a = call <vscale x 4 x i32> @llvm.riscv.vror.mask.nxv4i32(
2598     <vscale x 4 x i32> %0,
2599     <vscale x 4 x i32> %1,
2600     iXLen 2,
2601     <vscale x 4 x i1> %2,
2602     iXLen %3, iXLen 1)
2604   ret <vscale x 4 x i32> %a
2607 define <vscale x 8 x i32> @intrinsic_vror_vi_nxv8i32(<vscale x 8 x i32> %0, iXLen %1) nounwind {
2608 ; CHECK-LABEL: intrinsic_vror_vi_nxv8i32:
2609 ; CHECK:       # %bb.0: # %entry
2610 ; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, ma
2611 ; CHECK-NEXT:    vror.vi v8, v8, 2
2612 ; CHECK-NEXT:    ret
2613 entry:
2614   %a = call <vscale x 8 x i32> @llvm.riscv.vror.nxv8i32(
2615     <vscale x 8 x i32> undef,
2616     <vscale x 8 x i32> %0,
2617     iXLen 2,
2618     iXLen %1)
2620   ret <vscale x 8 x i32> %a
2623 define <vscale x 8 x i32> @intrinsic_vror_mask_vi_nxv8i32(<vscale x 8 x i32> %0, <vscale x 8 x i32> %1, <vscale x 8 x i1> %2, iXLen %3) nounwind {
2624 ; CHECK-LABEL: intrinsic_vror_mask_vi_nxv8i32:
2625 ; CHECK:       # %bb.0: # %entry
2626 ; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, mu
2627 ; CHECK-NEXT:    vror.vi v8, v12, 2, v0.t
2628 ; CHECK-NEXT:    ret
2629 entry:
2630   %a = call <vscale x 8 x i32> @llvm.riscv.vror.mask.nxv8i32(
2631     <vscale x 8 x i32> %0,
2632     <vscale x 8 x i32> %1,
2633     iXLen 2,
2634     <vscale x 8 x i1> %2,
2635     iXLen %3, iXLen 1)
2637   ret <vscale x 8 x i32> %a
2640 define <vscale x 16 x i32> @intrinsic_vror_vi_nxv16i32(<vscale x 16 x i32> %0, iXLen %1) nounwind {
2641 ; CHECK-LABEL: intrinsic_vror_vi_nxv16i32:
2642 ; CHECK:       # %bb.0: # %entry
2643 ; CHECK-NEXT:    vsetvli zero, a0, e32, m8, ta, ma
2644 ; CHECK-NEXT:    vror.vi v8, v8, 2
2645 ; CHECK-NEXT:    ret
2646 entry:
2647   %a = call <vscale x 16 x i32> @llvm.riscv.vror.nxv16i32(
2648     <vscale x 16 x i32> undef,
2649     <vscale x 16 x i32> %0,
2650     iXLen 2,
2651     iXLen %1)
2653   ret <vscale x 16 x i32> %a
2656 define <vscale x 16 x i32> @intrinsic_vror_mask_vi_nxv16i32(<vscale x 16 x i32> %0, <vscale x 16 x i32> %1, <vscale x 16 x i1> %2, iXLen %3) nounwind {
2657 ; CHECK-LABEL: intrinsic_vror_mask_vi_nxv16i32:
2658 ; CHECK:       # %bb.0: # %entry
2659 ; CHECK-NEXT:    vsetvli zero, a0, e32, m8, ta, mu
2660 ; CHECK-NEXT:    vror.vi v8, v16, 2, v0.t
2661 ; CHECK-NEXT:    ret
2662 entry:
2663   %a = call <vscale x 16 x i32> @llvm.riscv.vror.mask.nxv16i32(
2664     <vscale x 16 x i32> %0,
2665     <vscale x 16 x i32> %1,
2666     iXLen 2,
2667     <vscale x 16 x i1> %2,
2668     iXLen %3, iXLen 1)
2670   ret <vscale x 16 x i32> %a
2673 define <vscale x 1 x i64> @intrinsic_vror_vi_nxv1i64(<vscale x 1 x i64> %0, iXLen %1) nounwind {
2674 ; CHECK-LABEL: intrinsic_vror_vi_nxv1i64:
2675 ; CHECK:       # %bb.0: # %entry
2676 ; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
2677 ; CHECK-NEXT:    vror.vi v8, v8, 2
2678 ; CHECK-NEXT:    ret
2679 entry:
2680   %a = call <vscale x 1 x i64> @llvm.riscv.vror.nxv1i64(
2681     <vscale x 1 x i64> undef,
2682     <vscale x 1 x i64> %0,
2683     iXLen 2,
2684     iXLen %1)
2686   ret <vscale x 1 x i64> %a
2689 define <vscale x 1 x i64> @intrinsic_vror_mask_vi_nxv1i64(<vscale x 1 x i64> %0, <vscale x 1 x i64> %1, <vscale x 1 x i1> %2, iXLen %3) nounwind {
2690 ; CHECK-LABEL: intrinsic_vror_mask_vi_nxv1i64:
2691 ; CHECK:       # %bb.0: # %entry
2692 ; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, mu
2693 ; CHECK-NEXT:    vror.vi v8, v9, 2, v0.t
2694 ; CHECK-NEXT:    ret
2695 entry:
2696   %a = call <vscale x 1 x i64> @llvm.riscv.vror.mask.nxv1i64(
2697     <vscale x 1 x i64> %0,
2698     <vscale x 1 x i64> %1,
2699     iXLen 2,
2700     <vscale x 1 x i1> %2,
2701     iXLen %3, iXLen 1)
2703   ret <vscale x 1 x i64> %a
2706 define <vscale x 2 x i64> @intrinsic_vror_vi_nxv2i64(<vscale x 2 x i64> %0, iXLen %1) nounwind {
2707 ; CHECK-LABEL: intrinsic_vror_vi_nxv2i64:
2708 ; CHECK:       # %bb.0: # %entry
2709 ; CHECK-NEXT:    vsetvli zero, a0, e64, m2, ta, ma
2710 ; CHECK-NEXT:    vror.vi v8, v8, 2
2711 ; CHECK-NEXT:    ret
2712 entry:
2713   %a = call <vscale x 2 x i64> @llvm.riscv.vror.nxv2i64(
2714     <vscale x 2 x i64> undef,
2715     <vscale x 2 x i64> %0,
2716     iXLen 2,
2717     iXLen %1)
2719   ret <vscale x 2 x i64> %a
2722 define <vscale x 2 x i64> @intrinsic_vror_mask_vi_nxv2i64(<vscale x 2 x i64> %0, <vscale x 2 x i64> %1, <vscale x 2 x i1> %2, iXLen %3) nounwind {
2723 ; CHECK-LABEL: intrinsic_vror_mask_vi_nxv2i64:
2724 ; CHECK:       # %bb.0: # %entry
2725 ; CHECK-NEXT:    vsetvli zero, a0, e64, m2, ta, mu
2726 ; CHECK-NEXT:    vror.vi v8, v10, 2, v0.t
2727 ; CHECK-NEXT:    ret
2728 entry:
2729   %a = call <vscale x 2 x i64> @llvm.riscv.vror.mask.nxv2i64(
2730     <vscale x 2 x i64> %0,
2731     <vscale x 2 x i64> %1,
2732     iXLen 2,
2733     <vscale x 2 x i1> %2,
2734     iXLen %3, iXLen 1)
2736   ret <vscale x 2 x i64> %a
2739 define <vscale x 4 x i64> @intrinsic_vror_vi_nxv4i64(<vscale x 4 x i64> %0, iXLen %1) nounwind {
2740 ; CHECK-LABEL: intrinsic_vror_vi_nxv4i64:
2741 ; CHECK:       # %bb.0: # %entry
2742 ; CHECK-NEXT:    vsetvli zero, a0, e64, m4, ta, ma
2743 ; CHECK-NEXT:    vror.vi v8, v8, 2
2744 ; CHECK-NEXT:    ret
2745 entry:
2746   %a = call <vscale x 4 x i64> @llvm.riscv.vror.nxv4i64(
2747     <vscale x 4 x i64> undef,
2748     <vscale x 4 x i64> %0,
2749     iXLen 2,
2750     iXLen %1)
2752   ret <vscale x 4 x i64> %a
2755 define <vscale x 4 x i64> @intrinsic_vror_mask_vi_nxv4i64(<vscale x 4 x i64> %0, <vscale x 4 x i64> %1, <vscale x 4 x i1> %2, iXLen %3) nounwind {
2756 ; CHECK-LABEL: intrinsic_vror_mask_vi_nxv4i64:
2757 ; CHECK:       # %bb.0: # %entry
2758 ; CHECK-NEXT:    vsetvli zero, a0, e64, m4, ta, mu
2759 ; CHECK-NEXT:    vror.vi v8, v12, 2, v0.t
2760 ; CHECK-NEXT:    ret
2761 entry:
2762   %a = call <vscale x 4 x i64> @llvm.riscv.vror.mask.nxv4i64(
2763     <vscale x 4 x i64> %0,
2764     <vscale x 4 x i64> %1,
2765     iXLen 2,
2766     <vscale x 4 x i1> %2,
2767     iXLen %3, iXLen 1)
2769   ret <vscale x 4 x i64> %a
2772 define <vscale x 8 x i64> @intrinsic_vror_vi_nxv8i64(<vscale x 8 x i64> %0, iXLen %1) nounwind {
2773 ; CHECK-LABEL: intrinsic_vror_vi_nxv8i64:
2774 ; CHECK:       # %bb.0: # %entry
2775 ; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma
2776 ; CHECK-NEXT:    vror.vi v8, v8, 2
2777 ; CHECK-NEXT:    ret
2778 entry:
2779   %a = call <vscale x 8 x i64> @llvm.riscv.vror.nxv8i64(
2780     <vscale x 8 x i64> undef,
2781     <vscale x 8 x i64> %0,
2782     iXLen 2,
2783     iXLen %1)
2785   ret <vscale x 8 x i64> %a
2788 define <vscale x 8 x i64> @intrinsic_vror_mask_vi_nxv8i64(<vscale x 8 x i64> %0, <vscale x 8 x i64> %1, <vscale x 8 x i1> %2, iXLen %3) nounwind {
2789 ; CHECK-LABEL: intrinsic_vror_mask_vi_nxv8i64:
2790 ; CHECK:       # %bb.0: # %entry
2791 ; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, mu
2792 ; CHECK-NEXT:    vror.vi v8, v16, 62, v0.t
2793 ; CHECK-NEXT:    ret
2794 entry:
2795   %a = call <vscale x 8 x i64> @llvm.riscv.vror.mask.nxv8i64(
2796     <vscale x 8 x i64> %0,
2797     <vscale x 8 x i64> %1,
2798     iXLen 62,
2799     <vscale x 8 x i1> %2,
2800     iXLen %3, iXLen 1)
2802   ret <vscale x 8 x i64> %a