[IR] Replace of PointerType::get(Type) with opaque version (NFC) (#123617)
[llvm-project.git] / llvm / test / CodeGen / RISCV / rvv / vrgather.ll
blob5d700e683a9698fd7edc9e0d04b54d8b070fc275
1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2 ; RUN: sed 's/iXLen/i32/g' %s | llc -mtriple=riscv32 -mattr=+v,+d,+zfhmin,+zvfh,+zvfbfmin \
3 ; RUN:   -verify-machineinstrs | FileCheck %s
4 ; RUN: sed 's/iXLen/i64/g' %s | llc -mtriple=riscv64 -mattr=+v,+d,+zfhmin,+zvfh,+zvfbfmin \
5 ; RUN:   -verify-machineinstrs | FileCheck %s
7 declare <vscale x 1 x i8> @llvm.riscv.vrgather.vv.nxv1i8.iXLen(
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_vrgather_vv_nxv1i8_nxv1i8_nxv1i8(<vscale x 1 x i8> %0, <vscale x 1 x i8> %1, iXLen %2) nounwind {
14 ; CHECK-LABEL: intrinsic_vrgather_vv_nxv1i8_nxv1i8_nxv1i8:
15 ; CHECK:       # %bb.0: # %entry
16 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf8, ta, ma
17 ; CHECK-NEXT:    vrgather.vv v10, v8, v9
18 ; CHECK-NEXT:    vmv1r.v v8, v10
19 ; CHECK-NEXT:    ret
20 entry:
21   %a = call <vscale x 1 x i8> @llvm.riscv.vrgather.vv.nxv1i8.iXLen(
22     <vscale x 1 x i8> undef,
23     <vscale x 1 x i8> %0,
24     <vscale x 1 x i8> %1,
25     iXLen %2)
27   ret <vscale x 1 x i8> %a
30 declare <vscale x 1 x i8> @llvm.riscv.vrgather.vv.mask.nxv1i8.iXLen(
31   <vscale x 1 x i8>,
32   <vscale x 1 x i8>,
33   <vscale x 1 x i8>,
34   <vscale x 1 x i1>,
35   iXLen,
36   iXLen)
38 define <vscale x 1 x i8> @intrinsic_vrgather_mask_vv_nxv1i8_nxv1i8_nxv1i8(<vscale x 1 x i8> %0, <vscale x 1 x i8> %1, <vscale x 1 x i8> %2, <vscale x 1 x i1> %3, iXLen %4) nounwind {
39 ; CHECK-LABEL: intrinsic_vrgather_mask_vv_nxv1i8_nxv1i8_nxv1i8:
40 ; CHECK:       # %bb.0: # %entry
41 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf8, ta, mu
42 ; CHECK-NEXT:    vrgather.vv v8, v9, v10, v0.t
43 ; CHECK-NEXT:    ret
44 entry:
45   %a = call <vscale x 1 x i8> @llvm.riscv.vrgather.vv.mask.nxv1i8.iXLen(
46     <vscale x 1 x i8> %0,
47     <vscale x 1 x i8> %1,
48     <vscale x 1 x i8> %2,
49     <vscale x 1 x i1> %3,
50     iXLen %4, iXLen 1)
52   ret <vscale x 1 x i8> %a
55 declare <vscale x 2 x i8> @llvm.riscv.vrgather.vv.nxv2i8.iXLen(
56   <vscale x 2 x i8>,
57   <vscale x 2 x i8>,
58   <vscale x 2 x i8>,
59   iXLen)
61 define <vscale x 2 x i8> @intrinsic_vrgather_vv_nxv2i8_nxv2i8_nxv2i8(<vscale x 2 x i8> %0, <vscale x 2 x i8> %1, iXLen %2) nounwind {
62 ; CHECK-LABEL: intrinsic_vrgather_vv_nxv2i8_nxv2i8_nxv2i8:
63 ; CHECK:       # %bb.0: # %entry
64 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf4, ta, ma
65 ; CHECK-NEXT:    vrgather.vv v10, v8, v9
66 ; CHECK-NEXT:    vmv1r.v v8, v10
67 ; CHECK-NEXT:    ret
68 entry:
69   %a = call <vscale x 2 x i8> @llvm.riscv.vrgather.vv.nxv2i8.iXLen(
70     <vscale x 2 x i8> undef,
71     <vscale x 2 x i8> %0,
72     <vscale x 2 x i8> %1,
73     iXLen %2)
75   ret <vscale x 2 x i8> %a
78 declare <vscale x 2 x i8> @llvm.riscv.vrgather.vv.mask.nxv2i8.iXLen(
79   <vscale x 2 x i8>,
80   <vscale x 2 x i8>,
81   <vscale x 2 x i8>,
82   <vscale x 2 x i1>,
83   iXLen,
84   iXLen)
86 define <vscale x 2 x i8> @intrinsic_vrgather_mask_vv_nxv2i8_nxv2i8_nxv2i8(<vscale x 2 x i8> %0, <vscale x 2 x i8> %1, <vscale x 2 x i8> %2, <vscale x 2 x i1> %3, iXLen %4) nounwind {
87 ; CHECK-LABEL: intrinsic_vrgather_mask_vv_nxv2i8_nxv2i8_nxv2i8:
88 ; CHECK:       # %bb.0: # %entry
89 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf4, ta, mu
90 ; CHECK-NEXT:    vrgather.vv v8, v9, v10, v0.t
91 ; CHECK-NEXT:    ret
92 entry:
93   %a = call <vscale x 2 x i8> @llvm.riscv.vrgather.vv.mask.nxv2i8.iXLen(
94     <vscale x 2 x i8> %0,
95     <vscale x 2 x i8> %1,
96     <vscale x 2 x i8> %2,
97     <vscale x 2 x i1> %3,
98     iXLen %4, iXLen 1)
100   ret <vscale x 2 x i8> %a
103 declare <vscale x 4 x i8> @llvm.riscv.vrgather.vv.nxv4i8.iXLen(
104   <vscale x 4 x i8>,
105   <vscale x 4 x i8>,
106   <vscale x 4 x i8>,
107   iXLen)
109 define <vscale x 4 x i8> @intrinsic_vrgather_vv_nxv4i8_nxv4i8_nxv4i8(<vscale x 4 x i8> %0, <vscale x 4 x i8> %1, iXLen %2) nounwind {
110 ; CHECK-LABEL: intrinsic_vrgather_vv_nxv4i8_nxv4i8_nxv4i8:
111 ; CHECK:       # %bb.0: # %entry
112 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf2, ta, ma
113 ; CHECK-NEXT:    vrgather.vv v10, v8, v9
114 ; CHECK-NEXT:    vmv1r.v v8, v10
115 ; CHECK-NEXT:    ret
116 entry:
117   %a = call <vscale x 4 x i8> @llvm.riscv.vrgather.vv.nxv4i8.iXLen(
118     <vscale x 4 x i8> undef,
119     <vscale x 4 x i8> %0,
120     <vscale x 4 x i8> %1,
121     iXLen %2)
123   ret <vscale x 4 x i8> %a
126 declare <vscale x 4 x i8> @llvm.riscv.vrgather.vv.mask.nxv4i8.iXLen(
127   <vscale x 4 x i8>,
128   <vscale x 4 x i8>,
129   <vscale x 4 x i8>,
130   <vscale x 4 x i1>,
131   iXLen,
132   iXLen)
134 define <vscale x 4 x i8> @intrinsic_vrgather_mask_vv_nxv4i8_nxv4i8_nxv4i8(<vscale x 4 x i8> %0, <vscale x 4 x i8> %1, <vscale x 4 x i8> %2, <vscale x 4 x i1> %3, iXLen %4) nounwind {
135 ; CHECK-LABEL: intrinsic_vrgather_mask_vv_nxv4i8_nxv4i8_nxv4i8:
136 ; CHECK:       # %bb.0: # %entry
137 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf2, ta, mu
138 ; CHECK-NEXT:    vrgather.vv v8, v9, v10, v0.t
139 ; CHECK-NEXT:    ret
140 entry:
141   %a = call <vscale x 4 x i8> @llvm.riscv.vrgather.vv.mask.nxv4i8.iXLen(
142     <vscale x 4 x i8> %0,
143     <vscale x 4 x i8> %1,
144     <vscale x 4 x i8> %2,
145     <vscale x 4 x i1> %3,
146     iXLen %4, iXLen 1)
148   ret <vscale x 4 x i8> %a
151 declare <vscale x 8 x i8> @llvm.riscv.vrgather.vv.nxv8i8.iXLen(
152   <vscale x 8 x i8>,
153   <vscale x 8 x i8>,
154   <vscale x 8 x i8>,
155   iXLen)
157 define <vscale x 8 x i8> @intrinsic_vrgather_vv_nxv8i8_nxv8i8_nxv8i8(<vscale x 8 x i8> %0, <vscale x 8 x i8> %1, iXLen %2) nounwind {
158 ; CHECK-LABEL: intrinsic_vrgather_vv_nxv8i8_nxv8i8_nxv8i8:
159 ; CHECK:       # %bb.0: # %entry
160 ; CHECK-NEXT:    vsetvli zero, a0, e8, m1, ta, ma
161 ; CHECK-NEXT:    vrgather.vv v10, v8, v9
162 ; CHECK-NEXT:    vmv.v.v v8, v10
163 ; CHECK-NEXT:    ret
164 entry:
165   %a = call <vscale x 8 x i8> @llvm.riscv.vrgather.vv.nxv8i8.iXLen(
166     <vscale x 8 x i8> undef,
167     <vscale x 8 x i8> %0,
168     <vscale x 8 x i8> %1,
169     iXLen %2)
171   ret <vscale x 8 x i8> %a
174 declare <vscale x 8 x i8> @llvm.riscv.vrgather.vv.mask.nxv8i8.iXLen(
175   <vscale x 8 x i8>,
176   <vscale x 8 x i8>,
177   <vscale x 8 x i8>,
178   <vscale x 8 x i1>,
179   iXLen,
180   iXLen)
182 define <vscale x 8 x i8> @intrinsic_vrgather_mask_vv_nxv8i8_nxv8i8_nxv8i8(<vscale x 8 x i8> %0, <vscale x 8 x i8> %1, <vscale x 8 x i8> %2, <vscale x 8 x i1> %3, iXLen %4) nounwind {
183 ; CHECK-LABEL: intrinsic_vrgather_mask_vv_nxv8i8_nxv8i8_nxv8i8:
184 ; CHECK:       # %bb.0: # %entry
185 ; CHECK-NEXT:    vsetvli zero, a0, e8, m1, ta, mu
186 ; CHECK-NEXT:    vrgather.vv v8, v9, v10, v0.t
187 ; CHECK-NEXT:    ret
188 entry:
189   %a = call <vscale x 8 x i8> @llvm.riscv.vrgather.vv.mask.nxv8i8.iXLen(
190     <vscale x 8 x i8> %0,
191     <vscale x 8 x i8> %1,
192     <vscale x 8 x i8> %2,
193     <vscale x 8 x i1> %3,
194     iXLen %4, iXLen 1)
196   ret <vscale x 8 x i8> %a
199 declare <vscale x 16 x i8> @llvm.riscv.vrgather.vv.nxv16i8.iXLen(
200   <vscale x 16 x i8>,
201   <vscale x 16 x i8>,
202   <vscale x 16 x i8>,
203   iXLen)
205 define <vscale x 16 x i8> @intrinsic_vrgather_vv_nxv16i8_nxv16i8_nxv16i8(<vscale x 16 x i8> %0, <vscale x 16 x i8> %1, iXLen %2) nounwind {
206 ; CHECK-LABEL: intrinsic_vrgather_vv_nxv16i8_nxv16i8_nxv16i8:
207 ; CHECK:       # %bb.0: # %entry
208 ; CHECK-NEXT:    vsetvli zero, a0, e8, m2, ta, ma
209 ; CHECK-NEXT:    vrgather.vv v12, v8, v10
210 ; CHECK-NEXT:    vmv.v.v v8, v12
211 ; CHECK-NEXT:    ret
212 entry:
213   %a = call <vscale x 16 x i8> @llvm.riscv.vrgather.vv.nxv16i8.iXLen(
214     <vscale x 16 x i8> undef,
215     <vscale x 16 x i8> %0,
216     <vscale x 16 x i8> %1,
217     iXLen %2)
219   ret <vscale x 16 x i8> %a
222 declare <vscale x 16 x i8> @llvm.riscv.vrgather.vv.mask.nxv16i8.iXLen(
223   <vscale x 16 x i8>,
224   <vscale x 16 x i8>,
225   <vscale x 16 x i8>,
226   <vscale x 16 x i1>,
227   iXLen,
228   iXLen)
230 define <vscale x 16 x i8> @intrinsic_vrgather_mask_vv_nxv16i8_nxv16i8_nxv16i8(<vscale x 16 x i8> %0, <vscale x 16 x i8> %1, <vscale x 16 x i8> %2, <vscale x 16 x i1> %3, iXLen %4) nounwind {
231 ; CHECK-LABEL: intrinsic_vrgather_mask_vv_nxv16i8_nxv16i8_nxv16i8:
232 ; CHECK:       # %bb.0: # %entry
233 ; CHECK-NEXT:    vsetvli zero, a0, e8, m2, ta, mu
234 ; CHECK-NEXT:    vrgather.vv v8, v10, v12, v0.t
235 ; CHECK-NEXT:    ret
236 entry:
237   %a = call <vscale x 16 x i8> @llvm.riscv.vrgather.vv.mask.nxv16i8.iXLen(
238     <vscale x 16 x i8> %0,
239     <vscale x 16 x i8> %1,
240     <vscale x 16 x i8> %2,
241     <vscale x 16 x i1> %3,
242     iXLen %4, iXLen 1)
244   ret <vscale x 16 x i8> %a
247 declare <vscale x 32 x i8> @llvm.riscv.vrgather.vv.nxv32i8.iXLen(
248   <vscale x 32 x i8>,
249   <vscale x 32 x i8>,
250   <vscale x 32 x i8>,
251   iXLen)
253 define <vscale x 32 x i8> @intrinsic_vrgather_vv_nxv32i8_nxv32i8_nxv32i8(<vscale x 32 x i8> %0, <vscale x 32 x i8> %1, iXLen %2) nounwind {
254 ; CHECK-LABEL: intrinsic_vrgather_vv_nxv32i8_nxv32i8_nxv32i8:
255 ; CHECK:       # %bb.0: # %entry
256 ; CHECK-NEXT:    vsetvli zero, a0, e8, m4, ta, ma
257 ; CHECK-NEXT:    vrgather.vv v16, v8, v12
258 ; CHECK-NEXT:    vmv.v.v v8, v16
259 ; CHECK-NEXT:    ret
260 entry:
261   %a = call <vscale x 32 x i8> @llvm.riscv.vrgather.vv.nxv32i8.iXLen(
262     <vscale x 32 x i8> undef,
263     <vscale x 32 x i8> %0,
264     <vscale x 32 x i8> %1,
265     iXLen %2)
267   ret <vscale x 32 x i8> %a
270 declare <vscale x 32 x i8> @llvm.riscv.vrgather.vv.mask.nxv32i8.iXLen(
271   <vscale x 32 x i8>,
272   <vscale x 32 x i8>,
273   <vscale x 32 x i8>,
274   <vscale x 32 x i1>,
275   iXLen,
276   iXLen)
278 define <vscale x 32 x i8> @intrinsic_vrgather_mask_vv_nxv32i8_nxv32i8_nxv32i8(<vscale x 32 x i8> %0, <vscale x 32 x i8> %1, <vscale x 32 x i8> %2, <vscale x 32 x i1> %3, iXLen %4) nounwind {
279 ; CHECK-LABEL: intrinsic_vrgather_mask_vv_nxv32i8_nxv32i8_nxv32i8:
280 ; CHECK:       # %bb.0: # %entry
281 ; CHECK-NEXT:    vsetvli zero, a0, e8, m4, ta, mu
282 ; CHECK-NEXT:    vrgather.vv v8, v12, v16, v0.t
283 ; CHECK-NEXT:    ret
284 entry:
285   %a = call <vscale x 32 x i8> @llvm.riscv.vrgather.vv.mask.nxv32i8.iXLen(
286     <vscale x 32 x i8> %0,
287     <vscale x 32 x i8> %1,
288     <vscale x 32 x i8> %2,
289     <vscale x 32 x i1> %3,
290     iXLen %4, iXLen 1)
292   ret <vscale x 32 x i8> %a
295 declare <vscale x 64 x i8> @llvm.riscv.vrgather.vv.nxv64i8.iXLen(
296   <vscale x 64 x i8>,
297   <vscale x 64 x i8>,
298   <vscale x 64 x i8>,
299   iXLen)
301 define <vscale x 64 x i8> @intrinsic_vrgather_vv_nxv64i8_nxv64i8_nxv64i8(<vscale x 64 x i8> %0, <vscale x 64 x i8> %1, iXLen %2) nounwind {
302 ; CHECK-LABEL: intrinsic_vrgather_vv_nxv64i8_nxv64i8_nxv64i8:
303 ; CHECK:       # %bb.0: # %entry
304 ; CHECK-NEXT:    vsetvli zero, a0, e8, m8, ta, ma
305 ; CHECK-NEXT:    vrgather.vv v24, v8, v16
306 ; CHECK-NEXT:    vmv.v.v v8, v24
307 ; CHECK-NEXT:    ret
308 entry:
309   %a = call <vscale x 64 x i8> @llvm.riscv.vrgather.vv.nxv64i8.iXLen(
310     <vscale x 64 x i8> undef,
311     <vscale x 64 x i8> %0,
312     <vscale x 64 x i8> %1,
313     iXLen %2)
315   ret <vscale x 64 x i8> %a
318 declare <vscale x 64 x i8> @llvm.riscv.vrgather.vv.mask.nxv64i8.iXLen(
319   <vscale x 64 x i8>,
320   <vscale x 64 x i8>,
321   <vscale x 64 x i8>,
322   <vscale x 64 x i1>,
323   iXLen,
324   iXLen)
326 define <vscale x 64 x i8> @intrinsic_vrgather_mask_vv_nxv64i8_nxv64i8_nxv64i8(<vscale x 64 x i8> %0, <vscale x 64 x i8> %1, <vscale x 64 x i8> %2, <vscale x 64 x i1> %3, iXLen %4) nounwind {
327 ; CHECK-LABEL: intrinsic_vrgather_mask_vv_nxv64i8_nxv64i8_nxv64i8:
328 ; CHECK:       # %bb.0: # %entry
329 ; CHECK-NEXT:    vl8r.v v24, (a0)
330 ; CHECK-NEXT:    vsetvli zero, a1, e8, m8, ta, mu
331 ; CHECK-NEXT:    vrgather.vv v8, v16, v24, v0.t
332 ; CHECK-NEXT:    ret
333 entry:
334   %a = call <vscale x 64 x i8> @llvm.riscv.vrgather.vv.mask.nxv64i8.iXLen(
335     <vscale x 64 x i8> %0,
336     <vscale x 64 x i8> %1,
337     <vscale x 64 x i8> %2,
338     <vscale x 64 x i1> %3,
339     iXLen %4, iXLen 1)
341   ret <vscale x 64 x i8> %a
344 declare <vscale x 1 x i16> @llvm.riscv.vrgather.vv.nxv1i16.iXLen(
345   <vscale x 1 x i16>,
346   <vscale x 1 x i16>,
347   <vscale x 1 x i16>,
348   iXLen)
350 define <vscale x 1 x i16> @intrinsic_vrgather_vv_nxv1i16_nxv1i16_nxv1i16(<vscale x 1 x i16> %0, <vscale x 1 x i16> %1, iXLen %2) nounwind {
351 ; CHECK-LABEL: intrinsic_vrgather_vv_nxv1i16_nxv1i16_nxv1i16:
352 ; CHECK:       # %bb.0: # %entry
353 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma
354 ; CHECK-NEXT:    vrgather.vv v10, v8, v9
355 ; CHECK-NEXT:    vmv1r.v v8, v10
356 ; CHECK-NEXT:    ret
357 entry:
358   %a = call <vscale x 1 x i16> @llvm.riscv.vrgather.vv.nxv1i16.iXLen(
359     <vscale x 1 x i16> undef,
360     <vscale x 1 x i16> %0,
361     <vscale x 1 x i16> %1,
362     iXLen %2)
364   ret <vscale x 1 x i16> %a
367 declare <vscale x 1 x i16> @llvm.riscv.vrgather.vv.mask.nxv1i16.iXLen(
368   <vscale x 1 x i16>,
369   <vscale x 1 x i16>,
370   <vscale x 1 x i16>,
371   <vscale x 1 x i1>,
372   iXLen,
373   iXLen)
375 define <vscale x 1 x i16> @intrinsic_vrgather_mask_vv_nxv1i16_nxv1i16_nxv1i16(<vscale x 1 x i16> %0, <vscale x 1 x i16> %1, <vscale x 1 x i16> %2, <vscale x 1 x i1> %3, iXLen %4) nounwind {
376 ; CHECK-LABEL: intrinsic_vrgather_mask_vv_nxv1i16_nxv1i16_nxv1i16:
377 ; CHECK:       # %bb.0: # %entry
378 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, ta, mu
379 ; CHECK-NEXT:    vrgather.vv v8, v9, v10, v0.t
380 ; CHECK-NEXT:    ret
381 entry:
382   %a = call <vscale x 1 x i16> @llvm.riscv.vrgather.vv.mask.nxv1i16.iXLen(
383     <vscale x 1 x i16> %0,
384     <vscale x 1 x i16> %1,
385     <vscale x 1 x i16> %2,
386     <vscale x 1 x i1> %3,
387     iXLen %4, iXLen 1)
389   ret <vscale x 1 x i16> %a
392 declare <vscale x 2 x i16> @llvm.riscv.vrgather.vv.nxv2i16.iXLen(
393   <vscale x 2 x i16>,
394   <vscale x 2 x i16>,
395   <vscale x 2 x i16>,
396   iXLen)
398 define <vscale x 2 x i16> @intrinsic_vrgather_vv_nxv2i16_nxv2i16_nxv2i16(<vscale x 2 x i16> %0, <vscale x 2 x i16> %1, iXLen %2) nounwind {
399 ; CHECK-LABEL: intrinsic_vrgather_vv_nxv2i16_nxv2i16_nxv2i16:
400 ; CHECK:       # %bb.0: # %entry
401 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf2, ta, ma
402 ; CHECK-NEXT:    vrgather.vv v10, v8, v9
403 ; CHECK-NEXT:    vmv1r.v v8, v10
404 ; CHECK-NEXT:    ret
405 entry:
406   %a = call <vscale x 2 x i16> @llvm.riscv.vrgather.vv.nxv2i16.iXLen(
407     <vscale x 2 x i16> undef,
408     <vscale x 2 x i16> %0,
409     <vscale x 2 x i16> %1,
410     iXLen %2)
412   ret <vscale x 2 x i16> %a
415 declare <vscale x 2 x i16> @llvm.riscv.vrgather.vv.mask.nxv2i16.iXLen(
416   <vscale x 2 x i16>,
417   <vscale x 2 x i16>,
418   <vscale x 2 x i16>,
419   <vscale x 2 x i1>,
420   iXLen,
421   iXLen)
423 define <vscale x 2 x i16> @intrinsic_vrgather_mask_vv_nxv2i16_nxv2i16_nxv2i16(<vscale x 2 x i16> %0, <vscale x 2 x i16> %1, <vscale x 2 x i16> %2, <vscale x 2 x i1> %3, iXLen %4) nounwind {
424 ; CHECK-LABEL: intrinsic_vrgather_mask_vv_nxv2i16_nxv2i16_nxv2i16:
425 ; CHECK:       # %bb.0: # %entry
426 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf2, ta, mu
427 ; CHECK-NEXT:    vrgather.vv v8, v9, v10, v0.t
428 ; CHECK-NEXT:    ret
429 entry:
430   %a = call <vscale x 2 x i16> @llvm.riscv.vrgather.vv.mask.nxv2i16.iXLen(
431     <vscale x 2 x i16> %0,
432     <vscale x 2 x i16> %1,
433     <vscale x 2 x i16> %2,
434     <vscale x 2 x i1> %3,
435     iXLen %4, iXLen 1)
437   ret <vscale x 2 x i16> %a
440 declare <vscale x 4 x i16> @llvm.riscv.vrgather.vv.nxv4i16.iXLen(
441   <vscale x 4 x i16>,
442   <vscale x 4 x i16>,
443   <vscale x 4 x i16>,
444   iXLen)
446 define <vscale x 4 x i16> @intrinsic_vrgather_vv_nxv4i16_nxv4i16_nxv4i16(<vscale x 4 x i16> %0, <vscale x 4 x i16> %1, iXLen %2) nounwind {
447 ; CHECK-LABEL: intrinsic_vrgather_vv_nxv4i16_nxv4i16_nxv4i16:
448 ; CHECK:       # %bb.0: # %entry
449 ; CHECK-NEXT:    vsetvli zero, a0, e16, m1, ta, ma
450 ; CHECK-NEXT:    vrgather.vv v10, v8, v9
451 ; CHECK-NEXT:    vmv.v.v v8, v10
452 ; CHECK-NEXT:    ret
453 entry:
454   %a = call <vscale x 4 x i16> @llvm.riscv.vrgather.vv.nxv4i16.iXLen(
455     <vscale x 4 x i16> undef,
456     <vscale x 4 x i16> %0,
457     <vscale x 4 x i16> %1,
458     iXLen %2)
460   ret <vscale x 4 x i16> %a
463 declare <vscale x 4 x i16> @llvm.riscv.vrgather.vv.mask.nxv4i16.iXLen(
464   <vscale x 4 x i16>,
465   <vscale x 4 x i16>,
466   <vscale x 4 x i16>,
467   <vscale x 4 x i1>,
468   iXLen,
469   iXLen)
471 define <vscale x 4 x i16> @intrinsic_vrgather_mask_vv_nxv4i16_nxv4i16_nxv4i16(<vscale x 4 x i16> %0, <vscale x 4 x i16> %1, <vscale x 4 x i16> %2, <vscale x 4 x i1> %3, iXLen %4) nounwind {
472 ; CHECK-LABEL: intrinsic_vrgather_mask_vv_nxv4i16_nxv4i16_nxv4i16:
473 ; CHECK:       # %bb.0: # %entry
474 ; CHECK-NEXT:    vsetvli zero, a0, e16, m1, ta, mu
475 ; CHECK-NEXT:    vrgather.vv v8, v9, v10, v0.t
476 ; CHECK-NEXT:    ret
477 entry:
478   %a = call <vscale x 4 x i16> @llvm.riscv.vrgather.vv.mask.nxv4i16.iXLen(
479     <vscale x 4 x i16> %0,
480     <vscale x 4 x i16> %1,
481     <vscale x 4 x i16> %2,
482     <vscale x 4 x i1> %3,
483     iXLen %4, iXLen 1)
485   ret <vscale x 4 x i16> %a
488 declare <vscale x 8 x i16> @llvm.riscv.vrgather.vv.nxv8i16.iXLen(
489   <vscale x 8 x i16>,
490   <vscale x 8 x i16>,
491   <vscale x 8 x i16>,
492   iXLen)
494 define <vscale x 8 x i16> @intrinsic_vrgather_vv_nxv8i16_nxv8i16_nxv8i16(<vscale x 8 x i16> %0, <vscale x 8 x i16> %1, iXLen %2) nounwind {
495 ; CHECK-LABEL: intrinsic_vrgather_vv_nxv8i16_nxv8i16_nxv8i16:
496 ; CHECK:       # %bb.0: # %entry
497 ; CHECK-NEXT:    vsetvli zero, a0, e16, m2, ta, ma
498 ; CHECK-NEXT:    vrgather.vv v12, v8, v10
499 ; CHECK-NEXT:    vmv.v.v v8, v12
500 ; CHECK-NEXT:    ret
501 entry:
502   %a = call <vscale x 8 x i16> @llvm.riscv.vrgather.vv.nxv8i16.iXLen(
503     <vscale x 8 x i16> undef,
504     <vscale x 8 x i16> %0,
505     <vscale x 8 x i16> %1,
506     iXLen %2)
508   ret <vscale x 8 x i16> %a
511 declare <vscale x 8 x i16> @llvm.riscv.vrgather.vv.mask.nxv8i16.iXLen(
512   <vscale x 8 x i16>,
513   <vscale x 8 x i16>,
514   <vscale x 8 x i16>,
515   <vscale x 8 x i1>,
516   iXLen,
517   iXLen)
519 define <vscale x 8 x i16> @intrinsic_vrgather_mask_vv_nxv8i16_nxv8i16_nxv8i16(<vscale x 8 x i16> %0, <vscale x 8 x i16> %1, <vscale x 8 x i16> %2, <vscale x 8 x i1> %3, iXLen %4) nounwind {
520 ; CHECK-LABEL: intrinsic_vrgather_mask_vv_nxv8i16_nxv8i16_nxv8i16:
521 ; CHECK:       # %bb.0: # %entry
522 ; CHECK-NEXT:    vsetvli zero, a0, e16, m2, ta, mu
523 ; CHECK-NEXT:    vrgather.vv v8, v10, v12, v0.t
524 ; CHECK-NEXT:    ret
525 entry:
526   %a = call <vscale x 8 x i16> @llvm.riscv.vrgather.vv.mask.nxv8i16.iXLen(
527     <vscale x 8 x i16> %0,
528     <vscale x 8 x i16> %1,
529     <vscale x 8 x i16> %2,
530     <vscale x 8 x i1> %3,
531     iXLen %4, iXLen 1)
533   ret <vscale x 8 x i16> %a
536 declare <vscale x 16 x i16> @llvm.riscv.vrgather.vv.nxv16i16.iXLen(
537   <vscale x 16 x i16>,
538   <vscale x 16 x i16>,
539   <vscale x 16 x i16>,
540   iXLen)
542 define <vscale x 16 x i16> @intrinsic_vrgather_vv_nxv16i16_nxv16i16_nxv16i16(<vscale x 16 x i16> %0, <vscale x 16 x i16> %1, iXLen %2) nounwind {
543 ; CHECK-LABEL: intrinsic_vrgather_vv_nxv16i16_nxv16i16_nxv16i16:
544 ; CHECK:       # %bb.0: # %entry
545 ; CHECK-NEXT:    vsetvli zero, a0, e16, m4, ta, ma
546 ; CHECK-NEXT:    vrgather.vv v16, v8, v12
547 ; CHECK-NEXT:    vmv.v.v v8, v16
548 ; CHECK-NEXT:    ret
549 entry:
550   %a = call <vscale x 16 x i16> @llvm.riscv.vrgather.vv.nxv16i16.iXLen(
551     <vscale x 16 x i16> undef,
552     <vscale x 16 x i16> %0,
553     <vscale x 16 x i16> %1,
554     iXLen %2)
556   ret <vscale x 16 x i16> %a
559 declare <vscale x 16 x i16> @llvm.riscv.vrgather.vv.mask.nxv16i16.iXLen(
560   <vscale x 16 x i16>,
561   <vscale x 16 x i16>,
562   <vscale x 16 x i16>,
563   <vscale x 16 x i1>,
564   iXLen,
565   iXLen)
567 define <vscale x 16 x i16> @intrinsic_vrgather_mask_vv_nxv16i16_nxv16i16_nxv16i16(<vscale x 16 x i16> %0, <vscale x 16 x i16> %1, <vscale x 16 x i16> %2, <vscale x 16 x i1> %3, iXLen %4) nounwind {
568 ; CHECK-LABEL: intrinsic_vrgather_mask_vv_nxv16i16_nxv16i16_nxv16i16:
569 ; CHECK:       # %bb.0: # %entry
570 ; CHECK-NEXT:    vsetvli zero, a0, e16, m4, ta, mu
571 ; CHECK-NEXT:    vrgather.vv v8, v12, v16, v0.t
572 ; CHECK-NEXT:    ret
573 entry:
574   %a = call <vscale x 16 x i16> @llvm.riscv.vrgather.vv.mask.nxv16i16.iXLen(
575     <vscale x 16 x i16> %0,
576     <vscale x 16 x i16> %1,
577     <vscale x 16 x i16> %2,
578     <vscale x 16 x i1> %3,
579     iXLen %4, iXLen 1)
581   ret <vscale x 16 x i16> %a
584 declare <vscale x 32 x i16> @llvm.riscv.vrgather.vv.nxv32i16.iXLen(
585   <vscale x 32 x i16>,
586   <vscale x 32 x i16>,
587   <vscale x 32 x i16>,
588   iXLen)
590 define <vscale x 32 x i16> @intrinsic_vrgather_vv_nxv32i16_nxv32i16_nxv32i16(<vscale x 32 x i16> %0, <vscale x 32 x i16> %1, iXLen %2) nounwind {
591 ; CHECK-LABEL: intrinsic_vrgather_vv_nxv32i16_nxv32i16_nxv32i16:
592 ; CHECK:       # %bb.0: # %entry
593 ; CHECK-NEXT:    vsetvli zero, a0, e16, m8, ta, ma
594 ; CHECK-NEXT:    vrgather.vv v24, v8, v16
595 ; CHECK-NEXT:    vmv.v.v v8, v24
596 ; CHECK-NEXT:    ret
597 entry:
598   %a = call <vscale x 32 x i16> @llvm.riscv.vrgather.vv.nxv32i16.iXLen(
599     <vscale x 32 x i16> undef,
600     <vscale x 32 x i16> %0,
601     <vscale x 32 x i16> %1,
602     iXLen %2)
604   ret <vscale x 32 x i16> %a
607 declare <vscale x 32 x i16> @llvm.riscv.vrgather.vv.mask.nxv32i16.iXLen(
608   <vscale x 32 x i16>,
609   <vscale x 32 x i16>,
610   <vscale x 32 x i16>,
611   <vscale x 32 x i1>,
612   iXLen,
613   iXLen)
615 define <vscale x 32 x i16> @intrinsic_vrgather_mask_vv_nxv32i16_nxv32i16_nxv32i16(<vscale x 32 x i16> %0, <vscale x 32 x i16> %1, <vscale x 32 x i16> %2, <vscale x 32 x i1> %3, iXLen %4) nounwind {
616 ; CHECK-LABEL: intrinsic_vrgather_mask_vv_nxv32i16_nxv32i16_nxv32i16:
617 ; CHECK:       # %bb.0: # %entry
618 ; CHECK-NEXT:    vl8re16.v v24, (a0)
619 ; CHECK-NEXT:    vsetvli zero, a1, e16, m8, ta, mu
620 ; CHECK-NEXT:    vrgather.vv v8, v16, v24, v0.t
621 ; CHECK-NEXT:    ret
622 entry:
623   %a = call <vscale x 32 x i16> @llvm.riscv.vrgather.vv.mask.nxv32i16.iXLen(
624     <vscale x 32 x i16> %0,
625     <vscale x 32 x i16> %1,
626     <vscale x 32 x i16> %2,
627     <vscale x 32 x i1> %3,
628     iXLen %4, iXLen 1)
630   ret <vscale x 32 x i16> %a
633 declare <vscale x 1 x i32> @llvm.riscv.vrgather.vv.nxv1i32.iXLen(
634   <vscale x 1 x i32>,
635   <vscale x 1 x i32>,
636   <vscale x 1 x i32>,
637   iXLen)
639 define <vscale x 1 x i32> @intrinsic_vrgather_vv_nxv1i32_nxv1i32_nxv1i32(<vscale x 1 x i32> %0, <vscale x 1 x i32> %1, iXLen %2) nounwind {
640 ; CHECK-LABEL: intrinsic_vrgather_vv_nxv1i32_nxv1i32_nxv1i32:
641 ; CHECK:       # %bb.0: # %entry
642 ; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma
643 ; CHECK-NEXT:    vrgather.vv v10, v8, v9
644 ; CHECK-NEXT:    vmv1r.v v8, v10
645 ; CHECK-NEXT:    ret
646 entry:
647   %a = call <vscale x 1 x i32> @llvm.riscv.vrgather.vv.nxv1i32.iXLen(
648     <vscale x 1 x i32> undef,
649     <vscale x 1 x i32> %0,
650     <vscale x 1 x i32> %1,
651     iXLen %2)
653   ret <vscale x 1 x i32> %a
656 declare <vscale x 1 x i32> @llvm.riscv.vrgather.vv.mask.nxv1i32.iXLen(
657   <vscale x 1 x i32>,
658   <vscale x 1 x i32>,
659   <vscale x 1 x i32>,
660   <vscale x 1 x i1>,
661   iXLen,
662   iXLen)
664 define <vscale x 1 x i32> @intrinsic_vrgather_mask_vv_nxv1i32_nxv1i32_nxv1i32(<vscale x 1 x i32> %0, <vscale x 1 x i32> %1, <vscale x 1 x i32> %2, <vscale x 1 x i1> %3, iXLen %4) nounwind {
665 ; CHECK-LABEL: intrinsic_vrgather_mask_vv_nxv1i32_nxv1i32_nxv1i32:
666 ; CHECK:       # %bb.0: # %entry
667 ; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, mu
668 ; CHECK-NEXT:    vrgather.vv v8, v9, v10, v0.t
669 ; CHECK-NEXT:    ret
670 entry:
671   %a = call <vscale x 1 x i32> @llvm.riscv.vrgather.vv.mask.nxv1i32.iXLen(
672     <vscale x 1 x i32> %0,
673     <vscale x 1 x i32> %1,
674     <vscale x 1 x i32> %2,
675     <vscale x 1 x i1> %3,
676     iXLen %4, iXLen 1)
678   ret <vscale x 1 x i32> %a
681 declare <vscale x 2 x i32> @llvm.riscv.vrgather.vv.nxv2i32.iXLen(
682   <vscale x 2 x i32>,
683   <vscale x 2 x i32>,
684   <vscale x 2 x i32>,
685   iXLen)
687 define <vscale x 2 x i32> @intrinsic_vrgather_vv_nxv2i32_nxv2i32_nxv2i32(<vscale x 2 x i32> %0, <vscale x 2 x i32> %1, iXLen %2) nounwind {
688 ; CHECK-LABEL: intrinsic_vrgather_vv_nxv2i32_nxv2i32_nxv2i32:
689 ; CHECK:       # %bb.0: # %entry
690 ; CHECK-NEXT:    vsetvli zero, a0, e32, m1, ta, ma
691 ; CHECK-NEXT:    vrgather.vv v10, v8, v9
692 ; CHECK-NEXT:    vmv.v.v v8, v10
693 ; CHECK-NEXT:    ret
694 entry:
695   %a = call <vscale x 2 x i32> @llvm.riscv.vrgather.vv.nxv2i32.iXLen(
696     <vscale x 2 x i32> undef,
697     <vscale x 2 x i32> %0,
698     <vscale x 2 x i32> %1,
699     iXLen %2)
701   ret <vscale x 2 x i32> %a
704 declare <vscale x 2 x i32> @llvm.riscv.vrgather.vv.mask.nxv2i32.iXLen(
705   <vscale x 2 x i32>,
706   <vscale x 2 x i32>,
707   <vscale x 2 x i32>,
708   <vscale x 2 x i1>,
709   iXLen,
710   iXLen)
712 define <vscale x 2 x i32> @intrinsic_vrgather_mask_vv_nxv2i32_nxv2i32_nxv2i32(<vscale x 2 x i32> %0, <vscale x 2 x i32> %1, <vscale x 2 x i32> %2, <vscale x 2 x i1> %3, iXLen %4) nounwind {
713 ; CHECK-LABEL: intrinsic_vrgather_mask_vv_nxv2i32_nxv2i32_nxv2i32:
714 ; CHECK:       # %bb.0: # %entry
715 ; CHECK-NEXT:    vsetvli zero, a0, e32, m1, ta, mu
716 ; CHECK-NEXT:    vrgather.vv v8, v9, v10, v0.t
717 ; CHECK-NEXT:    ret
718 entry:
719   %a = call <vscale x 2 x i32> @llvm.riscv.vrgather.vv.mask.nxv2i32.iXLen(
720     <vscale x 2 x i32> %0,
721     <vscale x 2 x i32> %1,
722     <vscale x 2 x i32> %2,
723     <vscale x 2 x i1> %3,
724     iXLen %4, iXLen 1)
726   ret <vscale x 2 x i32> %a
729 declare <vscale x 4 x i32> @llvm.riscv.vrgather.vv.nxv4i32.iXLen(
730   <vscale x 4 x i32>,
731   <vscale x 4 x i32>,
732   <vscale x 4 x i32>,
733   iXLen)
735 define <vscale x 4 x i32> @intrinsic_vrgather_vv_nxv4i32_nxv4i32_nxv4i32(<vscale x 4 x i32> %0, <vscale x 4 x i32> %1, iXLen %2) nounwind {
736 ; CHECK-LABEL: intrinsic_vrgather_vv_nxv4i32_nxv4i32_nxv4i32:
737 ; CHECK:       # %bb.0: # %entry
738 ; CHECK-NEXT:    vsetvli zero, a0, e32, m2, ta, ma
739 ; CHECK-NEXT:    vrgather.vv v12, v8, v10
740 ; CHECK-NEXT:    vmv.v.v v8, v12
741 ; CHECK-NEXT:    ret
742 entry:
743   %a = call <vscale x 4 x i32> @llvm.riscv.vrgather.vv.nxv4i32.iXLen(
744     <vscale x 4 x i32> undef,
745     <vscale x 4 x i32> %0,
746     <vscale x 4 x i32> %1,
747     iXLen %2)
749   ret <vscale x 4 x i32> %a
752 declare <vscale x 4 x i32> @llvm.riscv.vrgather.vv.mask.nxv4i32.iXLen(
753   <vscale x 4 x i32>,
754   <vscale x 4 x i32>,
755   <vscale x 4 x i32>,
756   <vscale x 4 x i1>,
757   iXLen,
758   iXLen)
760 define <vscale x 4 x i32> @intrinsic_vrgather_mask_vv_nxv4i32_nxv4i32_nxv4i32(<vscale x 4 x i32> %0, <vscale x 4 x i32> %1, <vscale x 4 x i32> %2, <vscale x 4 x i1> %3, iXLen %4) nounwind {
761 ; CHECK-LABEL: intrinsic_vrgather_mask_vv_nxv4i32_nxv4i32_nxv4i32:
762 ; CHECK:       # %bb.0: # %entry
763 ; CHECK-NEXT:    vsetvli zero, a0, e32, m2, ta, mu
764 ; CHECK-NEXT:    vrgather.vv v8, v10, v12, v0.t
765 ; CHECK-NEXT:    ret
766 entry:
767   %a = call <vscale x 4 x i32> @llvm.riscv.vrgather.vv.mask.nxv4i32.iXLen(
768     <vscale x 4 x i32> %0,
769     <vscale x 4 x i32> %1,
770     <vscale x 4 x i32> %2,
771     <vscale x 4 x i1> %3,
772     iXLen %4, iXLen 1)
774   ret <vscale x 4 x i32> %a
777 declare <vscale x 8 x i32> @llvm.riscv.vrgather.vv.nxv8i32.iXLen(
778   <vscale x 8 x i32>,
779   <vscale x 8 x i32>,
780   <vscale x 8 x i32>,
781   iXLen)
783 define <vscale x 8 x i32> @intrinsic_vrgather_vv_nxv8i32_nxv8i32_nxv8i32(<vscale x 8 x i32> %0, <vscale x 8 x i32> %1, iXLen %2) nounwind {
784 ; CHECK-LABEL: intrinsic_vrgather_vv_nxv8i32_nxv8i32_nxv8i32:
785 ; CHECK:       # %bb.0: # %entry
786 ; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, ma
787 ; CHECK-NEXT:    vrgather.vv v16, v8, v12
788 ; CHECK-NEXT:    vmv.v.v v8, v16
789 ; CHECK-NEXT:    ret
790 entry:
791   %a = call <vscale x 8 x i32> @llvm.riscv.vrgather.vv.nxv8i32.iXLen(
792     <vscale x 8 x i32> undef,
793     <vscale x 8 x i32> %0,
794     <vscale x 8 x i32> %1,
795     iXLen %2)
797   ret <vscale x 8 x i32> %a
800 declare <vscale x 8 x i32> @llvm.riscv.vrgather.vv.mask.nxv8i32.iXLen(
801   <vscale x 8 x i32>,
802   <vscale x 8 x i32>,
803   <vscale x 8 x i32>,
804   <vscale x 8 x i1>,
805   iXLen,
806   iXLen)
808 define <vscale x 8 x i32> @intrinsic_vrgather_mask_vv_nxv8i32_nxv8i32_nxv8i32(<vscale x 8 x i32> %0, <vscale x 8 x i32> %1, <vscale x 8 x i32> %2, <vscale x 8 x i1> %3, iXLen %4) nounwind {
809 ; CHECK-LABEL: intrinsic_vrgather_mask_vv_nxv8i32_nxv8i32_nxv8i32:
810 ; CHECK:       # %bb.0: # %entry
811 ; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, mu
812 ; CHECK-NEXT:    vrgather.vv v8, v12, v16, v0.t
813 ; CHECK-NEXT:    ret
814 entry:
815   %a = call <vscale x 8 x i32> @llvm.riscv.vrgather.vv.mask.nxv8i32.iXLen(
816     <vscale x 8 x i32> %0,
817     <vscale x 8 x i32> %1,
818     <vscale x 8 x i32> %2,
819     <vscale x 8 x i1> %3,
820     iXLen %4, iXLen 1)
822   ret <vscale x 8 x i32> %a
825 declare <vscale x 16 x i32> @llvm.riscv.vrgather.vv.nxv16i32.iXLen(
826   <vscale x 16 x i32>,
827   <vscale x 16 x i32>,
828   <vscale x 16 x i32>,
829   iXLen)
831 define <vscale x 16 x i32> @intrinsic_vrgather_vv_nxv16i32_nxv16i32_nxv16i32(<vscale x 16 x i32> %0, <vscale x 16 x i32> %1, iXLen %2) nounwind {
832 ; CHECK-LABEL: intrinsic_vrgather_vv_nxv16i32_nxv16i32_nxv16i32:
833 ; CHECK:       # %bb.0: # %entry
834 ; CHECK-NEXT:    vsetvli zero, a0, e32, m8, ta, ma
835 ; CHECK-NEXT:    vrgather.vv v24, v8, v16
836 ; CHECK-NEXT:    vmv.v.v v8, v24
837 ; CHECK-NEXT:    ret
838 entry:
839   %a = call <vscale x 16 x i32> @llvm.riscv.vrgather.vv.nxv16i32.iXLen(
840     <vscale x 16 x i32> undef,
841     <vscale x 16 x i32> %0,
842     <vscale x 16 x i32> %1,
843     iXLen %2)
845   ret <vscale x 16 x i32> %a
848 declare <vscale x 16 x i32> @llvm.riscv.vrgather.vv.mask.nxv16i32.iXLen(
849   <vscale x 16 x i32>,
850   <vscale x 16 x i32>,
851   <vscale x 16 x i32>,
852   <vscale x 16 x i1>,
853   iXLen,
854   iXLen)
856 define <vscale x 16 x i32> @intrinsic_vrgather_mask_vv_nxv16i32_nxv16i32_nxv16i32(<vscale x 16 x i32> %0, <vscale x 16 x i32> %1, <vscale x 16 x i32> %2, <vscale x 16 x i1> %3, iXLen %4) nounwind {
857 ; CHECK-LABEL: intrinsic_vrgather_mask_vv_nxv16i32_nxv16i32_nxv16i32:
858 ; CHECK:       # %bb.0: # %entry
859 ; CHECK-NEXT:    vl8re32.v v24, (a0)
860 ; CHECK-NEXT:    vsetvli zero, a1, e32, m8, ta, mu
861 ; CHECK-NEXT:    vrgather.vv v8, v16, v24, v0.t
862 ; CHECK-NEXT:    ret
863 entry:
864   %a = call <vscale x 16 x i32> @llvm.riscv.vrgather.vv.mask.nxv16i32.iXLen(
865     <vscale x 16 x i32> %0,
866     <vscale x 16 x i32> %1,
867     <vscale x 16 x i32> %2,
868     <vscale x 16 x i1> %3,
869     iXLen %4, iXLen 1)
871   ret <vscale x 16 x i32> %a
874 declare <vscale x 1 x i64> @llvm.riscv.vrgather.vv.nxv1i64.iXLen(
875   <vscale x 1 x i64>,
876   <vscale x 1 x i64>,
877   <vscale x 1 x i64>,
878   iXLen)
880 define <vscale x 1 x i64> @intrinsic_vrgather_vv_nxv1i64_nxv1i64_nxv1i64(<vscale x 1 x i64> %0, <vscale x 1 x i64> %1, iXLen %2) nounwind {
881 ; CHECK-LABEL: intrinsic_vrgather_vv_nxv1i64_nxv1i64_nxv1i64:
882 ; CHECK:       # %bb.0: # %entry
883 ; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
884 ; CHECK-NEXT:    vrgather.vv v10, v8, v9
885 ; CHECK-NEXT:    vmv.v.v v8, v10
886 ; CHECK-NEXT:    ret
887 entry:
888   %a = call <vscale x 1 x i64> @llvm.riscv.vrgather.vv.nxv1i64.iXLen(
889     <vscale x 1 x i64> undef,
890     <vscale x 1 x i64> %0,
891     <vscale x 1 x i64> %1,
892     iXLen %2)
894   ret <vscale x 1 x i64> %a
897 declare <vscale x 1 x i64> @llvm.riscv.vrgather.vv.mask.nxv1i64.iXLen(
898   <vscale x 1 x i64>,
899   <vscale x 1 x i64>,
900   <vscale x 1 x i64>,
901   <vscale x 1 x i1>,
902   iXLen,
903   iXLen)
905 define <vscale x 1 x i64> @intrinsic_vrgather_mask_vv_nxv1i64_nxv1i64_nxv1i64(<vscale x 1 x i64> %0, <vscale x 1 x i64> %1, <vscale x 1 x i64> %2, <vscale x 1 x i1> %3, iXLen %4) nounwind {
906 ; CHECK-LABEL: intrinsic_vrgather_mask_vv_nxv1i64_nxv1i64_nxv1i64:
907 ; CHECK:       # %bb.0: # %entry
908 ; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, mu
909 ; CHECK-NEXT:    vrgather.vv v8, v9, v10, v0.t
910 ; CHECK-NEXT:    ret
911 entry:
912   %a = call <vscale x 1 x i64> @llvm.riscv.vrgather.vv.mask.nxv1i64.iXLen(
913     <vscale x 1 x i64> %0,
914     <vscale x 1 x i64> %1,
915     <vscale x 1 x i64> %2,
916     <vscale x 1 x i1> %3,
917     iXLen %4, iXLen 1)
919   ret <vscale x 1 x i64> %a
922 declare <vscale x 2 x i64> @llvm.riscv.vrgather.vv.nxv2i64.iXLen(
923   <vscale x 2 x i64>,
924   <vscale x 2 x i64>,
925   <vscale x 2 x i64>,
926   iXLen)
928 define <vscale x 2 x i64> @intrinsic_vrgather_vv_nxv2i64_nxv2i64_nxv2i64(<vscale x 2 x i64> %0, <vscale x 2 x i64> %1, iXLen %2) nounwind {
929 ; CHECK-LABEL: intrinsic_vrgather_vv_nxv2i64_nxv2i64_nxv2i64:
930 ; CHECK:       # %bb.0: # %entry
931 ; CHECK-NEXT:    vsetvli zero, a0, e64, m2, ta, ma
932 ; CHECK-NEXT:    vrgather.vv v12, v8, v10
933 ; CHECK-NEXT:    vmv.v.v v8, v12
934 ; CHECK-NEXT:    ret
935 entry:
936   %a = call <vscale x 2 x i64> @llvm.riscv.vrgather.vv.nxv2i64.iXLen(
937     <vscale x 2 x i64> undef,
938     <vscale x 2 x i64> %0,
939     <vscale x 2 x i64> %1,
940     iXLen %2)
942   ret <vscale x 2 x i64> %a
945 declare <vscale x 2 x i64> @llvm.riscv.vrgather.vv.mask.nxv2i64.iXLen(
946   <vscale x 2 x i64>,
947   <vscale x 2 x i64>,
948   <vscale x 2 x i64>,
949   <vscale x 2 x i1>,
950   iXLen,
951   iXLen)
953 define <vscale x 2 x i64> @intrinsic_vrgather_mask_vv_nxv2i64_nxv2i64_nxv2i64(<vscale x 2 x i64> %0, <vscale x 2 x i64> %1, <vscale x 2 x i64> %2, <vscale x 2 x i1> %3, iXLen %4) nounwind {
954 ; CHECK-LABEL: intrinsic_vrgather_mask_vv_nxv2i64_nxv2i64_nxv2i64:
955 ; CHECK:       # %bb.0: # %entry
956 ; CHECK-NEXT:    vsetvli zero, a0, e64, m2, ta, mu
957 ; CHECK-NEXT:    vrgather.vv v8, v10, v12, v0.t
958 ; CHECK-NEXT:    ret
959 entry:
960   %a = call <vscale x 2 x i64> @llvm.riscv.vrgather.vv.mask.nxv2i64.iXLen(
961     <vscale x 2 x i64> %0,
962     <vscale x 2 x i64> %1,
963     <vscale x 2 x i64> %2,
964     <vscale x 2 x i1> %3,
965     iXLen %4, iXLen 1)
967   ret <vscale x 2 x i64> %a
970 declare <vscale x 4 x i64> @llvm.riscv.vrgather.vv.nxv4i64.iXLen(
971   <vscale x 4 x i64>,
972   <vscale x 4 x i64>,
973   <vscale x 4 x i64>,
974   iXLen)
976 define <vscale x 4 x i64> @intrinsic_vrgather_vv_nxv4i64_nxv4i64_nxv4i64(<vscale x 4 x i64> %0, <vscale x 4 x i64> %1, iXLen %2) nounwind {
977 ; CHECK-LABEL: intrinsic_vrgather_vv_nxv4i64_nxv4i64_nxv4i64:
978 ; CHECK:       # %bb.0: # %entry
979 ; CHECK-NEXT:    vsetvli zero, a0, e64, m4, ta, ma
980 ; CHECK-NEXT:    vrgather.vv v16, v8, v12
981 ; CHECK-NEXT:    vmv.v.v v8, v16
982 ; CHECK-NEXT:    ret
983 entry:
984   %a = call <vscale x 4 x i64> @llvm.riscv.vrgather.vv.nxv4i64.iXLen(
985     <vscale x 4 x i64> undef,
986     <vscale x 4 x i64> %0,
987     <vscale x 4 x i64> %1,
988     iXLen %2)
990   ret <vscale x 4 x i64> %a
993 declare <vscale x 4 x i64> @llvm.riscv.vrgather.vv.mask.nxv4i64.iXLen(
994   <vscale x 4 x i64>,
995   <vscale x 4 x i64>,
996   <vscale x 4 x i64>,
997   <vscale x 4 x i1>,
998   iXLen,
999   iXLen)
1001 define <vscale x 4 x i64> @intrinsic_vrgather_mask_vv_nxv4i64_nxv4i64_nxv4i64(<vscale x 4 x i64> %0, <vscale x 4 x i64> %1, <vscale x 4 x i64> %2, <vscale x 4 x i1> %3, iXLen %4) nounwind {
1002 ; CHECK-LABEL: intrinsic_vrgather_mask_vv_nxv4i64_nxv4i64_nxv4i64:
1003 ; CHECK:       # %bb.0: # %entry
1004 ; CHECK-NEXT:    vsetvli zero, a0, e64, m4, ta, mu
1005 ; CHECK-NEXT:    vrgather.vv v8, v12, v16, v0.t
1006 ; CHECK-NEXT:    ret
1007 entry:
1008   %a = call <vscale x 4 x i64> @llvm.riscv.vrgather.vv.mask.nxv4i64.iXLen(
1009     <vscale x 4 x i64> %0,
1010     <vscale x 4 x i64> %1,
1011     <vscale x 4 x i64> %2,
1012     <vscale x 4 x i1> %3,
1013     iXLen %4, iXLen 1)
1015   ret <vscale x 4 x i64> %a
1018 declare <vscale x 8 x i64> @llvm.riscv.vrgather.vv.nxv8i64.iXLen(
1019   <vscale x 8 x i64>,
1020   <vscale x 8 x i64>,
1021   <vscale x 8 x i64>,
1022   iXLen)
1024 define <vscale x 8 x i64> @intrinsic_vrgather_vv_nxv8i64_nxv8i64_nxv8i64(<vscale x 8 x i64> %0, <vscale x 8 x i64> %1, iXLen %2) nounwind {
1025 ; CHECK-LABEL: intrinsic_vrgather_vv_nxv8i64_nxv8i64_nxv8i64:
1026 ; CHECK:       # %bb.0: # %entry
1027 ; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma
1028 ; CHECK-NEXT:    vrgather.vv v24, v8, v16
1029 ; CHECK-NEXT:    vmv.v.v v8, v24
1030 ; CHECK-NEXT:    ret
1031 entry:
1032   %a = call <vscale x 8 x i64> @llvm.riscv.vrgather.vv.nxv8i64.iXLen(
1033     <vscale x 8 x i64> undef,
1034     <vscale x 8 x i64> %0,
1035     <vscale x 8 x i64> %1,
1036     iXLen %2)
1038   ret <vscale x 8 x i64> %a
1041 declare <vscale x 8 x i64> @llvm.riscv.vrgather.vv.mask.nxv8i64.iXLen(
1042   <vscale x 8 x i64>,
1043   <vscale x 8 x i64>,
1044   <vscale x 8 x i64>,
1045   <vscale x 8 x i1>,
1046   iXLen,
1047   iXLen)
1049 define <vscale x 8 x i64> @intrinsic_vrgather_mask_vv_nxv8i64_nxv8i64_nxv8i64(<vscale x 8 x i64> %0, <vscale x 8 x i64> %1, <vscale x 8 x i64> %2, <vscale x 8 x i1> %3, iXLen %4) nounwind {
1050 ; CHECK-LABEL: intrinsic_vrgather_mask_vv_nxv8i64_nxv8i64_nxv8i64:
1051 ; CHECK:       # %bb.0: # %entry
1052 ; CHECK-NEXT:    vl8re64.v v24, (a0)
1053 ; CHECK-NEXT:    vsetvli zero, a1, e64, m8, ta, mu
1054 ; CHECK-NEXT:    vrgather.vv v8, v16, v24, v0.t
1055 ; CHECK-NEXT:    ret
1056 entry:
1057   %a = call <vscale x 8 x i64> @llvm.riscv.vrgather.vv.mask.nxv8i64.iXLen(
1058     <vscale x 8 x i64> %0,
1059     <vscale x 8 x i64> %1,
1060     <vscale x 8 x i64> %2,
1061     <vscale x 8 x i1> %3,
1062     iXLen %4, iXLen 1)
1064   ret <vscale x 8 x i64> %a
1067 declare <vscale x 1 x half> @llvm.riscv.vrgather.vv.nxv1f16.iXLen(
1068   <vscale x 1 x half>,
1069   <vscale x 1 x half>,
1070   <vscale x 1 x i16>,
1071   iXLen)
1073 define <vscale x 1 x half> @intrinsic_vrgather_vv_nxv1f16_nxv1f16_nxv1i16(<vscale x 1 x half> %0, <vscale x 1 x i16> %1, iXLen %2) nounwind {
1074 ; CHECK-LABEL: intrinsic_vrgather_vv_nxv1f16_nxv1f16_nxv1i16:
1075 ; CHECK:       # %bb.0: # %entry
1076 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma
1077 ; CHECK-NEXT:    vrgather.vv v10, v8, v9
1078 ; CHECK-NEXT:    vmv1r.v v8, v10
1079 ; CHECK-NEXT:    ret
1080 entry:
1081   %a = call <vscale x 1 x half> @llvm.riscv.vrgather.vv.nxv1f16.iXLen(
1082     <vscale x 1 x half> undef,
1083     <vscale x 1 x half> %0,
1084     <vscale x 1 x i16> %1,
1085     iXLen %2)
1087   ret <vscale x 1 x half> %a
1090 declare <vscale x 1 x half> @llvm.riscv.vrgather.vv.mask.nxv1f16.iXLen(
1091   <vscale x 1 x half>,
1092   <vscale x 1 x half>,
1093   <vscale x 1 x i16>,
1094   <vscale x 1 x i1>,
1095   iXLen,
1096   iXLen)
1098 define <vscale x 1 x half> @intrinsic_vrgather_mask_vv_nxv1f16_nxv1f16_nxv1i16(<vscale x 1 x half> %0, <vscale x 1 x half> %1, <vscale x 1 x i16> %2, <vscale x 1 x i1> %3, iXLen %4) nounwind {
1099 ; CHECK-LABEL: intrinsic_vrgather_mask_vv_nxv1f16_nxv1f16_nxv1i16:
1100 ; CHECK:       # %bb.0: # %entry
1101 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, ta, mu
1102 ; CHECK-NEXT:    vrgather.vv v8, v9, v10, v0.t
1103 ; CHECK-NEXT:    ret
1104 entry:
1105   %a = call <vscale x 1 x half> @llvm.riscv.vrgather.vv.mask.nxv1f16.iXLen(
1106     <vscale x 1 x half> %0,
1107     <vscale x 1 x half> %1,
1108     <vscale x 1 x i16> %2,
1109     <vscale x 1 x i1> %3,
1110     iXLen %4, iXLen 1)
1112   ret <vscale x 1 x half> %a
1115 declare <vscale x 2 x half> @llvm.riscv.vrgather.vv.nxv2f16.iXLen(
1116   <vscale x 2 x half>,
1117   <vscale x 2 x half>,
1118   <vscale x 2 x i16>,
1119   iXLen)
1121 define <vscale x 2 x half> @intrinsic_vrgather_vv_nxv2f16_nxv2f16_nxv2i16(<vscale x 2 x half> %0, <vscale x 2 x i16> %1, iXLen %2) nounwind {
1122 ; CHECK-LABEL: intrinsic_vrgather_vv_nxv2f16_nxv2f16_nxv2i16:
1123 ; CHECK:       # %bb.0: # %entry
1124 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf2, ta, ma
1125 ; CHECK-NEXT:    vrgather.vv v10, v8, v9
1126 ; CHECK-NEXT:    vmv1r.v v8, v10
1127 ; CHECK-NEXT:    ret
1128 entry:
1129   %a = call <vscale x 2 x half> @llvm.riscv.vrgather.vv.nxv2f16.iXLen(
1130     <vscale x 2 x half> undef,
1131     <vscale x 2 x half> %0,
1132     <vscale x 2 x i16> %1,
1133     iXLen %2)
1135   ret <vscale x 2 x half> %a
1138 declare <vscale x 2 x half> @llvm.riscv.vrgather.vv.mask.nxv2f16.iXLen(
1139   <vscale x 2 x half>,
1140   <vscale x 2 x half>,
1141   <vscale x 2 x i16>,
1142   <vscale x 2 x i1>,
1143   iXLen,
1144   iXLen)
1146 define <vscale x 2 x half> @intrinsic_vrgather_mask_vv_nxv2f16_nxv2f16_nxv2i16(<vscale x 2 x half> %0, <vscale x 2 x half> %1, <vscale x 2 x i16> %2, <vscale x 2 x i1> %3, iXLen %4) nounwind {
1147 ; CHECK-LABEL: intrinsic_vrgather_mask_vv_nxv2f16_nxv2f16_nxv2i16:
1148 ; CHECK:       # %bb.0: # %entry
1149 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf2, ta, mu
1150 ; CHECK-NEXT:    vrgather.vv v8, v9, v10, v0.t
1151 ; CHECK-NEXT:    ret
1152 entry:
1153   %a = call <vscale x 2 x half> @llvm.riscv.vrgather.vv.mask.nxv2f16.iXLen(
1154     <vscale x 2 x half> %0,
1155     <vscale x 2 x half> %1,
1156     <vscale x 2 x i16> %2,
1157     <vscale x 2 x i1> %3,
1158     iXLen %4, iXLen 1)
1160   ret <vscale x 2 x half> %a
1163 declare <vscale x 4 x half> @llvm.riscv.vrgather.vv.nxv4f16.iXLen(
1164   <vscale x 4 x half>,
1165   <vscale x 4 x half>,
1166   <vscale x 4 x i16>,
1167   iXLen)
1169 define <vscale x 4 x half> @intrinsic_vrgather_vv_nxv4f16_nxv4f16_nxv4i16(<vscale x 4 x half> %0, <vscale x 4 x i16> %1, iXLen %2) nounwind {
1170 ; CHECK-LABEL: intrinsic_vrgather_vv_nxv4f16_nxv4f16_nxv4i16:
1171 ; CHECK:       # %bb.0: # %entry
1172 ; CHECK-NEXT:    vsetvli zero, a0, e16, m1, ta, ma
1173 ; CHECK-NEXT:    vrgather.vv v10, v8, v9
1174 ; CHECK-NEXT:    vmv.v.v v8, v10
1175 ; CHECK-NEXT:    ret
1176 entry:
1177   %a = call <vscale x 4 x half> @llvm.riscv.vrgather.vv.nxv4f16.iXLen(
1178     <vscale x 4 x half> undef,
1179     <vscale x 4 x half> %0,
1180     <vscale x 4 x i16> %1,
1181     iXLen %2)
1183   ret <vscale x 4 x half> %a
1186 declare <vscale x 4 x half> @llvm.riscv.vrgather.vv.mask.nxv4f16.iXLen(
1187   <vscale x 4 x half>,
1188   <vscale x 4 x half>,
1189   <vscale x 4 x i16>,
1190   <vscale x 4 x i1>,
1191   iXLen,
1192   iXLen)
1194 define <vscale x 4 x half> @intrinsic_vrgather_mask_vv_nxv4f16_nxv4f16_nxv4i16(<vscale x 4 x half> %0, <vscale x 4 x half> %1, <vscale x 4 x i16> %2, <vscale x 4 x i1> %3, iXLen %4) nounwind {
1195 ; CHECK-LABEL: intrinsic_vrgather_mask_vv_nxv4f16_nxv4f16_nxv4i16:
1196 ; CHECK:       # %bb.0: # %entry
1197 ; CHECK-NEXT:    vsetvli zero, a0, e16, m1, ta, mu
1198 ; CHECK-NEXT:    vrgather.vv v8, v9, v10, v0.t
1199 ; CHECK-NEXT:    ret
1200 entry:
1201   %a = call <vscale x 4 x half> @llvm.riscv.vrgather.vv.mask.nxv4f16.iXLen(
1202     <vscale x 4 x half> %0,
1203     <vscale x 4 x half> %1,
1204     <vscale x 4 x i16> %2,
1205     <vscale x 4 x i1> %3,
1206     iXLen %4, iXLen 1)
1208   ret <vscale x 4 x half> %a
1211 declare <vscale x 8 x half> @llvm.riscv.vrgather.vv.nxv8f16.iXLen(
1212   <vscale x 8 x half>,
1213   <vscale x 8 x half>,
1214   <vscale x 8 x i16>,
1215   iXLen)
1217 define <vscale x 8 x half> @intrinsic_vrgather_vv_nxv8f16_nxv8f16_nxv8i16(<vscale x 8 x half> %0, <vscale x 8 x i16> %1, iXLen %2) nounwind {
1218 ; CHECK-LABEL: intrinsic_vrgather_vv_nxv8f16_nxv8f16_nxv8i16:
1219 ; CHECK:       # %bb.0: # %entry
1220 ; CHECK-NEXT:    vsetvli zero, a0, e16, m2, ta, ma
1221 ; CHECK-NEXT:    vrgather.vv v12, v8, v10
1222 ; CHECK-NEXT:    vmv.v.v v8, v12
1223 ; CHECK-NEXT:    ret
1224 entry:
1225   %a = call <vscale x 8 x half> @llvm.riscv.vrgather.vv.nxv8f16.iXLen(
1226     <vscale x 8 x half> undef,
1227     <vscale x 8 x half> %0,
1228     <vscale x 8 x i16> %1,
1229     iXLen %2)
1231   ret <vscale x 8 x half> %a
1234 declare <vscale x 8 x half> @llvm.riscv.vrgather.vv.mask.nxv8f16.iXLen(
1235   <vscale x 8 x half>,
1236   <vscale x 8 x half>,
1237   <vscale x 8 x i16>,
1238   <vscale x 8 x i1>,
1239   iXLen,
1240   iXLen)
1242 define <vscale x 8 x half> @intrinsic_vrgather_mask_vv_nxv8f16_nxv8f16_nxv8i16(<vscale x 8 x half> %0, <vscale x 8 x half> %1, <vscale x 8 x i16> %2, <vscale x 8 x i1> %3, iXLen %4) nounwind {
1243 ; CHECK-LABEL: intrinsic_vrgather_mask_vv_nxv8f16_nxv8f16_nxv8i16:
1244 ; CHECK:       # %bb.0: # %entry
1245 ; CHECK-NEXT:    vsetvli zero, a0, e16, m2, ta, mu
1246 ; CHECK-NEXT:    vrgather.vv v8, v10, v12, v0.t
1247 ; CHECK-NEXT:    ret
1248 entry:
1249   %a = call <vscale x 8 x half> @llvm.riscv.vrgather.vv.mask.nxv8f16.iXLen(
1250     <vscale x 8 x half> %0,
1251     <vscale x 8 x half> %1,
1252     <vscale x 8 x i16> %2,
1253     <vscale x 8 x i1> %3,
1254     iXLen %4, iXLen 1)
1256   ret <vscale x 8 x half> %a
1259 declare <vscale x 16 x half> @llvm.riscv.vrgather.vv.nxv16f16.iXLen(
1260   <vscale x 16 x half>,
1261   <vscale x 16 x half>,
1262   <vscale x 16 x i16>,
1263   iXLen)
1265 define <vscale x 16 x half> @intrinsic_vrgather_vv_nxv16f16_nxv16f16_nxv16i16(<vscale x 16 x half> %0, <vscale x 16 x i16> %1, iXLen %2) nounwind {
1266 ; CHECK-LABEL: intrinsic_vrgather_vv_nxv16f16_nxv16f16_nxv16i16:
1267 ; CHECK:       # %bb.0: # %entry
1268 ; CHECK-NEXT:    vsetvli zero, a0, e16, m4, ta, ma
1269 ; CHECK-NEXT:    vrgather.vv v16, v8, v12
1270 ; CHECK-NEXT:    vmv.v.v v8, v16
1271 ; CHECK-NEXT:    ret
1272 entry:
1273   %a = call <vscale x 16 x half> @llvm.riscv.vrgather.vv.nxv16f16.iXLen(
1274     <vscale x 16 x half> undef,
1275     <vscale x 16 x half> %0,
1276     <vscale x 16 x i16> %1,
1277     iXLen %2)
1279   ret <vscale x 16 x half> %a
1282 declare <vscale x 16 x half> @llvm.riscv.vrgather.vv.mask.nxv16f16.iXLen(
1283   <vscale x 16 x half>,
1284   <vscale x 16 x half>,
1285   <vscale x 16 x i16>,
1286   <vscale x 16 x i1>,
1287   iXLen,
1288   iXLen)
1290 define <vscale x 16 x half> @intrinsic_vrgather_mask_vv_nxv16f16_nxv16f16_nxv16i16(<vscale x 16 x half> %0, <vscale x 16 x half> %1, <vscale x 16 x i16> %2, <vscale x 16 x i1> %3, iXLen %4) nounwind {
1291 ; CHECK-LABEL: intrinsic_vrgather_mask_vv_nxv16f16_nxv16f16_nxv16i16:
1292 ; CHECK:       # %bb.0: # %entry
1293 ; CHECK-NEXT:    vsetvli zero, a0, e16, m4, ta, mu
1294 ; CHECK-NEXT:    vrgather.vv v8, v12, v16, v0.t
1295 ; CHECK-NEXT:    ret
1296 entry:
1297   %a = call <vscale x 16 x half> @llvm.riscv.vrgather.vv.mask.nxv16f16.iXLen(
1298     <vscale x 16 x half> %0,
1299     <vscale x 16 x half> %1,
1300     <vscale x 16 x i16> %2,
1301     <vscale x 16 x i1> %3,
1302     iXLen %4, iXLen 1)
1304   ret <vscale x 16 x half> %a
1307 declare <vscale x 32 x half> @llvm.riscv.vrgather.vv.nxv32f16.iXLen(
1308   <vscale x 32 x half>,
1309   <vscale x 32 x half>,
1310   <vscale x 32 x i16>,
1311   iXLen)
1313 define <vscale x 32 x half> @intrinsic_vrgather_vv_nxv32f16_nxv32f16_nxv32i16(<vscale x 32 x half> %0, <vscale x 32 x i16> %1, iXLen %2) nounwind {
1314 ; CHECK-LABEL: intrinsic_vrgather_vv_nxv32f16_nxv32f16_nxv32i16:
1315 ; CHECK:       # %bb.0: # %entry
1316 ; CHECK-NEXT:    vsetvli zero, a0, e16, m8, ta, ma
1317 ; CHECK-NEXT:    vrgather.vv v24, v8, v16
1318 ; CHECK-NEXT:    vmv.v.v v8, v24
1319 ; CHECK-NEXT:    ret
1320 entry:
1321   %a = call <vscale x 32 x half> @llvm.riscv.vrgather.vv.nxv32f16.iXLen(
1322     <vscale x 32 x half> undef,
1323     <vscale x 32 x half> %0,
1324     <vscale x 32 x i16> %1,
1325     iXLen %2)
1327   ret <vscale x 32 x half> %a
1330 declare <vscale x 32 x half> @llvm.riscv.vrgather.vv.mask.nxv32f16.iXLen(
1331   <vscale x 32 x half>,
1332   <vscale x 32 x half>,
1333   <vscale x 32 x i16>,
1334   <vscale x 32 x i1>,
1335   iXLen,
1336   iXLen)
1338 define <vscale x 32 x half> @intrinsic_vrgather_mask_vv_nxv32f16_nxv32f16_nxv32i16(<vscale x 32 x half> %0, <vscale x 32 x half> %1, <vscale x 32 x i16> %2, <vscale x 32 x i1> %3, iXLen %4) nounwind {
1339 ; CHECK-LABEL: intrinsic_vrgather_mask_vv_nxv32f16_nxv32f16_nxv32i16:
1340 ; CHECK:       # %bb.0: # %entry
1341 ; CHECK-NEXT:    vl8re16.v v24, (a0)
1342 ; CHECK-NEXT:    vsetvli zero, a1, e16, m8, ta, mu
1343 ; CHECK-NEXT:    vrgather.vv v8, v16, v24, v0.t
1344 ; CHECK-NEXT:    ret
1345 entry:
1346   %a = call <vscale x 32 x half> @llvm.riscv.vrgather.vv.mask.nxv32f16.iXLen(
1347     <vscale x 32 x half> %0,
1348     <vscale x 32 x half> %1,
1349     <vscale x 32 x i16> %2,
1350     <vscale x 32 x i1> %3,
1351     iXLen %4, iXLen 1)
1353   ret <vscale x 32 x half> %a
1356 declare <vscale x 1 x float> @llvm.riscv.vrgather.vv.nxv1f32.iXLen(
1357   <vscale x 1 x float>,
1358   <vscale x 1 x float>,
1359   <vscale x 1 x i32>,
1360   iXLen)
1362 define <vscale x 1 x float> @intrinsic_vrgather_vv_nxv1f32_nxv1f32_nxv1i32(<vscale x 1 x float> %0, <vscale x 1 x i32> %1, iXLen %2) nounwind {
1363 ; CHECK-LABEL: intrinsic_vrgather_vv_nxv1f32_nxv1f32_nxv1i32:
1364 ; CHECK:       # %bb.0: # %entry
1365 ; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma
1366 ; CHECK-NEXT:    vrgather.vv v10, v8, v9
1367 ; CHECK-NEXT:    vmv1r.v v8, v10
1368 ; CHECK-NEXT:    ret
1369 entry:
1370   %a = call <vscale x 1 x float> @llvm.riscv.vrgather.vv.nxv1f32.iXLen(
1371     <vscale x 1 x float> undef,
1372     <vscale x 1 x float> %0,
1373     <vscale x 1 x i32> %1,
1374     iXLen %2)
1376   ret <vscale x 1 x float> %a
1379 declare <vscale x 1 x float> @llvm.riscv.vrgather.vv.mask.nxv1f32.iXLen(
1380   <vscale x 1 x float>,
1381   <vscale x 1 x float>,
1382   <vscale x 1 x i32>,
1383   <vscale x 1 x i1>,
1384   iXLen,
1385   iXLen)
1387 define <vscale x 1 x float> @intrinsic_vrgather_mask_vv_nxv1f32_nxv1f32_nxv1i32(<vscale x 1 x float> %0, <vscale x 1 x float> %1, <vscale x 1 x i32> %2, <vscale x 1 x i1> %3, iXLen %4) nounwind {
1388 ; CHECK-LABEL: intrinsic_vrgather_mask_vv_nxv1f32_nxv1f32_nxv1i32:
1389 ; CHECK:       # %bb.0: # %entry
1390 ; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, mu
1391 ; CHECK-NEXT:    vrgather.vv v8, v9, v10, v0.t
1392 ; CHECK-NEXT:    ret
1393 entry:
1394   %a = call <vscale x 1 x float> @llvm.riscv.vrgather.vv.mask.nxv1f32.iXLen(
1395     <vscale x 1 x float> %0,
1396     <vscale x 1 x float> %1,
1397     <vscale x 1 x i32> %2,
1398     <vscale x 1 x i1> %3,
1399     iXLen %4, iXLen 1)
1401   ret <vscale x 1 x float> %a
1404 declare <vscale x 2 x float> @llvm.riscv.vrgather.vv.nxv2f32.iXLen(
1405   <vscale x 2 x float>,
1406   <vscale x 2 x float>,
1407   <vscale x 2 x i32>,
1408   iXLen)
1410 define <vscale x 2 x float> @intrinsic_vrgather_vv_nxv2f32_nxv2f32_nxv2i32(<vscale x 2 x float> %0, <vscale x 2 x i32> %1, iXLen %2) nounwind {
1411 ; CHECK-LABEL: intrinsic_vrgather_vv_nxv2f32_nxv2f32_nxv2i32:
1412 ; CHECK:       # %bb.0: # %entry
1413 ; CHECK-NEXT:    vsetvli zero, a0, e32, m1, ta, ma
1414 ; CHECK-NEXT:    vrgather.vv v10, v8, v9
1415 ; CHECK-NEXT:    vmv.v.v v8, v10
1416 ; CHECK-NEXT:    ret
1417 entry:
1418   %a = call <vscale x 2 x float> @llvm.riscv.vrgather.vv.nxv2f32.iXLen(
1419     <vscale x 2 x float> undef,
1420     <vscale x 2 x float> %0,
1421     <vscale x 2 x i32> %1,
1422     iXLen %2)
1424   ret <vscale x 2 x float> %a
1427 declare <vscale x 2 x float> @llvm.riscv.vrgather.vv.mask.nxv2f32.iXLen(
1428   <vscale x 2 x float>,
1429   <vscale x 2 x float>,
1430   <vscale x 2 x i32>,
1431   <vscale x 2 x i1>,
1432   iXLen,
1433   iXLen)
1435 define <vscale x 2 x float> @intrinsic_vrgather_mask_vv_nxv2f32_nxv2f32_nxv2i32(<vscale x 2 x float> %0, <vscale x 2 x float> %1, <vscale x 2 x i32> %2, <vscale x 2 x i1> %3, iXLen %4) nounwind {
1436 ; CHECK-LABEL: intrinsic_vrgather_mask_vv_nxv2f32_nxv2f32_nxv2i32:
1437 ; CHECK:       # %bb.0: # %entry
1438 ; CHECK-NEXT:    vsetvli zero, a0, e32, m1, ta, mu
1439 ; CHECK-NEXT:    vrgather.vv v8, v9, v10, v0.t
1440 ; CHECK-NEXT:    ret
1441 entry:
1442   %a = call <vscale x 2 x float> @llvm.riscv.vrgather.vv.mask.nxv2f32.iXLen(
1443     <vscale x 2 x float> %0,
1444     <vscale x 2 x float> %1,
1445     <vscale x 2 x i32> %2,
1446     <vscale x 2 x i1> %3,
1447     iXLen %4, iXLen 1)
1449   ret <vscale x 2 x float> %a
1452 declare <vscale x 4 x float> @llvm.riscv.vrgather.vv.nxv4f32.iXLen(
1453   <vscale x 4 x float>,
1454   <vscale x 4 x float>,
1455   <vscale x 4 x i32>,
1456   iXLen)
1458 define <vscale x 4 x float> @intrinsic_vrgather_vv_nxv4f32_nxv4f32_nxv4i32(<vscale x 4 x float> %0, <vscale x 4 x i32> %1, iXLen %2) nounwind {
1459 ; CHECK-LABEL: intrinsic_vrgather_vv_nxv4f32_nxv4f32_nxv4i32:
1460 ; CHECK:       # %bb.0: # %entry
1461 ; CHECK-NEXT:    vsetvli zero, a0, e32, m2, ta, ma
1462 ; CHECK-NEXT:    vrgather.vv v12, v8, v10
1463 ; CHECK-NEXT:    vmv.v.v v8, v12
1464 ; CHECK-NEXT:    ret
1465 entry:
1466   %a = call <vscale x 4 x float> @llvm.riscv.vrgather.vv.nxv4f32.iXLen(
1467     <vscale x 4 x float> undef,
1468     <vscale x 4 x float> %0,
1469     <vscale x 4 x i32> %1,
1470     iXLen %2)
1472   ret <vscale x 4 x float> %a
1475 declare <vscale x 4 x float> @llvm.riscv.vrgather.vv.mask.nxv4f32.iXLen(
1476   <vscale x 4 x float>,
1477   <vscale x 4 x float>,
1478   <vscale x 4 x i32>,
1479   <vscale x 4 x i1>,
1480   iXLen,
1481   iXLen)
1483 define <vscale x 4 x float> @intrinsic_vrgather_mask_vv_nxv4f32_nxv4f32_nxv4i32(<vscale x 4 x float> %0, <vscale x 4 x float> %1, <vscale x 4 x i32> %2, <vscale x 4 x i1> %3, iXLen %4) nounwind {
1484 ; CHECK-LABEL: intrinsic_vrgather_mask_vv_nxv4f32_nxv4f32_nxv4i32:
1485 ; CHECK:       # %bb.0: # %entry
1486 ; CHECK-NEXT:    vsetvli zero, a0, e32, m2, ta, mu
1487 ; CHECK-NEXT:    vrgather.vv v8, v10, v12, v0.t
1488 ; CHECK-NEXT:    ret
1489 entry:
1490   %a = call <vscale x 4 x float> @llvm.riscv.vrgather.vv.mask.nxv4f32.iXLen(
1491     <vscale x 4 x float> %0,
1492     <vscale x 4 x float> %1,
1493     <vscale x 4 x i32> %2,
1494     <vscale x 4 x i1> %3,
1495     iXLen %4, iXLen 1)
1497   ret <vscale x 4 x float> %a
1500 declare <vscale x 8 x float> @llvm.riscv.vrgather.vv.nxv8f32.iXLen(
1501   <vscale x 8 x float>,
1502   <vscale x 8 x float>,
1503   <vscale x 8 x i32>,
1504   iXLen)
1506 define <vscale x 8 x float> @intrinsic_vrgather_vv_nxv8f32_nxv8f32_nxv8i32(<vscale x 8 x float> %0, <vscale x 8 x i32> %1, iXLen %2) nounwind {
1507 ; CHECK-LABEL: intrinsic_vrgather_vv_nxv8f32_nxv8f32_nxv8i32:
1508 ; CHECK:       # %bb.0: # %entry
1509 ; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, ma
1510 ; CHECK-NEXT:    vrgather.vv v16, v8, v12
1511 ; CHECK-NEXT:    vmv.v.v v8, v16
1512 ; CHECK-NEXT:    ret
1513 entry:
1514   %a = call <vscale x 8 x float> @llvm.riscv.vrgather.vv.nxv8f32.iXLen(
1515     <vscale x 8 x float> undef,
1516     <vscale x 8 x float> %0,
1517     <vscale x 8 x i32> %1,
1518     iXLen %2)
1520   ret <vscale x 8 x float> %a
1523 declare <vscale x 8 x float> @llvm.riscv.vrgather.vv.mask.nxv8f32.iXLen(
1524   <vscale x 8 x float>,
1525   <vscale x 8 x float>,
1526   <vscale x 8 x i32>,
1527   <vscale x 8 x i1>,
1528   iXLen,
1529   iXLen)
1531 define <vscale x 8 x float> @intrinsic_vrgather_mask_vv_nxv8f32_nxv8f32_nxv8i32(<vscale x 8 x float> %0, <vscale x 8 x float> %1, <vscale x 8 x i32> %2, <vscale x 8 x i1> %3, iXLen %4) nounwind {
1532 ; CHECK-LABEL: intrinsic_vrgather_mask_vv_nxv8f32_nxv8f32_nxv8i32:
1533 ; CHECK:       # %bb.0: # %entry
1534 ; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, mu
1535 ; CHECK-NEXT:    vrgather.vv v8, v12, v16, v0.t
1536 ; CHECK-NEXT:    ret
1537 entry:
1538   %a = call <vscale x 8 x float> @llvm.riscv.vrgather.vv.mask.nxv8f32.iXLen(
1539     <vscale x 8 x float> %0,
1540     <vscale x 8 x float> %1,
1541     <vscale x 8 x i32> %2,
1542     <vscale x 8 x i1> %3,
1543     iXLen %4, iXLen 1)
1545   ret <vscale x 8 x float> %a
1548 declare <vscale x 16 x float> @llvm.riscv.vrgather.vv.nxv16f32.iXLen(
1549   <vscale x 16 x float>,
1550   <vscale x 16 x float>,
1551   <vscale x 16 x i32>,
1552   iXLen)
1554 define <vscale x 16 x float> @intrinsic_vrgather_vv_nxv16f32_nxv16f32_nxv16i32(<vscale x 16 x float> %0, <vscale x 16 x i32> %1, iXLen %2) nounwind {
1555 ; CHECK-LABEL: intrinsic_vrgather_vv_nxv16f32_nxv16f32_nxv16i32:
1556 ; CHECK:       # %bb.0: # %entry
1557 ; CHECK-NEXT:    vsetvli zero, a0, e32, m8, ta, ma
1558 ; CHECK-NEXT:    vrgather.vv v24, v8, v16
1559 ; CHECK-NEXT:    vmv.v.v v8, v24
1560 ; CHECK-NEXT:    ret
1561 entry:
1562   %a = call <vscale x 16 x float> @llvm.riscv.vrgather.vv.nxv16f32.iXLen(
1563     <vscale x 16 x float> undef,
1564     <vscale x 16 x float> %0,
1565     <vscale x 16 x i32> %1,
1566     iXLen %2)
1568   ret <vscale x 16 x float> %a
1571 declare <vscale x 16 x float> @llvm.riscv.vrgather.vv.mask.nxv16f32.iXLen(
1572   <vscale x 16 x float>,
1573   <vscale x 16 x float>,
1574   <vscale x 16 x i32>,
1575   <vscale x 16 x i1>,
1576   iXLen,
1577   iXLen)
1579 define <vscale x 16 x float> @intrinsic_vrgather_mask_vv_nxv16f32_nxv16f32_nxv16i32(<vscale x 16 x float> %0, <vscale x 16 x float> %1, <vscale x 16 x i32> %2, <vscale x 16 x i1> %3, iXLen %4) nounwind {
1580 ; CHECK-LABEL: intrinsic_vrgather_mask_vv_nxv16f32_nxv16f32_nxv16i32:
1581 ; CHECK:       # %bb.0: # %entry
1582 ; CHECK-NEXT:    vl8re32.v v24, (a0)
1583 ; CHECK-NEXT:    vsetvli zero, a1, e32, m8, ta, mu
1584 ; CHECK-NEXT:    vrgather.vv v8, v16, v24, v0.t
1585 ; CHECK-NEXT:    ret
1586 entry:
1587   %a = call <vscale x 16 x float> @llvm.riscv.vrgather.vv.mask.nxv16f32.iXLen(
1588     <vscale x 16 x float> %0,
1589     <vscale x 16 x float> %1,
1590     <vscale x 16 x i32> %2,
1591     <vscale x 16 x i1> %3,
1592     iXLen %4, iXLen 1)
1594   ret <vscale x 16 x float> %a
1597 declare <vscale x 1 x double> @llvm.riscv.vrgather.vv.nxv1f64.iXLen(
1598   <vscale x 1 x double>,
1599   <vscale x 1 x double>,
1600   <vscale x 1 x i64>,
1601   iXLen)
1603 define <vscale x 1 x double> @intrinsic_vrgather_vv_nxv1f64_nxv1f64_nxv1i64(<vscale x 1 x double> %0, <vscale x 1 x i64> %1, iXLen %2) nounwind {
1604 ; CHECK-LABEL: intrinsic_vrgather_vv_nxv1f64_nxv1f64_nxv1i64:
1605 ; CHECK:       # %bb.0: # %entry
1606 ; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
1607 ; CHECK-NEXT:    vrgather.vv v10, v8, v9
1608 ; CHECK-NEXT:    vmv.v.v v8, v10
1609 ; CHECK-NEXT:    ret
1610 entry:
1611   %a = call <vscale x 1 x double> @llvm.riscv.vrgather.vv.nxv1f64.iXLen(
1612     <vscale x 1 x double> undef,
1613     <vscale x 1 x double> %0,
1614     <vscale x 1 x i64> %1,
1615     iXLen %2)
1617   ret <vscale x 1 x double> %a
1620 declare <vscale x 1 x double> @llvm.riscv.vrgather.vv.mask.nxv1f64.iXLen(
1621   <vscale x 1 x double>,
1622   <vscale x 1 x double>,
1623   <vscale x 1 x i64>,
1624   <vscale x 1 x i1>,
1625   iXLen,
1626   iXLen)
1628 define <vscale x 1 x double> @intrinsic_vrgather_mask_vv_nxv1f64_nxv1f64_nxv1i64(<vscale x 1 x double> %0, <vscale x 1 x double> %1, <vscale x 1 x i64> %2, <vscale x 1 x i1> %3, iXLen %4) nounwind {
1629 ; CHECK-LABEL: intrinsic_vrgather_mask_vv_nxv1f64_nxv1f64_nxv1i64:
1630 ; CHECK:       # %bb.0: # %entry
1631 ; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, mu
1632 ; CHECK-NEXT:    vrgather.vv v8, v9, v10, v0.t
1633 ; CHECK-NEXT:    ret
1634 entry:
1635   %a = call <vscale x 1 x double> @llvm.riscv.vrgather.vv.mask.nxv1f64.iXLen(
1636     <vscale x 1 x double> %0,
1637     <vscale x 1 x double> %1,
1638     <vscale x 1 x i64> %2,
1639     <vscale x 1 x i1> %3,
1640     iXLen %4, iXLen 1)
1642   ret <vscale x 1 x double> %a
1645 declare <vscale x 2 x double> @llvm.riscv.vrgather.vv.nxv2f64.iXLen(
1646   <vscale x 2 x double>,
1647   <vscale x 2 x double>,
1648   <vscale x 2 x i64>,
1649   iXLen)
1651 define <vscale x 2 x double> @intrinsic_vrgather_vv_nxv2f64_nxv2f64_nxv2i64(<vscale x 2 x double> %0, <vscale x 2 x i64> %1, iXLen %2) nounwind {
1652 ; CHECK-LABEL: intrinsic_vrgather_vv_nxv2f64_nxv2f64_nxv2i64:
1653 ; CHECK:       # %bb.0: # %entry
1654 ; CHECK-NEXT:    vsetvli zero, a0, e64, m2, ta, ma
1655 ; CHECK-NEXT:    vrgather.vv v12, v8, v10
1656 ; CHECK-NEXT:    vmv.v.v v8, v12
1657 ; CHECK-NEXT:    ret
1658 entry:
1659   %a = call <vscale x 2 x double> @llvm.riscv.vrgather.vv.nxv2f64.iXLen(
1660     <vscale x 2 x double> undef,
1661     <vscale x 2 x double> %0,
1662     <vscale x 2 x i64> %1,
1663     iXLen %2)
1665   ret <vscale x 2 x double> %a
1668 declare <vscale x 2 x double> @llvm.riscv.vrgather.vv.mask.nxv2f64.iXLen(
1669   <vscale x 2 x double>,
1670   <vscale x 2 x double>,
1671   <vscale x 2 x i64>,
1672   <vscale x 2 x i1>,
1673   iXLen,
1674   iXLen)
1676 define <vscale x 2 x double> @intrinsic_vrgather_mask_vv_nxv2f64_nxv2f64_nxv2i64(<vscale x 2 x double> %0, <vscale x 2 x double> %1, <vscale x 2 x i64> %2, <vscale x 2 x i1> %3, iXLen %4) nounwind {
1677 ; CHECK-LABEL: intrinsic_vrgather_mask_vv_nxv2f64_nxv2f64_nxv2i64:
1678 ; CHECK:       # %bb.0: # %entry
1679 ; CHECK-NEXT:    vsetvli zero, a0, e64, m2, ta, mu
1680 ; CHECK-NEXT:    vrgather.vv v8, v10, v12, v0.t
1681 ; CHECK-NEXT:    ret
1682 entry:
1683   %a = call <vscale x 2 x double> @llvm.riscv.vrgather.vv.mask.nxv2f64.iXLen(
1684     <vscale x 2 x double> %0,
1685     <vscale x 2 x double> %1,
1686     <vscale x 2 x i64> %2,
1687     <vscale x 2 x i1> %3,
1688     iXLen %4, iXLen 1)
1690   ret <vscale x 2 x double> %a
1693 declare <vscale x 4 x double> @llvm.riscv.vrgather.vv.nxv4f64.iXLen(
1694   <vscale x 4 x double>,
1695   <vscale x 4 x double>,
1696   <vscale x 4 x i64>,
1697   iXLen)
1699 define <vscale x 4 x double> @intrinsic_vrgather_vv_nxv4f64_nxv4f64_nxv4i64(<vscale x 4 x double> %0, <vscale x 4 x i64> %1, iXLen %2) nounwind {
1700 ; CHECK-LABEL: intrinsic_vrgather_vv_nxv4f64_nxv4f64_nxv4i64:
1701 ; CHECK:       # %bb.0: # %entry
1702 ; CHECK-NEXT:    vsetvli zero, a0, e64, m4, ta, ma
1703 ; CHECK-NEXT:    vrgather.vv v16, v8, v12
1704 ; CHECK-NEXT:    vmv.v.v v8, v16
1705 ; CHECK-NEXT:    ret
1706 entry:
1707   %a = call <vscale x 4 x double> @llvm.riscv.vrgather.vv.nxv4f64.iXLen(
1708     <vscale x 4 x double> undef,
1709     <vscale x 4 x double> %0,
1710     <vscale x 4 x i64> %1,
1711     iXLen %2)
1713   ret <vscale x 4 x double> %a
1716 declare <vscale x 4 x double> @llvm.riscv.vrgather.vv.mask.nxv4f64.iXLen(
1717   <vscale x 4 x double>,
1718   <vscale x 4 x double>,
1719   <vscale x 4 x i64>,
1720   <vscale x 4 x i1>,
1721   iXLen,
1722   iXLen)
1724 define <vscale x 4 x double> @intrinsic_vrgather_mask_vv_nxv4f64_nxv4f64_nxv4i64(<vscale x 4 x double> %0, <vscale x 4 x double> %1, <vscale x 4 x i64> %2, <vscale x 4 x i1> %3, iXLen %4) nounwind {
1725 ; CHECK-LABEL: intrinsic_vrgather_mask_vv_nxv4f64_nxv4f64_nxv4i64:
1726 ; CHECK:       # %bb.0: # %entry
1727 ; CHECK-NEXT:    vsetvli zero, a0, e64, m4, ta, mu
1728 ; CHECK-NEXT:    vrgather.vv v8, v12, v16, v0.t
1729 ; CHECK-NEXT:    ret
1730 entry:
1731   %a = call <vscale x 4 x double> @llvm.riscv.vrgather.vv.mask.nxv4f64.iXLen(
1732     <vscale x 4 x double> %0,
1733     <vscale x 4 x double> %1,
1734     <vscale x 4 x i64> %2,
1735     <vscale x 4 x i1> %3,
1736     iXLen %4, iXLen 1)
1738   ret <vscale x 4 x double> %a
1741 declare <vscale x 8 x double> @llvm.riscv.vrgather.vv.nxv8f64.iXLen(
1742   <vscale x 8 x double>,
1743   <vscale x 8 x double>,
1744   <vscale x 8 x i64>,
1745   iXLen)
1747 define <vscale x 8 x double> @intrinsic_vrgather_vv_nxv8f64_nxv8f64_nxv8i64(<vscale x 8 x double> %0, <vscale x 8 x i64> %1, iXLen %2) nounwind {
1748 ; CHECK-LABEL: intrinsic_vrgather_vv_nxv8f64_nxv8f64_nxv8i64:
1749 ; CHECK:       # %bb.0: # %entry
1750 ; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma
1751 ; CHECK-NEXT:    vrgather.vv v24, v8, v16
1752 ; CHECK-NEXT:    vmv.v.v v8, v24
1753 ; CHECK-NEXT:    ret
1754 entry:
1755   %a = call <vscale x 8 x double> @llvm.riscv.vrgather.vv.nxv8f64.iXLen(
1756     <vscale x 8 x double> undef,
1757     <vscale x 8 x double> %0,
1758     <vscale x 8 x i64> %1,
1759     iXLen %2)
1761   ret <vscale x 8 x double> %a
1764 declare <vscale x 8 x double> @llvm.riscv.vrgather.vv.mask.nxv8f64.iXLen(
1765   <vscale x 8 x double>,
1766   <vscale x 8 x double>,
1767   <vscale x 8 x i64>,
1768   <vscale x 8 x i1>,
1769   iXLen,
1770   iXLen)
1772 define <vscale x 8 x double> @intrinsic_vrgather_mask_vv_nxv8f64_nxv8f64_nxv8i64(<vscale x 8 x double> %0, <vscale x 8 x double> %1, <vscale x 8 x i64> %2, <vscale x 8 x i1> %3, iXLen %4) nounwind {
1773 ; CHECK-LABEL: intrinsic_vrgather_mask_vv_nxv8f64_nxv8f64_nxv8i64:
1774 ; CHECK:       # %bb.0: # %entry
1775 ; CHECK-NEXT:    vl8re64.v v24, (a0)
1776 ; CHECK-NEXT:    vsetvli zero, a1, e64, m8, ta, mu
1777 ; CHECK-NEXT:    vrgather.vv v8, v16, v24, v0.t
1778 ; CHECK-NEXT:    ret
1779 entry:
1780   %a = call <vscale x 8 x double> @llvm.riscv.vrgather.vv.mask.nxv8f64.iXLen(
1781     <vscale x 8 x double> %0,
1782     <vscale x 8 x double> %1,
1783     <vscale x 8 x i64> %2,
1784     <vscale x 8 x i1> %3,
1785     iXLen %4, iXLen 1)
1787   ret <vscale x 8 x double> %a
1790 declare <vscale x 1 x i8> @llvm.riscv.vrgather.vx.nxv1i8.iXLen(
1791   <vscale x 1 x i8>,
1792   <vscale x 1 x i8>,
1793   iXLen,
1794   iXLen)
1796 define <vscale x 1 x i8> @intrinsic_vrgather_vx_nxv1i8_nxv1i8(<vscale x 1 x i8> %0, iXLen %1, iXLen %2) nounwind {
1797 ; CHECK-LABEL: intrinsic_vrgather_vx_nxv1i8_nxv1i8:
1798 ; CHECK:       # %bb.0: # %entry
1799 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf8, ta, ma
1800 ; CHECK-NEXT:    vrgather.vx v9, v8, a0
1801 ; CHECK-NEXT:    vmv1r.v v8, v9
1802 ; CHECK-NEXT:    ret
1803 entry:
1804   %a = call <vscale x 1 x i8> @llvm.riscv.vrgather.vx.nxv1i8.iXLen(
1805     <vscale x 1 x i8> undef,
1806     <vscale x 1 x i8> %0,
1807     iXLen %1,
1808     iXLen %2)
1810   ret <vscale x 1 x i8> %a
1813 declare <vscale x 1 x i8> @llvm.riscv.vrgather.vx.mask.nxv1i8.iXLen(
1814   <vscale x 1 x i8>,
1815   <vscale x 1 x i8>,
1816   iXLen,
1817   <vscale x 1 x i1>,
1818   iXLen,
1819   iXLen)
1821 define <vscale x 1 x i8> @intrinsic_vrgather_mask_vx_nxv1i8_nxv1i8(<vscale x 1 x i8> %0, <vscale x 1 x i8> %1, iXLen %2, <vscale x 1 x i1> %3, iXLen %4) nounwind {
1822 ; CHECK-LABEL: intrinsic_vrgather_mask_vx_nxv1i8_nxv1i8:
1823 ; CHECK:       # %bb.0: # %entry
1824 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf8, ta, mu
1825 ; CHECK-NEXT:    vrgather.vx v8, v9, a0, v0.t
1826 ; CHECK-NEXT:    ret
1827 entry:
1828   %a = call <vscale x 1 x i8> @llvm.riscv.vrgather.vx.mask.nxv1i8.iXLen(
1829     <vscale x 1 x i8> %0,
1830     <vscale x 1 x i8> %1,
1831     iXLen %2,
1832     <vscale x 1 x i1> %3,
1833     iXLen %4, iXLen 1)
1835   ret <vscale x 1 x i8> %a
1838 declare <vscale x 2 x i8> @llvm.riscv.vrgather.vx.nxv2i8.iXLen(
1839   <vscale x 2 x i8>,
1840   <vscale x 2 x i8>,
1841   iXLen,
1842   iXLen)
1844 define <vscale x 2 x i8> @intrinsic_vrgather_vx_nxv2i8_nxv2i8(<vscale x 2 x i8> %0, iXLen %1, iXLen %2) nounwind {
1845 ; CHECK-LABEL: intrinsic_vrgather_vx_nxv2i8_nxv2i8:
1846 ; CHECK:       # %bb.0: # %entry
1847 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf4, ta, ma
1848 ; CHECK-NEXT:    vrgather.vx v9, v8, a0
1849 ; CHECK-NEXT:    vmv1r.v v8, v9
1850 ; CHECK-NEXT:    ret
1851 entry:
1852   %a = call <vscale x 2 x i8> @llvm.riscv.vrgather.vx.nxv2i8.iXLen(
1853     <vscale x 2 x i8> undef,
1854     <vscale x 2 x i8> %0,
1855     iXLen %1,
1856     iXLen %2)
1858   ret <vscale x 2 x i8> %a
1861 declare <vscale x 2 x i8> @llvm.riscv.vrgather.vx.mask.nxv2i8.iXLen(
1862   <vscale x 2 x i8>,
1863   <vscale x 2 x i8>,
1864   iXLen,
1865   <vscale x 2 x i1>,
1866   iXLen,
1867   iXLen)
1869 define <vscale x 2 x i8> @intrinsic_vrgather_mask_vx_nxv2i8_nxv2i8(<vscale x 2 x i8> %0, <vscale x 2 x i8> %1, iXLen %2, <vscale x 2 x i1> %3, iXLen %4) nounwind {
1870 ; CHECK-LABEL: intrinsic_vrgather_mask_vx_nxv2i8_nxv2i8:
1871 ; CHECK:       # %bb.0: # %entry
1872 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf4, ta, mu
1873 ; CHECK-NEXT:    vrgather.vx v8, v9, a0, v0.t
1874 ; CHECK-NEXT:    ret
1875 entry:
1876   %a = call <vscale x 2 x i8> @llvm.riscv.vrgather.vx.mask.nxv2i8.iXLen(
1877     <vscale x 2 x i8> %0,
1878     <vscale x 2 x i8> %1,
1879     iXLen %2,
1880     <vscale x 2 x i1> %3,
1881     iXLen %4, iXLen 1)
1883   ret <vscale x 2 x i8> %a
1886 declare <vscale x 4 x i8> @llvm.riscv.vrgather.vx.nxv4i8.iXLen(
1887   <vscale x 4 x i8>,
1888   <vscale x 4 x i8>,
1889   iXLen,
1890   iXLen)
1892 define <vscale x 4 x i8> @intrinsic_vrgather_vx_nxv4i8_nxv4i8(<vscale x 4 x i8> %0, iXLen %1, iXLen %2) nounwind {
1893 ; CHECK-LABEL: intrinsic_vrgather_vx_nxv4i8_nxv4i8:
1894 ; CHECK:       # %bb.0: # %entry
1895 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf2, ta, ma
1896 ; CHECK-NEXT:    vrgather.vx v9, v8, a0
1897 ; CHECK-NEXT:    vmv1r.v v8, v9
1898 ; CHECK-NEXT:    ret
1899 entry:
1900   %a = call <vscale x 4 x i8> @llvm.riscv.vrgather.vx.nxv4i8.iXLen(
1901     <vscale x 4 x i8> undef,
1902     <vscale x 4 x i8> %0,
1903     iXLen %1,
1904     iXLen %2)
1906   ret <vscale x 4 x i8> %a
1909 declare <vscale x 4 x i8> @llvm.riscv.vrgather.vx.mask.nxv4i8.iXLen(
1910   <vscale x 4 x i8>,
1911   <vscale x 4 x i8>,
1912   iXLen,
1913   <vscale x 4 x i1>,
1914   iXLen,
1915   iXLen)
1917 define <vscale x 4 x i8> @intrinsic_vrgather_mask_vx_nxv4i8_nxv4i8(<vscale x 4 x i8> %0, <vscale x 4 x i8> %1, iXLen %2, <vscale x 4 x i1> %3, iXLen %4) nounwind {
1918 ; CHECK-LABEL: intrinsic_vrgather_mask_vx_nxv4i8_nxv4i8:
1919 ; CHECK:       # %bb.0: # %entry
1920 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf2, ta, mu
1921 ; CHECK-NEXT:    vrgather.vx v8, v9, a0, v0.t
1922 ; CHECK-NEXT:    ret
1923 entry:
1924   %a = call <vscale x 4 x i8> @llvm.riscv.vrgather.vx.mask.nxv4i8.iXLen(
1925     <vscale x 4 x i8> %0,
1926     <vscale x 4 x i8> %1,
1927     iXLen %2,
1928     <vscale x 4 x i1> %3,
1929     iXLen %4, iXLen 1)
1931   ret <vscale x 4 x i8> %a
1934 declare <vscale x 8 x i8> @llvm.riscv.vrgather.vx.nxv8i8.iXLen(
1935   <vscale x 8 x i8>,
1936   <vscale x 8 x i8>,
1937   iXLen,
1938   iXLen)
1940 define <vscale x 8 x i8> @intrinsic_vrgather_vx_nxv8i8_nxv8i8(<vscale x 8 x i8> %0, iXLen %1, iXLen %2) nounwind {
1941 ; CHECK-LABEL: intrinsic_vrgather_vx_nxv8i8_nxv8i8:
1942 ; CHECK:       # %bb.0: # %entry
1943 ; CHECK-NEXT:    vsetvli zero, a1, e8, m1, ta, ma
1944 ; CHECK-NEXT:    vrgather.vx v9, v8, a0
1945 ; CHECK-NEXT:    vmv.v.v v8, v9
1946 ; CHECK-NEXT:    ret
1947 entry:
1948   %a = call <vscale x 8 x i8> @llvm.riscv.vrgather.vx.nxv8i8.iXLen(
1949     <vscale x 8 x i8> undef,
1950     <vscale x 8 x i8> %0,
1951     iXLen %1,
1952     iXLen %2)
1954   ret <vscale x 8 x i8> %a
1957 declare <vscale x 8 x i8> @llvm.riscv.vrgather.vx.mask.nxv8i8.iXLen(
1958   <vscale x 8 x i8>,
1959   <vscale x 8 x i8>,
1960   iXLen,
1961   <vscale x 8 x i1>,
1962   iXLen,
1963   iXLen)
1965 define <vscale x 8 x i8> @intrinsic_vrgather_mask_vx_nxv8i8_nxv8i8(<vscale x 8 x i8> %0, <vscale x 8 x i8> %1, iXLen %2, <vscale x 8 x i1> %3, iXLen %4) nounwind {
1966 ; CHECK-LABEL: intrinsic_vrgather_mask_vx_nxv8i8_nxv8i8:
1967 ; CHECK:       # %bb.0: # %entry
1968 ; CHECK-NEXT:    vsetvli zero, a1, e8, m1, ta, mu
1969 ; CHECK-NEXT:    vrgather.vx v8, v9, a0, v0.t
1970 ; CHECK-NEXT:    ret
1971 entry:
1972   %a = call <vscale x 8 x i8> @llvm.riscv.vrgather.vx.mask.nxv8i8.iXLen(
1973     <vscale x 8 x i8> %0,
1974     <vscale x 8 x i8> %1,
1975     iXLen %2,
1976     <vscale x 8 x i1> %3,
1977     iXLen %4, iXLen 1)
1979   ret <vscale x 8 x i8> %a
1982 declare <vscale x 16 x i8> @llvm.riscv.vrgather.vx.nxv16i8.iXLen(
1983   <vscale x 16 x i8>,
1984   <vscale x 16 x i8>,
1985   iXLen,
1986   iXLen)
1988 define <vscale x 16 x i8> @intrinsic_vrgather_vx_nxv16i8_nxv16i8(<vscale x 16 x i8> %0, iXLen %1, iXLen %2) nounwind {
1989 ; CHECK-LABEL: intrinsic_vrgather_vx_nxv16i8_nxv16i8:
1990 ; CHECK:       # %bb.0: # %entry
1991 ; CHECK-NEXT:    vsetvli zero, a1, e8, m2, ta, ma
1992 ; CHECK-NEXT:    vrgather.vx v10, v8, a0
1993 ; CHECK-NEXT:    vmv.v.v v8, v10
1994 ; CHECK-NEXT:    ret
1995 entry:
1996   %a = call <vscale x 16 x i8> @llvm.riscv.vrgather.vx.nxv16i8.iXLen(
1997     <vscale x 16 x i8> undef,
1998     <vscale x 16 x i8> %0,
1999     iXLen %1,
2000     iXLen %2)
2002   ret <vscale x 16 x i8> %a
2005 declare <vscale x 16 x i8> @llvm.riscv.vrgather.vx.mask.nxv16i8.iXLen(
2006   <vscale x 16 x i8>,
2007   <vscale x 16 x i8>,
2008   iXLen,
2009   <vscale x 16 x i1>,
2010   iXLen,
2011   iXLen)
2013 define <vscale x 16 x i8> @intrinsic_vrgather_mask_vx_nxv16i8_nxv16i8(<vscale x 16 x i8> %0, <vscale x 16 x i8> %1, iXLen %2, <vscale x 16 x i1> %3, iXLen %4) nounwind {
2014 ; CHECK-LABEL: intrinsic_vrgather_mask_vx_nxv16i8_nxv16i8:
2015 ; CHECK:       # %bb.0: # %entry
2016 ; CHECK-NEXT:    vsetvli zero, a1, e8, m2, ta, mu
2017 ; CHECK-NEXT:    vrgather.vx v8, v10, a0, v0.t
2018 ; CHECK-NEXT:    ret
2019 entry:
2020   %a = call <vscale x 16 x i8> @llvm.riscv.vrgather.vx.mask.nxv16i8.iXLen(
2021     <vscale x 16 x i8> %0,
2022     <vscale x 16 x i8> %1,
2023     iXLen %2,
2024     <vscale x 16 x i1> %3,
2025     iXLen %4, iXLen 1)
2027   ret <vscale x 16 x i8> %a
2030 declare <vscale x 32 x i8> @llvm.riscv.vrgather.vx.nxv32i8.iXLen(
2031   <vscale x 32 x i8>,
2032   <vscale x 32 x i8>,
2033   iXLen,
2034   iXLen)
2036 define <vscale x 32 x i8> @intrinsic_vrgather_vx_nxv32i8_nxv32i8(<vscale x 32 x i8> %0, iXLen %1, iXLen %2) nounwind {
2037 ; CHECK-LABEL: intrinsic_vrgather_vx_nxv32i8_nxv32i8:
2038 ; CHECK:       # %bb.0: # %entry
2039 ; CHECK-NEXT:    vsetvli zero, a1, e8, m4, ta, ma
2040 ; CHECK-NEXT:    vrgather.vx v12, v8, a0
2041 ; CHECK-NEXT:    vmv.v.v v8, v12
2042 ; CHECK-NEXT:    ret
2043 entry:
2044   %a = call <vscale x 32 x i8> @llvm.riscv.vrgather.vx.nxv32i8.iXLen(
2045     <vscale x 32 x i8> undef,
2046     <vscale x 32 x i8> %0,
2047     iXLen %1,
2048     iXLen %2)
2050   ret <vscale x 32 x i8> %a
2053 declare <vscale x 32 x i8> @llvm.riscv.vrgather.vx.mask.nxv32i8.iXLen(
2054   <vscale x 32 x i8>,
2055   <vscale x 32 x i8>,
2056   iXLen,
2057   <vscale x 32 x i1>,
2058   iXLen,
2059   iXLen)
2061 define <vscale x 32 x i8> @intrinsic_vrgather_mask_vx_nxv32i8_nxv32i8(<vscale x 32 x i8> %0, <vscale x 32 x i8> %1, iXLen %2, <vscale x 32 x i1> %3, iXLen %4) nounwind {
2062 ; CHECK-LABEL: intrinsic_vrgather_mask_vx_nxv32i8_nxv32i8:
2063 ; CHECK:       # %bb.0: # %entry
2064 ; CHECK-NEXT:    vsetvli zero, a1, e8, m4, ta, mu
2065 ; CHECK-NEXT:    vrgather.vx v8, v12, a0, v0.t
2066 ; CHECK-NEXT:    ret
2067 entry:
2068   %a = call <vscale x 32 x i8> @llvm.riscv.vrgather.vx.mask.nxv32i8.iXLen(
2069     <vscale x 32 x i8> %0,
2070     <vscale x 32 x i8> %1,
2071     iXLen %2,
2072     <vscale x 32 x i1> %3,
2073     iXLen %4, iXLen 1)
2075   ret <vscale x 32 x i8> %a
2078 declare <vscale x 64 x i8> @llvm.riscv.vrgather.vx.nxv64i8.iXLen(
2079   <vscale x 64 x i8>,
2080   <vscale x 64 x i8>,
2081   iXLen,
2082   iXLen)
2084 define <vscale x 64 x i8> @intrinsic_vrgather_vx_nxv64i8_nxv64i8(<vscale x 64 x i8> %0, iXLen %1, iXLen %2) nounwind {
2085 ; CHECK-LABEL: intrinsic_vrgather_vx_nxv64i8_nxv64i8:
2086 ; CHECK:       # %bb.0: # %entry
2087 ; CHECK-NEXT:    vsetvli zero, a1, e8, m8, ta, ma
2088 ; CHECK-NEXT:    vrgather.vx v16, v8, a0
2089 ; CHECK-NEXT:    vmv.v.v v8, v16
2090 ; CHECK-NEXT:    ret
2091 entry:
2092   %a = call <vscale x 64 x i8> @llvm.riscv.vrgather.vx.nxv64i8.iXLen(
2093     <vscale x 64 x i8> undef,
2094     <vscale x 64 x i8> %0,
2095     iXLen %1,
2096     iXLen %2)
2098   ret <vscale x 64 x i8> %a
2101 declare <vscale x 64 x i8> @llvm.riscv.vrgather.vx.mask.nxv64i8.iXLen(
2102   <vscale x 64 x i8>,
2103   <vscale x 64 x i8>,
2104   iXLen,
2105   <vscale x 64 x i1>,
2106   iXLen,
2107   iXLen)
2109 define <vscale x 64 x i8> @intrinsic_vrgather_mask_vx_nxv64i8_nxv64i8(<vscale x 64 x i8> %0, <vscale x 64 x i8> %1, iXLen %2, <vscale x 64 x i1> %3, iXLen %4) nounwind {
2110 ; CHECK-LABEL: intrinsic_vrgather_mask_vx_nxv64i8_nxv64i8:
2111 ; CHECK:       # %bb.0: # %entry
2112 ; CHECK-NEXT:    vsetvli zero, a1, e8, m8, ta, mu
2113 ; CHECK-NEXT:    vrgather.vx v8, v16, a0, v0.t
2114 ; CHECK-NEXT:    ret
2115 entry:
2116   %a = call <vscale x 64 x i8> @llvm.riscv.vrgather.vx.mask.nxv64i8.iXLen(
2117     <vscale x 64 x i8> %0,
2118     <vscale x 64 x i8> %1,
2119     iXLen %2,
2120     <vscale x 64 x i1> %3,
2121     iXLen %4, iXLen 1)
2123   ret <vscale x 64 x i8> %a
2126 declare <vscale x 1 x i16> @llvm.riscv.vrgather.vx.nxv1i16.iXLen(
2127   <vscale x 1 x i16>,
2128   <vscale x 1 x i16>,
2129   iXLen,
2130   iXLen)
2132 define <vscale x 1 x i16> @intrinsic_vrgather_vx_nxv1i16_nxv1i16(<vscale x 1 x i16> %0, iXLen %1, iXLen %2) nounwind {
2133 ; CHECK-LABEL: intrinsic_vrgather_vx_nxv1i16_nxv1i16:
2134 ; CHECK:       # %bb.0: # %entry
2135 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, ma
2136 ; CHECK-NEXT:    vrgather.vx v9, v8, a0
2137 ; CHECK-NEXT:    vmv1r.v v8, v9
2138 ; CHECK-NEXT:    ret
2139 entry:
2140   %a = call <vscale x 1 x i16> @llvm.riscv.vrgather.vx.nxv1i16.iXLen(
2141     <vscale x 1 x i16> undef,
2142     <vscale x 1 x i16> %0,
2143     iXLen %1,
2144     iXLen %2)
2146   ret <vscale x 1 x i16> %a
2149 declare <vscale x 1 x i16> @llvm.riscv.vrgather.vx.mask.nxv1i16.iXLen(
2150   <vscale x 1 x i16>,
2151   <vscale x 1 x i16>,
2152   iXLen,
2153   <vscale x 1 x i1>,
2154   iXLen,
2155   iXLen)
2157 define <vscale x 1 x i16> @intrinsic_vrgather_mask_vx_nxv1i16_nxv1i16(<vscale x 1 x i16> %0, <vscale x 1 x i16> %1, iXLen %2, <vscale x 1 x i1> %3, iXLen %4) nounwind {
2158 ; CHECK-LABEL: intrinsic_vrgather_mask_vx_nxv1i16_nxv1i16:
2159 ; CHECK:       # %bb.0: # %entry
2160 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, mu
2161 ; CHECK-NEXT:    vrgather.vx v8, v9, a0, v0.t
2162 ; CHECK-NEXT:    ret
2163 entry:
2164   %a = call <vscale x 1 x i16> @llvm.riscv.vrgather.vx.mask.nxv1i16.iXLen(
2165     <vscale x 1 x i16> %0,
2166     <vscale x 1 x i16> %1,
2167     iXLen %2,
2168     <vscale x 1 x i1> %3,
2169     iXLen %4, iXLen 1)
2171   ret <vscale x 1 x i16> %a
2174 declare <vscale x 2 x i16> @llvm.riscv.vrgather.vx.nxv2i16.iXLen(
2175   <vscale x 2 x i16>,
2176   <vscale x 2 x i16>,
2177   iXLen,
2178   iXLen)
2180 define <vscale x 2 x i16> @intrinsic_vrgather_vx_nxv2i16_nxv2i16(<vscale x 2 x i16> %0, iXLen %1, iXLen %2) nounwind {
2181 ; CHECK-LABEL: intrinsic_vrgather_vx_nxv2i16_nxv2i16:
2182 ; CHECK:       # %bb.0: # %entry
2183 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, ma
2184 ; CHECK-NEXT:    vrgather.vx v9, v8, a0
2185 ; CHECK-NEXT:    vmv1r.v v8, v9
2186 ; CHECK-NEXT:    ret
2187 entry:
2188   %a = call <vscale x 2 x i16> @llvm.riscv.vrgather.vx.nxv2i16.iXLen(
2189     <vscale x 2 x i16> undef,
2190     <vscale x 2 x i16> %0,
2191     iXLen %1,
2192     iXLen %2)
2194   ret <vscale x 2 x i16> %a
2197 declare <vscale x 2 x i16> @llvm.riscv.vrgather.vx.mask.nxv2i16.iXLen(
2198   <vscale x 2 x i16>,
2199   <vscale x 2 x i16>,
2200   iXLen,
2201   <vscale x 2 x i1>,
2202   iXLen,
2203   iXLen)
2205 define <vscale x 2 x i16> @intrinsic_vrgather_mask_vx_nxv2i16_nxv2i16(<vscale x 2 x i16> %0, <vscale x 2 x i16> %1, iXLen %2, <vscale x 2 x i1> %3, iXLen %4) nounwind {
2206 ; CHECK-LABEL: intrinsic_vrgather_mask_vx_nxv2i16_nxv2i16:
2207 ; CHECK:       # %bb.0: # %entry
2208 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, mu
2209 ; CHECK-NEXT:    vrgather.vx v8, v9, a0, v0.t
2210 ; CHECK-NEXT:    ret
2211 entry:
2212   %a = call <vscale x 2 x i16> @llvm.riscv.vrgather.vx.mask.nxv2i16.iXLen(
2213     <vscale x 2 x i16> %0,
2214     <vscale x 2 x i16> %1,
2215     iXLen %2,
2216     <vscale x 2 x i1> %3,
2217     iXLen %4, iXLen 1)
2219   ret <vscale x 2 x i16> %a
2222 declare <vscale x 4 x i16> @llvm.riscv.vrgather.vx.nxv4i16.iXLen(
2223   <vscale x 4 x i16>,
2224   <vscale x 4 x i16>,
2225   iXLen,
2226   iXLen)
2228 define <vscale x 4 x i16> @intrinsic_vrgather_vx_nxv4i16_nxv4i16(<vscale x 4 x i16> %0, iXLen %1, iXLen %2) nounwind {
2229 ; CHECK-LABEL: intrinsic_vrgather_vx_nxv4i16_nxv4i16:
2230 ; CHECK:       # %bb.0: # %entry
2231 ; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, ma
2232 ; CHECK-NEXT:    vrgather.vx v9, v8, a0
2233 ; CHECK-NEXT:    vmv.v.v v8, v9
2234 ; CHECK-NEXT:    ret
2235 entry:
2236   %a = call <vscale x 4 x i16> @llvm.riscv.vrgather.vx.nxv4i16.iXLen(
2237     <vscale x 4 x i16> undef,
2238     <vscale x 4 x i16> %0,
2239     iXLen %1,
2240     iXLen %2)
2242   ret <vscale x 4 x i16> %a
2245 declare <vscale x 4 x i16> @llvm.riscv.vrgather.vx.mask.nxv4i16.iXLen(
2246   <vscale x 4 x i16>,
2247   <vscale x 4 x i16>,
2248   iXLen,
2249   <vscale x 4 x i1>,
2250   iXLen,
2251   iXLen)
2253 define <vscale x 4 x i16> @intrinsic_vrgather_mask_vx_nxv4i16_nxv4i16(<vscale x 4 x i16> %0, <vscale x 4 x i16> %1, iXLen %2, <vscale x 4 x i1> %3, iXLen %4) nounwind {
2254 ; CHECK-LABEL: intrinsic_vrgather_mask_vx_nxv4i16_nxv4i16:
2255 ; CHECK:       # %bb.0: # %entry
2256 ; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, mu
2257 ; CHECK-NEXT:    vrgather.vx v8, v9, a0, v0.t
2258 ; CHECK-NEXT:    ret
2259 entry:
2260   %a = call <vscale x 4 x i16> @llvm.riscv.vrgather.vx.mask.nxv4i16.iXLen(
2261     <vscale x 4 x i16> %0,
2262     <vscale x 4 x i16> %1,
2263     iXLen %2,
2264     <vscale x 4 x i1> %3,
2265     iXLen %4, iXLen 1)
2267   ret <vscale x 4 x i16> %a
2270 declare <vscale x 8 x i16> @llvm.riscv.vrgather.vx.nxv8i16.iXLen(
2271   <vscale x 8 x i16>,
2272   <vscale x 8 x i16>,
2273   iXLen,
2274   iXLen)
2276 define <vscale x 8 x i16> @intrinsic_vrgather_vx_nxv8i16_nxv8i16(<vscale x 8 x i16> %0, iXLen %1, iXLen %2) nounwind {
2277 ; CHECK-LABEL: intrinsic_vrgather_vx_nxv8i16_nxv8i16:
2278 ; CHECK:       # %bb.0: # %entry
2279 ; CHECK-NEXT:    vsetvli zero, a1, e16, m2, ta, ma
2280 ; CHECK-NEXT:    vrgather.vx v10, v8, a0
2281 ; CHECK-NEXT:    vmv.v.v v8, v10
2282 ; CHECK-NEXT:    ret
2283 entry:
2284   %a = call <vscale x 8 x i16> @llvm.riscv.vrgather.vx.nxv8i16.iXLen(
2285     <vscale x 8 x i16> undef,
2286     <vscale x 8 x i16> %0,
2287     iXLen %1,
2288     iXLen %2)
2290   ret <vscale x 8 x i16> %a
2293 declare <vscale x 8 x i16> @llvm.riscv.vrgather.vx.mask.nxv8i16.iXLen(
2294   <vscale x 8 x i16>,
2295   <vscale x 8 x i16>,
2296   iXLen,
2297   <vscale x 8 x i1>,
2298   iXLen,
2299   iXLen)
2301 define <vscale x 8 x i16> @intrinsic_vrgather_mask_vx_nxv8i16_nxv8i16(<vscale x 8 x i16> %0, <vscale x 8 x i16> %1, iXLen %2, <vscale x 8 x i1> %3, iXLen %4) nounwind {
2302 ; CHECK-LABEL: intrinsic_vrgather_mask_vx_nxv8i16_nxv8i16:
2303 ; CHECK:       # %bb.0: # %entry
2304 ; CHECK-NEXT:    vsetvli zero, a1, e16, m2, ta, mu
2305 ; CHECK-NEXT:    vrgather.vx v8, v10, a0, v0.t
2306 ; CHECK-NEXT:    ret
2307 entry:
2308   %a = call <vscale x 8 x i16> @llvm.riscv.vrgather.vx.mask.nxv8i16.iXLen(
2309     <vscale x 8 x i16> %0,
2310     <vscale x 8 x i16> %1,
2311     iXLen %2,
2312     <vscale x 8 x i1> %3,
2313     iXLen %4, iXLen 1)
2315   ret <vscale x 8 x i16> %a
2318 declare <vscale x 16 x i16> @llvm.riscv.vrgather.vx.nxv16i16.iXLen(
2319   <vscale x 16 x i16>,
2320   <vscale x 16 x i16>,
2321   iXLen,
2322   iXLen)
2324 define <vscale x 16 x i16> @intrinsic_vrgather_vx_nxv16i16_nxv16i16(<vscale x 16 x i16> %0, iXLen %1, iXLen %2) nounwind {
2325 ; CHECK-LABEL: intrinsic_vrgather_vx_nxv16i16_nxv16i16:
2326 ; CHECK:       # %bb.0: # %entry
2327 ; CHECK-NEXT:    vsetvli zero, a1, e16, m4, ta, ma
2328 ; CHECK-NEXT:    vrgather.vx v12, v8, a0
2329 ; CHECK-NEXT:    vmv.v.v v8, v12
2330 ; CHECK-NEXT:    ret
2331 entry:
2332   %a = call <vscale x 16 x i16> @llvm.riscv.vrgather.vx.nxv16i16.iXLen(
2333     <vscale x 16 x i16> undef,
2334     <vscale x 16 x i16> %0,
2335     iXLen %1,
2336     iXLen %2)
2338   ret <vscale x 16 x i16> %a
2341 declare <vscale x 16 x i16> @llvm.riscv.vrgather.vx.mask.nxv16i16.iXLen(
2342   <vscale x 16 x i16>,
2343   <vscale x 16 x i16>,
2344   iXLen,
2345   <vscale x 16 x i1>,
2346   iXLen,
2347   iXLen)
2349 define <vscale x 16 x i16> @intrinsic_vrgather_mask_vx_nxv16i16_nxv16i16(<vscale x 16 x i16> %0, <vscale x 16 x i16> %1, iXLen %2, <vscale x 16 x i1> %3, iXLen %4) nounwind {
2350 ; CHECK-LABEL: intrinsic_vrgather_mask_vx_nxv16i16_nxv16i16:
2351 ; CHECK:       # %bb.0: # %entry
2352 ; CHECK-NEXT:    vsetvli zero, a1, e16, m4, ta, mu
2353 ; CHECK-NEXT:    vrgather.vx v8, v12, a0, v0.t
2354 ; CHECK-NEXT:    ret
2355 entry:
2356   %a = call <vscale x 16 x i16> @llvm.riscv.vrgather.vx.mask.nxv16i16.iXLen(
2357     <vscale x 16 x i16> %0,
2358     <vscale x 16 x i16> %1,
2359     iXLen %2,
2360     <vscale x 16 x i1> %3,
2361     iXLen %4, iXLen 1)
2363   ret <vscale x 16 x i16> %a
2366 declare <vscale x 32 x i16> @llvm.riscv.vrgather.vx.nxv32i16.iXLen(
2367   <vscale x 32 x i16>,
2368   <vscale x 32 x i16>,
2369   iXLen,
2370   iXLen)
2372 define <vscale x 32 x i16> @intrinsic_vrgather_vx_nxv32i16_nxv32i16(<vscale x 32 x i16> %0, iXLen %1, iXLen %2) nounwind {
2373 ; CHECK-LABEL: intrinsic_vrgather_vx_nxv32i16_nxv32i16:
2374 ; CHECK:       # %bb.0: # %entry
2375 ; CHECK-NEXT:    vsetvli zero, a1, e16, m8, ta, ma
2376 ; CHECK-NEXT:    vrgather.vx v16, v8, a0
2377 ; CHECK-NEXT:    vmv.v.v v8, v16
2378 ; CHECK-NEXT:    ret
2379 entry:
2380   %a = call <vscale x 32 x i16> @llvm.riscv.vrgather.vx.nxv32i16.iXLen(
2381     <vscale x 32 x i16> undef,
2382     <vscale x 32 x i16> %0,
2383     iXLen %1,
2384     iXLen %2)
2386   ret <vscale x 32 x i16> %a
2389 declare <vscale x 32 x i16> @llvm.riscv.vrgather.vx.mask.nxv32i16.iXLen(
2390   <vscale x 32 x i16>,
2391   <vscale x 32 x i16>,
2392   iXLen,
2393   <vscale x 32 x i1>,
2394   iXLen,
2395   iXLen)
2397 define <vscale x 32 x i16> @intrinsic_vrgather_mask_vx_nxv32i16_nxv32i16(<vscale x 32 x i16> %0, <vscale x 32 x i16> %1, iXLen %2, <vscale x 32 x i1> %3, iXLen %4) nounwind {
2398 ; CHECK-LABEL: intrinsic_vrgather_mask_vx_nxv32i16_nxv32i16:
2399 ; CHECK:       # %bb.0: # %entry
2400 ; CHECK-NEXT:    vsetvli zero, a1, e16, m8, ta, mu
2401 ; CHECK-NEXT:    vrgather.vx v8, v16, a0, v0.t
2402 ; CHECK-NEXT:    ret
2403 entry:
2404   %a = call <vscale x 32 x i16> @llvm.riscv.vrgather.vx.mask.nxv32i16.iXLen(
2405     <vscale x 32 x i16> %0,
2406     <vscale x 32 x i16> %1,
2407     iXLen %2,
2408     <vscale x 32 x i1> %3,
2409     iXLen %4, iXLen 1)
2411   ret <vscale x 32 x i16> %a
2414 declare <vscale x 1 x i32> @llvm.riscv.vrgather.vx.nxv1i32.iXLen(
2415   <vscale x 1 x i32>,
2416   <vscale x 1 x i32>,
2417   iXLen,
2418   iXLen)
2420 define <vscale x 1 x i32> @intrinsic_vrgather_vx_nxv1i32_nxv1i32(<vscale x 1 x i32> %0, iXLen %1, iXLen %2) nounwind {
2421 ; CHECK-LABEL: intrinsic_vrgather_vx_nxv1i32_nxv1i32:
2422 ; CHECK:       # %bb.0: # %entry
2423 ; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, ma
2424 ; CHECK-NEXT:    vrgather.vx v9, v8, a0
2425 ; CHECK-NEXT:    vmv1r.v v8, v9
2426 ; CHECK-NEXT:    ret
2427 entry:
2428   %a = call <vscale x 1 x i32> @llvm.riscv.vrgather.vx.nxv1i32.iXLen(
2429     <vscale x 1 x i32> undef,
2430     <vscale x 1 x i32> %0,
2431     iXLen %1,
2432     iXLen %2)
2434   ret <vscale x 1 x i32> %a
2437 declare <vscale x 1 x i32> @llvm.riscv.vrgather.vx.mask.nxv1i32.iXLen(
2438   <vscale x 1 x i32>,
2439   <vscale x 1 x i32>,
2440   iXLen,
2441   <vscale x 1 x i1>,
2442   iXLen,
2443   iXLen)
2445 define <vscale x 1 x i32> @intrinsic_vrgather_mask_vx_nxv1i32_nxv1i32(<vscale x 1 x i32> %0, <vscale x 1 x i32> %1, iXLen %2, <vscale x 1 x i1> %3, iXLen %4) nounwind {
2446 ; CHECK-LABEL: intrinsic_vrgather_mask_vx_nxv1i32_nxv1i32:
2447 ; CHECK:       # %bb.0: # %entry
2448 ; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, mu
2449 ; CHECK-NEXT:    vrgather.vx v8, v9, a0, v0.t
2450 ; CHECK-NEXT:    ret
2451 entry:
2452   %a = call <vscale x 1 x i32> @llvm.riscv.vrgather.vx.mask.nxv1i32.iXLen(
2453     <vscale x 1 x i32> %0,
2454     <vscale x 1 x i32> %1,
2455     iXLen %2,
2456     <vscale x 1 x i1> %3,
2457     iXLen %4, iXLen 1)
2459   ret <vscale x 1 x i32> %a
2462 declare <vscale x 2 x i32> @llvm.riscv.vrgather.vx.nxv2i32.iXLen(
2463   <vscale x 2 x i32>,
2464   <vscale x 2 x i32>,
2465   iXLen,
2466   iXLen)
2468 define <vscale x 2 x i32> @intrinsic_vrgather_vx_nxv2i32_nxv2i32(<vscale x 2 x i32> %0, iXLen %1, iXLen %2) nounwind {
2469 ; CHECK-LABEL: intrinsic_vrgather_vx_nxv2i32_nxv2i32:
2470 ; CHECK:       # %bb.0: # %entry
2471 ; CHECK-NEXT:    vsetvli zero, a1, e32, m1, ta, ma
2472 ; CHECK-NEXT:    vrgather.vx v9, v8, a0
2473 ; CHECK-NEXT:    vmv.v.v v8, v9
2474 ; CHECK-NEXT:    ret
2475 entry:
2476   %a = call <vscale x 2 x i32> @llvm.riscv.vrgather.vx.nxv2i32.iXLen(
2477     <vscale x 2 x i32> undef,
2478     <vscale x 2 x i32> %0,
2479     iXLen %1,
2480     iXLen %2)
2482   ret <vscale x 2 x i32> %a
2485 declare <vscale x 2 x i32> @llvm.riscv.vrgather.vx.mask.nxv2i32.iXLen(
2486   <vscale x 2 x i32>,
2487   <vscale x 2 x i32>,
2488   iXLen,
2489   <vscale x 2 x i1>,
2490   iXLen,
2491   iXLen)
2493 define <vscale x 2 x i32> @intrinsic_vrgather_mask_vx_nxv2i32_nxv2i32(<vscale x 2 x i32> %0, <vscale x 2 x i32> %1, iXLen %2, <vscale x 2 x i1> %3, iXLen %4) nounwind {
2494 ; CHECK-LABEL: intrinsic_vrgather_mask_vx_nxv2i32_nxv2i32:
2495 ; CHECK:       # %bb.0: # %entry
2496 ; CHECK-NEXT:    vsetvli zero, a1, e32, m1, ta, mu
2497 ; CHECK-NEXT:    vrgather.vx v8, v9, a0, v0.t
2498 ; CHECK-NEXT:    ret
2499 entry:
2500   %a = call <vscale x 2 x i32> @llvm.riscv.vrgather.vx.mask.nxv2i32.iXLen(
2501     <vscale x 2 x i32> %0,
2502     <vscale x 2 x i32> %1,
2503     iXLen %2,
2504     <vscale x 2 x i1> %3,
2505     iXLen %4, iXLen 1)
2507   ret <vscale x 2 x i32> %a
2510 declare <vscale x 4 x i32> @llvm.riscv.vrgather.vx.nxv4i32.iXLen(
2511   <vscale x 4 x i32>,
2512   <vscale x 4 x i32>,
2513   iXLen,
2514   iXLen)
2516 define <vscale x 4 x i32> @intrinsic_vrgather_vx_nxv4i32_nxv4i32(<vscale x 4 x i32> %0, iXLen %1, iXLen %2) nounwind {
2517 ; CHECK-LABEL: intrinsic_vrgather_vx_nxv4i32_nxv4i32:
2518 ; CHECK:       # %bb.0: # %entry
2519 ; CHECK-NEXT:    vsetvli zero, a1, e32, m2, ta, ma
2520 ; CHECK-NEXT:    vrgather.vx v10, v8, a0
2521 ; CHECK-NEXT:    vmv.v.v v8, v10
2522 ; CHECK-NEXT:    ret
2523 entry:
2524   %a = call <vscale x 4 x i32> @llvm.riscv.vrgather.vx.nxv4i32.iXLen(
2525     <vscale x 4 x i32> undef,
2526     <vscale x 4 x i32> %0,
2527     iXLen %1,
2528     iXLen %2)
2530   ret <vscale x 4 x i32> %a
2533 declare <vscale x 4 x i32> @llvm.riscv.vrgather.vx.mask.nxv4i32.iXLen(
2534   <vscale x 4 x i32>,
2535   <vscale x 4 x i32>,
2536   iXLen,
2537   <vscale x 4 x i1>,
2538   iXLen,
2539   iXLen)
2541 define <vscale x 4 x i32> @intrinsic_vrgather_mask_vx_nxv4i32_nxv4i32(<vscale x 4 x i32> %0, <vscale x 4 x i32> %1, iXLen %2, <vscale x 4 x i1> %3, iXLen %4) nounwind {
2542 ; CHECK-LABEL: intrinsic_vrgather_mask_vx_nxv4i32_nxv4i32:
2543 ; CHECK:       # %bb.0: # %entry
2544 ; CHECK-NEXT:    vsetvli zero, a1, e32, m2, ta, mu
2545 ; CHECK-NEXT:    vrgather.vx v8, v10, a0, v0.t
2546 ; CHECK-NEXT:    ret
2547 entry:
2548   %a = call <vscale x 4 x i32> @llvm.riscv.vrgather.vx.mask.nxv4i32.iXLen(
2549     <vscale x 4 x i32> %0,
2550     <vscale x 4 x i32> %1,
2551     iXLen %2,
2552     <vscale x 4 x i1> %3,
2553     iXLen %4, iXLen 1)
2555   ret <vscale x 4 x i32> %a
2558 declare <vscale x 8 x i32> @llvm.riscv.vrgather.vx.nxv8i32.iXLen(
2559   <vscale x 8 x i32>,
2560   <vscale x 8 x i32>,
2561   iXLen,
2562   iXLen)
2564 define <vscale x 8 x i32> @intrinsic_vrgather_vx_nxv8i32_nxv8i32(<vscale x 8 x i32> %0, iXLen %1, iXLen %2) nounwind {
2565 ; CHECK-LABEL: intrinsic_vrgather_vx_nxv8i32_nxv8i32:
2566 ; CHECK:       # %bb.0: # %entry
2567 ; CHECK-NEXT:    vsetvli zero, a1, e32, m4, ta, ma
2568 ; CHECK-NEXT:    vrgather.vx v12, v8, a0
2569 ; CHECK-NEXT:    vmv.v.v v8, v12
2570 ; CHECK-NEXT:    ret
2571 entry:
2572   %a = call <vscale x 8 x i32> @llvm.riscv.vrgather.vx.nxv8i32.iXLen(
2573     <vscale x 8 x i32> undef,
2574     <vscale x 8 x i32> %0,
2575     iXLen %1,
2576     iXLen %2)
2578   ret <vscale x 8 x i32> %a
2581 declare <vscale x 8 x i32> @llvm.riscv.vrgather.vx.mask.nxv8i32.iXLen(
2582   <vscale x 8 x i32>,
2583   <vscale x 8 x i32>,
2584   iXLen,
2585   <vscale x 8 x i1>,
2586   iXLen,
2587   iXLen)
2589 define <vscale x 8 x i32> @intrinsic_vrgather_mask_vx_nxv8i32_nxv8i32(<vscale x 8 x i32> %0, <vscale x 8 x i32> %1, iXLen %2, <vscale x 8 x i1> %3, iXLen %4) nounwind {
2590 ; CHECK-LABEL: intrinsic_vrgather_mask_vx_nxv8i32_nxv8i32:
2591 ; CHECK:       # %bb.0: # %entry
2592 ; CHECK-NEXT:    vsetvli zero, a1, e32, m4, ta, mu
2593 ; CHECK-NEXT:    vrgather.vx v8, v12, a0, v0.t
2594 ; CHECK-NEXT:    ret
2595 entry:
2596   %a = call <vscale x 8 x i32> @llvm.riscv.vrgather.vx.mask.nxv8i32.iXLen(
2597     <vscale x 8 x i32> %0,
2598     <vscale x 8 x i32> %1,
2599     iXLen %2,
2600     <vscale x 8 x i1> %3,
2601     iXLen %4, iXLen 1)
2603   ret <vscale x 8 x i32> %a
2606 declare <vscale x 16 x i32> @llvm.riscv.vrgather.vx.nxv16i32.iXLen(
2607   <vscale x 16 x i32>,
2608   <vscale x 16 x i32>,
2609   iXLen,
2610   iXLen)
2612 define <vscale x 16 x i32> @intrinsic_vrgather_vx_nxv16i32_nxv16i32(<vscale x 16 x i32> %0, iXLen %1, iXLen %2) nounwind {
2613 ; CHECK-LABEL: intrinsic_vrgather_vx_nxv16i32_nxv16i32:
2614 ; CHECK:       # %bb.0: # %entry
2615 ; CHECK-NEXT:    vsetvli zero, a1, e32, m8, ta, ma
2616 ; CHECK-NEXT:    vrgather.vx v16, v8, a0
2617 ; CHECK-NEXT:    vmv.v.v v8, v16
2618 ; CHECK-NEXT:    ret
2619 entry:
2620   %a = call <vscale x 16 x i32> @llvm.riscv.vrgather.vx.nxv16i32.iXLen(
2621     <vscale x 16 x i32> undef,
2622     <vscale x 16 x i32> %0,
2623     iXLen %1,
2624     iXLen %2)
2626   ret <vscale x 16 x i32> %a
2629 declare <vscale x 16 x i32> @llvm.riscv.vrgather.vx.mask.nxv16i32.iXLen(
2630   <vscale x 16 x i32>,
2631   <vscale x 16 x i32>,
2632   iXLen,
2633   <vscale x 16 x i1>,
2634   iXLen,
2635   iXLen)
2637 define <vscale x 16 x i32> @intrinsic_vrgather_mask_vx_nxv16i32_nxv16i32(<vscale x 16 x i32> %0, <vscale x 16 x i32> %1, iXLen %2, <vscale x 16 x i1> %3, iXLen %4) nounwind {
2638 ; CHECK-LABEL: intrinsic_vrgather_mask_vx_nxv16i32_nxv16i32:
2639 ; CHECK:       # %bb.0: # %entry
2640 ; CHECK-NEXT:    vsetvli zero, a1, e32, m8, ta, mu
2641 ; CHECK-NEXT:    vrgather.vx v8, v16, a0, v0.t
2642 ; CHECK-NEXT:    ret
2643 entry:
2644   %a = call <vscale x 16 x i32> @llvm.riscv.vrgather.vx.mask.nxv16i32.iXLen(
2645     <vscale x 16 x i32> %0,
2646     <vscale x 16 x i32> %1,
2647     iXLen %2,
2648     <vscale x 16 x i1> %3,
2649     iXLen %4, iXLen 1)
2651   ret <vscale x 16 x i32> %a
2654 declare <vscale x 1 x i64> @llvm.riscv.vrgather.vx.nxv1i64.iXLen(
2655   <vscale x 1 x i64>,
2656   <vscale x 1 x i64>,
2657   iXLen,
2658   iXLen)
2660 define <vscale x 1 x i64> @intrinsic_vrgather_vx_nxv1i64_nxv1i64(<vscale x 1 x i64> %0, iXLen %1, iXLen %2) nounwind {
2661 ; CHECK-LABEL: intrinsic_vrgather_vx_nxv1i64_nxv1i64:
2662 ; CHECK:       # %bb.0: # %entry
2663 ; CHECK-NEXT:    vsetvli zero, a1, e64, m1, ta, ma
2664 ; CHECK-NEXT:    vrgather.vx v9, v8, a0
2665 ; CHECK-NEXT:    vmv.v.v v8, v9
2666 ; CHECK-NEXT:    ret
2667 entry:
2668   %a = call <vscale x 1 x i64> @llvm.riscv.vrgather.vx.nxv1i64.iXLen(
2669     <vscale x 1 x i64> undef,
2670     <vscale x 1 x i64> %0,
2671     iXLen %1,
2672     iXLen %2)
2674   ret <vscale x 1 x i64> %a
2677 declare <vscale x 1 x i64> @llvm.riscv.vrgather.vx.mask.nxv1i64.iXLen(
2678   <vscale x 1 x i64>,
2679   <vscale x 1 x i64>,
2680   iXLen,
2681   <vscale x 1 x i1>,
2682   iXLen,
2683   iXLen)
2685 define <vscale x 1 x i64> @intrinsic_vrgather_mask_vx_nxv1i64_nxv1i64(<vscale x 1 x i64> %0, <vscale x 1 x i64> %1, iXLen %2, <vscale x 1 x i1> %3, iXLen %4) nounwind {
2686 ; CHECK-LABEL: intrinsic_vrgather_mask_vx_nxv1i64_nxv1i64:
2687 ; CHECK:       # %bb.0: # %entry
2688 ; CHECK-NEXT:    vsetvli zero, a1, e64, m1, ta, mu
2689 ; CHECK-NEXT:    vrgather.vx v8, v9, a0, v0.t
2690 ; CHECK-NEXT:    ret
2691 entry:
2692   %a = call <vscale x 1 x i64> @llvm.riscv.vrgather.vx.mask.nxv1i64.iXLen(
2693     <vscale x 1 x i64> %0,
2694     <vscale x 1 x i64> %1,
2695     iXLen %2,
2696     <vscale x 1 x i1> %3,
2697     iXLen %4, iXLen 1)
2699   ret <vscale x 1 x i64> %a
2702 declare <vscale x 2 x i64> @llvm.riscv.vrgather.vx.nxv2i64.iXLen(
2703   <vscale x 2 x i64>,
2704   <vscale x 2 x i64>,
2705   iXLen,
2706   iXLen)
2708 define <vscale x 2 x i64> @intrinsic_vrgather_vx_nxv2i64_nxv2i64(<vscale x 2 x i64> %0, iXLen %1, iXLen %2) nounwind {
2709 ; CHECK-LABEL: intrinsic_vrgather_vx_nxv2i64_nxv2i64:
2710 ; CHECK:       # %bb.0: # %entry
2711 ; CHECK-NEXT:    vsetvli zero, a1, e64, m2, ta, ma
2712 ; CHECK-NEXT:    vrgather.vx v10, v8, a0
2713 ; CHECK-NEXT:    vmv.v.v v8, v10
2714 ; CHECK-NEXT:    ret
2715 entry:
2716   %a = call <vscale x 2 x i64> @llvm.riscv.vrgather.vx.nxv2i64.iXLen(
2717     <vscale x 2 x i64> undef,
2718     <vscale x 2 x i64> %0,
2719     iXLen %1,
2720     iXLen %2)
2722   ret <vscale x 2 x i64> %a
2725 declare <vscale x 2 x i64> @llvm.riscv.vrgather.vx.mask.nxv2i64.iXLen(
2726   <vscale x 2 x i64>,
2727   <vscale x 2 x i64>,
2728   iXLen,
2729   <vscale x 2 x i1>,
2730   iXLen,
2731   iXLen)
2733 define <vscale x 2 x i64> @intrinsic_vrgather_mask_vx_nxv2i64_nxv2i64(<vscale x 2 x i64> %0, <vscale x 2 x i64> %1, iXLen %2, <vscale x 2 x i1> %3, iXLen %4) nounwind {
2734 ; CHECK-LABEL: intrinsic_vrgather_mask_vx_nxv2i64_nxv2i64:
2735 ; CHECK:       # %bb.0: # %entry
2736 ; CHECK-NEXT:    vsetvli zero, a1, e64, m2, ta, mu
2737 ; CHECK-NEXT:    vrgather.vx v8, v10, a0, v0.t
2738 ; CHECK-NEXT:    ret
2739 entry:
2740   %a = call <vscale x 2 x i64> @llvm.riscv.vrgather.vx.mask.nxv2i64.iXLen(
2741     <vscale x 2 x i64> %0,
2742     <vscale x 2 x i64> %1,
2743     iXLen %2,
2744     <vscale x 2 x i1> %3,
2745     iXLen %4, iXLen 1)
2747   ret <vscale x 2 x i64> %a
2750 declare <vscale x 4 x i64> @llvm.riscv.vrgather.vx.nxv4i64.iXLen(
2751   <vscale x 4 x i64>,
2752   <vscale x 4 x i64>,
2753   iXLen,
2754   iXLen)
2756 define <vscale x 4 x i64> @intrinsic_vrgather_vx_nxv4i64_nxv4i64(<vscale x 4 x i64> %0, iXLen %1, iXLen %2) nounwind {
2757 ; CHECK-LABEL: intrinsic_vrgather_vx_nxv4i64_nxv4i64:
2758 ; CHECK:       # %bb.0: # %entry
2759 ; CHECK-NEXT:    vsetvli zero, a1, e64, m4, ta, ma
2760 ; CHECK-NEXT:    vrgather.vx v12, v8, a0
2761 ; CHECK-NEXT:    vmv.v.v v8, v12
2762 ; CHECK-NEXT:    ret
2763 entry:
2764   %a = call <vscale x 4 x i64> @llvm.riscv.vrgather.vx.nxv4i64.iXLen(
2765     <vscale x 4 x i64> undef,
2766     <vscale x 4 x i64> %0,
2767     iXLen %1,
2768     iXLen %2)
2770   ret <vscale x 4 x i64> %a
2773 declare <vscale x 4 x i64> @llvm.riscv.vrgather.vx.mask.nxv4i64.iXLen(
2774   <vscale x 4 x i64>,
2775   <vscale x 4 x i64>,
2776   iXLen,
2777   <vscale x 4 x i1>,
2778   iXLen,
2779   iXLen)
2781 define <vscale x 4 x i64> @intrinsic_vrgather_mask_vx_nxv4i64_nxv4i64(<vscale x 4 x i64> %0, <vscale x 4 x i64> %1, iXLen %2, <vscale x 4 x i1> %3, iXLen %4) nounwind {
2782 ; CHECK-LABEL: intrinsic_vrgather_mask_vx_nxv4i64_nxv4i64:
2783 ; CHECK:       # %bb.0: # %entry
2784 ; CHECK-NEXT:    vsetvli zero, a1, e64, m4, ta, mu
2785 ; CHECK-NEXT:    vrgather.vx v8, v12, a0, v0.t
2786 ; CHECK-NEXT:    ret
2787 entry:
2788   %a = call <vscale x 4 x i64> @llvm.riscv.vrgather.vx.mask.nxv4i64.iXLen(
2789     <vscale x 4 x i64> %0,
2790     <vscale x 4 x i64> %1,
2791     iXLen %2,
2792     <vscale x 4 x i1> %3,
2793     iXLen %4, iXLen 1)
2795   ret <vscale x 4 x i64> %a
2798 declare <vscale x 8 x i64> @llvm.riscv.vrgather.vx.nxv8i64.iXLen(
2799   <vscale x 8 x i64>,
2800   <vscale x 8 x i64>,
2801   iXLen,
2802   iXLen)
2804 define <vscale x 8 x i64> @intrinsic_vrgather_vx_nxv8i64_nxv8i64(<vscale x 8 x i64> %0, iXLen %1, iXLen %2) nounwind {
2805 ; CHECK-LABEL: intrinsic_vrgather_vx_nxv8i64_nxv8i64:
2806 ; CHECK:       # %bb.0: # %entry
2807 ; CHECK-NEXT:    vsetvli zero, a1, e64, m8, ta, ma
2808 ; CHECK-NEXT:    vrgather.vx v16, v8, a0
2809 ; CHECK-NEXT:    vmv.v.v v8, v16
2810 ; CHECK-NEXT:    ret
2811 entry:
2812   %a = call <vscale x 8 x i64> @llvm.riscv.vrgather.vx.nxv8i64.iXLen(
2813     <vscale x 8 x i64> undef,
2814     <vscale x 8 x i64> %0,
2815     iXLen %1,
2816     iXLen %2)
2818   ret <vscale x 8 x i64> %a
2821 declare <vscale x 8 x i64> @llvm.riscv.vrgather.vx.mask.nxv8i64.iXLen(
2822   <vscale x 8 x i64>,
2823   <vscale x 8 x i64>,
2824   iXLen,
2825   <vscale x 8 x i1>,
2826   iXLen,
2827   iXLen)
2829 define <vscale x 8 x i64> @intrinsic_vrgather_mask_vx_nxv8i64_nxv8i64(<vscale x 8 x i64> %0, <vscale x 8 x i64> %1, iXLen %2, <vscale x 8 x i1> %3, iXLen %4) nounwind {
2830 ; CHECK-LABEL: intrinsic_vrgather_mask_vx_nxv8i64_nxv8i64:
2831 ; CHECK:       # %bb.0: # %entry
2832 ; CHECK-NEXT:    vsetvli zero, a1, e64, m8, ta, mu
2833 ; CHECK-NEXT:    vrgather.vx v8, v16, a0, v0.t
2834 ; CHECK-NEXT:    ret
2835 entry:
2836   %a = call <vscale x 8 x i64> @llvm.riscv.vrgather.vx.mask.nxv8i64.iXLen(
2837     <vscale x 8 x i64> %0,
2838     <vscale x 8 x i64> %1,
2839     iXLen %2,
2840     <vscale x 8 x i1> %3,
2841     iXLen %4, iXLen 1)
2843   ret <vscale x 8 x i64> %a
2846 declare <vscale x 1 x half> @llvm.riscv.vrgather.vx.nxv1f16.iXLen(
2847   <vscale x 1 x half>,
2848   <vscale x 1 x half>,
2849   iXLen,
2850   iXLen)
2852 define <vscale x 1 x half> @intrinsic_vrgather_vx_nxv1f16_nxv1f16(<vscale x 1 x half> %0, iXLen %1, iXLen %2) nounwind {
2853 ; CHECK-LABEL: intrinsic_vrgather_vx_nxv1f16_nxv1f16:
2854 ; CHECK:       # %bb.0: # %entry
2855 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, ma
2856 ; CHECK-NEXT:    vrgather.vx v9, v8, a0
2857 ; CHECK-NEXT:    vmv1r.v v8, v9
2858 ; CHECK-NEXT:    ret
2859 entry:
2860   %a = call <vscale x 1 x half> @llvm.riscv.vrgather.vx.nxv1f16.iXLen(
2861     <vscale x 1 x half> undef,
2862     <vscale x 1 x half> %0,
2863     iXLen %1,
2864     iXLen %2)
2866   ret <vscale x 1 x half> %a
2869 declare <vscale x 1 x half> @llvm.riscv.vrgather.vx.mask.nxv1f16.iXLen(
2870   <vscale x 1 x half>,
2871   <vscale x 1 x half>,
2872   iXLen,
2873   <vscale x 1 x i1>,
2874   iXLen,
2875   iXLen)
2877 define <vscale x 1 x half> @intrinsic_vrgather_mask_vx_nxv1f16_nxv1f16(<vscale x 1 x half> %0, <vscale x 1 x half> %1, iXLen %2, <vscale x 1 x i1> %3, iXLen %4) nounwind {
2878 ; CHECK-LABEL: intrinsic_vrgather_mask_vx_nxv1f16_nxv1f16:
2879 ; CHECK:       # %bb.0: # %entry
2880 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, mu
2881 ; CHECK-NEXT:    vrgather.vx v8, v9, a0, v0.t
2882 ; CHECK-NEXT:    ret
2883 entry:
2884   %a = call <vscale x 1 x half> @llvm.riscv.vrgather.vx.mask.nxv1f16.iXLen(
2885     <vscale x 1 x half> %0,
2886     <vscale x 1 x half> %1,
2887     iXLen %2,
2888     <vscale x 1 x i1> %3,
2889     iXLen %4, iXLen 1)
2891   ret <vscale x 1 x half> %a
2894 declare <vscale x 2 x half> @llvm.riscv.vrgather.vx.nxv2f16.iXLen(
2895   <vscale x 2 x half>,
2896   <vscale x 2 x half>,
2897   iXLen,
2898   iXLen)
2900 define <vscale x 2 x half> @intrinsic_vrgather_vx_nxv2f16_nxv2f16(<vscale x 2 x half> %0, iXLen %1, iXLen %2) nounwind {
2901 ; CHECK-LABEL: intrinsic_vrgather_vx_nxv2f16_nxv2f16:
2902 ; CHECK:       # %bb.0: # %entry
2903 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, ma
2904 ; CHECK-NEXT:    vrgather.vx v9, v8, a0
2905 ; CHECK-NEXT:    vmv1r.v v8, v9
2906 ; CHECK-NEXT:    ret
2907 entry:
2908   %a = call <vscale x 2 x half> @llvm.riscv.vrgather.vx.nxv2f16.iXLen(
2909     <vscale x 2 x half> undef,
2910     <vscale x 2 x half> %0,
2911     iXLen %1,
2912     iXLen %2)
2914   ret <vscale x 2 x half> %a
2917 declare <vscale x 2 x half> @llvm.riscv.vrgather.vx.mask.nxv2f16.iXLen(
2918   <vscale x 2 x half>,
2919   <vscale x 2 x half>,
2920   iXLen,
2921   <vscale x 2 x i1>,
2922   iXLen,
2923   iXLen)
2925 define <vscale x 2 x half> @intrinsic_vrgather_mask_vx_nxv2f16_nxv2f16(<vscale x 2 x half> %0, <vscale x 2 x half> %1, iXLen %2, <vscale x 2 x i1> %3, iXLen %4) nounwind {
2926 ; CHECK-LABEL: intrinsic_vrgather_mask_vx_nxv2f16_nxv2f16:
2927 ; CHECK:       # %bb.0: # %entry
2928 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, mu
2929 ; CHECK-NEXT:    vrgather.vx v8, v9, a0, v0.t
2930 ; CHECK-NEXT:    ret
2931 entry:
2932   %a = call <vscale x 2 x half> @llvm.riscv.vrgather.vx.mask.nxv2f16.iXLen(
2933     <vscale x 2 x half> %0,
2934     <vscale x 2 x half> %1,
2935     iXLen %2,
2936     <vscale x 2 x i1> %3,
2937     iXLen %4, iXLen 1)
2939   ret <vscale x 2 x half> %a
2942 declare <vscale x 4 x half> @llvm.riscv.vrgather.vx.nxv4f16.iXLen(
2943   <vscale x 4 x half>,
2944   <vscale x 4 x half>,
2945   iXLen,
2946   iXLen)
2948 define <vscale x 4 x half> @intrinsic_vrgather_vx_nxv4f16_nxv4f16(<vscale x 4 x half> %0, iXLen %1, iXLen %2) nounwind {
2949 ; CHECK-LABEL: intrinsic_vrgather_vx_nxv4f16_nxv4f16:
2950 ; CHECK:       # %bb.0: # %entry
2951 ; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, ma
2952 ; CHECK-NEXT:    vrgather.vx v9, v8, a0
2953 ; CHECK-NEXT:    vmv.v.v v8, v9
2954 ; CHECK-NEXT:    ret
2955 entry:
2956   %a = call <vscale x 4 x half> @llvm.riscv.vrgather.vx.nxv4f16.iXLen(
2957     <vscale x 4 x half> undef,
2958     <vscale x 4 x half> %0,
2959     iXLen %1,
2960     iXLen %2)
2962   ret <vscale x 4 x half> %a
2965 declare <vscale x 4 x half> @llvm.riscv.vrgather.vx.mask.nxv4f16.iXLen(
2966   <vscale x 4 x half>,
2967   <vscale x 4 x half>,
2968   iXLen,
2969   <vscale x 4 x i1>,
2970   iXLen,
2971   iXLen)
2973 define <vscale x 4 x half> @intrinsic_vrgather_mask_vx_nxv4f16_nxv4f16(<vscale x 4 x half> %0, <vscale x 4 x half> %1, iXLen %2, <vscale x 4 x i1> %3, iXLen %4) nounwind {
2974 ; CHECK-LABEL: intrinsic_vrgather_mask_vx_nxv4f16_nxv4f16:
2975 ; CHECK:       # %bb.0: # %entry
2976 ; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, mu
2977 ; CHECK-NEXT:    vrgather.vx v8, v9, a0, v0.t
2978 ; CHECK-NEXT:    ret
2979 entry:
2980   %a = call <vscale x 4 x half> @llvm.riscv.vrgather.vx.mask.nxv4f16.iXLen(
2981     <vscale x 4 x half> %0,
2982     <vscale x 4 x half> %1,
2983     iXLen %2,
2984     <vscale x 4 x i1> %3,
2985     iXLen %4, iXLen 1)
2987   ret <vscale x 4 x half> %a
2990 declare <vscale x 8 x half> @llvm.riscv.vrgather.vx.nxv8f16.iXLen(
2991   <vscale x 8 x half>,
2992   <vscale x 8 x half>,
2993   iXLen,
2994   iXLen)
2996 define <vscale x 8 x half> @intrinsic_vrgather_vx_nxv8f16_nxv8f16(<vscale x 8 x half> %0, iXLen %1, iXLen %2) nounwind {
2997 ; CHECK-LABEL: intrinsic_vrgather_vx_nxv8f16_nxv8f16:
2998 ; CHECK:       # %bb.0: # %entry
2999 ; CHECK-NEXT:    vsetvli zero, a1, e16, m2, ta, ma
3000 ; CHECK-NEXT:    vrgather.vx v10, v8, a0
3001 ; CHECK-NEXT:    vmv.v.v v8, v10
3002 ; CHECK-NEXT:    ret
3003 entry:
3004   %a = call <vscale x 8 x half> @llvm.riscv.vrgather.vx.nxv8f16.iXLen(
3005     <vscale x 8 x half> undef,
3006     <vscale x 8 x half> %0,
3007     iXLen %1,
3008     iXLen %2)
3010   ret <vscale x 8 x half> %a
3013 declare <vscale x 8 x half> @llvm.riscv.vrgather.vx.mask.nxv8f16.iXLen(
3014   <vscale x 8 x half>,
3015   <vscale x 8 x half>,
3016   iXLen,
3017   <vscale x 8 x i1>,
3018   iXLen,
3019   iXLen)
3021 define <vscale x 8 x half> @intrinsic_vrgather_mask_vx_nxv8f16_nxv8f16(<vscale x 8 x half> %0, <vscale x 8 x half> %1, iXLen %2, <vscale x 8 x i1> %3, iXLen %4) nounwind {
3022 ; CHECK-LABEL: intrinsic_vrgather_mask_vx_nxv8f16_nxv8f16:
3023 ; CHECK:       # %bb.0: # %entry
3024 ; CHECK-NEXT:    vsetvli zero, a1, e16, m2, ta, mu
3025 ; CHECK-NEXT:    vrgather.vx v8, v10, a0, v0.t
3026 ; CHECK-NEXT:    ret
3027 entry:
3028   %a = call <vscale x 8 x half> @llvm.riscv.vrgather.vx.mask.nxv8f16.iXLen(
3029     <vscale x 8 x half> %0,
3030     <vscale x 8 x half> %1,
3031     iXLen %2,
3032     <vscale x 8 x i1> %3,
3033     iXLen %4, iXLen 1)
3035   ret <vscale x 8 x half> %a
3038 declare <vscale x 16 x half> @llvm.riscv.vrgather.vx.nxv16f16.iXLen(
3039   <vscale x 16 x half>,
3040   <vscale x 16 x half>,
3041   iXLen,
3042   iXLen)
3044 define <vscale x 16 x half> @intrinsic_vrgather_vx_nxv16f16_nxv16f16(<vscale x 16 x half> %0, iXLen %1, iXLen %2) nounwind {
3045 ; CHECK-LABEL: intrinsic_vrgather_vx_nxv16f16_nxv16f16:
3046 ; CHECK:       # %bb.0: # %entry
3047 ; CHECK-NEXT:    vsetvli zero, a1, e16, m4, ta, ma
3048 ; CHECK-NEXT:    vrgather.vx v12, v8, a0
3049 ; CHECK-NEXT:    vmv.v.v v8, v12
3050 ; CHECK-NEXT:    ret
3051 entry:
3052   %a = call <vscale x 16 x half> @llvm.riscv.vrgather.vx.nxv16f16.iXLen(
3053     <vscale x 16 x half> undef,
3054     <vscale x 16 x half> %0,
3055     iXLen %1,
3056     iXLen %2)
3058   ret <vscale x 16 x half> %a
3061 declare <vscale x 16 x half> @llvm.riscv.vrgather.vx.mask.nxv16f16.iXLen(
3062   <vscale x 16 x half>,
3063   <vscale x 16 x half>,
3064   iXLen,
3065   <vscale x 16 x i1>,
3066   iXLen,
3067   iXLen)
3069 define <vscale x 16 x half> @intrinsic_vrgather_mask_vx_nxv16f16_nxv16f16(<vscale x 16 x half> %0, <vscale x 16 x half> %1, iXLen %2, <vscale x 16 x i1> %3, iXLen %4) nounwind {
3070 ; CHECK-LABEL: intrinsic_vrgather_mask_vx_nxv16f16_nxv16f16:
3071 ; CHECK:       # %bb.0: # %entry
3072 ; CHECK-NEXT:    vsetvli zero, a1, e16, m4, ta, mu
3073 ; CHECK-NEXT:    vrgather.vx v8, v12, a0, v0.t
3074 ; CHECK-NEXT:    ret
3075 entry:
3076   %a = call <vscale x 16 x half> @llvm.riscv.vrgather.vx.mask.nxv16f16.iXLen(
3077     <vscale x 16 x half> %0,
3078     <vscale x 16 x half> %1,
3079     iXLen %2,
3080     <vscale x 16 x i1> %3,
3081     iXLen %4, iXLen 1)
3083   ret <vscale x 16 x half> %a
3086 declare <vscale x 32 x half> @llvm.riscv.vrgather.vx.nxv32f16.iXLen(
3087   <vscale x 32 x half>,
3088   <vscale x 32 x half>,
3089   iXLen,
3090   iXLen)
3092 define <vscale x 32 x half> @intrinsic_vrgather_vx_nxv32f16_nxv32f16(<vscale x 32 x half> %0, iXLen %1, iXLen %2) nounwind {
3093 ; CHECK-LABEL: intrinsic_vrgather_vx_nxv32f16_nxv32f16:
3094 ; CHECK:       # %bb.0: # %entry
3095 ; CHECK-NEXT:    vsetvli zero, a1, e16, m8, ta, ma
3096 ; CHECK-NEXT:    vrgather.vx v16, v8, a0
3097 ; CHECK-NEXT:    vmv.v.v v8, v16
3098 ; CHECK-NEXT:    ret
3099 entry:
3100   %a = call <vscale x 32 x half> @llvm.riscv.vrgather.vx.nxv32f16.iXLen(
3101     <vscale x 32 x half> undef,
3102     <vscale x 32 x half> %0,
3103     iXLen %1,
3104     iXLen %2)
3106   ret <vscale x 32 x half> %a
3109 declare <vscale x 32 x half> @llvm.riscv.vrgather.vx.mask.nxv32f16.iXLen(
3110   <vscale x 32 x half>,
3111   <vscale x 32 x half>,
3112   iXLen,
3113   <vscale x 32 x i1>,
3114   iXLen,
3115   iXLen)
3117 define <vscale x 32 x half> @intrinsic_vrgather_mask_vx_nxv32f16_nxv32f16(<vscale x 32 x half> %0, <vscale x 32 x half> %1, iXLen %2, <vscale x 32 x i1> %3, iXLen %4) nounwind {
3118 ; CHECK-LABEL: intrinsic_vrgather_mask_vx_nxv32f16_nxv32f16:
3119 ; CHECK:       # %bb.0: # %entry
3120 ; CHECK-NEXT:    vsetvli zero, a1, e16, m8, ta, mu
3121 ; CHECK-NEXT:    vrgather.vx v8, v16, a0, v0.t
3122 ; CHECK-NEXT:    ret
3123 entry:
3124   %a = call <vscale x 32 x half> @llvm.riscv.vrgather.vx.mask.nxv32f16.iXLen(
3125     <vscale x 32 x half> %0,
3126     <vscale x 32 x half> %1,
3127     iXLen %2,
3128     <vscale x 32 x i1> %3,
3129     iXLen %4, iXLen 1)
3131   ret <vscale x 32 x half> %a
3134 declare <vscale x 1 x float> @llvm.riscv.vrgather.vx.nxv1f32.iXLen(
3135   <vscale x 1 x float>,
3136   <vscale x 1 x float>,
3137   iXLen,
3138   iXLen)
3140 define <vscale x 1 x float> @intrinsic_vrgather_vx_nxv1f32_nxv1f32(<vscale x 1 x float> %0, iXLen %1, iXLen %2) nounwind {
3141 ; CHECK-LABEL: intrinsic_vrgather_vx_nxv1f32_nxv1f32:
3142 ; CHECK:       # %bb.0: # %entry
3143 ; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, ma
3144 ; CHECK-NEXT:    vrgather.vx v9, v8, a0
3145 ; CHECK-NEXT:    vmv1r.v v8, v9
3146 ; CHECK-NEXT:    ret
3147 entry:
3148   %a = call <vscale x 1 x float> @llvm.riscv.vrgather.vx.nxv1f32.iXLen(
3149     <vscale x 1 x float> undef,
3150     <vscale x 1 x float> %0,
3151     iXLen %1,
3152     iXLen %2)
3154   ret <vscale x 1 x float> %a
3157 declare <vscale x 1 x float> @llvm.riscv.vrgather.vx.mask.nxv1f32.iXLen(
3158   <vscale x 1 x float>,
3159   <vscale x 1 x float>,
3160   iXLen,
3161   <vscale x 1 x i1>,
3162   iXLen,
3163   iXLen)
3165 define <vscale x 1 x float> @intrinsic_vrgather_mask_vx_nxv1f32_nxv1f32(<vscale x 1 x float> %0, <vscale x 1 x float> %1, iXLen %2, <vscale x 1 x i1> %3, iXLen %4) nounwind {
3166 ; CHECK-LABEL: intrinsic_vrgather_mask_vx_nxv1f32_nxv1f32:
3167 ; CHECK:       # %bb.0: # %entry
3168 ; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, mu
3169 ; CHECK-NEXT:    vrgather.vx v8, v9, a0, v0.t
3170 ; CHECK-NEXT:    ret
3171 entry:
3172   %a = call <vscale x 1 x float> @llvm.riscv.vrgather.vx.mask.nxv1f32.iXLen(
3173     <vscale x 1 x float> %0,
3174     <vscale x 1 x float> %1,
3175     iXLen %2,
3176     <vscale x 1 x i1> %3,
3177     iXLen %4, iXLen 1)
3179   ret <vscale x 1 x float> %a
3182 declare <vscale x 2 x float> @llvm.riscv.vrgather.vx.nxv2f32.iXLen(
3183   <vscale x 2 x float>,
3184   <vscale x 2 x float>,
3185   iXLen,
3186   iXLen)
3188 define <vscale x 2 x float> @intrinsic_vrgather_vx_nxv2f32_nxv2f32(<vscale x 2 x float> %0, iXLen %1, iXLen %2) nounwind {
3189 ; CHECK-LABEL: intrinsic_vrgather_vx_nxv2f32_nxv2f32:
3190 ; CHECK:       # %bb.0: # %entry
3191 ; CHECK-NEXT:    vsetvli zero, a1, e32, m1, ta, ma
3192 ; CHECK-NEXT:    vrgather.vx v9, v8, a0
3193 ; CHECK-NEXT:    vmv.v.v v8, v9
3194 ; CHECK-NEXT:    ret
3195 entry:
3196   %a = call <vscale x 2 x float> @llvm.riscv.vrgather.vx.nxv2f32.iXLen(
3197     <vscale x 2 x float> undef,
3198     <vscale x 2 x float> %0,
3199     iXLen %1,
3200     iXLen %2)
3202   ret <vscale x 2 x float> %a
3205 declare <vscale x 2 x float> @llvm.riscv.vrgather.vx.mask.nxv2f32.iXLen(
3206   <vscale x 2 x float>,
3207   <vscale x 2 x float>,
3208   iXLen,
3209   <vscale x 2 x i1>,
3210   iXLen,
3211   iXLen)
3213 define <vscale x 2 x float> @intrinsic_vrgather_mask_vx_nxv2f32_nxv2f32(<vscale x 2 x float> %0, <vscale x 2 x float> %1, iXLen %2, <vscale x 2 x i1> %3, iXLen %4) nounwind {
3214 ; CHECK-LABEL: intrinsic_vrgather_mask_vx_nxv2f32_nxv2f32:
3215 ; CHECK:       # %bb.0: # %entry
3216 ; CHECK-NEXT:    vsetvli zero, a1, e32, m1, ta, mu
3217 ; CHECK-NEXT:    vrgather.vx v8, v9, a0, v0.t
3218 ; CHECK-NEXT:    ret
3219 entry:
3220   %a = call <vscale x 2 x float> @llvm.riscv.vrgather.vx.mask.nxv2f32.iXLen(
3221     <vscale x 2 x float> %0,
3222     <vscale x 2 x float> %1,
3223     iXLen %2,
3224     <vscale x 2 x i1> %3,
3225     iXLen %4, iXLen 1)
3227   ret <vscale x 2 x float> %a
3230 declare <vscale x 4 x float> @llvm.riscv.vrgather.vx.nxv4f32.iXLen(
3231   <vscale x 4 x float>,
3232   <vscale x 4 x float>,
3233   iXLen,
3234   iXLen)
3236 define <vscale x 4 x float> @intrinsic_vrgather_vx_nxv4f32_nxv4f32(<vscale x 4 x float> %0, iXLen %1, iXLen %2) nounwind {
3237 ; CHECK-LABEL: intrinsic_vrgather_vx_nxv4f32_nxv4f32:
3238 ; CHECK:       # %bb.0: # %entry
3239 ; CHECK-NEXT:    vsetvli zero, a1, e32, m2, ta, ma
3240 ; CHECK-NEXT:    vrgather.vx v10, v8, a0
3241 ; CHECK-NEXT:    vmv.v.v v8, v10
3242 ; CHECK-NEXT:    ret
3243 entry:
3244   %a = call <vscale x 4 x float> @llvm.riscv.vrgather.vx.nxv4f32.iXLen(
3245     <vscale x 4 x float> undef,
3246     <vscale x 4 x float> %0,
3247     iXLen %1,
3248     iXLen %2)
3250   ret <vscale x 4 x float> %a
3253 declare <vscale x 4 x float> @llvm.riscv.vrgather.vx.mask.nxv4f32.iXLen(
3254   <vscale x 4 x float>,
3255   <vscale x 4 x float>,
3256   iXLen,
3257   <vscale x 4 x i1>,
3258   iXLen,
3259   iXLen)
3261 define <vscale x 4 x float> @intrinsic_vrgather_mask_vx_nxv4f32_nxv4f32(<vscale x 4 x float> %0, <vscale x 4 x float> %1, iXLen %2, <vscale x 4 x i1> %3, iXLen %4) nounwind {
3262 ; CHECK-LABEL: intrinsic_vrgather_mask_vx_nxv4f32_nxv4f32:
3263 ; CHECK:       # %bb.0: # %entry
3264 ; CHECK-NEXT:    vsetvli zero, a1, e32, m2, ta, mu
3265 ; CHECK-NEXT:    vrgather.vx v8, v10, a0, v0.t
3266 ; CHECK-NEXT:    ret
3267 entry:
3268   %a = call <vscale x 4 x float> @llvm.riscv.vrgather.vx.mask.nxv4f32.iXLen(
3269     <vscale x 4 x float> %0,
3270     <vscale x 4 x float> %1,
3271     iXLen %2,
3272     <vscale x 4 x i1> %3,
3273     iXLen %4, iXLen 1)
3275   ret <vscale x 4 x float> %a
3278 declare <vscale x 8 x float> @llvm.riscv.vrgather.vx.nxv8f32.iXLen(
3279   <vscale x 8 x float>,
3280   <vscale x 8 x float>,
3281   iXLen,
3282   iXLen)
3284 define <vscale x 8 x float> @intrinsic_vrgather_vx_nxv8f32_nxv8f32(<vscale x 8 x float> %0, iXLen %1, iXLen %2) nounwind {
3285 ; CHECK-LABEL: intrinsic_vrgather_vx_nxv8f32_nxv8f32:
3286 ; CHECK:       # %bb.0: # %entry
3287 ; CHECK-NEXT:    vsetvli zero, a1, e32, m4, ta, ma
3288 ; CHECK-NEXT:    vrgather.vx v12, v8, a0
3289 ; CHECK-NEXT:    vmv.v.v v8, v12
3290 ; CHECK-NEXT:    ret
3291 entry:
3292   %a = call <vscale x 8 x float> @llvm.riscv.vrgather.vx.nxv8f32.iXLen(
3293     <vscale x 8 x float> undef,
3294     <vscale x 8 x float> %0,
3295     iXLen %1,
3296     iXLen %2)
3298   ret <vscale x 8 x float> %a
3301 declare <vscale x 8 x float> @llvm.riscv.vrgather.vx.mask.nxv8f32.iXLen(
3302   <vscale x 8 x float>,
3303   <vscale x 8 x float>,
3304   iXLen,
3305   <vscale x 8 x i1>,
3306   iXLen,
3307   iXLen)
3309 define <vscale x 8 x float> @intrinsic_vrgather_mask_vx_nxv8f32_nxv8f32(<vscale x 8 x float> %0, <vscale x 8 x float> %1, iXLen %2, <vscale x 8 x i1> %3, iXLen %4) nounwind {
3310 ; CHECK-LABEL: intrinsic_vrgather_mask_vx_nxv8f32_nxv8f32:
3311 ; CHECK:       # %bb.0: # %entry
3312 ; CHECK-NEXT:    vsetvli zero, a1, e32, m4, ta, mu
3313 ; CHECK-NEXT:    vrgather.vx v8, v12, a0, v0.t
3314 ; CHECK-NEXT:    ret
3315 entry:
3316   %a = call <vscale x 8 x float> @llvm.riscv.vrgather.vx.mask.nxv8f32.iXLen(
3317     <vscale x 8 x float> %0,
3318     <vscale x 8 x float> %1,
3319     iXLen %2,
3320     <vscale x 8 x i1> %3,
3321     iXLen %4, iXLen 1)
3323   ret <vscale x 8 x float> %a
3326 declare <vscale x 16 x float> @llvm.riscv.vrgather.vx.nxv16f32.iXLen(
3327   <vscale x 16 x float>,
3328   <vscale x 16 x float>,
3329   iXLen,
3330   iXLen)
3332 define <vscale x 16 x float> @intrinsic_vrgather_vx_nxv16f32_nxv16f32(<vscale x 16 x float> %0, iXLen %1, iXLen %2) nounwind {
3333 ; CHECK-LABEL: intrinsic_vrgather_vx_nxv16f32_nxv16f32:
3334 ; CHECK:       # %bb.0: # %entry
3335 ; CHECK-NEXT:    vsetvli zero, a1, e32, m8, ta, ma
3336 ; CHECK-NEXT:    vrgather.vx v16, v8, a0
3337 ; CHECK-NEXT:    vmv.v.v v8, v16
3338 ; CHECK-NEXT:    ret
3339 entry:
3340   %a = call <vscale x 16 x float> @llvm.riscv.vrgather.vx.nxv16f32.iXLen(
3341     <vscale x 16 x float> undef,
3342     <vscale x 16 x float> %0,
3343     iXLen %1,
3344     iXLen %2)
3346   ret <vscale x 16 x float> %a
3349 declare <vscale x 16 x float> @llvm.riscv.vrgather.vx.mask.nxv16f32.iXLen(
3350   <vscale x 16 x float>,
3351   <vscale x 16 x float>,
3352   iXLen,
3353   <vscale x 16 x i1>,
3354   iXLen,
3355   iXLen)
3357 define <vscale x 16 x float> @intrinsic_vrgather_mask_vx_nxv16f32_nxv16f32(<vscale x 16 x float> %0, <vscale x 16 x float> %1, iXLen %2, <vscale x 16 x i1> %3, iXLen %4) nounwind {
3358 ; CHECK-LABEL: intrinsic_vrgather_mask_vx_nxv16f32_nxv16f32:
3359 ; CHECK:       # %bb.0: # %entry
3360 ; CHECK-NEXT:    vsetvli zero, a1, e32, m8, ta, mu
3361 ; CHECK-NEXT:    vrgather.vx v8, v16, a0, v0.t
3362 ; CHECK-NEXT:    ret
3363 entry:
3364   %a = call <vscale x 16 x float> @llvm.riscv.vrgather.vx.mask.nxv16f32.iXLen(
3365     <vscale x 16 x float> %0,
3366     <vscale x 16 x float> %1,
3367     iXLen %2,
3368     <vscale x 16 x i1> %3,
3369     iXLen %4, iXLen 1)
3371   ret <vscale x 16 x float> %a
3374 declare <vscale x 1 x double> @llvm.riscv.vrgather.vx.nxv1f64.iXLen(
3375   <vscale x 1 x double>,
3376   <vscale x 1 x double>,
3377   iXLen,
3378   iXLen)
3380 define <vscale x 1 x double> @intrinsic_vrgather_vx_nxv1f64_nxv1f64(<vscale x 1 x double> %0, iXLen %1, iXLen %2) nounwind {
3381 ; CHECK-LABEL: intrinsic_vrgather_vx_nxv1f64_nxv1f64:
3382 ; CHECK:       # %bb.0: # %entry
3383 ; CHECK-NEXT:    vsetvli zero, a1, e64, m1, ta, ma
3384 ; CHECK-NEXT:    vrgather.vx v9, v8, a0
3385 ; CHECK-NEXT:    vmv.v.v v8, v9
3386 ; CHECK-NEXT:    ret
3387 entry:
3388   %a = call <vscale x 1 x double> @llvm.riscv.vrgather.vx.nxv1f64.iXLen(
3389     <vscale x 1 x double> undef,
3390     <vscale x 1 x double> %0,
3391     iXLen %1,
3392     iXLen %2)
3394   ret <vscale x 1 x double> %a
3397 declare <vscale x 1 x double> @llvm.riscv.vrgather.vx.mask.nxv1f64.iXLen(
3398   <vscale x 1 x double>,
3399   <vscale x 1 x double>,
3400   iXLen,
3401   <vscale x 1 x i1>,
3402   iXLen,
3403   iXLen)
3405 define <vscale x 1 x double> @intrinsic_vrgather_mask_vx_nxv1f64_nxv1f64(<vscale x 1 x double> %0, <vscale x 1 x double> %1, iXLen %2, <vscale x 1 x i1> %3, iXLen %4) nounwind {
3406 ; CHECK-LABEL: intrinsic_vrgather_mask_vx_nxv1f64_nxv1f64:
3407 ; CHECK:       # %bb.0: # %entry
3408 ; CHECK-NEXT:    vsetvli zero, a1, e64, m1, ta, mu
3409 ; CHECK-NEXT:    vrgather.vx v8, v9, a0, v0.t
3410 ; CHECK-NEXT:    ret
3411 entry:
3412   %a = call <vscale x 1 x double> @llvm.riscv.vrgather.vx.mask.nxv1f64.iXLen(
3413     <vscale x 1 x double> %0,
3414     <vscale x 1 x double> %1,
3415     iXLen %2,
3416     <vscale x 1 x i1> %3,
3417     iXLen %4, iXLen 1)
3419   ret <vscale x 1 x double> %a
3422 declare <vscale x 2 x double> @llvm.riscv.vrgather.vx.nxv2f64.iXLen(
3423   <vscale x 2 x double>,
3424   <vscale x 2 x double>,
3425   iXLen,
3426   iXLen)
3428 define <vscale x 2 x double> @intrinsic_vrgather_vx_nxv2f64_nxv2f64(<vscale x 2 x double> %0, iXLen %1, iXLen %2) nounwind {
3429 ; CHECK-LABEL: intrinsic_vrgather_vx_nxv2f64_nxv2f64:
3430 ; CHECK:       # %bb.0: # %entry
3431 ; CHECK-NEXT:    vsetvli zero, a1, e64, m2, ta, ma
3432 ; CHECK-NEXT:    vrgather.vx v10, v8, a0
3433 ; CHECK-NEXT:    vmv.v.v v8, v10
3434 ; CHECK-NEXT:    ret
3435 entry:
3436   %a = call <vscale x 2 x double> @llvm.riscv.vrgather.vx.nxv2f64.iXLen(
3437     <vscale x 2 x double> undef,
3438     <vscale x 2 x double> %0,
3439     iXLen %1,
3440     iXLen %2)
3442   ret <vscale x 2 x double> %a
3445 declare <vscale x 2 x double> @llvm.riscv.vrgather.vx.mask.nxv2f64.iXLen(
3446   <vscale x 2 x double>,
3447   <vscale x 2 x double>,
3448   iXLen,
3449   <vscale x 2 x i1>,
3450   iXLen,
3451   iXLen)
3453 define <vscale x 2 x double> @intrinsic_vrgather_mask_vx_nxv2f64_nxv2f64(<vscale x 2 x double> %0, <vscale x 2 x double> %1, iXLen %2, <vscale x 2 x i1> %3, iXLen %4) nounwind {
3454 ; CHECK-LABEL: intrinsic_vrgather_mask_vx_nxv2f64_nxv2f64:
3455 ; CHECK:       # %bb.0: # %entry
3456 ; CHECK-NEXT:    vsetvli zero, a1, e64, m2, ta, mu
3457 ; CHECK-NEXT:    vrgather.vx v8, v10, a0, v0.t
3458 ; CHECK-NEXT:    ret
3459 entry:
3460   %a = call <vscale x 2 x double> @llvm.riscv.vrgather.vx.mask.nxv2f64.iXLen(
3461     <vscale x 2 x double> %0,
3462     <vscale x 2 x double> %1,
3463     iXLen %2,
3464     <vscale x 2 x i1> %3,
3465     iXLen %4, iXLen 1)
3467   ret <vscale x 2 x double> %a
3470 declare <vscale x 4 x double> @llvm.riscv.vrgather.vx.nxv4f64.iXLen(
3471   <vscale x 4 x double>,
3472   <vscale x 4 x double>,
3473   iXLen,
3474   iXLen)
3476 define <vscale x 4 x double> @intrinsic_vrgather_vx_nxv4f64_nxv4f64(<vscale x 4 x double> %0, iXLen %1, iXLen %2) nounwind {
3477 ; CHECK-LABEL: intrinsic_vrgather_vx_nxv4f64_nxv4f64:
3478 ; CHECK:       # %bb.0: # %entry
3479 ; CHECK-NEXT:    vsetvli zero, a1, e64, m4, ta, ma
3480 ; CHECK-NEXT:    vrgather.vx v12, v8, a0
3481 ; CHECK-NEXT:    vmv.v.v v8, v12
3482 ; CHECK-NEXT:    ret
3483 entry:
3484   %a = call <vscale x 4 x double> @llvm.riscv.vrgather.vx.nxv4f64.iXLen(
3485     <vscale x 4 x double> undef,
3486     <vscale x 4 x double> %0,
3487     iXLen %1,
3488     iXLen %2)
3490   ret <vscale x 4 x double> %a
3493 declare <vscale x 4 x double> @llvm.riscv.vrgather.vx.mask.nxv4f64.iXLen(
3494   <vscale x 4 x double>,
3495   <vscale x 4 x double>,
3496   iXLen,
3497   <vscale x 4 x i1>,
3498   iXLen,
3499   iXLen)
3501 define <vscale x 4 x double> @intrinsic_vrgather_mask_vx_nxv4f64_nxv4f64(<vscale x 4 x double> %0, <vscale x 4 x double> %1, iXLen %2, <vscale x 4 x i1> %3, iXLen %4) nounwind {
3502 ; CHECK-LABEL: intrinsic_vrgather_mask_vx_nxv4f64_nxv4f64:
3503 ; CHECK:       # %bb.0: # %entry
3504 ; CHECK-NEXT:    vsetvli zero, a1, e64, m4, ta, mu
3505 ; CHECK-NEXT:    vrgather.vx v8, v12, a0, v0.t
3506 ; CHECK-NEXT:    ret
3507 entry:
3508   %a = call <vscale x 4 x double> @llvm.riscv.vrgather.vx.mask.nxv4f64.iXLen(
3509     <vscale x 4 x double> %0,
3510     <vscale x 4 x double> %1,
3511     iXLen %2,
3512     <vscale x 4 x i1> %3,
3513     iXLen %4, iXLen 1)
3515   ret <vscale x 4 x double> %a
3518 declare <vscale x 8 x double> @llvm.riscv.vrgather.vx.nxv8f64.iXLen(
3519   <vscale x 8 x double>,
3520   <vscale x 8 x double>,
3521   iXLen,
3522   iXLen)
3524 define <vscale x 8 x double> @intrinsic_vrgather_vx_nxv8f64_nxv8f64(<vscale x 8 x double> %0, iXLen %1, iXLen %2) nounwind {
3525 ; CHECK-LABEL: intrinsic_vrgather_vx_nxv8f64_nxv8f64:
3526 ; CHECK:       # %bb.0: # %entry
3527 ; CHECK-NEXT:    vsetvli zero, a1, e64, m8, ta, ma
3528 ; CHECK-NEXT:    vrgather.vx v16, v8, a0
3529 ; CHECK-NEXT:    vmv.v.v v8, v16
3530 ; CHECK-NEXT:    ret
3531 entry:
3532   %a = call <vscale x 8 x double> @llvm.riscv.vrgather.vx.nxv8f64.iXLen(
3533     <vscale x 8 x double> undef,
3534     <vscale x 8 x double> %0,
3535     iXLen %1,
3536     iXLen %2)
3538   ret <vscale x 8 x double> %a
3541 declare <vscale x 8 x double> @llvm.riscv.vrgather.vx.mask.nxv8f64.iXLen(
3542   <vscale x 8 x double>,
3543   <vscale x 8 x double>,
3544   iXLen,
3545   <vscale x 8 x i1>,
3546   iXLen,
3547   iXLen)
3549 define <vscale x 8 x double> @intrinsic_vrgather_mask_vx_nxv8f64_nxv8f64(<vscale x 8 x double> %0, <vscale x 8 x double> %1, iXLen %2, <vscale x 8 x i1> %3, iXLen %4) nounwind {
3550 ; CHECK-LABEL: intrinsic_vrgather_mask_vx_nxv8f64_nxv8f64:
3551 ; CHECK:       # %bb.0: # %entry
3552 ; CHECK-NEXT:    vsetvli zero, a1, e64, m8, ta, mu
3553 ; CHECK-NEXT:    vrgather.vx v8, v16, a0, v0.t
3554 ; CHECK-NEXT:    ret
3555 entry:
3556   %a = call <vscale x 8 x double> @llvm.riscv.vrgather.vx.mask.nxv8f64.iXLen(
3557     <vscale x 8 x double> %0,
3558     <vscale x 8 x double> %1,
3559     iXLen %2,
3560     <vscale x 8 x i1> %3,
3561     iXLen %4, iXLen 1)
3563   ret <vscale x 8 x double> %a
3566 define <vscale x 1 x i8> @intrinsic_vrgather_vi_nxv1i8_nxv1i8(<vscale x 1 x i8> %0, iXLen %1) nounwind {
3567 ; CHECK-LABEL: intrinsic_vrgather_vi_nxv1i8_nxv1i8:
3568 ; CHECK:       # %bb.0: # %entry
3569 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf8, ta, ma
3570 ; CHECK-NEXT:    vrgather.vi v9, v8, 9
3571 ; CHECK-NEXT:    vmv1r.v v8, v9
3572 ; CHECK-NEXT:    ret
3573 entry:
3574   %a = call <vscale x 1 x i8> @llvm.riscv.vrgather.vx.nxv1i8.iXLen(
3575     <vscale x 1 x i8> undef,
3576     <vscale x 1 x i8> %0,
3577     iXLen 9,
3578     iXLen %1)
3580   ret <vscale x 1 x i8> %a
3583 define <vscale x 1 x i8> @intrinsic_vrgather_mask_vi_nxv1i8_nxv1i8(<vscale x 1 x i8> %0, <vscale x 1 x i8> %1, <vscale x 1 x i1> %2, iXLen %3) nounwind {
3584 ; CHECK-LABEL: intrinsic_vrgather_mask_vi_nxv1i8_nxv1i8:
3585 ; CHECK:       # %bb.0: # %entry
3586 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf8, ta, mu
3587 ; CHECK-NEXT:    vrgather.vi v8, v9, 9, v0.t
3588 ; CHECK-NEXT:    ret
3589 entry:
3590   %a = call <vscale x 1 x i8> @llvm.riscv.vrgather.vx.mask.nxv1i8.iXLen(
3591     <vscale x 1 x i8> %0,
3592     <vscale x 1 x i8> %1,
3593     iXLen 9,
3594     <vscale x 1 x i1> %2,
3595     iXLen %3, iXLen 1)
3597   ret <vscale x 1 x i8> %a
3600 define <vscale x 2 x i8> @intrinsic_vrgather_vi_nxv2i8_nxv2i8(<vscale x 2 x i8> %0, iXLen %1) nounwind {
3601 ; CHECK-LABEL: intrinsic_vrgather_vi_nxv2i8_nxv2i8:
3602 ; CHECK:       # %bb.0: # %entry
3603 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf4, ta, ma
3604 ; CHECK-NEXT:    vrgather.vi v9, v8, 9
3605 ; CHECK-NEXT:    vmv1r.v v8, v9
3606 ; CHECK-NEXT:    ret
3607 entry:
3608   %a = call <vscale x 2 x i8> @llvm.riscv.vrgather.vx.nxv2i8.iXLen(
3609     <vscale x 2 x i8> undef,
3610     <vscale x 2 x i8> %0,
3611     iXLen 9,
3612     iXLen %1)
3614   ret <vscale x 2 x i8> %a
3617 define <vscale x 2 x i8> @intrinsic_vrgather_mask_vi_nxv2i8_nxv2i8(<vscale x 2 x i8> %0, <vscale x 2 x i8> %1, <vscale x 2 x i1> %2, iXLen %3) nounwind {
3618 ; CHECK-LABEL: intrinsic_vrgather_mask_vi_nxv2i8_nxv2i8:
3619 ; CHECK:       # %bb.0: # %entry
3620 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf4, ta, mu
3621 ; CHECK-NEXT:    vrgather.vi v8, v9, 9, v0.t
3622 ; CHECK-NEXT:    ret
3623 entry:
3624   %a = call <vscale x 2 x i8> @llvm.riscv.vrgather.vx.mask.nxv2i8.iXLen(
3625     <vscale x 2 x i8> %0,
3626     <vscale x 2 x i8> %1,
3627     iXLen 9,
3628     <vscale x 2 x i1> %2,
3629     iXLen %3, iXLen 1)
3631   ret <vscale x 2 x i8> %a
3634 define <vscale x 4 x i8> @intrinsic_vrgather_vi_nxv4i8_nxv4i8(<vscale x 4 x i8> %0, iXLen %1) nounwind {
3635 ; CHECK-LABEL: intrinsic_vrgather_vi_nxv4i8_nxv4i8:
3636 ; CHECK:       # %bb.0: # %entry
3637 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf2, ta, ma
3638 ; CHECK-NEXT:    vrgather.vi v9, v8, 9
3639 ; CHECK-NEXT:    vmv1r.v v8, v9
3640 ; CHECK-NEXT:    ret
3641 entry:
3642   %a = call <vscale x 4 x i8> @llvm.riscv.vrgather.vx.nxv4i8.iXLen(
3643     <vscale x 4 x i8> undef,
3644     <vscale x 4 x i8> %0,
3645     iXLen 9,
3646     iXLen %1)
3648   ret <vscale x 4 x i8> %a
3651 define <vscale x 4 x i8> @intrinsic_vrgather_mask_vi_nxv4i8_nxv4i8(<vscale x 4 x i8> %0, <vscale x 4 x i8> %1, <vscale x 4 x i1> %2, iXLen %3) nounwind {
3652 ; CHECK-LABEL: intrinsic_vrgather_mask_vi_nxv4i8_nxv4i8:
3653 ; CHECK:       # %bb.0: # %entry
3654 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf2, ta, mu
3655 ; CHECK-NEXT:    vrgather.vi v8, v9, 9, v0.t
3656 ; CHECK-NEXT:    ret
3657 entry:
3658   %a = call <vscale x 4 x i8> @llvm.riscv.vrgather.vx.mask.nxv4i8.iXLen(
3659     <vscale x 4 x i8> %0,
3660     <vscale x 4 x i8> %1,
3661     iXLen 9,
3662     <vscale x 4 x i1> %2,
3663     iXLen %3, iXLen 1)
3665   ret <vscale x 4 x i8> %a
3668 define <vscale x 8 x i8> @intrinsic_vrgather_vi_nxv8i8_nxv8i8(<vscale x 8 x i8> %0, iXLen %1) nounwind {
3669 ; CHECK-LABEL: intrinsic_vrgather_vi_nxv8i8_nxv8i8:
3670 ; CHECK:       # %bb.0: # %entry
3671 ; CHECK-NEXT:    vsetvli zero, a0, e8, m1, ta, ma
3672 ; CHECK-NEXT:    vrgather.vi v9, v8, 9
3673 ; CHECK-NEXT:    vmv.v.v v8, v9
3674 ; CHECK-NEXT:    ret
3675 entry:
3676   %a = call <vscale x 8 x i8> @llvm.riscv.vrgather.vx.nxv8i8.iXLen(
3677     <vscale x 8 x i8> undef,
3678     <vscale x 8 x i8> %0,
3679     iXLen 9,
3680     iXLen %1)
3682   ret <vscale x 8 x i8> %a
3685 define <vscale x 8 x i8> @intrinsic_vrgather_mask_vi_nxv8i8_nxv8i8(<vscale x 8 x i8> %0, <vscale x 8 x i8> %1, <vscale x 8 x i1> %2, iXLen %3) nounwind {
3686 ; CHECK-LABEL: intrinsic_vrgather_mask_vi_nxv8i8_nxv8i8:
3687 ; CHECK:       # %bb.0: # %entry
3688 ; CHECK-NEXT:    vsetvli zero, a0, e8, m1, ta, mu
3689 ; CHECK-NEXT:    vrgather.vi v8, v9, 9, v0.t
3690 ; CHECK-NEXT:    ret
3691 entry:
3692   %a = call <vscale x 8 x i8> @llvm.riscv.vrgather.vx.mask.nxv8i8.iXLen(
3693     <vscale x 8 x i8> %0,
3694     <vscale x 8 x i8> %1,
3695     iXLen 9,
3696     <vscale x 8 x i1> %2,
3697     iXLen %3, iXLen 1)
3699   ret <vscale x 8 x i8> %a
3702 define <vscale x 16 x i8> @intrinsic_vrgather_vi_nxv16i8_nxv16i8(<vscale x 16 x i8> %0, iXLen %1) nounwind {
3703 ; CHECK-LABEL: intrinsic_vrgather_vi_nxv16i8_nxv16i8:
3704 ; CHECK:       # %bb.0: # %entry
3705 ; CHECK-NEXT:    vsetvli zero, a0, e8, m2, ta, ma
3706 ; CHECK-NEXT:    vrgather.vi v10, v8, 9
3707 ; CHECK-NEXT:    vmv.v.v v8, v10
3708 ; CHECK-NEXT:    ret
3709 entry:
3710   %a = call <vscale x 16 x i8> @llvm.riscv.vrgather.vx.nxv16i8.iXLen(
3711     <vscale x 16 x i8> undef,
3712     <vscale x 16 x i8> %0,
3713     iXLen 9,
3714     iXLen %1)
3716   ret <vscale x 16 x i8> %a
3719 define <vscale x 16 x i8> @intrinsic_vrgather_mask_vi_nxv16i8_nxv16i8(<vscale x 16 x i8> %0, <vscale x 16 x i8> %1, <vscale x 16 x i1> %2, iXLen %3) nounwind {
3720 ; CHECK-LABEL: intrinsic_vrgather_mask_vi_nxv16i8_nxv16i8:
3721 ; CHECK:       # %bb.0: # %entry
3722 ; CHECK-NEXT:    vsetvli zero, a0, e8, m2, ta, mu
3723 ; CHECK-NEXT:    vrgather.vi v8, v10, 9, v0.t
3724 ; CHECK-NEXT:    ret
3725 entry:
3726   %a = call <vscale x 16 x i8> @llvm.riscv.vrgather.vx.mask.nxv16i8.iXLen(
3727     <vscale x 16 x i8> %0,
3728     <vscale x 16 x i8> %1,
3729     iXLen 9,
3730     <vscale x 16 x i1> %2,
3731     iXLen %3, iXLen 1)
3733   ret <vscale x 16 x i8> %a
3736 define <vscale x 32 x i8> @intrinsic_vrgather_vi_nxv32i8_nxv32i8(<vscale x 32 x i8> %0, iXLen %1) nounwind {
3737 ; CHECK-LABEL: intrinsic_vrgather_vi_nxv32i8_nxv32i8:
3738 ; CHECK:       # %bb.0: # %entry
3739 ; CHECK-NEXT:    vsetvli zero, a0, e8, m4, ta, ma
3740 ; CHECK-NEXT:    vrgather.vi v12, v8, 9
3741 ; CHECK-NEXT:    vmv.v.v v8, v12
3742 ; CHECK-NEXT:    ret
3743 entry:
3744   %a = call <vscale x 32 x i8> @llvm.riscv.vrgather.vx.nxv32i8.iXLen(
3745     <vscale x 32 x i8> undef,
3746     <vscale x 32 x i8> %0,
3747     iXLen 9,
3748     iXLen %1)
3750   ret <vscale x 32 x i8> %a
3753 define <vscale x 32 x i8> @intrinsic_vrgather_mask_vi_nxv32i8_nxv32i8(<vscale x 32 x i8> %0, <vscale x 32 x i8> %1, <vscale x 32 x i1> %2, iXLen %3) nounwind {
3754 ; CHECK-LABEL: intrinsic_vrgather_mask_vi_nxv32i8_nxv32i8:
3755 ; CHECK:       # %bb.0: # %entry
3756 ; CHECK-NEXT:    vsetvli zero, a0, e8, m4, ta, mu
3757 ; CHECK-NEXT:    vrgather.vi v8, v12, 9, v0.t
3758 ; CHECK-NEXT:    ret
3759 entry:
3760   %a = call <vscale x 32 x i8> @llvm.riscv.vrgather.vx.mask.nxv32i8.iXLen(
3761     <vscale x 32 x i8> %0,
3762     <vscale x 32 x i8> %1,
3763     iXLen 9,
3764     <vscale x 32 x i1> %2,
3765     iXLen %3, iXLen 1)
3767   ret <vscale x 32 x i8> %a
3770 define <vscale x 64 x i8> @intrinsic_vrgather_vi_nxv64i8_nxv64i8(<vscale x 64 x i8> %0, iXLen %1) nounwind {
3771 ; CHECK-LABEL: intrinsic_vrgather_vi_nxv64i8_nxv64i8:
3772 ; CHECK:       # %bb.0: # %entry
3773 ; CHECK-NEXT:    vsetvli zero, a0, e8, m8, ta, ma
3774 ; CHECK-NEXT:    vrgather.vi v16, v8, 9
3775 ; CHECK-NEXT:    vmv.v.v v8, v16
3776 ; CHECK-NEXT:    ret
3777 entry:
3778   %a = call <vscale x 64 x i8> @llvm.riscv.vrgather.vx.nxv64i8.iXLen(
3779     <vscale x 64 x i8> undef,
3780     <vscale x 64 x i8> %0,
3781     iXLen 9,
3782     iXLen %1)
3784   ret <vscale x 64 x i8> %a
3787 define <vscale x 64 x i8> @intrinsic_vrgather_mask_vi_nxv64i8_nxv64i8(<vscale x 64 x i8> %0, <vscale x 64 x i8> %1, <vscale x 64 x i1> %2, iXLen %3) nounwind {
3788 ; CHECK-LABEL: intrinsic_vrgather_mask_vi_nxv64i8_nxv64i8:
3789 ; CHECK:       # %bb.0: # %entry
3790 ; CHECK-NEXT:    vsetvli zero, a0, e8, m8, ta, mu
3791 ; CHECK-NEXT:    vrgather.vi v8, v16, 9, v0.t
3792 ; CHECK-NEXT:    ret
3793 entry:
3794   %a = call <vscale x 64 x i8> @llvm.riscv.vrgather.vx.mask.nxv64i8.iXLen(
3795     <vscale x 64 x i8> %0,
3796     <vscale x 64 x i8> %1,
3797     iXLen 9,
3798     <vscale x 64 x i1> %2,
3799     iXLen %3, iXLen 1)
3801   ret <vscale x 64 x i8> %a
3804 define <vscale x 1 x i16> @intrinsic_vrgather_vi_nxv1i16_nxv1i16(<vscale x 1 x i16> %0, iXLen %1) nounwind {
3805 ; CHECK-LABEL: intrinsic_vrgather_vi_nxv1i16_nxv1i16:
3806 ; CHECK:       # %bb.0: # %entry
3807 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma
3808 ; CHECK-NEXT:    vrgather.vi v9, v8, 9
3809 ; CHECK-NEXT:    vmv1r.v v8, v9
3810 ; CHECK-NEXT:    ret
3811 entry:
3812   %a = call <vscale x 1 x i16> @llvm.riscv.vrgather.vx.nxv1i16.iXLen(
3813     <vscale x 1 x i16> undef,
3814     <vscale x 1 x i16> %0,
3815     iXLen 9,
3816     iXLen %1)
3818   ret <vscale x 1 x i16> %a
3821 define <vscale x 1 x i16> @intrinsic_vrgather_mask_vi_nxv1i16_nxv1i16(<vscale x 1 x i16> %0, <vscale x 1 x i16> %1, <vscale x 1 x i1> %2, iXLen %3) nounwind {
3822 ; CHECK-LABEL: intrinsic_vrgather_mask_vi_nxv1i16_nxv1i16:
3823 ; CHECK:       # %bb.0: # %entry
3824 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, ta, mu
3825 ; CHECK-NEXT:    vrgather.vi v8, v9, 9, v0.t
3826 ; CHECK-NEXT:    ret
3827 entry:
3828   %a = call <vscale x 1 x i16> @llvm.riscv.vrgather.vx.mask.nxv1i16.iXLen(
3829     <vscale x 1 x i16> %0,
3830     <vscale x 1 x i16> %1,
3831     iXLen 9,
3832     <vscale x 1 x i1> %2,
3833     iXLen %3, iXLen 1)
3835   ret <vscale x 1 x i16> %a
3838 define <vscale x 2 x i16> @intrinsic_vrgather_vi_nxv2i16_nxv2i16(<vscale x 2 x i16> %0, iXLen %1) nounwind {
3839 ; CHECK-LABEL: intrinsic_vrgather_vi_nxv2i16_nxv2i16:
3840 ; CHECK:       # %bb.0: # %entry
3841 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf2, ta, ma
3842 ; CHECK-NEXT:    vrgather.vi v9, v8, 9
3843 ; CHECK-NEXT:    vmv1r.v v8, v9
3844 ; CHECK-NEXT:    ret
3845 entry:
3846   %a = call <vscale x 2 x i16> @llvm.riscv.vrgather.vx.nxv2i16.iXLen(
3847     <vscale x 2 x i16> undef,
3848     <vscale x 2 x i16> %0,
3849     iXLen 9,
3850     iXLen %1)
3852   ret <vscale x 2 x i16> %a
3855 define <vscale x 2 x i16> @intrinsic_vrgather_mask_vi_nxv2i16_nxv2i16(<vscale x 2 x i16> %0, <vscale x 2 x i16> %1, <vscale x 2 x i1> %2, iXLen %3) nounwind {
3856 ; CHECK-LABEL: intrinsic_vrgather_mask_vi_nxv2i16_nxv2i16:
3857 ; CHECK:       # %bb.0: # %entry
3858 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf2, ta, mu
3859 ; CHECK-NEXT:    vrgather.vi v8, v9, 9, v0.t
3860 ; CHECK-NEXT:    ret
3861 entry:
3862   %a = call <vscale x 2 x i16> @llvm.riscv.vrgather.vx.mask.nxv2i16.iXLen(
3863     <vscale x 2 x i16> %0,
3864     <vscale x 2 x i16> %1,
3865     iXLen 9,
3866     <vscale x 2 x i1> %2,
3867     iXLen %3, iXLen 1)
3869   ret <vscale x 2 x i16> %a
3872 define <vscale x 4 x i16> @intrinsic_vrgather_vi_nxv4i16_nxv4i16(<vscale x 4 x i16> %0, iXLen %1) nounwind {
3873 ; CHECK-LABEL: intrinsic_vrgather_vi_nxv4i16_nxv4i16:
3874 ; CHECK:       # %bb.0: # %entry
3875 ; CHECK-NEXT:    vsetvli zero, a0, e16, m1, ta, ma
3876 ; CHECK-NEXT:    vrgather.vi v9, v8, 9
3877 ; CHECK-NEXT:    vmv.v.v v8, v9
3878 ; CHECK-NEXT:    ret
3879 entry:
3880   %a = call <vscale x 4 x i16> @llvm.riscv.vrgather.vx.nxv4i16.iXLen(
3881     <vscale x 4 x i16> undef,
3882     <vscale x 4 x i16> %0,
3883     iXLen 9,
3884     iXLen %1)
3886   ret <vscale x 4 x i16> %a
3889 define <vscale x 4 x i16> @intrinsic_vrgather_mask_vi_nxv4i16_nxv4i16(<vscale x 4 x i16> %0, <vscale x 4 x i16> %1, <vscale x 4 x i1> %2, iXLen %3) nounwind {
3890 ; CHECK-LABEL: intrinsic_vrgather_mask_vi_nxv4i16_nxv4i16:
3891 ; CHECK:       # %bb.0: # %entry
3892 ; CHECK-NEXT:    vsetvli zero, a0, e16, m1, ta, mu
3893 ; CHECK-NEXT:    vrgather.vi v8, v9, 9, v0.t
3894 ; CHECK-NEXT:    ret
3895 entry:
3896   %a = call <vscale x 4 x i16> @llvm.riscv.vrgather.vx.mask.nxv4i16.iXLen(
3897     <vscale x 4 x i16> %0,
3898     <vscale x 4 x i16> %1,
3899     iXLen 9,
3900     <vscale x 4 x i1> %2,
3901     iXLen %3, iXLen 1)
3903   ret <vscale x 4 x i16> %a
3906 define <vscale x 8 x i16> @intrinsic_vrgather_vi_nxv8i16_nxv8i16(<vscale x 8 x i16> %0, iXLen %1) nounwind {
3907 ; CHECK-LABEL: intrinsic_vrgather_vi_nxv8i16_nxv8i16:
3908 ; CHECK:       # %bb.0: # %entry
3909 ; CHECK-NEXT:    vsetvli zero, a0, e16, m2, ta, ma
3910 ; CHECK-NEXT:    vrgather.vi v10, v8, 9
3911 ; CHECK-NEXT:    vmv.v.v v8, v10
3912 ; CHECK-NEXT:    ret
3913 entry:
3914   %a = call <vscale x 8 x i16> @llvm.riscv.vrgather.vx.nxv8i16.iXLen(
3915     <vscale x 8 x i16> undef,
3916     <vscale x 8 x i16> %0,
3917     iXLen 9,
3918     iXLen %1)
3920   ret <vscale x 8 x i16> %a
3923 define <vscale x 8 x i16> @intrinsic_vrgather_mask_vi_nxv8i16_nxv8i16(<vscale x 8 x i16> %0, <vscale x 8 x i16> %1, <vscale x 8 x i1> %2, iXLen %3) nounwind {
3924 ; CHECK-LABEL: intrinsic_vrgather_mask_vi_nxv8i16_nxv8i16:
3925 ; CHECK:       # %bb.0: # %entry
3926 ; CHECK-NEXT:    vsetvli zero, a0, e16, m2, ta, mu
3927 ; CHECK-NEXT:    vrgather.vi v8, v10, 9, v0.t
3928 ; CHECK-NEXT:    ret
3929 entry:
3930   %a = call <vscale x 8 x i16> @llvm.riscv.vrgather.vx.mask.nxv8i16.iXLen(
3931     <vscale x 8 x i16> %0,
3932     <vscale x 8 x i16> %1,
3933     iXLen 9,
3934     <vscale x 8 x i1> %2,
3935     iXLen %3, iXLen 1)
3937   ret <vscale x 8 x i16> %a
3940 define <vscale x 16 x i16> @intrinsic_vrgather_vi_nxv16i16_nxv16i16(<vscale x 16 x i16> %0, iXLen %1) nounwind {
3941 ; CHECK-LABEL: intrinsic_vrgather_vi_nxv16i16_nxv16i16:
3942 ; CHECK:       # %bb.0: # %entry
3943 ; CHECK-NEXT:    vsetvli zero, a0, e16, m4, ta, ma
3944 ; CHECK-NEXT:    vrgather.vi v12, v8, 9
3945 ; CHECK-NEXT:    vmv.v.v v8, v12
3946 ; CHECK-NEXT:    ret
3947 entry:
3948   %a = call <vscale x 16 x i16> @llvm.riscv.vrgather.vx.nxv16i16.iXLen(
3949     <vscale x 16 x i16> undef,
3950     <vscale x 16 x i16> %0,
3951     iXLen 9,
3952     iXLen %1)
3954   ret <vscale x 16 x i16> %a
3957 define <vscale x 16 x i16> @intrinsic_vrgather_mask_vi_nxv16i16_nxv16i16(<vscale x 16 x i16> %0, <vscale x 16 x i16> %1, <vscale x 16 x i1> %2, iXLen %3) nounwind {
3958 ; CHECK-LABEL: intrinsic_vrgather_mask_vi_nxv16i16_nxv16i16:
3959 ; CHECK:       # %bb.0: # %entry
3960 ; CHECK-NEXT:    vsetvli zero, a0, e16, m4, ta, mu
3961 ; CHECK-NEXT:    vrgather.vi v8, v12, 9, v0.t
3962 ; CHECK-NEXT:    ret
3963 entry:
3964   %a = call <vscale x 16 x i16> @llvm.riscv.vrgather.vx.mask.nxv16i16.iXLen(
3965     <vscale x 16 x i16> %0,
3966     <vscale x 16 x i16> %1,
3967     iXLen 9,
3968     <vscale x 16 x i1> %2,
3969     iXLen %3, iXLen 1)
3971   ret <vscale x 16 x i16> %a
3974 define <vscale x 32 x i16> @intrinsic_vrgather_vi_nxv32i16_nxv32i16(<vscale x 32 x i16> %0, iXLen %1) nounwind {
3975 ; CHECK-LABEL: intrinsic_vrgather_vi_nxv32i16_nxv32i16:
3976 ; CHECK:       # %bb.0: # %entry
3977 ; CHECK-NEXT:    vsetvli zero, a0, e16, m8, ta, ma
3978 ; CHECK-NEXT:    vrgather.vi v16, v8, 9
3979 ; CHECK-NEXT:    vmv.v.v v8, v16
3980 ; CHECK-NEXT:    ret
3981 entry:
3982   %a = call <vscale x 32 x i16> @llvm.riscv.vrgather.vx.nxv32i16.iXLen(
3983     <vscale x 32 x i16> undef,
3984     <vscale x 32 x i16> %0,
3985     iXLen 9,
3986     iXLen %1)
3988   ret <vscale x 32 x i16> %a
3991 define <vscale x 32 x i16> @intrinsic_vrgather_mask_vi_nxv32i16_nxv32i16(<vscale x 32 x i16> %0, <vscale x 32 x i16> %1, <vscale x 32 x i1> %2, iXLen %3) nounwind {
3992 ; CHECK-LABEL: intrinsic_vrgather_mask_vi_nxv32i16_nxv32i16:
3993 ; CHECK:       # %bb.0: # %entry
3994 ; CHECK-NEXT:    vsetvli zero, a0, e16, m8, ta, mu
3995 ; CHECK-NEXT:    vrgather.vi v8, v16, 9, v0.t
3996 ; CHECK-NEXT:    ret
3997 entry:
3998   %a = call <vscale x 32 x i16> @llvm.riscv.vrgather.vx.mask.nxv32i16.iXLen(
3999     <vscale x 32 x i16> %0,
4000     <vscale x 32 x i16> %1,
4001     iXLen 9,
4002     <vscale x 32 x i1> %2,
4003     iXLen %3, iXLen 1)
4005   ret <vscale x 32 x i16> %a
4008 define <vscale x 1 x i32> @intrinsic_vrgather_vi_nxv1i32_nxv1i32(<vscale x 1 x i32> %0, iXLen %1) nounwind {
4009 ; CHECK-LABEL: intrinsic_vrgather_vi_nxv1i32_nxv1i32:
4010 ; CHECK:       # %bb.0: # %entry
4011 ; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma
4012 ; CHECK-NEXT:    vrgather.vi v9, v8, 9
4013 ; CHECK-NEXT:    vmv1r.v v8, v9
4014 ; CHECK-NEXT:    ret
4015 entry:
4016   %a = call <vscale x 1 x i32> @llvm.riscv.vrgather.vx.nxv1i32.iXLen(
4017     <vscale x 1 x i32> undef,
4018     <vscale x 1 x i32> %0,
4019     iXLen 9,
4020     iXLen %1)
4022   ret <vscale x 1 x i32> %a
4025 define <vscale x 1 x i32> @intrinsic_vrgather_mask_vi_nxv1i32_nxv1i32(<vscale x 1 x i32> %0, <vscale x 1 x i32> %1, <vscale x 1 x i1> %2, iXLen %3) nounwind {
4026 ; CHECK-LABEL: intrinsic_vrgather_mask_vi_nxv1i32_nxv1i32:
4027 ; CHECK:       # %bb.0: # %entry
4028 ; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, mu
4029 ; CHECK-NEXT:    vrgather.vi v8, v9, 9, v0.t
4030 ; CHECK-NEXT:    ret
4031 entry:
4032   %a = call <vscale x 1 x i32> @llvm.riscv.vrgather.vx.mask.nxv1i32.iXLen(
4033     <vscale x 1 x i32> %0,
4034     <vscale x 1 x i32> %1,
4035     iXLen 9,
4036     <vscale x 1 x i1> %2,
4037     iXLen %3, iXLen 1)
4039   ret <vscale x 1 x i32> %a
4042 define <vscale x 2 x i32> @intrinsic_vrgather_vi_nxv2i32_nxv2i32(<vscale x 2 x i32> %0, iXLen %1) nounwind {
4043 ; CHECK-LABEL: intrinsic_vrgather_vi_nxv2i32_nxv2i32:
4044 ; CHECK:       # %bb.0: # %entry
4045 ; CHECK-NEXT:    vsetvli zero, a0, e32, m1, ta, ma
4046 ; CHECK-NEXT:    vrgather.vi v9, v8, 9
4047 ; CHECK-NEXT:    vmv.v.v v8, v9
4048 ; CHECK-NEXT:    ret
4049 entry:
4050   %a = call <vscale x 2 x i32> @llvm.riscv.vrgather.vx.nxv2i32.iXLen(
4051     <vscale x 2 x i32> undef,
4052     <vscale x 2 x i32> %0,
4053     iXLen 9,
4054     iXLen %1)
4056   ret <vscale x 2 x i32> %a
4059 define <vscale x 2 x i32> @intrinsic_vrgather_mask_vi_nxv2i32_nxv2i32(<vscale x 2 x i32> %0, <vscale x 2 x i32> %1, <vscale x 2 x i1> %2, iXLen %3) nounwind {
4060 ; CHECK-LABEL: intrinsic_vrgather_mask_vi_nxv2i32_nxv2i32:
4061 ; CHECK:       # %bb.0: # %entry
4062 ; CHECK-NEXT:    vsetvli zero, a0, e32, m1, ta, mu
4063 ; CHECK-NEXT:    vrgather.vi v8, v9, 9, v0.t
4064 ; CHECK-NEXT:    ret
4065 entry:
4066   %a = call <vscale x 2 x i32> @llvm.riscv.vrgather.vx.mask.nxv2i32.iXLen(
4067     <vscale x 2 x i32> %0,
4068     <vscale x 2 x i32> %1,
4069     iXLen 9,
4070     <vscale x 2 x i1> %2,
4071     iXLen %3, iXLen 1)
4073   ret <vscale x 2 x i32> %a
4076 define <vscale x 4 x i32> @intrinsic_vrgather_vi_nxv4i32_nxv4i32(<vscale x 4 x i32> %0, iXLen %1) nounwind {
4077 ; CHECK-LABEL: intrinsic_vrgather_vi_nxv4i32_nxv4i32:
4078 ; CHECK:       # %bb.0: # %entry
4079 ; CHECK-NEXT:    vsetvli zero, a0, e32, m2, ta, ma
4080 ; CHECK-NEXT:    vrgather.vi v10, v8, 9
4081 ; CHECK-NEXT:    vmv.v.v v8, v10
4082 ; CHECK-NEXT:    ret
4083 entry:
4084   %a = call <vscale x 4 x i32> @llvm.riscv.vrgather.vx.nxv4i32.iXLen(
4085     <vscale x 4 x i32> undef,
4086     <vscale x 4 x i32> %0,
4087     iXLen 9,
4088     iXLen %1)
4090   ret <vscale x 4 x i32> %a
4093 define <vscale x 4 x i32> @intrinsic_vrgather_mask_vi_nxv4i32_nxv4i32(<vscale x 4 x i32> %0, <vscale x 4 x i32> %1, <vscale x 4 x i1> %2, iXLen %3) nounwind {
4094 ; CHECK-LABEL: intrinsic_vrgather_mask_vi_nxv4i32_nxv4i32:
4095 ; CHECK:       # %bb.0: # %entry
4096 ; CHECK-NEXT:    vsetvli zero, a0, e32, m2, ta, mu
4097 ; CHECK-NEXT:    vrgather.vi v8, v10, 9, v0.t
4098 ; CHECK-NEXT:    ret
4099 entry:
4100   %a = call <vscale x 4 x i32> @llvm.riscv.vrgather.vx.mask.nxv4i32.iXLen(
4101     <vscale x 4 x i32> %0,
4102     <vscale x 4 x i32> %1,
4103     iXLen 9,
4104     <vscale x 4 x i1> %2,
4105     iXLen %3, iXLen 1)
4107   ret <vscale x 4 x i32> %a
4110 define <vscale x 8 x i32> @intrinsic_vrgather_vi_nxv8i32_nxv8i32(<vscale x 8 x i32> %0, iXLen %1) nounwind {
4111 ; CHECK-LABEL: intrinsic_vrgather_vi_nxv8i32_nxv8i32:
4112 ; CHECK:       # %bb.0: # %entry
4113 ; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, ma
4114 ; CHECK-NEXT:    vrgather.vi v12, v8, 9
4115 ; CHECK-NEXT:    vmv.v.v v8, v12
4116 ; CHECK-NEXT:    ret
4117 entry:
4118   %a = call <vscale x 8 x i32> @llvm.riscv.vrgather.vx.nxv8i32.iXLen(
4119     <vscale x 8 x i32> undef,
4120     <vscale x 8 x i32> %0,
4121     iXLen 9,
4122     iXLen %1)
4124   ret <vscale x 8 x i32> %a
4127 define <vscale x 8 x i32> @intrinsic_vrgather_mask_vi_nxv8i32_nxv8i32(<vscale x 8 x i32> %0, <vscale x 8 x i32> %1, <vscale x 8 x i1> %2, iXLen %3) nounwind {
4128 ; CHECK-LABEL: intrinsic_vrgather_mask_vi_nxv8i32_nxv8i32:
4129 ; CHECK:       # %bb.0: # %entry
4130 ; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, mu
4131 ; CHECK-NEXT:    vrgather.vi v8, v12, 9, v0.t
4132 ; CHECK-NEXT:    ret
4133 entry:
4134   %a = call <vscale x 8 x i32> @llvm.riscv.vrgather.vx.mask.nxv8i32.iXLen(
4135     <vscale x 8 x i32> %0,
4136     <vscale x 8 x i32> %1,
4137     iXLen 9,
4138     <vscale x 8 x i1> %2,
4139     iXLen %3, iXLen 1)
4141   ret <vscale x 8 x i32> %a
4144 define <vscale x 16 x i32> @intrinsic_vrgather_vi_nxv16i32_nxv16i32(<vscale x 16 x i32> %0, iXLen %1) nounwind {
4145 ; CHECK-LABEL: intrinsic_vrgather_vi_nxv16i32_nxv16i32:
4146 ; CHECK:       # %bb.0: # %entry
4147 ; CHECK-NEXT:    vsetvli zero, a0, e32, m8, ta, ma
4148 ; CHECK-NEXT:    vrgather.vi v16, v8, 9
4149 ; CHECK-NEXT:    vmv.v.v v8, v16
4150 ; CHECK-NEXT:    ret
4151 entry:
4152   %a = call <vscale x 16 x i32> @llvm.riscv.vrgather.vx.nxv16i32.iXLen(
4153     <vscale x 16 x i32> undef,
4154     <vscale x 16 x i32> %0,
4155     iXLen 9,
4156     iXLen %1)
4158   ret <vscale x 16 x i32> %a
4161 define <vscale x 16 x i32> @intrinsic_vrgather_mask_vi_nxv16i32_nxv16i32(<vscale x 16 x i32> %0, <vscale x 16 x i32> %1, <vscale x 16 x i1> %2, iXLen %3) nounwind {
4162 ; CHECK-LABEL: intrinsic_vrgather_mask_vi_nxv16i32_nxv16i32:
4163 ; CHECK:       # %bb.0: # %entry
4164 ; CHECK-NEXT:    vsetvli zero, a0, e32, m8, ta, mu
4165 ; CHECK-NEXT:    vrgather.vi v8, v16, 9, v0.t
4166 ; CHECK-NEXT:    ret
4167 entry:
4168   %a = call <vscale x 16 x i32> @llvm.riscv.vrgather.vx.mask.nxv16i32.iXLen(
4169     <vscale x 16 x i32> %0,
4170     <vscale x 16 x i32> %1,
4171     iXLen 9,
4172     <vscale x 16 x i1> %2,
4173     iXLen %3, iXLen 1)
4175   ret <vscale x 16 x i32> %a
4178 define <vscale x 1 x i64> @intrinsic_vrgather_vi_nxv1i64_nxv1i64(<vscale x 1 x i64> %0, iXLen %1) nounwind {
4179 ; CHECK-LABEL: intrinsic_vrgather_vi_nxv1i64_nxv1i64:
4180 ; CHECK:       # %bb.0: # %entry
4181 ; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
4182 ; CHECK-NEXT:    vrgather.vi v9, v8, 9
4183 ; CHECK-NEXT:    vmv.v.v v8, v9
4184 ; CHECK-NEXT:    ret
4185 entry:
4186   %a = call <vscale x 1 x i64> @llvm.riscv.vrgather.vx.nxv1i64.iXLen(
4187     <vscale x 1 x i64> undef,
4188     <vscale x 1 x i64> %0,
4189     iXLen 9,
4190     iXLen %1)
4192   ret <vscale x 1 x i64> %a
4195 define <vscale x 1 x i64> @intrinsic_vrgather_mask_vi_nxv1i64_nxv1i64(<vscale x 1 x i64> %0, <vscale x 1 x i64> %1, <vscale x 1 x i1> %2, iXLen %3) nounwind {
4196 ; CHECK-LABEL: intrinsic_vrgather_mask_vi_nxv1i64_nxv1i64:
4197 ; CHECK:       # %bb.0: # %entry
4198 ; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, mu
4199 ; CHECK-NEXT:    vrgather.vi v8, v9, 9, v0.t
4200 ; CHECK-NEXT:    ret
4201 entry:
4202   %a = call <vscale x 1 x i64> @llvm.riscv.vrgather.vx.mask.nxv1i64.iXLen(
4203     <vscale x 1 x i64> %0,
4204     <vscale x 1 x i64> %1,
4205     iXLen 9,
4206     <vscale x 1 x i1> %2,
4207     iXLen %3, iXLen 1)
4209   ret <vscale x 1 x i64> %a
4212 define <vscale x 2 x i64> @intrinsic_vrgather_vi_nxv2i64_nxv2i64(<vscale x 2 x i64> %0, iXLen %1) nounwind {
4213 ; CHECK-LABEL: intrinsic_vrgather_vi_nxv2i64_nxv2i64:
4214 ; CHECK:       # %bb.0: # %entry
4215 ; CHECK-NEXT:    vsetvli zero, a0, e64, m2, ta, ma
4216 ; CHECK-NEXT:    vrgather.vi v10, v8, 9
4217 ; CHECK-NEXT:    vmv.v.v v8, v10
4218 ; CHECK-NEXT:    ret
4219 entry:
4220   %a = call <vscale x 2 x i64> @llvm.riscv.vrgather.vx.nxv2i64.iXLen(
4221     <vscale x 2 x i64> undef,
4222     <vscale x 2 x i64> %0,
4223     iXLen 9,
4224     iXLen %1)
4226   ret <vscale x 2 x i64> %a
4229 define <vscale x 2 x i64> @intrinsic_vrgather_mask_vi_nxv2i64_nxv2i64(<vscale x 2 x i64> %0, <vscale x 2 x i64> %1, <vscale x 2 x i1> %2, iXLen %3) nounwind {
4230 ; CHECK-LABEL: intrinsic_vrgather_mask_vi_nxv2i64_nxv2i64:
4231 ; CHECK:       # %bb.0: # %entry
4232 ; CHECK-NEXT:    vsetvli zero, a0, e64, m2, ta, mu
4233 ; CHECK-NEXT:    vrgather.vi v8, v10, 9, v0.t
4234 ; CHECK-NEXT:    ret
4235 entry:
4236   %a = call <vscale x 2 x i64> @llvm.riscv.vrgather.vx.mask.nxv2i64.iXLen(
4237     <vscale x 2 x i64> %0,
4238     <vscale x 2 x i64> %1,
4239     iXLen 9,
4240     <vscale x 2 x i1> %2,
4241     iXLen %3, iXLen 1)
4243   ret <vscale x 2 x i64> %a
4246 define <vscale x 4 x i64> @intrinsic_vrgather_vi_nxv4i64_nxv4i64(<vscale x 4 x i64> %0, iXLen %1) nounwind {
4247 ; CHECK-LABEL: intrinsic_vrgather_vi_nxv4i64_nxv4i64:
4248 ; CHECK:       # %bb.0: # %entry
4249 ; CHECK-NEXT:    vsetvli zero, a0, e64, m4, ta, ma
4250 ; CHECK-NEXT:    vrgather.vi v12, v8, 9
4251 ; CHECK-NEXT:    vmv.v.v v8, v12
4252 ; CHECK-NEXT:    ret
4253 entry:
4254   %a = call <vscale x 4 x i64> @llvm.riscv.vrgather.vx.nxv4i64.iXLen(
4255     <vscale x 4 x i64> undef,
4256     <vscale x 4 x i64> %0,
4257     iXLen 9,
4258     iXLen %1)
4260   ret <vscale x 4 x i64> %a
4263 define <vscale x 4 x i64> @intrinsic_vrgather_mask_vi_nxv4i64_nxv4i64(<vscale x 4 x i64> %0, <vscale x 4 x i64> %1, <vscale x 4 x i1> %2, iXLen %3) nounwind {
4264 ; CHECK-LABEL: intrinsic_vrgather_mask_vi_nxv4i64_nxv4i64:
4265 ; CHECK:       # %bb.0: # %entry
4266 ; CHECK-NEXT:    vsetvli zero, a0, e64, m4, ta, mu
4267 ; CHECK-NEXT:    vrgather.vi v8, v12, 9, v0.t
4268 ; CHECK-NEXT:    ret
4269 entry:
4270   %a = call <vscale x 4 x i64> @llvm.riscv.vrgather.vx.mask.nxv4i64.iXLen(
4271     <vscale x 4 x i64> %0,
4272     <vscale x 4 x i64> %1,
4273     iXLen 9,
4274     <vscale x 4 x i1> %2,
4275     iXLen %3, iXLen 1)
4277   ret <vscale x 4 x i64> %a
4280 define <vscale x 8 x i64> @intrinsic_vrgather_vi_nxv8i64_nxv8i64(<vscale x 8 x i64> %0, iXLen %1) nounwind {
4281 ; CHECK-LABEL: intrinsic_vrgather_vi_nxv8i64_nxv8i64:
4282 ; CHECK:       # %bb.0: # %entry
4283 ; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma
4284 ; CHECK-NEXT:    vrgather.vi v16, v8, 9
4285 ; CHECK-NEXT:    vmv.v.v v8, v16
4286 ; CHECK-NEXT:    ret
4287 entry:
4288   %a = call <vscale x 8 x i64> @llvm.riscv.vrgather.vx.nxv8i64.iXLen(
4289     <vscale x 8 x i64> undef,
4290     <vscale x 8 x i64> %0,
4291     iXLen 9,
4292     iXLen %1)
4294   ret <vscale x 8 x i64> %a
4297 define <vscale x 8 x i64> @intrinsic_vrgather_mask_vi_nxv8i64_nxv8i64(<vscale x 8 x i64> %0, <vscale x 8 x i64> %1, <vscale x 8 x i1> %2, iXLen %3) nounwind {
4298 ; CHECK-LABEL: intrinsic_vrgather_mask_vi_nxv8i64_nxv8i64:
4299 ; CHECK:       # %bb.0: # %entry
4300 ; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, mu
4301 ; CHECK-NEXT:    vrgather.vi v8, v16, 9, v0.t
4302 ; CHECK-NEXT:    ret
4303 entry:
4304   %a = call <vscale x 8 x i64> @llvm.riscv.vrgather.vx.mask.nxv8i64.iXLen(
4305     <vscale x 8 x i64> %0,
4306     <vscale x 8 x i64> %1,
4307     iXLen 9,
4308     <vscale x 8 x i1> %2,
4309     iXLen %3, iXLen 1)
4311   ret <vscale x 8 x i64> %a
4314 define <vscale x 1 x half> @intrinsic_vrgather_vi_nxv1f16_nxv1f16(<vscale x 1 x half> %0, iXLen %1) nounwind {
4315 ; CHECK-LABEL: intrinsic_vrgather_vi_nxv1f16_nxv1f16:
4316 ; CHECK:       # %bb.0: # %entry
4317 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma
4318 ; CHECK-NEXT:    vrgather.vi v9, v8, 9
4319 ; CHECK-NEXT:    vmv1r.v v8, v9
4320 ; CHECK-NEXT:    ret
4321 entry:
4322   %a = call <vscale x 1 x half> @llvm.riscv.vrgather.vx.nxv1f16.iXLen(
4323     <vscale x 1 x half> undef,
4324     <vscale x 1 x half> %0,
4325     iXLen 9,
4326     iXLen %1)
4328   ret <vscale x 1 x half> %a
4331 define <vscale x 1 x half> @intrinsic_vrgather_mask_vi_nxv1f16_nxv1f16(<vscale x 1 x half> %0, <vscale x 1 x half> %1, <vscale x 1 x i1> %2, iXLen %3) nounwind {
4332 ; CHECK-LABEL: intrinsic_vrgather_mask_vi_nxv1f16_nxv1f16:
4333 ; CHECK:       # %bb.0: # %entry
4334 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, ta, mu
4335 ; CHECK-NEXT:    vrgather.vi v8, v9, 9, v0.t
4336 ; CHECK-NEXT:    ret
4337 entry:
4338   %a = call <vscale x 1 x half> @llvm.riscv.vrgather.vx.mask.nxv1f16.iXLen(
4339     <vscale x 1 x half> %0,
4340     <vscale x 1 x half> %1,
4341     iXLen 9,
4342     <vscale x 1 x i1> %2,
4343     iXLen %3, iXLen 1)
4345   ret <vscale x 1 x half> %a
4348 define <vscale x 2 x half> @intrinsic_vrgather_vi_nxv2f16_nxv2f16(<vscale x 2 x half> %0, iXLen %1) nounwind {
4349 ; CHECK-LABEL: intrinsic_vrgather_vi_nxv2f16_nxv2f16:
4350 ; CHECK:       # %bb.0: # %entry
4351 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf2, ta, ma
4352 ; CHECK-NEXT:    vrgather.vi v9, v8, 9
4353 ; CHECK-NEXT:    vmv1r.v v8, v9
4354 ; CHECK-NEXT:    ret
4355 entry:
4356   %a = call <vscale x 2 x half> @llvm.riscv.vrgather.vx.nxv2f16.iXLen(
4357     <vscale x 2 x half> undef,
4358     <vscale x 2 x half> %0,
4359     iXLen 9,
4360     iXLen %1)
4362   ret <vscale x 2 x half> %a
4365 define <vscale x 2 x half> @intrinsic_vrgather_mask_vi_nxv2f16_nxv2f16(<vscale x 2 x half> %0, <vscale x 2 x half> %1, <vscale x 2 x i1> %2, iXLen %3) nounwind {
4366 ; CHECK-LABEL: intrinsic_vrgather_mask_vi_nxv2f16_nxv2f16:
4367 ; CHECK:       # %bb.0: # %entry
4368 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf2, ta, mu
4369 ; CHECK-NEXT:    vrgather.vi v8, v9, 9, v0.t
4370 ; CHECK-NEXT:    ret
4371 entry:
4372   %a = call <vscale x 2 x half> @llvm.riscv.vrgather.vx.mask.nxv2f16.iXLen(
4373     <vscale x 2 x half> %0,
4374     <vscale x 2 x half> %1,
4375     iXLen 9,
4376     <vscale x 2 x i1> %2,
4377     iXLen %3, iXLen 1)
4379   ret <vscale x 2 x half> %a
4382 define <vscale x 4 x half> @intrinsic_vrgather_vi_nxv4f16_nxv4f16(<vscale x 4 x half> %0, iXLen %1) nounwind {
4383 ; CHECK-LABEL: intrinsic_vrgather_vi_nxv4f16_nxv4f16:
4384 ; CHECK:       # %bb.0: # %entry
4385 ; CHECK-NEXT:    vsetvli zero, a0, e16, m1, ta, ma
4386 ; CHECK-NEXT:    vrgather.vi v9, v8, 9
4387 ; CHECK-NEXT:    vmv.v.v v8, v9
4388 ; CHECK-NEXT:    ret
4389 entry:
4390   %a = call <vscale x 4 x half> @llvm.riscv.vrgather.vx.nxv4f16.iXLen(
4391     <vscale x 4 x half> undef,
4392     <vscale x 4 x half> %0,
4393     iXLen 9,
4394     iXLen %1)
4396   ret <vscale x 4 x half> %a
4399 define <vscale x 4 x half> @intrinsic_vrgather_mask_vi_nxv4f16_nxv4f16(<vscale x 4 x half> %0, <vscale x 4 x half> %1, <vscale x 4 x i1> %2, iXLen %3) nounwind {
4400 ; CHECK-LABEL: intrinsic_vrgather_mask_vi_nxv4f16_nxv4f16:
4401 ; CHECK:       # %bb.0: # %entry
4402 ; CHECK-NEXT:    vsetvli zero, a0, e16, m1, ta, mu
4403 ; CHECK-NEXT:    vrgather.vi v8, v9, 9, v0.t
4404 ; CHECK-NEXT:    ret
4405 entry:
4406   %a = call <vscale x 4 x half> @llvm.riscv.vrgather.vx.mask.nxv4f16.iXLen(
4407     <vscale x 4 x half> %0,
4408     <vscale x 4 x half> %1,
4409     iXLen 9,
4410     <vscale x 4 x i1> %2,
4411     iXLen %3, iXLen 1)
4413   ret <vscale x 4 x half> %a
4416 define <vscale x 8 x half> @intrinsic_vrgather_vi_nxv8f16_nxv8f16(<vscale x 8 x half> %0, iXLen %1) nounwind {
4417 ; CHECK-LABEL: intrinsic_vrgather_vi_nxv8f16_nxv8f16:
4418 ; CHECK:       # %bb.0: # %entry
4419 ; CHECK-NEXT:    vsetvli zero, a0, e16, m2, ta, ma
4420 ; CHECK-NEXT:    vrgather.vi v10, v8, 9
4421 ; CHECK-NEXT:    vmv.v.v v8, v10
4422 ; CHECK-NEXT:    ret
4423 entry:
4424   %a = call <vscale x 8 x half> @llvm.riscv.vrgather.vx.nxv8f16.iXLen(
4425     <vscale x 8 x half> undef,
4426     <vscale x 8 x half> %0,
4427     iXLen 9,
4428     iXLen %1)
4430   ret <vscale x 8 x half> %a
4433 define <vscale x 8 x half> @intrinsic_vrgather_mask_vi_nxv8f16_nxv8f16(<vscale x 8 x half> %0, <vscale x 8 x half> %1, <vscale x 8 x i1> %2, iXLen %3) nounwind {
4434 ; CHECK-LABEL: intrinsic_vrgather_mask_vi_nxv8f16_nxv8f16:
4435 ; CHECK:       # %bb.0: # %entry
4436 ; CHECK-NEXT:    vsetvli zero, a0, e16, m2, ta, mu
4437 ; CHECK-NEXT:    vrgather.vi v8, v10, 9, v0.t
4438 ; CHECK-NEXT:    ret
4439 entry:
4440   %a = call <vscale x 8 x half> @llvm.riscv.vrgather.vx.mask.nxv8f16.iXLen(
4441     <vscale x 8 x half> %0,
4442     <vscale x 8 x half> %1,
4443     iXLen 9,
4444     <vscale x 8 x i1> %2,
4445     iXLen %3, iXLen 1)
4447   ret <vscale x 8 x half> %a
4450 define <vscale x 16 x half> @intrinsic_vrgather_vi_nxv16f16_nxv16f16(<vscale x 16 x half> %0, iXLen %1) nounwind {
4451 ; CHECK-LABEL: intrinsic_vrgather_vi_nxv16f16_nxv16f16:
4452 ; CHECK:       # %bb.0: # %entry
4453 ; CHECK-NEXT:    vsetvli zero, a0, e16, m4, ta, ma
4454 ; CHECK-NEXT:    vrgather.vi v12, v8, 9
4455 ; CHECK-NEXT:    vmv.v.v v8, v12
4456 ; CHECK-NEXT:    ret
4457 entry:
4458   %a = call <vscale x 16 x half> @llvm.riscv.vrgather.vx.nxv16f16.iXLen(
4459     <vscale x 16 x half> undef,
4460     <vscale x 16 x half> %0,
4461     iXLen 9,
4462     iXLen %1)
4464   ret <vscale x 16 x half> %a
4467 define <vscale x 16 x half> @intrinsic_vrgather_mask_vi_nxv16f16_nxv16f16(<vscale x 16 x half> %0, <vscale x 16 x half> %1, <vscale x 16 x i1> %2, iXLen %3) nounwind {
4468 ; CHECK-LABEL: intrinsic_vrgather_mask_vi_nxv16f16_nxv16f16:
4469 ; CHECK:       # %bb.0: # %entry
4470 ; CHECK-NEXT:    vsetvli zero, a0, e16, m4, ta, mu
4471 ; CHECK-NEXT:    vrgather.vi v8, v12, 9, v0.t
4472 ; CHECK-NEXT:    ret
4473 entry:
4474   %a = call <vscale x 16 x half> @llvm.riscv.vrgather.vx.mask.nxv16f16.iXLen(
4475     <vscale x 16 x half> %0,
4476     <vscale x 16 x half> %1,
4477     iXLen 9,
4478     <vscale x 16 x i1> %2,
4479     iXLen %3, iXLen 1)
4481   ret <vscale x 16 x half> %a
4484 define <vscale x 32 x half> @intrinsic_vrgather_vi_nxv32f16_nxv32f16(<vscale x 32 x half> %0, iXLen %1) nounwind {
4485 ; CHECK-LABEL: intrinsic_vrgather_vi_nxv32f16_nxv32f16:
4486 ; CHECK:       # %bb.0: # %entry
4487 ; CHECK-NEXT:    vsetvli zero, a0, e16, m8, ta, ma
4488 ; CHECK-NEXT:    vrgather.vi v16, v8, 9
4489 ; CHECK-NEXT:    vmv.v.v v8, v16
4490 ; CHECK-NEXT:    ret
4491 entry:
4492   %a = call <vscale x 32 x half> @llvm.riscv.vrgather.vx.nxv32f16.iXLen(
4493     <vscale x 32 x half> undef,
4494     <vscale x 32 x half> %0,
4495     iXLen 9,
4496     iXLen %1)
4498   ret <vscale x 32 x half> %a
4501 define <vscale x 32 x half> @intrinsic_vrgather_mask_vi_nxv32f16_nxv32f16(<vscale x 32 x half> %0, <vscale x 32 x half> %1, <vscale x 32 x i1> %2, iXLen %3) nounwind {
4502 ; CHECK-LABEL: intrinsic_vrgather_mask_vi_nxv32f16_nxv32f16:
4503 ; CHECK:       # %bb.0: # %entry
4504 ; CHECK-NEXT:    vsetvli zero, a0, e16, m8, ta, mu
4505 ; CHECK-NEXT:    vrgather.vi v8, v16, 9, v0.t
4506 ; CHECK-NEXT:    ret
4507 entry:
4508   %a = call <vscale x 32 x half> @llvm.riscv.vrgather.vx.mask.nxv32f16.iXLen(
4509     <vscale x 32 x half> %0,
4510     <vscale x 32 x half> %1,
4511     iXLen 9,
4512     <vscale x 32 x i1> %2,
4513     iXLen %3, iXLen 1)
4515   ret <vscale x 32 x half> %a
4518 define <vscale x 1 x float> @intrinsic_vrgather_vi_nxv1f32_nxv1f32(<vscale x 1 x float> %0, iXLen %1) nounwind {
4519 ; CHECK-LABEL: intrinsic_vrgather_vi_nxv1f32_nxv1f32:
4520 ; CHECK:       # %bb.0: # %entry
4521 ; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma
4522 ; CHECK-NEXT:    vrgather.vi v9, v8, 9
4523 ; CHECK-NEXT:    vmv1r.v v8, v9
4524 ; CHECK-NEXT:    ret
4525 entry:
4526   %a = call <vscale x 1 x float> @llvm.riscv.vrgather.vx.nxv1f32.iXLen(
4527     <vscale x 1 x float> undef,
4528     <vscale x 1 x float> %0,
4529     iXLen 9,
4530     iXLen %1)
4532   ret <vscale x 1 x float> %a
4535 define <vscale x 1 x float> @intrinsic_vrgather_mask_vi_nxv1f32_nxv1f32(<vscale x 1 x float> %0, <vscale x 1 x float> %1, <vscale x 1 x i1> %2, iXLen %3) nounwind {
4536 ; CHECK-LABEL: intrinsic_vrgather_mask_vi_nxv1f32_nxv1f32:
4537 ; CHECK:       # %bb.0: # %entry
4538 ; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, mu
4539 ; CHECK-NEXT:    vrgather.vi v8, v9, 9, v0.t
4540 ; CHECK-NEXT:    ret
4541 entry:
4542   %a = call <vscale x 1 x float> @llvm.riscv.vrgather.vx.mask.nxv1f32.iXLen(
4543     <vscale x 1 x float> %0,
4544     <vscale x 1 x float> %1,
4545     iXLen 9,
4546     <vscale x 1 x i1> %2,
4547     iXLen %3, iXLen 1)
4549   ret <vscale x 1 x float> %a
4552 define <vscale x 2 x float> @intrinsic_vrgather_vi_nxv2f32_nxv2f32(<vscale x 2 x float> %0, iXLen %1) nounwind {
4553 ; CHECK-LABEL: intrinsic_vrgather_vi_nxv2f32_nxv2f32:
4554 ; CHECK:       # %bb.0: # %entry
4555 ; CHECK-NEXT:    vsetvli zero, a0, e32, m1, ta, ma
4556 ; CHECK-NEXT:    vrgather.vi v9, v8, 9
4557 ; CHECK-NEXT:    vmv.v.v v8, v9
4558 ; CHECK-NEXT:    ret
4559 entry:
4560   %a = call <vscale x 2 x float> @llvm.riscv.vrgather.vx.nxv2f32.iXLen(
4561     <vscale x 2 x float> undef,
4562     <vscale x 2 x float> %0,
4563     iXLen 9,
4564     iXLen %1)
4566   ret <vscale x 2 x float> %a
4569 define <vscale x 2 x float> @intrinsic_vrgather_mask_vi_nxv2f32_nxv2f32(<vscale x 2 x float> %0, <vscale x 2 x float> %1, <vscale x 2 x i1> %2, iXLen %3) nounwind {
4570 ; CHECK-LABEL: intrinsic_vrgather_mask_vi_nxv2f32_nxv2f32:
4571 ; CHECK:       # %bb.0: # %entry
4572 ; CHECK-NEXT:    vsetvli zero, a0, e32, m1, ta, mu
4573 ; CHECK-NEXT:    vrgather.vi v8, v9, 9, v0.t
4574 ; CHECK-NEXT:    ret
4575 entry:
4576   %a = call <vscale x 2 x float> @llvm.riscv.vrgather.vx.mask.nxv2f32.iXLen(
4577     <vscale x 2 x float> %0,
4578     <vscale x 2 x float> %1,
4579     iXLen 9,
4580     <vscale x 2 x i1> %2,
4581     iXLen %3, iXLen 1)
4583   ret <vscale x 2 x float> %a
4586 define <vscale x 4 x float> @intrinsic_vrgather_vi_nxv4f32_nxv4f32(<vscale x 4 x float> %0, iXLen %1) nounwind {
4587 ; CHECK-LABEL: intrinsic_vrgather_vi_nxv4f32_nxv4f32:
4588 ; CHECK:       # %bb.0: # %entry
4589 ; CHECK-NEXT:    vsetvli zero, a0, e32, m2, ta, ma
4590 ; CHECK-NEXT:    vrgather.vi v10, v8, 9
4591 ; CHECK-NEXT:    vmv.v.v v8, v10
4592 ; CHECK-NEXT:    ret
4593 entry:
4594   %a = call <vscale x 4 x float> @llvm.riscv.vrgather.vx.nxv4f32.iXLen(
4595     <vscale x 4 x float> undef,
4596     <vscale x 4 x float> %0,
4597     iXLen 9,
4598     iXLen %1)
4600   ret <vscale x 4 x float> %a
4603 define <vscale x 4 x float> @intrinsic_vrgather_mask_vi_nxv4f32_nxv4f32(<vscale x 4 x float> %0, <vscale x 4 x float> %1, <vscale x 4 x i1> %2, iXLen %3) nounwind {
4604 ; CHECK-LABEL: intrinsic_vrgather_mask_vi_nxv4f32_nxv4f32:
4605 ; CHECK:       # %bb.0: # %entry
4606 ; CHECK-NEXT:    vsetvli zero, a0, e32, m2, ta, mu
4607 ; CHECK-NEXT:    vrgather.vi v8, v10, 9, v0.t
4608 ; CHECK-NEXT:    ret
4609 entry:
4610   %a = call <vscale x 4 x float> @llvm.riscv.vrgather.vx.mask.nxv4f32.iXLen(
4611     <vscale x 4 x float> %0,
4612     <vscale x 4 x float> %1,
4613     iXLen 9,
4614     <vscale x 4 x i1> %2,
4615     iXLen %3, iXLen 1)
4617   ret <vscale x 4 x float> %a
4620 define <vscale x 8 x float> @intrinsic_vrgather_vi_nxv8f32_nxv8f32(<vscale x 8 x float> %0, iXLen %1) nounwind {
4621 ; CHECK-LABEL: intrinsic_vrgather_vi_nxv8f32_nxv8f32:
4622 ; CHECK:       # %bb.0: # %entry
4623 ; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, ma
4624 ; CHECK-NEXT:    vrgather.vi v12, v8, 9
4625 ; CHECK-NEXT:    vmv.v.v v8, v12
4626 ; CHECK-NEXT:    ret
4627 entry:
4628   %a = call <vscale x 8 x float> @llvm.riscv.vrgather.vx.nxv8f32.iXLen(
4629     <vscale x 8 x float> undef,
4630     <vscale x 8 x float> %0,
4631     iXLen 9,
4632     iXLen %1)
4634   ret <vscale x 8 x float> %a
4637 define <vscale x 8 x float> @intrinsic_vrgather_mask_vi_nxv8f32_nxv8f32(<vscale x 8 x float> %0, <vscale x 8 x float> %1, <vscale x 8 x i1> %2, iXLen %3) nounwind {
4638 ; CHECK-LABEL: intrinsic_vrgather_mask_vi_nxv8f32_nxv8f32:
4639 ; CHECK:       # %bb.0: # %entry
4640 ; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, mu
4641 ; CHECK-NEXT:    vrgather.vi v8, v12, 9, v0.t
4642 ; CHECK-NEXT:    ret
4643 entry:
4644   %a = call <vscale x 8 x float> @llvm.riscv.vrgather.vx.mask.nxv8f32.iXLen(
4645     <vscale x 8 x float> %0,
4646     <vscale x 8 x float> %1,
4647     iXLen 9,
4648     <vscale x 8 x i1> %2,
4649     iXLen %3, iXLen 1)
4651   ret <vscale x 8 x float> %a
4654 define <vscale x 16 x float> @intrinsic_vrgather_vi_nxv16f32_nxv16f32(<vscale x 16 x float> %0, iXLen %1) nounwind {
4655 ; CHECK-LABEL: intrinsic_vrgather_vi_nxv16f32_nxv16f32:
4656 ; CHECK:       # %bb.0: # %entry
4657 ; CHECK-NEXT:    vsetvli zero, a0, e32, m8, ta, ma
4658 ; CHECK-NEXT:    vrgather.vi v16, v8, 9
4659 ; CHECK-NEXT:    vmv.v.v v8, v16
4660 ; CHECK-NEXT:    ret
4661 entry:
4662   %a = call <vscale x 16 x float> @llvm.riscv.vrgather.vx.nxv16f32.iXLen(
4663     <vscale x 16 x float> undef,
4664     <vscale x 16 x float> %0,
4665     iXLen 9,
4666     iXLen %1)
4668   ret <vscale x 16 x float> %a
4671 define <vscale x 16 x float> @intrinsic_vrgather_mask_vi_nxv16f32_nxv16f32(<vscale x 16 x float> %0, <vscale x 16 x float> %1, <vscale x 16 x i1> %2, iXLen %3) nounwind {
4672 ; CHECK-LABEL: intrinsic_vrgather_mask_vi_nxv16f32_nxv16f32:
4673 ; CHECK:       # %bb.0: # %entry
4674 ; CHECK-NEXT:    vsetvli zero, a0, e32, m8, ta, mu
4675 ; CHECK-NEXT:    vrgather.vi v8, v16, 9, v0.t
4676 ; CHECK-NEXT:    ret
4677 entry:
4678   %a = call <vscale x 16 x float> @llvm.riscv.vrgather.vx.mask.nxv16f32.iXLen(
4679     <vscale x 16 x float> %0,
4680     <vscale x 16 x float> %1,
4681     iXLen 9,
4682     <vscale x 16 x i1> %2,
4683     iXLen %3, iXLen 1)
4685   ret <vscale x 16 x float> %a
4688 define <vscale x 1 x double> @intrinsic_vrgather_vi_nxv1f64_nxv1f64(<vscale x 1 x double> %0, iXLen %1) nounwind {
4689 ; CHECK-LABEL: intrinsic_vrgather_vi_nxv1f64_nxv1f64:
4690 ; CHECK:       # %bb.0: # %entry
4691 ; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
4692 ; CHECK-NEXT:    vrgather.vi v9, v8, 9
4693 ; CHECK-NEXT:    vmv.v.v v8, v9
4694 ; CHECK-NEXT:    ret
4695 entry:
4696   %a = call <vscale x 1 x double> @llvm.riscv.vrgather.vx.nxv1f64.iXLen(
4697     <vscale x 1 x double> undef,
4698     <vscale x 1 x double> %0,
4699     iXLen 9,
4700     iXLen %1)
4702   ret <vscale x 1 x double> %a
4705 define <vscale x 1 x double> @intrinsic_vrgather_mask_vi_nxv1f64_nxv1f64(<vscale x 1 x double> %0, <vscale x 1 x double> %1, <vscale x 1 x i1> %2, iXLen %3) nounwind {
4706 ; CHECK-LABEL: intrinsic_vrgather_mask_vi_nxv1f64_nxv1f64:
4707 ; CHECK:       # %bb.0: # %entry
4708 ; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, mu
4709 ; CHECK-NEXT:    vrgather.vi v8, v9, 9, v0.t
4710 ; CHECK-NEXT:    ret
4711 entry:
4712   %a = call <vscale x 1 x double> @llvm.riscv.vrgather.vx.mask.nxv1f64.iXLen(
4713     <vscale x 1 x double> %0,
4714     <vscale x 1 x double> %1,
4715     iXLen 9,
4716     <vscale x 1 x i1> %2,
4717     iXLen %3, iXLen 1)
4719   ret <vscale x 1 x double> %a
4722 define <vscale x 2 x double> @intrinsic_vrgather_vi_nxv2f64_nxv2f64(<vscale x 2 x double> %0, iXLen %1) nounwind {
4723 ; CHECK-LABEL: intrinsic_vrgather_vi_nxv2f64_nxv2f64:
4724 ; CHECK:       # %bb.0: # %entry
4725 ; CHECK-NEXT:    vsetvli zero, a0, e64, m2, ta, ma
4726 ; CHECK-NEXT:    vrgather.vi v10, v8, 9
4727 ; CHECK-NEXT:    vmv.v.v v8, v10
4728 ; CHECK-NEXT:    ret
4729 entry:
4730   %a = call <vscale x 2 x double> @llvm.riscv.vrgather.vx.nxv2f64.iXLen(
4731     <vscale x 2 x double> undef,
4732     <vscale x 2 x double> %0,
4733     iXLen 9,
4734     iXLen %1)
4736   ret <vscale x 2 x double> %a
4739 define <vscale x 2 x double> @intrinsic_vrgather_mask_vi_nxv2f64_nxv2f64(<vscale x 2 x double> %0, <vscale x 2 x double> %1, <vscale x 2 x i1> %2, iXLen %3) nounwind {
4740 ; CHECK-LABEL: intrinsic_vrgather_mask_vi_nxv2f64_nxv2f64:
4741 ; CHECK:       # %bb.0: # %entry
4742 ; CHECK-NEXT:    vsetvli zero, a0, e64, m2, ta, mu
4743 ; CHECK-NEXT:    vrgather.vi v8, v10, 9, v0.t
4744 ; CHECK-NEXT:    ret
4745 entry:
4746   %a = call <vscale x 2 x double> @llvm.riscv.vrgather.vx.mask.nxv2f64.iXLen(
4747     <vscale x 2 x double> %0,
4748     <vscale x 2 x double> %1,
4749     iXLen 9,
4750     <vscale x 2 x i1> %2,
4751     iXLen %3, iXLen 1)
4753   ret <vscale x 2 x double> %a
4756 define <vscale x 4 x double> @intrinsic_vrgather_vi_nxv4f64_nxv4f64(<vscale x 4 x double> %0, iXLen %1) nounwind {
4757 ; CHECK-LABEL: intrinsic_vrgather_vi_nxv4f64_nxv4f64:
4758 ; CHECK:       # %bb.0: # %entry
4759 ; CHECK-NEXT:    vsetvli zero, a0, e64, m4, ta, ma
4760 ; CHECK-NEXT:    vrgather.vi v12, v8, 9
4761 ; CHECK-NEXT:    vmv.v.v v8, v12
4762 ; CHECK-NEXT:    ret
4763 entry:
4764   %a = call <vscale x 4 x double> @llvm.riscv.vrgather.vx.nxv4f64.iXLen(
4765     <vscale x 4 x double> undef,
4766     <vscale x 4 x double> %0,
4767     iXLen 9,
4768     iXLen %1)
4770   ret <vscale x 4 x double> %a
4773 define <vscale x 4 x double> @intrinsic_vrgather_mask_vi_nxv4f64_nxv4f64(<vscale x 4 x double> %0, <vscale x 4 x double> %1, <vscale x 4 x i1> %2, iXLen %3) nounwind {
4774 ; CHECK-LABEL: intrinsic_vrgather_mask_vi_nxv4f64_nxv4f64:
4775 ; CHECK:       # %bb.0: # %entry
4776 ; CHECK-NEXT:    vsetvli zero, a0, e64, m4, ta, mu
4777 ; CHECK-NEXT:    vrgather.vi v8, v12, 9, v0.t
4778 ; CHECK-NEXT:    ret
4779 entry:
4780   %a = call <vscale x 4 x double> @llvm.riscv.vrgather.vx.mask.nxv4f64.iXLen(
4781     <vscale x 4 x double> %0,
4782     <vscale x 4 x double> %1,
4783     iXLen 9,
4784     <vscale x 4 x i1> %2,
4785     iXLen %3, iXLen 1)
4787   ret <vscale x 4 x double> %a
4790 define <vscale x 8 x double> @intrinsic_vrgather_vi_nxv8f64_nxv8f64(<vscale x 8 x double> %0, iXLen %1) nounwind {
4791 ; CHECK-LABEL: intrinsic_vrgather_vi_nxv8f64_nxv8f64:
4792 ; CHECK:       # %bb.0: # %entry
4793 ; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma
4794 ; CHECK-NEXT:    vrgather.vi v16, v8, 9
4795 ; CHECK-NEXT:    vmv.v.v v8, v16
4796 ; CHECK-NEXT:    ret
4797 entry:
4798   %a = call <vscale x 8 x double> @llvm.riscv.vrgather.vx.nxv8f64.iXLen(
4799     <vscale x 8 x double> undef,
4800     <vscale x 8 x double> %0,
4801     iXLen 9,
4802     iXLen %1)
4804   ret <vscale x 8 x double> %a
4807 define <vscale x 8 x double> @intrinsic_vrgather_mask_vi_nxv8f64_nxv8f64(<vscale x 8 x double> %0, <vscale x 8 x double> %1, <vscale x 8 x i1> %2, iXLen %3) nounwind {
4808 ; CHECK-LABEL: intrinsic_vrgather_mask_vi_nxv8f64_nxv8f64:
4809 ; CHECK:       # %bb.0: # %entry
4810 ; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, mu
4811 ; CHECK-NEXT:    vrgather.vi v8, v16, 9, v0.t
4812 ; CHECK-NEXT:    ret
4813 entry:
4814   %a = call <vscale x 8 x double> @llvm.riscv.vrgather.vx.mask.nxv8f64.iXLen(
4815     <vscale x 8 x double> %0,
4816     <vscale x 8 x double> %1,
4817     iXLen 9,
4818     <vscale x 8 x i1> %2,
4819     iXLen %3, iXLen 1)
4821   ret <vscale x 8 x double> %a
4824 declare <vscale x 1 x bfloat> @llvm.riscv.vrgather.vv.nxv1bf16.iXLen(
4825   <vscale x 1 x bfloat>,
4826   <vscale x 1 x bfloat>,
4827   <vscale x 1 x i16>,
4828   iXLen)
4830 define <vscale x 1 x bfloat> @intrinsic_vrgather_vv_nxv1bf16_nxv1bf16_nxv1i16(<vscale x 1 x bfloat> %0, <vscale x 1 x i16> %1, iXLen %2) nounwind {
4831 ; CHECK-LABEL: intrinsic_vrgather_vv_nxv1bf16_nxv1bf16_nxv1i16:
4832 ; CHECK:       # %bb.0: # %entry
4833 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma
4834 ; CHECK-NEXT:    vrgather.vv v10, v8, v9
4835 ; CHECK-NEXT:    vmv1r.v v8, v10
4836 ; CHECK-NEXT:    ret
4837 entry:
4838   %a = call <vscale x 1 x bfloat> @llvm.riscv.vrgather.vv.nxv1bf16.iXLen(
4839     <vscale x 1 x bfloat> undef,
4840     <vscale x 1 x bfloat> %0,
4841     <vscale x 1 x i16> %1,
4842     iXLen %2)
4844   ret <vscale x 1 x bfloat> %a
4847 declare <vscale x 1 x bfloat> @llvm.riscv.vrgather.vv.mask.nxv1bf16.iXLen(
4848   <vscale x 1 x bfloat>,
4849   <vscale x 1 x bfloat>,
4850   <vscale x 1 x i16>,
4851   <vscale x 1 x i1>,
4852   iXLen,
4853   iXLen)
4855 define <vscale x 1 x bfloat> @intrinsic_vrgather_mask_vv_nxv1bf16_nxv1bf16_nxv1i16(<vscale x 1 x bfloat> %0, <vscale x 1 x bfloat> %1, <vscale x 1 x i16> %2, <vscale x 1 x i1> %3, iXLen %4) nounwind {
4856 ; CHECK-LABEL: intrinsic_vrgather_mask_vv_nxv1bf16_nxv1bf16_nxv1i16:
4857 ; CHECK:       # %bb.0: # %entry
4858 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, ta, mu
4859 ; CHECK-NEXT:    vrgather.vv v8, v9, v10, v0.t
4860 ; CHECK-NEXT:    ret
4861 entry:
4862   %a = call <vscale x 1 x bfloat> @llvm.riscv.vrgather.vv.mask.nxv1bf16.iXLen(
4863     <vscale x 1 x bfloat> %0,
4864     <vscale x 1 x bfloat> %1,
4865     <vscale x 1 x i16> %2,
4866     <vscale x 1 x i1> %3,
4867     iXLen %4, iXLen 1)
4869   ret <vscale x 1 x bfloat> %a
4872 declare <vscale x 2 x bfloat> @llvm.riscv.vrgather.vv.nxv2bf16.iXLen(
4873   <vscale x 2 x bfloat>,
4874   <vscale x 2 x bfloat>,
4875   <vscale x 2 x i16>,
4876   iXLen)
4878 define <vscale x 2 x bfloat> @intrinsic_vrgather_vv_nxv2bf16_nxv2bf16_nxv2i16(<vscale x 2 x bfloat> %0, <vscale x 2 x i16> %1, iXLen %2) nounwind {
4879 ; CHECK-LABEL: intrinsic_vrgather_vv_nxv2bf16_nxv2bf16_nxv2i16:
4880 ; CHECK:       # %bb.0: # %entry
4881 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf2, ta, ma
4882 ; CHECK-NEXT:    vrgather.vv v10, v8, v9
4883 ; CHECK-NEXT:    vmv1r.v v8, v10
4884 ; CHECK-NEXT:    ret
4885 entry:
4886   %a = call <vscale x 2 x bfloat> @llvm.riscv.vrgather.vv.nxv2bf16.iXLen(
4887     <vscale x 2 x bfloat> undef,
4888     <vscale x 2 x bfloat> %0,
4889     <vscale x 2 x i16> %1,
4890     iXLen %2)
4892   ret <vscale x 2 x bfloat> %a
4895 declare <vscale x 2 x bfloat> @llvm.riscv.vrgather.vv.mask.nxv2bf16.iXLen(
4896   <vscale x 2 x bfloat>,
4897   <vscale x 2 x bfloat>,
4898   <vscale x 2 x i16>,
4899   <vscale x 2 x i1>,
4900   iXLen,
4901   iXLen)
4903 define <vscale x 2 x bfloat> @intrinsic_vrgather_mask_vv_nxv2bf16_nxv2bf16_nxv2i16(<vscale x 2 x bfloat> %0, <vscale x 2 x bfloat> %1, <vscale x 2 x i16> %2, <vscale x 2 x i1> %3, iXLen %4) nounwind {
4904 ; CHECK-LABEL: intrinsic_vrgather_mask_vv_nxv2bf16_nxv2bf16_nxv2i16:
4905 ; CHECK:       # %bb.0: # %entry
4906 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf2, ta, mu
4907 ; CHECK-NEXT:    vrgather.vv v8, v9, v10, v0.t
4908 ; CHECK-NEXT:    ret
4909 entry:
4910   %a = call <vscale x 2 x bfloat> @llvm.riscv.vrgather.vv.mask.nxv2bf16.iXLen(
4911     <vscale x 2 x bfloat> %0,
4912     <vscale x 2 x bfloat> %1,
4913     <vscale x 2 x i16> %2,
4914     <vscale x 2 x i1> %3,
4915     iXLen %4, iXLen 1)
4917   ret <vscale x 2 x bfloat> %a
4920 declare <vscale x 4 x bfloat> @llvm.riscv.vrgather.vv.nxv4bf16.iXLen(
4921   <vscale x 4 x bfloat>,
4922   <vscale x 4 x bfloat>,
4923   <vscale x 4 x i16>,
4924   iXLen)
4926 define <vscale x 4 x bfloat> @intrinsic_vrgather_vv_nxv4bf16_nxv4bf16_nxv4i16(<vscale x 4 x bfloat> %0, <vscale x 4 x i16> %1, iXLen %2) nounwind {
4927 ; CHECK-LABEL: intrinsic_vrgather_vv_nxv4bf16_nxv4bf16_nxv4i16:
4928 ; CHECK:       # %bb.0: # %entry
4929 ; CHECK-NEXT:    vsetvli zero, a0, e16, m1, ta, ma
4930 ; CHECK-NEXT:    vrgather.vv v10, v8, v9
4931 ; CHECK-NEXT:    vmv.v.v v8, v10
4932 ; CHECK-NEXT:    ret
4933 entry:
4934   %a = call <vscale x 4 x bfloat> @llvm.riscv.vrgather.vv.nxv4bf16.iXLen(
4935     <vscale x 4 x bfloat> undef,
4936     <vscale x 4 x bfloat> %0,
4937     <vscale x 4 x i16> %1,
4938     iXLen %2)
4940   ret <vscale x 4 x bfloat> %a
4943 declare <vscale x 4 x bfloat> @llvm.riscv.vrgather.vv.mask.nxv4bf16.iXLen(
4944   <vscale x 4 x bfloat>,
4945   <vscale x 4 x bfloat>,
4946   <vscale x 4 x i16>,
4947   <vscale x 4 x i1>,
4948   iXLen,
4949   iXLen)
4951 define <vscale x 4 x bfloat> @intrinsic_vrgather_mask_vv_nxv4bf16_nxv4bf16_nxv4i16(<vscale x 4 x bfloat> %0, <vscale x 4 x bfloat> %1, <vscale x 4 x i16> %2, <vscale x 4 x i1> %3, iXLen %4) nounwind {
4952 ; CHECK-LABEL: intrinsic_vrgather_mask_vv_nxv4bf16_nxv4bf16_nxv4i16:
4953 ; CHECK:       # %bb.0: # %entry
4954 ; CHECK-NEXT:    vsetvli zero, a0, e16, m1, ta, mu
4955 ; CHECK-NEXT:    vrgather.vv v8, v9, v10, v0.t
4956 ; CHECK-NEXT:    ret
4957 entry:
4958   %a = call <vscale x 4 x bfloat> @llvm.riscv.vrgather.vv.mask.nxv4bf16.iXLen(
4959     <vscale x 4 x bfloat> %0,
4960     <vscale x 4 x bfloat> %1,
4961     <vscale x 4 x i16> %2,
4962     <vscale x 4 x i1> %3,
4963     iXLen %4, iXLen 1)
4965   ret <vscale x 4 x bfloat> %a
4968 declare <vscale x 8 x bfloat> @llvm.riscv.vrgather.vv.nxv8bf16.iXLen(
4969   <vscale x 8 x bfloat>,
4970   <vscale x 8 x bfloat>,
4971   <vscale x 8 x i16>,
4972   iXLen)
4974 define <vscale x 8 x bfloat> @intrinsic_vrgather_vv_nxv8bf16_nxv8bf16_nxv8i16(<vscale x 8 x bfloat> %0, <vscale x 8 x i16> %1, iXLen %2) nounwind {
4975 ; CHECK-LABEL: intrinsic_vrgather_vv_nxv8bf16_nxv8bf16_nxv8i16:
4976 ; CHECK:       # %bb.0: # %entry
4977 ; CHECK-NEXT:    vsetvli zero, a0, e16, m2, ta, ma
4978 ; CHECK-NEXT:    vrgather.vv v12, v8, v10
4979 ; CHECK-NEXT:    vmv.v.v v8, v12
4980 ; CHECK-NEXT:    ret
4981 entry:
4982   %a = call <vscale x 8 x bfloat> @llvm.riscv.vrgather.vv.nxv8bf16.iXLen(
4983     <vscale x 8 x bfloat> undef,
4984     <vscale x 8 x bfloat> %0,
4985     <vscale x 8 x i16> %1,
4986     iXLen %2)
4988   ret <vscale x 8 x bfloat> %a
4991 declare <vscale x 8 x bfloat> @llvm.riscv.vrgather.vv.mask.nxv8bf16.iXLen(
4992   <vscale x 8 x bfloat>,
4993   <vscale x 8 x bfloat>,
4994   <vscale x 8 x i16>,
4995   <vscale x 8 x i1>,
4996   iXLen,
4997   iXLen)
4999 define <vscale x 8 x bfloat> @intrinsic_vrgather_mask_vv_nxv8bf16_nxv8bf16_nxv8i16(<vscale x 8 x bfloat> %0, <vscale x 8 x bfloat> %1, <vscale x 8 x i16> %2, <vscale x 8 x i1> %3, iXLen %4) nounwind {
5000 ; CHECK-LABEL: intrinsic_vrgather_mask_vv_nxv8bf16_nxv8bf16_nxv8i16:
5001 ; CHECK:       # %bb.0: # %entry
5002 ; CHECK-NEXT:    vsetvli zero, a0, e16, m2, ta, mu
5003 ; CHECK-NEXT:    vrgather.vv v8, v10, v12, v0.t
5004 ; CHECK-NEXT:    ret
5005 entry:
5006   %a = call <vscale x 8 x bfloat> @llvm.riscv.vrgather.vv.mask.nxv8bf16.iXLen(
5007     <vscale x 8 x bfloat> %0,
5008     <vscale x 8 x bfloat> %1,
5009     <vscale x 8 x i16> %2,
5010     <vscale x 8 x i1> %3,
5011     iXLen %4, iXLen 1)
5013   ret <vscale x 8 x bfloat> %a
5016 declare <vscale x 16 x bfloat> @llvm.riscv.vrgather.vv.nxv16bf16.iXLen(
5017   <vscale x 16 x bfloat>,
5018   <vscale x 16 x bfloat>,
5019   <vscale x 16 x i16>,
5020   iXLen)
5022 define <vscale x 16 x bfloat> @intrinsic_vrgather_vv_nxv16bf16_nxv16bf16_nxv16i16(<vscale x 16 x bfloat> %0, <vscale x 16 x i16> %1, iXLen %2) nounwind {
5023 ; CHECK-LABEL: intrinsic_vrgather_vv_nxv16bf16_nxv16bf16_nxv16i16:
5024 ; CHECK:       # %bb.0: # %entry
5025 ; CHECK-NEXT:    vsetvli zero, a0, e16, m4, ta, ma
5026 ; CHECK-NEXT:    vrgather.vv v16, v8, v12
5027 ; CHECK-NEXT:    vmv.v.v v8, v16
5028 ; CHECK-NEXT:    ret
5029 entry:
5030   %a = call <vscale x 16 x bfloat> @llvm.riscv.vrgather.vv.nxv16bf16.iXLen(
5031     <vscale x 16 x bfloat> undef,
5032     <vscale x 16 x bfloat> %0,
5033     <vscale x 16 x i16> %1,
5034     iXLen %2)
5036   ret <vscale x 16 x bfloat> %a
5039 declare <vscale x 16 x bfloat> @llvm.riscv.vrgather.vv.mask.nxv16bf16.iXLen(
5040   <vscale x 16 x bfloat>,
5041   <vscale x 16 x bfloat>,
5042   <vscale x 16 x i16>,
5043   <vscale x 16 x i1>,
5044   iXLen,
5045   iXLen)
5047 define <vscale x 16 x bfloat> @intrinsic_vrgather_mask_vv_nxv16bf16_nxv16bf16_nxv16i16(<vscale x 16 x bfloat> %0, <vscale x 16 x bfloat> %1, <vscale x 16 x i16> %2, <vscale x 16 x i1> %3, iXLen %4) nounwind {
5048 ; CHECK-LABEL: intrinsic_vrgather_mask_vv_nxv16bf16_nxv16bf16_nxv16i16:
5049 ; CHECK:       # %bb.0: # %entry
5050 ; CHECK-NEXT:    vsetvli zero, a0, e16, m4, ta, mu
5051 ; CHECK-NEXT:    vrgather.vv v8, v12, v16, v0.t
5052 ; CHECK-NEXT:    ret
5053 entry:
5054   %a = call <vscale x 16 x bfloat> @llvm.riscv.vrgather.vv.mask.nxv16bf16.iXLen(
5055     <vscale x 16 x bfloat> %0,
5056     <vscale x 16 x bfloat> %1,
5057     <vscale x 16 x i16> %2,
5058     <vscale x 16 x i1> %3,
5059     iXLen %4, iXLen 1)
5061   ret <vscale x 16 x bfloat> %a
5064 declare <vscale x 32 x bfloat> @llvm.riscv.vrgather.vv.nxv32bf16.iXLen(
5065   <vscale x 32 x bfloat>,
5066   <vscale x 32 x bfloat>,
5067   <vscale x 32 x i16>,
5068   iXLen)
5070 define <vscale x 32 x bfloat> @intrinsic_vrgather_vv_nxv32bf16_nxv32bf16_nxv32i16(<vscale x 32 x bfloat> %0, <vscale x 32 x i16> %1, iXLen %2) nounwind {
5071 ; CHECK-LABEL: intrinsic_vrgather_vv_nxv32bf16_nxv32bf16_nxv32i16:
5072 ; CHECK:       # %bb.0: # %entry
5073 ; CHECK-NEXT:    vsetvli zero, a0, e16, m8, ta, ma
5074 ; CHECK-NEXT:    vrgather.vv v24, v8, v16
5075 ; CHECK-NEXT:    vmv.v.v v8, v24
5076 ; CHECK-NEXT:    ret
5077 entry:
5078   %a = call <vscale x 32 x bfloat> @llvm.riscv.vrgather.vv.nxv32bf16.iXLen(
5079     <vscale x 32 x bfloat> undef,
5080     <vscale x 32 x bfloat> %0,
5081     <vscale x 32 x i16> %1,
5082     iXLen %2)
5084   ret <vscale x 32 x bfloat> %a
5087 declare <vscale x 32 x bfloat> @llvm.riscv.vrgather.vv.mask.nxv32bf16.iXLen(
5088   <vscale x 32 x bfloat>,
5089   <vscale x 32 x bfloat>,
5090   <vscale x 32 x i16>,
5091   <vscale x 32 x i1>,
5092   iXLen,
5093   iXLen)
5095 define <vscale x 32 x bfloat> @intrinsic_vrgather_mask_vv_nxv32bf16_nxv32bf16_nxv32i16(<vscale x 32 x bfloat> %0, <vscale x 32 x bfloat> %1, <vscale x 32 x i16> %2, <vscale x 32 x i1> %3, iXLen %4) nounwind {
5096 ; CHECK-LABEL: intrinsic_vrgather_mask_vv_nxv32bf16_nxv32bf16_nxv32i16:
5097 ; CHECK:       # %bb.0: # %entry
5098 ; CHECK-NEXT:    vl8re16.v v24, (a0)
5099 ; CHECK-NEXT:    vsetvli zero, a1, e16, m8, ta, mu
5100 ; CHECK-NEXT:    vrgather.vv v8, v16, v24, v0.t
5101 ; CHECK-NEXT:    ret
5102 entry:
5103   %a = call <vscale x 32 x bfloat> @llvm.riscv.vrgather.vv.mask.nxv32bf16.iXLen(
5104     <vscale x 32 x bfloat> %0,
5105     <vscale x 32 x bfloat> %1,
5106     <vscale x 32 x i16> %2,
5107     <vscale x 32 x i1> %3,
5108     iXLen %4, iXLen 1)
5110   ret <vscale x 32 x bfloat> %a
5113 declare <vscale x 1 x bfloat> @llvm.riscv.vrgather.vx.nxv1bf16.iXLen(
5114   <vscale x 1 x bfloat>,
5115   <vscale x 1 x bfloat>,
5116   iXLen,
5117   iXLen)
5119 define <vscale x 1 x bfloat> @intrinsic_vrgather_vx_nxv1bf16_nxv1bf16(<vscale x 1 x bfloat> %0, iXLen %1, iXLen %2) nounwind {
5120 ; CHECK-LABEL: intrinsic_vrgather_vx_nxv1bf16_nxv1bf16:
5121 ; CHECK:       # %bb.0: # %entry
5122 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, ma
5123 ; CHECK-NEXT:    vrgather.vx v9, v8, a0
5124 ; CHECK-NEXT:    vmv1r.v v8, v9
5125 ; CHECK-NEXT:    ret
5126 entry:
5127   %a = call <vscale x 1 x bfloat> @llvm.riscv.vrgather.vx.nxv1bf16.iXLen(
5128     <vscale x 1 x bfloat> undef,
5129     <vscale x 1 x bfloat> %0,
5130     iXLen %1,
5131     iXLen %2)
5133   ret <vscale x 1 x bfloat> %a
5136 declare <vscale x 1 x bfloat> @llvm.riscv.vrgather.vx.mask.nxv1bf16.iXLen(
5137   <vscale x 1 x bfloat>,
5138   <vscale x 1 x bfloat>,
5139   iXLen,
5140   <vscale x 1 x i1>,
5141   iXLen,
5142   iXLen)
5144 define <vscale x 1 x bfloat> @intrinsic_vrgather_mask_vx_nxv1bf16_nxv1bf16(<vscale x 1 x bfloat> %0, <vscale x 1 x bfloat> %1, iXLen %2, <vscale x 1 x i1> %3, iXLen %4) nounwind {
5145 ; CHECK-LABEL: intrinsic_vrgather_mask_vx_nxv1bf16_nxv1bf16:
5146 ; CHECK:       # %bb.0: # %entry
5147 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, mu
5148 ; CHECK-NEXT:    vrgather.vx v8, v9, a0, v0.t
5149 ; CHECK-NEXT:    ret
5150 entry:
5151   %a = call <vscale x 1 x bfloat> @llvm.riscv.vrgather.vx.mask.nxv1bf16.iXLen(
5152     <vscale x 1 x bfloat> %0,
5153     <vscale x 1 x bfloat> %1,
5154     iXLen %2,
5155     <vscale x 1 x i1> %3,
5156     iXLen %4, iXLen 1)
5158   ret <vscale x 1 x bfloat> %a
5161 declare <vscale x 2 x bfloat> @llvm.riscv.vrgather.vx.nxv2bf16.iXLen(
5162   <vscale x 2 x bfloat>,
5163   <vscale x 2 x bfloat>,
5164   iXLen,
5165   iXLen)
5167 define <vscale x 2 x bfloat> @intrinsic_vrgather_vx_nxv2bf16_nxv2bf16(<vscale x 2 x bfloat> %0, iXLen %1, iXLen %2) nounwind {
5168 ; CHECK-LABEL: intrinsic_vrgather_vx_nxv2bf16_nxv2bf16:
5169 ; CHECK:       # %bb.0: # %entry
5170 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, ma
5171 ; CHECK-NEXT:    vrgather.vx v9, v8, a0
5172 ; CHECK-NEXT:    vmv1r.v v8, v9
5173 ; CHECK-NEXT:    ret
5174 entry:
5175   %a = call <vscale x 2 x bfloat> @llvm.riscv.vrgather.vx.nxv2bf16.iXLen(
5176     <vscale x 2 x bfloat> undef,
5177     <vscale x 2 x bfloat> %0,
5178     iXLen %1,
5179     iXLen %2)
5181   ret <vscale x 2 x bfloat> %a
5184 declare <vscale x 2 x bfloat> @llvm.riscv.vrgather.vx.mask.nxv2bf16.iXLen(
5185   <vscale x 2 x bfloat>,
5186   <vscale x 2 x bfloat>,
5187   iXLen,
5188   <vscale x 2 x i1>,
5189   iXLen,
5190   iXLen)
5192 define <vscale x 2 x bfloat> @intrinsic_vrgather_mask_vx_nxv2bf16_nxv2bf16(<vscale x 2 x bfloat> %0, <vscale x 2 x bfloat> %1, iXLen %2, <vscale x 2 x i1> %3, iXLen %4) nounwind {
5193 ; CHECK-LABEL: intrinsic_vrgather_mask_vx_nxv2bf16_nxv2bf16:
5194 ; CHECK:       # %bb.0: # %entry
5195 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, mu
5196 ; CHECK-NEXT:    vrgather.vx v8, v9, a0, v0.t
5197 ; CHECK-NEXT:    ret
5198 entry:
5199   %a = call <vscale x 2 x bfloat> @llvm.riscv.vrgather.vx.mask.nxv2bf1bf16XLen(
5200     <vscale x 2 x bfloat> %0,
5201     <vscale x 2 x bfloat> %1,
5202     iXLen %2,
5203     <vscale x 2 x i1> %3,
5204     iXLen %4, iXLen 1)
5206   ret <vscale x 2 x bfloat> %a
5209 declare <vscale x 4 x bfloat> @llvm.riscv.vrgather.vx.nxv4bf16.iXLen(
5210   <vscale x 4 x bfloat>,
5211   <vscale x 4 x bfloat>,
5212   iXLen,
5213   iXLen)
5215 define <vscale x 4 x bfloat> @intrinsic_vrgather_vx_nxv4bf16_nxv4bf16(<vscale x 4 x bfloat> %0, iXLen %1, iXLen %2) nounwind {
5216 ; CHECK-LABEL: intrinsic_vrgather_vx_nxv4bf16_nxv4bf16:
5217 ; CHECK:       # %bb.0: # %entry
5218 ; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, ma
5219 ; CHECK-NEXT:    vrgather.vx v9, v8, a0
5220 ; CHECK-NEXT:    vmv.v.v v8, v9
5221 ; CHECK-NEXT:    ret
5222 entry:
5223   %a = call <vscale x 4 x bfloat> @llvm.riscv.vrgather.vx.nxv4bf16.iXLen(
5224     <vscale x 4 x bfloat> undef,
5225     <vscale x 4 x bfloat> %0,
5226     iXLen %1,
5227     iXLen %2)
5229   ret <vscale x 4 x bfloat> %a
5232 declare <vscale x 4 x bfloat> @llvm.riscv.vrgather.vx.mask.nxv4bf16.iXLen(
5233   <vscale x 4 x bfloat>,
5234   <vscale x 4 x bfloat>,
5235   iXLen,
5236   <vscale x 4 x i1>,
5237   iXLen,
5238   iXLen)
5240 define <vscale x 4 x bfloat> @intrinsic_vrgather_mask_vx_nxv4bf16_nxv4bf16(<vscale x 4 x bfloat> %0, <vscale x 4 x bfloat> %1, iXLen %2, <vscale x 4 x i1> %3, iXLen %4) nounwind {
5241 ; CHECK-LABEL: intrinsic_vrgather_mask_vx_nxv4bf16_nxv4bf16:
5242 ; CHECK:       # %bb.0: # %entry
5243 ; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, mu
5244 ; CHECK-NEXT:    vrgather.vx v8, v9, a0, v0.t
5245 ; CHECK-NEXT:    ret
5246 entry:
5247   %a = call <vscale x 4 x bfloat> @llvm.riscv.vrgather.vx.mask.nxv4bf16.iXLen(
5248     <vscale x 4 x bfloat> %0,
5249     <vscale x 4 x bfloat> %1,
5250     iXLen %2,
5251     <vscale x 4 x i1> %3,
5252     iXLen %4, iXLen 1)
5254   ret <vscale x 4 x bfloat> %a
5257 declare <vscale x 8 x bfloat> @llvm.riscv.vrgather.vx.nxv8bf16.iXLen(
5258   <vscale x 8 x bfloat>,
5259   <vscale x 8 x bfloat>,
5260   iXLen,
5261   iXLen)
5263 define <vscale x 8 x bfloat> @intrinsic_vrgather_vx_nxv8bf16_nxv8bf16(<vscale x 8 x bfloat> %0, iXLen %1, iXLen %2) nounwind {
5264 ; CHECK-LABEL: intrinsic_vrgather_vx_nxv8bf16_nxv8bf16:
5265 ; CHECK:       # %bb.0: # %entry
5266 ; CHECK-NEXT:    vsetvli zero, a1, e16, m2, ta, ma
5267 ; CHECK-NEXT:    vrgather.vx v10, v8, a0
5268 ; CHECK-NEXT:    vmv.v.v v8, v10
5269 ; CHECK-NEXT:    ret
5270 entry:
5271   %a = call <vscale x 8 x bfloat> @llvm.riscv.vrgather.vx.nxv8bf16.iXLen(
5272     <vscale x 8 x bfloat> undef,
5273     <vscale x 8 x bfloat> %0,
5274     iXLen %1,
5275     iXLen %2)
5277   ret <vscale x 8 x bfloat> %a
5280 declare <vscale x 8 x bfloat> @llvm.riscv.vrgather.vx.mask.nxv8bf16.iXLen(
5281   <vscale x 8 x bfloat>,
5282   <vscale x 8 x bfloat>,
5283   iXLen,
5284   <vscale x 8 x i1>,
5285   iXLen,
5286   iXLen)
5288 define <vscale x 8 x bfloat> @intrinsic_vrgather_mask_vx_nxv8bf16_nxv8bf16(<vscale x 8 x bfloat> %0, <vscale x 8 x bfloat> %1, iXLen %2, <vscale x 8 x i1> %3, iXLen %4) nounwind {
5289 ; CHECK-LABEL: intrinsic_vrgather_mask_vx_nxv8bf16_nxv8bf16:
5290 ; CHECK:       # %bb.0: # %entry
5291 ; CHECK-NEXT:    vsetvli zero, a1, e16, m2, ta, mu
5292 ; CHECK-NEXT:    vrgather.vx v8, v10, a0, v0.t
5293 ; CHECK-NEXT:    ret
5294 entry:
5295   %a = call <vscale x 8 x bfloat> @llvm.riscv.vrgather.vx.mask.nxv8bf16.iXLen(
5296     <vscale x 8 x bfloat> %0,
5297     <vscale x 8 x bfloat> %1,
5298     iXLen %2,
5299     <vscale x 8 x i1> %3,
5300     iXLen %4, iXLen 1)
5302   ret <vscale x 8 x bfloat> %a
5305 declare <vscale x 16 x bfloat> @llvm.riscv.vrgather.vx.nxv16bf16.iXLen(
5306   <vscale x 16 x bfloat>,
5307   <vscale x 16 x bfloat>,
5308   iXLen,
5309   iXLen)
5311 define <vscale x 16 x bfloat> @intrinsic_vrgather_vx_nxv16bf16_nxv16bf16(<vscale x 16 x bfloat> %0, iXLen %1, iXLen %2) nounwind {
5312 ; CHECK-LABEL: intrinsic_vrgather_vx_nxv16bf16_nxv16bf16:
5313 ; CHECK:       # %bb.0: # %entry
5314 ; CHECK-NEXT:    vsetvli zero, a1, e16, m4, ta, ma
5315 ; CHECK-NEXT:    vrgather.vx v12, v8, a0
5316 ; CHECK-NEXT:    vmv.v.v v8, v12
5317 ; CHECK-NEXT:    ret
5318 entry:
5319   %a = call <vscale x 16 x bfloat> @llvm.riscv.vrgather.vx.nxv16bf16.iXLen(
5320     <vscale x 16 x bfloat> undef,
5321     <vscale x 16 x bfloat> %0,
5322     iXLen %1,
5323     iXLen %2)
5325   ret <vscale x 16 x bfloat> %a
5328 declare <vscale x 16 x bfloat> @llvm.riscv.vrgather.vx.mask.nxv16bf16.iXLen(
5329   <vscale x 16 x bfloat>,
5330   <vscale x 16 x bfloat>,
5331   iXLen,
5332   <vscale x 16 x i1>,
5333   iXLen,
5334   iXLen)
5336 define <vscale x 16 x bfloat> @intrinsic_vrgather_mask_vx_nxv16bf16_nxv16bf16(<vscale x 16 x bfloat> %0, <vscale x 16 x bfloat> %1, iXLen %2, <vscale x 16 x i1> %3, iXLen %4) nounwind {
5337 ; CHECK-LABEL: intrinsic_vrgather_mask_vx_nxv16bf16_nxv16bf16:
5338 ; CHECK:       # %bb.0: # %entry
5339 ; CHECK-NEXT:    vsetvli zero, a1, e16, m4, ta, mu
5340 ; CHECK-NEXT:    vrgather.vx v8, v12, a0, v0.t
5341 ; CHECK-NEXT:    ret
5342 entry:
5343   %a = call <vscale x 16 x bfloat> @llvm.riscv.vrgather.vx.mask.nxv16bf16.iXLen(
5344     <vscale x 16 x bfloat> %0,
5345     <vscale x 16 x bfloat> %1,
5346     iXLen %2,
5347     <vscale x 16 x i1> %3,
5348     iXLen %4, iXLen 1)
5350   ret <vscale x 16 x bfloat> %a
5353 declare <vscale x 32 x bfloat> @llvm.riscv.vrgather.vx.nxv32bf16.iXLen(
5354   <vscale x 32 x bfloat>,
5355   <vscale x 32 x bfloat>,
5356   iXLen,
5357   iXLen)
5359 define <vscale x 32 x bfloat> @intrinsic_vrgather_vx_nxv32bf16_nxv32bf16(<vscale x 32 x bfloat> %0, iXLen %1, iXLen %2) nounwind {
5360 ; CHECK-LABEL: intrinsic_vrgather_vx_nxv32bf16_nxv32bf16:
5361 ; CHECK:       # %bb.0: # %entry
5362 ; CHECK-NEXT:    vsetvli zero, a1, e16, m8, ta, ma
5363 ; CHECK-NEXT:    vrgather.vx v16, v8, a0
5364 ; CHECK-NEXT:    vmv.v.v v8, v16
5365 ; CHECK-NEXT:    ret
5366 entry:
5367   %a = call <vscale x 32 x bfloat> @llvm.riscv.vrgather.vx.nxv32bf16.iXLen(
5368     <vscale x 32 x bfloat> undef,
5369     <vscale x 32 x bfloat> %0,
5370     iXLen %1,
5371     iXLen %2)
5373   ret <vscale x 32 x bfloat> %a
5376 declare <vscale x 32 x bfloat> @llvm.riscv.vrgather.vx.mask.nxv32bf16.iXLen(
5377   <vscale x 32 x bfloat>,
5378   <vscale x 32 x bfloat>,
5379   iXLen,
5380   <vscale x 32 x i1>,
5381   iXLen,
5382   iXLen)
5384 define <vscale x 32 x bfloat> @intrinsic_vrgather_mask_vx_nxv32bf16_nxv32bf16(<vscale x 32 x bfloat> %0, <vscale x 32 x bfloat> %1, iXLen %2, <vscale x 32 x i1> %3, iXLen %4) nounwind {
5385 ; CHECK-LABEL: intrinsic_vrgather_mask_vx_nxv32bf16_nxv32bf16:
5386 ; CHECK:       # %bb.0: # %entry
5387 ; CHECK-NEXT:    vsetvli zero, a1, e16, m8, ta, mu
5388 ; CHECK-NEXT:    vrgather.vx v8, v16, a0, v0.t
5389 ; CHECK-NEXT:    ret
5390 entry:
5391   %a = call <vscale x 32 x bfloat> @llvm.riscv.vrgather.vx.mask.nxv32bf16.iXLen(
5392     <vscale x 32 x bfloat> %0,
5393     <vscale x 32 x bfloat> %1,
5394     iXLen %2,
5395     <vscale x 32 x i1> %3,
5396     iXLen %4, iXLen 1)
5398   ret <vscale x 32 x bfloat> %a
5401 define <vscale x 1 x bfloat> @intrinsic_vrgather_vi_nxv1bf16_nxv1bf16(<vscale x 1 x bfloat> %0, iXLen %1) nounwind {
5402 ; CHECK-LABEL: intrinsic_vrgather_vi_nxv1bf16_nxv1bf16:
5403 ; CHECK:       # %bb.0: # %entry
5404 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma
5405 ; CHECK-NEXT:    vrgather.vi v9, v8, 9
5406 ; CHECK-NEXT:    vmv1r.v v8, v9
5407 ; CHECK-NEXT:    ret
5408 entry:
5409   %a = call <vscale x 1 x bfloat> @llvm.riscv.vrgather.vx.nxv1bf16.iXLen(
5410     <vscale x 1 x bfloat> undef,
5411     <vscale x 1 x bfloat> %0,
5412     iXLen 9,
5413     iXLen %1)
5415   ret <vscale x 1 x bfloat> %a
5418 define <vscale x 1 x bfloat> @intrinsic_vrgather_mask_vi_nxv1bf16_nxv1bf16(<vscale x 1 x bfloat> %0, <vscale x 1 x bfloat> %1, <vscale x 1 x i1> %2, iXLen %3) nounwind {
5419 ; CHECK-LABEL: intrinsic_vrgather_mask_vi_nxv1bf16_nxv1bf16:
5420 ; CHECK:       # %bb.0: # %entry
5421 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, ta, mu
5422 ; CHECK-NEXT:    vrgather.vi v8, v9, 9, v0.t
5423 ; CHECK-NEXT:    ret
5424 entry:
5425   %a = call <vscale x 1 x bfloat> @llvm.riscv.vrgather.vx.mask.nxv1bf16.iXLen(
5426     <vscale x 1 x bfloat> %0,
5427     <vscale x 1 x bfloat> %1,
5428     iXLen 9,
5429     <vscale x 1 x i1> %2,
5430     iXLen %3, iXLen 1)
5432   ret <vscale x 1 x bfloat> %a
5435 define <vscale x 2 x bfloat> @intrinsic_vrgather_vi_nxv2bf16_nxv2bf16(<vscale x 2 x bfloat> %0, iXLen %1) nounwind {
5436 ; CHECK-LABEL: intrinsic_vrgather_vi_nxv2bf16_nxv2bf16:
5437 ; CHECK:       # %bb.0: # %entry
5438 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf2, ta, ma
5439 ; CHECK-NEXT:    vrgather.vi v9, v8, 9
5440 ; CHECK-NEXT:    vmv1r.v v8, v9
5441 ; CHECK-NEXT:    ret
5442 entry:
5443   %a = call <vscale x 2 x bfloat> @llvm.riscv.vrgather.vx.nxv2bf16.iXLen(
5444     <vscale x 2 x bfloat> undef,
5445     <vscale x 2 x bfloat> %0,
5446     iXLen 9,
5447     iXLen %1)
5449   ret <vscale x 2 x bfloat> %a
5452 define <vscale x 2 x bfloat> @intrinsic_vrgather_mask_vi_nxv2bf16_nxv2bf16(<vscale x 2 x bfloat> %0, <vscale x 2 x bfloat> %1, <vscale x 2 x i1> %2, iXLen %3) nounwind {
5453 ; CHECK-LABEL: intrinsic_vrgather_mask_vi_nxv2bf16_nxv2bf16:
5454 ; CHECK:       # %bb.0: # %entry
5455 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf2, ta, mu
5456 ; CHECK-NEXT:    vrgather.vi v8, v9, 9, v0.t
5457 ; CHECK-NEXT:    ret
5458 entry:
5459   %a = call <vscale x 2 x bfloat> @llvm.riscv.vrgather.vx.mask.nxv2bf16.iXLen(
5460     <vscale x 2 x bfloat> %0,
5461     <vscale x 2 x bfloat> %1,
5462     iXLen 9,
5463     <vscale x 2 x i1> %2,
5464     iXLen %3, iXLen 1)
5466   ret <vscale x 2 x bfloat> %a
5469 define <vscale x 4 x bfloat> @intrinsic_vrgather_vi_nxv4bf16_nxv4bf16(<vscale x 4 x bfloat> %0, iXLen %1) nounwind {
5470 ; CHECK-LABEL: intrinsic_vrgather_vi_nxv4bf16_nxv4bf16:
5471 ; CHECK:       # %bb.0: # %entry
5472 ; CHECK-NEXT:    vsetvli zero, a0, e16, m1, ta, ma
5473 ; CHECK-NEXT:    vrgather.vi v9, v8, 9
5474 ; CHECK-NEXT:    vmv.v.v v8, v9
5475 ; CHECK-NEXT:    ret
5476 entry:
5477   %a = call <vscale x 4 x bfloat> @llvm.riscv.vrgather.vx.nxv4bf16.iXLen(
5478     <vscale x 4 x bfloat> undef,
5479     <vscale x 4 x bfloat> %0,
5480     iXLen 9,
5481     iXLen %1)
5483   ret <vscale x 4 x bfloat> %a
5486 define <vscale x 4 x bfloat> @intrinsic_vrgather_mask_vi_nxv4bf16_nxv4bf16(<vscale x 4 x bfloat> %0, <vscale x 4 x bfloat> %1, <vscale x 4 x i1> %2, iXLen %3) nounwind {
5487 ; CHECK-LABEL: intrinsic_vrgather_mask_vi_nxv4bf16_nxv4bf16:
5488 ; CHECK:       # %bb.0: # %entry
5489 ; CHECK-NEXT:    vsetvli zero, a0, e16, m1, ta, mu
5490 ; CHECK-NEXT:    vrgather.vi v8, v9, 9, v0.t
5491 ; CHECK-NEXT:    ret
5492 entry:
5493   %a = call <vscale x 4 x bfloat> @llvm.riscv.vrgather.vx.mask.nxv4bf16.iXLen(
5494     <vscale x 4 x bfloat> %0,
5495     <vscale x 4 x bfloat> %1,
5496     iXLen 9,
5497     <vscale x 4 x i1> %2,
5498     iXLen %3, iXLen 1)
5500   ret <vscale x 4 x bfloat> %a
5503 define <vscale x 8 x bfloat> @intrinsic_vrgather_vi_nxv8bf16_nxv8bf16(<vscale x 8 x bfloat> %0, iXLen %1) nounwind {
5504 ; CHECK-LABEL: intrinsic_vrgather_vi_nxv8bf16_nxv8bf16:
5505 ; CHECK:       # %bb.0: # %entry
5506 ; CHECK-NEXT:    vsetvli zero, a0, e16, m2, ta, ma
5507 ; CHECK-NEXT:    vrgather.vi v10, v8, 9
5508 ; CHECK-NEXT:    vmv.v.v v8, v10
5509 ; CHECK-NEXT:    ret
5510 entry:
5511   %a = call <vscale x 8 x bfloat> @llvm.riscv.vrgather.vx.nxv8bf16.iXLen(
5512     <vscale x 8 x bfloat> undef,
5513     <vscale x 8 x bfloat> %0,
5514     iXLen 9,
5515     iXLen %1)
5517   ret <vscale x 8 x bfloat> %a
5520 define <vscale x 8 x bfloat> @intrinsic_vrgather_mask_vi_nxv8bf16_nxv8bf16(<vscale x 8 x bfloat> %0, <vscale x 8 x bfloat> %1, <vscale x 8 x i1> %2, iXLen %3) nounwind {
5521 ; CHECK-LABEL: intrinsic_vrgather_mask_vi_nxv8bf16_nxv8bf16:
5522 ; CHECK:       # %bb.0: # %entry
5523 ; CHECK-NEXT:    vsetvli zero, a0, e16, m2, ta, mu
5524 ; CHECK-NEXT:    vrgather.vi v8, v10, 9, v0.t
5525 ; CHECK-NEXT:    ret
5526 entry:
5527   %a = call <vscale x 8 x bfloat> @llvm.riscv.vrgather.vx.mask.nxv8bf16.iXLen(
5528     <vscale x 8 x bfloat> %0,
5529     <vscale x 8 x bfloat> %1,
5530     iXLen 9,
5531     <vscale x 8 x i1> %2,
5532     iXLen %3, iXLen 1)
5534   ret <vscale x 8 x bfloat> %a
5537 define <vscale x 16 x bfloat> @intrinsic_vrgather_vi_nxv16bf16_nxv16bf16(<vscale x 16 x bfloat> %0, iXLen %1) nounwind {
5538 ; CHECK-LABEL: intrinsic_vrgather_vi_nxv16bf16_nxv16bf16:
5539 ; CHECK:       # %bb.0: # %entry
5540 ; CHECK-NEXT:    vsetvli zero, a0, e16, m4, ta, ma
5541 ; CHECK-NEXT:    vrgather.vi v12, v8, 9
5542 ; CHECK-NEXT:    vmv.v.v v8, v12
5543 ; CHECK-NEXT:    ret
5544 entry:
5545   %a = call <vscale x 16 x bfloat> @llvm.riscv.vrgather.vx.nxv16bf16.iXLen(
5546     <vscale x 16 x bfloat> undef,
5547     <vscale x 16 x bfloat> %0,
5548     iXLen 9,
5549     iXLen %1)
5551   ret <vscale x 16 x bfloat> %a
5554 define <vscale x 16 x bfloat> @intrinsic_vrgather_mask_vi_nxv16bf16_nxv16bf16(<vscale x 16 x bfloat> %0, <vscale x 16 x bfloat> %1, <vscale x 16 x i1> %2, iXLen %3) nounwind {
5555 ; CHECK-LABEL: intrinsic_vrgather_mask_vi_nxv16bf16_nxv16bf16:
5556 ; CHECK:       # %bb.0: # %entry
5557 ; CHECK-NEXT:    vsetvli zero, a0, e16, m4, ta, mu
5558 ; CHECK-NEXT:    vrgather.vi v8, v12, 9, v0.t
5559 ; CHECK-NEXT:    ret
5560 entry:
5561   %a = call <vscale x 16 x bfloat> @llvm.riscv.vrgather.vx.mask.nxv16bf16.iXLen(
5562     <vscale x 16 x bfloat> %0,
5563     <vscale x 16 x bfloat> %1,
5564     iXLen 9,
5565     <vscale x 16 x i1> %2,
5566     iXLen %3, iXLen 1)
5568   ret <vscale x 16 x bfloat> %a
5571 define <vscale x 32 x bfloat> @intrinsic_vrgather_vi_nxv32bf16_nxv32bf16(<vscale x 32 x bfloat> %0, iXLen %1) nounwind {
5572 ; CHECK-LABEL: intrinsic_vrgather_vi_nxv32bf16_nxv32bf16:
5573 ; CHECK:       # %bb.0: # %entry
5574 ; CHECK-NEXT:    vsetvli zero, a0, e16, m8, ta, ma
5575 ; CHECK-NEXT:    vrgather.vi v16, v8, 9
5576 ; CHECK-NEXT:    vmv.v.v v8, v16
5577 ; CHECK-NEXT:    ret
5578 entry:
5579   %a = call <vscale x 32 x bfloat> @llvm.riscv.vrgather.vx.nxv32bf16.iXLen(
5580     <vscale x 32 x bfloat> undef,
5581     <vscale x 32 x bfloat> %0,
5582     iXLen 9,
5583     iXLen %1)
5585   ret <vscale x 32 x bfloat> %a
5588 define <vscale x 32 x bfloat> @intrinsic_vrgather_mask_vi_nxv32bf16_nxv32bf16(<vscale x 32 x bfloat> %0, <vscale x 32 x bfloat> %1, <vscale x 32 x i1> %2, iXLen %3) nounwind {
5589 ; CHECK-LABEL: intrinsic_vrgather_mask_vi_nxv32bf16_nxv32bf16:
5590 ; CHECK:       # %bb.0: # %entry
5591 ; CHECK-NEXT:    vsetvli zero, a0, e16, m8, ta, mu
5592 ; CHECK-NEXT:    vrgather.vi v8, v16, 9, v0.t
5593 ; CHECK-NEXT:    ret
5594 entry:
5595   %a = call <vscale x 32 x bfloat> @llvm.riscv.vrgather.vx.mask.nxv32bf16.iXLen(
5596     <vscale x 32 x bfloat> %0,
5597     <vscale x 32 x bfloat> %1,
5598     iXLen 9,
5599     <vscale x 32 x i1> %2,
5600     iXLen %3, iXLen 1)
5602   ret <vscale x 32 x bfloat> %a