1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 4
2 ; RUN: llc -verify-machineinstrs -mtriple=riscv64 -mattr=+v,+d,+m,+zbb %s -o - | FileCheck %s --check-prefix=RV64
3 ; RUN: llc -verify-machineinstrs -mtriple=riscv32 -mattr=+v,+d,+m,+zbb %s -o - | FileCheck %s --check-prefix=RV32
5 ; Compress + store for i8 type
7 define void @test_compresstore_v1i8(ptr %p, <1 x i1> %mask, <1 x i8> %data) {
8 ; RV64-LABEL: test_compresstore_v1i8:
9 ; RV64: # %bb.0: # %entry
10 ; RV64-NEXT: vsetivli zero, 1, e8, mf8, ta, ma
11 ; RV64-NEXT: vcompress.vm v9, v8, v0
12 ; RV64-NEXT: vcpop.m a1, v0
13 ; RV64-NEXT: vsetvli zero, a1, e8, mf8, ta, ma
14 ; RV64-NEXT: vse8.v v9, (a0)
17 ; RV32-LABEL: test_compresstore_v1i8:
18 ; RV32: # %bb.0: # %entry
19 ; RV32-NEXT: vsetivli zero, 1, e8, mf8, ta, ma
20 ; RV32-NEXT: vcompress.vm v9, v8, v0
21 ; RV32-NEXT: vcpop.m a1, v0
22 ; RV32-NEXT: vsetvli zero, a1, e8, mf8, ta, ma
23 ; RV32-NEXT: vse8.v v9, (a0)
26 tail call void @llvm.masked.compressstore.v1i8(<1 x i8> %data, ptr align 1 %p, <1 x i1> %mask)
30 define void @test_compresstore_v2i8(ptr %p, <2 x i1> %mask, <2 x i8> %data) {
31 ; RV64-LABEL: test_compresstore_v2i8:
32 ; RV64: # %bb.0: # %entry
33 ; RV64-NEXT: vsetivli zero, 2, e8, mf8, ta, ma
34 ; RV64-NEXT: vcompress.vm v9, v8, v0
35 ; RV64-NEXT: vcpop.m a1, v0
36 ; RV64-NEXT: vsetvli zero, a1, e8, mf8, ta, ma
37 ; RV64-NEXT: vse8.v v9, (a0)
40 ; RV32-LABEL: test_compresstore_v2i8:
41 ; RV32: # %bb.0: # %entry
42 ; RV32-NEXT: vsetivli zero, 2, e8, mf8, ta, ma
43 ; RV32-NEXT: vcompress.vm v9, v8, v0
44 ; RV32-NEXT: vcpop.m a1, v0
45 ; RV32-NEXT: vsetvli zero, a1, e8, mf8, ta, ma
46 ; RV32-NEXT: vse8.v v9, (a0)
49 tail call void @llvm.masked.compressstore.v2i8(<2 x i8> %data, ptr align 1 %p, <2 x i1> %mask)
53 define void @test_compresstore_v4i8(ptr %p, <4 x i1> %mask, <4 x i8> %data) {
54 ; RV64-LABEL: test_compresstore_v4i8:
55 ; RV64: # %bb.0: # %entry
56 ; RV64-NEXT: vsetivli zero, 4, e8, mf4, ta, ma
57 ; RV64-NEXT: vcompress.vm v9, v8, v0
58 ; RV64-NEXT: vcpop.m a1, v0
59 ; RV64-NEXT: vsetvli zero, a1, e8, mf4, ta, ma
60 ; RV64-NEXT: vse8.v v9, (a0)
63 ; RV32-LABEL: test_compresstore_v4i8:
64 ; RV32: # %bb.0: # %entry
65 ; RV32-NEXT: vsetivli zero, 4, e8, mf4, ta, ma
66 ; RV32-NEXT: vcompress.vm v9, v8, v0
67 ; RV32-NEXT: vcpop.m a1, v0
68 ; RV32-NEXT: vsetvli zero, a1, e8, mf4, ta, ma
69 ; RV32-NEXT: vse8.v v9, (a0)
72 tail call void @llvm.masked.compressstore.v4i8(<4 x i8> %data, ptr align 1 %p, <4 x i1> %mask)
76 define void @test_compresstore_v8i8(ptr %p, <8 x i1> %mask, <8 x i8> %data) {
77 ; RV64-LABEL: test_compresstore_v8i8:
78 ; RV64: # %bb.0: # %entry
79 ; RV64-NEXT: vsetivli zero, 8, e8, mf2, ta, ma
80 ; RV64-NEXT: vcompress.vm v9, v8, v0
81 ; RV64-NEXT: vcpop.m a1, v0
82 ; RV64-NEXT: vsetvli zero, a1, e8, mf2, ta, ma
83 ; RV64-NEXT: vse8.v v9, (a0)
86 ; RV32-LABEL: test_compresstore_v8i8:
87 ; RV32: # %bb.0: # %entry
88 ; RV32-NEXT: vsetivli zero, 8, e8, mf2, ta, ma
89 ; RV32-NEXT: vcompress.vm v9, v8, v0
90 ; RV32-NEXT: vcpop.m a1, v0
91 ; RV32-NEXT: vsetvli zero, a1, e8, mf2, ta, ma
92 ; RV32-NEXT: vse8.v v9, (a0)
95 tail call void @llvm.masked.compressstore.v8i8(<8 x i8> %data, ptr align 1 %p, <8 x i1> %mask)
99 define void @test_compresstore_v16i8(ptr %p, <16 x i1> %mask, <16 x i8> %data) {
100 ; RV64-LABEL: test_compresstore_v16i8:
101 ; RV64: # %bb.0: # %entry
102 ; RV64-NEXT: vsetivli zero, 16, e8, m1, ta, ma
103 ; RV64-NEXT: vcompress.vm v9, v8, v0
104 ; RV64-NEXT: vcpop.m a1, v0
105 ; RV64-NEXT: vsetvli zero, a1, e8, m1, ta, ma
106 ; RV64-NEXT: vse8.v v9, (a0)
109 ; RV32-LABEL: test_compresstore_v16i8:
110 ; RV32: # %bb.0: # %entry
111 ; RV32-NEXT: vsetivli zero, 16, e8, m1, ta, ma
112 ; RV32-NEXT: vcompress.vm v9, v8, v0
113 ; RV32-NEXT: vcpop.m a1, v0
114 ; RV32-NEXT: vsetvli zero, a1, e8, m1, ta, ma
115 ; RV32-NEXT: vse8.v v9, (a0)
118 tail call void @llvm.masked.compressstore.v16i8(<16 x i8> %data, ptr align 1 %p, <16 x i1> %mask)
122 define void @test_compresstore_v32i8(ptr %p, <32 x i1> %mask, <32 x i8> %data) {
123 ; RV64-LABEL: test_compresstore_v32i8:
124 ; RV64: # %bb.0: # %entry
125 ; RV64-NEXT: li a1, 32
126 ; RV64-NEXT: vsetvli zero, a1, e8, m2, ta, ma
127 ; RV64-NEXT: vcompress.vm v10, v8, v0
128 ; RV64-NEXT: vcpop.m a1, v0
129 ; RV64-NEXT: vsetvli zero, a1, e8, m2, ta, ma
130 ; RV64-NEXT: vse8.v v10, (a0)
133 ; RV32-LABEL: test_compresstore_v32i8:
134 ; RV32: # %bb.0: # %entry
135 ; RV32-NEXT: li a1, 32
136 ; RV32-NEXT: vsetvli zero, a1, e8, m2, ta, ma
137 ; RV32-NEXT: vcompress.vm v10, v8, v0
138 ; RV32-NEXT: vcpop.m a1, v0
139 ; RV32-NEXT: vsetvli zero, a1, e8, m2, ta, ma
140 ; RV32-NEXT: vse8.v v10, (a0)
143 tail call void @llvm.masked.compressstore.v32i8(<32 x i8> %data, ptr align 1 %p, <32 x i1> %mask)
147 define void @test_compresstore_v64i8(ptr %p, <64 x i1> %mask, <64 x i8> %data) {
148 ; RV64-LABEL: test_compresstore_v64i8:
149 ; RV64: # %bb.0: # %entry
150 ; RV64-NEXT: li a1, 64
151 ; RV64-NEXT: vsetvli zero, a1, e8, m4, ta, ma
152 ; RV64-NEXT: vcompress.vm v12, v8, v0
153 ; RV64-NEXT: vcpop.m a1, v0
154 ; RV64-NEXT: vsetvli zero, a1, e8, m4, ta, ma
155 ; RV64-NEXT: vse8.v v12, (a0)
158 ; RV32-LABEL: test_compresstore_v64i8:
159 ; RV32: # %bb.0: # %entry
160 ; RV32-NEXT: li a1, 64
161 ; RV32-NEXT: vsetvli zero, a1, e8, m4, ta, ma
162 ; RV32-NEXT: vcompress.vm v12, v8, v0
163 ; RV32-NEXT: vcpop.m a1, v0
164 ; RV32-NEXT: vsetvli zero, a1, e8, m4, ta, ma
165 ; RV32-NEXT: vse8.v v12, (a0)
168 tail call void @llvm.masked.compressstore.v64i8(<64 x i8> %data, ptr align 1 %p, <64 x i1> %mask)
172 define void @test_compresstore_v128i8(ptr %p, <128 x i1> %mask, <128 x i8> %data) {
173 ; RV64-LABEL: test_compresstore_v128i8:
174 ; RV64: # %bb.0: # %entry
175 ; RV64-NEXT: li a1, 128
176 ; RV64-NEXT: vsetvli zero, a1, e8, m8, ta, ma
177 ; RV64-NEXT: vcompress.vm v16, v8, v0
178 ; RV64-NEXT: vcpop.m a1, v0
179 ; RV64-NEXT: vsetvli zero, a1, e8, m8, ta, ma
180 ; RV64-NEXT: vse8.v v16, (a0)
183 ; RV32-LABEL: test_compresstore_v128i8:
184 ; RV32: # %bb.0: # %entry
185 ; RV32-NEXT: li a1, 128
186 ; RV32-NEXT: vsetvli zero, a1, e8, m8, ta, ma
187 ; RV32-NEXT: vcompress.vm v16, v8, v0
188 ; RV32-NEXT: vcpop.m a1, v0
189 ; RV32-NEXT: vsetvli zero, a1, e8, m8, ta, ma
190 ; RV32-NEXT: vse8.v v16, (a0)
193 tail call void @llvm.masked.compressstore.v128i8(<128 x i8> %data, ptr align 1 %p, <128 x i1> %mask)
197 define void @test_compresstore_v256i8(ptr %p, <256 x i1> %mask, <256 x i8> %data) {
198 ; RV64-LABEL: test_compresstore_v256i8:
199 ; RV64: # %bb.0: # %entry
200 ; RV64-NEXT: addi sp, sp, -16
201 ; RV64-NEXT: .cfi_def_cfa_offset 16
202 ; RV64-NEXT: csrr a2, vlenb
203 ; RV64-NEXT: slli a2, a2, 4
204 ; RV64-NEXT: sub sp, sp, a2
205 ; RV64-NEXT: .cfi_escape 0x0f, 0x0d, 0x72, 0x00, 0x11, 0x10, 0x22, 0x11, 0x10, 0x92, 0xa2, 0x38, 0x00, 0x1e, 0x22 # sp + 16 + 16 * vlenb
206 ; RV64-NEXT: csrr a2, vlenb
207 ; RV64-NEXT: slli a2, a2, 3
208 ; RV64-NEXT: add a2, sp, a2
209 ; RV64-NEXT: addi a2, a2, 16
210 ; RV64-NEXT: vs8r.v v16, (a2) # Unknown-size Folded Spill
211 ; RV64-NEXT: li a2, 128
212 ; RV64-NEXT: vsetvli zero, a2, e8, m8, ta, ma
213 ; RV64-NEXT: vle8.v v16, (a1)
214 ; RV64-NEXT: addi a1, sp, 16
215 ; RV64-NEXT: vs8r.v v16, (a1) # Unknown-size Folded Spill
216 ; RV64-NEXT: vsetivli zero, 1, e64, m1, ta, ma
217 ; RV64-NEXT: vslidedown.vi v9, v0, 1
218 ; RV64-NEXT: vmv.x.s a1, v9
219 ; RV64-NEXT: vmv.x.s a3, v0
220 ; RV64-NEXT: csrr a4, vlenb
221 ; RV64-NEXT: slli a4, a4, 3
222 ; RV64-NEXT: add a4, sp, a4
223 ; RV64-NEXT: addi a4, a4, 16
224 ; RV64-NEXT: vl8r.v v24, (a4) # Unknown-size Folded Reload
225 ; RV64-NEXT: vsetvli zero, a2, e8, m8, ta, ma
226 ; RV64-NEXT: vcompress.vm v16, v24, v0
227 ; RV64-NEXT: vcpop.m a4, v0
228 ; RV64-NEXT: vsetvli zero, a4, e8, m8, ta, ma
229 ; RV64-NEXT: vse8.v v16, (a0)
230 ; RV64-NEXT: addi a4, sp, 16
231 ; RV64-NEXT: vl8r.v v24, (a4) # Unknown-size Folded Reload
232 ; RV64-NEXT: vsetvli zero, a2, e8, m8, ta, ma
233 ; RV64-NEXT: vcompress.vm v16, v24, v8
234 ; RV64-NEXT: vcpop.m a2, v8
235 ; RV64-NEXT: cpop a3, a3
236 ; RV64-NEXT: cpop a1, a1
237 ; RV64-NEXT: add a0, a0, a3
238 ; RV64-NEXT: add a0, a0, a1
239 ; RV64-NEXT: vsetvli zero, a2, e8, m8, ta, ma
240 ; RV64-NEXT: vse8.v v16, (a0)
241 ; RV64-NEXT: csrr a0, vlenb
242 ; RV64-NEXT: slli a0, a0, 4
243 ; RV64-NEXT: add sp, sp, a0
244 ; RV64-NEXT: addi sp, sp, 16
247 ; RV32-LABEL: test_compresstore_v256i8:
248 ; RV32: # %bb.0: # %entry
249 ; RV32-NEXT: vmv1r.v v7, v8
250 ; RV32-NEXT: li a2, 128
251 ; RV32-NEXT: vsetvli zero, a2, e8, m8, ta, ma
252 ; RV32-NEXT: vle8.v v24, (a1)
253 ; RV32-NEXT: vsetivli zero, 1, e64, m1, ta, ma
254 ; RV32-NEXT: vslidedown.vi v9, v0, 1
255 ; RV32-NEXT: li a1, 32
256 ; RV32-NEXT: vsrl.vx v10, v9, a1
257 ; RV32-NEXT: vmv.x.s a3, v10
258 ; RV32-NEXT: vsrl.vx v10, v0, a1
259 ; RV32-NEXT: vmv.x.s a1, v10
260 ; RV32-NEXT: vmv.x.s a4, v9
261 ; RV32-NEXT: vmv.x.s a5, v0
262 ; RV32-NEXT: vsetvli zero, a2, e8, m8, ta, ma
263 ; RV32-NEXT: vcompress.vm v8, v16, v0
264 ; RV32-NEXT: vcpop.m a6, v0
265 ; RV32-NEXT: vsetvli zero, a6, e8, m8, ta, ma
266 ; RV32-NEXT: vse8.v v8, (a0)
267 ; RV32-NEXT: cpop a1, a1
268 ; RV32-NEXT: cpop a5, a5
269 ; RV32-NEXT: add a1, a5, a1
270 ; RV32-NEXT: cpop a3, a3
271 ; RV32-NEXT: cpop a4, a4
272 ; RV32-NEXT: add a3, a4, a3
273 ; RV32-NEXT: add a1, a1, a3
274 ; RV32-NEXT: add a0, a0, a1
275 ; RV32-NEXT: vsetvli zero, a2, e8, m8, ta, ma
276 ; RV32-NEXT: vcompress.vm v8, v24, v7
277 ; RV32-NEXT: vcpop.m a1, v7
278 ; RV32-NEXT: vsetvli zero, a1, e8, m8, ta, ma
279 ; RV32-NEXT: vse8.v v8, (a0)
282 tail call void @llvm.masked.compressstore.v256i8(<256 x i8> %data, ptr align 1 %p, <256 x i1> %mask)
286 ; Compress + store for i16 type
288 define void @test_compresstore_v1i16(ptr %p, <1 x i1> %mask, <1 x i16> %data) {
289 ; RV64-LABEL: test_compresstore_v1i16:
290 ; RV64: # %bb.0: # %entry
291 ; RV64-NEXT: vsetivli zero, 1, e16, mf4, ta, ma
292 ; RV64-NEXT: vcompress.vm v9, v8, v0
293 ; RV64-NEXT: vcpop.m a1, v0
294 ; RV64-NEXT: vsetvli zero, a1, e16, mf4, ta, ma
295 ; RV64-NEXT: vse16.v v9, (a0)
298 ; RV32-LABEL: test_compresstore_v1i16:
299 ; RV32: # %bb.0: # %entry
300 ; RV32-NEXT: vsetivli zero, 1, e16, mf4, ta, ma
301 ; RV32-NEXT: vcompress.vm v9, v8, v0
302 ; RV32-NEXT: vcpop.m a1, v0
303 ; RV32-NEXT: vsetvli zero, a1, e16, mf4, ta, ma
304 ; RV32-NEXT: vse16.v v9, (a0)
307 tail call void @llvm.masked.compressstore.v1i16(<1 x i16> %data, ptr align 2 %p, <1 x i1> %mask)
311 define void @test_compresstore_v2i16(ptr %p, <2 x i1> %mask, <2 x i16> %data) {
312 ; RV64-LABEL: test_compresstore_v2i16:
313 ; RV64: # %bb.0: # %entry
314 ; RV64-NEXT: vsetivli zero, 2, e16, mf4, ta, ma
315 ; RV64-NEXT: vcompress.vm v9, v8, v0
316 ; RV64-NEXT: vcpop.m a1, v0
317 ; RV64-NEXT: vsetvli zero, a1, e16, mf4, ta, ma
318 ; RV64-NEXT: vse16.v v9, (a0)
321 ; RV32-LABEL: test_compresstore_v2i16:
322 ; RV32: # %bb.0: # %entry
323 ; RV32-NEXT: vsetivli zero, 2, e16, mf4, ta, ma
324 ; RV32-NEXT: vcompress.vm v9, v8, v0
325 ; RV32-NEXT: vcpop.m a1, v0
326 ; RV32-NEXT: vsetvli zero, a1, e16, mf4, ta, ma
327 ; RV32-NEXT: vse16.v v9, (a0)
330 tail call void @llvm.masked.compressstore.v2i16(<2 x i16> %data, ptr align 2 %p, <2 x i1> %mask)
334 define void @test_compresstore_v4i16(ptr %p, <4 x i1> %mask, <4 x i16> %data) {
335 ; RV64-LABEL: test_compresstore_v4i16:
336 ; RV64: # %bb.0: # %entry
337 ; RV64-NEXT: vsetivli zero, 4, e16, mf2, ta, ma
338 ; RV64-NEXT: vcompress.vm v9, v8, v0
339 ; RV64-NEXT: vcpop.m a1, v0
340 ; RV64-NEXT: vsetvli zero, a1, e16, mf2, ta, ma
341 ; RV64-NEXT: vse16.v v9, (a0)
344 ; RV32-LABEL: test_compresstore_v4i16:
345 ; RV32: # %bb.0: # %entry
346 ; RV32-NEXT: vsetivli zero, 4, e16, mf2, ta, ma
347 ; RV32-NEXT: vcompress.vm v9, v8, v0
348 ; RV32-NEXT: vcpop.m a1, v0
349 ; RV32-NEXT: vsetvli zero, a1, e16, mf2, ta, ma
350 ; RV32-NEXT: vse16.v v9, (a0)
353 tail call void @llvm.masked.compressstore.v4i16(<4 x i16> %data, ptr align 2 %p, <4 x i1> %mask)
357 define void @test_compresstore_v8i16(ptr %p, <8 x i1> %mask, <8 x i16> %data) {
358 ; RV64-LABEL: test_compresstore_v8i16:
359 ; RV64: # %bb.0: # %entry
360 ; RV64-NEXT: vsetivli zero, 8, e16, m1, ta, ma
361 ; RV64-NEXT: vcompress.vm v9, v8, v0
362 ; RV64-NEXT: vcpop.m a1, v0
363 ; RV64-NEXT: vsetvli zero, a1, e16, m1, ta, ma
364 ; RV64-NEXT: vse16.v v9, (a0)
367 ; RV32-LABEL: test_compresstore_v8i16:
368 ; RV32: # %bb.0: # %entry
369 ; RV32-NEXT: vsetivli zero, 8, e16, m1, ta, ma
370 ; RV32-NEXT: vcompress.vm v9, v8, v0
371 ; RV32-NEXT: vcpop.m a1, v0
372 ; RV32-NEXT: vsetvli zero, a1, e16, m1, ta, ma
373 ; RV32-NEXT: vse16.v v9, (a0)
376 tail call void @llvm.masked.compressstore.v8i16(<8 x i16> %data, ptr align 2 %p, <8 x i1> %mask)
380 define void @test_compresstore_v16i16(ptr %p, <16 x i1> %mask, <16 x i16> %data) {
381 ; RV64-LABEL: test_compresstore_v16i16:
382 ; RV64: # %bb.0: # %entry
383 ; RV64-NEXT: vsetivli zero, 16, e16, m2, ta, ma
384 ; RV64-NEXT: vcompress.vm v10, v8, v0
385 ; RV64-NEXT: vcpop.m a1, v0
386 ; RV64-NEXT: vsetvli zero, a1, e16, m2, ta, ma
387 ; RV64-NEXT: vse16.v v10, (a0)
390 ; RV32-LABEL: test_compresstore_v16i16:
391 ; RV32: # %bb.0: # %entry
392 ; RV32-NEXT: vsetivli zero, 16, e16, m2, ta, ma
393 ; RV32-NEXT: vcompress.vm v10, v8, v0
394 ; RV32-NEXT: vcpop.m a1, v0
395 ; RV32-NEXT: vsetvli zero, a1, e16, m2, ta, ma
396 ; RV32-NEXT: vse16.v v10, (a0)
399 tail call void @llvm.masked.compressstore.v16i16(<16 x i16> %data, ptr align 2 %p, <16 x i1> %mask)
403 define void @test_compresstore_v32i16(ptr %p, <32 x i1> %mask, <32 x i16> %data) {
404 ; RV64-LABEL: test_compresstore_v32i16:
405 ; RV64: # %bb.0: # %entry
406 ; RV64-NEXT: li a1, 32
407 ; RV64-NEXT: vsetvli zero, a1, e16, m4, ta, ma
408 ; RV64-NEXT: vcompress.vm v12, v8, v0
409 ; RV64-NEXT: vcpop.m a1, v0
410 ; RV64-NEXT: vsetvli zero, a1, e16, m4, ta, ma
411 ; RV64-NEXT: vse16.v v12, (a0)
414 ; RV32-LABEL: test_compresstore_v32i16:
415 ; RV32: # %bb.0: # %entry
416 ; RV32-NEXT: li a1, 32
417 ; RV32-NEXT: vsetvli zero, a1, e16, m4, ta, ma
418 ; RV32-NEXT: vcompress.vm v12, v8, v0
419 ; RV32-NEXT: vcpop.m a1, v0
420 ; RV32-NEXT: vsetvli zero, a1, e16, m4, ta, ma
421 ; RV32-NEXT: vse16.v v12, (a0)
424 tail call void @llvm.masked.compressstore.v32i16(<32 x i16> %data, ptr align 2 %p, <32 x i1> %mask)
428 define void @test_compresstore_v64i16(ptr %p, <64 x i1> %mask, <64 x i16> %data) {
429 ; RV64-LABEL: test_compresstore_v64i16:
430 ; RV64: # %bb.0: # %entry
431 ; RV64-NEXT: li a1, 64
432 ; RV64-NEXT: vsetvli zero, a1, e16, m8, ta, ma
433 ; RV64-NEXT: vcompress.vm v16, v8, v0
434 ; RV64-NEXT: vcpop.m a1, v0
435 ; RV64-NEXT: vsetvli zero, a1, e16, m8, ta, ma
436 ; RV64-NEXT: vse16.v v16, (a0)
439 ; RV32-LABEL: test_compresstore_v64i16:
440 ; RV32: # %bb.0: # %entry
441 ; RV32-NEXT: li a1, 64
442 ; RV32-NEXT: vsetvli zero, a1, e16, m8, ta, ma
443 ; RV32-NEXT: vcompress.vm v16, v8, v0
444 ; RV32-NEXT: vcpop.m a1, v0
445 ; RV32-NEXT: vsetvli zero, a1, e16, m8, ta, ma
446 ; RV32-NEXT: vse16.v v16, (a0)
449 tail call void @llvm.masked.compressstore.v64i16(<64 x i16> %data, ptr align 2 %p, <64 x i1> %mask)
453 define void @test_compresstore_v128i16(ptr %p, <128 x i1> %mask, <128 x i16> %data) {
454 ; RV64-LABEL: test_compresstore_v128i16:
455 ; RV64: # %bb.0: # %entry
456 ; RV64-NEXT: li a1, 64
457 ; RV64-NEXT: vsetvli zero, a1, e16, m8, ta, ma
458 ; RV64-NEXT: vcompress.vm v24, v8, v0
459 ; RV64-NEXT: vcpop.m a2, v0
460 ; RV64-NEXT: vsetvli zero, a2, e16, m8, ta, ma
461 ; RV64-NEXT: vse16.v v24, (a0)
462 ; RV64-NEXT: vsetivli zero, 8, e8, m1, ta, ma
463 ; RV64-NEXT: vslidedown.vi v8, v0, 8
464 ; RV64-NEXT: vsetvli zero, a1, e16, m8, ta, ma
465 ; RV64-NEXT: vcompress.vm v24, v16, v8
466 ; RV64-NEXT: vcpop.m a2, v8
467 ; RV64-NEXT: vsetvli zero, a1, e64, m1, ta, ma
468 ; RV64-NEXT: vmv.x.s a1, v0
469 ; RV64-NEXT: cpop a1, a1
470 ; RV64-NEXT: slli a1, a1, 1
471 ; RV64-NEXT: add a0, a0, a1
472 ; RV64-NEXT: vsetvli zero, a2, e16, m8, ta, ma
473 ; RV64-NEXT: vse16.v v24, (a0)
476 ; RV32-LABEL: test_compresstore_v128i16:
477 ; RV32: # %bb.0: # %entry
478 ; RV32-NEXT: li a1, 64
479 ; RV32-NEXT: vsetvli zero, a1, e16, m8, ta, ma
480 ; RV32-NEXT: vcompress.vm v24, v8, v0
481 ; RV32-NEXT: vcpop.m a2, v0
482 ; RV32-NEXT: vsetvli zero, a2, e16, m8, ta, ma
483 ; RV32-NEXT: vse16.v v24, (a0)
484 ; RV32-NEXT: vsetivli zero, 8, e8, m1, ta, ma
485 ; RV32-NEXT: vslidedown.vi v24, v0, 8
486 ; RV32-NEXT: vsetvli zero, a1, e16, m8, ta, ma
487 ; RV32-NEXT: vcompress.vm v8, v16, v24
488 ; RV32-NEXT: vcpop.m a1, v24
489 ; RV32-NEXT: li a2, 32
490 ; RV32-NEXT: vsetivli zero, 1, e64, m1, ta, ma
491 ; RV32-NEXT: vsrl.vx v16, v0, a2
492 ; RV32-NEXT: vmv.x.s a2, v16
493 ; RV32-NEXT: cpop a2, a2
494 ; RV32-NEXT: vmv.x.s a3, v0
495 ; RV32-NEXT: cpop a3, a3
496 ; RV32-NEXT: add a2, a3, a2
497 ; RV32-NEXT: slli a2, a2, 1
498 ; RV32-NEXT: add a0, a0, a2
499 ; RV32-NEXT: vsetvli zero, a1, e16, m8, ta, ma
500 ; RV32-NEXT: vse16.v v8, (a0)
503 tail call void @llvm.masked.compressstore.v128i16(<128 x i16> %data, ptr align 2 %p, <128 x i1> %mask)
507 ; Compress + store for i32 type
509 define void @test_compresstore_v1i32(ptr %p, <1 x i1> %mask, <1 x i32> %data) {
510 ; RV64-LABEL: test_compresstore_v1i32:
511 ; RV64: # %bb.0: # %entry
512 ; RV64-NEXT: vsetivli zero, 1, e32, mf2, ta, ma
513 ; RV64-NEXT: vcompress.vm v9, v8, v0
514 ; RV64-NEXT: vcpop.m a1, v0
515 ; RV64-NEXT: vsetvli zero, a1, e32, mf2, ta, ma
516 ; RV64-NEXT: vse32.v v9, (a0)
519 ; RV32-LABEL: test_compresstore_v1i32:
520 ; RV32: # %bb.0: # %entry
521 ; RV32-NEXT: vsetivli zero, 1, e32, mf2, ta, ma
522 ; RV32-NEXT: vcompress.vm v9, v8, v0
523 ; RV32-NEXT: vcpop.m a1, v0
524 ; RV32-NEXT: vsetvli zero, a1, e32, mf2, ta, ma
525 ; RV32-NEXT: vse32.v v9, (a0)
528 tail call void @llvm.masked.compressstore.v1i32(<1 x i32> %data, ptr align 4 %p, <1 x i1> %mask)
532 define void @test_compresstore_v2i32(ptr %p, <2 x i1> %mask, <2 x i32> %data) {
533 ; RV64-LABEL: test_compresstore_v2i32:
534 ; RV64: # %bb.0: # %entry
535 ; RV64-NEXT: vsetivli zero, 2, e32, mf2, ta, ma
536 ; RV64-NEXT: vcompress.vm v9, v8, v0
537 ; RV64-NEXT: vcpop.m a1, v0
538 ; RV64-NEXT: vsetvli zero, a1, e32, mf2, ta, ma
539 ; RV64-NEXT: vse32.v v9, (a0)
542 ; RV32-LABEL: test_compresstore_v2i32:
543 ; RV32: # %bb.0: # %entry
544 ; RV32-NEXT: vsetivli zero, 2, e32, mf2, ta, ma
545 ; RV32-NEXT: vcompress.vm v9, v8, v0
546 ; RV32-NEXT: vcpop.m a1, v0
547 ; RV32-NEXT: vsetvli zero, a1, e32, mf2, ta, ma
548 ; RV32-NEXT: vse32.v v9, (a0)
551 tail call void @llvm.masked.compressstore.v2i32(<2 x i32> %data, ptr align 4 %p, <2 x i1> %mask)
555 define void @test_compresstore_v4i32(ptr %p, <4 x i1> %mask, <4 x i32> %data) {
556 ; RV64-LABEL: test_compresstore_v4i32:
557 ; RV64: # %bb.0: # %entry
558 ; RV64-NEXT: vsetivli zero, 4, e32, m1, ta, ma
559 ; RV64-NEXT: vcompress.vm v9, v8, v0
560 ; RV64-NEXT: vcpop.m a1, v0
561 ; RV64-NEXT: vsetvli zero, a1, e32, m1, ta, ma
562 ; RV64-NEXT: vse32.v v9, (a0)
565 ; RV32-LABEL: test_compresstore_v4i32:
566 ; RV32: # %bb.0: # %entry
567 ; RV32-NEXT: vsetivli zero, 4, e32, m1, ta, ma
568 ; RV32-NEXT: vcompress.vm v9, v8, v0
569 ; RV32-NEXT: vcpop.m a1, v0
570 ; RV32-NEXT: vsetvli zero, a1, e32, m1, ta, ma
571 ; RV32-NEXT: vse32.v v9, (a0)
574 tail call void @llvm.masked.compressstore.v4i32(<4 x i32> %data, ptr align 4 %p, <4 x i1> %mask)
578 define void @test_compresstore_v8i32(ptr %p, <8 x i1> %mask, <8 x i32> %data) {
579 ; RV64-LABEL: test_compresstore_v8i32:
580 ; RV64: # %bb.0: # %entry
581 ; RV64-NEXT: vsetivli zero, 8, e32, m2, ta, ma
582 ; RV64-NEXT: vcompress.vm v10, v8, v0
583 ; RV64-NEXT: vcpop.m a1, v0
584 ; RV64-NEXT: vsetvli zero, a1, e32, m2, ta, ma
585 ; RV64-NEXT: vse32.v v10, (a0)
588 ; RV32-LABEL: test_compresstore_v8i32:
589 ; RV32: # %bb.0: # %entry
590 ; RV32-NEXT: vsetivli zero, 8, e32, m2, ta, ma
591 ; RV32-NEXT: vcompress.vm v10, v8, v0
592 ; RV32-NEXT: vcpop.m a1, v0
593 ; RV32-NEXT: vsetvli zero, a1, e32, m2, ta, ma
594 ; RV32-NEXT: vse32.v v10, (a0)
597 tail call void @llvm.masked.compressstore.v8i32(<8 x i32> %data, ptr align 4 %p, <8 x i1> %mask)
601 define void @test_compresstore_v16i32(ptr %p, <16 x i1> %mask, <16 x i32> %data) {
602 ; RV64-LABEL: test_compresstore_v16i32:
603 ; RV64: # %bb.0: # %entry
604 ; RV64-NEXT: vsetivli zero, 16, e32, m4, ta, ma
605 ; RV64-NEXT: vcompress.vm v12, v8, v0
606 ; RV64-NEXT: vcpop.m a1, v0
607 ; RV64-NEXT: vsetvli zero, a1, e32, m4, ta, ma
608 ; RV64-NEXT: vse32.v v12, (a0)
611 ; RV32-LABEL: test_compresstore_v16i32:
612 ; RV32: # %bb.0: # %entry
613 ; RV32-NEXT: vsetivli zero, 16, e32, m4, ta, ma
614 ; RV32-NEXT: vcompress.vm v12, v8, v0
615 ; RV32-NEXT: vcpop.m a1, v0
616 ; RV32-NEXT: vsetvli zero, a1, e32, m4, ta, ma
617 ; RV32-NEXT: vse32.v v12, (a0)
620 tail call void @llvm.masked.compressstore.v16i32(<16 x i32> %data, ptr align 4 %p, <16 x i1> %mask)
624 define void @test_compresstore_v32i32(ptr %p, <32 x i1> %mask, <32 x i32> %data) {
625 ; RV64-LABEL: test_compresstore_v32i32:
626 ; RV64: # %bb.0: # %entry
627 ; RV64-NEXT: li a1, 32
628 ; RV64-NEXT: vsetvli zero, a1, e32, m8, ta, ma
629 ; RV64-NEXT: vcompress.vm v16, v8, v0
630 ; RV64-NEXT: vcpop.m a1, v0
631 ; RV64-NEXT: vsetvli zero, a1, e32, m8, ta, ma
632 ; RV64-NEXT: vse32.v v16, (a0)
635 ; RV32-LABEL: test_compresstore_v32i32:
636 ; RV32: # %bb.0: # %entry
637 ; RV32-NEXT: li a1, 32
638 ; RV32-NEXT: vsetvli zero, a1, e32, m8, ta, ma
639 ; RV32-NEXT: vcompress.vm v16, v8, v0
640 ; RV32-NEXT: vcpop.m a1, v0
641 ; RV32-NEXT: vsetvli zero, a1, e32, m8, ta, ma
642 ; RV32-NEXT: vse32.v v16, (a0)
645 tail call void @llvm.masked.compressstore.v32i32(<32 x i32> %data, ptr align 4 %p, <32 x i1> %mask)
649 define void @test_compresstore_v64i32(ptr %p, <64 x i1> %mask, <64 x i32> %data) {
650 ; RV64-LABEL: test_compresstore_v64i32:
651 ; RV64: # %bb.0: # %entry
652 ; RV64-NEXT: li a1, 32
653 ; RV64-NEXT: vsetvli zero, a1, e32, m8, ta, ma
654 ; RV64-NEXT: vcompress.vm v24, v8, v0
655 ; RV64-NEXT: vcpop.m a2, v0
656 ; RV64-NEXT: vsetvli zero, a2, e32, m8, ta, ma
657 ; RV64-NEXT: vse32.v v24, (a0)
658 ; RV64-NEXT: vsetivli zero, 4, e8, mf2, ta, ma
659 ; RV64-NEXT: vslidedown.vi v8, v0, 4
660 ; RV64-NEXT: vsetvli zero, a1, e32, m8, ta, ma
661 ; RV64-NEXT: vcompress.vm v24, v16, v8
662 ; RV64-NEXT: vcpop.m a1, v8
663 ; RV64-NEXT: vmv.x.s a2, v0
664 ; RV64-NEXT: cpopw a2, a2
665 ; RV64-NEXT: slli a2, a2, 2
666 ; RV64-NEXT: add a0, a0, a2
667 ; RV64-NEXT: vsetvli zero, a1, e32, m8, ta, ma
668 ; RV64-NEXT: vse32.v v24, (a0)
671 ; RV32-LABEL: test_compresstore_v64i32:
672 ; RV32: # %bb.0: # %entry
673 ; RV32-NEXT: li a1, 32
674 ; RV32-NEXT: vsetvli zero, a1, e32, m8, ta, ma
675 ; RV32-NEXT: vcompress.vm v24, v8, v0
676 ; RV32-NEXT: vcpop.m a2, v0
677 ; RV32-NEXT: vsetvli zero, a2, e32, m8, ta, ma
678 ; RV32-NEXT: vse32.v v24, (a0)
679 ; RV32-NEXT: vsetivli zero, 4, e8, mf2, ta, ma
680 ; RV32-NEXT: vslidedown.vi v8, v0, 4
681 ; RV32-NEXT: vsetvli zero, a1, e32, m8, ta, ma
682 ; RV32-NEXT: vcompress.vm v24, v16, v8
683 ; RV32-NEXT: vcpop.m a1, v8
684 ; RV32-NEXT: vmv.x.s a2, v0
685 ; RV32-NEXT: cpop a2, a2
686 ; RV32-NEXT: slli a2, a2, 2
687 ; RV32-NEXT: add a0, a0, a2
688 ; RV32-NEXT: vsetvli zero, a1, e32, m8, ta, ma
689 ; RV32-NEXT: vse32.v v24, (a0)
692 tail call void @llvm.masked.compressstore.v64i32(<64 x i32> %data, ptr align 4 %p, <64 x i1> %mask)
696 ; Compress + store for i64 type
698 define void @test_compresstore_v1i64(ptr %p, <1 x i1> %mask, <1 x i64> %data) {
699 ; RV64-LABEL: test_compresstore_v1i64:
700 ; RV64: # %bb.0: # %entry
701 ; RV64-NEXT: vsetivli zero, 1, e64, m1, ta, ma
702 ; RV64-NEXT: vcompress.vm v9, v8, v0
703 ; RV64-NEXT: vcpop.m a1, v0
704 ; RV64-NEXT: vsetvli zero, a1, e64, m1, ta, ma
705 ; RV64-NEXT: vse64.v v9, (a0)
708 ; RV32-LABEL: test_compresstore_v1i64:
709 ; RV32: # %bb.0: # %entry
710 ; RV32-NEXT: vsetivli zero, 1, e64, m1, ta, ma
711 ; RV32-NEXT: vcompress.vm v9, v8, v0
712 ; RV32-NEXT: vcpop.m a1, v0
713 ; RV32-NEXT: vsetvli zero, a1, e64, m1, ta, ma
714 ; RV32-NEXT: vse64.v v9, (a0)
717 tail call void @llvm.masked.compressstore.v1i64(<1 x i64> %data, ptr align 8 %p, <1 x i1> %mask)
721 define void @test_compresstore_v2i64(ptr %p, <2 x i1> %mask, <2 x i64> %data) {
722 ; RV64-LABEL: test_compresstore_v2i64:
723 ; RV64: # %bb.0: # %entry
724 ; RV64-NEXT: vsetivli zero, 2, e64, m1, ta, ma
725 ; RV64-NEXT: vcompress.vm v9, v8, v0
726 ; RV64-NEXT: vcpop.m a1, v0
727 ; RV64-NEXT: vsetvli zero, a1, e64, m1, ta, ma
728 ; RV64-NEXT: vse64.v v9, (a0)
731 ; RV32-LABEL: test_compresstore_v2i64:
732 ; RV32: # %bb.0: # %entry
733 ; RV32-NEXT: vsetivli zero, 2, e64, m1, ta, ma
734 ; RV32-NEXT: vcompress.vm v9, v8, v0
735 ; RV32-NEXT: vcpop.m a1, v0
736 ; RV32-NEXT: vsetvli zero, a1, e64, m1, ta, ma
737 ; RV32-NEXT: vse64.v v9, (a0)
740 tail call void @llvm.masked.compressstore.v2i64(<2 x i64> %data, ptr align 8 %p, <2 x i1> %mask)
744 define void @test_compresstore_v4i64(ptr %p, <4 x i1> %mask, <4 x i64> %data) {
745 ; RV64-LABEL: test_compresstore_v4i64:
746 ; RV64: # %bb.0: # %entry
747 ; RV64-NEXT: vsetivli zero, 4, e64, m2, ta, ma
748 ; RV64-NEXT: vcompress.vm v10, v8, v0
749 ; RV64-NEXT: vcpop.m a1, v0
750 ; RV64-NEXT: vsetvli zero, a1, e64, m2, ta, ma
751 ; RV64-NEXT: vse64.v v10, (a0)
754 ; RV32-LABEL: test_compresstore_v4i64:
755 ; RV32: # %bb.0: # %entry
756 ; RV32-NEXT: vsetivli zero, 4, e64, m2, ta, ma
757 ; RV32-NEXT: vcompress.vm v10, v8, v0
758 ; RV32-NEXT: vcpop.m a1, v0
759 ; RV32-NEXT: vsetvli zero, a1, e64, m2, ta, ma
760 ; RV32-NEXT: vse64.v v10, (a0)
763 tail call void @llvm.masked.compressstore.v4i64(<4 x i64> %data, ptr align 8 %p, <4 x i1> %mask)
767 define void @test_compresstore_v8i64(ptr %p, <8 x i1> %mask, <8 x i64> %data) {
768 ; RV64-LABEL: test_compresstore_v8i64:
769 ; RV64: # %bb.0: # %entry
770 ; RV64-NEXT: vsetivli zero, 8, e64, m4, ta, ma
771 ; RV64-NEXT: vcompress.vm v12, v8, v0
772 ; RV64-NEXT: vcpop.m a1, v0
773 ; RV64-NEXT: vsetvli zero, a1, e64, m4, ta, ma
774 ; RV64-NEXT: vse64.v v12, (a0)
777 ; RV32-LABEL: test_compresstore_v8i64:
778 ; RV32: # %bb.0: # %entry
779 ; RV32-NEXT: vsetivli zero, 8, e64, m4, ta, ma
780 ; RV32-NEXT: vcompress.vm v12, v8, v0
781 ; RV32-NEXT: vcpop.m a1, v0
782 ; RV32-NEXT: vsetvli zero, a1, e64, m4, ta, ma
783 ; RV32-NEXT: vse64.v v12, (a0)
786 tail call void @llvm.masked.compressstore.v8i64(<8 x i64> %data, ptr align 8 %p, <8 x i1> %mask)
790 define void @test_compresstore_v16i64(ptr %p, <16 x i1> %mask, <16 x i64> %data) {
791 ; RV64-LABEL: test_compresstore_v16i64:
792 ; RV64: # %bb.0: # %entry
793 ; RV64-NEXT: vsetivli zero, 16, e64, m8, ta, ma
794 ; RV64-NEXT: vcompress.vm v16, v8, v0
795 ; RV64-NEXT: vcpop.m a1, v0
796 ; RV64-NEXT: vsetvli zero, a1, e64, m8, ta, ma
797 ; RV64-NEXT: vse64.v v16, (a0)
800 ; RV32-LABEL: test_compresstore_v16i64:
801 ; RV32: # %bb.0: # %entry
802 ; RV32-NEXT: vsetivli zero, 16, e64, m8, ta, ma
803 ; RV32-NEXT: vcompress.vm v16, v8, v0
804 ; RV32-NEXT: vcpop.m a1, v0
805 ; RV32-NEXT: vsetvli zero, a1, e64, m8, ta, ma
806 ; RV32-NEXT: vse64.v v16, (a0)
809 tail call void @llvm.masked.compressstore.v16i64(<16 x i64> %data, ptr align 8 %p, <16 x i1> %mask)
813 define void @test_compresstore_v32i64(ptr %p, <32 x i1> %mask, <32 x i64> %data) {
814 ; RV64-LABEL: test_compresstore_v32i64:
815 ; RV64: # %bb.0: # %entry
816 ; RV64-NEXT: vsetivli zero, 16, e64, m8, ta, ma
817 ; RV64-NEXT: vcompress.vm v24, v8, v0
818 ; RV64-NEXT: vcpop.m a1, v0
819 ; RV64-NEXT: vsetvli zero, a1, e64, m8, ta, ma
820 ; RV64-NEXT: vse64.v v24, (a0)
821 ; RV64-NEXT: vsetivli zero, 2, e8, mf4, ta, ma
822 ; RV64-NEXT: vslidedown.vi v8, v0, 2
823 ; RV64-NEXT: vsetivli zero, 16, e64, m8, ta, ma
824 ; RV64-NEXT: vcompress.vm v24, v16, v8
825 ; RV64-NEXT: vsetvli zero, zero, e16, m2, ta, ma
826 ; RV64-NEXT: vmv.x.s a1, v0
827 ; RV64-NEXT: zext.h a1, a1
828 ; RV64-NEXT: cpopw a1, a1
829 ; RV64-NEXT: slli a1, a1, 3
830 ; RV64-NEXT: add a0, a0, a1
831 ; RV64-NEXT: vcpop.m a1, v8
832 ; RV64-NEXT: vsetvli zero, a1, e64, m8, ta, ma
833 ; RV64-NEXT: vse64.v v24, (a0)
836 ; RV32-LABEL: test_compresstore_v32i64:
837 ; RV32: # %bb.0: # %entry
838 ; RV32-NEXT: vsetivli zero, 16, e64, m8, ta, ma
839 ; RV32-NEXT: vcompress.vm v24, v8, v0
840 ; RV32-NEXT: vcpop.m a1, v0
841 ; RV32-NEXT: vsetvli zero, a1, e64, m8, ta, ma
842 ; RV32-NEXT: vse64.v v24, (a0)
843 ; RV32-NEXT: vsetivli zero, 2, e8, mf4, ta, ma
844 ; RV32-NEXT: vslidedown.vi v8, v0, 2
845 ; RV32-NEXT: vsetivli zero, 16, e64, m8, ta, ma
846 ; RV32-NEXT: vcompress.vm v24, v16, v8
847 ; RV32-NEXT: vsetvli zero, zero, e16, m2, ta, ma
848 ; RV32-NEXT: vmv.x.s a1, v0
849 ; RV32-NEXT: zext.h a1, a1
850 ; RV32-NEXT: cpop a1, a1
851 ; RV32-NEXT: slli a1, a1, 3
852 ; RV32-NEXT: add a0, a0, a1
853 ; RV32-NEXT: vcpop.m a1, v8
854 ; RV32-NEXT: vsetvli zero, a1, e64, m8, ta, ma
855 ; RV32-NEXT: vse64.v v24, (a0)
858 tail call void @llvm.masked.compressstore.v32i64(<32 x i64> %data, ptr align 8 %p, <32 x i1> %mask)
862 declare void @llvm.masked.compressstore.v1i8(<1 x i8>, ptr, <1 x i1>)
863 declare void @llvm.masked.compressstore.v2i8(<2 x i8>, ptr, <2 x i1>)
864 declare void @llvm.masked.compressstore.v4i8(<4 x i8>, ptr, <4 x i1>)
865 declare void @llvm.masked.compressstore.v8i8(<8 x i8>, ptr, <8 x i1>)
866 declare void @llvm.masked.compressstore.v16i8(<16 x i8>, ptr, <16 x i1>)
867 declare void @llvm.masked.compressstore.v32i8(<32 x i8>, ptr, <32 x i1>)
868 declare void @llvm.masked.compressstore.v64i8(<64 x i8>, ptr, <64 x i1>)
869 declare void @llvm.masked.compressstore.v128i8(<128 x i8>, ptr, <128 x i1>)
870 declare void @llvm.masked.compressstore.v256i8(<256 x i8>, ptr, <256 x i1>)
872 declare void @llvm.masked.compressstore.v1i16(<1 x i16>, ptr, <1 x i1>)
873 declare void @llvm.masked.compressstore.v2i16(<2 x i16>, ptr, <2 x i1>)
874 declare void @llvm.masked.compressstore.v4i16(<4 x i16>, ptr, <4 x i1>)
875 declare void @llvm.masked.compressstore.v8i16(<8 x i16>, ptr, <8 x i1>)
876 declare void @llvm.masked.compressstore.v16i16(<16 x i16>, ptr, <16 x i1>)
877 declare void @llvm.masked.compressstore.v32i16(<32 x i16>, ptr, <32 x i1>)
878 declare void @llvm.masked.compressstore.v64i16(<64 x i16>, ptr, <64 x i1>)
879 declare void @llvm.masked.compressstore.v128i16(<128 x i16>, ptr, <128 x i1>)
881 declare void @llvm.masked.compressstore.v1i32(<1 x i32>, ptr, <1 x i1>)
882 declare void @llvm.masked.compressstore.v2i32(<2 x i32>, ptr, <2 x i1>)
883 declare void @llvm.masked.compressstore.v4i32(<4 x i32>, ptr, <4 x i1>)
884 declare void @llvm.masked.compressstore.v8i32(<8 x i32>, ptr, <8 x i1>)
885 declare void @llvm.masked.compressstore.v16i32(<16 x i32>, ptr, <16 x i1>)
886 declare void @llvm.masked.compressstore.v32i32(<32 x i32>, ptr, <32 x i1>)
887 declare void @llvm.masked.compressstore.v64i32(<64 x i32>, ptr, <64 x i1>)
889 declare void @llvm.masked.compressstore.v1i64(<1 x i64>, ptr, <1 x i1>)
890 declare void @llvm.masked.compressstore.v2i64(<2 x i64>, ptr, <2 x i1>)
891 declare void @llvm.masked.compressstore.v4i64(<4 x i64>, ptr, <4 x i1>)
892 declare void @llvm.masked.compressstore.v8i64(<8 x i64>, ptr, <8 x i1>)
893 declare void @llvm.masked.compressstore.v16i64(<16 x i64>, ptr, <16 x i1>)
894 declare void @llvm.masked.compressstore.v32i64(<32 x i64>, ptr, <32 x i1>)