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 4 5; Compress + store for i8 type 6 7define 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) 15; RV64-NEXT: ret 16; 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) 24; RV32-NEXT: ret 25entry: 26 tail call void @llvm.masked.compressstore.v1i8(<1 x i8> %data, ptr align 1 %p, <1 x i1> %mask) 27 ret void 28} 29 30define 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) 38; RV64-NEXT: ret 39; 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) 47; RV32-NEXT: ret 48entry: 49 tail call void @llvm.masked.compressstore.v2i8(<2 x i8> %data, ptr align 1 %p, <2 x i1> %mask) 50 ret void 51} 52 53define 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) 61; RV64-NEXT: ret 62; 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) 70; RV32-NEXT: ret 71entry: 72 tail call void @llvm.masked.compressstore.v4i8(<4 x i8> %data, ptr align 1 %p, <4 x i1> %mask) 73 ret void 74} 75 76define 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) 84; RV64-NEXT: ret 85; 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) 93; RV32-NEXT: ret 94entry: 95 tail call void @llvm.masked.compressstore.v8i8(<8 x i8> %data, ptr align 1 %p, <8 x i1> %mask) 96 ret void 97} 98 99define 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) 107; RV64-NEXT: ret 108; 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) 116; RV32-NEXT: ret 117entry: 118 tail call void @llvm.masked.compressstore.v16i8(<16 x i8> %data, ptr align 1 %p, <16 x i1> %mask) 119 ret void 120} 121 122define 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) 131; RV64-NEXT: ret 132; 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) 141; RV32-NEXT: ret 142entry: 143 tail call void @llvm.masked.compressstore.v32i8(<32 x i8> %data, ptr align 1 %p, <32 x i1> %mask) 144 ret void 145} 146 147define 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) 156; RV64-NEXT: ret 157; 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) 166; RV32-NEXT: ret 167entry: 168 tail call void @llvm.masked.compressstore.v64i8(<64 x i8> %data, ptr align 1 %p, <64 x i1> %mask) 169 ret void 170} 171 172define 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) 181; RV64-NEXT: ret 182; 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) 191; RV32-NEXT: ret 192entry: 193 tail call void @llvm.masked.compressstore.v128i8(<128 x i8> %data, ptr align 1 %p, <128 x i1> %mask) 194 ret void 195} 196 197define 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: vsetivli zero, 1, e64, m1, ta, ma 201; RV64-NEXT: vmv1r.v v7, v8 202; RV64-NEXT: li a2, 128 203; RV64-NEXT: vslidedown.vi v9, v0, 1 204; RV64-NEXT: vmv.x.s a3, v0 205; RV64-NEXT: vsetvli zero, a2, e8, m8, ta, ma 206; RV64-NEXT: vle8.v v24, (a1) 207; RV64-NEXT: vsetvli zero, a2, e64, m1, ta, ma 208; RV64-NEXT: vmv.x.s a1, v9 209; RV64-NEXT: vsetvli zero, a2, e8, m8, ta, ma 210; RV64-NEXT: vcompress.vm v8, v16, v0 211; RV64-NEXT: vcpop.m a4, v0 212; RV64-NEXT: vsetvli zero, a4, e8, m8, ta, ma 213; RV64-NEXT: vse8.v v8, (a0) 214; RV64-NEXT: vsetvli zero, a2, e8, m8, ta, ma 215; RV64-NEXT: vcpop.m a2, v7 216; RV64-NEXT: cpop a3, a3 217; RV64-NEXT: cpop a1, a1 218; RV64-NEXT: add a0, a0, a3 219; RV64-NEXT: vcompress.vm v8, v24, v7 220; RV64-NEXT: add a0, a0, a1 221; RV64-NEXT: vsetvli zero, a2, e8, m8, ta, ma 222; RV64-NEXT: vse8.v v8, (a0) 223; RV64-NEXT: ret 224; 225; RV32-LABEL: test_compresstore_v256i8: 226; RV32: # %bb.0: # %entry 227; RV32-NEXT: addi sp, sp, -16 228; RV32-NEXT: .cfi_def_cfa_offset 16 229; RV32-NEXT: csrr a2, vlenb 230; RV32-NEXT: slli a2, a2, 3 231; RV32-NEXT: sub sp, sp, a2 232; RV32-NEXT: .cfi_escape 0x0f, 0x0d, 0x72, 0x00, 0x11, 0x10, 0x22, 0x11, 0x08, 0x92, 0xa2, 0x38, 0x00, 0x1e, 0x22 # sp + 16 + 8 * vlenb 233; RV32-NEXT: vsetivli zero, 1, e64, m1, ta, ma 234; RV32-NEXT: vmv8r.v v24, v16 235; RV32-NEXT: li a2, 128 236; RV32-NEXT: vslidedown.vi v9, v0, 1 237; RV32-NEXT: li a3, 32 238; RV32-NEXT: vmv.x.s a4, v0 239; RV32-NEXT: vsetvli zero, a2, e8, m8, ta, ma 240; RV32-NEXT: vle8.v v16, (a1) 241; RV32-NEXT: addi a1, sp, 16 242; RV32-NEXT: vs8r.v v16, (a1) # Unknown-size Folded Spill 243; RV32-NEXT: vsetivli zero, 1, e64, m1, ta, ma 244; RV32-NEXT: vsrl.vx v10, v9, a3 245; RV32-NEXT: vmv.x.s a1, v9 246; RV32-NEXT: vsrl.vx v9, v0, a3 247; RV32-NEXT: vsetvli zero, a2, e8, m8, ta, ma 248; RV32-NEXT: vcompress.vm v16, v24, v0 249; RV32-NEXT: vcpop.m a3, v0 250; RV32-NEXT: cpop a4, a4 251; RV32-NEXT: vsetvli zero, a2, e64, m1, ta, ma 252; RV32-NEXT: vmv.x.s a5, v10 253; RV32-NEXT: vmv.x.s a6, v9 254; RV32-NEXT: vsetvli zero, a3, e8, m8, ta, ma 255; RV32-NEXT: vse8.v v16, (a0) 256; RV32-NEXT: cpop a1, a1 257; RV32-NEXT: cpop a3, a6 258; RV32-NEXT: cpop a5, a5 259; RV32-NEXT: add a3, a4, a3 260; RV32-NEXT: add a1, a1, a5 261; RV32-NEXT: add a1, a3, a1 262; RV32-NEXT: addi a3, sp, 16 263; RV32-NEXT: vl8r.v v24, (a3) # Unknown-size Folded Reload 264; RV32-NEXT: vsetvli zero, a2, e8, m8, ta, ma 265; RV32-NEXT: vcompress.vm v16, v24, v8 266; RV32-NEXT: add a0, a0, a1 267; RV32-NEXT: vcpop.m a1, v8 268; RV32-NEXT: vsetvli zero, a1, e8, m8, ta, ma 269; RV32-NEXT: vse8.v v16, (a0) 270; RV32-NEXT: csrr a0, vlenb 271; RV32-NEXT: slli a0, a0, 3 272; RV32-NEXT: add sp, sp, a0 273; RV32-NEXT: .cfi_def_cfa sp, 16 274; RV32-NEXT: addi sp, sp, 16 275; RV32-NEXT: .cfi_def_cfa_offset 0 276; RV32-NEXT: ret 277entry: 278 tail call void @llvm.masked.compressstore.v256i8(<256 x i8> %data, ptr align 1 %p, <256 x i1> %mask) 279 ret void 280} 281 282; Compress + store for i16 type 283 284define void @test_compresstore_v1i16(ptr %p, <1 x i1> %mask, <1 x i16> %data) { 285; RV64-LABEL: test_compresstore_v1i16: 286; RV64: # %bb.0: # %entry 287; RV64-NEXT: vsetivli zero, 1, e16, mf4, ta, ma 288; RV64-NEXT: vcompress.vm v9, v8, v0 289; RV64-NEXT: vcpop.m a1, v0 290; RV64-NEXT: vsetvli zero, a1, e16, mf4, ta, ma 291; RV64-NEXT: vse16.v v9, (a0) 292; RV64-NEXT: ret 293; 294; RV32-LABEL: test_compresstore_v1i16: 295; RV32: # %bb.0: # %entry 296; RV32-NEXT: vsetivli zero, 1, e16, mf4, ta, ma 297; RV32-NEXT: vcompress.vm v9, v8, v0 298; RV32-NEXT: vcpop.m a1, v0 299; RV32-NEXT: vsetvli zero, a1, e16, mf4, ta, ma 300; RV32-NEXT: vse16.v v9, (a0) 301; RV32-NEXT: ret 302entry: 303 tail call void @llvm.masked.compressstore.v1i16(<1 x i16> %data, ptr align 2 %p, <1 x i1> %mask) 304 ret void 305} 306 307define void @test_compresstore_v2i16(ptr %p, <2 x i1> %mask, <2 x i16> %data) { 308; RV64-LABEL: test_compresstore_v2i16: 309; RV64: # %bb.0: # %entry 310; RV64-NEXT: vsetivli zero, 2, e16, mf4, ta, ma 311; RV64-NEXT: vcompress.vm v9, v8, v0 312; RV64-NEXT: vcpop.m a1, v0 313; RV64-NEXT: vsetvli zero, a1, e16, mf4, ta, ma 314; RV64-NEXT: vse16.v v9, (a0) 315; RV64-NEXT: ret 316; 317; RV32-LABEL: test_compresstore_v2i16: 318; RV32: # %bb.0: # %entry 319; RV32-NEXT: vsetivli zero, 2, e16, mf4, ta, ma 320; RV32-NEXT: vcompress.vm v9, v8, v0 321; RV32-NEXT: vcpop.m a1, v0 322; RV32-NEXT: vsetvli zero, a1, e16, mf4, ta, ma 323; RV32-NEXT: vse16.v v9, (a0) 324; RV32-NEXT: ret 325entry: 326 tail call void @llvm.masked.compressstore.v2i16(<2 x i16> %data, ptr align 2 %p, <2 x i1> %mask) 327 ret void 328} 329 330define void @test_compresstore_v4i16(ptr %p, <4 x i1> %mask, <4 x i16> %data) { 331; RV64-LABEL: test_compresstore_v4i16: 332; RV64: # %bb.0: # %entry 333; RV64-NEXT: vsetivli zero, 4, e16, mf2, ta, ma 334; RV64-NEXT: vcompress.vm v9, v8, v0 335; RV64-NEXT: vcpop.m a1, v0 336; RV64-NEXT: vsetvli zero, a1, e16, mf2, ta, ma 337; RV64-NEXT: vse16.v v9, (a0) 338; RV64-NEXT: ret 339; 340; RV32-LABEL: test_compresstore_v4i16: 341; RV32: # %bb.0: # %entry 342; RV32-NEXT: vsetivli zero, 4, e16, mf2, ta, ma 343; RV32-NEXT: vcompress.vm v9, v8, v0 344; RV32-NEXT: vcpop.m a1, v0 345; RV32-NEXT: vsetvli zero, a1, e16, mf2, ta, ma 346; RV32-NEXT: vse16.v v9, (a0) 347; RV32-NEXT: ret 348entry: 349 tail call void @llvm.masked.compressstore.v4i16(<4 x i16> %data, ptr align 2 %p, <4 x i1> %mask) 350 ret void 351} 352 353define void @test_compresstore_v8i16(ptr %p, <8 x i1> %mask, <8 x i16> %data) { 354; RV64-LABEL: test_compresstore_v8i16: 355; RV64: # %bb.0: # %entry 356; RV64-NEXT: vsetivli zero, 8, e16, m1, ta, ma 357; RV64-NEXT: vcompress.vm v9, v8, v0 358; RV64-NEXT: vcpop.m a1, v0 359; RV64-NEXT: vsetvli zero, a1, e16, m1, ta, ma 360; RV64-NEXT: vse16.v v9, (a0) 361; RV64-NEXT: ret 362; 363; RV32-LABEL: test_compresstore_v8i16: 364; RV32: # %bb.0: # %entry 365; RV32-NEXT: vsetivli zero, 8, e16, m1, ta, ma 366; RV32-NEXT: vcompress.vm v9, v8, v0 367; RV32-NEXT: vcpop.m a1, v0 368; RV32-NEXT: vsetvli zero, a1, e16, m1, ta, ma 369; RV32-NEXT: vse16.v v9, (a0) 370; RV32-NEXT: ret 371entry: 372 tail call void @llvm.masked.compressstore.v8i16(<8 x i16> %data, ptr align 2 %p, <8 x i1> %mask) 373 ret void 374} 375 376define void @test_compresstore_v16i16(ptr %p, <16 x i1> %mask, <16 x i16> %data) { 377; RV64-LABEL: test_compresstore_v16i16: 378; RV64: # %bb.0: # %entry 379; RV64-NEXT: vsetivli zero, 16, e16, m2, ta, ma 380; RV64-NEXT: vcompress.vm v10, v8, v0 381; RV64-NEXT: vcpop.m a1, v0 382; RV64-NEXT: vsetvli zero, a1, e16, m2, ta, ma 383; RV64-NEXT: vse16.v v10, (a0) 384; RV64-NEXT: ret 385; 386; RV32-LABEL: test_compresstore_v16i16: 387; RV32: # %bb.0: # %entry 388; RV32-NEXT: vsetivli zero, 16, e16, m2, ta, ma 389; RV32-NEXT: vcompress.vm v10, v8, v0 390; RV32-NEXT: vcpop.m a1, v0 391; RV32-NEXT: vsetvli zero, a1, e16, m2, ta, ma 392; RV32-NEXT: vse16.v v10, (a0) 393; RV32-NEXT: ret 394entry: 395 tail call void @llvm.masked.compressstore.v16i16(<16 x i16> %data, ptr align 2 %p, <16 x i1> %mask) 396 ret void 397} 398 399define void @test_compresstore_v32i16(ptr %p, <32 x i1> %mask, <32 x i16> %data) { 400; RV64-LABEL: test_compresstore_v32i16: 401; RV64: # %bb.0: # %entry 402; RV64-NEXT: li a1, 32 403; RV64-NEXT: vsetvli zero, a1, e16, m4, ta, ma 404; RV64-NEXT: vcompress.vm v12, v8, v0 405; RV64-NEXT: vcpop.m a1, v0 406; RV64-NEXT: vsetvli zero, a1, e16, m4, ta, ma 407; RV64-NEXT: vse16.v v12, (a0) 408; RV64-NEXT: ret 409; 410; RV32-LABEL: test_compresstore_v32i16: 411; RV32: # %bb.0: # %entry 412; RV32-NEXT: li a1, 32 413; RV32-NEXT: vsetvli zero, a1, e16, m4, ta, ma 414; RV32-NEXT: vcompress.vm v12, v8, v0 415; RV32-NEXT: vcpop.m a1, v0 416; RV32-NEXT: vsetvli zero, a1, e16, m4, ta, ma 417; RV32-NEXT: vse16.v v12, (a0) 418; RV32-NEXT: ret 419entry: 420 tail call void @llvm.masked.compressstore.v32i16(<32 x i16> %data, ptr align 2 %p, <32 x i1> %mask) 421 ret void 422} 423 424define void @test_compresstore_v64i16(ptr %p, <64 x i1> %mask, <64 x i16> %data) { 425; RV64-LABEL: test_compresstore_v64i16: 426; RV64: # %bb.0: # %entry 427; RV64-NEXT: li a1, 64 428; RV64-NEXT: vsetvli zero, a1, e16, m8, ta, ma 429; RV64-NEXT: vcompress.vm v16, v8, v0 430; RV64-NEXT: vcpop.m a1, v0 431; RV64-NEXT: vsetvli zero, a1, e16, m8, ta, ma 432; RV64-NEXT: vse16.v v16, (a0) 433; RV64-NEXT: ret 434; 435; RV32-LABEL: test_compresstore_v64i16: 436; RV32: # %bb.0: # %entry 437; RV32-NEXT: li a1, 64 438; RV32-NEXT: vsetvli zero, a1, e16, m8, ta, ma 439; RV32-NEXT: vcompress.vm v16, v8, v0 440; RV32-NEXT: vcpop.m a1, v0 441; RV32-NEXT: vsetvli zero, a1, e16, m8, ta, ma 442; RV32-NEXT: vse16.v v16, (a0) 443; RV32-NEXT: ret 444entry: 445 tail call void @llvm.masked.compressstore.v64i16(<64 x i16> %data, ptr align 2 %p, <64 x i1> %mask) 446 ret void 447} 448 449define void @test_compresstore_v128i16(ptr %p, <128 x i1> %mask, <128 x i16> %data) { 450; RV64-LABEL: test_compresstore_v128i16: 451; RV64: # %bb.0: # %entry 452; RV64-NEXT: li a1, 64 453; RV64-NEXT: vsetvli zero, a1, e16, m8, ta, ma 454; RV64-NEXT: vcompress.vm v24, v8, v0 455; RV64-NEXT: vcpop.m a2, v0 456; RV64-NEXT: vsetivli zero, 8, e8, m1, ta, ma 457; RV64-NEXT: vslidedown.vi v8, v0, 8 458; RV64-NEXT: vsetvli zero, a1, e16, m8, ta, ma 459; RV64-NEXT: vcompress.vm v0, v16, v8 460; RV64-NEXT: vcpop.m a1, v8 461; RV64-NEXT: vsetvli zero, a2, e16, m8, ta, ma 462; RV64-NEXT: vse16.v v24, (a0) 463; RV64-NEXT: slli a2, a2, 1 464; RV64-NEXT: add a0, a0, a2 465; RV64-NEXT: vsetvli zero, a1, e16, m8, ta, ma 466; RV64-NEXT: vse16.v v0, (a0) 467; RV64-NEXT: ret 468; 469; RV32-LABEL: test_compresstore_v128i16: 470; RV32: # %bb.0: # %entry 471; RV32-NEXT: li a1, 64 472; RV32-NEXT: vsetivli zero, 8, e8, m1, ta, ma 473; RV32-NEXT: vslidedown.vi v7, v0, 8 474; RV32-NEXT: vsetvli zero, a1, e16, m8, ta, ma 475; RV32-NEXT: vcompress.vm v24, v16, v7 476; RV32-NEXT: vcpop.m a2, v7 477; RV32-NEXT: li a3, 32 478; RV32-NEXT: vsetvli zero, a1, e64, m1, ta, ma 479; RV32-NEXT: vmv.x.s a4, v0 480; RV32-NEXT: vsetvli zero, a1, e16, m8, ta, ma 481; RV32-NEXT: vcompress.vm v16, v8, v0 482; RV32-NEXT: vcpop.m a1, v0 483; RV32-NEXT: vsetivli zero, 1, e64, m1, ta, ma 484; RV32-NEXT: vsrl.vx v8, v0, a3 485; RV32-NEXT: vsetvli zero, a1, e16, m8, ta, ma 486; RV32-NEXT: vse16.v v16, (a0) 487; RV32-NEXT: vsetvli zero, a1, e64, m1, ta, ma 488; RV32-NEXT: vmv.x.s a1, v8 489; RV32-NEXT: cpop a1, a1 490; RV32-NEXT: cpop a3, a4 491; RV32-NEXT: add a1, a3, a1 492; RV32-NEXT: slli a1, a1, 1 493; RV32-NEXT: add a0, a0, a1 494; RV32-NEXT: vsetvli zero, a2, e16, m8, ta, ma 495; RV32-NEXT: vse16.v v24, (a0) 496; RV32-NEXT: ret 497entry: 498 tail call void @llvm.masked.compressstore.v128i16(<128 x i16> %data, ptr align 2 %p, <128 x i1> %mask) 499 ret void 500} 501 502; Compress + store for i32 type 503 504define void @test_compresstore_v1i32(ptr %p, <1 x i1> %mask, <1 x i32> %data) { 505; RV64-LABEL: test_compresstore_v1i32: 506; RV64: # %bb.0: # %entry 507; RV64-NEXT: vsetivli zero, 1, e32, mf2, ta, ma 508; RV64-NEXT: vcompress.vm v9, v8, v0 509; RV64-NEXT: vcpop.m a1, v0 510; RV64-NEXT: vsetvli zero, a1, e32, mf2, ta, ma 511; RV64-NEXT: vse32.v v9, (a0) 512; RV64-NEXT: ret 513; 514; RV32-LABEL: test_compresstore_v1i32: 515; RV32: # %bb.0: # %entry 516; RV32-NEXT: vsetivli zero, 1, e32, mf2, ta, ma 517; RV32-NEXT: vcompress.vm v9, v8, v0 518; RV32-NEXT: vcpop.m a1, v0 519; RV32-NEXT: vsetvli zero, a1, e32, mf2, ta, ma 520; RV32-NEXT: vse32.v v9, (a0) 521; RV32-NEXT: ret 522entry: 523 tail call void @llvm.masked.compressstore.v1i32(<1 x i32> %data, ptr align 4 %p, <1 x i1> %mask) 524 ret void 525} 526 527define void @test_compresstore_v2i32(ptr %p, <2 x i1> %mask, <2 x i32> %data) { 528; RV64-LABEL: test_compresstore_v2i32: 529; RV64: # %bb.0: # %entry 530; RV64-NEXT: vsetivli zero, 2, e32, mf2, ta, ma 531; RV64-NEXT: vcompress.vm v9, v8, v0 532; RV64-NEXT: vcpop.m a1, v0 533; RV64-NEXT: vsetvli zero, a1, e32, mf2, ta, ma 534; RV64-NEXT: vse32.v v9, (a0) 535; RV64-NEXT: ret 536; 537; RV32-LABEL: test_compresstore_v2i32: 538; RV32: # %bb.0: # %entry 539; RV32-NEXT: vsetivli zero, 2, e32, mf2, ta, ma 540; RV32-NEXT: vcompress.vm v9, v8, v0 541; RV32-NEXT: vcpop.m a1, v0 542; RV32-NEXT: vsetvli zero, a1, e32, mf2, ta, ma 543; RV32-NEXT: vse32.v v9, (a0) 544; RV32-NEXT: ret 545entry: 546 tail call void @llvm.masked.compressstore.v2i32(<2 x i32> %data, ptr align 4 %p, <2 x i1> %mask) 547 ret void 548} 549 550define void @test_compresstore_v4i32(ptr %p, <4 x i1> %mask, <4 x i32> %data) { 551; RV64-LABEL: test_compresstore_v4i32: 552; RV64: # %bb.0: # %entry 553; RV64-NEXT: vsetivli zero, 4, e32, m1, ta, ma 554; RV64-NEXT: vcompress.vm v9, v8, v0 555; RV64-NEXT: vcpop.m a1, v0 556; RV64-NEXT: vsetvli zero, a1, e32, m1, ta, ma 557; RV64-NEXT: vse32.v v9, (a0) 558; RV64-NEXT: ret 559; 560; RV32-LABEL: test_compresstore_v4i32: 561; RV32: # %bb.0: # %entry 562; RV32-NEXT: vsetivli zero, 4, e32, m1, ta, ma 563; RV32-NEXT: vcompress.vm v9, v8, v0 564; RV32-NEXT: vcpop.m a1, v0 565; RV32-NEXT: vsetvli zero, a1, e32, m1, ta, ma 566; RV32-NEXT: vse32.v v9, (a0) 567; RV32-NEXT: ret 568entry: 569 tail call void @llvm.masked.compressstore.v4i32(<4 x i32> %data, ptr align 4 %p, <4 x i1> %mask) 570 ret void 571} 572 573define void @test_compresstore_v8i32(ptr %p, <8 x i1> %mask, <8 x i32> %data) { 574; RV64-LABEL: test_compresstore_v8i32: 575; RV64: # %bb.0: # %entry 576; RV64-NEXT: vsetivli zero, 8, e32, m2, ta, ma 577; RV64-NEXT: vcompress.vm v10, v8, v0 578; RV64-NEXT: vcpop.m a1, v0 579; RV64-NEXT: vsetvli zero, a1, e32, m2, ta, ma 580; RV64-NEXT: vse32.v v10, (a0) 581; RV64-NEXT: ret 582; 583; RV32-LABEL: test_compresstore_v8i32: 584; RV32: # %bb.0: # %entry 585; RV32-NEXT: vsetivli zero, 8, e32, m2, ta, ma 586; RV32-NEXT: vcompress.vm v10, v8, v0 587; RV32-NEXT: vcpop.m a1, v0 588; RV32-NEXT: vsetvli zero, a1, e32, m2, ta, ma 589; RV32-NEXT: vse32.v v10, (a0) 590; RV32-NEXT: ret 591entry: 592 tail call void @llvm.masked.compressstore.v8i32(<8 x i32> %data, ptr align 4 %p, <8 x i1> %mask) 593 ret void 594} 595 596define void @test_compresstore_v16i32(ptr %p, <16 x i1> %mask, <16 x i32> %data) { 597; RV64-LABEL: test_compresstore_v16i32: 598; RV64: # %bb.0: # %entry 599; RV64-NEXT: vsetivli zero, 16, e32, m4, ta, ma 600; RV64-NEXT: vcompress.vm v12, v8, v0 601; RV64-NEXT: vcpop.m a1, v0 602; RV64-NEXT: vsetvli zero, a1, e32, m4, ta, ma 603; RV64-NEXT: vse32.v v12, (a0) 604; RV64-NEXT: ret 605; 606; RV32-LABEL: test_compresstore_v16i32: 607; RV32: # %bb.0: # %entry 608; RV32-NEXT: vsetivli zero, 16, e32, m4, ta, ma 609; RV32-NEXT: vcompress.vm v12, v8, v0 610; RV32-NEXT: vcpop.m a1, v0 611; RV32-NEXT: vsetvli zero, a1, e32, m4, ta, ma 612; RV32-NEXT: vse32.v v12, (a0) 613; RV32-NEXT: ret 614entry: 615 tail call void @llvm.masked.compressstore.v16i32(<16 x i32> %data, ptr align 4 %p, <16 x i1> %mask) 616 ret void 617} 618 619define void @test_compresstore_v32i32(ptr %p, <32 x i1> %mask, <32 x i32> %data) { 620; RV64-LABEL: test_compresstore_v32i32: 621; RV64: # %bb.0: # %entry 622; RV64-NEXT: li a1, 32 623; RV64-NEXT: vsetvli zero, a1, e32, m8, ta, ma 624; RV64-NEXT: vcompress.vm v16, v8, v0 625; RV64-NEXT: vcpop.m a1, v0 626; RV64-NEXT: vsetvli zero, a1, e32, m8, ta, ma 627; RV64-NEXT: vse32.v v16, (a0) 628; RV64-NEXT: ret 629; 630; RV32-LABEL: test_compresstore_v32i32: 631; RV32: # %bb.0: # %entry 632; RV32-NEXT: li a1, 32 633; RV32-NEXT: vsetvli zero, a1, e32, m8, ta, ma 634; RV32-NEXT: vcompress.vm v16, v8, v0 635; RV32-NEXT: vcpop.m a1, v0 636; RV32-NEXT: vsetvli zero, a1, e32, m8, ta, ma 637; RV32-NEXT: vse32.v v16, (a0) 638; RV32-NEXT: ret 639entry: 640 tail call void @llvm.masked.compressstore.v32i32(<32 x i32> %data, ptr align 4 %p, <32 x i1> %mask) 641 ret void 642} 643 644define void @test_compresstore_v64i32(ptr %p, <64 x i1> %mask, <64 x i32> %data) { 645; RV64-LABEL: test_compresstore_v64i32: 646; RV64: # %bb.0: # %entry 647; RV64-NEXT: li a1, 32 648; RV64-NEXT: vsetvli zero, a1, e32, m8, ta, ma 649; RV64-NEXT: vcompress.vm v24, v8, v0 650; RV64-NEXT: vcpop.m a2, v0 651; RV64-NEXT: vsetvli zero, a2, e32, m8, ta, ma 652; RV64-NEXT: vse32.v v24, (a0) 653; RV64-NEXT: vsetivli zero, 4, e8, mf2, ta, ma 654; RV64-NEXT: vslidedown.vi v8, v0, 4 655; RV64-NEXT: vsetvli zero, a1, e32, m8, ta, ma 656; RV64-NEXT: vmv.x.s a1, v0 657; RV64-NEXT: vcompress.vm v24, v16, v8 658; RV64-NEXT: vcpop.m a2, v8 659; RV64-NEXT: cpopw a1, a1 660; RV64-NEXT: slli a1, a1, 2 661; RV64-NEXT: add a0, a0, a1 662; RV64-NEXT: vsetvli zero, a2, e32, m8, ta, ma 663; RV64-NEXT: vse32.v v24, (a0) 664; RV64-NEXT: ret 665; 666; RV32-LABEL: test_compresstore_v64i32: 667; RV32: # %bb.0: # %entry 668; RV32-NEXT: li a1, 32 669; RV32-NEXT: vsetvli zero, a1, e32, m8, ta, ma 670; RV32-NEXT: vcompress.vm v24, v8, v0 671; RV32-NEXT: vcpop.m a2, v0 672; RV32-NEXT: vsetivli zero, 4, e8, mf2, ta, ma 673; RV32-NEXT: vslidedown.vi v8, v0, 4 674; RV32-NEXT: vsetvli zero, a1, e32, m8, ta, ma 675; RV32-NEXT: vcompress.vm v0, v16, v8 676; RV32-NEXT: vcpop.m a1, v8 677; RV32-NEXT: vsetvli zero, a2, e32, m8, ta, ma 678; RV32-NEXT: vse32.v v24, (a0) 679; RV32-NEXT: slli a2, a2, 2 680; RV32-NEXT: add a0, a0, a2 681; RV32-NEXT: vsetvli zero, a1, e32, m8, ta, ma 682; RV32-NEXT: vse32.v v0, (a0) 683; RV32-NEXT: ret 684entry: 685 tail call void @llvm.masked.compressstore.v64i32(<64 x i32> %data, ptr align 4 %p, <64 x i1> %mask) 686 ret void 687} 688 689; Compress + store for i64 type 690 691define void @test_compresstore_v1i64(ptr %p, <1 x i1> %mask, <1 x i64> %data) { 692; RV64-LABEL: test_compresstore_v1i64: 693; RV64: # %bb.0: # %entry 694; RV64-NEXT: vsetivli zero, 1, e64, m1, ta, ma 695; RV64-NEXT: vcompress.vm v9, v8, v0 696; RV64-NEXT: vcpop.m a1, v0 697; RV64-NEXT: vsetvli zero, a1, e64, m1, ta, ma 698; RV64-NEXT: vse64.v v9, (a0) 699; RV64-NEXT: ret 700; 701; RV32-LABEL: test_compresstore_v1i64: 702; RV32: # %bb.0: # %entry 703; RV32-NEXT: vsetivli zero, 1, e64, m1, ta, ma 704; RV32-NEXT: vcompress.vm v9, v8, v0 705; RV32-NEXT: vcpop.m a1, v0 706; RV32-NEXT: vsetvli zero, a1, e64, m1, ta, ma 707; RV32-NEXT: vse64.v v9, (a0) 708; RV32-NEXT: ret 709entry: 710 tail call void @llvm.masked.compressstore.v1i64(<1 x i64> %data, ptr align 8 %p, <1 x i1> %mask) 711 ret void 712} 713 714define void @test_compresstore_v2i64(ptr %p, <2 x i1> %mask, <2 x i64> %data) { 715; RV64-LABEL: test_compresstore_v2i64: 716; RV64: # %bb.0: # %entry 717; RV64-NEXT: vsetivli zero, 2, e64, m1, ta, ma 718; RV64-NEXT: vcompress.vm v9, v8, v0 719; RV64-NEXT: vcpop.m a1, v0 720; RV64-NEXT: vsetvli zero, a1, e64, m1, ta, ma 721; RV64-NEXT: vse64.v v9, (a0) 722; RV64-NEXT: ret 723; 724; RV32-LABEL: test_compresstore_v2i64: 725; RV32: # %bb.0: # %entry 726; RV32-NEXT: vsetivli zero, 2, e64, m1, ta, ma 727; RV32-NEXT: vcompress.vm v9, v8, v0 728; RV32-NEXT: vcpop.m a1, v0 729; RV32-NEXT: vsetvli zero, a1, e64, m1, ta, ma 730; RV32-NEXT: vse64.v v9, (a0) 731; RV32-NEXT: ret 732entry: 733 tail call void @llvm.masked.compressstore.v2i64(<2 x i64> %data, ptr align 8 %p, <2 x i1> %mask) 734 ret void 735} 736 737define void @test_compresstore_v4i64(ptr %p, <4 x i1> %mask, <4 x i64> %data) { 738; RV64-LABEL: test_compresstore_v4i64: 739; RV64: # %bb.0: # %entry 740; RV64-NEXT: vsetivli zero, 4, e64, m2, ta, ma 741; RV64-NEXT: vcompress.vm v10, v8, v0 742; RV64-NEXT: vcpop.m a1, v0 743; RV64-NEXT: vsetvli zero, a1, e64, m2, ta, ma 744; RV64-NEXT: vse64.v v10, (a0) 745; RV64-NEXT: ret 746; 747; RV32-LABEL: test_compresstore_v4i64: 748; RV32: # %bb.0: # %entry 749; RV32-NEXT: vsetivli zero, 4, e64, m2, ta, ma 750; RV32-NEXT: vcompress.vm v10, v8, v0 751; RV32-NEXT: vcpop.m a1, v0 752; RV32-NEXT: vsetvli zero, a1, e64, m2, ta, ma 753; RV32-NEXT: vse64.v v10, (a0) 754; RV32-NEXT: ret 755entry: 756 tail call void @llvm.masked.compressstore.v4i64(<4 x i64> %data, ptr align 8 %p, <4 x i1> %mask) 757 ret void 758} 759 760define void @test_compresstore_v8i64(ptr %p, <8 x i1> %mask, <8 x i64> %data) { 761; RV64-LABEL: test_compresstore_v8i64: 762; RV64: # %bb.0: # %entry 763; RV64-NEXT: vsetivli zero, 8, e64, m4, ta, ma 764; RV64-NEXT: vcompress.vm v12, v8, v0 765; RV64-NEXT: vcpop.m a1, v0 766; RV64-NEXT: vsetvli zero, a1, e64, m4, ta, ma 767; RV64-NEXT: vse64.v v12, (a0) 768; RV64-NEXT: ret 769; 770; RV32-LABEL: test_compresstore_v8i64: 771; RV32: # %bb.0: # %entry 772; RV32-NEXT: vsetivli zero, 8, e64, m4, ta, ma 773; RV32-NEXT: vcompress.vm v12, v8, v0 774; RV32-NEXT: vcpop.m a1, v0 775; RV32-NEXT: vsetvli zero, a1, e64, m4, ta, ma 776; RV32-NEXT: vse64.v v12, (a0) 777; RV32-NEXT: ret 778entry: 779 tail call void @llvm.masked.compressstore.v8i64(<8 x i64> %data, ptr align 8 %p, <8 x i1> %mask) 780 ret void 781} 782 783define void @test_compresstore_v16i64(ptr %p, <16 x i1> %mask, <16 x i64> %data) { 784; RV64-LABEL: test_compresstore_v16i64: 785; RV64: # %bb.0: # %entry 786; RV64-NEXT: vsetivli zero, 16, e64, m8, ta, ma 787; RV64-NEXT: vcompress.vm v16, v8, v0 788; RV64-NEXT: vcpop.m a1, v0 789; RV64-NEXT: vsetvli zero, a1, e64, m8, ta, ma 790; RV64-NEXT: vse64.v v16, (a0) 791; RV64-NEXT: ret 792; 793; RV32-LABEL: test_compresstore_v16i64: 794; RV32: # %bb.0: # %entry 795; RV32-NEXT: vsetivli zero, 16, e64, m8, ta, ma 796; RV32-NEXT: vcompress.vm v16, v8, v0 797; RV32-NEXT: vcpop.m a1, v0 798; RV32-NEXT: vsetvli zero, a1, e64, m8, ta, ma 799; RV32-NEXT: vse64.v v16, (a0) 800; RV32-NEXT: ret 801entry: 802 tail call void @llvm.masked.compressstore.v16i64(<16 x i64> %data, ptr align 8 %p, <16 x i1> %mask) 803 ret void 804} 805 806define void @test_compresstore_v32i64(ptr %p, <32 x i1> %mask, <32 x i64> %data) { 807; RV64-LABEL: test_compresstore_v32i64: 808; RV64: # %bb.0: # %entry 809; RV64-NEXT: vsetivli zero, 16, e64, m8, ta, ma 810; RV64-NEXT: vcompress.vm v24, v8, v0 811; RV64-NEXT: vcpop.m a1, v0 812; RV64-NEXT: vsetvli zero, a1, e64, m8, ta, ma 813; RV64-NEXT: vse64.v v24, (a0) 814; RV64-NEXT: vsetivli zero, 2, e8, mf4, ta, ma 815; RV64-NEXT: vslidedown.vi v8, v0, 2 816; RV64-NEXT: vsetvli zero, zero, e16, mf2, ta, ma 817; RV64-NEXT: vmv.x.s a1, v0 818; RV64-NEXT: vsetivli zero, 16, e64, m8, ta, ma 819; RV64-NEXT: vcompress.vm v24, v16, v8 820; RV64-NEXT: zext.h a1, a1 821; RV64-NEXT: cpopw a1, a1 822; RV64-NEXT: slli a1, a1, 3 823; RV64-NEXT: add a0, a0, a1 824; RV64-NEXT: vcpop.m a1, v8 825; RV64-NEXT: vsetvli zero, a1, e64, m8, ta, ma 826; RV64-NEXT: vse64.v v24, (a0) 827; RV64-NEXT: ret 828; 829; RV32-LABEL: test_compresstore_v32i64: 830; RV32: # %bb.0: # %entry 831; RV32-NEXT: vsetivli zero, 16, e64, m8, ta, ma 832; RV32-NEXT: vcompress.vm v24, v8, v0 833; RV32-NEXT: vcpop.m a1, v0 834; RV32-NEXT: vsetvli zero, a1, e64, m8, ta, ma 835; RV32-NEXT: vse64.v v24, (a0) 836; RV32-NEXT: vsetivli zero, 2, e8, mf4, ta, ma 837; RV32-NEXT: vslidedown.vi v8, v0, 2 838; RV32-NEXT: vsetvli zero, zero, e16, mf2, ta, ma 839; RV32-NEXT: vmv.x.s a1, v0 840; RV32-NEXT: vsetivli zero, 16, e64, m8, ta, ma 841; RV32-NEXT: vcompress.vm v24, v16, v8 842; RV32-NEXT: zext.h a1, a1 843; RV32-NEXT: cpop a1, a1 844; RV32-NEXT: slli a1, a1, 3 845; RV32-NEXT: add a0, a0, a1 846; RV32-NEXT: vcpop.m a1, v8 847; RV32-NEXT: vsetvli zero, a1, e64, m8, ta, ma 848; RV32-NEXT: vse64.v v24, (a0) 849; RV32-NEXT: ret 850entry: 851 tail call void @llvm.masked.compressstore.v32i64(<32 x i64> %data, ptr align 8 %p, <32 x i1> %mask) 852 ret void 853} 854 855declare void @llvm.masked.compressstore.v1i8(<1 x i8>, ptr, <1 x i1>) 856declare void @llvm.masked.compressstore.v2i8(<2 x i8>, ptr, <2 x i1>) 857declare void @llvm.masked.compressstore.v4i8(<4 x i8>, ptr, <4 x i1>) 858declare void @llvm.masked.compressstore.v8i8(<8 x i8>, ptr, <8 x i1>) 859declare void @llvm.masked.compressstore.v16i8(<16 x i8>, ptr, <16 x i1>) 860declare void @llvm.masked.compressstore.v32i8(<32 x i8>, ptr, <32 x i1>) 861declare void @llvm.masked.compressstore.v64i8(<64 x i8>, ptr, <64 x i1>) 862declare void @llvm.masked.compressstore.v128i8(<128 x i8>, ptr, <128 x i1>) 863declare void @llvm.masked.compressstore.v256i8(<256 x i8>, ptr, <256 x i1>) 864 865declare void @llvm.masked.compressstore.v1i16(<1 x i16>, ptr, <1 x i1>) 866declare void @llvm.masked.compressstore.v2i16(<2 x i16>, ptr, <2 x i1>) 867declare void @llvm.masked.compressstore.v4i16(<4 x i16>, ptr, <4 x i1>) 868declare void @llvm.masked.compressstore.v8i16(<8 x i16>, ptr, <8 x i1>) 869declare void @llvm.masked.compressstore.v16i16(<16 x i16>, ptr, <16 x i1>) 870declare void @llvm.masked.compressstore.v32i16(<32 x i16>, ptr, <32 x i1>) 871declare void @llvm.masked.compressstore.v64i16(<64 x i16>, ptr, <64 x i1>) 872declare void @llvm.masked.compressstore.v128i16(<128 x i16>, ptr, <128 x i1>) 873 874declare void @llvm.masked.compressstore.v1i32(<1 x i32>, ptr, <1 x i1>) 875declare void @llvm.masked.compressstore.v2i32(<2 x i32>, ptr, <2 x i1>) 876declare void @llvm.masked.compressstore.v4i32(<4 x i32>, ptr, <4 x i1>) 877declare void @llvm.masked.compressstore.v8i32(<8 x i32>, ptr, <8 x i1>) 878declare void @llvm.masked.compressstore.v16i32(<16 x i32>, ptr, <16 x i1>) 879declare void @llvm.masked.compressstore.v32i32(<32 x i32>, ptr, <32 x i1>) 880declare void @llvm.masked.compressstore.v64i32(<64 x i32>, ptr, <64 x i1>) 881 882declare void @llvm.masked.compressstore.v1i64(<1 x i64>, ptr, <1 x i1>) 883declare void @llvm.masked.compressstore.v2i64(<2 x i64>, ptr, <2 x i1>) 884declare void @llvm.masked.compressstore.v4i64(<4 x i64>, ptr, <4 x i1>) 885declare void @llvm.masked.compressstore.v8i64(<8 x i64>, ptr, <8 x i1>) 886declare void @llvm.masked.compressstore.v16i64(<16 x i64>, ptr, <16 x i1>) 887declare void @llvm.masked.compressstore.v32i64(<32 x i64>, ptr, <32 x i1>) 888