xref: /llvm-project/llvm/test/CodeGen/RISCV/rvv/fixed-vectors-vp-splat.ll (revision 97982a8c605fac7c86d02e641a6cd7898b3ca343)
1746cea3eSYeting Kuo; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 5
21cb59983SLuke Lau; RUN: llc -mtriple=riscv32 -mattr=+v,+d,+zvfh -verify-machineinstrs < %s | FileCheck %s --check-prefixes=CHECK,RV32
31cb59983SLuke Lau; RUN: llc -mtriple=riscv64 -mattr=+v,+d,+zvfh -verify-machineinstrs < %s | FileCheck %s --check-prefixes=CHECK,RV64
4746cea3eSYeting Kuo
5746cea3eSYeting Kuodefine <1 x i8> @vp_splat_v1i8(i8 %val, <1 x i1> %m, i32 zeroext %evl) {
6746cea3eSYeting Kuo; CHECK-LABEL: vp_splat_v1i8:
7746cea3eSYeting Kuo; CHECK:       # %bb.0:
8746cea3eSYeting Kuo; CHECK-NEXT:    vsetvli zero, a1, e8, mf8, ta, ma
9746cea3eSYeting Kuo; CHECK-NEXT:    vmv.v.x v8, a0
10746cea3eSYeting Kuo; CHECK-NEXT:    ret
11746cea3eSYeting Kuo  %splat = call <1 x i8> @llvm.experimental.vp.splat.v1i8(i8 %val, <1 x i1> %m, i32 %evl)
12746cea3eSYeting Kuo  ret <1 x i8> %splat
13746cea3eSYeting Kuo}
14746cea3eSYeting Kuo
15746cea3eSYeting Kuodefine <2 x i8> @vp_splat_v2i8(i8 %val, <2 x i1> %m, i32 zeroext %evl) {
16746cea3eSYeting Kuo; CHECK-LABEL: vp_splat_v2i8:
17746cea3eSYeting Kuo; CHECK:       # %bb.0:
18746cea3eSYeting Kuo; CHECK-NEXT:    vsetvli zero, a1, e8, mf8, ta, ma
19746cea3eSYeting Kuo; CHECK-NEXT:    vmv.v.x v8, a0
20746cea3eSYeting Kuo; CHECK-NEXT:    ret
21746cea3eSYeting Kuo  %splat = call <2 x i8> @llvm.experimental.vp.splat.v2i8(i8 %val, <2 x i1> %m, i32 %evl)
22746cea3eSYeting Kuo  ret <2 x i8> %splat
23746cea3eSYeting Kuo}
24746cea3eSYeting Kuo
25746cea3eSYeting Kuodefine <4 x i8> @vp_splat_v4i8(i8 %val, <4 x i1> %m, i32 zeroext %evl) {
26746cea3eSYeting Kuo; CHECK-LABEL: vp_splat_v4i8:
27746cea3eSYeting Kuo; CHECK:       # %bb.0:
28746cea3eSYeting Kuo; CHECK-NEXT:    vsetvli zero, a1, e8, mf4, ta, ma
29746cea3eSYeting Kuo; CHECK-NEXT:    vmv.v.x v8, a0
30746cea3eSYeting Kuo; CHECK-NEXT:    ret
31746cea3eSYeting Kuo  %splat = call <4 x i8> @llvm.experimental.vp.splat.v4i8(i8 %val, <4 x i1> %m, i32 %evl)
32746cea3eSYeting Kuo  ret <4 x i8> %splat
33746cea3eSYeting Kuo}
34746cea3eSYeting Kuo
35746cea3eSYeting Kuodefine <8 x i8> @vp_splat_v8i8(i8 %val, <8 x i1> %m, i32 zeroext %evl) {
36746cea3eSYeting Kuo; CHECK-LABEL: vp_splat_v8i8:
37746cea3eSYeting Kuo; CHECK:       # %bb.0:
38746cea3eSYeting Kuo; CHECK-NEXT:    vsetvli zero, a1, e8, mf2, ta, ma
39746cea3eSYeting Kuo; CHECK-NEXT:    vmv.v.x v8, a0
40746cea3eSYeting Kuo; CHECK-NEXT:    ret
41746cea3eSYeting Kuo  %splat = call <8 x i8> @llvm.experimental.vp.splat.v8i8(i8 %val, <8 x i1> %m, i32 %evl)
42746cea3eSYeting Kuo  ret <8 x i8> %splat
43746cea3eSYeting Kuo}
44746cea3eSYeting Kuo
45746cea3eSYeting Kuodefine <16 x i8> @vp_splat_v16i8(i8 %val, <16 x i1> %m, i32 zeroext %evl) {
46746cea3eSYeting Kuo; CHECK-LABEL: vp_splat_v16i8:
47746cea3eSYeting Kuo; CHECK:       # %bb.0:
48746cea3eSYeting Kuo; CHECK-NEXT:    vsetvli zero, a1, e8, m1, ta, ma
49746cea3eSYeting Kuo; CHECK-NEXT:    vmv.v.x v8, a0
50746cea3eSYeting Kuo; CHECK-NEXT:    ret
51746cea3eSYeting Kuo  %splat = call <16 x i8> @llvm.experimental.vp.splat.v16i8(i8 %val, <16 x i1> %m, i32 %evl)
52746cea3eSYeting Kuo  ret <16 x i8> %splat
53746cea3eSYeting Kuo}
54746cea3eSYeting Kuo
55746cea3eSYeting Kuodefine <32 x i8> @vp_splat_v32i8(i8 %val, <32 x i1> %m, i32 zeroext %evl) {
56746cea3eSYeting Kuo; CHECK-LABEL: vp_splat_v32i8:
57746cea3eSYeting Kuo; CHECK:       # %bb.0:
58746cea3eSYeting Kuo; CHECK-NEXT:    vsetvli zero, a1, e8, m2, ta, ma
59746cea3eSYeting Kuo; CHECK-NEXT:    vmv.v.x v8, a0
60746cea3eSYeting Kuo; CHECK-NEXT:    ret
61746cea3eSYeting Kuo  %splat = call <32 x i8> @llvm.experimental.vp.splat.v32i8(i8 %val, <32 x i1> %m, i32 %evl)
62746cea3eSYeting Kuo  ret <32 x i8> %splat
63746cea3eSYeting Kuo}
64746cea3eSYeting Kuo
65746cea3eSYeting Kuodefine <64 x i8> @vp_splat_v64i8(i8 %val, <64 x i1> %m, i32 zeroext %evl) {
66746cea3eSYeting Kuo; CHECK-LABEL: vp_splat_v64i8:
67746cea3eSYeting Kuo; CHECK:       # %bb.0:
68746cea3eSYeting Kuo; CHECK-NEXT:    vsetvli zero, a1, e8, m4, ta, ma
69746cea3eSYeting Kuo; CHECK-NEXT:    vmv.v.x v8, a0
70746cea3eSYeting Kuo; CHECK-NEXT:    ret
71746cea3eSYeting Kuo  %splat = call <64 x i8> @llvm.experimental.vp.splat.v64i8(i8 %val, <64 x i1> %m, i32 %evl)
72746cea3eSYeting Kuo  ret <64 x i8> %splat
73746cea3eSYeting Kuo}
74746cea3eSYeting Kuo
75746cea3eSYeting Kuodefine <1 x i16> @vp_splat_v1i16(i16 %val, <1 x i1> %m, i32 zeroext %evl) {
76746cea3eSYeting Kuo; CHECK-LABEL: vp_splat_v1i16:
77746cea3eSYeting Kuo; CHECK:       # %bb.0:
78746cea3eSYeting Kuo; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, ma
79746cea3eSYeting Kuo; CHECK-NEXT:    vmv.v.x v8, a0
80746cea3eSYeting Kuo; CHECK-NEXT:    ret
81746cea3eSYeting Kuo  %splat = call <1 x i16> @llvm.experimental.vp.splat.v1i16(i16 %val, <1 x i1> %m, i32 %evl)
82746cea3eSYeting Kuo  ret <1 x i16> %splat
83746cea3eSYeting Kuo}
84746cea3eSYeting Kuo
85746cea3eSYeting Kuodefine <2 x i16> @vp_splat_v2i16(i16 %val, <2 x i1> %m, i32 zeroext %evl) {
86746cea3eSYeting Kuo; CHECK-LABEL: vp_splat_v2i16:
87746cea3eSYeting Kuo; CHECK:       # %bb.0:
88746cea3eSYeting Kuo; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, ma
89746cea3eSYeting Kuo; CHECK-NEXT:    vmv.v.x v8, a0
90746cea3eSYeting Kuo; CHECK-NEXT:    ret
91746cea3eSYeting Kuo  %splat = call <2 x i16> @llvm.experimental.vp.splat.v2i16(i16 %val, <2 x i1> %m, i32 %evl)
92746cea3eSYeting Kuo  ret <2 x i16> %splat
93746cea3eSYeting Kuo}
94746cea3eSYeting Kuo
95746cea3eSYeting Kuodefine <4 x i16> @vp_splat_v4i16(i16 %val, <4 x i1> %m, i32 zeroext %evl) {
96746cea3eSYeting Kuo; CHECK-LABEL: vp_splat_v4i16:
97746cea3eSYeting Kuo; CHECK:       # %bb.0:
98746cea3eSYeting Kuo; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, ma
99746cea3eSYeting Kuo; CHECK-NEXT:    vmv.v.x v8, a0
100746cea3eSYeting Kuo; CHECK-NEXT:    ret
101746cea3eSYeting Kuo  %splat = call <4 x i16> @llvm.experimental.vp.splat.v4i16(i16 %val, <4 x i1> %m, i32 %evl)
102746cea3eSYeting Kuo  ret <4 x i16> %splat
103746cea3eSYeting Kuo}
104746cea3eSYeting Kuo
105746cea3eSYeting Kuodefine <8 x i16> @vp_splat_v8i16(i16 %val, <8 x i1> %m, i32 zeroext %evl) {
106746cea3eSYeting Kuo; CHECK-LABEL: vp_splat_v8i16:
107746cea3eSYeting Kuo; CHECK:       # %bb.0:
108746cea3eSYeting Kuo; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, ma
109746cea3eSYeting Kuo; CHECK-NEXT:    vmv.v.x v8, a0
110746cea3eSYeting Kuo; CHECK-NEXT:    ret
111746cea3eSYeting Kuo  %splat = call <8 x i16> @llvm.experimental.vp.splat.v8i16(i16 %val, <8 x i1> %m, i32 %evl)
112746cea3eSYeting Kuo  ret <8 x i16> %splat
113746cea3eSYeting Kuo}
114746cea3eSYeting Kuo
115746cea3eSYeting Kuodefine <16 x i16> @vp_splat_v16i16(i16 %val, <16 x i1> %m, i32 zeroext %evl) {
116746cea3eSYeting Kuo; CHECK-LABEL: vp_splat_v16i16:
117746cea3eSYeting Kuo; CHECK:       # %bb.0:
118746cea3eSYeting Kuo; CHECK-NEXT:    vsetvli zero, a1, e16, m2, ta, ma
119746cea3eSYeting Kuo; CHECK-NEXT:    vmv.v.x v8, a0
120746cea3eSYeting Kuo; CHECK-NEXT:    ret
121746cea3eSYeting Kuo  %splat = call <16 x i16> @llvm.experimental.vp.splat.v16i16(i16 %val, <16 x i1> %m, i32 %evl)
122746cea3eSYeting Kuo  ret <16 x i16> %splat
123746cea3eSYeting Kuo}
124746cea3eSYeting Kuo
125746cea3eSYeting Kuodefine <32 x i16> @vp_splat_v32i16(i16 %val, <32 x i1> %m, i32 zeroext %evl) {
126746cea3eSYeting Kuo; CHECK-LABEL: vp_splat_v32i16:
127746cea3eSYeting Kuo; CHECK:       # %bb.0:
128746cea3eSYeting Kuo; CHECK-NEXT:    vsetvli zero, a1, e16, m4, ta, ma
129746cea3eSYeting Kuo; CHECK-NEXT:    vmv.v.x v8, a0
130746cea3eSYeting Kuo; CHECK-NEXT:    ret
131746cea3eSYeting Kuo  %splat = call <32 x i16> @llvm.experimental.vp.splat.v32i16(i16 %val, <32 x i1> %m, i32 %evl)
132746cea3eSYeting Kuo  ret <32 x i16> %splat
133746cea3eSYeting Kuo}
134746cea3eSYeting Kuo
135746cea3eSYeting Kuodefine <1 x i32> @vp_splat_v1i32(i32 %val, <1 x i1> %m, i32 zeroext %evl) {
136746cea3eSYeting Kuo; CHECK-LABEL: vp_splat_v1i32:
137746cea3eSYeting Kuo; CHECK:       # %bb.0:
138746cea3eSYeting Kuo; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, ma
139746cea3eSYeting Kuo; CHECK-NEXT:    vmv.v.x v8, a0
140746cea3eSYeting Kuo; CHECK-NEXT:    ret
141746cea3eSYeting Kuo  %splat = call <1 x i32> @llvm.experimental.vp.splat.v1i32(i32 %val, <1 x i1> %m, i32 %evl)
142746cea3eSYeting Kuo  ret <1 x i32> %splat
143746cea3eSYeting Kuo}
144746cea3eSYeting Kuo
145746cea3eSYeting Kuodefine <2 x i32> @vp_splat_v2i32(i32 %val, <2 x i1> %m, i32 zeroext %evl) {
146746cea3eSYeting Kuo; CHECK-LABEL: vp_splat_v2i32:
147746cea3eSYeting Kuo; CHECK:       # %bb.0:
148746cea3eSYeting Kuo; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, ma
149746cea3eSYeting Kuo; CHECK-NEXT:    vmv.v.x v8, a0
150746cea3eSYeting Kuo; CHECK-NEXT:    ret
151746cea3eSYeting Kuo  %splat = call <2 x i32> @llvm.experimental.vp.splat.v2i32(i32 %val, <2 x i1> %m, i32 %evl)
152746cea3eSYeting Kuo  ret <2 x i32> %splat
153746cea3eSYeting Kuo}
154746cea3eSYeting Kuo
155746cea3eSYeting Kuodefine <4 x i32> @vp_splat_v4i32(i32 %val, <4 x i1> %m, i32 zeroext %evl) {
156746cea3eSYeting Kuo; CHECK-LABEL: vp_splat_v4i32:
157746cea3eSYeting Kuo; CHECK:       # %bb.0:
158746cea3eSYeting Kuo; CHECK-NEXT:    vsetvli zero, a1, e32, m1, ta, ma
159746cea3eSYeting Kuo; CHECK-NEXT:    vmv.v.x v8, a0
160746cea3eSYeting Kuo; CHECK-NEXT:    ret
161746cea3eSYeting Kuo  %splat = call <4 x i32> @llvm.experimental.vp.splat.v4i32(i32 %val, <4 x i1> %m, i32 %evl)
162746cea3eSYeting Kuo  ret <4 x i32> %splat
163746cea3eSYeting Kuo}
164746cea3eSYeting Kuo
165746cea3eSYeting Kuodefine <8 x i32> @vp_splat_v8i32(i32 %val, <8 x i1> %m, i32 zeroext %evl) {
166746cea3eSYeting Kuo; CHECK-LABEL: vp_splat_v8i32:
167746cea3eSYeting Kuo; CHECK:       # %bb.0:
168746cea3eSYeting Kuo; CHECK-NEXT:    vsetvli zero, a1, e32, m2, ta, ma
169746cea3eSYeting Kuo; CHECK-NEXT:    vmv.v.x v8, a0
170746cea3eSYeting Kuo; CHECK-NEXT:    ret
171746cea3eSYeting Kuo  %splat = call <8 x i32> @llvm.experimental.vp.splat.v8i32(i32 %val, <8 x i1> %m, i32 %evl)
172746cea3eSYeting Kuo  ret <8 x i32> %splat
173746cea3eSYeting Kuo}
174746cea3eSYeting Kuo
175746cea3eSYeting Kuodefine <16 x i32> @vp_splat_v16i32(i32 %val, <16 x i1> %m, i32 zeroext %evl) {
176746cea3eSYeting Kuo; CHECK-LABEL: vp_splat_v16i32:
177746cea3eSYeting Kuo; CHECK:       # %bb.0:
178746cea3eSYeting Kuo; CHECK-NEXT:    vsetvli zero, a1, e32, m4, ta, ma
179746cea3eSYeting Kuo; CHECK-NEXT:    vmv.v.x v8, a0
180746cea3eSYeting Kuo; CHECK-NEXT:    ret
181746cea3eSYeting Kuo  %splat = call <16 x i32> @llvm.experimental.vp.splat.v16i32(i32 %val, <16 x i1> %m, i32 %evl)
182746cea3eSYeting Kuo  ret <16 x i32> %splat
183746cea3eSYeting Kuo}
184746cea3eSYeting Kuo
185746cea3eSYeting Kuodefine <1 x i64> @vp_splat_v1i64(i64 %val, <1 x i1> %m, i32 zeroext %evl) {
186746cea3eSYeting Kuo; RV32-LABEL: vp_splat_v1i64:
187746cea3eSYeting Kuo; RV32:       # %bb.0:
188746cea3eSYeting Kuo; RV32-NEXT:    addi sp, sp, -16
189746cea3eSYeting Kuo; RV32-NEXT:    .cfi_def_cfa_offset 16
190746cea3eSYeting Kuo; RV32-NEXT:    sw a0, 8(sp)
1912967e5f8SAlex Bradbury; RV32-NEXT:    sw a1, 12(sp)
192746cea3eSYeting Kuo; RV32-NEXT:    addi a0, sp, 8
193746cea3eSYeting Kuo; RV32-NEXT:    vsetivli zero, 1, e64, m1, ta, ma
194746cea3eSYeting Kuo; RV32-NEXT:    vlse64.v v8, (a0), zero
195746cea3eSYeting Kuo; RV32-NEXT:    addi sp, sp, 16
196*97982a8cSdlav-sc; RV32-NEXT:    .cfi_def_cfa_offset 0
197746cea3eSYeting Kuo; RV32-NEXT:    ret
198746cea3eSYeting Kuo;
199746cea3eSYeting Kuo; RV64-LABEL: vp_splat_v1i64:
200746cea3eSYeting Kuo; RV64:       # %bb.0:
201746cea3eSYeting Kuo; RV64-NEXT:    vsetvli zero, a1, e64, m1, ta, ma
202746cea3eSYeting Kuo; RV64-NEXT:    vmv.v.x v8, a0
203746cea3eSYeting Kuo; RV64-NEXT:    ret
204746cea3eSYeting Kuo  %splat = call <1 x i64> @llvm.experimental.vp.splat.v1i64(i64 %val, <1 x i1> %m, i32 %evl)
205746cea3eSYeting Kuo  ret <1 x i64> %splat
206746cea3eSYeting Kuo}
207746cea3eSYeting Kuo
208746cea3eSYeting Kuodefine <2 x i64> @vp_splat_v2i64(i64 %val, <2 x i1> %m, i32 zeroext %evl) {
209746cea3eSYeting Kuo; RV32-LABEL: vp_splat_v2i64:
210746cea3eSYeting Kuo; RV32:       # %bb.0:
211746cea3eSYeting Kuo; RV32-NEXT:    addi sp, sp, -16
212746cea3eSYeting Kuo; RV32-NEXT:    .cfi_def_cfa_offset 16
213746cea3eSYeting Kuo; RV32-NEXT:    sw a0, 8(sp)
2142967e5f8SAlex Bradbury; RV32-NEXT:    sw a1, 12(sp)
215746cea3eSYeting Kuo; RV32-NEXT:    addi a0, sp, 8
216746cea3eSYeting Kuo; RV32-NEXT:    vsetivli zero, 2, e64, m1, ta, ma
217746cea3eSYeting Kuo; RV32-NEXT:    vlse64.v v8, (a0), zero
218746cea3eSYeting Kuo; RV32-NEXT:    addi sp, sp, 16
219*97982a8cSdlav-sc; RV32-NEXT:    .cfi_def_cfa_offset 0
220746cea3eSYeting Kuo; RV32-NEXT:    ret
221746cea3eSYeting Kuo;
222746cea3eSYeting Kuo; RV64-LABEL: vp_splat_v2i64:
223746cea3eSYeting Kuo; RV64:       # %bb.0:
224746cea3eSYeting Kuo; RV64-NEXT:    vsetvli zero, a1, e64, m1, ta, ma
225746cea3eSYeting Kuo; RV64-NEXT:    vmv.v.x v8, a0
226746cea3eSYeting Kuo; RV64-NEXT:    ret
227746cea3eSYeting Kuo  %splat = call <2 x i64> @llvm.experimental.vp.splat.v2i64(i64 %val, <2 x i1> %m, i32 %evl)
228746cea3eSYeting Kuo  ret <2 x i64> %splat
229746cea3eSYeting Kuo}
230746cea3eSYeting Kuo
231746cea3eSYeting Kuodefine <4 x i64> @vp_splat_v4i64(i64 %val, <4 x i1> %m, i32 zeroext %evl) {
232746cea3eSYeting Kuo; RV32-LABEL: vp_splat_v4i64:
233746cea3eSYeting Kuo; RV32:       # %bb.0:
234746cea3eSYeting Kuo; RV32-NEXT:    addi sp, sp, -16
235746cea3eSYeting Kuo; RV32-NEXT:    .cfi_def_cfa_offset 16
236746cea3eSYeting Kuo; RV32-NEXT:    sw a0, 8(sp)
2372967e5f8SAlex Bradbury; RV32-NEXT:    sw a1, 12(sp)
238746cea3eSYeting Kuo; RV32-NEXT:    addi a0, sp, 8
239746cea3eSYeting Kuo; RV32-NEXT:    vsetivli zero, 4, e64, m2, ta, ma
240746cea3eSYeting Kuo; RV32-NEXT:    vlse64.v v8, (a0), zero
241746cea3eSYeting Kuo; RV32-NEXT:    addi sp, sp, 16
242*97982a8cSdlav-sc; RV32-NEXT:    .cfi_def_cfa_offset 0
243746cea3eSYeting Kuo; RV32-NEXT:    ret
244746cea3eSYeting Kuo;
245746cea3eSYeting Kuo; RV64-LABEL: vp_splat_v4i64:
246746cea3eSYeting Kuo; RV64:       # %bb.0:
247746cea3eSYeting Kuo; RV64-NEXT:    vsetvli zero, a1, e64, m2, ta, ma
248746cea3eSYeting Kuo; RV64-NEXT:    vmv.v.x v8, a0
249746cea3eSYeting Kuo; RV64-NEXT:    ret
250746cea3eSYeting Kuo  %splat = call <4 x i64> @llvm.experimental.vp.splat.v4i64(i64 %val, <4 x i1> %m, i32 %evl)
251746cea3eSYeting Kuo  ret <4 x i64> %splat
252746cea3eSYeting Kuo}
253746cea3eSYeting Kuo
254746cea3eSYeting Kuodefine <8 x i64> @vp_splat_v8i64(i64 %val, <8 x i1> %m, i32 zeroext %evl) {
255746cea3eSYeting Kuo; RV32-LABEL: vp_splat_v8i64:
256746cea3eSYeting Kuo; RV32:       # %bb.0:
257746cea3eSYeting Kuo; RV32-NEXT:    addi sp, sp, -16
258746cea3eSYeting Kuo; RV32-NEXT:    .cfi_def_cfa_offset 16
259746cea3eSYeting Kuo; RV32-NEXT:    sw a0, 8(sp)
2602967e5f8SAlex Bradbury; RV32-NEXT:    sw a1, 12(sp)
261746cea3eSYeting Kuo; RV32-NEXT:    addi a0, sp, 8
262746cea3eSYeting Kuo; RV32-NEXT:    vsetivli zero, 8, e64, m4, ta, ma
263746cea3eSYeting Kuo; RV32-NEXT:    vlse64.v v8, (a0), zero
264746cea3eSYeting Kuo; RV32-NEXT:    addi sp, sp, 16
265*97982a8cSdlav-sc; RV32-NEXT:    .cfi_def_cfa_offset 0
266746cea3eSYeting Kuo; RV32-NEXT:    ret
267746cea3eSYeting Kuo;
268746cea3eSYeting Kuo; RV64-LABEL: vp_splat_v8i64:
269746cea3eSYeting Kuo; RV64:       # %bb.0:
270746cea3eSYeting Kuo; RV64-NEXT:    vsetvli zero, a1, e64, m4, ta, ma
271746cea3eSYeting Kuo; RV64-NEXT:    vmv.v.x v8, a0
272746cea3eSYeting Kuo; RV64-NEXT:    ret
273746cea3eSYeting Kuo  %splat = call <8 x i64> @llvm.experimental.vp.splat.v8i64(i64 %val, <8 x i1> %m, i32 %evl)
274746cea3eSYeting Kuo  ret <8 x i64> %splat
275746cea3eSYeting Kuo}
276746cea3eSYeting Kuo
277746cea3eSYeting Kuodefine <1 x half> @vp_splat_v1f16(half %val, <1 x i1> %m, i32 zeroext %evl) {
278746cea3eSYeting Kuo; CHECK-LABEL: vp_splat_v1f16:
279746cea3eSYeting Kuo; CHECK:       # %bb.0:
280746cea3eSYeting Kuo; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma
281746cea3eSYeting Kuo; CHECK-NEXT:    vfmv.v.f v8, fa0
282746cea3eSYeting Kuo; CHECK-NEXT:    ret
283746cea3eSYeting Kuo  %splat = call <1 x half> @llvm.experimental.vp.splat.v1f16(half %val, <1 x i1> %m, i32 %evl)
284746cea3eSYeting Kuo  ret <1 x half> %splat
285746cea3eSYeting Kuo}
286746cea3eSYeting Kuo
287746cea3eSYeting Kuodefine <2 x half> @vp_splat_v2f16(half %val, <2 x i1> %m, i32 zeroext %evl) {
288746cea3eSYeting Kuo; CHECK-LABEL: vp_splat_v2f16:
289746cea3eSYeting Kuo; CHECK:       # %bb.0:
290746cea3eSYeting Kuo; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma
291746cea3eSYeting Kuo; CHECK-NEXT:    vfmv.v.f v8, fa0
292746cea3eSYeting Kuo; CHECK-NEXT:    ret
293746cea3eSYeting Kuo  %splat = call <2 x half> @llvm.experimental.vp.splat.v2f16(half %val, <2 x i1> %m, i32 %evl)
294746cea3eSYeting Kuo  ret <2 x half> %splat
295746cea3eSYeting Kuo}
296746cea3eSYeting Kuo
297746cea3eSYeting Kuodefine <4 x half> @vp_splat_v4f16(half %val, <4 x i1> %m, i32 zeroext %evl) {
298746cea3eSYeting Kuo; CHECK-LABEL: vp_splat_v4f16:
299746cea3eSYeting Kuo; CHECK:       # %bb.0:
300746cea3eSYeting Kuo; CHECK-NEXT:    vsetvli zero, a0, e16, mf2, ta, ma
301746cea3eSYeting Kuo; CHECK-NEXT:    vfmv.v.f v8, fa0
302746cea3eSYeting Kuo; CHECK-NEXT:    ret
303746cea3eSYeting Kuo  %splat = call <4 x half> @llvm.experimental.vp.splat.v4f16(half %val, <4 x i1> %m, i32 %evl)
304746cea3eSYeting Kuo  ret <4 x half> %splat
305746cea3eSYeting Kuo}
306746cea3eSYeting Kuo
307746cea3eSYeting Kuodefine <8 x half> @vp_splat_v8f16(half %val, <8 x i1> %m, i32 zeroext %evl) {
308746cea3eSYeting Kuo; CHECK-LABEL: vp_splat_v8f16:
309746cea3eSYeting Kuo; CHECK:       # %bb.0:
310746cea3eSYeting Kuo; CHECK-NEXT:    vsetvli zero, a0, e16, m1, ta, ma
311746cea3eSYeting Kuo; CHECK-NEXT:    vfmv.v.f v8, fa0
312746cea3eSYeting Kuo; CHECK-NEXT:    ret
313746cea3eSYeting Kuo  %splat = call <8 x half> @llvm.experimental.vp.splat.v8f16(half %val, <8 x i1> %m, i32 %evl)
314746cea3eSYeting Kuo  ret <8 x half> %splat
315746cea3eSYeting Kuo}
316746cea3eSYeting Kuo
317746cea3eSYeting Kuodefine <16 x half> @vp_splat_v16f16(half %val, <16 x i1> %m, i32 zeroext %evl) {
318746cea3eSYeting Kuo; CHECK-LABEL: vp_splat_v16f16:
319746cea3eSYeting Kuo; CHECK:       # %bb.0:
320746cea3eSYeting Kuo; CHECK-NEXT:    vsetvli zero, a0, e16, m2, ta, ma
321746cea3eSYeting Kuo; CHECK-NEXT:    vfmv.v.f v8, fa0
322746cea3eSYeting Kuo; CHECK-NEXT:    ret
323746cea3eSYeting Kuo  %splat = call <16 x half> @llvm.experimental.vp.splat.v16f16(half %val, <16 x i1> %m, i32 %evl)
324746cea3eSYeting Kuo  ret <16 x half> %splat
325746cea3eSYeting Kuo}
326746cea3eSYeting Kuo
327746cea3eSYeting Kuodefine <32 x half> @vp_splat_v32f16(half %val, <32 x i1> %m, i32 zeroext %evl) {
328746cea3eSYeting Kuo; CHECK-LABEL: vp_splat_v32f16:
329746cea3eSYeting Kuo; CHECK:       # %bb.0:
330746cea3eSYeting Kuo; CHECK-NEXT:    vsetvli zero, a0, e16, m4, ta, ma
331746cea3eSYeting Kuo; CHECK-NEXT:    vfmv.v.f v8, fa0
332746cea3eSYeting Kuo; CHECK-NEXT:    ret
333746cea3eSYeting Kuo  %splat = call <32 x half> @llvm.experimental.vp.splat.v32f16(half %val, <32 x i1> %m, i32 %evl)
334746cea3eSYeting Kuo  ret <32 x half> %splat
335746cea3eSYeting Kuo}
336746cea3eSYeting Kuo
337746cea3eSYeting Kuodefine <1 x float> @vp_splat_v1f32(float %val, <1 x i1> %m, i32 zeroext %evl) {
338746cea3eSYeting Kuo; CHECK-LABEL: vp_splat_v1f32:
339746cea3eSYeting Kuo; CHECK:       # %bb.0:
340746cea3eSYeting Kuo; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma
341746cea3eSYeting Kuo; CHECK-NEXT:    vfmv.v.f v8, fa0
342746cea3eSYeting Kuo; CHECK-NEXT:    ret
343746cea3eSYeting Kuo  %splat = call <1 x float> @llvm.experimental.vp.splat.v1f32(float %val, <1 x i1> %m, i32 %evl)
344746cea3eSYeting Kuo  ret <1 x float> %splat
345746cea3eSYeting Kuo}
346746cea3eSYeting Kuo
347746cea3eSYeting Kuodefine <2 x float> @vp_splat_v2f32(float %val, <2 x i1> %m, i32 zeroext %evl) {
348746cea3eSYeting Kuo; CHECK-LABEL: vp_splat_v2f32:
349746cea3eSYeting Kuo; CHECK:       # %bb.0:
350746cea3eSYeting Kuo; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma
351746cea3eSYeting Kuo; CHECK-NEXT:    vfmv.v.f v8, fa0
352746cea3eSYeting Kuo; CHECK-NEXT:    ret
353746cea3eSYeting Kuo  %splat = call <2 x float> @llvm.experimental.vp.splat.v2f32(float %val, <2 x i1> %m, i32 %evl)
354746cea3eSYeting Kuo  ret <2 x float> %splat
355746cea3eSYeting Kuo}
356746cea3eSYeting Kuo
357746cea3eSYeting Kuodefine <4 x float> @vp_splat_v4f32(float %val, <4 x i1> %m, i32 zeroext %evl) {
358746cea3eSYeting Kuo; CHECK-LABEL: vp_splat_v4f32:
359746cea3eSYeting Kuo; CHECK:       # %bb.0:
360746cea3eSYeting Kuo; CHECK-NEXT:    vsetvli zero, a0, e32, m1, ta, ma
361746cea3eSYeting Kuo; CHECK-NEXT:    vfmv.v.f v8, fa0
362746cea3eSYeting Kuo; CHECK-NEXT:    ret
363746cea3eSYeting Kuo  %splat = call <4 x float> @llvm.experimental.vp.splat.v4f32(float %val, <4 x i1> %m, i32 %evl)
364746cea3eSYeting Kuo  ret <4 x float> %splat
365746cea3eSYeting Kuo}
366746cea3eSYeting Kuo
367746cea3eSYeting Kuodefine <8 x float> @vp_splat_v8f32(float %val, <8 x i1> %m, i32 zeroext %evl) {
368746cea3eSYeting Kuo; CHECK-LABEL: vp_splat_v8f32:
369746cea3eSYeting Kuo; CHECK:       # %bb.0:
370746cea3eSYeting Kuo; CHECK-NEXT:    vsetvli zero, a0, e32, m2, ta, ma
371746cea3eSYeting Kuo; CHECK-NEXT:    vfmv.v.f v8, fa0
372746cea3eSYeting Kuo; CHECK-NEXT:    ret
373746cea3eSYeting Kuo  %splat = call <8 x float> @llvm.experimental.vp.splat.v8f32(float %val, <8 x i1> %m, i32 %evl)
374746cea3eSYeting Kuo  ret <8 x float> %splat
375746cea3eSYeting Kuo}
376746cea3eSYeting Kuo
377746cea3eSYeting Kuodefine <16 x float> @vp_splat_v16f32(float %val, <16 x i1> %m, i32 zeroext %evl) {
378746cea3eSYeting Kuo; CHECK-LABEL: vp_splat_v16f32:
379746cea3eSYeting Kuo; CHECK:       # %bb.0:
380746cea3eSYeting Kuo; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, ma
381746cea3eSYeting Kuo; CHECK-NEXT:    vfmv.v.f v8, fa0
382746cea3eSYeting Kuo; CHECK-NEXT:    ret
383746cea3eSYeting Kuo  %splat = call <16 x float> @llvm.experimental.vp.splat.v16f32(float %val, <16 x i1> %m, i32 %evl)
384746cea3eSYeting Kuo  ret <16 x float> %splat
385746cea3eSYeting Kuo}
386746cea3eSYeting Kuo
387746cea3eSYeting Kuodefine <1 x double> @vp_splat_v1f64(double %val, <1 x i1> %m, i32 zeroext %evl) {
388746cea3eSYeting Kuo; CHECK-LABEL: vp_splat_v1f64:
389746cea3eSYeting Kuo; CHECK:       # %bb.0:
390746cea3eSYeting Kuo; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
391746cea3eSYeting Kuo; CHECK-NEXT:    vfmv.v.f v8, fa0
392746cea3eSYeting Kuo; CHECK-NEXT:    ret
393746cea3eSYeting Kuo  %splat = call <1 x double> @llvm.experimental.vp.splat.v1f64(double %val, <1 x i1> %m, i32 %evl)
394746cea3eSYeting Kuo  ret <1 x double> %splat
395746cea3eSYeting Kuo}
396746cea3eSYeting Kuo
397746cea3eSYeting Kuodefine <2 x double> @vp_splat_v2f64(double %val, <2 x i1> %m, i32 zeroext %evl) {
398746cea3eSYeting Kuo; CHECK-LABEL: vp_splat_v2f64:
399746cea3eSYeting Kuo; CHECK:       # %bb.0:
400746cea3eSYeting Kuo; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
401746cea3eSYeting Kuo; CHECK-NEXT:    vfmv.v.f v8, fa0
402746cea3eSYeting Kuo; CHECK-NEXT:    ret
403746cea3eSYeting Kuo  %splat = call <2 x double> @llvm.experimental.vp.splat.v2f64(double %val, <2 x i1> %m, i32 %evl)
404746cea3eSYeting Kuo  ret <2 x double> %splat
405746cea3eSYeting Kuo}
406746cea3eSYeting Kuo
407746cea3eSYeting Kuodefine <4 x double> @vp_splat_v4f64(double %val, <4 x i1> %m, i32 zeroext %evl) {
408746cea3eSYeting Kuo; CHECK-LABEL: vp_splat_v4f64:
409746cea3eSYeting Kuo; CHECK:       # %bb.0:
410746cea3eSYeting Kuo; CHECK-NEXT:    vsetvli zero, a0, e64, m2, ta, ma
411746cea3eSYeting Kuo; CHECK-NEXT:    vfmv.v.f v8, fa0
412746cea3eSYeting Kuo; CHECK-NEXT:    ret
413746cea3eSYeting Kuo  %splat = call <4 x double> @llvm.experimental.vp.splat.v4f64(double %val, <4 x i1> %m, i32 %evl)
414746cea3eSYeting Kuo  ret <4 x double> %splat
415746cea3eSYeting Kuo}
416746cea3eSYeting Kuo
417746cea3eSYeting Kuodefine <8 x double> @vp_splat_v8f64(double %val, <8 x i1> %m, i32 zeroext %evl) {
418746cea3eSYeting Kuo; CHECK-LABEL: vp_splat_v8f64:
419746cea3eSYeting Kuo; CHECK:       # %bb.0:
420746cea3eSYeting Kuo; CHECK-NEXT:    vsetvli zero, a0, e64, m4, ta, ma
421746cea3eSYeting Kuo; CHECK-NEXT:    vfmv.v.f v8, fa0
422746cea3eSYeting Kuo; CHECK-NEXT:    ret
423746cea3eSYeting Kuo  %splat = call <8 x double> @llvm.experimental.vp.splat.v8f64(double %val, <8 x i1> %m, i32 %evl)
424746cea3eSYeting Kuo  ret <8 x double> %splat
425746cea3eSYeting Kuo}
426746cea3eSYeting Kuo
427746cea3eSYeting Kuodefine <16 x i31> @vp_splat_v16i31(i31 %val, <16 x i1> %m, i32 zeroext %evl) {
428746cea3eSYeting Kuo; CHECK-LABEL: vp_splat_v16i31:
429746cea3eSYeting Kuo; CHECK:       # %bb.0:
430746cea3eSYeting Kuo; CHECK-NEXT:    vsetvli zero, a1, e32, m4, ta, ma
431746cea3eSYeting Kuo; CHECK-NEXT:    vmv.v.x v8, a0
432746cea3eSYeting Kuo; CHECK-NEXT:    ret
433746cea3eSYeting Kuo  %splat = call <16 x i31> @llvm.experimental.vp.splat.v16i31(i31 %val, <16 x i1> %m, i32 %evl)
434746cea3eSYeting Kuo  ret <16 x i31> %splat
435746cea3eSYeting Kuo}
436746cea3eSYeting Kuo
437746cea3eSYeting Kuodefine <15 x i32> @vp_splat_v15i32(i32 %val, <15 x i1> %m, i32 zeroext %evl) {
438746cea3eSYeting Kuo; CHECK-LABEL: vp_splat_v15i32:
439746cea3eSYeting Kuo; CHECK:       # %bb.0:
440746cea3eSYeting Kuo; CHECK-NEXT:    vsetvli zero, a1, e32, m4, ta, ma
441746cea3eSYeting Kuo; CHECK-NEXT:    vmv.v.x v8, a0
442746cea3eSYeting Kuo; CHECK-NEXT:    ret
443746cea3eSYeting Kuo  %splat = call <15 x i32> @llvm.experimental.vp.splat.v15i32(i32 %val, <15 x i1> %m, i32 %evl)
444746cea3eSYeting Kuo  ret <15 x i32> %splat
445746cea3eSYeting Kuo}
446746cea3eSYeting Kuo
447746cea3eSYeting Kuo; Split case.
448746cea3eSYeting Kuodefine <32 x i32> @vp_splat_v32i32(i32 %val, <32 x i1> %m, i32 zeroext %evl) {
449746cea3eSYeting Kuo; CHECK-LABEL: vp_splat_v32i32:
450746cea3eSYeting Kuo; CHECK:       # %bb.0:
451746cea3eSYeting Kuo; CHECK-NEXT:    vsetvli zero, a1, e32, m8, ta, ma
452746cea3eSYeting Kuo; CHECK-NEXT:    vmv.v.x v8, a0
453746cea3eSYeting Kuo; CHECK-NEXT:    ret
454746cea3eSYeting Kuo  %splat = call <32 x i32> @llvm.experimental.vp.splat.v32i32(i32 %val, <32 x i1> %m, i32 %evl)
455746cea3eSYeting Kuo  ret <32 x i32> %splat
456746cea3eSYeting Kuo}
457