brintos

brintos / llvm-project-archived public Read only

0
0
Text · 38.6 KiB · 5a9cfd4 Raw
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