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