xref: /llvm-project/llvm/test/CodeGen/RISCV/rvv/fixed-vectors-expandload-int.ll (revision 18f0f709345cc7e611c4f944832edb71284caacb)
161c283dbSYeting Kuo; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 4
2*18f0f709SPengcheng Wang; RUN: llc -verify-machineinstrs -mtriple=riscv32 -mattr=+m,+v %s -o - \
3*18f0f709SPengcheng Wang; RUN:   | FileCheck %s --check-prefixes=CHECK,CHECK-RV32
4*18f0f709SPengcheng Wang; RUN: llc -verify-machineinstrs -mtriple=riscv64 -mattr=+m,+v %s -o - \
5*18f0f709SPengcheng Wang; RUN:   | FileCheck %s --check-prefixes=CHECK,CHECK-RV64
661c283dbSYeting Kuo
761c283dbSYeting Kuodeclare <1 x i8> @llvm.masked.expandload.v1i8(ptr, <1 x i1>, <1 x i8>)
861c283dbSYeting Kuodefine <1 x i8> @expandload_v1i8(ptr %base, <1 x i8> %src0, <1 x i1> %mask) {
961c283dbSYeting Kuo; CHECK-LABEL: expandload_v1i8:
1061c283dbSYeting Kuo; CHECK:       # %bb.0:
1161c283dbSYeting Kuo; CHECK-NEXT:    vsetivli zero, 1, e8, mf8, ta, ma
12*18f0f709SPengcheng Wang; CHECK-NEXT:    vcpop.m a1, v0
13*18f0f709SPengcheng Wang; CHECK-NEXT:    vsetvli zero, a1, e8, mf8, ta, ma
14*18f0f709SPengcheng Wang; CHECK-NEXT:    vle8.v v9, (a0)
15*18f0f709SPengcheng Wang; CHECK-NEXT:    vsetivli zero, 1, e8, mf8, ta, mu
16*18f0f709SPengcheng Wang; CHECK-NEXT:    viota.m v10, v0
17*18f0f709SPengcheng Wang; CHECK-NEXT:    vrgather.vv v8, v9, v10, v0.t
1861c283dbSYeting Kuo; CHECK-NEXT:    ret
1961c283dbSYeting Kuo  %res = call <1 x i8> @llvm.masked.expandload.v1i8(ptr %base, <1 x i1> %mask, <1 x i8> %src0)
2061c283dbSYeting Kuo  ret <1 x i8>%res
2161c283dbSYeting Kuo}
2261c283dbSYeting Kuo
2361c283dbSYeting Kuodeclare <2 x i8> @llvm.masked.expandload.v2i8(ptr, <2 x i1>, <2 x i8>)
2461c283dbSYeting Kuodefine <2 x i8> @expandload_v2i8(ptr %base, <2 x i8> %src0, <2 x i1> %mask) {
2561c283dbSYeting Kuo; CHECK-LABEL: expandload_v2i8:
2661c283dbSYeting Kuo; CHECK:       # %bb.0:
27964c92d0SPhilip Reames; CHECK-NEXT:    vsetivli zero, 2, e8, mf8, ta, ma
28*18f0f709SPengcheng Wang; CHECK-NEXT:    vcpop.m a1, v0
29*18f0f709SPengcheng Wang; CHECK-NEXT:    vsetvli zero, a1, e8, mf8, ta, ma
30*18f0f709SPengcheng Wang; CHECK-NEXT:    vle8.v v9, (a0)
31*18f0f709SPengcheng Wang; CHECK-NEXT:    vsetivli zero, 2, e8, mf8, ta, mu
32*18f0f709SPengcheng Wang; CHECK-NEXT:    viota.m v10, v0
33*18f0f709SPengcheng Wang; CHECK-NEXT:    vrgather.vv v8, v9, v10, v0.t
3461c283dbSYeting Kuo; CHECK-NEXT:    ret
3561c283dbSYeting Kuo  %res = call <2 x i8> @llvm.masked.expandload.v2i8(ptr %base, <2 x i1> %mask, <2 x i8> %src0)
3661c283dbSYeting Kuo  ret <2 x i8>%res
3761c283dbSYeting Kuo}
3861c283dbSYeting Kuo
3961c283dbSYeting Kuodeclare <4 x i8> @llvm.masked.expandload.v4i8(ptr, <4 x i1>, <4 x i8>)
4061c283dbSYeting Kuodefine <4 x i8> @expandload_v4i8(ptr %base, <4 x i8> %src0, <4 x i1> %mask) {
4161c283dbSYeting Kuo; CHECK-LABEL: expandload_v4i8:
4261c283dbSYeting Kuo; CHECK:       # %bb.0:
4361c283dbSYeting Kuo; CHECK-NEXT:    vsetivli zero, 4, e8, mf4, ta, ma
44*18f0f709SPengcheng Wang; CHECK-NEXT:    vcpop.m a1, v0
45*18f0f709SPengcheng Wang; CHECK-NEXT:    vsetvli zero, a1, e8, mf4, ta, ma
46*18f0f709SPengcheng Wang; CHECK-NEXT:    vle8.v v9, (a0)
47*18f0f709SPengcheng Wang; CHECK-NEXT:    vsetivli zero, 4, e8, mf4, ta, mu
48*18f0f709SPengcheng Wang; CHECK-NEXT:    viota.m v10, v0
49*18f0f709SPengcheng Wang; CHECK-NEXT:    vrgather.vv v8, v9, v10, v0.t
5061c283dbSYeting Kuo; CHECK-NEXT:    ret
5161c283dbSYeting Kuo  %res = call <4 x i8> @llvm.masked.expandload.v4i8(ptr %base, <4 x i1> %mask, <4 x i8> %src0)
5261c283dbSYeting Kuo  ret <4 x i8>%res
5361c283dbSYeting Kuo}
5461c283dbSYeting Kuo
5561c283dbSYeting Kuodeclare <8 x i8> @llvm.masked.expandload.v8i8(ptr, <8 x i1>, <8 x i8>)
5661c283dbSYeting Kuodefine <8 x i8> @expandload_v8i8(ptr %base, <8 x i8> %src0, <8 x i1> %mask) {
5761c283dbSYeting Kuo; CHECK-LABEL: expandload_v8i8:
5861c283dbSYeting Kuo; CHECK:       # %bb.0:
5961c283dbSYeting Kuo; CHECK-NEXT:    vsetivli zero, 8, e8, mf2, ta, ma
60*18f0f709SPengcheng Wang; CHECK-NEXT:    vcpop.m a1, v0
61*18f0f709SPengcheng Wang; CHECK-NEXT:    vsetvli zero, a1, e8, mf2, ta, ma
62*18f0f709SPengcheng Wang; CHECK-NEXT:    vle8.v v9, (a0)
63*18f0f709SPengcheng Wang; CHECK-NEXT:    vsetivli zero, 8, e8, mf2, ta, mu
64*18f0f709SPengcheng Wang; CHECK-NEXT:    viota.m v10, v0
65*18f0f709SPengcheng Wang; CHECK-NEXT:    vrgather.vv v8, v9, v10, v0.t
6661c283dbSYeting Kuo; CHECK-NEXT:    ret
6761c283dbSYeting Kuo  %res = call <8 x i8> @llvm.masked.expandload.v8i8(ptr %base, <8 x i1> %mask, <8 x i8> %src0)
6861c283dbSYeting Kuo  ret <8 x i8>%res
6961c283dbSYeting Kuo}
7061c283dbSYeting Kuo
7161c283dbSYeting Kuodeclare <1 x i16> @llvm.masked.expandload.v1i16(ptr, <1 x i1>, <1 x i16>)
7261c283dbSYeting Kuodefine <1 x i16> @expandload_v1i16(ptr %base, <1 x i16> %src0, <1 x i1> %mask) {
7361c283dbSYeting Kuo; CHECK-LABEL: expandload_v1i16:
7461c283dbSYeting Kuo; CHECK:       # %bb.0:
75*18f0f709SPengcheng Wang; CHECK-NEXT:    vsetivli zero, 1, e8, mf8, ta, ma
76*18f0f709SPengcheng Wang; CHECK-NEXT:    vcpop.m a1, v0
77*18f0f709SPengcheng Wang; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, ma
78*18f0f709SPengcheng Wang; CHECK-NEXT:    vle16.v v9, (a0)
79*18f0f709SPengcheng Wang; CHECK-NEXT:    vsetivli zero, 1, e16, mf4, ta, mu
80*18f0f709SPengcheng Wang; CHECK-NEXT:    viota.m v10, v0
81*18f0f709SPengcheng Wang; CHECK-NEXT:    vrgather.vv v8, v9, v10, v0.t
8261c283dbSYeting Kuo; CHECK-NEXT:    ret
8361c283dbSYeting Kuo  %res = call <1 x i16> @llvm.masked.expandload.v1i16(ptr align 2 %base, <1 x i1> %mask, <1 x i16> %src0)
8461c283dbSYeting Kuo  ret <1 x i16>%res
8561c283dbSYeting Kuo}
8661c283dbSYeting Kuo
8761c283dbSYeting Kuodeclare <2 x i16> @llvm.masked.expandload.v2i16(ptr, <2 x i1>, <2 x i16>)
8861c283dbSYeting Kuodefine <2 x i16> @expandload_v2i16(ptr %base, <2 x i16> %src0, <2 x i1> %mask) {
8961c283dbSYeting Kuo; CHECK-LABEL: expandload_v2i16:
9061c283dbSYeting Kuo; CHECK:       # %bb.0:
91*18f0f709SPengcheng Wang; CHECK-NEXT:    vsetivli zero, 2, e8, mf8, ta, ma
92*18f0f709SPengcheng Wang; CHECK-NEXT:    vcpop.m a1, v0
93*18f0f709SPengcheng Wang; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, ma
94*18f0f709SPengcheng Wang; CHECK-NEXT:    vle16.v v9, (a0)
95*18f0f709SPengcheng Wang; CHECK-NEXT:    vsetivli zero, 2, e16, mf4, ta, mu
96*18f0f709SPengcheng Wang; CHECK-NEXT:    viota.m v10, v0
97*18f0f709SPengcheng Wang; CHECK-NEXT:    vrgather.vv v8, v9, v10, v0.t
9861c283dbSYeting Kuo; CHECK-NEXT:    ret
9961c283dbSYeting Kuo  %res = call <2 x i16> @llvm.masked.expandload.v2i16(ptr align 2 %base, <2 x i1> %mask, <2 x i16> %src0)
10061c283dbSYeting Kuo  ret <2 x i16>%res
10161c283dbSYeting Kuo}
10261c283dbSYeting Kuo
10361c283dbSYeting Kuodeclare <4 x i16> @llvm.masked.expandload.v4i16(ptr, <4 x i1>, <4 x i16>)
10461c283dbSYeting Kuodefine <4 x i16> @expandload_v4i16(ptr %base, <4 x i16> %src0, <4 x i1> %mask) {
10561c283dbSYeting Kuo; CHECK-LABEL: expandload_v4i16:
10661c283dbSYeting Kuo; CHECK:       # %bb.0:
107*18f0f709SPengcheng Wang; CHECK-NEXT:    vsetivli zero, 4, e8, mf4, ta, ma
108*18f0f709SPengcheng Wang; CHECK-NEXT:    vcpop.m a1, v0
109*18f0f709SPengcheng Wang; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, ma
110*18f0f709SPengcheng Wang; CHECK-NEXT:    vle16.v v9, (a0)
111*18f0f709SPengcheng Wang; CHECK-NEXT:    vsetivli zero, 4, e16, mf2, ta, mu
112*18f0f709SPengcheng Wang; CHECK-NEXT:    viota.m v10, v0
113*18f0f709SPengcheng Wang; CHECK-NEXT:    vrgather.vv v8, v9, v10, v0.t
11461c283dbSYeting Kuo; CHECK-NEXT:    ret
11561c283dbSYeting Kuo  %res = call <4 x i16> @llvm.masked.expandload.v4i16(ptr align 2 %base, <4 x i1> %mask, <4 x i16> %src0)
11661c283dbSYeting Kuo  ret <4 x i16>%res
11761c283dbSYeting Kuo}
11861c283dbSYeting Kuo
11961c283dbSYeting Kuodeclare <8 x i16> @llvm.masked.expandload.v8i16(ptr, <8 x i1>, <8 x i16>)
12061c283dbSYeting Kuodefine <8 x i16> @expandload_v8i16(ptr %base, <8 x i16> %src0, <8 x i1> %mask) {
12161c283dbSYeting Kuo; CHECK-LABEL: expandload_v8i16:
12261c283dbSYeting Kuo; CHECK:       # %bb.0:
123*18f0f709SPengcheng Wang; CHECK-NEXT:    vsetivli zero, 8, e8, mf2, ta, ma
124*18f0f709SPengcheng Wang; CHECK-NEXT:    vcpop.m a1, v0
125*18f0f709SPengcheng Wang; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, ma
126*18f0f709SPengcheng Wang; CHECK-NEXT:    vle16.v v9, (a0)
127*18f0f709SPengcheng Wang; CHECK-NEXT:    vsetivli zero, 8, e16, m1, ta, mu
128*18f0f709SPengcheng Wang; CHECK-NEXT:    viota.m v10, v0
129*18f0f709SPengcheng Wang; CHECK-NEXT:    vrgather.vv v8, v9, v10, v0.t
13061c283dbSYeting Kuo; CHECK-NEXT:    ret
13161c283dbSYeting Kuo  %res = call <8 x i16> @llvm.masked.expandload.v8i16(ptr align 2 %base, <8 x i1> %mask, <8 x i16> %src0)
13261c283dbSYeting Kuo  ret <8 x i16>%res
13361c283dbSYeting Kuo}
13461c283dbSYeting Kuo
13561c283dbSYeting Kuodeclare <1 x i32> @llvm.masked.expandload.v1i32(ptr, <1 x i1>, <1 x i32>)
13661c283dbSYeting Kuodefine <1 x i32> @expandload_v1i32(ptr %base, <1 x i32> %src0, <1 x i1> %mask) {
13761c283dbSYeting Kuo; CHECK-LABEL: expandload_v1i32:
13861c283dbSYeting Kuo; CHECK:       # %bb.0:
139*18f0f709SPengcheng Wang; CHECK-NEXT:    vsetivli zero, 1, e8, mf8, ta, ma
140*18f0f709SPengcheng Wang; CHECK-NEXT:    vcpop.m a1, v0
141*18f0f709SPengcheng Wang; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, ma
142*18f0f709SPengcheng Wang; CHECK-NEXT:    vle32.v v9, (a0)
143*18f0f709SPengcheng Wang; CHECK-NEXT:    vsetivli zero, 1, e32, mf2, ta, mu
144*18f0f709SPengcheng Wang; CHECK-NEXT:    viota.m v10, v0
145*18f0f709SPengcheng Wang; CHECK-NEXT:    vrgather.vv v8, v9, v10, v0.t
14661c283dbSYeting Kuo; CHECK-NEXT:    ret
14761c283dbSYeting Kuo  %res = call <1 x i32> @llvm.masked.expandload.v1i32(ptr align 4 %base, <1 x i1> %mask, <1 x i32> %src0)
14861c283dbSYeting Kuo  ret <1 x i32>%res
14961c283dbSYeting Kuo}
15061c283dbSYeting Kuo
15161c283dbSYeting Kuodeclare <2 x i32> @llvm.masked.expandload.v2i32(ptr, <2 x i1>, <2 x i32>)
15261c283dbSYeting Kuodefine <2 x i32> @expandload_v2i32(ptr %base, <2 x i32> %src0, <2 x i1> %mask) {
15361c283dbSYeting Kuo; CHECK-LABEL: expandload_v2i32:
15461c283dbSYeting Kuo; CHECK:       # %bb.0:
155*18f0f709SPengcheng Wang; CHECK-NEXT:    vsetivli zero, 2, e8, mf8, ta, ma
156*18f0f709SPengcheng Wang; CHECK-NEXT:    vcpop.m a1, v0
157*18f0f709SPengcheng Wang; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, ma
158*18f0f709SPengcheng Wang; CHECK-NEXT:    vle32.v v9, (a0)
159*18f0f709SPengcheng Wang; CHECK-NEXT:    vsetivli zero, 2, e32, mf2, ta, mu
160*18f0f709SPengcheng Wang; CHECK-NEXT:    viota.m v10, v0
161*18f0f709SPengcheng Wang; CHECK-NEXT:    vrgather.vv v8, v9, v10, v0.t
16261c283dbSYeting Kuo; CHECK-NEXT:    ret
16361c283dbSYeting Kuo  %res = call <2 x i32> @llvm.masked.expandload.v2i32(ptr align 4 %base, <2 x i1> %mask, <2 x i32> %src0)
16461c283dbSYeting Kuo  ret <2 x i32>%res
16561c283dbSYeting Kuo}
16661c283dbSYeting Kuo
16761c283dbSYeting Kuodeclare <4 x i32> @llvm.masked.expandload.v4i32(ptr, <4 x i1>, <4 x i32>)
16861c283dbSYeting Kuodefine <4 x i32> @expandload_v4i32(ptr %base, <4 x i32> %src0, <4 x i1> %mask) {
16961c283dbSYeting Kuo; CHECK-LABEL: expandload_v4i32:
17061c283dbSYeting Kuo; CHECK:       # %bb.0:
171*18f0f709SPengcheng Wang; CHECK-NEXT:    vsetivli zero, 4, e8, mf4, ta, ma
172*18f0f709SPengcheng Wang; CHECK-NEXT:    vcpop.m a1, v0
173*18f0f709SPengcheng Wang; CHECK-NEXT:    vsetvli zero, a1, e32, m1, ta, ma
174*18f0f709SPengcheng Wang; CHECK-NEXT:    vle32.v v9, (a0)
175*18f0f709SPengcheng Wang; CHECK-NEXT:    vsetivli zero, 4, e32, m1, ta, mu
176*18f0f709SPengcheng Wang; CHECK-NEXT:    viota.m v10, v0
177*18f0f709SPengcheng Wang; CHECK-NEXT:    vrgather.vv v8, v9, v10, v0.t
17861c283dbSYeting Kuo; CHECK-NEXT:    ret
17961c283dbSYeting Kuo  %res = call <4 x i32> @llvm.masked.expandload.v4i32(ptr align 4 %base, <4 x i1> %mask, <4 x i32> %src0)
18061c283dbSYeting Kuo  ret <4 x i32>%res
18161c283dbSYeting Kuo}
18261c283dbSYeting Kuo
18361c283dbSYeting Kuodeclare <8 x i32> @llvm.masked.expandload.v8i32(ptr, <8 x i1>, <8 x i32>)
18461c283dbSYeting Kuodefine <8 x i32> @expandload_v8i32(ptr %base, <8 x i32> %src0, <8 x i1> %mask) {
18561c283dbSYeting Kuo; CHECK-LABEL: expandload_v8i32:
18661c283dbSYeting Kuo; CHECK:       # %bb.0:
187*18f0f709SPengcheng Wang; CHECK-NEXT:    vsetivli zero, 8, e8, mf2, ta, ma
188*18f0f709SPengcheng Wang; CHECK-NEXT:    vcpop.m a1, v0
189*18f0f709SPengcheng Wang; CHECK-NEXT:    vsetvli zero, a1, e32, m2, ta, ma
190*18f0f709SPengcheng Wang; CHECK-NEXT:    vle32.v v10, (a0)
191*18f0f709SPengcheng Wang; CHECK-NEXT:    vsetivli zero, 8, e32, m2, ta, mu
192*18f0f709SPengcheng Wang; CHECK-NEXT:    viota.m v12, v0
193*18f0f709SPengcheng Wang; CHECK-NEXT:    vrgather.vv v8, v10, v12, v0.t
19461c283dbSYeting Kuo; CHECK-NEXT:    ret
19561c283dbSYeting Kuo  %res = call <8 x i32> @llvm.masked.expandload.v8i32(ptr align 4 %base, <8 x i1> %mask, <8 x i32> %src0)
19661c283dbSYeting Kuo  ret <8 x i32>%res
19761c283dbSYeting Kuo}
19861c283dbSYeting Kuo
19961c283dbSYeting Kuodeclare <1 x i64> @llvm.masked.expandload.v1i64(ptr, <1 x i1>, <1 x i64>)
20061c283dbSYeting Kuodefine <1 x i64> @expandload_v1i64(ptr %base, <1 x i64> %src0, <1 x i1> %mask) {
201*18f0f709SPengcheng Wang; CHECK-LABEL: expandload_v1i64:
202*18f0f709SPengcheng Wang; CHECK:       # %bb.0:
203*18f0f709SPengcheng Wang; CHECK-NEXT:    vsetivli zero, 1, e8, mf8, ta, ma
204*18f0f709SPengcheng Wang; CHECK-NEXT:    vcpop.m a1, v0
205*18f0f709SPengcheng Wang; CHECK-NEXT:    vsetvli zero, a1, e64, m1, ta, ma
206*18f0f709SPengcheng Wang; CHECK-NEXT:    vle64.v v9, (a0)
207*18f0f709SPengcheng Wang; CHECK-NEXT:    vsetivli zero, 1, e64, m1, ta, mu
208*18f0f709SPengcheng Wang; CHECK-NEXT:    viota.m v10, v0
209*18f0f709SPengcheng Wang; CHECK-NEXT:    vrgather.vv v8, v9, v10, v0.t
210*18f0f709SPengcheng Wang; CHECK-NEXT:    ret
21161c283dbSYeting Kuo  %res = call <1 x i64> @llvm.masked.expandload.v1i64(ptr align 8 %base, <1 x i1> %mask, <1 x i64> %src0)
21261c283dbSYeting Kuo  ret <1 x i64>%res
21361c283dbSYeting Kuo}
21461c283dbSYeting Kuo
21561c283dbSYeting Kuodeclare <2 x i64> @llvm.masked.expandload.v2i64(ptr, <2 x i1>, <2 x i64>)
21661c283dbSYeting Kuodefine <2 x i64> @expandload_v2i64(ptr %base, <2 x i64> %src0, <2 x i1> %mask) {
217*18f0f709SPengcheng Wang; CHECK-LABEL: expandload_v2i64:
218*18f0f709SPengcheng Wang; CHECK:       # %bb.0:
219*18f0f709SPengcheng Wang; CHECK-NEXT:    vsetivli zero, 2, e8, mf8, ta, ma
220*18f0f709SPengcheng Wang; CHECK-NEXT:    vcpop.m a1, v0
221*18f0f709SPengcheng Wang; CHECK-NEXT:    vsetvli zero, a1, e64, m1, ta, ma
222*18f0f709SPengcheng Wang; CHECK-NEXT:    vle64.v v9, (a0)
223*18f0f709SPengcheng Wang; CHECK-NEXT:    vsetivli zero, 2, e64, m1, ta, mu
224*18f0f709SPengcheng Wang; CHECK-NEXT:    viota.m v10, v0
225*18f0f709SPengcheng Wang; CHECK-NEXT:    vrgather.vv v8, v9, v10, v0.t
226*18f0f709SPengcheng Wang; CHECK-NEXT:    ret
22761c283dbSYeting Kuo  %res = call <2 x i64> @llvm.masked.expandload.v2i64(ptr align 8 %base, <2 x i1> %mask, <2 x i64> %src0)
22861c283dbSYeting Kuo  ret <2 x i64>%res
22961c283dbSYeting Kuo}
23061c283dbSYeting Kuo
23161c283dbSYeting Kuodeclare <4 x i64> @llvm.masked.expandload.v4i64(ptr, <4 x i1>, <4 x i64>)
23261c283dbSYeting Kuodefine <4 x i64> @expandload_v4i64(ptr %base, <4 x i64> %src0, <4 x i1> %mask) {
233*18f0f709SPengcheng Wang; CHECK-LABEL: expandload_v4i64:
234*18f0f709SPengcheng Wang; CHECK:       # %bb.0:
235*18f0f709SPengcheng Wang; CHECK-NEXT:    vsetivli zero, 4, e8, mf4, ta, ma
236*18f0f709SPengcheng Wang; CHECK-NEXT:    vcpop.m a1, v0
237*18f0f709SPengcheng Wang; CHECK-NEXT:    vsetvli zero, a1, e64, m2, ta, ma
238*18f0f709SPengcheng Wang; CHECK-NEXT:    vle64.v v10, (a0)
239*18f0f709SPengcheng Wang; CHECK-NEXT:    vsetivli zero, 4, e64, m2, ta, mu
240*18f0f709SPengcheng Wang; CHECK-NEXT:    viota.m v12, v0
241*18f0f709SPengcheng Wang; CHECK-NEXT:    vrgather.vv v8, v10, v12, v0.t
242*18f0f709SPengcheng Wang; CHECK-NEXT:    ret
24361c283dbSYeting Kuo  %res = call <4 x i64> @llvm.masked.expandload.v4i64(ptr align 8 %base, <4 x i1> %mask, <4 x i64> %src0)
24461c283dbSYeting Kuo  ret <4 x i64>%res
24561c283dbSYeting Kuo}
24661c283dbSYeting Kuo
24761c283dbSYeting Kuodeclare <8 x i64> @llvm.masked.expandload.v8i64(ptr, <8 x i1>, <8 x i64>)
24861c283dbSYeting Kuodefine <8 x i64> @expandload_v8i64(ptr %base, <8 x i64> %src0, <8 x i1> %mask) {
249*18f0f709SPengcheng Wang; CHECK-LABEL: expandload_v8i64:
250*18f0f709SPengcheng Wang; CHECK:       # %bb.0:
251*18f0f709SPengcheng Wang; CHECK-NEXT:    vsetivli zero, 8, e8, mf2, ta, ma
252*18f0f709SPengcheng Wang; CHECK-NEXT:    vcpop.m a1, v0
253*18f0f709SPengcheng Wang; CHECK-NEXT:    vsetvli zero, a1, e64, m4, ta, ma
254*18f0f709SPengcheng Wang; CHECK-NEXT:    vle64.v v12, (a0)
255*18f0f709SPengcheng Wang; CHECK-NEXT:    vsetivli zero, 8, e64, m4, ta, mu
256*18f0f709SPengcheng Wang; CHECK-NEXT:    viota.m v16, v0
257*18f0f709SPengcheng Wang; CHECK-NEXT:    vrgather.vv v8, v12, v16, v0.t
258*18f0f709SPengcheng Wang; CHECK-NEXT:    ret
25961c283dbSYeting Kuo  %res = call <8 x i64> @llvm.masked.expandload.v8i64(ptr align 8 %base, <8 x i1> %mask, <8 x i64> %src0)
26061c283dbSYeting Kuo  ret <8 x i64>%res
26161c283dbSYeting Kuo}
262*18f0f709SPengcheng Wang;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line:
263*18f0f709SPengcheng Wang; CHECK-RV32: {{.*}}
264*18f0f709SPengcheng Wang; CHECK-RV64: {{.*}}
265