xref: /llvm-project/llvm/test/CodeGen/RISCV/rvv/fixed-vectors-compress-int.ll (revision b799cc3418f5fda0dd1bbd80a9e7e97cca5f40c2)
1*b799cc34SPengcheng Wang; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 4
2*b799cc34SPengcheng Wang; RUN: llc -mtriple=riscv32 -mattr=+m,+v -verify-machineinstrs < %s | FileCheck %s
3*b799cc34SPengcheng Wang; RUN: llc -mtriple=riscv64 -mattr=+m,+v -verify-machineinstrs < %s | FileCheck %s
4*b799cc34SPengcheng Wang
5*b799cc34SPengcheng Wangdefine <1 x i8> @vector_compress_v1i8(<1 x i8> %v, <1 x i1> %mask) {
6*b799cc34SPengcheng Wang; CHECK-LABEL: vector_compress_v1i8:
7*b799cc34SPengcheng Wang; CHECK:       # %bb.0:
8*b799cc34SPengcheng Wang; CHECK-NEXT:    vsetivli zero, 1, e8, mf8, ta, ma
9*b799cc34SPengcheng Wang; CHECK-NEXT:    vcompress.vm v9, v8, v0
10*b799cc34SPengcheng Wang; CHECK-NEXT:    vmv1r.v v8, v9
11*b799cc34SPengcheng Wang; CHECK-NEXT:    ret
12*b799cc34SPengcheng Wang  %ret = call <1 x i8> @llvm.experimental.vector.compress.v1i8(<1 x i8> %v, <1 x i1> %mask, <1 x i8> undef)
13*b799cc34SPengcheng Wang  ret <1 x i8> %ret
14*b799cc34SPengcheng Wang}
15*b799cc34SPengcheng Wang
16*b799cc34SPengcheng Wangdefine <1 x i8> @vector_compress_v1i8_passthru(<1 x i8> %passthru, <1 x i8> %v, <1 x i1> %mask) {
17*b799cc34SPengcheng Wang; CHECK-LABEL: vector_compress_v1i8_passthru:
18*b799cc34SPengcheng Wang; CHECK:       # %bb.0:
19*b799cc34SPengcheng Wang; CHECK-NEXT:    vsetivli zero, 1, e8, mf8, tu, ma
20*b799cc34SPengcheng Wang; CHECK-NEXT:    vcompress.vm v8, v9, v0
21*b799cc34SPengcheng Wang; CHECK-NEXT:    ret
22*b799cc34SPengcheng Wang  %ret = call <1 x i8> @llvm.experimental.vector.compress.v1i8(<1 x i8> %v, <1 x i1> %mask, <1 x i8> %passthru)
23*b799cc34SPengcheng Wang  ret <1 x i8> %ret
24*b799cc34SPengcheng Wang}
25*b799cc34SPengcheng Wang
26*b799cc34SPengcheng Wangdefine <2 x i8> @vector_compress_v2i8(<2 x i8> %v, <2 x i1> %mask) {
27*b799cc34SPengcheng Wang; CHECK-LABEL: vector_compress_v2i8:
28*b799cc34SPengcheng Wang; CHECK:       # %bb.0:
29*b799cc34SPengcheng Wang; CHECK-NEXT:    vsetivli zero, 2, e8, mf8, ta, ma
30*b799cc34SPengcheng Wang; CHECK-NEXT:    vcompress.vm v9, v8, v0
31*b799cc34SPengcheng Wang; CHECK-NEXT:    vmv1r.v v8, v9
32*b799cc34SPengcheng Wang; CHECK-NEXT:    ret
33*b799cc34SPengcheng Wang  %ret = call <2 x i8> @llvm.experimental.vector.compress.v2i8(<2 x i8> %v, <2 x i1> %mask, <2 x i8> undef)
34*b799cc34SPengcheng Wang  ret <2 x i8> %ret
35*b799cc34SPengcheng Wang}
36*b799cc34SPengcheng Wang
37*b799cc34SPengcheng Wangdefine <2 x i8> @vector_compress_v2i8_passthru(<2 x i8> %passthru, <2 x i8> %v, <2 x i1> %mask) {
38*b799cc34SPengcheng Wang; CHECK-LABEL: vector_compress_v2i8_passthru:
39*b799cc34SPengcheng Wang; CHECK:       # %bb.0:
40*b799cc34SPengcheng Wang; CHECK-NEXT:    vsetivli zero, 2, e8, mf8, tu, ma
41*b799cc34SPengcheng Wang; CHECK-NEXT:    vcompress.vm v8, v9, v0
42*b799cc34SPengcheng Wang; CHECK-NEXT:    ret
43*b799cc34SPengcheng Wang  %ret = call <2 x i8> @llvm.experimental.vector.compress.v2i8(<2 x i8> %v, <2 x i1> %mask, <2 x i8> %passthru)
44*b799cc34SPengcheng Wang  ret <2 x i8> %ret
45*b799cc34SPengcheng Wang}
46*b799cc34SPengcheng Wang
47*b799cc34SPengcheng Wangdefine <4 x i8> @vector_compress_v4i8(<4 x i8> %v, <4 x i1> %mask) {
48*b799cc34SPengcheng Wang; CHECK-LABEL: vector_compress_v4i8:
49*b799cc34SPengcheng Wang; CHECK:       # %bb.0:
50*b799cc34SPengcheng Wang; CHECK-NEXT:    vsetivli zero, 4, e8, mf4, ta, ma
51*b799cc34SPengcheng Wang; CHECK-NEXT:    vcompress.vm v9, v8, v0
52*b799cc34SPengcheng Wang; CHECK-NEXT:    vmv1r.v v8, v9
53*b799cc34SPengcheng Wang; CHECK-NEXT:    ret
54*b799cc34SPengcheng Wang  %ret = call <4 x i8> @llvm.experimental.vector.compress.v4i8(<4 x i8> %v, <4 x i1> %mask, <4 x i8> undef)
55*b799cc34SPengcheng Wang  ret <4 x i8> %ret
56*b799cc34SPengcheng Wang}
57*b799cc34SPengcheng Wang
58*b799cc34SPengcheng Wangdefine <4 x i8> @vector_compress_v4i8_passthru(<4 x i8> %passthru, <4 x i8> %v, <4 x i1> %mask) {
59*b799cc34SPengcheng Wang; CHECK-LABEL: vector_compress_v4i8_passthru:
60*b799cc34SPengcheng Wang; CHECK:       # %bb.0:
61*b799cc34SPengcheng Wang; CHECK-NEXT:    vsetivli zero, 4, e8, mf4, tu, ma
62*b799cc34SPengcheng Wang; CHECK-NEXT:    vcompress.vm v8, v9, v0
63*b799cc34SPengcheng Wang; CHECK-NEXT:    ret
64*b799cc34SPengcheng Wang  %ret = call <4 x i8> @llvm.experimental.vector.compress.v4i8(<4 x i8> %v, <4 x i1> %mask, <4 x i8> %passthru)
65*b799cc34SPengcheng Wang  ret <4 x i8> %ret
66*b799cc34SPengcheng Wang}
67*b799cc34SPengcheng Wang
68*b799cc34SPengcheng Wangdefine <8 x i8> @vector_compress_v8i8(<8 x i8> %v, <8 x i1> %mask) {
69*b799cc34SPengcheng Wang; CHECK-LABEL: vector_compress_v8i8:
70*b799cc34SPengcheng Wang; CHECK:       # %bb.0:
71*b799cc34SPengcheng Wang; CHECK-NEXT:    vsetivli zero, 8, e8, mf2, ta, ma
72*b799cc34SPengcheng Wang; CHECK-NEXT:    vcompress.vm v9, v8, v0
73*b799cc34SPengcheng Wang; CHECK-NEXT:    vmv1r.v v8, v9
74*b799cc34SPengcheng Wang; CHECK-NEXT:    ret
75*b799cc34SPengcheng Wang  %ret = call <8 x i8> @llvm.experimental.vector.compress.v8i8(<8 x i8> %v, <8 x i1> %mask, <8 x i8> undef)
76*b799cc34SPengcheng Wang  ret <8 x i8> %ret
77*b799cc34SPengcheng Wang}
78*b799cc34SPengcheng Wang
79*b799cc34SPengcheng Wangdefine <8 x i8> @vector_compress_v8i8_passthru(<8 x i8> %passthru, <8 x i8> %v, <8 x i1> %mask) {
80*b799cc34SPengcheng Wang; CHECK-LABEL: vector_compress_v8i8_passthru:
81*b799cc34SPengcheng Wang; CHECK:       # %bb.0:
82*b799cc34SPengcheng Wang; CHECK-NEXT:    vsetivli zero, 8, e8, mf2, tu, ma
83*b799cc34SPengcheng Wang; CHECK-NEXT:    vcompress.vm v8, v9, v0
84*b799cc34SPengcheng Wang; CHECK-NEXT:    ret
85*b799cc34SPengcheng Wang  %ret = call <8 x i8> @llvm.experimental.vector.compress.v8i8(<8 x i8> %v, <8 x i1> %mask, <8 x i8> %passthru)
86*b799cc34SPengcheng Wang  ret <8 x i8> %ret
87*b799cc34SPengcheng Wang}
88*b799cc34SPengcheng Wang
89*b799cc34SPengcheng Wangdefine <1 x i16> @vector_compress_v1i16(<1 x i16> %v, <1 x i1> %mask) {
90*b799cc34SPengcheng Wang; CHECK-LABEL: vector_compress_v1i16:
91*b799cc34SPengcheng Wang; CHECK:       # %bb.0:
92*b799cc34SPengcheng Wang; CHECK-NEXT:    vsetivli zero, 1, e16, mf4, ta, ma
93*b799cc34SPengcheng Wang; CHECK-NEXT:    vcompress.vm v9, v8, v0
94*b799cc34SPengcheng Wang; CHECK-NEXT:    vmv1r.v v8, v9
95*b799cc34SPengcheng Wang; CHECK-NEXT:    ret
96*b799cc34SPengcheng Wang  %ret = call <1 x i16> @llvm.experimental.vector.compress.v1i16(<1 x i16> %v, <1 x i1> %mask, <1 x i16> undef)
97*b799cc34SPengcheng Wang  ret <1 x i16> %ret
98*b799cc34SPengcheng Wang}
99*b799cc34SPengcheng Wang
100*b799cc34SPengcheng Wangdefine <1 x i16> @vector_compress_v1i16_passthru(<1 x i16> %passthru, <1 x i16> %v, <1 x i1> %mask) {
101*b799cc34SPengcheng Wang; CHECK-LABEL: vector_compress_v1i16_passthru:
102*b799cc34SPengcheng Wang; CHECK:       # %bb.0:
103*b799cc34SPengcheng Wang; CHECK-NEXT:    vsetivli zero, 1, e16, mf4, tu, ma
104*b799cc34SPengcheng Wang; CHECK-NEXT:    vcompress.vm v8, v9, v0
105*b799cc34SPengcheng Wang; CHECK-NEXT:    ret
106*b799cc34SPengcheng Wang  %ret = call <1 x i16> @llvm.experimental.vector.compress.v1i16(<1 x i16> %v, <1 x i1> %mask, <1 x i16> %passthru)
107*b799cc34SPengcheng Wang  ret <1 x i16> %ret
108*b799cc34SPengcheng Wang}
109*b799cc34SPengcheng Wang
110*b799cc34SPengcheng Wangdefine <2 x i16> @vector_compress_v2i16(<2 x i16> %v, <2 x i1> %mask) {
111*b799cc34SPengcheng Wang; CHECK-LABEL: vector_compress_v2i16:
112*b799cc34SPengcheng Wang; CHECK:       # %bb.0:
113*b799cc34SPengcheng Wang; CHECK-NEXT:    vsetivli zero, 2, e16, mf4, ta, ma
114*b799cc34SPengcheng Wang; CHECK-NEXT:    vcompress.vm v9, v8, v0
115*b799cc34SPengcheng Wang; CHECK-NEXT:    vmv1r.v v8, v9
116*b799cc34SPengcheng Wang; CHECK-NEXT:    ret
117*b799cc34SPengcheng Wang  %ret = call <2 x i16> @llvm.experimental.vector.compress.v2i16(<2 x i16> %v, <2 x i1> %mask, <2 x i16> undef)
118*b799cc34SPengcheng Wang  ret <2 x i16> %ret
119*b799cc34SPengcheng Wang}
120*b799cc34SPengcheng Wang
121*b799cc34SPengcheng Wangdefine <2 x i16> @vector_compress_v2i16_passthru(<2 x i16> %passthru, <2 x i16> %v, <2 x i1> %mask) {
122*b799cc34SPengcheng Wang; CHECK-LABEL: vector_compress_v2i16_passthru:
123*b799cc34SPengcheng Wang; CHECK:       # %bb.0:
124*b799cc34SPengcheng Wang; CHECK-NEXT:    vsetivli zero, 2, e16, mf4, tu, ma
125*b799cc34SPengcheng Wang; CHECK-NEXT:    vcompress.vm v8, v9, v0
126*b799cc34SPengcheng Wang; CHECK-NEXT:    ret
127*b799cc34SPengcheng Wang  %ret = call <2 x i16> @llvm.experimental.vector.compress.v2i16(<2 x i16> %v, <2 x i1> %mask, <2 x i16> %passthru)
128*b799cc34SPengcheng Wang  ret <2 x i16> %ret
129*b799cc34SPengcheng Wang}
130*b799cc34SPengcheng Wang
131*b799cc34SPengcheng Wangdefine <4 x i16> @vector_compress_v4i16(<4 x i16> %v, <4 x i1> %mask) {
132*b799cc34SPengcheng Wang; CHECK-LABEL: vector_compress_v4i16:
133*b799cc34SPengcheng Wang; CHECK:       # %bb.0:
134*b799cc34SPengcheng Wang; CHECK-NEXT:    vsetivli zero, 4, e16, mf2, ta, ma
135*b799cc34SPengcheng Wang; CHECK-NEXT:    vcompress.vm v9, v8, v0
136*b799cc34SPengcheng Wang; CHECK-NEXT:    vmv1r.v v8, v9
137*b799cc34SPengcheng Wang; CHECK-NEXT:    ret
138*b799cc34SPengcheng Wang  %ret = call <4 x i16> @llvm.experimental.vector.compress.v4i16(<4 x i16> %v, <4 x i1> %mask, <4 x i16> undef)
139*b799cc34SPengcheng Wang  ret <4 x i16> %ret
140*b799cc34SPengcheng Wang}
141*b799cc34SPengcheng Wang
142*b799cc34SPengcheng Wangdefine <4 x i16> @vector_compress_v4i16_passthru(<4 x i16> %passthru, <4 x i16> %v, <4 x i1> %mask) {
143*b799cc34SPengcheng Wang; CHECK-LABEL: vector_compress_v4i16_passthru:
144*b799cc34SPengcheng Wang; CHECK:       # %bb.0:
145*b799cc34SPengcheng Wang; CHECK-NEXT:    vsetivli zero, 4, e16, mf2, tu, ma
146*b799cc34SPengcheng Wang; CHECK-NEXT:    vcompress.vm v8, v9, v0
147*b799cc34SPengcheng Wang; CHECK-NEXT:    ret
148*b799cc34SPengcheng Wang  %ret = call <4 x i16> @llvm.experimental.vector.compress.v4i16(<4 x i16> %v, <4 x i1> %mask, <4 x i16> %passthru)
149*b799cc34SPengcheng Wang  ret <4 x i16> %ret
150*b799cc34SPengcheng Wang}
151*b799cc34SPengcheng Wang
152*b799cc34SPengcheng Wangdefine <8 x i16> @vector_compress_v8i16(<8 x i16> %v, <8 x i1> %mask) {
153*b799cc34SPengcheng Wang; CHECK-LABEL: vector_compress_v8i16:
154*b799cc34SPengcheng Wang; CHECK:       # %bb.0:
155*b799cc34SPengcheng Wang; CHECK-NEXT:    vsetivli zero, 8, e16, m1, ta, ma
156*b799cc34SPengcheng Wang; CHECK-NEXT:    vcompress.vm v9, v8, v0
157*b799cc34SPengcheng Wang; CHECK-NEXT:    vmv.v.v v8, v9
158*b799cc34SPengcheng Wang; CHECK-NEXT:    ret
159*b799cc34SPengcheng Wang  %ret = call <8 x i16> @llvm.experimental.vector.compress.v8i16(<8 x i16> %v, <8 x i1> %mask, <8 x i16> undef)
160*b799cc34SPengcheng Wang  ret <8 x i16> %ret
161*b799cc34SPengcheng Wang}
162*b799cc34SPengcheng Wang
163*b799cc34SPengcheng Wangdefine <8 x i16> @vector_compress_v8i16_passthru(<8 x i16> %passthru, <8 x i16> %v, <8 x i1> %mask) {
164*b799cc34SPengcheng Wang; CHECK-LABEL: vector_compress_v8i16_passthru:
165*b799cc34SPengcheng Wang; CHECK:       # %bb.0:
166*b799cc34SPengcheng Wang; CHECK-NEXT:    vsetivli zero, 8, e16, m1, tu, ma
167*b799cc34SPengcheng Wang; CHECK-NEXT:    vcompress.vm v8, v9, v0
168*b799cc34SPengcheng Wang; CHECK-NEXT:    ret
169*b799cc34SPengcheng Wang  %ret = call <8 x i16> @llvm.experimental.vector.compress.v8i16(<8 x i16> %v, <8 x i1> %mask, <8 x i16> %passthru)
170*b799cc34SPengcheng Wang  ret <8 x i16> %ret
171*b799cc34SPengcheng Wang}
172*b799cc34SPengcheng Wang
173*b799cc34SPengcheng Wangdefine <1 x i32> @vector_compress_v1i32(<1 x i32> %v, <1 x i1> %mask) {
174*b799cc34SPengcheng Wang; CHECK-LABEL: vector_compress_v1i32:
175*b799cc34SPengcheng Wang; CHECK:       # %bb.0:
176*b799cc34SPengcheng Wang; CHECK-NEXT:    vsetivli zero, 1, e32, mf2, ta, ma
177*b799cc34SPengcheng Wang; CHECK-NEXT:    vcompress.vm v9, v8, v0
178*b799cc34SPengcheng Wang; CHECK-NEXT:    vmv1r.v v8, v9
179*b799cc34SPengcheng Wang; CHECK-NEXT:    ret
180*b799cc34SPengcheng Wang  %ret = call <1 x i32> @llvm.experimental.vector.compress.v1i32(<1 x i32> %v, <1 x i1> %mask, <1 x i32> undef)
181*b799cc34SPengcheng Wang  ret <1 x i32> %ret
182*b799cc34SPengcheng Wang}
183*b799cc34SPengcheng Wang
184*b799cc34SPengcheng Wangdefine <1 x i32> @vector_compress_v1i32_passthru(<1 x i32> %passthru, <1 x i32> %v, <1 x i1> %mask) {
185*b799cc34SPengcheng Wang; CHECK-LABEL: vector_compress_v1i32_passthru:
186*b799cc34SPengcheng Wang; CHECK:       # %bb.0:
187*b799cc34SPengcheng Wang; CHECK-NEXT:    vsetivli zero, 1, e32, mf2, tu, ma
188*b799cc34SPengcheng Wang; CHECK-NEXT:    vcompress.vm v8, v9, v0
189*b799cc34SPengcheng Wang; CHECK-NEXT:    ret
190*b799cc34SPengcheng Wang  %ret = call <1 x i32> @llvm.experimental.vector.compress.v1i32(<1 x i32> %v, <1 x i1> %mask, <1 x i32> %passthru)
191*b799cc34SPengcheng Wang  ret <1 x i32> %ret
192*b799cc34SPengcheng Wang}
193*b799cc34SPengcheng Wang
194*b799cc34SPengcheng Wangdefine <2 x i32> @vector_compress_v2i32(<2 x i32> %v, <2 x i1> %mask) {
195*b799cc34SPengcheng Wang; CHECK-LABEL: vector_compress_v2i32:
196*b799cc34SPengcheng Wang; CHECK:       # %bb.0:
197*b799cc34SPengcheng Wang; CHECK-NEXT:    vsetivli zero, 2, e32, mf2, ta, ma
198*b799cc34SPengcheng Wang; CHECK-NEXT:    vcompress.vm v9, v8, v0
199*b799cc34SPengcheng Wang; CHECK-NEXT:    vmv1r.v v8, v9
200*b799cc34SPengcheng Wang; CHECK-NEXT:    ret
201*b799cc34SPengcheng Wang  %ret = call <2 x i32> @llvm.experimental.vector.compress.v2i32(<2 x i32> %v, <2 x i1> %mask, <2 x i32> undef)
202*b799cc34SPengcheng Wang  ret <2 x i32> %ret
203*b799cc34SPengcheng Wang}
204*b799cc34SPengcheng Wang
205*b799cc34SPengcheng Wangdefine <2 x i32> @vector_compress_v2i32_passthru(<2 x i32> %passthru, <2 x i32> %v, <2 x i1> %mask) {
206*b799cc34SPengcheng Wang; CHECK-LABEL: vector_compress_v2i32_passthru:
207*b799cc34SPengcheng Wang; CHECK:       # %bb.0:
208*b799cc34SPengcheng Wang; CHECK-NEXT:    vsetivli zero, 2, e32, mf2, tu, ma
209*b799cc34SPengcheng Wang; CHECK-NEXT:    vcompress.vm v8, v9, v0
210*b799cc34SPengcheng Wang; CHECK-NEXT:    ret
211*b799cc34SPengcheng Wang  %ret = call <2 x i32> @llvm.experimental.vector.compress.v2i32(<2 x i32> %v, <2 x i1> %mask, <2 x i32> %passthru)
212*b799cc34SPengcheng Wang  ret <2 x i32> %ret
213*b799cc34SPengcheng Wang}
214*b799cc34SPengcheng Wang
215*b799cc34SPengcheng Wangdefine <4 x i32> @vector_compress_v4i32(<4 x i32> %v, <4 x i1> %mask) {
216*b799cc34SPengcheng Wang; CHECK-LABEL: vector_compress_v4i32:
217*b799cc34SPengcheng Wang; CHECK:       # %bb.0:
218*b799cc34SPengcheng Wang; CHECK-NEXT:    vsetivli zero, 4, e32, m1, ta, ma
219*b799cc34SPengcheng Wang; CHECK-NEXT:    vcompress.vm v9, v8, v0
220*b799cc34SPengcheng Wang; CHECK-NEXT:    vmv.v.v v8, v9
221*b799cc34SPengcheng Wang; CHECK-NEXT:    ret
222*b799cc34SPengcheng Wang  %ret = call <4 x i32> @llvm.experimental.vector.compress.v4i32(<4 x i32> %v, <4 x i1> %mask, <4 x i32> undef)
223*b799cc34SPengcheng Wang  ret <4 x i32> %ret
224*b799cc34SPengcheng Wang}
225*b799cc34SPengcheng Wang
226*b799cc34SPengcheng Wangdefine <4 x i32> @vector_compress_v4i32_passthru(<4 x i32> %passthru, <4 x i32> %v, <4 x i1> %mask) {
227*b799cc34SPengcheng Wang; CHECK-LABEL: vector_compress_v4i32_passthru:
228*b799cc34SPengcheng Wang; CHECK:       # %bb.0:
229*b799cc34SPengcheng Wang; CHECK-NEXT:    vsetivli zero, 4, e32, m1, tu, ma
230*b799cc34SPengcheng Wang; CHECK-NEXT:    vcompress.vm v8, v9, v0
231*b799cc34SPengcheng Wang; CHECK-NEXT:    ret
232*b799cc34SPengcheng Wang  %ret = call <4 x i32> @llvm.experimental.vector.compress.v4i32(<4 x i32> %v, <4 x i1> %mask, <4 x i32> %passthru)
233*b799cc34SPengcheng Wang  ret <4 x i32> %ret
234*b799cc34SPengcheng Wang}
235*b799cc34SPengcheng Wang
236*b799cc34SPengcheng Wangdefine <8 x i32> @vector_compress_v8i32(<8 x i32> %v, <8 x i1> %mask) {
237*b799cc34SPengcheng Wang; CHECK-LABEL: vector_compress_v8i32:
238*b799cc34SPengcheng Wang; CHECK:       # %bb.0:
239*b799cc34SPengcheng Wang; CHECK-NEXT:    vsetivli zero, 8, e32, m2, ta, ma
240*b799cc34SPengcheng Wang; CHECK-NEXT:    vcompress.vm v10, v8, v0
241*b799cc34SPengcheng Wang; CHECK-NEXT:    vmv.v.v v8, v10
242*b799cc34SPengcheng Wang; CHECK-NEXT:    ret
243*b799cc34SPengcheng Wang  %ret = call <8 x i32> @llvm.experimental.vector.compress.v8i32(<8 x i32> %v, <8 x i1> %mask, <8 x i32> undef)
244*b799cc34SPengcheng Wang  ret <8 x i32> %ret
245*b799cc34SPengcheng Wang}
246*b799cc34SPengcheng Wang
247*b799cc34SPengcheng Wangdefine <8 x i32> @vector_compress_v8i32_passthru(<8 x i32> %passthru, <8 x i32> %v, <8 x i1> %mask) {
248*b799cc34SPengcheng Wang; CHECK-LABEL: vector_compress_v8i32_passthru:
249*b799cc34SPengcheng Wang; CHECK:       # %bb.0:
250*b799cc34SPengcheng Wang; CHECK-NEXT:    vsetivli zero, 8, e32, m2, tu, ma
251*b799cc34SPengcheng Wang; CHECK-NEXT:    vcompress.vm v8, v10, v0
252*b799cc34SPengcheng Wang; CHECK-NEXT:    ret
253*b799cc34SPengcheng Wang  %ret = call <8 x i32> @llvm.experimental.vector.compress.v8i32(<8 x i32> %v, <8 x i1> %mask, <8 x i32> %passthru)
254*b799cc34SPengcheng Wang  ret <8 x i32> %ret
255*b799cc34SPengcheng Wang}
256*b799cc34SPengcheng Wang
257*b799cc34SPengcheng Wangdefine <1 x i64> @vector_compress_v1i64(<1 x i64> %v, <1 x i1> %mask) {
258*b799cc34SPengcheng Wang; CHECK-LABEL: vector_compress_v1i64:
259*b799cc34SPengcheng Wang; CHECK:       # %bb.0:
260*b799cc34SPengcheng Wang; CHECK-NEXT:    vsetivli zero, 1, e64, m1, ta, ma
261*b799cc34SPengcheng Wang; CHECK-NEXT:    vcompress.vm v9, v8, v0
262*b799cc34SPengcheng Wang; CHECK-NEXT:    vmv.v.v v8, v9
263*b799cc34SPengcheng Wang; CHECK-NEXT:    ret
264*b799cc34SPengcheng Wang  %ret = call <1 x i64> @llvm.experimental.vector.compress.v1i64(<1 x i64> %v, <1 x i1> %mask, <1 x i64> undef)
265*b799cc34SPengcheng Wang  ret <1 x i64> %ret
266*b799cc34SPengcheng Wang}
267*b799cc34SPengcheng Wang
268*b799cc34SPengcheng Wangdefine <1 x i64> @vector_compress_v1i64_passthru(<1 x i64> %passthru, <1 x i64> %v, <1 x i1> %mask) {
269*b799cc34SPengcheng Wang; CHECK-LABEL: vector_compress_v1i64_passthru:
270*b799cc34SPengcheng Wang; CHECK:       # %bb.0:
271*b799cc34SPengcheng Wang; CHECK-NEXT:    vsetivli zero, 1, e64, m1, tu, ma
272*b799cc34SPengcheng Wang; CHECK-NEXT:    vcompress.vm v8, v9, v0
273*b799cc34SPengcheng Wang; CHECK-NEXT:    ret
274*b799cc34SPengcheng Wang  %ret = call <1 x i64> @llvm.experimental.vector.compress.v1i64(<1 x i64> %v, <1 x i1> %mask, <1 x i64> %passthru)
275*b799cc34SPengcheng Wang  ret <1 x i64> %ret
276*b799cc34SPengcheng Wang}
277*b799cc34SPengcheng Wang
278*b799cc34SPengcheng Wangdefine <2 x i64> @vector_compress_v2i64(<2 x i64> %v, <2 x i1> %mask) {
279*b799cc34SPengcheng Wang; CHECK-LABEL: vector_compress_v2i64:
280*b799cc34SPengcheng Wang; CHECK:       # %bb.0:
281*b799cc34SPengcheng Wang; CHECK-NEXT:    vsetivli zero, 2, e64, m1, ta, ma
282*b799cc34SPengcheng Wang; CHECK-NEXT:    vcompress.vm v9, v8, v0
283*b799cc34SPengcheng Wang; CHECK-NEXT:    vmv.v.v v8, v9
284*b799cc34SPengcheng Wang; CHECK-NEXT:    ret
285*b799cc34SPengcheng Wang  %ret = call <2 x i64> @llvm.experimental.vector.compress.v2i64(<2 x i64> %v, <2 x i1> %mask, <2 x i64> undef)
286*b799cc34SPengcheng Wang  ret <2 x i64> %ret
287*b799cc34SPengcheng Wang}
288*b799cc34SPengcheng Wang
289*b799cc34SPengcheng Wangdefine <2 x i64> @vector_compress_v2i64_passthru(<2 x i64> %passthru, <2 x i64> %v, <2 x i1> %mask) {
290*b799cc34SPengcheng Wang; CHECK-LABEL: vector_compress_v2i64_passthru:
291*b799cc34SPengcheng Wang; CHECK:       # %bb.0:
292*b799cc34SPengcheng Wang; CHECK-NEXT:    vsetivli zero, 2, e64, m1, tu, ma
293*b799cc34SPengcheng Wang; CHECK-NEXT:    vcompress.vm v8, v9, v0
294*b799cc34SPengcheng Wang; CHECK-NEXT:    ret
295*b799cc34SPengcheng Wang  %ret = call <2 x i64> @llvm.experimental.vector.compress.v2i64(<2 x i64> %v, <2 x i1> %mask, <2 x i64> %passthru)
296*b799cc34SPengcheng Wang  ret <2 x i64> %ret
297*b799cc34SPengcheng Wang}
298*b799cc34SPengcheng Wang
299*b799cc34SPengcheng Wangdefine <4 x i64> @vector_compress_v4i64(<4 x i64> %v, <4 x i1> %mask) {
300*b799cc34SPengcheng Wang; CHECK-LABEL: vector_compress_v4i64:
301*b799cc34SPengcheng Wang; CHECK:       # %bb.0:
302*b799cc34SPengcheng Wang; CHECK-NEXT:    vsetivli zero, 4, e64, m2, ta, ma
303*b799cc34SPengcheng Wang; CHECK-NEXT:    vcompress.vm v10, v8, v0
304*b799cc34SPengcheng Wang; CHECK-NEXT:    vmv.v.v v8, v10
305*b799cc34SPengcheng Wang; CHECK-NEXT:    ret
306*b799cc34SPengcheng Wang  %ret = call <4 x i64> @llvm.experimental.vector.compress.v4i64(<4 x i64> %v, <4 x i1> %mask, <4 x i64> undef)
307*b799cc34SPengcheng Wang  ret <4 x i64> %ret
308*b799cc34SPengcheng Wang}
309*b799cc34SPengcheng Wang
310*b799cc34SPengcheng Wangdefine <4 x i64> @vector_compress_v4i64_passthru(<4 x i64> %passthru, <4 x i64> %v, <4 x i1> %mask) {
311*b799cc34SPengcheng Wang; CHECK-LABEL: vector_compress_v4i64_passthru:
312*b799cc34SPengcheng Wang; CHECK:       # %bb.0:
313*b799cc34SPengcheng Wang; CHECK-NEXT:    vsetivli zero, 4, e64, m2, tu, ma
314*b799cc34SPengcheng Wang; CHECK-NEXT:    vcompress.vm v8, v10, v0
315*b799cc34SPengcheng Wang; CHECK-NEXT:    ret
316*b799cc34SPengcheng Wang  %ret = call <4 x i64> @llvm.experimental.vector.compress.v4i64(<4 x i64> %v, <4 x i1> %mask, <4 x i64> %passthru)
317*b799cc34SPengcheng Wang  ret <4 x i64> %ret
318*b799cc34SPengcheng Wang}
319*b799cc34SPengcheng Wang
320*b799cc34SPengcheng Wangdefine <8 x i64> @vector_compress_v8i64(<8 x i64> %v, <8 x i1> %mask) {
321*b799cc34SPengcheng Wang; CHECK-LABEL: vector_compress_v8i64:
322*b799cc34SPengcheng Wang; CHECK:       # %bb.0:
323*b799cc34SPengcheng Wang; CHECK-NEXT:    vsetivli zero, 8, e64, m4, ta, ma
324*b799cc34SPengcheng Wang; CHECK-NEXT:    vcompress.vm v12, v8, v0
325*b799cc34SPengcheng Wang; CHECK-NEXT:    vmv.v.v v8, v12
326*b799cc34SPengcheng Wang; CHECK-NEXT:    ret
327*b799cc34SPengcheng Wang  %ret = call <8 x i64> @llvm.experimental.vector.compress.v8i64(<8 x i64> %v, <8 x i1> %mask, <8 x i64> undef)
328*b799cc34SPengcheng Wang  ret <8 x i64> %ret
329*b799cc34SPengcheng Wang}
330*b799cc34SPengcheng Wang
331*b799cc34SPengcheng Wangdefine <8 x i64> @vector_compress_v8i64_passthru(<8 x i64> %passthru, <8 x i64> %v, <8 x i1> %mask) {
332*b799cc34SPengcheng Wang; CHECK-LABEL: vector_compress_v8i64_passthru:
333*b799cc34SPengcheng Wang; CHECK:       # %bb.0:
334*b799cc34SPengcheng Wang; CHECK-NEXT:    vsetivli zero, 8, e64, m4, tu, ma
335*b799cc34SPengcheng Wang; CHECK-NEXT:    vcompress.vm v8, v12, v0
336*b799cc34SPengcheng Wang; CHECK-NEXT:    ret
337*b799cc34SPengcheng Wang  %ret = call <8 x i64> @llvm.experimental.vector.compress.v8i64(<8 x i64> %v, <8 x i1> %mask, <8 x i64> %passthru)
338*b799cc34SPengcheng Wang  ret <8 x i64> %ret
339*b799cc34SPengcheng Wang}
340