1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py 2; RUN: llc -mtriple=riscv32 -mattr=+m,+d,+v,+zvfh,+zvfbfmin \ 3; RUN: -verify-machineinstrs < %s | FileCheck %s \ 4; RUN: -check-prefixes=CHECK,CHECK-RV32 5; RUN: llc -mtriple=riscv64 -mattr=+m,+d,+v,+zvfh,+zvfbfmin \ 6; RUN: -verify-machineinstrs < %s | FileCheck %s \ 7; RUN: -check-prefixes=CHECK,CHECK-RV64 8; RUN: llc -mtriple=riscv32 -mattr=+m,+d,+v,+zvfhmin,+zvfbfmin \ 9; RUN: -verify-machineinstrs < %s | FileCheck %s \ 10; RUN: -check-prefixes=CHECK,CHECK-RV32 11; RUN: llc -mtriple=riscv64 -mattr=+m,+d,+v,+zvfhmin,+zvfbfmin \ 12; RUN: -verify-machineinstrs < %s | FileCheck %s \ 13; RUN: -check-prefixes=CHECK,CHECK-RV64 14 15declare void @llvm.experimental.vp.strided.store.nxv1i8.p0.i8(<vscale x 1 x i8>, ptr, i8, <vscale x 1 x i1>, i32) 16 17define void @strided_vpstore_nxv1i8_i8(<vscale x 1 x i8> %val, ptr %ptr, i8 signext %stride, <vscale x 1 x i1> %m, i32 zeroext %evl) { 18; CHECK-LABEL: strided_vpstore_nxv1i8_i8: 19; CHECK: # %bb.0: 20; CHECK-NEXT: vsetvli zero, a2, e8, mf8, ta, ma 21; CHECK-NEXT: vsse8.v v8, (a0), a1, v0.t 22; CHECK-NEXT: ret 23 call void @llvm.experimental.vp.strided.store.nxv1i8.p0.i8(<vscale x 1 x i8> %val, ptr %ptr, i8 %stride, <vscale x 1 x i1> %m, i32 %evl) 24 ret void 25} 26 27declare void @llvm.experimental.vp.strided.store.nxv1i8.p0.i16(<vscale x 1 x i8>, ptr, i16, <vscale x 1 x i1>, i32) 28 29define void @strided_vpstore_nxv1i8_i16(<vscale x 1 x i8> %val, ptr %ptr, i16 signext %stride, <vscale x 1 x i1> %m, i32 zeroext %evl) { 30; CHECK-LABEL: strided_vpstore_nxv1i8_i16: 31; CHECK: # %bb.0: 32; CHECK-NEXT: vsetvli zero, a2, e8, mf8, ta, ma 33; CHECK-NEXT: vsse8.v v8, (a0), a1, v0.t 34; CHECK-NEXT: ret 35 call void @llvm.experimental.vp.strided.store.nxv1i8.p0.i16(<vscale x 1 x i8> %val, ptr %ptr, i16 %stride, <vscale x 1 x i1> %m, i32 %evl) 36 ret void 37} 38 39declare void @llvm.experimental.vp.strided.store.nxv1i8.p0.i64(<vscale x 1 x i8>, ptr, i64, <vscale x 1 x i1>, i32) 40 41define void @strided_vpstore_nxv1i8_i64(<vscale x 1 x i8> %val, ptr %ptr, i64 signext %stride, <vscale x 1 x i1> %m, i32 zeroext %evl) { 42; CHECK-RV32-LABEL: strided_vpstore_nxv1i8_i64: 43; CHECK-RV32: # %bb.0: 44; CHECK-RV32-NEXT: vsetvli zero, a3, e8, mf8, ta, ma 45; CHECK-RV32-NEXT: vsse8.v v8, (a0), a1, v0.t 46; CHECK-RV32-NEXT: ret 47; 48; CHECK-RV64-LABEL: strided_vpstore_nxv1i8_i64: 49; CHECK-RV64: # %bb.0: 50; CHECK-RV64-NEXT: vsetvli zero, a2, e8, mf8, ta, ma 51; CHECK-RV64-NEXT: vsse8.v v8, (a0), a1, v0.t 52; CHECK-RV64-NEXT: ret 53 call void @llvm.experimental.vp.strided.store.nxv1i8.p0.i64(<vscale x 1 x i8> %val, ptr %ptr, i64 %stride, <vscale x 1 x i1> %m, i32 %evl) 54 ret void 55} 56 57declare void @llvm.experimental.vp.strided.store.nxv1i8.p0.i32(<vscale x 1 x i8>, ptr, i32, <vscale x 1 x i1>, i32) 58 59define void @strided_vpstore_nxv1i8(<vscale x 1 x i8> %val, ptr %ptr, i32 signext %strided, <vscale x 1 x i1> %m, i32 zeroext %evl) { 60; CHECK-LABEL: strided_vpstore_nxv1i8: 61; CHECK: # %bb.0: 62; CHECK-NEXT: vsetvli zero, a2, e8, mf8, ta, ma 63; CHECK-NEXT: vsse8.v v8, (a0), a1, v0.t 64; CHECK-NEXT: ret 65 call void @llvm.experimental.vp.strided.store.nxv1i8.p0.i32(<vscale x 1 x i8> %val, ptr %ptr, i32 %strided, <vscale x 1 x i1> %m, i32 %evl) 66 ret void 67} 68 69declare void @llvm.experimental.vp.strided.store.nxv2i8.p0.i32(<vscale x 2 x i8>, ptr, i32, <vscale x 2 x i1>, i32) 70 71define void @strided_vpstore_nxv2i8(<vscale x 2 x i8> %val, ptr %ptr, i32 signext %strided, <vscale x 2 x i1> %m, i32 zeroext %evl) { 72; CHECK-LABEL: strided_vpstore_nxv2i8: 73; CHECK: # %bb.0: 74; CHECK-NEXT: vsetvli zero, a2, e8, mf4, ta, ma 75; CHECK-NEXT: vsse8.v v8, (a0), a1, v0.t 76; CHECK-NEXT: ret 77 call void @llvm.experimental.vp.strided.store.nxv2i8.p0.i32(<vscale x 2 x i8> %val, ptr %ptr, i32 %strided, <vscale x 2 x i1> %m, i32 %evl) 78 ret void 79} 80 81declare void @llvm.experimental.vp.strided.store.nxv4i8.p0.i32(<vscale x 4 x i8>, ptr, i32, <vscale x 4 x i1>, i32) 82 83define void @strided_vpstore_nxv4i8(<vscale x 4 x i8> %val, ptr %ptr, i32 signext %strided, <vscale x 4 x i1> %m, i32 zeroext %evl) { 84; CHECK-LABEL: strided_vpstore_nxv4i8: 85; CHECK: # %bb.0: 86; CHECK-NEXT: vsetvli zero, a2, e8, mf2, ta, ma 87; CHECK-NEXT: vsse8.v v8, (a0), a1, v0.t 88; CHECK-NEXT: ret 89 call void @llvm.experimental.vp.strided.store.nxv4i8.p0.i32(<vscale x 4 x i8> %val, ptr %ptr, i32 %strided, <vscale x 4 x i1> %m, i32 %evl) 90 ret void 91} 92 93declare void @llvm.experimental.vp.strided.store.nxv8i8.p0.i32(<vscale x 8 x i8>, ptr, i32, <vscale x 8 x i1>, i32) 94 95define void @strided_vpstore_nxv8i8(<vscale x 8 x i8> %val, ptr %ptr, i32 signext %strided, <vscale x 8 x i1> %m, i32 zeroext %evl) { 96; CHECK-LABEL: strided_vpstore_nxv8i8: 97; CHECK: # %bb.0: 98; CHECK-NEXT: vsetvli zero, a2, e8, m1, ta, ma 99; CHECK-NEXT: vsse8.v v8, (a0), a1, v0.t 100; CHECK-NEXT: ret 101 call void @llvm.experimental.vp.strided.store.nxv8i8.p0.i32(<vscale x 8 x i8> %val, ptr %ptr, i32 %strided, <vscale x 8 x i1> %m, i32 %evl) 102 ret void 103} 104 105define void @strided_vpstore_nxv8i8_unit_stride(<vscale x 8 x i8> %val, ptr %ptr, <vscale x 8 x i1> %m, i32 zeroext %evl) { 106; CHECK-LABEL: strided_vpstore_nxv8i8_unit_stride: 107; CHECK: # %bb.0: 108; CHECK-NEXT: vsetvli zero, a1, e8, m1, ta, ma 109; CHECK-NEXT: vse8.v v8, (a0), v0.t 110; CHECK-NEXT: ret 111 call void @llvm.experimental.vp.strided.store.nxv8i8.p0.i32(<vscale x 8 x i8> %val, ptr %ptr, i32 1, <vscale x 8 x i1> %m, i32 %evl) 112 ret void 113} 114 115declare void @llvm.experimental.vp.strided.store.nxv1i16.p0.i32(<vscale x 1 x i16>, ptr, i32, <vscale x 1 x i1>, i32) 116 117define void @strided_vpstore_nxv1i16(<vscale x 1 x i16> %val, ptr %ptr, i32 signext %strided, <vscale x 1 x i1> %m, i32 zeroext %evl) { 118; CHECK-LABEL: strided_vpstore_nxv1i16: 119; CHECK: # %bb.0: 120; CHECK-NEXT: vsetvli zero, a2, e16, mf4, ta, ma 121; CHECK-NEXT: vsse16.v v8, (a0), a1, v0.t 122; CHECK-NEXT: ret 123 call void @llvm.experimental.vp.strided.store.nxv1i16.p0.i32(<vscale x 1 x i16> %val, ptr %ptr, i32 %strided, <vscale x 1 x i1> %m, i32 %evl) 124 ret void 125} 126 127declare void @llvm.experimental.vp.strided.store.nxv2i16.p0.i32(<vscale x 2 x i16>, ptr, i32, <vscale x 2 x i1>, i32) 128 129define void @strided_vpstore_nxv2i16(<vscale x 2 x i16> %val, ptr %ptr, i32 signext %strided, <vscale x 2 x i1> %m, i32 zeroext %evl) { 130; CHECK-LABEL: strided_vpstore_nxv2i16: 131; CHECK: # %bb.0: 132; CHECK-NEXT: vsetvli zero, a2, e16, mf2, ta, ma 133; CHECK-NEXT: vsse16.v v8, (a0), a1, v0.t 134; CHECK-NEXT: ret 135 call void @llvm.experimental.vp.strided.store.nxv2i16.p0.i32(<vscale x 2 x i16> %val, ptr %ptr, i32 %strided, <vscale x 2 x i1> %m, i32 %evl) 136 ret void 137} 138 139declare void @llvm.experimental.vp.strided.store.nxv4i16.p0.i32(<vscale x 4 x i16>, ptr, i32, <vscale x 4 x i1>, i32) 140 141define void @strided_vpstore_nxv4i16(<vscale x 4 x i16> %val, ptr %ptr, i32 signext %strided, <vscale x 4 x i1> %m, i32 zeroext %evl) { 142; CHECK-LABEL: strided_vpstore_nxv4i16: 143; CHECK: # %bb.0: 144; CHECK-NEXT: vsetvli zero, a2, e16, m1, ta, ma 145; CHECK-NEXT: vsse16.v v8, (a0), a1, v0.t 146; CHECK-NEXT: ret 147 call void @llvm.experimental.vp.strided.store.nxv4i16.p0.i32(<vscale x 4 x i16> %val, ptr %ptr, i32 %strided, <vscale x 4 x i1> %m, i32 %evl) 148 ret void 149} 150 151define void @strided_vpstore_nxv4i16_unit_stride(<vscale x 4 x i16> %val, ptr %ptr, <vscale x 4 x i1> %m, i32 zeroext %evl) { 152; CHECK-LABEL: strided_vpstore_nxv4i16_unit_stride: 153; CHECK: # %bb.0: 154; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma 155; CHECK-NEXT: vse16.v v8, (a0), v0.t 156; CHECK-NEXT: ret 157 call void @llvm.experimental.vp.strided.store.nxv4i16.p0.i32(<vscale x 4 x i16> %val, ptr %ptr, i32 2, <vscale x 4 x i1> %m, i32 %evl) 158 ret void 159} 160 161declare void @llvm.experimental.vp.strided.store.nxv8i16.p0.i32(<vscale x 8 x i16>, ptr, i32, <vscale x 8 x i1>, i32) 162 163define void @strided_vpstore_nxv8i16(<vscale x 8 x i16> %val, ptr %ptr, i32 signext %strided, <vscale x 8 x i1> %m, i32 zeroext %evl) { 164; CHECK-LABEL: strided_vpstore_nxv8i16: 165; CHECK: # %bb.0: 166; CHECK-NEXT: vsetvli zero, a2, e16, m2, ta, ma 167; CHECK-NEXT: vsse16.v v8, (a0), a1, v0.t 168; CHECK-NEXT: ret 169 call void @llvm.experimental.vp.strided.store.nxv8i16.p0.i32(<vscale x 8 x i16> %val, ptr %ptr, i32 %strided, <vscale x 8 x i1> %m, i32 %evl) 170 ret void 171} 172 173declare void @llvm.experimental.vp.strided.store.nxv1i32.p0.i32(<vscale x 1 x i32>, ptr, i32, <vscale x 1 x i1>, i32) 174 175define void @strided_vpstore_nxv1i32(<vscale x 1 x i32> %val, ptr %ptr, i32 signext %strided, <vscale x 1 x i1> %m, i32 zeroext %evl) { 176; CHECK-LABEL: strided_vpstore_nxv1i32: 177; CHECK: # %bb.0: 178; CHECK-NEXT: vsetvli zero, a2, e32, mf2, ta, ma 179; CHECK-NEXT: vsse32.v v8, (a0), a1, v0.t 180; CHECK-NEXT: ret 181 call void @llvm.experimental.vp.strided.store.nxv1i32.p0.i32(<vscale x 1 x i32> %val, ptr %ptr, i32 %strided, <vscale x 1 x i1> %m, i32 %evl) 182 ret void 183} 184 185declare void @llvm.experimental.vp.strided.store.nxv2i32.p0.i32(<vscale x 2 x i32>, ptr, i32, <vscale x 2 x i1>, i32) 186 187define void @strided_vpstore_nxv2i32(<vscale x 2 x i32> %val, ptr %ptr, i32 signext %strided, <vscale x 2 x i1> %m, i32 zeroext %evl) { 188; CHECK-LABEL: strided_vpstore_nxv2i32: 189; CHECK: # %bb.0: 190; CHECK-NEXT: vsetvli zero, a2, e32, m1, ta, ma 191; CHECK-NEXT: vsse32.v v8, (a0), a1, v0.t 192; CHECK-NEXT: ret 193 call void @llvm.experimental.vp.strided.store.nxv2i32.p0.i32(<vscale x 2 x i32> %val, ptr %ptr, i32 %strided, <vscale x 2 x i1> %m, i32 %evl) 194 ret void 195} 196 197declare void @llvm.experimental.vp.strided.store.nxv4i32.p0.i32(<vscale x 4 x i32>, ptr, i32, <vscale x 4 x i1>, i32) 198 199define void @strided_vpstore_nxv4i32(<vscale x 4 x i32> %val, ptr %ptr, i32 signext %strided, <vscale x 4 x i1> %m, i32 zeroext %evl) { 200; CHECK-LABEL: strided_vpstore_nxv4i32: 201; CHECK: # %bb.0: 202; CHECK-NEXT: vsetvli zero, a2, e32, m2, ta, ma 203; CHECK-NEXT: vsse32.v v8, (a0), a1, v0.t 204; CHECK-NEXT: ret 205 call void @llvm.experimental.vp.strided.store.nxv4i32.p0.i32(<vscale x 4 x i32> %val, ptr %ptr, i32 %strided, <vscale x 4 x i1> %m, i32 %evl) 206 ret void 207} 208 209define void @strided_vpstore_nxv4i32_unit_stride(<vscale x 4 x i32> %val, ptr %ptr, <vscale x 4 x i1> %m, i32 zeroext %evl) { 210; CHECK-LABEL: strided_vpstore_nxv4i32_unit_stride: 211; CHECK: # %bb.0: 212; CHECK-NEXT: vsetvli zero, a1, e32, m2, ta, ma 213; CHECK-NEXT: vse32.v v8, (a0), v0.t 214; CHECK-NEXT: ret 215 call void @llvm.experimental.vp.strided.store.nxv4i32.p0.i32(<vscale x 4 x i32> %val, ptr %ptr, i32 4, <vscale x 4 x i1> %m, i32 %evl) 216 ret void 217} 218 219declare void @llvm.experimental.vp.strided.store.nxv8i32.p0.i32(<vscale x 8 x i32>, ptr, i32, <vscale x 8 x i1>, i32) 220 221define void @strided_vpstore_nxv8i32(<vscale x 8 x i32> %val, ptr %ptr, i32 signext %strided, <vscale x 8 x i1> %m, i32 zeroext %evl) { 222; CHECK-LABEL: strided_vpstore_nxv8i32: 223; CHECK: # %bb.0: 224; CHECK-NEXT: vsetvli zero, a2, e32, m4, ta, ma 225; CHECK-NEXT: vsse32.v v8, (a0), a1, v0.t 226; CHECK-NEXT: ret 227 call void @llvm.experimental.vp.strided.store.nxv8i32.p0.i32(<vscale x 8 x i32> %val, ptr %ptr, i32 %strided, <vscale x 8 x i1> %m, i32 %evl) 228 ret void 229} 230 231declare void @llvm.experimental.vp.strided.store.nxv1i64.p0.i32(<vscale x 1 x i64>, ptr, i32, <vscale x 1 x i1>, i32) 232 233define void @strided_vpstore_nxv1i64(<vscale x 1 x i64> %val, ptr %ptr, i32 signext %strided, <vscale x 1 x i1> %m, i32 zeroext %evl) { 234; CHECK-LABEL: strided_vpstore_nxv1i64: 235; CHECK: # %bb.0: 236; CHECK-NEXT: vsetvli zero, a2, e64, m1, ta, ma 237; CHECK-NEXT: vsse64.v v8, (a0), a1, v0.t 238; CHECK-NEXT: ret 239 call void @llvm.experimental.vp.strided.store.nxv1i64.p0.i32(<vscale x 1 x i64> %val, ptr %ptr, i32 %strided, <vscale x 1 x i1> %m, i32 %evl) 240 ret void 241} 242 243define void @strided_vpstore_nxv1i64_unit_stride(<vscale x 1 x i64> %val, ptr %ptr, <vscale x 1 x i1> %m, i32 zeroext %evl) { 244; CHECK-LABEL: strided_vpstore_nxv1i64_unit_stride: 245; CHECK: # %bb.0: 246; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, ma 247; CHECK-NEXT: vse64.v v8, (a0), v0.t 248; CHECK-NEXT: ret 249 call void @llvm.experimental.vp.strided.store.nxv1i64.p0.i32(<vscale x 1 x i64> %val, ptr %ptr, i32 8, <vscale x 1 x i1> %m, i32 %evl) 250 ret void 251} 252 253declare void @llvm.experimental.vp.strided.store.nxv2i64.p0.i32(<vscale x 2 x i64>, ptr, i32, <vscale x 2 x i1>, i32) 254 255define void @strided_vpstore_nxv2i64(<vscale x 2 x i64> %val, ptr %ptr, i32 signext %strided, <vscale x 2 x i1> %m, i32 zeroext %evl) { 256; CHECK-LABEL: strided_vpstore_nxv2i64: 257; CHECK: # %bb.0: 258; CHECK-NEXT: vsetvli zero, a2, e64, m2, ta, ma 259; CHECK-NEXT: vsse64.v v8, (a0), a1, v0.t 260; CHECK-NEXT: ret 261 call void @llvm.experimental.vp.strided.store.nxv2i64.p0.i32(<vscale x 2 x i64> %val, ptr %ptr, i32 %strided, <vscale x 2 x i1> %m, i32 %evl) 262 ret void 263} 264 265declare void @llvm.experimental.vp.strided.store.nxv4i64.p0.i32(<vscale x 4 x i64>, ptr, i32, <vscale x 4 x i1>, i32) 266 267define void @strided_vpstore_nxv4i64(<vscale x 4 x i64> %val, ptr %ptr, i32 signext %strided, <vscale x 4 x i1> %m, i32 zeroext %evl) { 268; CHECK-LABEL: strided_vpstore_nxv4i64: 269; CHECK: # %bb.0: 270; CHECK-NEXT: vsetvli zero, a2, e64, m4, ta, ma 271; CHECK-NEXT: vsse64.v v8, (a0), a1, v0.t 272; CHECK-NEXT: ret 273 call void @llvm.experimental.vp.strided.store.nxv4i64.p0.i32(<vscale x 4 x i64> %val, ptr %ptr, i32 %strided, <vscale x 4 x i1> %m, i32 %evl) 274 ret void 275} 276 277declare void @llvm.experimental.vp.strided.store.nxv8i64.p0.i32(<vscale x 8 x i64>, ptr, i32, <vscale x 8 x i1>, i32) 278 279define void @strided_vpstore_nxv8i64(<vscale x 8 x i64> %val, ptr %ptr, i32 signext %strided, <vscale x 8 x i1> %m, i32 zeroext %evl) { 280; CHECK-LABEL: strided_vpstore_nxv8i64: 281; CHECK: # %bb.0: 282; CHECK-NEXT: vsetvli zero, a2, e64, m8, ta, ma 283; CHECK-NEXT: vsse64.v v8, (a0), a1, v0.t 284; CHECK-NEXT: ret 285 call void @llvm.experimental.vp.strided.store.nxv8i64.p0.i32(<vscale x 8 x i64> %val, ptr %ptr, i32 %strided, <vscale x 8 x i1> %m, i32 %evl) 286 ret void 287} 288 289declare void @llvm.experimental.vp.strided.store.nxv1bf16.p0.i32(<vscale x 1 x bfloat>, ptr, i32, <vscale x 1 x i1>, i32) 290 291define void @strided_vpstore_nxv1bf16(<vscale x 1 x bfloat> %val, ptr %ptr, i32 signext %strided, <vscale x 1 x i1> %m, i32 zeroext %evl) { 292; CHECK-LABEL: strided_vpstore_nxv1bf16: 293; CHECK: # %bb.0: 294; CHECK-NEXT: vsetvli zero, a2, e16, mf4, ta, ma 295; CHECK-NEXT: vsse16.v v8, (a0), a1, v0.t 296; CHECK-NEXT: ret 297 call void @llvm.experimental.vp.strided.store.nxv1bf16.p0.i32(<vscale x 1 x bfloat> %val, ptr %ptr, i32 %strided, <vscale x 1 x i1> %m, i32 %evl) 298 ret void 299} 300 301declare void @llvm.experimental.vp.strided.store.nxv2bf16.p0.i32(<vscale x 2 x bfloat>, ptr, i32, <vscale x 2 x i1>, i32) 302 303define void @strided_vpstore_nxv2bf16(<vscale x 2 x bfloat> %val, ptr %ptr, i32 signext %strided, <vscale x 2 x i1> %m, i32 zeroext %evl) { 304; CHECK-LABEL: strided_vpstore_nxv2bf16: 305; CHECK: # %bb.0: 306; CHECK-NEXT: vsetvli zero, a2, e16, mf2, ta, ma 307; CHECK-NEXT: vsse16.v v8, (a0), a1, v0.t 308; CHECK-NEXT: ret 309 call void @llvm.experimental.vp.strided.store.nxv2bf16.p0.i32(<vscale x 2 x bfloat> %val, ptr %ptr, i32 %strided, <vscale x 2 x i1> %m, i32 %evl) 310 ret void 311} 312 313declare void @llvm.experimental.vp.strided.store.nxv4bf16.p0.i32(<vscale x 4 x bfloat>, ptr, i32, <vscale x 4 x i1>, i32) 314 315define void @strided_vpstore_nxv4bf16(<vscale x 4 x bfloat> %val, ptr %ptr, i32 signext %strided, <vscale x 4 x i1> %m, i32 zeroext %evl) { 316; CHECK-LABEL: strided_vpstore_nxv4bf16: 317; CHECK: # %bb.0: 318; CHECK-NEXT: vsetvli zero, a2, e16, m1, ta, ma 319; CHECK-NEXT: vsse16.v v8, (a0), a1, v0.t 320; CHECK-NEXT: ret 321 call void @llvm.experimental.vp.strided.store.nxv4bf16.p0.i32(<vscale x 4 x bfloat> %val, ptr %ptr, i32 %strided, <vscale x 4 x i1> %m, i32 %evl) 322 ret void 323} 324 325define void @strided_vpstore_nxv4bf16_unit_stride(<vscale x 4 x bfloat> %val, ptr %ptr, <vscale x 4 x i1> %m, i32 zeroext %evl) { 326; CHECK-LABEL: strided_vpstore_nxv4bf16_unit_stride: 327; CHECK: # %bb.0: 328; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma 329; CHECK-NEXT: vse16.v v8, (a0), v0.t 330; CHECK-NEXT: ret 331 call void @llvm.experimental.vp.strided.store.nxv4bf16.p0.i32(<vscale x 4 x bfloat> %val, ptr %ptr, i32 2, <vscale x 4 x i1> %m, i32 %evl) 332 ret void 333} 334 335declare void @llvm.experimental.vp.strided.store.nxv8bf16.p0.i32(<vscale x 8 x bfloat>, ptr, i32, <vscale x 8 x i1>, i32) 336 337define void @strided_vpstore_nxv8bf16(<vscale x 8 x bfloat> %val, ptr %ptr, i32 signext %strided, <vscale x 8 x i1> %m, i32 zeroext %evl) { 338; CHECK-LABEL: strided_vpstore_nxv8bf16: 339; CHECK: # %bb.0: 340; CHECK-NEXT: vsetvli zero, a2, e16, m2, ta, ma 341; CHECK-NEXT: vsse16.v v8, (a0), a1, v0.t 342; CHECK-NEXT: ret 343 call void @llvm.experimental.vp.strided.store.nxv8bf16.p0.i32(<vscale x 8 x bfloat> %val, ptr %ptr, i32 %strided, <vscale x 8 x i1> %m, i32 %evl) 344 ret void 345} 346 347declare void @llvm.experimental.vp.strided.store.nxv1f16.p0.i32(<vscale x 1 x half>, ptr, i32, <vscale x 1 x i1>, i32) 348 349define void @strided_vpstore_nxv1f16(<vscale x 1 x half> %val, ptr %ptr, i32 signext %strided, <vscale x 1 x i1> %m, i32 zeroext %evl) { 350; CHECK-LABEL: strided_vpstore_nxv1f16: 351; CHECK: # %bb.0: 352; CHECK-NEXT: vsetvli zero, a2, e16, mf4, ta, ma 353; CHECK-NEXT: vsse16.v v8, (a0), a1, v0.t 354; CHECK-NEXT: ret 355 call void @llvm.experimental.vp.strided.store.nxv1f16.p0.i32(<vscale x 1 x half> %val, ptr %ptr, i32 %strided, <vscale x 1 x i1> %m, i32 %evl) 356 ret void 357} 358 359declare void @llvm.experimental.vp.strided.store.nxv2f16.p0.i32(<vscale x 2 x half>, ptr, i32, <vscale x 2 x i1>, i32) 360 361define void @strided_vpstore_nxv2f16(<vscale x 2 x half> %val, ptr %ptr, i32 signext %strided, <vscale x 2 x i1> %m, i32 zeroext %evl) { 362; CHECK-LABEL: strided_vpstore_nxv2f16: 363; CHECK: # %bb.0: 364; CHECK-NEXT: vsetvli zero, a2, e16, mf2, ta, ma 365; CHECK-NEXT: vsse16.v v8, (a0), a1, v0.t 366; CHECK-NEXT: ret 367 call void @llvm.experimental.vp.strided.store.nxv2f16.p0.i32(<vscale x 2 x half> %val, ptr %ptr, i32 %strided, <vscale x 2 x i1> %m, i32 %evl) 368 ret void 369} 370 371declare void @llvm.experimental.vp.strided.store.nxv4f16.p0.i32(<vscale x 4 x half>, ptr, i32, <vscale x 4 x i1>, i32) 372 373define void @strided_vpstore_nxv4f16(<vscale x 4 x half> %val, ptr %ptr, i32 signext %strided, <vscale x 4 x i1> %m, i32 zeroext %evl) { 374; CHECK-LABEL: strided_vpstore_nxv4f16: 375; CHECK: # %bb.0: 376; CHECK-NEXT: vsetvli zero, a2, e16, m1, ta, ma 377; CHECK-NEXT: vsse16.v v8, (a0), a1, v0.t 378; CHECK-NEXT: ret 379 call void @llvm.experimental.vp.strided.store.nxv4f16.p0.i32(<vscale x 4 x half> %val, ptr %ptr, i32 %strided, <vscale x 4 x i1> %m, i32 %evl) 380 ret void 381} 382 383define void @strided_vpstore_nxv4f16_unit_stride(<vscale x 4 x half> %val, ptr %ptr, <vscale x 4 x i1> %m, i32 zeroext %evl) { 384; CHECK-LABEL: strided_vpstore_nxv4f16_unit_stride: 385; CHECK: # %bb.0: 386; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma 387; CHECK-NEXT: vse16.v v8, (a0), v0.t 388; CHECK-NEXT: ret 389 call void @llvm.experimental.vp.strided.store.nxv4f16.p0.i32(<vscale x 4 x half> %val, ptr %ptr, i32 2, <vscale x 4 x i1> %m, i32 %evl) 390 ret void 391} 392 393declare void @llvm.experimental.vp.strided.store.nxv8f16.p0.i32(<vscale x 8 x half>, ptr, i32, <vscale x 8 x i1>, i32) 394 395define void @strided_vpstore_nxv8f16(<vscale x 8 x half> %val, ptr %ptr, i32 signext %strided, <vscale x 8 x i1> %m, i32 zeroext %evl) { 396; CHECK-LABEL: strided_vpstore_nxv8f16: 397; CHECK: # %bb.0: 398; CHECK-NEXT: vsetvli zero, a2, e16, m2, ta, ma 399; CHECK-NEXT: vsse16.v v8, (a0), a1, v0.t 400; CHECK-NEXT: ret 401 call void @llvm.experimental.vp.strided.store.nxv8f16.p0.i32(<vscale x 8 x half> %val, ptr %ptr, i32 %strided, <vscale x 8 x i1> %m, i32 %evl) 402 ret void 403} 404 405declare void @llvm.experimental.vp.strided.store.nxv1f32.p0.i32(<vscale x 1 x float>, ptr, i32, <vscale x 1 x i1>, i32) 406 407define void @strided_vpstore_nxv1f32(<vscale x 1 x float> %val, ptr %ptr, i32 signext %strided, <vscale x 1 x i1> %m, i32 zeroext %evl) { 408; CHECK-LABEL: strided_vpstore_nxv1f32: 409; CHECK: # %bb.0: 410; CHECK-NEXT: vsetvli zero, a2, e32, mf2, ta, ma 411; CHECK-NEXT: vsse32.v v8, (a0), a1, v0.t 412; CHECK-NEXT: ret 413 call void @llvm.experimental.vp.strided.store.nxv1f32.p0.i32(<vscale x 1 x float> %val, ptr %ptr, i32 %strided, <vscale x 1 x i1> %m, i32 %evl) 414 ret void 415} 416 417declare void @llvm.experimental.vp.strided.store.nxv2f32.p0.i32(<vscale x 2 x float>, ptr, i32, <vscale x 2 x i1>, i32) 418 419define void @strided_vpstore_nxv2f32(<vscale x 2 x float> %val, ptr %ptr, i32 signext %strided, <vscale x 2 x i1> %m, i32 zeroext %evl) { 420; CHECK-LABEL: strided_vpstore_nxv2f32: 421; CHECK: # %bb.0: 422; CHECK-NEXT: vsetvli zero, a2, e32, m1, ta, ma 423; CHECK-NEXT: vsse32.v v8, (a0), a1, v0.t 424; CHECK-NEXT: ret 425 call void @llvm.experimental.vp.strided.store.nxv2f32.p0.i32(<vscale x 2 x float> %val, ptr %ptr, i32 %strided, <vscale x 2 x i1> %m, i32 %evl) 426 ret void 427} 428 429declare void @llvm.experimental.vp.strided.store.nxv4f32.p0.i32(<vscale x 4 x float>, ptr, i32, <vscale x 4 x i1>, i32) 430 431define void @strided_vpstore_nxv4f32(<vscale x 4 x float> %val, ptr %ptr, i32 signext %strided, <vscale x 4 x i1> %m, i32 zeroext %evl) { 432; CHECK-LABEL: strided_vpstore_nxv4f32: 433; CHECK: # %bb.0: 434; CHECK-NEXT: vsetvli zero, a2, e32, m2, ta, ma 435; CHECK-NEXT: vsse32.v v8, (a0), a1, v0.t 436; CHECK-NEXT: ret 437 call void @llvm.experimental.vp.strided.store.nxv4f32.p0.i32(<vscale x 4 x float> %val, ptr %ptr, i32 %strided, <vscale x 4 x i1> %m, i32 %evl) 438 ret void 439} 440 441define void @strided_vpstore_nxv4f32_unit_stride(<vscale x 4 x float> %val, ptr %ptr, <vscale x 4 x i1> %m, i32 zeroext %evl) { 442; CHECK-LABEL: strided_vpstore_nxv4f32_unit_stride: 443; CHECK: # %bb.0: 444; CHECK-NEXT: vsetvli zero, a1, e32, m2, ta, ma 445; CHECK-NEXT: vse32.v v8, (a0), v0.t 446; CHECK-NEXT: ret 447 call void @llvm.experimental.vp.strided.store.nxv4f32.p0.i32(<vscale x 4 x float> %val, ptr %ptr, i32 4, <vscale x 4 x i1> %m, i32 %evl) 448 ret void 449} 450 451declare void @llvm.experimental.vp.strided.store.nxv8f32.p0.i32(<vscale x 8 x float>, ptr, i32, <vscale x 8 x i1>, i32) 452 453define void @strided_vpstore_nxv8f32(<vscale x 8 x float> %val, ptr %ptr, i32 signext %strided, <vscale x 8 x i1> %m, i32 zeroext %evl) { 454; CHECK-LABEL: strided_vpstore_nxv8f32: 455; CHECK: # %bb.0: 456; CHECK-NEXT: vsetvli zero, a2, e32, m4, ta, ma 457; CHECK-NEXT: vsse32.v v8, (a0), a1, v0.t 458; CHECK-NEXT: ret 459 call void @llvm.experimental.vp.strided.store.nxv8f32.p0.i32(<vscale x 8 x float> %val, ptr %ptr, i32 %strided, <vscale x 8 x i1> %m, i32 %evl) 460 ret void 461} 462 463declare void @llvm.experimental.vp.strided.store.nxv1f64.p0.i32(<vscale x 1 x double>, ptr, i32, <vscale x 1 x i1>, i32) 464 465define void @strided_vpstore_nxv1f64(<vscale x 1 x double> %val, ptr %ptr, i32 signext %strided, <vscale x 1 x i1> %m, i32 zeroext %evl) { 466; CHECK-LABEL: strided_vpstore_nxv1f64: 467; CHECK: # %bb.0: 468; CHECK-NEXT: vsetvli zero, a2, e64, m1, ta, ma 469; CHECK-NEXT: vsse64.v v8, (a0), a1, v0.t 470; CHECK-NEXT: ret 471 call void @llvm.experimental.vp.strided.store.nxv1f64.p0.i32(<vscale x 1 x double> %val, ptr %ptr, i32 %strided, <vscale x 1 x i1> %m, i32 %evl) 472 ret void 473} 474 475define void @strided_vpstore_nxv1f64_unit_stride(<vscale x 1 x double> %val, ptr %ptr, <vscale x 1 x i1> %m, i32 zeroext %evl) { 476; CHECK-LABEL: strided_vpstore_nxv1f64_unit_stride: 477; CHECK: # %bb.0: 478; CHECK-NEXT: vsetvli zero, a1, e64, m1, ta, ma 479; CHECK-NEXT: vse64.v v8, (a0), v0.t 480; CHECK-NEXT: ret 481 call void @llvm.experimental.vp.strided.store.nxv1f64.p0.i32(<vscale x 1 x double> %val, ptr %ptr, i32 8, <vscale x 1 x i1> %m, i32 %evl) 482 ret void 483} 484 485declare void @llvm.experimental.vp.strided.store.nxv2f64.p0.i32(<vscale x 2 x double>, ptr, i32, <vscale x 2 x i1>, i32) 486 487define void @strided_vpstore_nxv2f64(<vscale x 2 x double> %val, ptr %ptr, i32 signext %strided, <vscale x 2 x i1> %m, i32 zeroext %evl) { 488; CHECK-LABEL: strided_vpstore_nxv2f64: 489; CHECK: # %bb.0: 490; CHECK-NEXT: vsetvli zero, a2, e64, m2, ta, ma 491; CHECK-NEXT: vsse64.v v8, (a0), a1, v0.t 492; CHECK-NEXT: ret 493 call void @llvm.experimental.vp.strided.store.nxv2f64.p0.i32(<vscale x 2 x double> %val, ptr %ptr, i32 %strided, <vscale x 2 x i1> %m, i32 %evl) 494 ret void 495} 496 497declare void @llvm.experimental.vp.strided.store.nxv4f64.p0.i32(<vscale x 4 x double>, ptr, i32, <vscale x 4 x i1>, i32) 498 499define void @strided_vpstore_nxv4f64(<vscale x 4 x double> %val, ptr %ptr, i32 signext %strided, <vscale x 4 x i1> %m, i32 zeroext %evl) { 500; CHECK-LABEL: strided_vpstore_nxv4f64: 501; CHECK: # %bb.0: 502; CHECK-NEXT: vsetvli zero, a2, e64, m4, ta, ma 503; CHECK-NEXT: vsse64.v v8, (a0), a1, v0.t 504; CHECK-NEXT: ret 505 call void @llvm.experimental.vp.strided.store.nxv4f64.p0.i32(<vscale x 4 x double> %val, ptr %ptr, i32 %strided, <vscale x 4 x i1> %m, i32 %evl) 506 ret void 507} 508 509declare void @llvm.experimental.vp.strided.store.nxv8f64.p0.i32(<vscale x 8 x double>, ptr, i32, <vscale x 8 x i1>, i32) 510 511define void @strided_vpstore_nxv8f64(<vscale x 8 x double> %val, ptr %ptr, i32 signext %strided, <vscale x 8 x i1> %m, i32 zeroext %evl) { 512; CHECK-LABEL: strided_vpstore_nxv8f64: 513; CHECK: # %bb.0: 514; CHECK-NEXT: vsetvli zero, a2, e64, m8, ta, ma 515; CHECK-NEXT: vsse64.v v8, (a0), a1, v0.t 516; CHECK-NEXT: ret 517 call void @llvm.experimental.vp.strided.store.nxv8f64.p0.i32(<vscale x 8 x double> %val, ptr %ptr, i32 %strided, <vscale x 8 x i1> %m, i32 %evl) 518 ret void 519} 520 521define void @strided_vpstore_nxv1i8_allones_mask(<vscale x 1 x i8> %val, ptr %ptr, i32 signext %strided, i32 zeroext %evl) { 522; CHECK-LABEL: strided_vpstore_nxv1i8_allones_mask: 523; CHECK: # %bb.0: 524; CHECK-NEXT: vsetvli zero, a2, e8, mf8, ta, ma 525; CHECK-NEXT: vsse8.v v8, (a0), a1 526; CHECK-NEXT: ret 527 call void @llvm.experimental.vp.strided.store.nxv1i8.p0.i32(<vscale x 1 x i8> %val, ptr %ptr, i32 %strided, <vscale x 1 x i1> splat (i1 true), i32 %evl) 528 ret void 529} 530 531; Widening 532define void @strided_vpstore_nxv3f32(<vscale x 3 x float> %v, ptr %ptr, i32 signext %stride, <vscale x 3 x i1> %mask, i32 zeroext %evl) { 533; CHECK-LABEL: strided_vpstore_nxv3f32: 534; CHECK: # %bb.0: 535; CHECK-NEXT: vsetvli zero, a2, e32, m2, ta, ma 536; CHECK-NEXT: vsse32.v v8, (a0), a1, v0.t 537; CHECK-NEXT: ret 538 call void @llvm.experimental.vp.strided.store.nxv3f32.p0.i32(<vscale x 3 x float> %v, ptr %ptr, i32 %stride, <vscale x 3 x i1> %mask, i32 %evl) 539 ret void 540} 541 542define void @strided_vpstore_nxv3f32_allones_mask(<vscale x 3 x float> %v, ptr %ptr, i32 signext %stride, i32 zeroext %evl) { 543; CHECK-LABEL: strided_vpstore_nxv3f32_allones_mask: 544; CHECK: # %bb.0: 545; CHECK-NEXT: vsetvli zero, a2, e32, m2, ta, ma 546; CHECK-NEXT: vsse32.v v8, (a0), a1 547; CHECK-NEXT: ret 548 call void @llvm.experimental.vp.strided.store.nxv3f32.p0.i32(<vscale x 3 x float> %v, ptr %ptr, i32 %stride, <vscale x 3 x i1> splat (i1 true), i32 %evl) 549 ret void 550} 551 552declare void @llvm.experimental.vp.strided.store.nxv3f32.p0.i32(<vscale x 3 x float>, ptr , i32, <vscale x 3 x i1>, i32) 553 554; Splitting 555define void @strided_store_nxv16f64(<vscale x 16 x double> %v, ptr %ptr, i32 signext %stride, <vscale x 16 x i1> %mask, i32 zeroext %evl) { 556; CHECK-LABEL: strided_store_nxv16f64: 557; CHECK: # %bb.0: 558; CHECK-NEXT: csrr a3, vlenb 559; CHECK-NEXT: mv a4, a2 560; CHECK-NEXT: bltu a2, a3, .LBB46_2 561; CHECK-NEXT: # %bb.1: 562; CHECK-NEXT: mv a4, a3 563; CHECK-NEXT: .LBB46_2: 564; CHECK-NEXT: vsetvli zero, a4, e64, m8, ta, ma 565; CHECK-NEXT: vsse64.v v8, (a0), a1, v0.t 566; CHECK-NEXT: sub a5, a2, a3 567; CHECK-NEXT: mul a4, a4, a1 568; CHECK-NEXT: srli a3, a3, 3 569; CHECK-NEXT: sltu a2, a2, a5 570; CHECK-NEXT: vsetvli a6, zero, e8, mf4, ta, ma 571; CHECK-NEXT: vslidedown.vx v0, v0, a3 572; CHECK-NEXT: addi a2, a2, -1 573; CHECK-NEXT: and a2, a2, a5 574; CHECK-NEXT: add a0, a0, a4 575; CHECK-NEXT: vsetvli zero, a2, e64, m8, ta, ma 576; CHECK-NEXT: vsse64.v v16, (a0), a1, v0.t 577; CHECK-NEXT: ret 578 call void @llvm.experimental.vp.strided.store.nxv16f64.p0.i32(<vscale x 16 x double> %v, ptr %ptr, i32 %stride, <vscale x 16 x i1> %mask, i32 %evl) 579 ret void 580} 581 582define void @strided_store_nxv16f64_allones_mask(<vscale x 16 x double> %v, ptr %ptr, i32 signext %stride, i32 zeroext %evl) { 583; CHECK-LABEL: strided_store_nxv16f64_allones_mask: 584; CHECK: # %bb.0: 585; CHECK-NEXT: csrr a4, vlenb 586; CHECK-NEXT: mv a3, a2 587; CHECK-NEXT: bltu a2, a4, .LBB47_2 588; CHECK-NEXT: # %bb.1: 589; CHECK-NEXT: mv a3, a4 590; CHECK-NEXT: .LBB47_2: 591; CHECK-NEXT: vsetvli zero, a3, e64, m8, ta, ma 592; CHECK-NEXT: vsse64.v v8, (a0), a1 593; CHECK-NEXT: sub a4, a2, a4 594; CHECK-NEXT: mul a3, a3, a1 595; CHECK-NEXT: sltu a2, a2, a4 596; CHECK-NEXT: addi a2, a2, -1 597; CHECK-NEXT: and a2, a2, a4 598; CHECK-NEXT: add a0, a0, a3 599; CHECK-NEXT: vsetvli zero, a2, e64, m8, ta, ma 600; CHECK-NEXT: vsse64.v v16, (a0), a1 601; CHECK-NEXT: ret 602 call void @llvm.experimental.vp.strided.store.nxv16f64.p0.i32(<vscale x 16 x double> %v, ptr %ptr, i32 %stride, <vscale x 16 x i1> splat (i1 true), i32 %evl) 603 ret void 604} 605 606declare void @llvm.experimental.vp.strided.store.nxv16f64.p0.i32(<vscale x 16 x double>, ptr, i32, <vscale x 16 x i1>, i32) 607 608; Widening + splitting (with HiIsEmpty == true) 609define void @strided_store_nxv17f64(<vscale x 17 x double> %v, ptr %ptr, i32 signext %stride, <vscale x 17 x i1> %mask, i32 zeroext %evl) { 610; CHECK-LABEL: strided_store_nxv17f64: 611; CHECK: # %bb.0: 612; CHECK-NEXT: addi sp, sp, -16 613; CHECK-NEXT: .cfi_def_cfa_offset 16 614; CHECK-NEXT: csrr a4, vlenb 615; CHECK-NEXT: slli a4, a4, 3 616; CHECK-NEXT: sub sp, sp, a4 617; CHECK-NEXT: .cfi_escape 0x0f, 0x0d, 0x72, 0x00, 0x11, 0x10, 0x22, 0x11, 0x08, 0x92, 0xa2, 0x38, 0x00, 0x1e, 0x22 # sp + 16 + 8 * vlenb 618; CHECK-NEXT: vsetivli zero, 1, e8, m1, ta, ma 619; CHECK-NEXT: vmv1r.v v24, v0 620; CHECK-NEXT: addi a4, sp, 16 621; CHECK-NEXT: vs8r.v v16, (a4) # Unknown-size Folded Spill 622; CHECK-NEXT: csrr a4, vlenb 623; CHECK-NEXT: slli a6, a4, 1 624; CHECK-NEXT: mv a5, a3 625; CHECK-NEXT: bltu a3, a6, .LBB48_2 626; CHECK-NEXT: # %bb.1: 627; CHECK-NEXT: mv a5, a6 628; CHECK-NEXT: .LBB48_2: 629; CHECK-NEXT: mv a7, a5 630; CHECK-NEXT: bltu a5, a4, .LBB48_4 631; CHECK-NEXT: # %bb.3: 632; CHECK-NEXT: mv a7, a4 633; CHECK-NEXT: .LBB48_4: 634; CHECK-NEXT: vmv1r.v v0, v24 635; CHECK-NEXT: vl8re64.v v16, (a0) 636; CHECK-NEXT: vsetvli zero, a7, e64, m8, ta, ma 637; CHECK-NEXT: vsse64.v v8, (a1), a2, v0.t 638; CHECK-NEXT: sub a0, a5, a4 639; CHECK-NEXT: mul a7, a7, a2 640; CHECK-NEXT: srli t0, a4, 3 641; CHECK-NEXT: sub a6, a3, a6 642; CHECK-NEXT: vsetvli t1, zero, e8, mf4, ta, ma 643; CHECK-NEXT: vslidedown.vx v0, v24, t0 644; CHECK-NEXT: sltu t0, a5, a0 645; CHECK-NEXT: add a7, a1, a7 646; CHECK-NEXT: sltu a3, a3, a6 647; CHECK-NEXT: addi t0, t0, -1 648; CHECK-NEXT: addi a3, a3, -1 649; CHECK-NEXT: and t0, t0, a0 650; CHECK-NEXT: and a0, a3, a6 651; CHECK-NEXT: addi a3, sp, 16 652; CHECK-NEXT: vl8r.v v8, (a3) # Unknown-size Folded Reload 653; CHECK-NEXT: vsetvli zero, t0, e64, m8, ta, ma 654; CHECK-NEXT: vsse64.v v8, (a7), a2, v0.t 655; CHECK-NEXT: bltu a0, a4, .LBB48_6 656; CHECK-NEXT: # %bb.5: 657; CHECK-NEXT: mv a0, a4 658; CHECK-NEXT: .LBB48_6: 659; CHECK-NEXT: mul a3, a5, a2 660; CHECK-NEXT: srli a4, a4, 2 661; CHECK-NEXT: vsetvli a5, zero, e8, mf2, ta, ma 662; CHECK-NEXT: vslidedown.vx v0, v24, a4 663; CHECK-NEXT: add a1, a1, a3 664; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma 665; CHECK-NEXT: vsse64.v v16, (a1), a2, v0.t 666; CHECK-NEXT: csrr a0, vlenb 667; CHECK-NEXT: slli a0, a0, 3 668; CHECK-NEXT: add sp, sp, a0 669; CHECK-NEXT: .cfi_def_cfa sp, 16 670; CHECK-NEXT: addi sp, sp, 16 671; CHECK-NEXT: .cfi_def_cfa_offset 0 672; CHECK-NEXT: ret 673 call void @llvm.experimental.vp.strided.store.nxv17f64.p0.i32(<vscale x 17 x double> %v, ptr %ptr, i32 %stride, <vscale x 17 x i1> %mask, i32 %evl) 674 ret void 675} 676 677declare void @llvm.experimental.vp.strided.store.nxv17f64.p0.i32(<vscale x 17 x double>, ptr, i32, <vscale x 17 x i1>, i32) 678