161c283dbSYeting Kuo; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 4 261c283dbSYeting Kuo; RUN: llc -mtriple=riscv32 -mattr=+m,+v -verify-machineinstrs < %s | FileCheck %s --check-prefixes=CHECK,RV32 361c283dbSYeting Kuo; RUN: llc -mtriple=riscv64 -mattr=+m,+v -verify-machineinstrs < %s | FileCheck %s --check-prefixes=CHECK,RV64 461c283dbSYeting Kuo 561c283dbSYeting Kuodeclare void @llvm.masked.compressstore.v1i8(<1 x i8>, ptr, <1 x i1>) 661c283dbSYeting Kuodefine void @compressstore_v1i8(ptr %base, <1 x i8> %v, <1 x i1> %mask) { 761c283dbSYeting Kuo; CHECK-LABEL: compressstore_v1i8: 861c283dbSYeting Kuo; CHECK: # %bb.0: 961c283dbSYeting Kuo; CHECK-NEXT: vsetivli zero, 1, e8, mf8, ta, ma 10*aa68e281SKolya Panchenko; CHECK-NEXT: vcompress.vm v9, v8, v0 11*aa68e281SKolya Panchenko; CHECK-NEXT: vcpop.m a1, v0 12*aa68e281SKolya Panchenko; CHECK-NEXT: vsetvli zero, a1, e8, mf8, ta, ma 13*aa68e281SKolya Panchenko; CHECK-NEXT: vse8.v v9, (a0) 1461c283dbSYeting Kuo; CHECK-NEXT: ret 1561c283dbSYeting Kuo call void @llvm.masked.compressstore.v1i8(<1 x i8> %v, ptr %base, <1 x i1> %mask) 1661c283dbSYeting Kuo ret void 1761c283dbSYeting Kuo} 1861c283dbSYeting Kuo 1961c283dbSYeting Kuodeclare void @llvm.masked.compressstore.v2i8(<2 x i8>, ptr, <2 x i1>) 2061c283dbSYeting Kuodefine void @compressstore_v2i8(ptr %base, <2 x i8> %v, <2 x i1> %mask) { 2161c283dbSYeting Kuo; CHECK-LABEL: compressstore_v2i8: 2261c283dbSYeting Kuo; CHECK: # %bb.0: 23*aa68e281SKolya Panchenko; CHECK-NEXT: vsetivli zero, 2, e8, mf8, ta, ma 24*aa68e281SKolya Panchenko; CHECK-NEXT: vcompress.vm v9, v8, v0 25*aa68e281SKolya Panchenko; CHECK-NEXT: vcpop.m a1, v0 26*aa68e281SKolya Panchenko; CHECK-NEXT: vsetvli zero, a1, e8, mf8, ta, ma 27*aa68e281SKolya Panchenko; CHECK-NEXT: vse8.v v9, (a0) 2861c283dbSYeting Kuo; CHECK-NEXT: ret 2961c283dbSYeting Kuo call void @llvm.masked.compressstore.v2i8(<2 x i8> %v, ptr %base, <2 x i1> %mask) 3061c283dbSYeting Kuo ret void 3161c283dbSYeting Kuo} 3261c283dbSYeting Kuo 3361c283dbSYeting Kuodeclare void @llvm.masked.compressstore.v4i8(<4 x i8>, ptr, <4 x i1>) 3461c283dbSYeting Kuodefine void @compressstore_v4i8(ptr %base, <4 x i8> %v, <4 x i1> %mask) { 3561c283dbSYeting Kuo; CHECK-LABEL: compressstore_v4i8: 3661c283dbSYeting Kuo; CHECK: # %bb.0: 37*aa68e281SKolya Panchenko; CHECK-NEXT: vsetivli zero, 4, e8, mf4, ta, ma 38*aa68e281SKolya Panchenko; CHECK-NEXT: vcompress.vm v9, v8, v0 39*aa68e281SKolya Panchenko; CHECK-NEXT: vcpop.m a1, v0 40*aa68e281SKolya Panchenko; CHECK-NEXT: vsetvli zero, a1, e8, mf4, ta, ma 4161c283dbSYeting Kuo; CHECK-NEXT: vse8.v v9, (a0) 4261c283dbSYeting Kuo; CHECK-NEXT: ret 4361c283dbSYeting Kuo call void @llvm.masked.compressstore.v4i8(<4 x i8> %v, ptr %base, <4 x i1> %mask) 4461c283dbSYeting Kuo ret void 4561c283dbSYeting Kuo} 4661c283dbSYeting Kuo 4761c283dbSYeting Kuodeclare void @llvm.masked.compressstore.v8i8(<8 x i8>, ptr, <8 x i1>) 4861c283dbSYeting Kuodefine void @compressstore_v8i8(ptr %base, <8 x i8> %v, <8 x i1> %mask) { 4961c283dbSYeting Kuo; CHECK-LABEL: compressstore_v8i8: 5061c283dbSYeting Kuo; CHECK: # %bb.0: 51*aa68e281SKolya Panchenko; CHECK-NEXT: vsetivli zero, 8, e8, mf2, ta, ma 52*aa68e281SKolya Panchenko; CHECK-NEXT: vcompress.vm v9, v8, v0 53*aa68e281SKolya Panchenko; CHECK-NEXT: vcpop.m a1, v0 54*aa68e281SKolya Panchenko; CHECK-NEXT: vsetvli zero, a1, e8, mf2, ta, ma 5561c283dbSYeting Kuo; CHECK-NEXT: vse8.v v9, (a0) 5661c283dbSYeting Kuo; CHECK-NEXT: ret 5761c283dbSYeting Kuo call void @llvm.masked.compressstore.v8i8(<8 x i8> %v, ptr %base, <8 x i1> %mask) 5861c283dbSYeting Kuo ret void 5961c283dbSYeting Kuo} 6061c283dbSYeting Kuo 6161c283dbSYeting Kuodeclare void @llvm.masked.compressstore.v1i16(<1 x i16>, ptr, <1 x i1>) 6261c283dbSYeting Kuodefine void @compressstore_v1i16(ptr %base, <1 x i16> %v, <1 x i1> %mask) { 6361c283dbSYeting Kuo; CHECK-LABEL: compressstore_v1i16: 6461c283dbSYeting Kuo; CHECK: # %bb.0: 6561c283dbSYeting Kuo; CHECK-NEXT: vsetivli zero, 1, e16, mf4, ta, ma 66*aa68e281SKolya Panchenko; CHECK-NEXT: vcompress.vm v9, v8, v0 67*aa68e281SKolya Panchenko; CHECK-NEXT: vcpop.m a1, v0 68*aa68e281SKolya Panchenko; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma 69*aa68e281SKolya Panchenko; CHECK-NEXT: vse16.v v9, (a0) 7061c283dbSYeting Kuo; CHECK-NEXT: ret 7161c283dbSYeting Kuo call void @llvm.masked.compressstore.v1i16(<1 x i16> %v, ptr align 2 %base, <1 x i1> %mask) 7261c283dbSYeting Kuo ret void 7361c283dbSYeting Kuo} 7461c283dbSYeting Kuo 7561c283dbSYeting Kuodeclare void @llvm.masked.compressstore.v2i16(<2 x i16>, ptr, <2 x i1>) 7661c283dbSYeting Kuodefine void @compressstore_v2i16(ptr %base, <2 x i16> %v, <2 x i1> %mask) { 7761c283dbSYeting Kuo; CHECK-LABEL: compressstore_v2i16: 7861c283dbSYeting Kuo; CHECK: # %bb.0: 79*aa68e281SKolya Panchenko; CHECK-NEXT: vsetivli zero, 2, e16, mf4, ta, ma 80*aa68e281SKolya Panchenko; CHECK-NEXT: vcompress.vm v9, v8, v0 81*aa68e281SKolya Panchenko; CHECK-NEXT: vcpop.m a1, v0 82*aa68e281SKolya Panchenko; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma 83*aa68e281SKolya Panchenko; CHECK-NEXT: vse16.v v9, (a0) 8461c283dbSYeting Kuo; CHECK-NEXT: ret 8561c283dbSYeting Kuo call void @llvm.masked.compressstore.v2i16(<2 x i16> %v, ptr align 2 %base, <2 x i1> %mask) 8661c283dbSYeting Kuo ret void 8761c283dbSYeting Kuo} 8861c283dbSYeting Kuo 8961c283dbSYeting Kuodeclare void @llvm.masked.compressstore.v4i16(<4 x i16>, ptr, <4 x i1>) 9061c283dbSYeting Kuodefine void @compressstore_v4i16(ptr %base, <4 x i16> %v, <4 x i1> %mask) { 9161c283dbSYeting Kuo; CHECK-LABEL: compressstore_v4i16: 9261c283dbSYeting Kuo; CHECK: # %bb.0: 93*aa68e281SKolya Panchenko; CHECK-NEXT: vsetivli zero, 4, e16, mf2, ta, ma 94*aa68e281SKolya Panchenko; CHECK-NEXT: vcompress.vm v9, v8, v0 95*aa68e281SKolya Panchenko; CHECK-NEXT: vcpop.m a1, v0 96*aa68e281SKolya Panchenko; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma 9761c283dbSYeting Kuo; CHECK-NEXT: vse16.v v9, (a0) 9861c283dbSYeting Kuo; CHECK-NEXT: ret 9961c283dbSYeting Kuo call void @llvm.masked.compressstore.v4i16(<4 x i16> %v, ptr align 2 %base, <4 x i1> %mask) 10061c283dbSYeting Kuo ret void 10161c283dbSYeting Kuo} 10261c283dbSYeting Kuo 10361c283dbSYeting Kuodeclare void @llvm.masked.compressstore.v8i16(<8 x i16>, ptr, <8 x i1>) 10461c283dbSYeting Kuodefine void @compressstore_v8i16(ptr %base, <8 x i16> %v, <8 x i1> %mask) { 10561c283dbSYeting Kuo; CHECK-LABEL: compressstore_v8i16: 10661c283dbSYeting Kuo; CHECK: # %bb.0: 107*aa68e281SKolya Panchenko; CHECK-NEXT: vsetivli zero, 8, e16, m1, ta, ma 108*aa68e281SKolya Panchenko; CHECK-NEXT: vcompress.vm v9, v8, v0 109*aa68e281SKolya Panchenko; CHECK-NEXT: vcpop.m a1, v0 110*aa68e281SKolya Panchenko; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma 11161c283dbSYeting Kuo; CHECK-NEXT: vse16.v v9, (a0) 11261c283dbSYeting Kuo; CHECK-NEXT: ret 11361c283dbSYeting Kuo call void @llvm.masked.compressstore.v8i16(<8 x i16> %v, ptr align 2 %base, <8 x i1> %mask) 11461c283dbSYeting Kuo ret void 11561c283dbSYeting Kuo} 11661c283dbSYeting Kuo 11761c283dbSYeting Kuodeclare void @llvm.masked.compressstore.v1i32(<1 x i32>, ptr, <1 x i1>) 11861c283dbSYeting Kuodefine void @compressstore_v1i32(ptr %base, <1 x i32> %v, <1 x i1> %mask) { 11961c283dbSYeting Kuo; CHECK-LABEL: compressstore_v1i32: 12061c283dbSYeting Kuo; CHECK: # %bb.0: 12161c283dbSYeting Kuo; CHECK-NEXT: vsetivli zero, 1, e32, mf2, ta, ma 122*aa68e281SKolya Panchenko; CHECK-NEXT: vcompress.vm v9, v8, v0 123*aa68e281SKolya Panchenko; CHECK-NEXT: vcpop.m a1, v0 124*aa68e281SKolya Panchenko; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma 125*aa68e281SKolya Panchenko; CHECK-NEXT: vse32.v v9, (a0) 12661c283dbSYeting Kuo; CHECK-NEXT: ret 12761c283dbSYeting Kuo call void @llvm.masked.compressstore.v1i32(<1 x i32> %v, ptr align 4 %base, <1 x i1> %mask) 12861c283dbSYeting Kuo ret void 12961c283dbSYeting Kuo} 13061c283dbSYeting Kuo 13161c283dbSYeting Kuodeclare void @llvm.masked.compressstore.v2i32(<2 x i32>, ptr, <2 x i1>) 13261c283dbSYeting Kuodefine void @compressstore_v2i32(ptr %base, <2 x i32> %v, <2 x i1> %mask) { 13361c283dbSYeting Kuo; CHECK-LABEL: compressstore_v2i32: 13461c283dbSYeting Kuo; CHECK: # %bb.0: 135*aa68e281SKolya Panchenko; CHECK-NEXT: vsetivli zero, 2, e32, mf2, ta, ma 136*aa68e281SKolya Panchenko; CHECK-NEXT: vcompress.vm v9, v8, v0 137*aa68e281SKolya Panchenko; CHECK-NEXT: vcpop.m a1, v0 138*aa68e281SKolya Panchenko; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma 139*aa68e281SKolya Panchenko; CHECK-NEXT: vse32.v v9, (a0) 14061c283dbSYeting Kuo; CHECK-NEXT: ret 14161c283dbSYeting Kuo call void @llvm.masked.compressstore.v2i32(<2 x i32> %v, ptr align 4 %base, <2 x i1> %mask) 14261c283dbSYeting Kuo ret void 14361c283dbSYeting Kuo} 14461c283dbSYeting Kuo 14561c283dbSYeting Kuodeclare void @llvm.masked.compressstore.v4i32(<4 x i32>, ptr, <4 x i1>) 14661c283dbSYeting Kuodefine void @compressstore_v4i32(ptr %base, <4 x i32> %v, <4 x i1> %mask) { 14761c283dbSYeting Kuo; CHECK-LABEL: compressstore_v4i32: 14861c283dbSYeting Kuo; CHECK: # %bb.0: 149*aa68e281SKolya Panchenko; CHECK-NEXT: vsetivli zero, 4, e32, m1, ta, ma 150*aa68e281SKolya Panchenko; CHECK-NEXT: vcompress.vm v9, v8, v0 151*aa68e281SKolya Panchenko; CHECK-NEXT: vcpop.m a1, v0 152*aa68e281SKolya Panchenko; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma 15361c283dbSYeting Kuo; CHECK-NEXT: vse32.v v9, (a0) 15461c283dbSYeting Kuo; CHECK-NEXT: ret 15561c283dbSYeting Kuo call void @llvm.masked.compressstore.v4i32(<4 x i32> %v, ptr align 4 %base, <4 x i1> %mask) 15661c283dbSYeting Kuo ret void 15761c283dbSYeting Kuo} 15861c283dbSYeting Kuo 15961c283dbSYeting Kuodeclare void @llvm.masked.compressstore.v8i32(<8 x i32>, ptr, <8 x i1>) 16061c283dbSYeting Kuodefine void @compressstore_v8i32(ptr %base, <8 x i32> %v, <8 x i1> %mask) { 16161c283dbSYeting Kuo; CHECK-LABEL: compressstore_v8i32: 16261c283dbSYeting Kuo; CHECK: # %bb.0: 163*aa68e281SKolya Panchenko; CHECK-NEXT: vsetivli zero, 8, e32, m2, ta, ma 164*aa68e281SKolya Panchenko; CHECK-NEXT: vcompress.vm v10, v8, v0 165*aa68e281SKolya Panchenko; CHECK-NEXT: vcpop.m a1, v0 166*aa68e281SKolya Panchenko; CHECK-NEXT: vsetvli zero, a1, e32, m2, ta, ma 16761c283dbSYeting Kuo; CHECK-NEXT: vse32.v v10, (a0) 16861c283dbSYeting Kuo; CHECK-NEXT: ret 16961c283dbSYeting Kuo call void @llvm.masked.compressstore.v8i32(<8 x i32> %v, ptr align 4 %base, <8 x i1> %mask) 17061c283dbSYeting Kuo ret void 17161c283dbSYeting Kuo} 17261c283dbSYeting Kuo 17361c283dbSYeting Kuodeclare void @llvm.masked.compressstore.v1i64(<1 x i64>, ptr, <1 x i1>) 17461c283dbSYeting Kuodefine void @compressstore_v1i64(ptr %base, <1 x i64> %v, <1 x i1> %mask) { 175*aa68e281SKolya Panchenko; CHECK-LABEL: compressstore_v1i64: 176*aa68e281SKolya Panchenko; CHECK: # %bb.0: 177*aa68e281SKolya Panchenko; CHECK-NEXT: vsetivli zero, 1, e64, m1, ta, ma 178*aa68e281SKolya Panchenko; CHECK-NEXT: vcompress.vm v9, v8, v0 179*aa68e281SKolya Panchenko; CHECK-NEXT: vcpop.m a1, v0 180*aa68e281SKolya Panchenko; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, ma 181*aa68e281SKolya Panchenko; CHECK-NEXT: vse64.v v9, (a0) 182*aa68e281SKolya Panchenko; CHECK-NEXT: ret 18361c283dbSYeting Kuo call void @llvm.masked.compressstore.v1i64(<1 x i64> %v, ptr align 8 %base, <1 x i1> %mask) 18461c283dbSYeting Kuo ret void 18561c283dbSYeting Kuo} 18661c283dbSYeting Kuo 18761c283dbSYeting Kuodeclare void @llvm.masked.compressstore.v2i64(<2 x i64>, ptr, <2 x i1>) 18861c283dbSYeting Kuodefine void @compressstore_v2i64(ptr %base, <2 x i64> %v, <2 x i1> %mask) { 189*aa68e281SKolya Panchenko; CHECK-LABEL: compressstore_v2i64: 190*aa68e281SKolya Panchenko; CHECK: # %bb.0: 191*aa68e281SKolya Panchenko; CHECK-NEXT: vsetivli zero, 2, e64, m1, ta, ma 192*aa68e281SKolya Panchenko; CHECK-NEXT: vcompress.vm v9, v8, v0 193*aa68e281SKolya Panchenko; CHECK-NEXT: vcpop.m a1, v0 194*aa68e281SKolya Panchenko; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, ma 195*aa68e281SKolya Panchenko; CHECK-NEXT: vse64.v v9, (a0) 196*aa68e281SKolya Panchenko; CHECK-NEXT: ret 19761c283dbSYeting Kuo call void @llvm.masked.compressstore.v2i64(<2 x i64> %v, ptr align 8 %base, <2 x i1> %mask) 19861c283dbSYeting Kuo ret void 19961c283dbSYeting Kuo} 20061c283dbSYeting Kuo 20161c283dbSYeting Kuodeclare void @llvm.masked.compressstore.v4i64(<4 x i64>, ptr, <4 x i1>) 20261c283dbSYeting Kuodefine void @compressstore_v4i64(ptr %base, <4 x i64> %v, <4 x i1> %mask) { 203*aa68e281SKolya Panchenko; CHECK-LABEL: compressstore_v4i64: 204*aa68e281SKolya Panchenko; CHECK: # %bb.0: 205*aa68e281SKolya Panchenko; CHECK-NEXT: vsetivli zero, 4, e64, m2, ta, ma 206*aa68e281SKolya Panchenko; CHECK-NEXT: vcompress.vm v10, v8, v0 207*aa68e281SKolya Panchenko; CHECK-NEXT: vcpop.m a1, v0 208*aa68e281SKolya Panchenko; CHECK-NEXT: vsetvli zero, a1, e64, m2, ta, ma 209*aa68e281SKolya Panchenko; CHECK-NEXT: vse64.v v10, (a0) 210*aa68e281SKolya Panchenko; CHECK-NEXT: ret 21161c283dbSYeting Kuo call void @llvm.masked.compressstore.v4i64(<4 x i64> %v, ptr align 8 %base, <4 x i1> %mask) 21261c283dbSYeting Kuo ret void 21361c283dbSYeting Kuo} 21461c283dbSYeting Kuo 21561c283dbSYeting Kuodeclare void @llvm.masked.compressstore.v8i64(<8 x i64>, ptr, <8 x i1>) 21661c283dbSYeting Kuodefine void @compressstore_v8i64(ptr %base, <8 x i64> %v, <8 x i1> %mask) { 217*aa68e281SKolya Panchenko; CHECK-LABEL: compressstore_v8i64: 218*aa68e281SKolya Panchenko; CHECK: # %bb.0: 219*aa68e281SKolya Panchenko; CHECK-NEXT: vsetivli zero, 8, e64, m4, ta, ma 220*aa68e281SKolya Panchenko; CHECK-NEXT: vcompress.vm v12, v8, v0 221*aa68e281SKolya Panchenko; CHECK-NEXT: vcpop.m a1, v0 222*aa68e281SKolya Panchenko; CHECK-NEXT: vsetvli zero, a1, e64, m4, ta, ma 223*aa68e281SKolya Panchenko; CHECK-NEXT: vse64.v v12, (a0) 224*aa68e281SKolya Panchenko; CHECK-NEXT: ret 22561c283dbSYeting Kuo call void @llvm.masked.compressstore.v8i64(<8 x i64> %v, ptr align 8 %base, <8 x i1> %mask) 22661c283dbSYeting Kuo ret void 22761c283dbSYeting Kuo} 228*aa68e281SKolya Panchenko;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line: 229*aa68e281SKolya Panchenko; RV32: {{.*}} 230*aa68e281SKolya Panchenko; RV64: {{.*}} 231