951 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2; RUN: llc -mtriple=riscv32 -mattr=+v -global-isel -stop-after=irtranslator -verify-machineinstrs < %s | FileCheck -check-prefixes=RV32 %s3; RUN: llc -mtriple=riscv64 -mattr=+v -global-isel -stop-after=irtranslator -verify-machineinstrs < %s | FileCheck -check-prefixes=RV64 %s4 5define void @vstore_nx1i8(ptr %pa, <vscale x 1 x i8> %b) {6 ; RV32-LABEL: name: vstore_nx1i87 ; RV32: bb.1 (%ir-block.0):8 ; RV32-NEXT: liveins: $v8, $x109 ; RV32-NEXT: {{ $}}10 ; RV32-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x1011 ; RV32-NEXT: [[COPY1:%[0-9]+]]:_(<vscale x 1 x s8>) = COPY $v812 ; RV32-NEXT: G_STORE [[COPY1]](<vscale x 1 x s8>), [[COPY]](p0) :: (store (<vscale x 1 x s8>) into %ir.pa)13 ; RV32-NEXT: PseudoRET14 ;15 ; RV64-LABEL: name: vstore_nx1i816 ; RV64: bb.1 (%ir-block.0):17 ; RV64-NEXT: liveins: $v8, $x1018 ; RV64-NEXT: {{ $}}19 ; RV64-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x1020 ; RV64-NEXT: [[COPY1:%[0-9]+]]:_(<vscale x 1 x s8>) = COPY $v821 ; RV64-NEXT: G_STORE [[COPY1]](<vscale x 1 x s8>), [[COPY]](p0) :: (store (<vscale x 1 x s8>) into %ir.pa)22 ; RV64-NEXT: PseudoRET23 store <vscale x 1 x i8> %b, ptr %pa24 ret void25}26 27define void @vstore_nx2i8(ptr %pa, <vscale x 2 x i8> %b) {28 ; RV32-LABEL: name: vstore_nx2i829 ; RV32: bb.1 (%ir-block.0):30 ; RV32-NEXT: liveins: $v8, $x1031 ; RV32-NEXT: {{ $}}32 ; RV32-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x1033 ; RV32-NEXT: [[COPY1:%[0-9]+]]:_(<vscale x 2 x s8>) = COPY $v834 ; RV32-NEXT: G_STORE [[COPY1]](<vscale x 2 x s8>), [[COPY]](p0) :: (store (<vscale x 2 x s8>) into %ir.pa)35 ; RV32-NEXT: PseudoRET36 ;37 ; RV64-LABEL: name: vstore_nx2i838 ; RV64: bb.1 (%ir-block.0):39 ; RV64-NEXT: liveins: $v8, $x1040 ; RV64-NEXT: {{ $}}41 ; RV64-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x1042 ; RV64-NEXT: [[COPY1:%[0-9]+]]:_(<vscale x 2 x s8>) = COPY $v843 ; RV64-NEXT: G_STORE [[COPY1]](<vscale x 2 x s8>), [[COPY]](p0) :: (store (<vscale x 2 x s8>) into %ir.pa)44 ; RV64-NEXT: PseudoRET45 store <vscale x 2 x i8> %b, ptr %pa46 ret void47}48 49define void @vstore_nx4i8(ptr %pa, <vscale x 4 x i8> %b) {50 ; RV32-LABEL: name: vstore_nx4i851 ; RV32: bb.1 (%ir-block.0):52 ; RV32-NEXT: liveins: $v8, $x1053 ; RV32-NEXT: {{ $}}54 ; RV32-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x1055 ; RV32-NEXT: [[COPY1:%[0-9]+]]:_(<vscale x 4 x s8>) = COPY $v856 ; RV32-NEXT: G_STORE [[COPY1]](<vscale x 4 x s8>), [[COPY]](p0) :: (store (<vscale x 4 x s8>) into %ir.pa)57 ; RV32-NEXT: PseudoRET58 ;59 ; RV64-LABEL: name: vstore_nx4i860 ; RV64: bb.1 (%ir-block.0):61 ; RV64-NEXT: liveins: $v8, $x1062 ; RV64-NEXT: {{ $}}63 ; RV64-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x1064 ; RV64-NEXT: [[COPY1:%[0-9]+]]:_(<vscale x 4 x s8>) = COPY $v865 ; RV64-NEXT: G_STORE [[COPY1]](<vscale x 4 x s8>), [[COPY]](p0) :: (store (<vscale x 4 x s8>) into %ir.pa)66 ; RV64-NEXT: PseudoRET67 store <vscale x 4 x i8> %b, ptr %pa68 ret void69}70 71define void @vstore_nx8i8(ptr %pa, <vscale x 8 x i8> %b) {72 ; RV32-LABEL: name: vstore_nx8i873 ; RV32: bb.1 (%ir-block.0):74 ; RV32-NEXT: liveins: $v8, $x1075 ; RV32-NEXT: {{ $}}76 ; RV32-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x1077 ; RV32-NEXT: [[COPY1:%[0-9]+]]:_(<vscale x 8 x s8>) = COPY $v878 ; RV32-NEXT: G_STORE [[COPY1]](<vscale x 8 x s8>), [[COPY]](p0) :: (store (<vscale x 8 x s8>) into %ir.pa)79 ; RV32-NEXT: PseudoRET80 ;81 ; RV64-LABEL: name: vstore_nx8i882 ; RV64: bb.1 (%ir-block.0):83 ; RV64-NEXT: liveins: $v8, $x1084 ; RV64-NEXT: {{ $}}85 ; RV64-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x1086 ; RV64-NEXT: [[COPY1:%[0-9]+]]:_(<vscale x 8 x s8>) = COPY $v887 ; RV64-NEXT: G_STORE [[COPY1]](<vscale x 8 x s8>), [[COPY]](p0) :: (store (<vscale x 8 x s8>) into %ir.pa)88 ; RV64-NEXT: PseudoRET89 store <vscale x 8 x i8> %b, ptr %pa90 ret void91}92 93define void @vstore_nx16i8(ptr %pa, <vscale x 16 x i8> %b) {94 ; RV32-LABEL: name: vstore_nx16i895 ; RV32: bb.1 (%ir-block.0):96 ; RV32-NEXT: liveins: $x10, $v8m297 ; RV32-NEXT: {{ $}}98 ; RV32-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x1099 ; RV32-NEXT: [[COPY1:%[0-9]+]]:_(<vscale x 16 x s8>) = COPY $v8m2100 ; RV32-NEXT: G_STORE [[COPY1]](<vscale x 16 x s8>), [[COPY]](p0) :: (store (<vscale x 16 x s8>) into %ir.pa)101 ; RV32-NEXT: PseudoRET102 ;103 ; RV64-LABEL: name: vstore_nx16i8104 ; RV64: bb.1 (%ir-block.0):105 ; RV64-NEXT: liveins: $x10, $v8m2106 ; RV64-NEXT: {{ $}}107 ; RV64-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x10108 ; RV64-NEXT: [[COPY1:%[0-9]+]]:_(<vscale x 16 x s8>) = COPY $v8m2109 ; RV64-NEXT: G_STORE [[COPY1]](<vscale x 16 x s8>), [[COPY]](p0) :: (store (<vscale x 16 x s8>) into %ir.pa)110 ; RV64-NEXT: PseudoRET111 store <vscale x 16 x i8> %b, ptr %pa112 ret void113}114 115define void @vstore_nx32i8(ptr %pa, <vscale x 32 x i8> %b) {116 ; RV32-LABEL: name: vstore_nx32i8117 ; RV32: bb.1 (%ir-block.0):118 ; RV32-NEXT: liveins: $x10, $v8m4119 ; RV32-NEXT: {{ $}}120 ; RV32-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x10121 ; RV32-NEXT: [[COPY1:%[0-9]+]]:_(<vscale x 32 x s8>) = COPY $v8m4122 ; RV32-NEXT: G_STORE [[COPY1]](<vscale x 32 x s8>), [[COPY]](p0) :: (store (<vscale x 32 x s8>) into %ir.pa)123 ; RV32-NEXT: PseudoRET124 ;125 ; RV64-LABEL: name: vstore_nx32i8126 ; RV64: bb.1 (%ir-block.0):127 ; RV64-NEXT: liveins: $x10, $v8m4128 ; RV64-NEXT: {{ $}}129 ; RV64-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x10130 ; RV64-NEXT: [[COPY1:%[0-9]+]]:_(<vscale x 32 x s8>) = COPY $v8m4131 ; RV64-NEXT: G_STORE [[COPY1]](<vscale x 32 x s8>), [[COPY]](p0) :: (store (<vscale x 32 x s8>) into %ir.pa)132 ; RV64-NEXT: PseudoRET133 store <vscale x 32 x i8> %b, ptr %pa134 ret void135}136 137define void @vstore_nx64i8(ptr %pa, <vscale x 64 x i8> %b) {138 ; RV32-LABEL: name: vstore_nx64i8139 ; RV32: bb.1 (%ir-block.0):140 ; RV32-NEXT: liveins: $x10, $v8m8141 ; RV32-NEXT: {{ $}}142 ; RV32-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x10143 ; RV32-NEXT: [[COPY1:%[0-9]+]]:_(<vscale x 64 x s8>) = COPY $v8m8144 ; RV32-NEXT: G_STORE [[COPY1]](<vscale x 64 x s8>), [[COPY]](p0) :: (store (<vscale x 64 x s8>) into %ir.pa)145 ; RV32-NEXT: PseudoRET146 ;147 ; RV64-LABEL: name: vstore_nx64i8148 ; RV64: bb.1 (%ir-block.0):149 ; RV64-NEXT: liveins: $x10, $v8m8150 ; RV64-NEXT: {{ $}}151 ; RV64-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x10152 ; RV64-NEXT: [[COPY1:%[0-9]+]]:_(<vscale x 64 x s8>) = COPY $v8m8153 ; RV64-NEXT: G_STORE [[COPY1]](<vscale x 64 x s8>), [[COPY]](p0) :: (store (<vscale x 64 x s8>) into %ir.pa)154 ; RV64-NEXT: PseudoRET155 store <vscale x 64 x i8> %b, ptr %pa156 ret void157}158 159define void @vstore_nx1i16(ptr %pa, <vscale x 1 x i16> %b) {160 ; RV32-LABEL: name: vstore_nx1i16161 ; RV32: bb.1 (%ir-block.0):162 ; RV32-NEXT: liveins: $v8, $x10163 ; RV32-NEXT: {{ $}}164 ; RV32-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x10165 ; RV32-NEXT: [[COPY1:%[0-9]+]]:_(<vscale x 1 x s16>) = COPY $v8166 ; RV32-NEXT: G_STORE [[COPY1]](<vscale x 1 x s16>), [[COPY]](p0) :: (store (<vscale x 1 x s16>) into %ir.pa)167 ; RV32-NEXT: PseudoRET168 ;169 ; RV64-LABEL: name: vstore_nx1i16170 ; RV64: bb.1 (%ir-block.0):171 ; RV64-NEXT: liveins: $v8, $x10172 ; RV64-NEXT: {{ $}}173 ; RV64-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x10174 ; RV64-NEXT: [[COPY1:%[0-9]+]]:_(<vscale x 1 x s16>) = COPY $v8175 ; RV64-NEXT: G_STORE [[COPY1]](<vscale x 1 x s16>), [[COPY]](p0) :: (store (<vscale x 1 x s16>) into %ir.pa)176 ; RV64-NEXT: PseudoRET177 store <vscale x 1 x i16> %b, ptr %pa178 ret void179}180 181define void @vstore_nx2i16(ptr %pa, <vscale x 2 x i16> %b) {182 ; RV32-LABEL: name: vstore_nx2i16183 ; RV32: bb.1 (%ir-block.0):184 ; RV32-NEXT: liveins: $v8, $x10185 ; RV32-NEXT: {{ $}}186 ; RV32-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x10187 ; RV32-NEXT: [[COPY1:%[0-9]+]]:_(<vscale x 2 x s16>) = COPY $v8188 ; RV32-NEXT: G_STORE [[COPY1]](<vscale x 2 x s16>), [[COPY]](p0) :: (store (<vscale x 2 x s16>) into %ir.pa)189 ; RV32-NEXT: PseudoRET190 ;191 ; RV64-LABEL: name: vstore_nx2i16192 ; RV64: bb.1 (%ir-block.0):193 ; RV64-NEXT: liveins: $v8, $x10194 ; RV64-NEXT: {{ $}}195 ; RV64-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x10196 ; RV64-NEXT: [[COPY1:%[0-9]+]]:_(<vscale x 2 x s16>) = COPY $v8197 ; RV64-NEXT: G_STORE [[COPY1]](<vscale x 2 x s16>), [[COPY]](p0) :: (store (<vscale x 2 x s16>) into %ir.pa)198 ; RV64-NEXT: PseudoRET199 store <vscale x 2 x i16> %b, ptr %pa200 ret void201}202 203define void @vstore_nx4i16(ptr %pa, <vscale x 4 x i16> %b) {204 ; RV32-LABEL: name: vstore_nx4i16205 ; RV32: bb.1 (%ir-block.0):206 ; RV32-NEXT: liveins: $v8, $x10207 ; RV32-NEXT: {{ $}}208 ; RV32-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x10209 ; RV32-NEXT: [[COPY1:%[0-9]+]]:_(<vscale x 4 x s16>) = COPY $v8210 ; RV32-NEXT: G_STORE [[COPY1]](<vscale x 4 x s16>), [[COPY]](p0) :: (store (<vscale x 4 x s16>) into %ir.pa)211 ; RV32-NEXT: PseudoRET212 ;213 ; RV64-LABEL: name: vstore_nx4i16214 ; RV64: bb.1 (%ir-block.0):215 ; RV64-NEXT: liveins: $v8, $x10216 ; RV64-NEXT: {{ $}}217 ; RV64-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x10218 ; RV64-NEXT: [[COPY1:%[0-9]+]]:_(<vscale x 4 x s16>) = COPY $v8219 ; RV64-NEXT: G_STORE [[COPY1]](<vscale x 4 x s16>), [[COPY]](p0) :: (store (<vscale x 4 x s16>) into %ir.pa)220 ; RV64-NEXT: PseudoRET221 store <vscale x 4 x i16> %b, ptr %pa222 ret void223}224 225define void @vstore_nx8i16(ptr %pa, <vscale x 8 x i16> %b) {226 ; RV32-LABEL: name: vstore_nx8i16227 ; RV32: bb.1 (%ir-block.0):228 ; RV32-NEXT: liveins: $x10, $v8m2229 ; RV32-NEXT: {{ $}}230 ; RV32-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x10231 ; RV32-NEXT: [[COPY1:%[0-9]+]]:_(<vscale x 8 x s16>) = COPY $v8m2232 ; RV32-NEXT: G_STORE [[COPY1]](<vscale x 8 x s16>), [[COPY]](p0) :: (store (<vscale x 8 x s16>) into %ir.pa)233 ; RV32-NEXT: PseudoRET234 ;235 ; RV64-LABEL: name: vstore_nx8i16236 ; RV64: bb.1 (%ir-block.0):237 ; RV64-NEXT: liveins: $x10, $v8m2238 ; RV64-NEXT: {{ $}}239 ; RV64-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x10240 ; RV64-NEXT: [[COPY1:%[0-9]+]]:_(<vscale x 8 x s16>) = COPY $v8m2241 ; RV64-NEXT: G_STORE [[COPY1]](<vscale x 8 x s16>), [[COPY]](p0) :: (store (<vscale x 8 x s16>) into %ir.pa)242 ; RV64-NEXT: PseudoRET243 store <vscale x 8 x i16> %b, ptr %pa244 ret void245}246 247define void @vstore_nx16i16(ptr %pa, <vscale x 16 x i16> %b) {248 ; RV32-LABEL: name: vstore_nx16i16249 ; RV32: bb.1 (%ir-block.0):250 ; RV32-NEXT: liveins: $x10, $v8m4251 ; RV32-NEXT: {{ $}}252 ; RV32-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x10253 ; RV32-NEXT: [[COPY1:%[0-9]+]]:_(<vscale x 16 x s16>) = COPY $v8m4254 ; RV32-NEXT: G_STORE [[COPY1]](<vscale x 16 x s16>), [[COPY]](p0) :: (store (<vscale x 16 x s16>) into %ir.pa)255 ; RV32-NEXT: PseudoRET256 ;257 ; RV64-LABEL: name: vstore_nx16i16258 ; RV64: bb.1 (%ir-block.0):259 ; RV64-NEXT: liveins: $x10, $v8m4260 ; RV64-NEXT: {{ $}}261 ; RV64-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x10262 ; RV64-NEXT: [[COPY1:%[0-9]+]]:_(<vscale x 16 x s16>) = COPY $v8m4263 ; RV64-NEXT: G_STORE [[COPY1]](<vscale x 16 x s16>), [[COPY]](p0) :: (store (<vscale x 16 x s16>) into %ir.pa)264 ; RV64-NEXT: PseudoRET265 store <vscale x 16 x i16> %b, ptr %pa266 ret void267}268 269define void @vstore_nx32i16(ptr %pa, <vscale x 32 x i16> %b) {270 ; RV32-LABEL: name: vstore_nx32i16271 ; RV32: bb.1 (%ir-block.0):272 ; RV32-NEXT: liveins: $x10, $v8m8273 ; RV32-NEXT: {{ $}}274 ; RV32-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x10275 ; RV32-NEXT: [[COPY1:%[0-9]+]]:_(<vscale x 32 x s16>) = COPY $v8m8276 ; RV32-NEXT: G_STORE [[COPY1]](<vscale x 32 x s16>), [[COPY]](p0) :: (store (<vscale x 32 x s16>) into %ir.pa)277 ; RV32-NEXT: PseudoRET278 ;279 ; RV64-LABEL: name: vstore_nx32i16280 ; RV64: bb.1 (%ir-block.0):281 ; RV64-NEXT: liveins: $x10, $v8m8282 ; RV64-NEXT: {{ $}}283 ; RV64-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x10284 ; RV64-NEXT: [[COPY1:%[0-9]+]]:_(<vscale x 32 x s16>) = COPY $v8m8285 ; RV64-NEXT: G_STORE [[COPY1]](<vscale x 32 x s16>), [[COPY]](p0) :: (store (<vscale x 32 x s16>) into %ir.pa)286 ; RV64-NEXT: PseudoRET287 store <vscale x 32 x i16> %b, ptr %pa288 ret void289}290 291define void @vstore_nx1i32(ptr %pa, <vscale x 1 x i32> %b) {292 ; RV32-LABEL: name: vstore_nx1i32293 ; RV32: bb.1 (%ir-block.0):294 ; RV32-NEXT: liveins: $v8, $x10295 ; RV32-NEXT: {{ $}}296 ; RV32-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x10297 ; RV32-NEXT: [[COPY1:%[0-9]+]]:_(<vscale x 1 x s32>) = COPY $v8298 ; RV32-NEXT: G_STORE [[COPY1]](<vscale x 1 x s32>), [[COPY]](p0) :: (store (<vscale x 1 x s32>) into %ir.pa)299 ; RV32-NEXT: PseudoRET300 ;301 ; RV64-LABEL: name: vstore_nx1i32302 ; RV64: bb.1 (%ir-block.0):303 ; RV64-NEXT: liveins: $v8, $x10304 ; RV64-NEXT: {{ $}}305 ; RV64-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x10306 ; RV64-NEXT: [[COPY1:%[0-9]+]]:_(<vscale x 1 x s32>) = COPY $v8307 ; RV64-NEXT: G_STORE [[COPY1]](<vscale x 1 x s32>), [[COPY]](p0) :: (store (<vscale x 1 x s32>) into %ir.pa)308 ; RV64-NEXT: PseudoRET309 store <vscale x 1 x i32> %b, ptr %pa310 ret void311}312 313define void @vstore_nx2i32(ptr %pa, <vscale x 2 x i32> %b) {314 ; RV32-LABEL: name: vstore_nx2i32315 ; RV32: bb.1 (%ir-block.0):316 ; RV32-NEXT: liveins: $v8, $x10317 ; RV32-NEXT: {{ $}}318 ; RV32-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x10319 ; RV32-NEXT: [[COPY1:%[0-9]+]]:_(<vscale x 2 x s32>) = COPY $v8320 ; RV32-NEXT: G_STORE [[COPY1]](<vscale x 2 x s32>), [[COPY]](p0) :: (store (<vscale x 2 x s32>) into %ir.pa)321 ; RV32-NEXT: PseudoRET322 ;323 ; RV64-LABEL: name: vstore_nx2i32324 ; RV64: bb.1 (%ir-block.0):325 ; RV64-NEXT: liveins: $v8, $x10326 ; RV64-NEXT: {{ $}}327 ; RV64-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x10328 ; RV64-NEXT: [[COPY1:%[0-9]+]]:_(<vscale x 2 x s32>) = COPY $v8329 ; RV64-NEXT: G_STORE [[COPY1]](<vscale x 2 x s32>), [[COPY]](p0) :: (store (<vscale x 2 x s32>) into %ir.pa)330 ; RV64-NEXT: PseudoRET331 store <vscale x 2 x i32> %b, ptr %pa332 ret void333}334 335define void @vstore_nx4i32(ptr %pa, <vscale x 4 x i32> %b) {336 ; RV32-LABEL: name: vstore_nx4i32337 ; RV32: bb.1 (%ir-block.0):338 ; RV32-NEXT: liveins: $x10, $v8m2339 ; RV32-NEXT: {{ $}}340 ; RV32-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x10341 ; RV32-NEXT: [[COPY1:%[0-9]+]]:_(<vscale x 4 x s32>) = COPY $v8m2342 ; RV32-NEXT: G_STORE [[COPY1]](<vscale x 4 x s32>), [[COPY]](p0) :: (store (<vscale x 4 x s32>) into %ir.pa)343 ; RV32-NEXT: PseudoRET344 ;345 ; RV64-LABEL: name: vstore_nx4i32346 ; RV64: bb.1 (%ir-block.0):347 ; RV64-NEXT: liveins: $x10, $v8m2348 ; RV64-NEXT: {{ $}}349 ; RV64-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x10350 ; RV64-NEXT: [[COPY1:%[0-9]+]]:_(<vscale x 4 x s32>) = COPY $v8m2351 ; RV64-NEXT: G_STORE [[COPY1]](<vscale x 4 x s32>), [[COPY]](p0) :: (store (<vscale x 4 x s32>) into %ir.pa)352 ; RV64-NEXT: PseudoRET353 store <vscale x 4 x i32> %b, ptr %pa354 ret void355}356 357define void @vstore_nx8i32(ptr %pa, <vscale x 8 x i32> %b) {358 ; RV32-LABEL: name: vstore_nx8i32359 ; RV32: bb.1 (%ir-block.0):360 ; RV32-NEXT: liveins: $x10, $v8m4361 ; RV32-NEXT: {{ $}}362 ; RV32-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x10363 ; RV32-NEXT: [[COPY1:%[0-9]+]]:_(<vscale x 8 x s32>) = COPY $v8m4364 ; RV32-NEXT: G_STORE [[COPY1]](<vscale x 8 x s32>), [[COPY]](p0) :: (store (<vscale x 8 x s32>) into %ir.pa)365 ; RV32-NEXT: PseudoRET366 ;367 ; RV64-LABEL: name: vstore_nx8i32368 ; RV64: bb.1 (%ir-block.0):369 ; RV64-NEXT: liveins: $x10, $v8m4370 ; RV64-NEXT: {{ $}}371 ; RV64-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x10372 ; RV64-NEXT: [[COPY1:%[0-9]+]]:_(<vscale x 8 x s32>) = COPY $v8m4373 ; RV64-NEXT: G_STORE [[COPY1]](<vscale x 8 x s32>), [[COPY]](p0) :: (store (<vscale x 8 x s32>) into %ir.pa)374 ; RV64-NEXT: PseudoRET375 store <vscale x 8 x i32> %b, ptr %pa376 ret void377}378 379define void @vstore_nx16i32(ptr %pa, <vscale x 16 x i32> %b) {380 ; RV32-LABEL: name: vstore_nx16i32381 ; RV32: bb.1 (%ir-block.0):382 ; RV32-NEXT: liveins: $x10, $v8m8383 ; RV32-NEXT: {{ $}}384 ; RV32-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x10385 ; RV32-NEXT: [[COPY1:%[0-9]+]]:_(<vscale x 16 x s32>) = COPY $v8m8386 ; RV32-NEXT: G_STORE [[COPY1]](<vscale x 16 x s32>), [[COPY]](p0) :: (store (<vscale x 16 x s32>) into %ir.pa)387 ; RV32-NEXT: PseudoRET388 ;389 ; RV64-LABEL: name: vstore_nx16i32390 ; RV64: bb.1 (%ir-block.0):391 ; RV64-NEXT: liveins: $x10, $v8m8392 ; RV64-NEXT: {{ $}}393 ; RV64-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x10394 ; RV64-NEXT: [[COPY1:%[0-9]+]]:_(<vscale x 16 x s32>) = COPY $v8m8395 ; RV64-NEXT: G_STORE [[COPY1]](<vscale x 16 x s32>), [[COPY]](p0) :: (store (<vscale x 16 x s32>) into %ir.pa)396 ; RV64-NEXT: PseudoRET397 store <vscale x 16 x i32> %b, ptr %pa398 ret void399}400 401define void @vstore_nx1i64(ptr %pa, <vscale x 1 x i64> %b) {402 ; RV32-LABEL: name: vstore_nx1i64403 ; RV32: bb.1 (%ir-block.0):404 ; RV32-NEXT: liveins: $v8, $x10405 ; RV32-NEXT: {{ $}}406 ; RV32-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x10407 ; RV32-NEXT: [[COPY1:%[0-9]+]]:_(<vscale x 1 x s64>) = COPY $v8408 ; RV32-NEXT: G_STORE [[COPY1]](<vscale x 1 x s64>), [[COPY]](p0) :: (store (<vscale x 1 x s64>) into %ir.pa)409 ; RV32-NEXT: PseudoRET410 ;411 ; RV64-LABEL: name: vstore_nx1i64412 ; RV64: bb.1 (%ir-block.0):413 ; RV64-NEXT: liveins: $v8, $x10414 ; RV64-NEXT: {{ $}}415 ; RV64-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x10416 ; RV64-NEXT: [[COPY1:%[0-9]+]]:_(<vscale x 1 x s64>) = COPY $v8417 ; RV64-NEXT: G_STORE [[COPY1]](<vscale x 1 x s64>), [[COPY]](p0) :: (store (<vscale x 1 x s64>) into %ir.pa)418 ; RV64-NEXT: PseudoRET419 store <vscale x 1 x i64> %b, ptr %pa420 ret void421}422 423define void @vstore_nx2i64(ptr %pa, <vscale x 2 x i64> %b) {424 ; RV32-LABEL: name: vstore_nx2i64425 ; RV32: bb.1 (%ir-block.0):426 ; RV32-NEXT: liveins: $x10, $v8m2427 ; RV32-NEXT: {{ $}}428 ; RV32-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x10429 ; RV32-NEXT: [[COPY1:%[0-9]+]]:_(<vscale x 2 x s64>) = COPY $v8m2430 ; RV32-NEXT: G_STORE [[COPY1]](<vscale x 2 x s64>), [[COPY]](p0) :: (store (<vscale x 2 x s64>) into %ir.pa)431 ; RV32-NEXT: PseudoRET432 ;433 ; RV64-LABEL: name: vstore_nx2i64434 ; RV64: bb.1 (%ir-block.0):435 ; RV64-NEXT: liveins: $x10, $v8m2436 ; RV64-NEXT: {{ $}}437 ; RV64-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x10438 ; RV64-NEXT: [[COPY1:%[0-9]+]]:_(<vscale x 2 x s64>) = COPY $v8m2439 ; RV64-NEXT: G_STORE [[COPY1]](<vscale x 2 x s64>), [[COPY]](p0) :: (store (<vscale x 2 x s64>) into %ir.pa)440 ; RV64-NEXT: PseudoRET441 store <vscale x 2 x i64> %b, ptr %pa442 ret void443}444 445define void @vstore_nx4i64(ptr %pa, <vscale x 4 x i64> %b) {446 ; RV32-LABEL: name: vstore_nx4i64447 ; RV32: bb.1 (%ir-block.0):448 ; RV32-NEXT: liveins: $x10, $v8m4449 ; RV32-NEXT: {{ $}}450 ; RV32-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x10451 ; RV32-NEXT: [[COPY1:%[0-9]+]]:_(<vscale x 4 x s64>) = COPY $v8m4452 ; RV32-NEXT: G_STORE [[COPY1]](<vscale x 4 x s64>), [[COPY]](p0) :: (store (<vscale x 4 x s64>) into %ir.pa)453 ; RV32-NEXT: PseudoRET454 ;455 ; RV64-LABEL: name: vstore_nx4i64456 ; RV64: bb.1 (%ir-block.0):457 ; RV64-NEXT: liveins: $x10, $v8m4458 ; RV64-NEXT: {{ $}}459 ; RV64-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x10460 ; RV64-NEXT: [[COPY1:%[0-9]+]]:_(<vscale x 4 x s64>) = COPY $v8m4461 ; RV64-NEXT: G_STORE [[COPY1]](<vscale x 4 x s64>), [[COPY]](p0) :: (store (<vscale x 4 x s64>) into %ir.pa)462 ; RV64-NEXT: PseudoRET463 store <vscale x 4 x i64> %b, ptr %pa464 ret void465}466 467define void @vstore_nx8i64(ptr %pa, <vscale x 8 x i64> %b) {468 ; RV32-LABEL: name: vstore_nx8i64469 ; RV32: bb.1 (%ir-block.0):470 ; RV32-NEXT: liveins: $x10, $v8m8471 ; RV32-NEXT: {{ $}}472 ; RV32-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x10473 ; RV32-NEXT: [[COPY1:%[0-9]+]]:_(<vscale x 8 x s64>) = COPY $v8m8474 ; RV32-NEXT: G_STORE [[COPY1]](<vscale x 8 x s64>), [[COPY]](p0) :: (store (<vscale x 8 x s64>) into %ir.pa)475 ; RV32-NEXT: PseudoRET476 ;477 ; RV64-LABEL: name: vstore_nx8i64478 ; RV64: bb.1 (%ir-block.0):479 ; RV64-NEXT: liveins: $x10, $v8m8480 ; RV64-NEXT: {{ $}}481 ; RV64-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x10482 ; RV64-NEXT: [[COPY1:%[0-9]+]]:_(<vscale x 8 x s64>) = COPY $v8m8483 ; RV64-NEXT: G_STORE [[COPY1]](<vscale x 8 x s64>), [[COPY]](p0) :: (store (<vscale x 8 x s64>) into %ir.pa)484 ; RV64-NEXT: PseudoRET485 store <vscale x 8 x i64> %b, ptr %pa486 ret void487}488 489define void @vstore_nx16i8_align1(ptr %pa, <vscale x 16 x i8> %b) {490 ; RV32-LABEL: name: vstore_nx16i8_align1491 ; RV32: bb.1 (%ir-block.0):492 ; RV32-NEXT: liveins: $x10, $v8m2493 ; RV32-NEXT: {{ $}}494 ; RV32-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x10495 ; RV32-NEXT: [[COPY1:%[0-9]+]]:_(<vscale x 16 x s8>) = COPY $v8m2496 ; RV32-NEXT: G_STORE [[COPY1]](<vscale x 16 x s8>), [[COPY]](p0) :: (store (<vscale x 16 x s8>) into %ir.pa, align 1)497 ; RV32-NEXT: PseudoRET498 ;499 ; RV64-LABEL: name: vstore_nx16i8_align1500 ; RV64: bb.1 (%ir-block.0):501 ; RV64-NEXT: liveins: $x10, $v8m2502 ; RV64-NEXT: {{ $}}503 ; RV64-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x10504 ; RV64-NEXT: [[COPY1:%[0-9]+]]:_(<vscale x 16 x s8>) = COPY $v8m2505 ; RV64-NEXT: G_STORE [[COPY1]](<vscale x 16 x s8>), [[COPY]](p0) :: (store (<vscale x 16 x s8>) into %ir.pa, align 1)506 ; RV64-NEXT: PseudoRET507 store <vscale x 16 x i8> %b, ptr %pa, align 1508 ret void509}510 511define void @vstore_nx16i8_align2(ptr %pa, <vscale x 16 x i8> %b) {512 ; RV32-LABEL: name: vstore_nx16i8_align2513 ; RV32: bb.1 (%ir-block.0):514 ; RV32-NEXT: liveins: $x10, $v8m2515 ; RV32-NEXT: {{ $}}516 ; RV32-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x10517 ; RV32-NEXT: [[COPY1:%[0-9]+]]:_(<vscale x 16 x s8>) = COPY $v8m2518 ; RV32-NEXT: G_STORE [[COPY1]](<vscale x 16 x s8>), [[COPY]](p0) :: (store (<vscale x 16 x s8>) into %ir.pa, align 2)519 ; RV32-NEXT: PseudoRET520 ;521 ; RV64-LABEL: name: vstore_nx16i8_align2522 ; RV64: bb.1 (%ir-block.0):523 ; RV64-NEXT: liveins: $x10, $v8m2524 ; RV64-NEXT: {{ $}}525 ; RV64-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x10526 ; RV64-NEXT: [[COPY1:%[0-9]+]]:_(<vscale x 16 x s8>) = COPY $v8m2527 ; RV64-NEXT: G_STORE [[COPY1]](<vscale x 16 x s8>), [[COPY]](p0) :: (store (<vscale x 16 x s8>) into %ir.pa, align 2)528 ; RV64-NEXT: PseudoRET529 store <vscale x 16 x i8> %b, ptr %pa, align 2530 ret void531}532 533define void @vstore_nx16i8_align16(ptr %pa, <vscale x 16 x i8> %b) {534 ; RV32-LABEL: name: vstore_nx16i8_align16535 ; RV32: bb.1 (%ir-block.0):536 ; RV32-NEXT: liveins: $x10, $v8m2537 ; RV32-NEXT: {{ $}}538 ; RV32-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x10539 ; RV32-NEXT: [[COPY1:%[0-9]+]]:_(<vscale x 16 x s8>) = COPY $v8m2540 ; RV32-NEXT: G_STORE [[COPY1]](<vscale x 16 x s8>), [[COPY]](p0) :: (store (<vscale x 16 x s8>) into %ir.pa)541 ; RV32-NEXT: PseudoRET542 ;543 ; RV64-LABEL: name: vstore_nx16i8_align16544 ; RV64: bb.1 (%ir-block.0):545 ; RV64-NEXT: liveins: $x10, $v8m2546 ; RV64-NEXT: {{ $}}547 ; RV64-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x10548 ; RV64-NEXT: [[COPY1:%[0-9]+]]:_(<vscale x 16 x s8>) = COPY $v8m2549 ; RV64-NEXT: G_STORE [[COPY1]](<vscale x 16 x s8>), [[COPY]](p0) :: (store (<vscale x 16 x s8>) into %ir.pa)550 ; RV64-NEXT: PseudoRET551 store <vscale x 16 x i8> %b, ptr %pa, align 16552 ret void553}554 555define void @vstore_nx16i8_align64(ptr %pa, <vscale x 16 x i8> %b) {556 ; RV32-LABEL: name: vstore_nx16i8_align64557 ; RV32: bb.1 (%ir-block.0):558 ; RV32-NEXT: liveins: $x10, $v8m2559 ; RV32-NEXT: {{ $}}560 ; RV32-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x10561 ; RV32-NEXT: [[COPY1:%[0-9]+]]:_(<vscale x 16 x s8>) = COPY $v8m2562 ; RV32-NEXT: G_STORE [[COPY1]](<vscale x 16 x s8>), [[COPY]](p0) :: (store (<vscale x 16 x s8>) into %ir.pa, align 64)563 ; RV32-NEXT: PseudoRET564 ;565 ; RV64-LABEL: name: vstore_nx16i8_align64566 ; RV64: bb.1 (%ir-block.0):567 ; RV64-NEXT: liveins: $x10, $v8m2568 ; RV64-NEXT: {{ $}}569 ; RV64-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x10570 ; RV64-NEXT: [[COPY1:%[0-9]+]]:_(<vscale x 16 x s8>) = COPY $v8m2571 ; RV64-NEXT: G_STORE [[COPY1]](<vscale x 16 x s8>), [[COPY]](p0) :: (store (<vscale x 16 x s8>) into %ir.pa, align 64)572 ; RV64-NEXT: PseudoRET573 store <vscale x 16 x i8> %b, ptr %pa, align 64574 ret void575}576 577define void @vstore_nx4i16_align1(ptr %pa, <vscale x 4 x i16> %b) {578 ; RV32-LABEL: name: vstore_nx4i16_align1579 ; RV32: bb.1 (%ir-block.0):580 ; RV32-NEXT: liveins: $v8, $x10581 ; RV32-NEXT: {{ $}}582 ; RV32-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x10583 ; RV32-NEXT: [[COPY1:%[0-9]+]]:_(<vscale x 4 x s16>) = COPY $v8584 ; RV32-NEXT: G_STORE [[COPY1]](<vscale x 4 x s16>), [[COPY]](p0) :: (store (<vscale x 4 x s16>) into %ir.pa, align 1)585 ; RV32-NEXT: PseudoRET586 ;587 ; RV64-LABEL: name: vstore_nx4i16_align1588 ; RV64: bb.1 (%ir-block.0):589 ; RV64-NEXT: liveins: $v8, $x10590 ; RV64-NEXT: {{ $}}591 ; RV64-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x10592 ; RV64-NEXT: [[COPY1:%[0-9]+]]:_(<vscale x 4 x s16>) = COPY $v8593 ; RV64-NEXT: G_STORE [[COPY1]](<vscale x 4 x s16>), [[COPY]](p0) :: (store (<vscale x 4 x s16>) into %ir.pa, align 1)594 ; RV64-NEXT: PseudoRET595 store <vscale x 4 x i16> %b, ptr %pa, align 1596 ret void597}598 599define void @vstore_nx4i16_align2(ptr %pa, <vscale x 4 x i16> %b) {600 ; RV32-LABEL: name: vstore_nx4i16_align2601 ; RV32: bb.1 (%ir-block.0):602 ; RV32-NEXT: liveins: $v8, $x10603 ; RV32-NEXT: {{ $}}604 ; RV32-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x10605 ; RV32-NEXT: [[COPY1:%[0-9]+]]:_(<vscale x 4 x s16>) = COPY $v8606 ; RV32-NEXT: G_STORE [[COPY1]](<vscale x 4 x s16>), [[COPY]](p0) :: (store (<vscale x 4 x s16>) into %ir.pa, align 2)607 ; RV32-NEXT: PseudoRET608 ;609 ; RV64-LABEL: name: vstore_nx4i16_align2610 ; RV64: bb.1 (%ir-block.0):611 ; RV64-NEXT: liveins: $v8, $x10612 ; RV64-NEXT: {{ $}}613 ; RV64-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x10614 ; RV64-NEXT: [[COPY1:%[0-9]+]]:_(<vscale x 4 x s16>) = COPY $v8615 ; RV64-NEXT: G_STORE [[COPY1]](<vscale x 4 x s16>), [[COPY]](p0) :: (store (<vscale x 4 x s16>) into %ir.pa, align 2)616 ; RV64-NEXT: PseudoRET617 store <vscale x 4 x i16> %b, ptr %pa, align 2618 ret void619}620 621define void @vstore_nx4i16_align4(ptr %pa, <vscale x 4 x i16> %b) {622 ; RV32-LABEL: name: vstore_nx4i16_align4623 ; RV32: bb.1 (%ir-block.0):624 ; RV32-NEXT: liveins: $v8, $x10625 ; RV32-NEXT: {{ $}}626 ; RV32-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x10627 ; RV32-NEXT: [[COPY1:%[0-9]+]]:_(<vscale x 4 x s16>) = COPY $v8628 ; RV32-NEXT: G_STORE [[COPY1]](<vscale x 4 x s16>), [[COPY]](p0) :: (store (<vscale x 4 x s16>) into %ir.pa, align 4)629 ; RV32-NEXT: PseudoRET630 ;631 ; RV64-LABEL: name: vstore_nx4i16_align4632 ; RV64: bb.1 (%ir-block.0):633 ; RV64-NEXT: liveins: $v8, $x10634 ; RV64-NEXT: {{ $}}635 ; RV64-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x10636 ; RV64-NEXT: [[COPY1:%[0-9]+]]:_(<vscale x 4 x s16>) = COPY $v8637 ; RV64-NEXT: G_STORE [[COPY1]](<vscale x 4 x s16>), [[COPY]](p0) :: (store (<vscale x 4 x s16>) into %ir.pa, align 4)638 ; RV64-NEXT: PseudoRET639 store <vscale x 4 x i16> %b, ptr %pa, align 4640 ret void641}642 643define void @vstore_nx4i16_align8(ptr %pa, <vscale x 4 x i16> %b) {644 ; RV32-LABEL: name: vstore_nx4i16_align8645 ; RV32: bb.1 (%ir-block.0):646 ; RV32-NEXT: liveins: $v8, $x10647 ; RV32-NEXT: {{ $}}648 ; RV32-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x10649 ; RV32-NEXT: [[COPY1:%[0-9]+]]:_(<vscale x 4 x s16>) = COPY $v8650 ; RV32-NEXT: G_STORE [[COPY1]](<vscale x 4 x s16>), [[COPY]](p0) :: (store (<vscale x 4 x s16>) into %ir.pa)651 ; RV32-NEXT: PseudoRET652 ;653 ; RV64-LABEL: name: vstore_nx4i16_align8654 ; RV64: bb.1 (%ir-block.0):655 ; RV64-NEXT: liveins: $v8, $x10656 ; RV64-NEXT: {{ $}}657 ; RV64-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x10658 ; RV64-NEXT: [[COPY1:%[0-9]+]]:_(<vscale x 4 x s16>) = COPY $v8659 ; RV64-NEXT: G_STORE [[COPY1]](<vscale x 4 x s16>), [[COPY]](p0) :: (store (<vscale x 4 x s16>) into %ir.pa)660 ; RV64-NEXT: PseudoRET661 store <vscale x 4 x i16> %b, ptr %pa, align 8662 ret void663}664 665define void @vstore_nx4i16_align16(ptr %pa, <vscale x 4 x i16> %b) {666 ; RV32-LABEL: name: vstore_nx4i16_align16667 ; RV32: bb.1 (%ir-block.0):668 ; RV32-NEXT: liveins: $v8, $x10669 ; RV32-NEXT: {{ $}}670 ; RV32-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x10671 ; RV32-NEXT: [[COPY1:%[0-9]+]]:_(<vscale x 4 x s16>) = COPY $v8672 ; RV32-NEXT: G_STORE [[COPY1]](<vscale x 4 x s16>), [[COPY]](p0) :: (store (<vscale x 4 x s16>) into %ir.pa, align 16)673 ; RV32-NEXT: PseudoRET674 ;675 ; RV64-LABEL: name: vstore_nx4i16_align16676 ; RV64: bb.1 (%ir-block.0):677 ; RV64-NEXT: liveins: $v8, $x10678 ; RV64-NEXT: {{ $}}679 ; RV64-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x10680 ; RV64-NEXT: [[COPY1:%[0-9]+]]:_(<vscale x 4 x s16>) = COPY $v8681 ; RV64-NEXT: G_STORE [[COPY1]](<vscale x 4 x s16>), [[COPY]](p0) :: (store (<vscale x 4 x s16>) into %ir.pa, align 16)682 ; RV64-NEXT: PseudoRET683 store <vscale x 4 x i16> %b, ptr %pa, align 16684 ret void685}686 687define void @vstore_nx2i32_align2(ptr %pa, <vscale x 2 x i32> %b) {688 ; RV32-LABEL: name: vstore_nx2i32_align2689 ; RV32: bb.1 (%ir-block.0):690 ; RV32-NEXT: liveins: $v8, $x10691 ; RV32-NEXT: {{ $}}692 ; RV32-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x10693 ; RV32-NEXT: [[COPY1:%[0-9]+]]:_(<vscale x 2 x s32>) = COPY $v8694 ; RV32-NEXT: G_STORE [[COPY1]](<vscale x 2 x s32>), [[COPY]](p0) :: (store (<vscale x 2 x s32>) into %ir.pa, align 2)695 ; RV32-NEXT: PseudoRET696 ;697 ; RV64-LABEL: name: vstore_nx2i32_align2698 ; RV64: bb.1 (%ir-block.0):699 ; RV64-NEXT: liveins: $v8, $x10700 ; RV64-NEXT: {{ $}}701 ; RV64-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x10702 ; RV64-NEXT: [[COPY1:%[0-9]+]]:_(<vscale x 2 x s32>) = COPY $v8703 ; RV64-NEXT: G_STORE [[COPY1]](<vscale x 2 x s32>), [[COPY]](p0) :: (store (<vscale x 2 x s32>) into %ir.pa, align 2)704 ; RV64-NEXT: PseudoRET705 store <vscale x 2 x i32> %b, ptr %pa, align 2706 ret void707}708 709define void @vstore_nx2i32_align4(ptr %pa, <vscale x 2 x i32> %b) {710 ; RV32-LABEL: name: vstore_nx2i32_align4711 ; RV32: bb.1 (%ir-block.0):712 ; RV32-NEXT: liveins: $v8, $x10713 ; RV32-NEXT: {{ $}}714 ; RV32-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x10715 ; RV32-NEXT: [[COPY1:%[0-9]+]]:_(<vscale x 2 x s32>) = COPY $v8716 ; RV32-NEXT: G_STORE [[COPY1]](<vscale x 2 x s32>), [[COPY]](p0) :: (store (<vscale x 2 x s32>) into %ir.pa, align 4)717 ; RV32-NEXT: PseudoRET718 ;719 ; RV64-LABEL: name: vstore_nx2i32_align4720 ; RV64: bb.1 (%ir-block.0):721 ; RV64-NEXT: liveins: $v8, $x10722 ; RV64-NEXT: {{ $}}723 ; RV64-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x10724 ; RV64-NEXT: [[COPY1:%[0-9]+]]:_(<vscale x 2 x s32>) = COPY $v8725 ; RV64-NEXT: G_STORE [[COPY1]](<vscale x 2 x s32>), [[COPY]](p0) :: (store (<vscale x 2 x s32>) into %ir.pa, align 4)726 ; RV64-NEXT: PseudoRET727 store <vscale x 2 x i32> %b, ptr %pa, align 4728 ret void729}730 731define void @vstore_nx2i32_align8(ptr %pa, <vscale x 2 x i32> %b) {732 ; RV32-LABEL: name: vstore_nx2i32_align8733 ; RV32: bb.1 (%ir-block.0):734 ; RV32-NEXT: liveins: $v8, $x10735 ; RV32-NEXT: {{ $}}736 ; RV32-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x10737 ; RV32-NEXT: [[COPY1:%[0-9]+]]:_(<vscale x 2 x s32>) = COPY $v8738 ; RV32-NEXT: G_STORE [[COPY1]](<vscale x 2 x s32>), [[COPY]](p0) :: (store (<vscale x 2 x s32>) into %ir.pa)739 ; RV32-NEXT: PseudoRET740 ;741 ; RV64-LABEL: name: vstore_nx2i32_align8742 ; RV64: bb.1 (%ir-block.0):743 ; RV64-NEXT: liveins: $v8, $x10744 ; RV64-NEXT: {{ $}}745 ; RV64-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x10746 ; RV64-NEXT: [[COPY1:%[0-9]+]]:_(<vscale x 2 x s32>) = COPY $v8747 ; RV64-NEXT: G_STORE [[COPY1]](<vscale x 2 x s32>), [[COPY]](p0) :: (store (<vscale x 2 x s32>) into %ir.pa)748 ; RV64-NEXT: PseudoRET749 store <vscale x 2 x i32> %b, ptr %pa, align 8750 ret void751}752 753define void @vstore_nx2i32_align16(ptr %pa, <vscale x 2 x i32> %b) {754 ; RV32-LABEL: name: vstore_nx2i32_align16755 ; RV32: bb.1 (%ir-block.0):756 ; RV32-NEXT: liveins: $v8, $x10757 ; RV32-NEXT: {{ $}}758 ; RV32-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x10759 ; RV32-NEXT: [[COPY1:%[0-9]+]]:_(<vscale x 2 x s32>) = COPY $v8760 ; RV32-NEXT: G_STORE [[COPY1]](<vscale x 2 x s32>), [[COPY]](p0) :: (store (<vscale x 2 x s32>) into %ir.pa, align 16)761 ; RV32-NEXT: PseudoRET762 ;763 ; RV64-LABEL: name: vstore_nx2i32_align16764 ; RV64: bb.1 (%ir-block.0):765 ; RV64-NEXT: liveins: $v8, $x10766 ; RV64-NEXT: {{ $}}767 ; RV64-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x10768 ; RV64-NEXT: [[COPY1:%[0-9]+]]:_(<vscale x 2 x s32>) = COPY $v8769 ; RV64-NEXT: G_STORE [[COPY1]](<vscale x 2 x s32>), [[COPY]](p0) :: (store (<vscale x 2 x s32>) into %ir.pa, align 16)770 ; RV64-NEXT: PseudoRET771 store <vscale x 2 x i32> %b, ptr %pa, align 16772 ret void773}774 775define void @vstore_nx2i32_align256(ptr %pa, <vscale x 2 x i32> %b) {776 ; RV32-LABEL: name: vstore_nx2i32_align256777 ; RV32: bb.1 (%ir-block.0):778 ; RV32-NEXT: liveins: $v8, $x10779 ; RV32-NEXT: {{ $}}780 ; RV32-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x10781 ; RV32-NEXT: [[COPY1:%[0-9]+]]:_(<vscale x 2 x s32>) = COPY $v8782 ; RV32-NEXT: G_STORE [[COPY1]](<vscale x 2 x s32>), [[COPY]](p0) :: (store (<vscale x 2 x s32>) into %ir.pa, align 256)783 ; RV32-NEXT: PseudoRET784 ;785 ; RV64-LABEL: name: vstore_nx2i32_align256786 ; RV64: bb.1 (%ir-block.0):787 ; RV64-NEXT: liveins: $v8, $x10788 ; RV64-NEXT: {{ $}}789 ; RV64-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x10790 ; RV64-NEXT: [[COPY1:%[0-9]+]]:_(<vscale x 2 x s32>) = COPY $v8791 ; RV64-NEXT: G_STORE [[COPY1]](<vscale x 2 x s32>), [[COPY]](p0) :: (store (<vscale x 2 x s32>) into %ir.pa, align 256)792 ; RV64-NEXT: PseudoRET793 store <vscale x 2 x i32> %b, ptr %pa, align 256794 ret void795}796 797define void @vstore_nx2i64_align4(ptr %pa, <vscale x 2 x i64> %b) {798 ; RV32-LABEL: name: vstore_nx2i64_align4799 ; RV32: bb.1 (%ir-block.0):800 ; RV32-NEXT: liveins: $x10, $v8m2801 ; RV32-NEXT: {{ $}}802 ; RV32-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x10803 ; RV32-NEXT: [[COPY1:%[0-9]+]]:_(<vscale x 2 x s64>) = COPY $v8m2804 ; RV32-NEXT: G_STORE [[COPY1]](<vscale x 2 x s64>), [[COPY]](p0) :: (store (<vscale x 2 x s64>) into %ir.pa, align 4)805 ; RV32-NEXT: PseudoRET806 ;807 ; RV64-LABEL: name: vstore_nx2i64_align4808 ; RV64: bb.1 (%ir-block.0):809 ; RV64-NEXT: liveins: $x10, $v8m2810 ; RV64-NEXT: {{ $}}811 ; RV64-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x10812 ; RV64-NEXT: [[COPY1:%[0-9]+]]:_(<vscale x 2 x s64>) = COPY $v8m2813 ; RV64-NEXT: G_STORE [[COPY1]](<vscale x 2 x s64>), [[COPY]](p0) :: (store (<vscale x 2 x s64>) into %ir.pa, align 4)814 ; RV64-NEXT: PseudoRET815 store <vscale x 2 x i64> %b, ptr %pa, align 4816 ret void817}818 819define void @vstore_nx2i64_align8(ptr %pa, <vscale x 2 x i64> %b) {820 ; RV32-LABEL: name: vstore_nx2i64_align8821 ; RV32: bb.1 (%ir-block.0):822 ; RV32-NEXT: liveins: $x10, $v8m2823 ; RV32-NEXT: {{ $}}824 ; RV32-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x10825 ; RV32-NEXT: [[COPY1:%[0-9]+]]:_(<vscale x 2 x s64>) = COPY $v8m2826 ; RV32-NEXT: G_STORE [[COPY1]](<vscale x 2 x s64>), [[COPY]](p0) :: (store (<vscale x 2 x s64>) into %ir.pa, align 8)827 ; RV32-NEXT: PseudoRET828 ;829 ; RV64-LABEL: name: vstore_nx2i64_align8830 ; RV64: bb.1 (%ir-block.0):831 ; RV64-NEXT: liveins: $x10, $v8m2832 ; RV64-NEXT: {{ $}}833 ; RV64-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x10834 ; RV64-NEXT: [[COPY1:%[0-9]+]]:_(<vscale x 2 x s64>) = COPY $v8m2835 ; RV64-NEXT: G_STORE [[COPY1]](<vscale x 2 x s64>), [[COPY]](p0) :: (store (<vscale x 2 x s64>) into %ir.pa, align 8)836 ; RV64-NEXT: PseudoRET837 store <vscale x 2 x i64> %b, ptr %pa, align 8838 ret void839}840 841define void @vstore_nx2i64_align16(ptr %pa, <vscale x 2 x i64> %b) {842 ; RV32-LABEL: name: vstore_nx2i64_align16843 ; RV32: bb.1 (%ir-block.0):844 ; RV32-NEXT: liveins: $x10, $v8m2845 ; RV32-NEXT: {{ $}}846 ; RV32-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x10847 ; RV32-NEXT: [[COPY1:%[0-9]+]]:_(<vscale x 2 x s64>) = COPY $v8m2848 ; RV32-NEXT: G_STORE [[COPY1]](<vscale x 2 x s64>), [[COPY]](p0) :: (store (<vscale x 2 x s64>) into %ir.pa)849 ; RV32-NEXT: PseudoRET850 ;851 ; RV64-LABEL: name: vstore_nx2i64_align16852 ; RV64: bb.1 (%ir-block.0):853 ; RV64-NEXT: liveins: $x10, $v8m2854 ; RV64-NEXT: {{ $}}855 ; RV64-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x10856 ; RV64-NEXT: [[COPY1:%[0-9]+]]:_(<vscale x 2 x s64>) = COPY $v8m2857 ; RV64-NEXT: G_STORE [[COPY1]](<vscale x 2 x s64>), [[COPY]](p0) :: (store (<vscale x 2 x s64>) into %ir.pa)858 ; RV64-NEXT: PseudoRET859 store <vscale x 2 x i64> %b, ptr %pa, align 16860 ret void861}862 863define void @vstore_nx2i64_align32(ptr %pa, <vscale x 2 x i64> %b) {864 ; RV32-LABEL: name: vstore_nx2i64_align32865 ; RV32: bb.1 (%ir-block.0):866 ; RV32-NEXT: liveins: $x10, $v8m2867 ; RV32-NEXT: {{ $}}868 ; RV32-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x10869 ; RV32-NEXT: [[COPY1:%[0-9]+]]:_(<vscale x 2 x s64>) = COPY $v8m2870 ; RV32-NEXT: G_STORE [[COPY1]](<vscale x 2 x s64>), [[COPY]](p0) :: (store (<vscale x 2 x s64>) into %ir.pa, align 32)871 ; RV32-NEXT: PseudoRET872 ;873 ; RV64-LABEL: name: vstore_nx2i64_align32874 ; RV64: bb.1 (%ir-block.0):875 ; RV64-NEXT: liveins: $x10, $v8m2876 ; RV64-NEXT: {{ $}}877 ; RV64-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x10878 ; RV64-NEXT: [[COPY1:%[0-9]+]]:_(<vscale x 2 x s64>) = COPY $v8m2879 ; RV64-NEXT: G_STORE [[COPY1]](<vscale x 2 x s64>), [[COPY]](p0) :: (store (<vscale x 2 x s64>) into %ir.pa, align 32)880 ; RV64-NEXT: PseudoRET881 store <vscale x 2 x i64> %b, ptr %pa, align 32882 ret void883}884 885define void @vstore_nx1ptr(ptr %pa, <vscale x 1 x ptr> %b) {886 ; RV32-LABEL: name: vstore_nx1ptr887 ; RV32: bb.1 (%ir-block.0):888 ; RV32-NEXT: liveins: $v8, $x10889 ; RV32-NEXT: {{ $}}890 ; RV32-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x10891 ; RV32-NEXT: [[COPY1:%[0-9]+]]:_(<vscale x 1 x p0>) = COPY $v8892 ; RV32-NEXT: G_STORE [[COPY1]](<vscale x 1 x p0>), [[COPY]](p0) :: (store (<vscale x 1 x p0>) into %ir.pa)893 ; RV32-NEXT: PseudoRET894 ;895 ; RV64-LABEL: name: vstore_nx1ptr896 ; RV64: bb.1 (%ir-block.0):897 ; RV64-NEXT: liveins: $v8, $x10898 ; RV64-NEXT: {{ $}}899 ; RV64-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x10900 ; RV64-NEXT: [[COPY1:%[0-9]+]]:_(<vscale x 1 x p0>) = COPY $v8901 ; RV64-NEXT: G_STORE [[COPY1]](<vscale x 1 x p0>), [[COPY]](p0) :: (store (<vscale x 1 x p0>) into %ir.pa)902 ; RV64-NEXT: PseudoRET903 store <vscale x 1 x ptr> %b, ptr %pa904 ret void905}906 907define void @vstore_nx2ptr(ptr %pa, <vscale x 2 x ptr> %b) {908 ; RV32-LABEL: name: vstore_nx2ptr909 ; RV32: bb.1 (%ir-block.0):910 ; RV32-NEXT: liveins: $v8, $x10911 ; RV32-NEXT: {{ $}}912 ; RV32-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x10913 ; RV32-NEXT: [[COPY1:%[0-9]+]]:_(<vscale x 2 x p0>) = COPY $v8914 ; RV32-NEXT: G_STORE [[COPY1]](<vscale x 2 x p0>), [[COPY]](p0) :: (store (<vscale x 2 x p0>) into %ir.pa)915 ; RV32-NEXT: PseudoRET916 ;917 ; RV64-LABEL: name: vstore_nx2ptr918 ; RV64: bb.1 (%ir-block.0):919 ; RV64-NEXT: liveins: $x10, $v8m2920 ; RV64-NEXT: {{ $}}921 ; RV64-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x10922 ; RV64-NEXT: [[COPY1:%[0-9]+]]:_(<vscale x 2 x p0>) = COPY $v8m2923 ; RV64-NEXT: G_STORE [[COPY1]](<vscale x 2 x p0>), [[COPY]](p0) :: (store (<vscale x 2 x p0>) into %ir.pa)924 ; RV64-NEXT: PseudoRET925 store <vscale x 2 x ptr> %b, ptr %pa926 ret void927}928 929define void @vstore_nx8ptr(ptr %pa, <vscale x 8 x ptr> %b) {930 ; RV32-LABEL: name: vstore_nx8ptr931 ; RV32: bb.1 (%ir-block.0):932 ; RV32-NEXT: liveins: $x10, $v8m4933 ; RV32-NEXT: {{ $}}934 ; RV32-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x10935 ; RV32-NEXT: [[COPY1:%[0-9]+]]:_(<vscale x 8 x p0>) = COPY $v8m4936 ; RV32-NEXT: G_STORE [[COPY1]](<vscale x 8 x p0>), [[COPY]](p0) :: (store (<vscale x 8 x p0>) into %ir.pa)937 ; RV32-NEXT: PseudoRET938 ;939 ; RV64-LABEL: name: vstore_nx8ptr940 ; RV64: bb.1 (%ir-block.0):941 ; RV64-NEXT: liveins: $x10, $v8m8942 ; RV64-NEXT: {{ $}}943 ; RV64-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x10944 ; RV64-NEXT: [[COPY1:%[0-9]+]]:_(<vscale x 8 x p0>) = COPY $v8m8945 ; RV64-NEXT: G_STORE [[COPY1]](<vscale x 8 x p0>), [[COPY]](p0) :: (store (<vscale x 8 x p0>) into %ir.pa)946 ; RV64-NEXT: PseudoRET947 store <vscale x 8 x ptr> %b, ptr %pa948 ret void949}950 951