brintos

brintos / llvm-project-archived public Read only

0
0
Text · 94.9 KiB · 3ce62e7 Raw
1794 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 42; RUN: llc -mtriple=riscv32 -mattr=+v -global-isel -stop-after=irtranslator \3; RUN:   -verify-machineinstrs < %s | FileCheck -check-prefixes=RV32 %s4; RUN: llc -mtriple=riscv64 -mattr=+v -global-isel -stop-after=irtranslator \5; RUN:   -verify-machineinstrs < %s | FileCheck -check-prefixes=RV64 %s6 7define <vscale x 1 x i1> @shufflevector_nxv1i1_0() {8  ; RV32-LABEL: name: shufflevector_nxv1i1_09  ; RV32: bb.1 (%ir-block.0):10  ; RV32-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 1 x s1>) = G_IMPLICIT_DEF11  ; RV32-NEXT:   [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 012  ; RV32-NEXT:   [[EVEC:%[0-9]+]]:_(s1) = G_EXTRACT_VECTOR_ELT [[DEF]](<vscale x 1 x s1>), [[C]](s32)13  ; RV32-NEXT:   [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 1 x s1>) = G_SPLAT_VECTOR [[EVEC]](s1)14  ; RV32-NEXT:   $v0 = COPY [[SPLAT_VECTOR]](<vscale x 1 x s1>)15  ; RV32-NEXT:   PseudoRET implicit $v016  ;17  ; RV64-LABEL: name: shufflevector_nxv1i1_018  ; RV64: bb.1 (%ir-block.0):19  ; RV64-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 1 x s1>) = G_IMPLICIT_DEF20  ; RV64-NEXT:   [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 021  ; RV64-NEXT:   [[EVEC:%[0-9]+]]:_(s1) = G_EXTRACT_VECTOR_ELT [[DEF]](<vscale x 1 x s1>), [[C]](s64)22  ; RV64-NEXT:   [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 1 x s1>) = G_SPLAT_VECTOR [[EVEC]](s1)23  ; RV64-NEXT:   $v0 = COPY [[SPLAT_VECTOR]](<vscale x 1 x s1>)24  ; RV64-NEXT:   PseudoRET implicit $v025  %a = shufflevector <vscale x 1 x i1> poison, <vscale x 1 x i1> poison, <vscale x 1 x i32> poison26  ret <vscale x 1 x i1> %a27}28 29define <vscale x 1 x i1> @shufflevector_nxv1i1_1() {30  ; RV32-LABEL: name: shufflevector_nxv1i1_131  ; RV32: bb.1 (%ir-block.0):32  ; RV32-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 1 x s1>) = G_IMPLICIT_DEF33  ; RV32-NEXT:   [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 034  ; RV32-NEXT:   [[EVEC:%[0-9]+]]:_(s1) = G_EXTRACT_VECTOR_ELT [[DEF]](<vscale x 1 x s1>), [[C]](s32)35  ; RV32-NEXT:   [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 1 x s1>) = G_SPLAT_VECTOR [[EVEC]](s1)36  ; RV32-NEXT:   $v0 = COPY [[SPLAT_VECTOR]](<vscale x 1 x s1>)37  ; RV32-NEXT:   PseudoRET implicit $v038  ;39  ; RV64-LABEL: name: shufflevector_nxv1i1_140  ; RV64: bb.1 (%ir-block.0):41  ; RV64-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 1 x s1>) = G_IMPLICIT_DEF42  ; RV64-NEXT:   [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 043  ; RV64-NEXT:   [[EVEC:%[0-9]+]]:_(s1) = G_EXTRACT_VECTOR_ELT [[DEF]](<vscale x 1 x s1>), [[C]](s64)44  ; RV64-NEXT:   [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 1 x s1>) = G_SPLAT_VECTOR [[EVEC]](s1)45  ; RV64-NEXT:   $v0 = COPY [[SPLAT_VECTOR]](<vscale x 1 x s1>)46  ; RV64-NEXT:   PseudoRET implicit $v047  %a = shufflevector <vscale x 1 x i1> poison, <vscale x 1 x i1> poison, <vscale x 1 x i32> poison48  ret <vscale x 1 x i1> %a49}50 51define <vscale x 1 x i1> @shufflevector_nxv1i1_2(<vscale x 1 x i1> %a) {52  ; RV32-LABEL: name: shufflevector_nxv1i1_253  ; RV32: bb.1 (%ir-block.0):54  ; RV32-NEXT:   liveins: $v055  ; RV32-NEXT: {{  $}}56  ; RV32-NEXT:   [[COPY:%[0-9]+]]:_(<vscale x 1 x s1>) = COPY $v057  ; RV32-NEXT:   [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 058  ; RV32-NEXT:   [[EVEC:%[0-9]+]]:_(s1) = G_EXTRACT_VECTOR_ELT [[COPY]](<vscale x 1 x s1>), [[C]](s32)59  ; RV32-NEXT:   [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 1 x s1>) = G_SPLAT_VECTOR [[EVEC]](s1)60  ; RV32-NEXT:   $v0 = COPY [[SPLAT_VECTOR]](<vscale x 1 x s1>)61  ; RV32-NEXT:   PseudoRET implicit $v062  ;63  ; RV64-LABEL: name: shufflevector_nxv1i1_264  ; RV64: bb.1 (%ir-block.0):65  ; RV64-NEXT:   liveins: $v066  ; RV64-NEXT: {{  $}}67  ; RV64-NEXT:   [[COPY:%[0-9]+]]:_(<vscale x 1 x s1>) = COPY $v068  ; RV64-NEXT:   [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 069  ; RV64-NEXT:   [[EVEC:%[0-9]+]]:_(s1) = G_EXTRACT_VECTOR_ELT [[COPY]](<vscale x 1 x s1>), [[C]](s64)70  ; RV64-NEXT:   [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 1 x s1>) = G_SPLAT_VECTOR [[EVEC]](s1)71  ; RV64-NEXT:   $v0 = COPY [[SPLAT_VECTOR]](<vscale x 1 x s1>)72  ; RV64-NEXT:   PseudoRET implicit $v073  %b = shufflevector <vscale x 1 x i1> %a , <vscale x 1 x i1> poison, <vscale x 1 x i32> zeroinitializer74  ret <vscale x 1 x i1> %b75}76 77define <vscale x 2 x i1> @shufflevector_nxv2i1_0() {78  ; RV32-LABEL: name: shufflevector_nxv2i1_079  ; RV32: bb.1 (%ir-block.0):80  ; RV32-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 2 x s1>) = G_IMPLICIT_DEF81  ; RV32-NEXT:   [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 082  ; RV32-NEXT:   [[EVEC:%[0-9]+]]:_(s1) = G_EXTRACT_VECTOR_ELT [[DEF]](<vscale x 2 x s1>), [[C]](s32)83  ; RV32-NEXT:   [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 2 x s1>) = G_SPLAT_VECTOR [[EVEC]](s1)84  ; RV32-NEXT:   $v0 = COPY [[SPLAT_VECTOR]](<vscale x 2 x s1>)85  ; RV32-NEXT:   PseudoRET implicit $v086  ;87  ; RV64-LABEL: name: shufflevector_nxv2i1_088  ; RV64: bb.1 (%ir-block.0):89  ; RV64-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 2 x s1>) = G_IMPLICIT_DEF90  ; RV64-NEXT:   [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 091  ; RV64-NEXT:   [[EVEC:%[0-9]+]]:_(s1) = G_EXTRACT_VECTOR_ELT [[DEF]](<vscale x 2 x s1>), [[C]](s64)92  ; RV64-NEXT:   [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 2 x s1>) = G_SPLAT_VECTOR [[EVEC]](s1)93  ; RV64-NEXT:   $v0 = COPY [[SPLAT_VECTOR]](<vscale x 2 x s1>)94  ; RV64-NEXT:   PseudoRET implicit $v095  %a = shufflevector <vscale x 2 x i1> poison, <vscale x 2 x i1> poison, <vscale x 2 x i32> poison96  ret <vscale x 2 x i1> %a97}98 99define <vscale x 2 x i1> @shufflevector_nxv2i1_1() {100  ; RV32-LABEL: name: shufflevector_nxv2i1_1101  ; RV32: bb.1 (%ir-block.0):102  ; RV32-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 2 x s1>) = G_IMPLICIT_DEF103  ; RV32-NEXT:   [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0104  ; RV32-NEXT:   [[EVEC:%[0-9]+]]:_(s1) = G_EXTRACT_VECTOR_ELT [[DEF]](<vscale x 2 x s1>), [[C]](s32)105  ; RV32-NEXT:   [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 2 x s1>) = G_SPLAT_VECTOR [[EVEC]](s1)106  ; RV32-NEXT:   $v0 = COPY [[SPLAT_VECTOR]](<vscale x 2 x s1>)107  ; RV32-NEXT:   PseudoRET implicit $v0108  ;109  ; RV64-LABEL: name: shufflevector_nxv2i1_1110  ; RV64: bb.1 (%ir-block.0):111  ; RV64-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 2 x s1>) = G_IMPLICIT_DEF112  ; RV64-NEXT:   [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 0113  ; RV64-NEXT:   [[EVEC:%[0-9]+]]:_(s1) = G_EXTRACT_VECTOR_ELT [[DEF]](<vscale x 2 x s1>), [[C]](s64)114  ; RV64-NEXT:   [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 2 x s1>) = G_SPLAT_VECTOR [[EVEC]](s1)115  ; RV64-NEXT:   $v0 = COPY [[SPLAT_VECTOR]](<vscale x 2 x s1>)116  ; RV64-NEXT:   PseudoRET implicit $v0117  %a = shufflevector <vscale x 2 x i1> poison, <vscale x 2 x i1> poison, <vscale x 2 x i32> poison118  ret <vscale x 2 x i1> %a119}120 121define <vscale x 2 x i1> @shufflevector_nxv2i1_2(<vscale x 2 x i1> %a) {122  ; RV32-LABEL: name: shufflevector_nxv2i1_2123  ; RV32: bb.1 (%ir-block.0):124  ; RV32-NEXT:   liveins: $v0125  ; RV32-NEXT: {{  $}}126  ; RV32-NEXT:   [[COPY:%[0-9]+]]:_(<vscale x 2 x s1>) = COPY $v0127  ; RV32-NEXT:   [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0128  ; RV32-NEXT:   [[EVEC:%[0-9]+]]:_(s1) = G_EXTRACT_VECTOR_ELT [[COPY]](<vscale x 2 x s1>), [[C]](s32)129  ; RV32-NEXT:   [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 2 x s1>) = G_SPLAT_VECTOR [[EVEC]](s1)130  ; RV32-NEXT:   $v0 = COPY [[SPLAT_VECTOR]](<vscale x 2 x s1>)131  ; RV32-NEXT:   PseudoRET implicit $v0132  ;133  ; RV64-LABEL: name: shufflevector_nxv2i1_2134  ; RV64: bb.1 (%ir-block.0):135  ; RV64-NEXT:   liveins: $v0136  ; RV64-NEXT: {{  $}}137  ; RV64-NEXT:   [[COPY:%[0-9]+]]:_(<vscale x 2 x s1>) = COPY $v0138  ; RV64-NEXT:   [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 0139  ; RV64-NEXT:   [[EVEC:%[0-9]+]]:_(s1) = G_EXTRACT_VECTOR_ELT [[COPY]](<vscale x 2 x s1>), [[C]](s64)140  ; RV64-NEXT:   [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 2 x s1>) = G_SPLAT_VECTOR [[EVEC]](s1)141  ; RV64-NEXT:   $v0 = COPY [[SPLAT_VECTOR]](<vscale x 2 x s1>)142  ; RV64-NEXT:   PseudoRET implicit $v0143  %b = shufflevector <vscale x 2 x i1> %a , <vscale x 2 x i1> poison, <vscale x 2 x i32> zeroinitializer144  ret <vscale x 2 x i1> %b145}146 147define <vscale x 4 x i1> @shufflevector_nxv4i1_0() {148  ; RV32-LABEL: name: shufflevector_nxv4i1_0149  ; RV32: bb.1 (%ir-block.0):150  ; RV32-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 4 x s1>) = G_IMPLICIT_DEF151  ; RV32-NEXT:   [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0152  ; RV32-NEXT:   [[EVEC:%[0-9]+]]:_(s1) = G_EXTRACT_VECTOR_ELT [[DEF]](<vscale x 4 x s1>), [[C]](s32)153  ; RV32-NEXT:   [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 4 x s1>) = G_SPLAT_VECTOR [[EVEC]](s1)154  ; RV32-NEXT:   $v0 = COPY [[SPLAT_VECTOR]](<vscale x 4 x s1>)155  ; RV32-NEXT:   PseudoRET implicit $v0156  ;157  ; RV64-LABEL: name: shufflevector_nxv4i1_0158  ; RV64: bb.1 (%ir-block.0):159  ; RV64-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 4 x s1>) = G_IMPLICIT_DEF160  ; RV64-NEXT:   [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 0161  ; RV64-NEXT:   [[EVEC:%[0-9]+]]:_(s1) = G_EXTRACT_VECTOR_ELT [[DEF]](<vscale x 4 x s1>), [[C]](s64)162  ; RV64-NEXT:   [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 4 x s1>) = G_SPLAT_VECTOR [[EVEC]](s1)163  ; RV64-NEXT:   $v0 = COPY [[SPLAT_VECTOR]](<vscale x 4 x s1>)164  ; RV64-NEXT:   PseudoRET implicit $v0165  %a = shufflevector <vscale x 4 x i1> poison, <vscale x 4 x i1> poison, <vscale x 4 x i32> poison166  ret <vscale x 4 x i1> %a167}168 169define <vscale x 4 x i1> @shufflevector_nxv4i1_1() {170  ; RV32-LABEL: name: shufflevector_nxv4i1_1171  ; RV32: bb.1 (%ir-block.0):172  ; RV32-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 4 x s1>) = G_IMPLICIT_DEF173  ; RV32-NEXT:   [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0174  ; RV32-NEXT:   [[EVEC:%[0-9]+]]:_(s1) = G_EXTRACT_VECTOR_ELT [[DEF]](<vscale x 4 x s1>), [[C]](s32)175  ; RV32-NEXT:   [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 4 x s1>) = G_SPLAT_VECTOR [[EVEC]](s1)176  ; RV32-NEXT:   $v0 = COPY [[SPLAT_VECTOR]](<vscale x 4 x s1>)177  ; RV32-NEXT:   PseudoRET implicit $v0178  ;179  ; RV64-LABEL: name: shufflevector_nxv4i1_1180  ; RV64: bb.1 (%ir-block.0):181  ; RV64-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 4 x s1>) = G_IMPLICIT_DEF182  ; RV64-NEXT:   [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 0183  ; RV64-NEXT:   [[EVEC:%[0-9]+]]:_(s1) = G_EXTRACT_VECTOR_ELT [[DEF]](<vscale x 4 x s1>), [[C]](s64)184  ; RV64-NEXT:   [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 4 x s1>) = G_SPLAT_VECTOR [[EVEC]](s1)185  ; RV64-NEXT:   $v0 = COPY [[SPLAT_VECTOR]](<vscale x 4 x s1>)186  ; RV64-NEXT:   PseudoRET implicit $v0187  %a = shufflevector <vscale x 4 x i1> poison, <vscale x 4 x i1> poison, <vscale x 4 x i32> poison188  ret <vscale x 4 x i1> %a189}190 191define <vscale x 4 x i1> @shufflevector_nxv4i1_2(<vscale x 4 x i1> %a) {192  ; RV32-LABEL: name: shufflevector_nxv4i1_2193  ; RV32: bb.1 (%ir-block.0):194  ; RV32-NEXT:   liveins: $v0195  ; RV32-NEXT: {{  $}}196  ; RV32-NEXT:   [[COPY:%[0-9]+]]:_(<vscale x 4 x s1>) = COPY $v0197  ; RV32-NEXT:   [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0198  ; RV32-NEXT:   [[EVEC:%[0-9]+]]:_(s1) = G_EXTRACT_VECTOR_ELT [[COPY]](<vscale x 4 x s1>), [[C]](s32)199  ; RV32-NEXT:   [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 4 x s1>) = G_SPLAT_VECTOR [[EVEC]](s1)200  ; RV32-NEXT:   $v0 = COPY [[SPLAT_VECTOR]](<vscale x 4 x s1>)201  ; RV32-NEXT:   PseudoRET implicit $v0202  ;203  ; RV64-LABEL: name: shufflevector_nxv4i1_2204  ; RV64: bb.1 (%ir-block.0):205  ; RV64-NEXT:   liveins: $v0206  ; RV64-NEXT: {{  $}}207  ; RV64-NEXT:   [[COPY:%[0-9]+]]:_(<vscale x 4 x s1>) = COPY $v0208  ; RV64-NEXT:   [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 0209  ; RV64-NEXT:   [[EVEC:%[0-9]+]]:_(s1) = G_EXTRACT_VECTOR_ELT [[COPY]](<vscale x 4 x s1>), [[C]](s64)210  ; RV64-NEXT:   [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 4 x s1>) = G_SPLAT_VECTOR [[EVEC]](s1)211  ; RV64-NEXT:   $v0 = COPY [[SPLAT_VECTOR]](<vscale x 4 x s1>)212  ; RV64-NEXT:   PseudoRET implicit $v0213  %b = shufflevector <vscale x 4 x i1> %a , <vscale x 4 x i1> poison, <vscale x 4 x i32> zeroinitializer214  ret <vscale x 4 x i1> %b215}216 217define <vscale x 8 x i1> @shufflevector_nxv8i1_0() {218  ; RV32-LABEL: name: shufflevector_nxv8i1_0219  ; RV32: bb.1 (%ir-block.0):220  ; RV32-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 8 x s1>) = G_IMPLICIT_DEF221  ; RV32-NEXT:   [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0222  ; RV32-NEXT:   [[EVEC:%[0-9]+]]:_(s1) = G_EXTRACT_VECTOR_ELT [[DEF]](<vscale x 8 x s1>), [[C]](s32)223  ; RV32-NEXT:   [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 8 x s1>) = G_SPLAT_VECTOR [[EVEC]](s1)224  ; RV32-NEXT:   $v0 = COPY [[SPLAT_VECTOR]](<vscale x 8 x s1>)225  ; RV32-NEXT:   PseudoRET implicit $v0226  ;227  ; RV64-LABEL: name: shufflevector_nxv8i1_0228  ; RV64: bb.1 (%ir-block.0):229  ; RV64-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 8 x s1>) = G_IMPLICIT_DEF230  ; RV64-NEXT:   [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 0231  ; RV64-NEXT:   [[EVEC:%[0-9]+]]:_(s1) = G_EXTRACT_VECTOR_ELT [[DEF]](<vscale x 8 x s1>), [[C]](s64)232  ; RV64-NEXT:   [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 8 x s1>) = G_SPLAT_VECTOR [[EVEC]](s1)233  ; RV64-NEXT:   $v0 = COPY [[SPLAT_VECTOR]](<vscale x 8 x s1>)234  ; RV64-NEXT:   PseudoRET implicit $v0235  %a = shufflevector <vscale x 8 x i1> poison, <vscale x 8 x i1> poison, <vscale x 8 x i32> poison236  ret <vscale x 8 x i1> %a237}238 239define <vscale x 8 x i1> @shufflevector_nxv8i1_1() {240  ; RV32-LABEL: name: shufflevector_nxv8i1_1241  ; RV32: bb.1 (%ir-block.0):242  ; RV32-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 8 x s1>) = G_IMPLICIT_DEF243  ; RV32-NEXT:   [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0244  ; RV32-NEXT:   [[EVEC:%[0-9]+]]:_(s1) = G_EXTRACT_VECTOR_ELT [[DEF]](<vscale x 8 x s1>), [[C]](s32)245  ; RV32-NEXT:   [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 8 x s1>) = G_SPLAT_VECTOR [[EVEC]](s1)246  ; RV32-NEXT:   $v0 = COPY [[SPLAT_VECTOR]](<vscale x 8 x s1>)247  ; RV32-NEXT:   PseudoRET implicit $v0248  ;249  ; RV64-LABEL: name: shufflevector_nxv8i1_1250  ; RV64: bb.1 (%ir-block.0):251  ; RV64-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 8 x s1>) = G_IMPLICIT_DEF252  ; RV64-NEXT:   [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 0253  ; RV64-NEXT:   [[EVEC:%[0-9]+]]:_(s1) = G_EXTRACT_VECTOR_ELT [[DEF]](<vscale x 8 x s1>), [[C]](s64)254  ; RV64-NEXT:   [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 8 x s1>) = G_SPLAT_VECTOR [[EVEC]](s1)255  ; RV64-NEXT:   $v0 = COPY [[SPLAT_VECTOR]](<vscale x 8 x s1>)256  ; RV64-NEXT:   PseudoRET implicit $v0257  %a = shufflevector <vscale x 8 x i1> poison, <vscale x 8 x i1> poison, <vscale x 8 x i32> poison258  ret <vscale x 8 x i1> %a259}260 261define <vscale x 8 x i1> @shufflevector_nxv8i1_2(<vscale x 8 x i1> %a) {262  ; RV32-LABEL: name: shufflevector_nxv8i1_2263  ; RV32: bb.1 (%ir-block.0):264  ; RV32-NEXT:   liveins: $v0265  ; RV32-NEXT: {{  $}}266  ; RV32-NEXT:   [[COPY:%[0-9]+]]:_(<vscale x 8 x s1>) = COPY $v0267  ; RV32-NEXT:   [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0268  ; RV32-NEXT:   [[EVEC:%[0-9]+]]:_(s1) = G_EXTRACT_VECTOR_ELT [[COPY]](<vscale x 8 x s1>), [[C]](s32)269  ; RV32-NEXT:   [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 8 x s1>) = G_SPLAT_VECTOR [[EVEC]](s1)270  ; RV32-NEXT:   $v0 = COPY [[SPLAT_VECTOR]](<vscale x 8 x s1>)271  ; RV32-NEXT:   PseudoRET implicit $v0272  ;273  ; RV64-LABEL: name: shufflevector_nxv8i1_2274  ; RV64: bb.1 (%ir-block.0):275  ; RV64-NEXT:   liveins: $v0276  ; RV64-NEXT: {{  $}}277  ; RV64-NEXT:   [[COPY:%[0-9]+]]:_(<vscale x 8 x s1>) = COPY $v0278  ; RV64-NEXT:   [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 0279  ; RV64-NEXT:   [[EVEC:%[0-9]+]]:_(s1) = G_EXTRACT_VECTOR_ELT [[COPY]](<vscale x 8 x s1>), [[C]](s64)280  ; RV64-NEXT:   [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 8 x s1>) = G_SPLAT_VECTOR [[EVEC]](s1)281  ; RV64-NEXT:   $v0 = COPY [[SPLAT_VECTOR]](<vscale x 8 x s1>)282  ; RV64-NEXT:   PseudoRET implicit $v0283  %b = shufflevector <vscale x 8 x i1> %a , <vscale x 8 x i1> poison, <vscale x 8 x i32> zeroinitializer284  ret <vscale x 8 x i1> %b285}286 287define <vscale x 16 x i1> @shufflevector_nxv16i1_0() {288  ; RV32-LABEL: name: shufflevector_nxv16i1_0289  ; RV32: bb.1 (%ir-block.0):290  ; RV32-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 16 x s1>) = G_IMPLICIT_DEF291  ; RV32-NEXT:   [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0292  ; RV32-NEXT:   [[EVEC:%[0-9]+]]:_(s1) = G_EXTRACT_VECTOR_ELT [[DEF]](<vscale x 16 x s1>), [[C]](s32)293  ; RV32-NEXT:   [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 16 x s1>) = G_SPLAT_VECTOR [[EVEC]](s1)294  ; RV32-NEXT:   $v0 = COPY [[SPLAT_VECTOR]](<vscale x 16 x s1>)295  ; RV32-NEXT:   PseudoRET implicit $v0296  ;297  ; RV64-LABEL: name: shufflevector_nxv16i1_0298  ; RV64: bb.1 (%ir-block.0):299  ; RV64-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 16 x s1>) = G_IMPLICIT_DEF300  ; RV64-NEXT:   [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 0301  ; RV64-NEXT:   [[EVEC:%[0-9]+]]:_(s1) = G_EXTRACT_VECTOR_ELT [[DEF]](<vscale x 16 x s1>), [[C]](s64)302  ; RV64-NEXT:   [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 16 x s1>) = G_SPLAT_VECTOR [[EVEC]](s1)303  ; RV64-NEXT:   $v0 = COPY [[SPLAT_VECTOR]](<vscale x 16 x s1>)304  ; RV64-NEXT:   PseudoRET implicit $v0305  %a = shufflevector <vscale x 16 x i1> poison, <vscale x 16 x i1> poison, <vscale x 16 x i32> poison306  ret <vscale x 16 x i1> %a307}308 309define <vscale x 16 x i1> @shufflevector_nxv16i1_1() {310  ; RV32-LABEL: name: shufflevector_nxv16i1_1311  ; RV32: bb.1 (%ir-block.0):312  ; RV32-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 16 x s1>) = G_IMPLICIT_DEF313  ; RV32-NEXT:   [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0314  ; RV32-NEXT:   [[EVEC:%[0-9]+]]:_(s1) = G_EXTRACT_VECTOR_ELT [[DEF]](<vscale x 16 x s1>), [[C]](s32)315  ; RV32-NEXT:   [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 16 x s1>) = G_SPLAT_VECTOR [[EVEC]](s1)316  ; RV32-NEXT:   $v0 = COPY [[SPLAT_VECTOR]](<vscale x 16 x s1>)317  ; RV32-NEXT:   PseudoRET implicit $v0318  ;319  ; RV64-LABEL: name: shufflevector_nxv16i1_1320  ; RV64: bb.1 (%ir-block.0):321  ; RV64-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 16 x s1>) = G_IMPLICIT_DEF322  ; RV64-NEXT:   [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 0323  ; RV64-NEXT:   [[EVEC:%[0-9]+]]:_(s1) = G_EXTRACT_VECTOR_ELT [[DEF]](<vscale x 16 x s1>), [[C]](s64)324  ; RV64-NEXT:   [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 16 x s1>) = G_SPLAT_VECTOR [[EVEC]](s1)325  ; RV64-NEXT:   $v0 = COPY [[SPLAT_VECTOR]](<vscale x 16 x s1>)326  ; RV64-NEXT:   PseudoRET implicit $v0327  %a = shufflevector <vscale x 16 x i1> poison, <vscale x 16 x i1> poison, <vscale x 16 x i32> poison328  ret <vscale x 16 x i1> %a329}330 331define <vscale x 16 x i1> @shufflevector_nxv16i1_2(<vscale x 16 x i1> %a) {332  ; RV32-LABEL: name: shufflevector_nxv16i1_2333  ; RV32: bb.1 (%ir-block.0):334  ; RV32-NEXT:   liveins: $v0335  ; RV32-NEXT: {{  $}}336  ; RV32-NEXT:   [[COPY:%[0-9]+]]:_(<vscale x 16 x s1>) = COPY $v0337  ; RV32-NEXT:   [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0338  ; RV32-NEXT:   [[EVEC:%[0-9]+]]:_(s1) = G_EXTRACT_VECTOR_ELT [[COPY]](<vscale x 16 x s1>), [[C]](s32)339  ; RV32-NEXT:   [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 16 x s1>) = G_SPLAT_VECTOR [[EVEC]](s1)340  ; RV32-NEXT:   $v0 = COPY [[SPLAT_VECTOR]](<vscale x 16 x s1>)341  ; RV32-NEXT:   PseudoRET implicit $v0342  ;343  ; RV64-LABEL: name: shufflevector_nxv16i1_2344  ; RV64: bb.1 (%ir-block.0):345  ; RV64-NEXT:   liveins: $v0346  ; RV64-NEXT: {{  $}}347  ; RV64-NEXT:   [[COPY:%[0-9]+]]:_(<vscale x 16 x s1>) = COPY $v0348  ; RV64-NEXT:   [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 0349  ; RV64-NEXT:   [[EVEC:%[0-9]+]]:_(s1) = G_EXTRACT_VECTOR_ELT [[COPY]](<vscale x 16 x s1>), [[C]](s64)350  ; RV64-NEXT:   [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 16 x s1>) = G_SPLAT_VECTOR [[EVEC]](s1)351  ; RV64-NEXT:   $v0 = COPY [[SPLAT_VECTOR]](<vscale x 16 x s1>)352  ; RV64-NEXT:   PseudoRET implicit $v0353  %b = shufflevector <vscale x 16 x i1> %a , <vscale x 16 x i1> poison, <vscale x 16 x i32> zeroinitializer354  ret <vscale x 16 x i1> %b355}356 357define <vscale x 1 x i8> @shufflevector_nxv1i8_0() {358  ; RV32-LABEL: name: shufflevector_nxv1i8_0359  ; RV32: bb.1 (%ir-block.0):360  ; RV32-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 1 x s8>) = G_IMPLICIT_DEF361  ; RV32-NEXT:   [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0362  ; RV32-NEXT:   [[EVEC:%[0-9]+]]:_(s8) = G_EXTRACT_VECTOR_ELT [[DEF]](<vscale x 1 x s8>), [[C]](s32)363  ; RV32-NEXT:   [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 1 x s8>) = G_SPLAT_VECTOR [[EVEC]](s8)364  ; RV32-NEXT:   $v8 = COPY [[SPLAT_VECTOR]](<vscale x 1 x s8>)365  ; RV32-NEXT:   PseudoRET implicit $v8366  ;367  ; RV64-LABEL: name: shufflevector_nxv1i8_0368  ; RV64: bb.1 (%ir-block.0):369  ; RV64-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 1 x s8>) = G_IMPLICIT_DEF370  ; RV64-NEXT:   [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 0371  ; RV64-NEXT:   [[EVEC:%[0-9]+]]:_(s8) = G_EXTRACT_VECTOR_ELT [[DEF]](<vscale x 1 x s8>), [[C]](s64)372  ; RV64-NEXT:   [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 1 x s8>) = G_SPLAT_VECTOR [[EVEC]](s8)373  ; RV64-NEXT:   $v8 = COPY [[SPLAT_VECTOR]](<vscale x 1 x s8>)374  ; RV64-NEXT:   PseudoRET implicit $v8375  %a = shufflevector <vscale x 1 x i8> poison, <vscale x 1 x i8> poison, <vscale x 1 x i32> poison376  ret <vscale x 1 x i8> %a377}378 379define <vscale x 1 x i8> @shufflevector_nxv1i8_1() {380  ; RV32-LABEL: name: shufflevector_nxv1i8_1381  ; RV32: bb.1 (%ir-block.0):382  ; RV32-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 1 x s8>) = G_IMPLICIT_DEF383  ; RV32-NEXT:   [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0384  ; RV32-NEXT:   [[EVEC:%[0-9]+]]:_(s8) = G_EXTRACT_VECTOR_ELT [[DEF]](<vscale x 1 x s8>), [[C]](s32)385  ; RV32-NEXT:   [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 1 x s8>) = G_SPLAT_VECTOR [[EVEC]](s8)386  ; RV32-NEXT:   $v8 = COPY [[SPLAT_VECTOR]](<vscale x 1 x s8>)387  ; RV32-NEXT:   PseudoRET implicit $v8388  ;389  ; RV64-LABEL: name: shufflevector_nxv1i8_1390  ; RV64: bb.1 (%ir-block.0):391  ; RV64-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 1 x s8>) = G_IMPLICIT_DEF392  ; RV64-NEXT:   [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 0393  ; RV64-NEXT:   [[EVEC:%[0-9]+]]:_(s8) = G_EXTRACT_VECTOR_ELT [[DEF]](<vscale x 1 x s8>), [[C]](s64)394  ; RV64-NEXT:   [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 1 x s8>) = G_SPLAT_VECTOR [[EVEC]](s8)395  ; RV64-NEXT:   $v8 = COPY [[SPLAT_VECTOR]](<vscale x 1 x s8>)396  ; RV64-NEXT:   PseudoRET implicit $v8397  %a = shufflevector <vscale x 1 x i8> poison, <vscale x 1 x i8> poison, <vscale x 1 x i32> poison398  ret <vscale x 1 x i8> %a399}400 401define <vscale x 1 x i8> @shufflevector_nxv1i8_2(<vscale x 1 x i8> %a) {402  ; RV32-LABEL: name: shufflevector_nxv1i8_2403  ; RV32: bb.1 (%ir-block.0):404  ; RV32-NEXT:   liveins: $v8405  ; RV32-NEXT: {{  $}}406  ; RV32-NEXT:   [[COPY:%[0-9]+]]:_(<vscale x 1 x s8>) = COPY $v8407  ; RV32-NEXT:   [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0408  ; RV32-NEXT:   [[EVEC:%[0-9]+]]:_(s8) = G_EXTRACT_VECTOR_ELT [[COPY]](<vscale x 1 x s8>), [[C]](s32)409  ; RV32-NEXT:   [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 1 x s8>) = G_SPLAT_VECTOR [[EVEC]](s8)410  ; RV32-NEXT:   $v8 = COPY [[SPLAT_VECTOR]](<vscale x 1 x s8>)411  ; RV32-NEXT:   PseudoRET implicit $v8412  ;413  ; RV64-LABEL: name: shufflevector_nxv1i8_2414  ; RV64: bb.1 (%ir-block.0):415  ; RV64-NEXT:   liveins: $v8416  ; RV64-NEXT: {{  $}}417  ; RV64-NEXT:   [[COPY:%[0-9]+]]:_(<vscale x 1 x s8>) = COPY $v8418  ; RV64-NEXT:   [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 0419  ; RV64-NEXT:   [[EVEC:%[0-9]+]]:_(s8) = G_EXTRACT_VECTOR_ELT [[COPY]](<vscale x 1 x s8>), [[C]](s64)420  ; RV64-NEXT:   [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 1 x s8>) = G_SPLAT_VECTOR [[EVEC]](s8)421  ; RV64-NEXT:   $v8 = COPY [[SPLAT_VECTOR]](<vscale x 1 x s8>)422  ; RV64-NEXT:   PseudoRET implicit $v8423  %b = shufflevector <vscale x 1 x i8> %a , <vscale x 1 x i8> poison, <vscale x 1 x i32> zeroinitializer424  ret <vscale x 1 x i8> %b425}426 427define <vscale x 2 x i8> @shufflevector_nxv2i8_0() {428  ; RV32-LABEL: name: shufflevector_nxv2i8_0429  ; RV32: bb.1 (%ir-block.0):430  ; RV32-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 2 x s8>) = G_IMPLICIT_DEF431  ; RV32-NEXT:   [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0432  ; RV32-NEXT:   [[EVEC:%[0-9]+]]:_(s8) = G_EXTRACT_VECTOR_ELT [[DEF]](<vscale x 2 x s8>), [[C]](s32)433  ; RV32-NEXT:   [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 2 x s8>) = G_SPLAT_VECTOR [[EVEC]](s8)434  ; RV32-NEXT:   $v8 = COPY [[SPLAT_VECTOR]](<vscale x 2 x s8>)435  ; RV32-NEXT:   PseudoRET implicit $v8436  ;437  ; RV64-LABEL: name: shufflevector_nxv2i8_0438  ; RV64: bb.1 (%ir-block.0):439  ; RV64-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 2 x s8>) = G_IMPLICIT_DEF440  ; RV64-NEXT:   [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 0441  ; RV64-NEXT:   [[EVEC:%[0-9]+]]:_(s8) = G_EXTRACT_VECTOR_ELT [[DEF]](<vscale x 2 x s8>), [[C]](s64)442  ; RV64-NEXT:   [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 2 x s8>) = G_SPLAT_VECTOR [[EVEC]](s8)443  ; RV64-NEXT:   $v8 = COPY [[SPLAT_VECTOR]](<vscale x 2 x s8>)444  ; RV64-NEXT:   PseudoRET implicit $v8445  %a = shufflevector <vscale x 2 x i8> poison, <vscale x 2 x i8> poison, <vscale x 2 x i32> poison446  ret <vscale x 2 x i8> %a447}448 449define <vscale x 2 x i8> @shufflevector_nxv2i8_1() {450  ; RV32-LABEL: name: shufflevector_nxv2i8_1451  ; RV32: bb.1 (%ir-block.0):452  ; RV32-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 2 x s8>) = G_IMPLICIT_DEF453  ; RV32-NEXT:   [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0454  ; RV32-NEXT:   [[EVEC:%[0-9]+]]:_(s8) = G_EXTRACT_VECTOR_ELT [[DEF]](<vscale x 2 x s8>), [[C]](s32)455  ; RV32-NEXT:   [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 2 x s8>) = G_SPLAT_VECTOR [[EVEC]](s8)456  ; RV32-NEXT:   $v8 = COPY [[SPLAT_VECTOR]](<vscale x 2 x s8>)457  ; RV32-NEXT:   PseudoRET implicit $v8458  ;459  ; RV64-LABEL: name: shufflevector_nxv2i8_1460  ; RV64: bb.1 (%ir-block.0):461  ; RV64-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 2 x s8>) = G_IMPLICIT_DEF462  ; RV64-NEXT:   [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 0463  ; RV64-NEXT:   [[EVEC:%[0-9]+]]:_(s8) = G_EXTRACT_VECTOR_ELT [[DEF]](<vscale x 2 x s8>), [[C]](s64)464  ; RV64-NEXT:   [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 2 x s8>) = G_SPLAT_VECTOR [[EVEC]](s8)465  ; RV64-NEXT:   $v8 = COPY [[SPLAT_VECTOR]](<vscale x 2 x s8>)466  ; RV64-NEXT:   PseudoRET implicit $v8467  %a = shufflevector <vscale x 2 x i8> poison, <vscale x 2 x i8> poison, <vscale x 2 x i32> poison468  ret <vscale x 2 x i8> %a469}470 471define <vscale x 2 x i8> @shufflevector_nxv2i8_2(<vscale x 2 x i8> %a) {472  ; RV32-LABEL: name: shufflevector_nxv2i8_2473  ; RV32: bb.1 (%ir-block.0):474  ; RV32-NEXT:   liveins: $v8475  ; RV32-NEXT: {{  $}}476  ; RV32-NEXT:   [[COPY:%[0-9]+]]:_(<vscale x 2 x s8>) = COPY $v8477  ; RV32-NEXT:   [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0478  ; RV32-NEXT:   [[EVEC:%[0-9]+]]:_(s8) = G_EXTRACT_VECTOR_ELT [[COPY]](<vscale x 2 x s8>), [[C]](s32)479  ; RV32-NEXT:   [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 2 x s8>) = G_SPLAT_VECTOR [[EVEC]](s8)480  ; RV32-NEXT:   $v8 = COPY [[SPLAT_VECTOR]](<vscale x 2 x s8>)481  ; RV32-NEXT:   PseudoRET implicit $v8482  ;483  ; RV64-LABEL: name: shufflevector_nxv2i8_2484  ; RV64: bb.1 (%ir-block.0):485  ; RV64-NEXT:   liveins: $v8486  ; RV64-NEXT: {{  $}}487  ; RV64-NEXT:   [[COPY:%[0-9]+]]:_(<vscale x 2 x s8>) = COPY $v8488  ; RV64-NEXT:   [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 0489  ; RV64-NEXT:   [[EVEC:%[0-9]+]]:_(s8) = G_EXTRACT_VECTOR_ELT [[COPY]](<vscale x 2 x s8>), [[C]](s64)490  ; RV64-NEXT:   [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 2 x s8>) = G_SPLAT_VECTOR [[EVEC]](s8)491  ; RV64-NEXT:   $v8 = COPY [[SPLAT_VECTOR]](<vscale x 2 x s8>)492  ; RV64-NEXT:   PseudoRET implicit $v8493  %b = shufflevector <vscale x 2 x i8> %a , <vscale x 2 x i8> poison, <vscale x 2 x i32> zeroinitializer494  ret <vscale x 2 x i8> %b495}496 497define <vscale x 4 x i8> @shufflevector_nxv4i8_0() {498  ; RV32-LABEL: name: shufflevector_nxv4i8_0499  ; RV32: bb.1 (%ir-block.0):500  ; RV32-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 4 x s8>) = G_IMPLICIT_DEF501  ; RV32-NEXT:   [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0502  ; RV32-NEXT:   [[EVEC:%[0-9]+]]:_(s8) = G_EXTRACT_VECTOR_ELT [[DEF]](<vscale x 4 x s8>), [[C]](s32)503  ; RV32-NEXT:   [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 4 x s8>) = G_SPLAT_VECTOR [[EVEC]](s8)504  ; RV32-NEXT:   $v8 = COPY [[SPLAT_VECTOR]](<vscale x 4 x s8>)505  ; RV32-NEXT:   PseudoRET implicit $v8506  ;507  ; RV64-LABEL: name: shufflevector_nxv4i8_0508  ; RV64: bb.1 (%ir-block.0):509  ; RV64-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 4 x s8>) = G_IMPLICIT_DEF510  ; RV64-NEXT:   [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 0511  ; RV64-NEXT:   [[EVEC:%[0-9]+]]:_(s8) = G_EXTRACT_VECTOR_ELT [[DEF]](<vscale x 4 x s8>), [[C]](s64)512  ; RV64-NEXT:   [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 4 x s8>) = G_SPLAT_VECTOR [[EVEC]](s8)513  ; RV64-NEXT:   $v8 = COPY [[SPLAT_VECTOR]](<vscale x 4 x s8>)514  ; RV64-NEXT:   PseudoRET implicit $v8515  %a = shufflevector <vscale x 4 x i8> poison, <vscale x 4 x i8> poison, <vscale x 4 x i32> poison516  ret <vscale x 4 x i8> %a517}518 519define <vscale x 4 x i8> @shufflevector_nxv4i8_1() {520  ; RV32-LABEL: name: shufflevector_nxv4i8_1521  ; RV32: bb.1 (%ir-block.0):522  ; RV32-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 4 x s8>) = G_IMPLICIT_DEF523  ; RV32-NEXT:   [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0524  ; RV32-NEXT:   [[EVEC:%[0-9]+]]:_(s8) = G_EXTRACT_VECTOR_ELT [[DEF]](<vscale x 4 x s8>), [[C]](s32)525  ; RV32-NEXT:   [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 4 x s8>) = G_SPLAT_VECTOR [[EVEC]](s8)526  ; RV32-NEXT:   $v8 = COPY [[SPLAT_VECTOR]](<vscale x 4 x s8>)527  ; RV32-NEXT:   PseudoRET implicit $v8528  ;529  ; RV64-LABEL: name: shufflevector_nxv4i8_1530  ; RV64: bb.1 (%ir-block.0):531  ; RV64-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 4 x s8>) = G_IMPLICIT_DEF532  ; RV64-NEXT:   [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 0533  ; RV64-NEXT:   [[EVEC:%[0-9]+]]:_(s8) = G_EXTRACT_VECTOR_ELT [[DEF]](<vscale x 4 x s8>), [[C]](s64)534  ; RV64-NEXT:   [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 4 x s8>) = G_SPLAT_VECTOR [[EVEC]](s8)535  ; RV64-NEXT:   $v8 = COPY [[SPLAT_VECTOR]](<vscale x 4 x s8>)536  ; RV64-NEXT:   PseudoRET implicit $v8537  %a = shufflevector <vscale x 4 x i8> poison, <vscale x 4 x i8> poison, <vscale x 4 x i32> poison538  ret <vscale x 4 x i8> %a539}540 541define <vscale x 4 x i8> @shufflevector_nxv4i8_2(<vscale x 4 x i8> %a) {542  ; RV32-LABEL: name: shufflevector_nxv4i8_2543  ; RV32: bb.1 (%ir-block.0):544  ; RV32-NEXT:   liveins: $v8545  ; RV32-NEXT: {{  $}}546  ; RV32-NEXT:   [[COPY:%[0-9]+]]:_(<vscale x 4 x s8>) = COPY $v8547  ; RV32-NEXT:   [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0548  ; RV32-NEXT:   [[EVEC:%[0-9]+]]:_(s8) = G_EXTRACT_VECTOR_ELT [[COPY]](<vscale x 4 x s8>), [[C]](s32)549  ; RV32-NEXT:   [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 4 x s8>) = G_SPLAT_VECTOR [[EVEC]](s8)550  ; RV32-NEXT:   $v8 = COPY [[SPLAT_VECTOR]](<vscale x 4 x s8>)551  ; RV32-NEXT:   PseudoRET implicit $v8552  ;553  ; RV64-LABEL: name: shufflevector_nxv4i8_2554  ; RV64: bb.1 (%ir-block.0):555  ; RV64-NEXT:   liveins: $v8556  ; RV64-NEXT: {{  $}}557  ; RV64-NEXT:   [[COPY:%[0-9]+]]:_(<vscale x 4 x s8>) = COPY $v8558  ; RV64-NEXT:   [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 0559  ; RV64-NEXT:   [[EVEC:%[0-9]+]]:_(s8) = G_EXTRACT_VECTOR_ELT [[COPY]](<vscale x 4 x s8>), [[C]](s64)560  ; RV64-NEXT:   [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 4 x s8>) = G_SPLAT_VECTOR [[EVEC]](s8)561  ; RV64-NEXT:   $v8 = COPY [[SPLAT_VECTOR]](<vscale x 4 x s8>)562  ; RV64-NEXT:   PseudoRET implicit $v8563  %b = shufflevector <vscale x 4 x i8> %a , <vscale x 4 x i8> poison, <vscale x 4 x i32> zeroinitializer564  ret <vscale x 4 x i8> %b565}566 567define <vscale x 8 x i8> @shufflevector_nxv8i8_0() {568  ; RV32-LABEL: name: shufflevector_nxv8i8_0569  ; RV32: bb.1 (%ir-block.0):570  ; RV32-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 8 x s8>) = G_IMPLICIT_DEF571  ; RV32-NEXT:   [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0572  ; RV32-NEXT:   [[EVEC:%[0-9]+]]:_(s8) = G_EXTRACT_VECTOR_ELT [[DEF]](<vscale x 8 x s8>), [[C]](s32)573  ; RV32-NEXT:   [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 8 x s8>) = G_SPLAT_VECTOR [[EVEC]](s8)574  ; RV32-NEXT:   $v8 = COPY [[SPLAT_VECTOR]](<vscale x 8 x s8>)575  ; RV32-NEXT:   PseudoRET implicit $v8576  ;577  ; RV64-LABEL: name: shufflevector_nxv8i8_0578  ; RV64: bb.1 (%ir-block.0):579  ; RV64-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 8 x s8>) = G_IMPLICIT_DEF580  ; RV64-NEXT:   [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 0581  ; RV64-NEXT:   [[EVEC:%[0-9]+]]:_(s8) = G_EXTRACT_VECTOR_ELT [[DEF]](<vscale x 8 x s8>), [[C]](s64)582  ; RV64-NEXT:   [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 8 x s8>) = G_SPLAT_VECTOR [[EVEC]](s8)583  ; RV64-NEXT:   $v8 = COPY [[SPLAT_VECTOR]](<vscale x 8 x s8>)584  ; RV64-NEXT:   PseudoRET implicit $v8585  %a = shufflevector <vscale x 8 x i8> poison, <vscale x 8 x i8> poison, <vscale x 8 x i32> poison586  ret <vscale x 8 x i8> %a587}588 589define <vscale x 8 x i8> @shufflevector_nxv8i8_1() {590  ; RV32-LABEL: name: shufflevector_nxv8i8_1591  ; RV32: bb.1 (%ir-block.0):592  ; RV32-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 8 x s8>) = G_IMPLICIT_DEF593  ; RV32-NEXT:   [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0594  ; RV32-NEXT:   [[EVEC:%[0-9]+]]:_(s8) = G_EXTRACT_VECTOR_ELT [[DEF]](<vscale x 8 x s8>), [[C]](s32)595  ; RV32-NEXT:   [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 8 x s8>) = G_SPLAT_VECTOR [[EVEC]](s8)596  ; RV32-NEXT:   $v8 = COPY [[SPLAT_VECTOR]](<vscale x 8 x s8>)597  ; RV32-NEXT:   PseudoRET implicit $v8598  ;599  ; RV64-LABEL: name: shufflevector_nxv8i8_1600  ; RV64: bb.1 (%ir-block.0):601  ; RV64-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 8 x s8>) = G_IMPLICIT_DEF602  ; RV64-NEXT:   [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 0603  ; RV64-NEXT:   [[EVEC:%[0-9]+]]:_(s8) = G_EXTRACT_VECTOR_ELT [[DEF]](<vscale x 8 x s8>), [[C]](s64)604  ; RV64-NEXT:   [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 8 x s8>) = G_SPLAT_VECTOR [[EVEC]](s8)605  ; RV64-NEXT:   $v8 = COPY [[SPLAT_VECTOR]](<vscale x 8 x s8>)606  ; RV64-NEXT:   PseudoRET implicit $v8607  %a = shufflevector <vscale x 8 x i8> poison, <vscale x 8 x i8> poison, <vscale x 8 x i32> poison608  ret <vscale x 8 x i8> %a609}610 611define <vscale x 8 x i8> @shufflevector_nxv8i8_2(<vscale x 8 x i8> %a) {612  ; RV32-LABEL: name: shufflevector_nxv8i8_2613  ; RV32: bb.1 (%ir-block.0):614  ; RV32-NEXT:   liveins: $v8615  ; RV32-NEXT: {{  $}}616  ; RV32-NEXT:   [[COPY:%[0-9]+]]:_(<vscale x 8 x s8>) = COPY $v8617  ; RV32-NEXT:   [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0618  ; RV32-NEXT:   [[EVEC:%[0-9]+]]:_(s8) = G_EXTRACT_VECTOR_ELT [[COPY]](<vscale x 8 x s8>), [[C]](s32)619  ; RV32-NEXT:   [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 8 x s8>) = G_SPLAT_VECTOR [[EVEC]](s8)620  ; RV32-NEXT:   $v8 = COPY [[SPLAT_VECTOR]](<vscale x 8 x s8>)621  ; RV32-NEXT:   PseudoRET implicit $v8622  ;623  ; RV64-LABEL: name: shufflevector_nxv8i8_2624  ; RV64: bb.1 (%ir-block.0):625  ; RV64-NEXT:   liveins: $v8626  ; RV64-NEXT: {{  $}}627  ; RV64-NEXT:   [[COPY:%[0-9]+]]:_(<vscale x 8 x s8>) = COPY $v8628  ; RV64-NEXT:   [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 0629  ; RV64-NEXT:   [[EVEC:%[0-9]+]]:_(s8) = G_EXTRACT_VECTOR_ELT [[COPY]](<vscale x 8 x s8>), [[C]](s64)630  ; RV64-NEXT:   [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 8 x s8>) = G_SPLAT_VECTOR [[EVEC]](s8)631  ; RV64-NEXT:   $v8 = COPY [[SPLAT_VECTOR]](<vscale x 8 x s8>)632  ; RV64-NEXT:   PseudoRET implicit $v8633  %b = shufflevector <vscale x 8 x i8> %a , <vscale x 8 x i8> poison, <vscale x 8 x i32> zeroinitializer634  ret <vscale x 8 x i8> %b635}636 637define <vscale x 16 x i8> @shufflevector_nxv16i8_0() {638  ; RV32-LABEL: name: shufflevector_nxv16i8_0639  ; RV32: bb.1 (%ir-block.0):640  ; RV32-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 16 x s8>) = G_IMPLICIT_DEF641  ; RV32-NEXT:   [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0642  ; RV32-NEXT:   [[EVEC:%[0-9]+]]:_(s8) = G_EXTRACT_VECTOR_ELT [[DEF]](<vscale x 16 x s8>), [[C]](s32)643  ; RV32-NEXT:   [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 16 x s8>) = G_SPLAT_VECTOR [[EVEC]](s8)644  ; RV32-NEXT:   $v8m2 = COPY [[SPLAT_VECTOR]](<vscale x 16 x s8>)645  ; RV32-NEXT:   PseudoRET implicit $v8m2646  ;647  ; RV64-LABEL: name: shufflevector_nxv16i8_0648  ; RV64: bb.1 (%ir-block.0):649  ; RV64-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 16 x s8>) = G_IMPLICIT_DEF650  ; RV64-NEXT:   [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 0651  ; RV64-NEXT:   [[EVEC:%[0-9]+]]:_(s8) = G_EXTRACT_VECTOR_ELT [[DEF]](<vscale x 16 x s8>), [[C]](s64)652  ; RV64-NEXT:   [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 16 x s8>) = G_SPLAT_VECTOR [[EVEC]](s8)653  ; RV64-NEXT:   $v8m2 = COPY [[SPLAT_VECTOR]](<vscale x 16 x s8>)654  ; RV64-NEXT:   PseudoRET implicit $v8m2655  %a = shufflevector <vscale x 16 x i8> poison, <vscale x 16 x i8> poison, <vscale x 16 x i32> poison656  ret <vscale x 16 x i8> %a657}658 659define <vscale x 16 x i8> @shufflevector_nxv16i8_1() {660  ; RV32-LABEL: name: shufflevector_nxv16i8_1661  ; RV32: bb.1 (%ir-block.0):662  ; RV32-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 16 x s8>) = G_IMPLICIT_DEF663  ; RV32-NEXT:   [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0664  ; RV32-NEXT:   [[EVEC:%[0-9]+]]:_(s8) = G_EXTRACT_VECTOR_ELT [[DEF]](<vscale x 16 x s8>), [[C]](s32)665  ; RV32-NEXT:   [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 16 x s8>) = G_SPLAT_VECTOR [[EVEC]](s8)666  ; RV32-NEXT:   $v8m2 = COPY [[SPLAT_VECTOR]](<vscale x 16 x s8>)667  ; RV32-NEXT:   PseudoRET implicit $v8m2668  ;669  ; RV64-LABEL: name: shufflevector_nxv16i8_1670  ; RV64: bb.1 (%ir-block.0):671  ; RV64-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 16 x s8>) = G_IMPLICIT_DEF672  ; RV64-NEXT:   [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 0673  ; RV64-NEXT:   [[EVEC:%[0-9]+]]:_(s8) = G_EXTRACT_VECTOR_ELT [[DEF]](<vscale x 16 x s8>), [[C]](s64)674  ; RV64-NEXT:   [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 16 x s8>) = G_SPLAT_VECTOR [[EVEC]](s8)675  ; RV64-NEXT:   $v8m2 = COPY [[SPLAT_VECTOR]](<vscale x 16 x s8>)676  ; RV64-NEXT:   PseudoRET implicit $v8m2677  %a = shufflevector <vscale x 16 x i8> poison, <vscale x 16 x i8> poison, <vscale x 16 x i32> poison678  ret <vscale x 16 x i8> %a679}680 681define <vscale x 16 x i8> @shufflevector_nxv16i8_2(<vscale x 16 x i8> %a) {682  ; RV32-LABEL: name: shufflevector_nxv16i8_2683  ; RV32: bb.1 (%ir-block.0):684  ; RV32-NEXT:   liveins: $v8m2685  ; RV32-NEXT: {{  $}}686  ; RV32-NEXT:   [[COPY:%[0-9]+]]:_(<vscale x 16 x s8>) = COPY $v8m2687  ; RV32-NEXT:   [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0688  ; RV32-NEXT:   [[EVEC:%[0-9]+]]:_(s8) = G_EXTRACT_VECTOR_ELT [[COPY]](<vscale x 16 x s8>), [[C]](s32)689  ; RV32-NEXT:   [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 16 x s8>) = G_SPLAT_VECTOR [[EVEC]](s8)690  ; RV32-NEXT:   $v8m2 = COPY [[SPLAT_VECTOR]](<vscale x 16 x s8>)691  ; RV32-NEXT:   PseudoRET implicit $v8m2692  ;693  ; RV64-LABEL: name: shufflevector_nxv16i8_2694  ; RV64: bb.1 (%ir-block.0):695  ; RV64-NEXT:   liveins: $v8m2696  ; RV64-NEXT: {{  $}}697  ; RV64-NEXT:   [[COPY:%[0-9]+]]:_(<vscale x 16 x s8>) = COPY $v8m2698  ; RV64-NEXT:   [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 0699  ; RV64-NEXT:   [[EVEC:%[0-9]+]]:_(s8) = G_EXTRACT_VECTOR_ELT [[COPY]](<vscale x 16 x s8>), [[C]](s64)700  ; RV64-NEXT:   [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 16 x s8>) = G_SPLAT_VECTOR [[EVEC]](s8)701  ; RV64-NEXT:   $v8m2 = COPY [[SPLAT_VECTOR]](<vscale x 16 x s8>)702  ; RV64-NEXT:   PseudoRET implicit $v8m2703  %b = shufflevector <vscale x 16 x i8> %a , <vscale x 16 x i8> poison, <vscale x 16 x i32> zeroinitializer704  ret <vscale x 16 x i8> %b705}706 707define <vscale x 1 x i16> @shufflevector_nxv1i16_0() {708  ; RV32-LABEL: name: shufflevector_nxv1i16_0709  ; RV32: bb.1 (%ir-block.0):710  ; RV32-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 1 x s16>) = G_IMPLICIT_DEF711  ; RV32-NEXT:   [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0712  ; RV32-NEXT:   [[EVEC:%[0-9]+]]:_(s16) = G_EXTRACT_VECTOR_ELT [[DEF]](<vscale x 1 x s16>), [[C]](s32)713  ; RV32-NEXT:   [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 1 x s16>) = G_SPLAT_VECTOR [[EVEC]](s16)714  ; RV32-NEXT:   $v8 = COPY [[SPLAT_VECTOR]](<vscale x 1 x s16>)715  ; RV32-NEXT:   PseudoRET implicit $v8716  ;717  ; RV64-LABEL: name: shufflevector_nxv1i16_0718  ; RV64: bb.1 (%ir-block.0):719  ; RV64-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 1 x s16>) = G_IMPLICIT_DEF720  ; RV64-NEXT:   [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 0721  ; RV64-NEXT:   [[EVEC:%[0-9]+]]:_(s16) = G_EXTRACT_VECTOR_ELT [[DEF]](<vscale x 1 x s16>), [[C]](s64)722  ; RV64-NEXT:   [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 1 x s16>) = G_SPLAT_VECTOR [[EVEC]](s16)723  ; RV64-NEXT:   $v8 = COPY [[SPLAT_VECTOR]](<vscale x 1 x s16>)724  ; RV64-NEXT:   PseudoRET implicit $v8725  %a = shufflevector <vscale x 1 x i16> poison, <vscale x 1 x i16> poison, <vscale x 1 x i32> poison726  ret <vscale x 1 x i16> %a727}728 729define <vscale x 1 x i16> @shufflevector_nxv1i16_1() {730  ; RV32-LABEL: name: shufflevector_nxv1i16_1731  ; RV32: bb.1 (%ir-block.0):732  ; RV32-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 1 x s16>) = G_IMPLICIT_DEF733  ; RV32-NEXT:   [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0734  ; RV32-NEXT:   [[EVEC:%[0-9]+]]:_(s16) = G_EXTRACT_VECTOR_ELT [[DEF]](<vscale x 1 x s16>), [[C]](s32)735  ; RV32-NEXT:   [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 1 x s16>) = G_SPLAT_VECTOR [[EVEC]](s16)736  ; RV32-NEXT:   $v8 = COPY [[SPLAT_VECTOR]](<vscale x 1 x s16>)737  ; RV32-NEXT:   PseudoRET implicit $v8738  ;739  ; RV64-LABEL: name: shufflevector_nxv1i16_1740  ; RV64: bb.1 (%ir-block.0):741  ; RV64-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 1 x s16>) = G_IMPLICIT_DEF742  ; RV64-NEXT:   [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 0743  ; RV64-NEXT:   [[EVEC:%[0-9]+]]:_(s16) = G_EXTRACT_VECTOR_ELT [[DEF]](<vscale x 1 x s16>), [[C]](s64)744  ; RV64-NEXT:   [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 1 x s16>) = G_SPLAT_VECTOR [[EVEC]](s16)745  ; RV64-NEXT:   $v8 = COPY [[SPLAT_VECTOR]](<vscale x 1 x s16>)746  ; RV64-NEXT:   PseudoRET implicit $v8747  %a = shufflevector <vscale x 1 x i16> poison, <vscale x 1 x i16> poison, <vscale x 1 x i32> poison748  ret <vscale x 1 x i16> %a749}750 751define <vscale x 1 x i16> @shufflevector_nxv1i16_2(<vscale x 1 x i16> %a) {752  ; RV32-LABEL: name: shufflevector_nxv1i16_2753  ; RV32: bb.1 (%ir-block.0):754  ; RV32-NEXT:   liveins: $v8755  ; RV32-NEXT: {{  $}}756  ; RV32-NEXT:   [[COPY:%[0-9]+]]:_(<vscale x 1 x s16>) = COPY $v8757  ; RV32-NEXT:   [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0758  ; RV32-NEXT:   [[EVEC:%[0-9]+]]:_(s16) = G_EXTRACT_VECTOR_ELT [[COPY]](<vscale x 1 x s16>), [[C]](s32)759  ; RV32-NEXT:   [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 1 x s16>) = G_SPLAT_VECTOR [[EVEC]](s16)760  ; RV32-NEXT:   $v8 = COPY [[SPLAT_VECTOR]](<vscale x 1 x s16>)761  ; RV32-NEXT:   PseudoRET implicit $v8762  ;763  ; RV64-LABEL: name: shufflevector_nxv1i16_2764  ; RV64: bb.1 (%ir-block.0):765  ; RV64-NEXT:   liveins: $v8766  ; RV64-NEXT: {{  $}}767  ; RV64-NEXT:   [[COPY:%[0-9]+]]:_(<vscale x 1 x s16>) = COPY $v8768  ; RV64-NEXT:   [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 0769  ; RV64-NEXT:   [[EVEC:%[0-9]+]]:_(s16) = G_EXTRACT_VECTOR_ELT [[COPY]](<vscale x 1 x s16>), [[C]](s64)770  ; RV64-NEXT:   [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 1 x s16>) = G_SPLAT_VECTOR [[EVEC]](s16)771  ; RV64-NEXT:   $v8 = COPY [[SPLAT_VECTOR]](<vscale x 1 x s16>)772  ; RV64-NEXT:   PseudoRET implicit $v8773  %b = shufflevector <vscale x 1 x i16> %a , <vscale x 1 x i16> poison, <vscale x 1 x i32> zeroinitializer774  ret <vscale x 1 x i16> %b775}776 777define <vscale x 2 x i16> @shufflevector_nxv2i16_0() {778  ; RV32-LABEL: name: shufflevector_nxv2i16_0779  ; RV32: bb.1 (%ir-block.0):780  ; RV32-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 2 x s16>) = G_IMPLICIT_DEF781  ; RV32-NEXT:   [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0782  ; RV32-NEXT:   [[EVEC:%[0-9]+]]:_(s16) = G_EXTRACT_VECTOR_ELT [[DEF]](<vscale x 2 x s16>), [[C]](s32)783  ; RV32-NEXT:   [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 2 x s16>) = G_SPLAT_VECTOR [[EVEC]](s16)784  ; RV32-NEXT:   $v8 = COPY [[SPLAT_VECTOR]](<vscale x 2 x s16>)785  ; RV32-NEXT:   PseudoRET implicit $v8786  ;787  ; RV64-LABEL: name: shufflevector_nxv2i16_0788  ; RV64: bb.1 (%ir-block.0):789  ; RV64-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 2 x s16>) = G_IMPLICIT_DEF790  ; RV64-NEXT:   [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 0791  ; RV64-NEXT:   [[EVEC:%[0-9]+]]:_(s16) = G_EXTRACT_VECTOR_ELT [[DEF]](<vscale x 2 x s16>), [[C]](s64)792  ; RV64-NEXT:   [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 2 x s16>) = G_SPLAT_VECTOR [[EVEC]](s16)793  ; RV64-NEXT:   $v8 = COPY [[SPLAT_VECTOR]](<vscale x 2 x s16>)794  ; RV64-NEXT:   PseudoRET implicit $v8795  %a = shufflevector <vscale x 2 x i16> poison, <vscale x 2 x i16> poison, <vscale x 2 x i32> poison796  ret <vscale x 2 x i16> %a797}798 799define <vscale x 2 x i16> @shufflevector_nxv2i16_1() {800  ; RV32-LABEL: name: shufflevector_nxv2i16_1801  ; RV32: bb.1 (%ir-block.0):802  ; RV32-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 2 x s16>) = G_IMPLICIT_DEF803  ; RV32-NEXT:   [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0804  ; RV32-NEXT:   [[EVEC:%[0-9]+]]:_(s16) = G_EXTRACT_VECTOR_ELT [[DEF]](<vscale x 2 x s16>), [[C]](s32)805  ; RV32-NEXT:   [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 2 x s16>) = G_SPLAT_VECTOR [[EVEC]](s16)806  ; RV32-NEXT:   $v8 = COPY [[SPLAT_VECTOR]](<vscale x 2 x s16>)807  ; RV32-NEXT:   PseudoRET implicit $v8808  ;809  ; RV64-LABEL: name: shufflevector_nxv2i16_1810  ; RV64: bb.1 (%ir-block.0):811  ; RV64-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 2 x s16>) = G_IMPLICIT_DEF812  ; RV64-NEXT:   [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 0813  ; RV64-NEXT:   [[EVEC:%[0-9]+]]:_(s16) = G_EXTRACT_VECTOR_ELT [[DEF]](<vscale x 2 x s16>), [[C]](s64)814  ; RV64-NEXT:   [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 2 x s16>) = G_SPLAT_VECTOR [[EVEC]](s16)815  ; RV64-NEXT:   $v8 = COPY [[SPLAT_VECTOR]](<vscale x 2 x s16>)816  ; RV64-NEXT:   PseudoRET implicit $v8817  %a = shufflevector <vscale x 2 x i16> poison, <vscale x 2 x i16> poison, <vscale x 2 x i32> poison818  ret <vscale x 2 x i16> %a819}820 821define <vscale x 2 x i16> @shufflevector_nxv2i16_2(<vscale x 2 x i16> %a) {822  ; RV32-LABEL: name: shufflevector_nxv2i16_2823  ; RV32: bb.1 (%ir-block.0):824  ; RV32-NEXT:   liveins: $v8825  ; RV32-NEXT: {{  $}}826  ; RV32-NEXT:   [[COPY:%[0-9]+]]:_(<vscale x 2 x s16>) = COPY $v8827  ; RV32-NEXT:   [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0828  ; RV32-NEXT:   [[EVEC:%[0-9]+]]:_(s16) = G_EXTRACT_VECTOR_ELT [[COPY]](<vscale x 2 x s16>), [[C]](s32)829  ; RV32-NEXT:   [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 2 x s16>) = G_SPLAT_VECTOR [[EVEC]](s16)830  ; RV32-NEXT:   $v8 = COPY [[SPLAT_VECTOR]](<vscale x 2 x s16>)831  ; RV32-NEXT:   PseudoRET implicit $v8832  ;833  ; RV64-LABEL: name: shufflevector_nxv2i16_2834  ; RV64: bb.1 (%ir-block.0):835  ; RV64-NEXT:   liveins: $v8836  ; RV64-NEXT: {{  $}}837  ; RV64-NEXT:   [[COPY:%[0-9]+]]:_(<vscale x 2 x s16>) = COPY $v8838  ; RV64-NEXT:   [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 0839  ; RV64-NEXT:   [[EVEC:%[0-9]+]]:_(s16) = G_EXTRACT_VECTOR_ELT [[COPY]](<vscale x 2 x s16>), [[C]](s64)840  ; RV64-NEXT:   [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 2 x s16>) = G_SPLAT_VECTOR [[EVEC]](s16)841  ; RV64-NEXT:   $v8 = COPY [[SPLAT_VECTOR]](<vscale x 2 x s16>)842  ; RV64-NEXT:   PseudoRET implicit $v8843  %b = shufflevector <vscale x 2 x i16> %a , <vscale x 2 x i16> poison, <vscale x 2 x i32> zeroinitializer844  ret <vscale x 2 x i16> %b845}846 847define <vscale x 4 x i16> @shufflevector_nxv4i16_0() {848  ; RV32-LABEL: name: shufflevector_nxv4i16_0849  ; RV32: bb.1 (%ir-block.0):850  ; RV32-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 4 x s16>) = G_IMPLICIT_DEF851  ; RV32-NEXT:   [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0852  ; RV32-NEXT:   [[EVEC:%[0-9]+]]:_(s16) = G_EXTRACT_VECTOR_ELT [[DEF]](<vscale x 4 x s16>), [[C]](s32)853  ; RV32-NEXT:   [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 4 x s16>) = G_SPLAT_VECTOR [[EVEC]](s16)854  ; RV32-NEXT:   $v8 = COPY [[SPLAT_VECTOR]](<vscale x 4 x s16>)855  ; RV32-NEXT:   PseudoRET implicit $v8856  ;857  ; RV64-LABEL: name: shufflevector_nxv4i16_0858  ; RV64: bb.1 (%ir-block.0):859  ; RV64-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 4 x s16>) = G_IMPLICIT_DEF860  ; RV64-NEXT:   [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 0861  ; RV64-NEXT:   [[EVEC:%[0-9]+]]:_(s16) = G_EXTRACT_VECTOR_ELT [[DEF]](<vscale x 4 x s16>), [[C]](s64)862  ; RV64-NEXT:   [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 4 x s16>) = G_SPLAT_VECTOR [[EVEC]](s16)863  ; RV64-NEXT:   $v8 = COPY [[SPLAT_VECTOR]](<vscale x 4 x s16>)864  ; RV64-NEXT:   PseudoRET implicit $v8865  %a = shufflevector <vscale x 4 x i16> poison, <vscale x 4 x i16> poison, <vscale x 4 x i32> poison866  ret <vscale x 4 x i16> %a867}868 869define <vscale x 4 x i16> @shufflevector_nxv4i16_1() {870  ; RV32-LABEL: name: shufflevector_nxv4i16_1871  ; RV32: bb.1 (%ir-block.0):872  ; RV32-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 4 x s16>) = G_IMPLICIT_DEF873  ; RV32-NEXT:   [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0874  ; RV32-NEXT:   [[EVEC:%[0-9]+]]:_(s16) = G_EXTRACT_VECTOR_ELT [[DEF]](<vscale x 4 x s16>), [[C]](s32)875  ; RV32-NEXT:   [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 4 x s16>) = G_SPLAT_VECTOR [[EVEC]](s16)876  ; RV32-NEXT:   $v8 = COPY [[SPLAT_VECTOR]](<vscale x 4 x s16>)877  ; RV32-NEXT:   PseudoRET implicit $v8878  ;879  ; RV64-LABEL: name: shufflevector_nxv4i16_1880  ; RV64: bb.1 (%ir-block.0):881  ; RV64-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 4 x s16>) = G_IMPLICIT_DEF882  ; RV64-NEXT:   [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 0883  ; RV64-NEXT:   [[EVEC:%[0-9]+]]:_(s16) = G_EXTRACT_VECTOR_ELT [[DEF]](<vscale x 4 x s16>), [[C]](s64)884  ; RV64-NEXT:   [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 4 x s16>) = G_SPLAT_VECTOR [[EVEC]](s16)885  ; RV64-NEXT:   $v8 = COPY [[SPLAT_VECTOR]](<vscale x 4 x s16>)886  ; RV64-NEXT:   PseudoRET implicit $v8887  %a = shufflevector <vscale x 4 x i16> poison, <vscale x 4 x i16> poison, <vscale x 4 x i32> poison888  ret <vscale x 4 x i16> %a889}890 891define <vscale x 4 x i16> @shufflevector_nxv4i16_2(<vscale x 4 x i16> %a) {892  ; RV32-LABEL: name: shufflevector_nxv4i16_2893  ; RV32: bb.1 (%ir-block.0):894  ; RV32-NEXT:   liveins: $v8895  ; RV32-NEXT: {{  $}}896  ; RV32-NEXT:   [[COPY:%[0-9]+]]:_(<vscale x 4 x s16>) = COPY $v8897  ; RV32-NEXT:   [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0898  ; RV32-NEXT:   [[EVEC:%[0-9]+]]:_(s16) = G_EXTRACT_VECTOR_ELT [[COPY]](<vscale x 4 x s16>), [[C]](s32)899  ; RV32-NEXT:   [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 4 x s16>) = G_SPLAT_VECTOR [[EVEC]](s16)900  ; RV32-NEXT:   $v8 = COPY [[SPLAT_VECTOR]](<vscale x 4 x s16>)901  ; RV32-NEXT:   PseudoRET implicit $v8902  ;903  ; RV64-LABEL: name: shufflevector_nxv4i16_2904  ; RV64: bb.1 (%ir-block.0):905  ; RV64-NEXT:   liveins: $v8906  ; RV64-NEXT: {{  $}}907  ; RV64-NEXT:   [[COPY:%[0-9]+]]:_(<vscale x 4 x s16>) = COPY $v8908  ; RV64-NEXT:   [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 0909  ; RV64-NEXT:   [[EVEC:%[0-9]+]]:_(s16) = G_EXTRACT_VECTOR_ELT [[COPY]](<vscale x 4 x s16>), [[C]](s64)910  ; RV64-NEXT:   [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 4 x s16>) = G_SPLAT_VECTOR [[EVEC]](s16)911  ; RV64-NEXT:   $v8 = COPY [[SPLAT_VECTOR]](<vscale x 4 x s16>)912  ; RV64-NEXT:   PseudoRET implicit $v8913  %b = shufflevector <vscale x 4 x i16> %a , <vscale x 4 x i16> poison, <vscale x 4 x i32> zeroinitializer914  ret <vscale x 4 x i16> %b915}916 917define <vscale x 8 x i16> @shufflevector_nxv8i16_0() {918  ; RV32-LABEL: name: shufflevector_nxv8i16_0919  ; RV32: bb.1 (%ir-block.0):920  ; RV32-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 8 x s16>) = G_IMPLICIT_DEF921  ; RV32-NEXT:   [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0922  ; RV32-NEXT:   [[EVEC:%[0-9]+]]:_(s16) = G_EXTRACT_VECTOR_ELT [[DEF]](<vscale x 8 x s16>), [[C]](s32)923  ; RV32-NEXT:   [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 8 x s16>) = G_SPLAT_VECTOR [[EVEC]](s16)924  ; RV32-NEXT:   $v8m2 = COPY [[SPLAT_VECTOR]](<vscale x 8 x s16>)925  ; RV32-NEXT:   PseudoRET implicit $v8m2926  ;927  ; RV64-LABEL: name: shufflevector_nxv8i16_0928  ; RV64: bb.1 (%ir-block.0):929  ; RV64-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 8 x s16>) = G_IMPLICIT_DEF930  ; RV64-NEXT:   [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 0931  ; RV64-NEXT:   [[EVEC:%[0-9]+]]:_(s16) = G_EXTRACT_VECTOR_ELT [[DEF]](<vscale x 8 x s16>), [[C]](s64)932  ; RV64-NEXT:   [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 8 x s16>) = G_SPLAT_VECTOR [[EVEC]](s16)933  ; RV64-NEXT:   $v8m2 = COPY [[SPLAT_VECTOR]](<vscale x 8 x s16>)934  ; RV64-NEXT:   PseudoRET implicit $v8m2935  %a = shufflevector <vscale x 8 x i16> poison, <vscale x 8 x i16> poison, <vscale x 8 x i32> poison936  ret <vscale x 8 x i16> %a937}938 939define <vscale x 8 x i16> @shufflevector_nxv8i16_1() {940  ; RV32-LABEL: name: shufflevector_nxv8i16_1941  ; RV32: bb.1 (%ir-block.0):942  ; RV32-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 8 x s16>) = G_IMPLICIT_DEF943  ; RV32-NEXT:   [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0944  ; RV32-NEXT:   [[EVEC:%[0-9]+]]:_(s16) = G_EXTRACT_VECTOR_ELT [[DEF]](<vscale x 8 x s16>), [[C]](s32)945  ; RV32-NEXT:   [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 8 x s16>) = G_SPLAT_VECTOR [[EVEC]](s16)946  ; RV32-NEXT:   $v8m2 = COPY [[SPLAT_VECTOR]](<vscale x 8 x s16>)947  ; RV32-NEXT:   PseudoRET implicit $v8m2948  ;949  ; RV64-LABEL: name: shufflevector_nxv8i16_1950  ; RV64: bb.1 (%ir-block.0):951  ; RV64-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 8 x s16>) = G_IMPLICIT_DEF952  ; RV64-NEXT:   [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 0953  ; RV64-NEXT:   [[EVEC:%[0-9]+]]:_(s16) = G_EXTRACT_VECTOR_ELT [[DEF]](<vscale x 8 x s16>), [[C]](s64)954  ; RV64-NEXT:   [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 8 x s16>) = G_SPLAT_VECTOR [[EVEC]](s16)955  ; RV64-NEXT:   $v8m2 = COPY [[SPLAT_VECTOR]](<vscale x 8 x s16>)956  ; RV64-NEXT:   PseudoRET implicit $v8m2957  %a = shufflevector <vscale x 8 x i16> poison, <vscale x 8 x i16> poison, <vscale x 8 x i32> poison958  ret <vscale x 8 x i16> %a959}960 961define <vscale x 8 x i16> @shufflevector_nxv8i16_2(<vscale x 8 x i16> %a) {962  ; RV32-LABEL: name: shufflevector_nxv8i16_2963  ; RV32: bb.1 (%ir-block.0):964  ; RV32-NEXT:   liveins: $v8m2965  ; RV32-NEXT: {{  $}}966  ; RV32-NEXT:   [[COPY:%[0-9]+]]:_(<vscale x 8 x s16>) = COPY $v8m2967  ; RV32-NEXT:   [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0968  ; RV32-NEXT:   [[EVEC:%[0-9]+]]:_(s16) = G_EXTRACT_VECTOR_ELT [[COPY]](<vscale x 8 x s16>), [[C]](s32)969  ; RV32-NEXT:   [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 8 x s16>) = G_SPLAT_VECTOR [[EVEC]](s16)970  ; RV32-NEXT:   $v8m2 = COPY [[SPLAT_VECTOR]](<vscale x 8 x s16>)971  ; RV32-NEXT:   PseudoRET implicit $v8m2972  ;973  ; RV64-LABEL: name: shufflevector_nxv8i16_2974  ; RV64: bb.1 (%ir-block.0):975  ; RV64-NEXT:   liveins: $v8m2976  ; RV64-NEXT: {{  $}}977  ; RV64-NEXT:   [[COPY:%[0-9]+]]:_(<vscale x 8 x s16>) = COPY $v8m2978  ; RV64-NEXT:   [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 0979  ; RV64-NEXT:   [[EVEC:%[0-9]+]]:_(s16) = G_EXTRACT_VECTOR_ELT [[COPY]](<vscale x 8 x s16>), [[C]](s64)980  ; RV64-NEXT:   [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 8 x s16>) = G_SPLAT_VECTOR [[EVEC]](s16)981  ; RV64-NEXT:   $v8m2 = COPY [[SPLAT_VECTOR]](<vscale x 8 x s16>)982  ; RV64-NEXT:   PseudoRET implicit $v8m2983  %b = shufflevector <vscale x 8 x i16> %a , <vscale x 8 x i16> poison, <vscale x 8 x i32> zeroinitializer984  ret <vscale x 8 x i16> %b985}986 987define <vscale x 16 x i16> @shufflevector_nxv16i16_0() {988  ; RV32-LABEL: name: shufflevector_nxv16i16_0989  ; RV32: bb.1 (%ir-block.0):990  ; RV32-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 16 x s16>) = G_IMPLICIT_DEF991  ; RV32-NEXT:   [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0992  ; RV32-NEXT:   [[EVEC:%[0-9]+]]:_(s16) = G_EXTRACT_VECTOR_ELT [[DEF]](<vscale x 16 x s16>), [[C]](s32)993  ; RV32-NEXT:   [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 16 x s16>) = G_SPLAT_VECTOR [[EVEC]](s16)994  ; RV32-NEXT:   $v8m4 = COPY [[SPLAT_VECTOR]](<vscale x 16 x s16>)995  ; RV32-NEXT:   PseudoRET implicit $v8m4996  ;997  ; RV64-LABEL: name: shufflevector_nxv16i16_0998  ; RV64: bb.1 (%ir-block.0):999  ; RV64-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 16 x s16>) = G_IMPLICIT_DEF1000  ; RV64-NEXT:   [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 01001  ; RV64-NEXT:   [[EVEC:%[0-9]+]]:_(s16) = G_EXTRACT_VECTOR_ELT [[DEF]](<vscale x 16 x s16>), [[C]](s64)1002  ; RV64-NEXT:   [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 16 x s16>) = G_SPLAT_VECTOR [[EVEC]](s16)1003  ; RV64-NEXT:   $v8m4 = COPY [[SPLAT_VECTOR]](<vscale x 16 x s16>)1004  ; RV64-NEXT:   PseudoRET implicit $v8m41005  %a = shufflevector <vscale x 16 x i16> poison, <vscale x 16 x i16> poison, <vscale x 16 x i32> poison1006  ret <vscale x 16 x i16> %a1007}1008 1009define <vscale x 16 x i16> @shufflevector_nxv16i16_1() {1010  ; RV32-LABEL: name: shufflevector_nxv16i16_11011  ; RV32: bb.1 (%ir-block.0):1012  ; RV32-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 16 x s16>) = G_IMPLICIT_DEF1013  ; RV32-NEXT:   [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 01014  ; RV32-NEXT:   [[EVEC:%[0-9]+]]:_(s16) = G_EXTRACT_VECTOR_ELT [[DEF]](<vscale x 16 x s16>), [[C]](s32)1015  ; RV32-NEXT:   [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 16 x s16>) = G_SPLAT_VECTOR [[EVEC]](s16)1016  ; RV32-NEXT:   $v8m4 = COPY [[SPLAT_VECTOR]](<vscale x 16 x s16>)1017  ; RV32-NEXT:   PseudoRET implicit $v8m41018  ;1019  ; RV64-LABEL: name: shufflevector_nxv16i16_11020  ; RV64: bb.1 (%ir-block.0):1021  ; RV64-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 16 x s16>) = G_IMPLICIT_DEF1022  ; RV64-NEXT:   [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 01023  ; RV64-NEXT:   [[EVEC:%[0-9]+]]:_(s16) = G_EXTRACT_VECTOR_ELT [[DEF]](<vscale x 16 x s16>), [[C]](s64)1024  ; RV64-NEXT:   [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 16 x s16>) = G_SPLAT_VECTOR [[EVEC]](s16)1025  ; RV64-NEXT:   $v8m4 = COPY [[SPLAT_VECTOR]](<vscale x 16 x s16>)1026  ; RV64-NEXT:   PseudoRET implicit $v8m41027  %a = shufflevector <vscale x 16 x i16> poison, <vscale x 16 x i16> poison, <vscale x 16 x i32> poison1028  ret <vscale x 16 x i16> %a1029}1030 1031define <vscale x 16 x i16> @shufflevector_nxv16i16_2(<vscale x 16 x i16> %a) {1032  ; RV32-LABEL: name: shufflevector_nxv16i16_21033  ; RV32: bb.1 (%ir-block.0):1034  ; RV32-NEXT:   liveins: $v8m41035  ; RV32-NEXT: {{  $}}1036  ; RV32-NEXT:   [[COPY:%[0-9]+]]:_(<vscale x 16 x s16>) = COPY $v8m41037  ; RV32-NEXT:   [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 01038  ; RV32-NEXT:   [[EVEC:%[0-9]+]]:_(s16) = G_EXTRACT_VECTOR_ELT [[COPY]](<vscale x 16 x s16>), [[C]](s32)1039  ; RV32-NEXT:   [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 16 x s16>) = G_SPLAT_VECTOR [[EVEC]](s16)1040  ; RV32-NEXT:   $v8m4 = COPY [[SPLAT_VECTOR]](<vscale x 16 x s16>)1041  ; RV32-NEXT:   PseudoRET implicit $v8m41042  ;1043  ; RV64-LABEL: name: shufflevector_nxv16i16_21044  ; RV64: bb.1 (%ir-block.0):1045  ; RV64-NEXT:   liveins: $v8m41046  ; RV64-NEXT: {{  $}}1047  ; RV64-NEXT:   [[COPY:%[0-9]+]]:_(<vscale x 16 x s16>) = COPY $v8m41048  ; RV64-NEXT:   [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 01049  ; RV64-NEXT:   [[EVEC:%[0-9]+]]:_(s16) = G_EXTRACT_VECTOR_ELT [[COPY]](<vscale x 16 x s16>), [[C]](s64)1050  ; RV64-NEXT:   [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 16 x s16>) = G_SPLAT_VECTOR [[EVEC]](s16)1051  ; RV64-NEXT:   $v8m4 = COPY [[SPLAT_VECTOR]](<vscale x 16 x s16>)1052  ; RV64-NEXT:   PseudoRET implicit $v8m41053  %b = shufflevector <vscale x 16 x i16> %a , <vscale x 16 x i16> poison, <vscale x 16 x i32> zeroinitializer1054  ret <vscale x 16 x i16> %b1055}1056 1057define <vscale x 1 x i32> @shufflevector_nxv1i32_0() {1058  ; RV32-LABEL: name: shufflevector_nxv1i32_01059  ; RV32: bb.1 (%ir-block.0):1060  ; RV32-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 1 x s32>) = G_IMPLICIT_DEF1061  ; RV32-NEXT:   [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 01062  ; RV32-NEXT:   [[EVEC:%[0-9]+]]:_(s32) = G_EXTRACT_VECTOR_ELT [[DEF]](<vscale x 1 x s32>), [[C]](s32)1063  ; RV32-NEXT:   [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 1 x s32>) = G_SPLAT_VECTOR [[EVEC]](s32)1064  ; RV32-NEXT:   $v8 = COPY [[SPLAT_VECTOR]](<vscale x 1 x s32>)1065  ; RV32-NEXT:   PseudoRET implicit $v81066  ;1067  ; RV64-LABEL: name: shufflevector_nxv1i32_01068  ; RV64: bb.1 (%ir-block.0):1069  ; RV64-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 1 x s32>) = G_IMPLICIT_DEF1070  ; RV64-NEXT:   [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 01071  ; RV64-NEXT:   [[EVEC:%[0-9]+]]:_(s32) = G_EXTRACT_VECTOR_ELT [[DEF]](<vscale x 1 x s32>), [[C]](s64)1072  ; RV64-NEXT:   [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 1 x s32>) = G_SPLAT_VECTOR [[EVEC]](s32)1073  ; RV64-NEXT:   $v8 = COPY [[SPLAT_VECTOR]](<vscale x 1 x s32>)1074  ; RV64-NEXT:   PseudoRET implicit $v81075  %a = shufflevector <vscale x 1 x i32> poison, <vscale x 1 x i32> poison, <vscale x 1 x i32> poison1076  ret <vscale x 1 x i32> %a1077}1078 1079define <vscale x 1 x i32> @shufflevector_nxv1i32_1() {1080  ; RV32-LABEL: name: shufflevector_nxv1i32_11081  ; RV32: bb.1 (%ir-block.0):1082  ; RV32-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 1 x s32>) = G_IMPLICIT_DEF1083  ; RV32-NEXT:   [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 01084  ; RV32-NEXT:   [[EVEC:%[0-9]+]]:_(s32) = G_EXTRACT_VECTOR_ELT [[DEF]](<vscale x 1 x s32>), [[C]](s32)1085  ; RV32-NEXT:   [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 1 x s32>) = G_SPLAT_VECTOR [[EVEC]](s32)1086  ; RV32-NEXT:   $v8 = COPY [[SPLAT_VECTOR]](<vscale x 1 x s32>)1087  ; RV32-NEXT:   PseudoRET implicit $v81088  ;1089  ; RV64-LABEL: name: shufflevector_nxv1i32_11090  ; RV64: bb.1 (%ir-block.0):1091  ; RV64-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 1 x s32>) = G_IMPLICIT_DEF1092  ; RV64-NEXT:   [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 01093  ; RV64-NEXT:   [[EVEC:%[0-9]+]]:_(s32) = G_EXTRACT_VECTOR_ELT [[DEF]](<vscale x 1 x s32>), [[C]](s64)1094  ; RV64-NEXT:   [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 1 x s32>) = G_SPLAT_VECTOR [[EVEC]](s32)1095  ; RV64-NEXT:   $v8 = COPY [[SPLAT_VECTOR]](<vscale x 1 x s32>)1096  ; RV64-NEXT:   PseudoRET implicit $v81097  %a = shufflevector <vscale x 1 x i32> poison, <vscale x 1 x i32> poison, <vscale x 1 x i32> poison1098  ret <vscale x 1 x i32> %a1099}1100 1101define <vscale x 1 x i32> @shufflevector_nxv1i32_2(<vscale x 1 x i32> %a) {1102  ; RV32-LABEL: name: shufflevector_nxv1i32_21103  ; RV32: bb.1 (%ir-block.0):1104  ; RV32-NEXT:   liveins: $v81105  ; RV32-NEXT: {{  $}}1106  ; RV32-NEXT:   [[COPY:%[0-9]+]]:_(<vscale x 1 x s32>) = COPY $v81107  ; RV32-NEXT:   [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 01108  ; RV32-NEXT:   [[EVEC:%[0-9]+]]:_(s32) = G_EXTRACT_VECTOR_ELT [[COPY]](<vscale x 1 x s32>), [[C]](s32)1109  ; RV32-NEXT:   [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 1 x s32>) = G_SPLAT_VECTOR [[EVEC]](s32)1110  ; RV32-NEXT:   $v8 = COPY [[SPLAT_VECTOR]](<vscale x 1 x s32>)1111  ; RV32-NEXT:   PseudoRET implicit $v81112  ;1113  ; RV64-LABEL: name: shufflevector_nxv1i32_21114  ; RV64: bb.1 (%ir-block.0):1115  ; RV64-NEXT:   liveins: $v81116  ; RV64-NEXT: {{  $}}1117  ; RV64-NEXT:   [[COPY:%[0-9]+]]:_(<vscale x 1 x s32>) = COPY $v81118  ; RV64-NEXT:   [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 01119  ; RV64-NEXT:   [[EVEC:%[0-9]+]]:_(s32) = G_EXTRACT_VECTOR_ELT [[COPY]](<vscale x 1 x s32>), [[C]](s64)1120  ; RV64-NEXT:   [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 1 x s32>) = G_SPLAT_VECTOR [[EVEC]](s32)1121  ; RV64-NEXT:   $v8 = COPY [[SPLAT_VECTOR]](<vscale x 1 x s32>)1122  ; RV64-NEXT:   PseudoRET implicit $v81123  %b = shufflevector <vscale x 1 x i32> %a , <vscale x 1 x i32> poison, <vscale x 1 x i32> zeroinitializer1124  ret <vscale x 1 x i32> %b1125}1126 1127define <vscale x 2 x i32> @shufflevector_nxv2i32_0() {1128  ; RV32-LABEL: name: shufflevector_nxv2i32_01129  ; RV32: bb.1 (%ir-block.0):1130  ; RV32-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 2 x s32>) = G_IMPLICIT_DEF1131  ; RV32-NEXT:   [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 01132  ; RV32-NEXT:   [[EVEC:%[0-9]+]]:_(s32) = G_EXTRACT_VECTOR_ELT [[DEF]](<vscale x 2 x s32>), [[C]](s32)1133  ; RV32-NEXT:   [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 2 x s32>) = G_SPLAT_VECTOR [[EVEC]](s32)1134  ; RV32-NEXT:   $v8 = COPY [[SPLAT_VECTOR]](<vscale x 2 x s32>)1135  ; RV32-NEXT:   PseudoRET implicit $v81136  ;1137  ; RV64-LABEL: name: shufflevector_nxv2i32_01138  ; RV64: bb.1 (%ir-block.0):1139  ; RV64-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 2 x s32>) = G_IMPLICIT_DEF1140  ; RV64-NEXT:   [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 01141  ; RV64-NEXT:   [[EVEC:%[0-9]+]]:_(s32) = G_EXTRACT_VECTOR_ELT [[DEF]](<vscale x 2 x s32>), [[C]](s64)1142  ; RV64-NEXT:   [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 2 x s32>) = G_SPLAT_VECTOR [[EVEC]](s32)1143  ; RV64-NEXT:   $v8 = COPY [[SPLAT_VECTOR]](<vscale x 2 x s32>)1144  ; RV64-NEXT:   PseudoRET implicit $v81145  %a = shufflevector <vscale x 2 x i32> poison, <vscale x 2 x i32> poison, <vscale x 2 x i32> poison1146  ret <vscale x 2 x i32> %a1147}1148 1149define <vscale x 2 x i32> @shufflevector_nxv2i32_1() {1150  ; RV32-LABEL: name: shufflevector_nxv2i32_11151  ; RV32: bb.1 (%ir-block.0):1152  ; RV32-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 2 x s32>) = G_IMPLICIT_DEF1153  ; RV32-NEXT:   [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 01154  ; RV32-NEXT:   [[EVEC:%[0-9]+]]:_(s32) = G_EXTRACT_VECTOR_ELT [[DEF]](<vscale x 2 x s32>), [[C]](s32)1155  ; RV32-NEXT:   [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 2 x s32>) = G_SPLAT_VECTOR [[EVEC]](s32)1156  ; RV32-NEXT:   $v8 = COPY [[SPLAT_VECTOR]](<vscale x 2 x s32>)1157  ; RV32-NEXT:   PseudoRET implicit $v81158  ;1159  ; RV64-LABEL: name: shufflevector_nxv2i32_11160  ; RV64: bb.1 (%ir-block.0):1161  ; RV64-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 2 x s32>) = G_IMPLICIT_DEF1162  ; RV64-NEXT:   [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 01163  ; RV64-NEXT:   [[EVEC:%[0-9]+]]:_(s32) = G_EXTRACT_VECTOR_ELT [[DEF]](<vscale x 2 x s32>), [[C]](s64)1164  ; RV64-NEXT:   [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 2 x s32>) = G_SPLAT_VECTOR [[EVEC]](s32)1165  ; RV64-NEXT:   $v8 = COPY [[SPLAT_VECTOR]](<vscale x 2 x s32>)1166  ; RV64-NEXT:   PseudoRET implicit $v81167  %a = shufflevector <vscale x 2 x i32> poison, <vscale x 2 x i32> poison, <vscale x 2 x i32> poison1168  ret <vscale x 2 x i32> %a1169}1170 1171define <vscale x 2 x i32> @shufflevector_nxv2i32_2(<vscale x 2 x i32> %a) {1172  ; RV32-LABEL: name: shufflevector_nxv2i32_21173  ; RV32: bb.1 (%ir-block.0):1174  ; RV32-NEXT:   liveins: $v81175  ; RV32-NEXT: {{  $}}1176  ; RV32-NEXT:   [[COPY:%[0-9]+]]:_(<vscale x 2 x s32>) = COPY $v81177  ; RV32-NEXT:   [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 01178  ; RV32-NEXT:   [[EVEC:%[0-9]+]]:_(s32) = G_EXTRACT_VECTOR_ELT [[COPY]](<vscale x 2 x s32>), [[C]](s32)1179  ; RV32-NEXT:   [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 2 x s32>) = G_SPLAT_VECTOR [[EVEC]](s32)1180  ; RV32-NEXT:   $v8 = COPY [[SPLAT_VECTOR]](<vscale x 2 x s32>)1181  ; RV32-NEXT:   PseudoRET implicit $v81182  ;1183  ; RV64-LABEL: name: shufflevector_nxv2i32_21184  ; RV64: bb.1 (%ir-block.0):1185  ; RV64-NEXT:   liveins: $v81186  ; RV64-NEXT: {{  $}}1187  ; RV64-NEXT:   [[COPY:%[0-9]+]]:_(<vscale x 2 x s32>) = COPY $v81188  ; RV64-NEXT:   [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 01189  ; RV64-NEXT:   [[EVEC:%[0-9]+]]:_(s32) = G_EXTRACT_VECTOR_ELT [[COPY]](<vscale x 2 x s32>), [[C]](s64)1190  ; RV64-NEXT:   [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 2 x s32>) = G_SPLAT_VECTOR [[EVEC]](s32)1191  ; RV64-NEXT:   $v8 = COPY [[SPLAT_VECTOR]](<vscale x 2 x s32>)1192  ; RV64-NEXT:   PseudoRET implicit $v81193  %b = shufflevector <vscale x 2 x i32> %a , <vscale x 2 x i32> poison, <vscale x 2 x i32> zeroinitializer1194  ret <vscale x 2 x i32> %b1195}1196 1197define <vscale x 4 x i32> @shufflevector_nxv4i32_0() {1198  ; RV32-LABEL: name: shufflevector_nxv4i32_01199  ; RV32: bb.1 (%ir-block.0):1200  ; RV32-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 4 x s32>) = G_IMPLICIT_DEF1201  ; RV32-NEXT:   [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 01202  ; RV32-NEXT:   [[EVEC:%[0-9]+]]:_(s32) = G_EXTRACT_VECTOR_ELT [[DEF]](<vscale x 4 x s32>), [[C]](s32)1203  ; RV32-NEXT:   [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 4 x s32>) = G_SPLAT_VECTOR [[EVEC]](s32)1204  ; RV32-NEXT:   $v8m2 = COPY [[SPLAT_VECTOR]](<vscale x 4 x s32>)1205  ; RV32-NEXT:   PseudoRET implicit $v8m21206  ;1207  ; RV64-LABEL: name: shufflevector_nxv4i32_01208  ; RV64: bb.1 (%ir-block.0):1209  ; RV64-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 4 x s32>) = G_IMPLICIT_DEF1210  ; RV64-NEXT:   [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 01211  ; RV64-NEXT:   [[EVEC:%[0-9]+]]:_(s32) = G_EXTRACT_VECTOR_ELT [[DEF]](<vscale x 4 x s32>), [[C]](s64)1212  ; RV64-NEXT:   [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 4 x s32>) = G_SPLAT_VECTOR [[EVEC]](s32)1213  ; RV64-NEXT:   $v8m2 = COPY [[SPLAT_VECTOR]](<vscale x 4 x s32>)1214  ; RV64-NEXT:   PseudoRET implicit $v8m21215  %a = shufflevector <vscale x 4 x i32> poison, <vscale x 4 x i32> poison, <vscale x 4 x i32> poison1216  ret <vscale x 4 x i32> %a1217}1218 1219define <vscale x 4 x i32> @shufflevector_nxv4i32_1() {1220  ; RV32-LABEL: name: shufflevector_nxv4i32_11221  ; RV32: bb.1 (%ir-block.0):1222  ; RV32-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 4 x s32>) = G_IMPLICIT_DEF1223  ; RV32-NEXT:   [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 01224  ; RV32-NEXT:   [[EVEC:%[0-9]+]]:_(s32) = G_EXTRACT_VECTOR_ELT [[DEF]](<vscale x 4 x s32>), [[C]](s32)1225  ; RV32-NEXT:   [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 4 x s32>) = G_SPLAT_VECTOR [[EVEC]](s32)1226  ; RV32-NEXT:   $v8m2 = COPY [[SPLAT_VECTOR]](<vscale x 4 x s32>)1227  ; RV32-NEXT:   PseudoRET implicit $v8m21228  ;1229  ; RV64-LABEL: name: shufflevector_nxv4i32_11230  ; RV64: bb.1 (%ir-block.0):1231  ; RV64-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 4 x s32>) = G_IMPLICIT_DEF1232  ; RV64-NEXT:   [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 01233  ; RV64-NEXT:   [[EVEC:%[0-9]+]]:_(s32) = G_EXTRACT_VECTOR_ELT [[DEF]](<vscale x 4 x s32>), [[C]](s64)1234  ; RV64-NEXT:   [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 4 x s32>) = G_SPLAT_VECTOR [[EVEC]](s32)1235  ; RV64-NEXT:   $v8m2 = COPY [[SPLAT_VECTOR]](<vscale x 4 x s32>)1236  ; RV64-NEXT:   PseudoRET implicit $v8m21237  %a = shufflevector <vscale x 4 x i32> poison, <vscale x 4 x i32> poison, <vscale x 4 x i32> poison1238  ret <vscale x 4 x i32> %a1239}1240 1241define <vscale x 4 x i32> @shufflevector_nxv4i32_2(<vscale x 4 x i32> %a) {1242  ; RV32-LABEL: name: shufflevector_nxv4i32_21243  ; RV32: bb.1 (%ir-block.0):1244  ; RV32-NEXT:   liveins: $v8m21245  ; RV32-NEXT: {{  $}}1246  ; RV32-NEXT:   [[COPY:%[0-9]+]]:_(<vscale x 4 x s32>) = COPY $v8m21247  ; RV32-NEXT:   [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 01248  ; RV32-NEXT:   [[EVEC:%[0-9]+]]:_(s32) = G_EXTRACT_VECTOR_ELT [[COPY]](<vscale x 4 x s32>), [[C]](s32)1249  ; RV32-NEXT:   [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 4 x s32>) = G_SPLAT_VECTOR [[EVEC]](s32)1250  ; RV32-NEXT:   $v8m2 = COPY [[SPLAT_VECTOR]](<vscale x 4 x s32>)1251  ; RV32-NEXT:   PseudoRET implicit $v8m21252  ;1253  ; RV64-LABEL: name: shufflevector_nxv4i32_21254  ; RV64: bb.1 (%ir-block.0):1255  ; RV64-NEXT:   liveins: $v8m21256  ; RV64-NEXT: {{  $}}1257  ; RV64-NEXT:   [[COPY:%[0-9]+]]:_(<vscale x 4 x s32>) = COPY $v8m21258  ; RV64-NEXT:   [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 01259  ; RV64-NEXT:   [[EVEC:%[0-9]+]]:_(s32) = G_EXTRACT_VECTOR_ELT [[COPY]](<vscale x 4 x s32>), [[C]](s64)1260  ; RV64-NEXT:   [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 4 x s32>) = G_SPLAT_VECTOR [[EVEC]](s32)1261  ; RV64-NEXT:   $v8m2 = COPY [[SPLAT_VECTOR]](<vscale x 4 x s32>)1262  ; RV64-NEXT:   PseudoRET implicit $v8m21263  %b = shufflevector <vscale x 4 x i32> %a , <vscale x 4 x i32> poison, <vscale x 4 x i32> zeroinitializer1264  ret <vscale x 4 x i32> %b1265}1266 1267define <vscale x 8 x i32> @shufflevector_nxv8i32_0() {1268  ; RV32-LABEL: name: shufflevector_nxv8i32_01269  ; RV32: bb.1 (%ir-block.0):1270  ; RV32-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 8 x s32>) = G_IMPLICIT_DEF1271  ; RV32-NEXT:   [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 01272  ; RV32-NEXT:   [[EVEC:%[0-9]+]]:_(s32) = G_EXTRACT_VECTOR_ELT [[DEF]](<vscale x 8 x s32>), [[C]](s32)1273  ; RV32-NEXT:   [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 8 x s32>) = G_SPLAT_VECTOR [[EVEC]](s32)1274  ; RV32-NEXT:   $v8m4 = COPY [[SPLAT_VECTOR]](<vscale x 8 x s32>)1275  ; RV32-NEXT:   PseudoRET implicit $v8m41276  ;1277  ; RV64-LABEL: name: shufflevector_nxv8i32_01278  ; RV64: bb.1 (%ir-block.0):1279  ; RV64-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 8 x s32>) = G_IMPLICIT_DEF1280  ; RV64-NEXT:   [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 01281  ; RV64-NEXT:   [[EVEC:%[0-9]+]]:_(s32) = G_EXTRACT_VECTOR_ELT [[DEF]](<vscale x 8 x s32>), [[C]](s64)1282  ; RV64-NEXT:   [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 8 x s32>) = G_SPLAT_VECTOR [[EVEC]](s32)1283  ; RV64-NEXT:   $v8m4 = COPY [[SPLAT_VECTOR]](<vscale x 8 x s32>)1284  ; RV64-NEXT:   PseudoRET implicit $v8m41285  %a = shufflevector <vscale x 8 x i32> poison, <vscale x 8 x i32> poison, <vscale x 8 x i32> poison1286  ret <vscale x 8 x i32> %a1287}1288 1289define <vscale x 8 x i32> @shufflevector_nxv8i32_1() {1290  ; RV32-LABEL: name: shufflevector_nxv8i32_11291  ; RV32: bb.1 (%ir-block.0):1292  ; RV32-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 8 x s32>) = G_IMPLICIT_DEF1293  ; RV32-NEXT:   [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 01294  ; RV32-NEXT:   [[EVEC:%[0-9]+]]:_(s32) = G_EXTRACT_VECTOR_ELT [[DEF]](<vscale x 8 x s32>), [[C]](s32)1295  ; RV32-NEXT:   [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 8 x s32>) = G_SPLAT_VECTOR [[EVEC]](s32)1296  ; RV32-NEXT:   $v8m4 = COPY [[SPLAT_VECTOR]](<vscale x 8 x s32>)1297  ; RV32-NEXT:   PseudoRET implicit $v8m41298  ;1299  ; RV64-LABEL: name: shufflevector_nxv8i32_11300  ; RV64: bb.1 (%ir-block.0):1301  ; RV64-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 8 x s32>) = G_IMPLICIT_DEF1302  ; RV64-NEXT:   [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 01303  ; RV64-NEXT:   [[EVEC:%[0-9]+]]:_(s32) = G_EXTRACT_VECTOR_ELT [[DEF]](<vscale x 8 x s32>), [[C]](s64)1304  ; RV64-NEXT:   [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 8 x s32>) = G_SPLAT_VECTOR [[EVEC]](s32)1305  ; RV64-NEXT:   $v8m4 = COPY [[SPLAT_VECTOR]](<vscale x 8 x s32>)1306  ; RV64-NEXT:   PseudoRET implicit $v8m41307  %a = shufflevector <vscale x 8 x i32> poison, <vscale x 8 x i32> poison, <vscale x 8 x i32> poison1308  ret <vscale x 8 x i32> %a1309}1310 1311define <vscale x 8 x i32> @shufflevector_nxv8i32_2(<vscale x 8 x i32> %a) {1312  ; RV32-LABEL: name: shufflevector_nxv8i32_21313  ; RV32: bb.1 (%ir-block.0):1314  ; RV32-NEXT:   liveins: $v8m41315  ; RV32-NEXT: {{  $}}1316  ; RV32-NEXT:   [[COPY:%[0-9]+]]:_(<vscale x 8 x s32>) = COPY $v8m41317  ; RV32-NEXT:   [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 01318  ; RV32-NEXT:   [[EVEC:%[0-9]+]]:_(s32) = G_EXTRACT_VECTOR_ELT [[COPY]](<vscale x 8 x s32>), [[C]](s32)1319  ; RV32-NEXT:   [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 8 x s32>) = G_SPLAT_VECTOR [[EVEC]](s32)1320  ; RV32-NEXT:   $v8m4 = COPY [[SPLAT_VECTOR]](<vscale x 8 x s32>)1321  ; RV32-NEXT:   PseudoRET implicit $v8m41322  ;1323  ; RV64-LABEL: name: shufflevector_nxv8i32_21324  ; RV64: bb.1 (%ir-block.0):1325  ; RV64-NEXT:   liveins: $v8m41326  ; RV64-NEXT: {{  $}}1327  ; RV64-NEXT:   [[COPY:%[0-9]+]]:_(<vscale x 8 x s32>) = COPY $v8m41328  ; RV64-NEXT:   [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 01329  ; RV64-NEXT:   [[EVEC:%[0-9]+]]:_(s32) = G_EXTRACT_VECTOR_ELT [[COPY]](<vscale x 8 x s32>), [[C]](s64)1330  ; RV64-NEXT:   [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 8 x s32>) = G_SPLAT_VECTOR [[EVEC]](s32)1331  ; RV64-NEXT:   $v8m4 = COPY [[SPLAT_VECTOR]](<vscale x 8 x s32>)1332  ; RV64-NEXT:   PseudoRET implicit $v8m41333  %b = shufflevector <vscale x 8 x i32> %a , <vscale x 8 x i32> poison, <vscale x 8 x i32> zeroinitializer1334  ret <vscale x 8 x i32> %b1335}1336 1337define <vscale x 16 x i32> @shufflevector_nxv16i32_0() {1338  ; RV32-LABEL: name: shufflevector_nxv16i32_01339  ; RV32: bb.1 (%ir-block.0):1340  ; RV32-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 16 x s32>) = G_IMPLICIT_DEF1341  ; RV32-NEXT:   [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 01342  ; RV32-NEXT:   [[EVEC:%[0-9]+]]:_(s32) = G_EXTRACT_VECTOR_ELT [[DEF]](<vscale x 16 x s32>), [[C]](s32)1343  ; RV32-NEXT:   [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 16 x s32>) = G_SPLAT_VECTOR [[EVEC]](s32)1344  ; RV32-NEXT:   $v8m8 = COPY [[SPLAT_VECTOR]](<vscale x 16 x s32>)1345  ; RV32-NEXT:   PseudoRET implicit $v8m81346  ;1347  ; RV64-LABEL: name: shufflevector_nxv16i32_01348  ; RV64: bb.1 (%ir-block.0):1349  ; RV64-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 16 x s32>) = G_IMPLICIT_DEF1350  ; RV64-NEXT:   [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 01351  ; RV64-NEXT:   [[EVEC:%[0-9]+]]:_(s32) = G_EXTRACT_VECTOR_ELT [[DEF]](<vscale x 16 x s32>), [[C]](s64)1352  ; RV64-NEXT:   [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 16 x s32>) = G_SPLAT_VECTOR [[EVEC]](s32)1353  ; RV64-NEXT:   $v8m8 = COPY [[SPLAT_VECTOR]](<vscale x 16 x s32>)1354  ; RV64-NEXT:   PseudoRET implicit $v8m81355  %a = shufflevector <vscale x 16 x i32> poison, <vscale x 16 x i32> poison, <vscale x 16 x i32> poison1356  ret <vscale x 16 x i32> %a1357}1358 1359define <vscale x 16 x i32> @shufflevector_nxv16i32_1() {1360  ; RV32-LABEL: name: shufflevector_nxv16i32_11361  ; RV32: bb.1 (%ir-block.0):1362  ; RV32-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 16 x s32>) = G_IMPLICIT_DEF1363  ; RV32-NEXT:   [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 01364  ; RV32-NEXT:   [[EVEC:%[0-9]+]]:_(s32) = G_EXTRACT_VECTOR_ELT [[DEF]](<vscale x 16 x s32>), [[C]](s32)1365  ; RV32-NEXT:   [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 16 x s32>) = G_SPLAT_VECTOR [[EVEC]](s32)1366  ; RV32-NEXT:   $v8m8 = COPY [[SPLAT_VECTOR]](<vscale x 16 x s32>)1367  ; RV32-NEXT:   PseudoRET implicit $v8m81368  ;1369  ; RV64-LABEL: name: shufflevector_nxv16i32_11370  ; RV64: bb.1 (%ir-block.0):1371  ; RV64-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 16 x s32>) = G_IMPLICIT_DEF1372  ; RV64-NEXT:   [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 01373  ; RV64-NEXT:   [[EVEC:%[0-9]+]]:_(s32) = G_EXTRACT_VECTOR_ELT [[DEF]](<vscale x 16 x s32>), [[C]](s64)1374  ; RV64-NEXT:   [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 16 x s32>) = G_SPLAT_VECTOR [[EVEC]](s32)1375  ; RV64-NEXT:   $v8m8 = COPY [[SPLAT_VECTOR]](<vscale x 16 x s32>)1376  ; RV64-NEXT:   PseudoRET implicit $v8m81377  %a = shufflevector <vscale x 16 x i32> poison, <vscale x 16 x i32> poison, <vscale x 16 x i32> poison1378  ret <vscale x 16 x i32> %a1379}1380 1381define <vscale x 16 x i32> @shufflevector_nxv16i32_2(<vscale x 16 x i32> %a) {1382  ; RV32-LABEL: name: shufflevector_nxv16i32_21383  ; RV32: bb.1 (%ir-block.0):1384  ; RV32-NEXT:   liveins: $v8m81385  ; RV32-NEXT: {{  $}}1386  ; RV32-NEXT:   [[COPY:%[0-9]+]]:_(<vscale x 16 x s32>) = COPY $v8m81387  ; RV32-NEXT:   [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 01388  ; RV32-NEXT:   [[EVEC:%[0-9]+]]:_(s32) = G_EXTRACT_VECTOR_ELT [[COPY]](<vscale x 16 x s32>), [[C]](s32)1389  ; RV32-NEXT:   [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 16 x s32>) = G_SPLAT_VECTOR [[EVEC]](s32)1390  ; RV32-NEXT:   $v8m8 = COPY [[SPLAT_VECTOR]](<vscale x 16 x s32>)1391  ; RV32-NEXT:   PseudoRET implicit $v8m81392  ;1393  ; RV64-LABEL: name: shufflevector_nxv16i32_21394  ; RV64: bb.1 (%ir-block.0):1395  ; RV64-NEXT:   liveins: $v8m81396  ; RV64-NEXT: {{  $}}1397  ; RV64-NEXT:   [[COPY:%[0-9]+]]:_(<vscale x 16 x s32>) = COPY $v8m81398  ; RV64-NEXT:   [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 01399  ; RV64-NEXT:   [[EVEC:%[0-9]+]]:_(s32) = G_EXTRACT_VECTOR_ELT [[COPY]](<vscale x 16 x s32>), [[C]](s64)1400  ; RV64-NEXT:   [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 16 x s32>) = G_SPLAT_VECTOR [[EVEC]](s32)1401  ; RV64-NEXT:   $v8m8 = COPY [[SPLAT_VECTOR]](<vscale x 16 x s32>)1402  ; RV64-NEXT:   PseudoRET implicit $v8m81403  %b = shufflevector <vscale x 16 x i32> %a , <vscale x 16 x i32> poison, <vscale x 16 x i32> zeroinitializer1404  ret <vscale x 16 x i32> %b1405}1406 1407define <vscale x 1 x i64> @shufflevector_nxv1i64_0() {1408  ; RV32-LABEL: name: shufflevector_nxv1i64_01409  ; RV32: bb.1 (%ir-block.0):1410  ; RV32-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 1 x s64>) = G_IMPLICIT_DEF1411  ; RV32-NEXT:   [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 01412  ; RV32-NEXT:   [[EVEC:%[0-9]+]]:_(s64) = G_EXTRACT_VECTOR_ELT [[DEF]](<vscale x 1 x s64>), [[C]](s32)1413  ; RV32-NEXT:   [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 1 x s64>) = G_SPLAT_VECTOR [[EVEC]](s64)1414  ; RV32-NEXT:   $v8 = COPY [[SPLAT_VECTOR]](<vscale x 1 x s64>)1415  ; RV32-NEXT:   PseudoRET implicit $v81416  ;1417  ; RV64-LABEL: name: shufflevector_nxv1i64_01418  ; RV64: bb.1 (%ir-block.0):1419  ; RV64-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 1 x s64>) = G_IMPLICIT_DEF1420  ; RV64-NEXT:   [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 01421  ; RV64-NEXT:   [[EVEC:%[0-9]+]]:_(s64) = G_EXTRACT_VECTOR_ELT [[DEF]](<vscale x 1 x s64>), [[C]](s64)1422  ; RV64-NEXT:   [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 1 x s64>) = G_SPLAT_VECTOR [[EVEC]](s64)1423  ; RV64-NEXT:   $v8 = COPY [[SPLAT_VECTOR]](<vscale x 1 x s64>)1424  ; RV64-NEXT:   PseudoRET implicit $v81425  %a = shufflevector <vscale x 1 x i64> poison, <vscale x 1 x i64> poison, <vscale x 1 x i32> poison1426  ret <vscale x 1 x i64> %a1427}1428 1429define <vscale x 1 x i64> @shufflevector_nxv1i64_1() {1430  ; RV32-LABEL: name: shufflevector_nxv1i64_11431  ; RV32: bb.1 (%ir-block.0):1432  ; RV32-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 1 x s64>) = G_IMPLICIT_DEF1433  ; RV32-NEXT:   [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 01434  ; RV32-NEXT:   [[EVEC:%[0-9]+]]:_(s64) = G_EXTRACT_VECTOR_ELT [[DEF]](<vscale x 1 x s64>), [[C]](s32)1435  ; RV32-NEXT:   [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 1 x s64>) = G_SPLAT_VECTOR [[EVEC]](s64)1436  ; RV32-NEXT:   $v8 = COPY [[SPLAT_VECTOR]](<vscale x 1 x s64>)1437  ; RV32-NEXT:   PseudoRET implicit $v81438  ;1439  ; RV64-LABEL: name: shufflevector_nxv1i64_11440  ; RV64: bb.1 (%ir-block.0):1441  ; RV64-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 1 x s64>) = G_IMPLICIT_DEF1442  ; RV64-NEXT:   [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 01443  ; RV64-NEXT:   [[EVEC:%[0-9]+]]:_(s64) = G_EXTRACT_VECTOR_ELT [[DEF]](<vscale x 1 x s64>), [[C]](s64)1444  ; RV64-NEXT:   [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 1 x s64>) = G_SPLAT_VECTOR [[EVEC]](s64)1445  ; RV64-NEXT:   $v8 = COPY [[SPLAT_VECTOR]](<vscale x 1 x s64>)1446  ; RV64-NEXT:   PseudoRET implicit $v81447  %a = shufflevector <vscale x 1 x i64> poison, <vscale x 1 x i64> poison, <vscale x 1 x i32> poison1448  ret <vscale x 1 x i64> %a1449}1450 1451define <vscale x 1 x i64> @shufflevector_nxv1i64_2(<vscale x 1 x i64> %a) {1452  ; RV32-LABEL: name: shufflevector_nxv1i64_21453  ; RV32: bb.1 (%ir-block.0):1454  ; RV32-NEXT:   liveins: $v81455  ; RV32-NEXT: {{  $}}1456  ; RV32-NEXT:   [[COPY:%[0-9]+]]:_(<vscale x 1 x s64>) = COPY $v81457  ; RV32-NEXT:   [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 01458  ; RV32-NEXT:   [[EVEC:%[0-9]+]]:_(s64) = G_EXTRACT_VECTOR_ELT [[COPY]](<vscale x 1 x s64>), [[C]](s32)1459  ; RV32-NEXT:   [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 1 x s64>) = G_SPLAT_VECTOR [[EVEC]](s64)1460  ; RV32-NEXT:   $v8 = COPY [[SPLAT_VECTOR]](<vscale x 1 x s64>)1461  ; RV32-NEXT:   PseudoRET implicit $v81462  ;1463  ; RV64-LABEL: name: shufflevector_nxv1i64_21464  ; RV64: bb.1 (%ir-block.0):1465  ; RV64-NEXT:   liveins: $v81466  ; RV64-NEXT: {{  $}}1467  ; RV64-NEXT:   [[COPY:%[0-9]+]]:_(<vscale x 1 x s64>) = COPY $v81468  ; RV64-NEXT:   [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 01469  ; RV64-NEXT:   [[EVEC:%[0-9]+]]:_(s64) = G_EXTRACT_VECTOR_ELT [[COPY]](<vscale x 1 x s64>), [[C]](s64)1470  ; RV64-NEXT:   [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 1 x s64>) = G_SPLAT_VECTOR [[EVEC]](s64)1471  ; RV64-NEXT:   $v8 = COPY [[SPLAT_VECTOR]](<vscale x 1 x s64>)1472  ; RV64-NEXT:   PseudoRET implicit $v81473  %b = shufflevector <vscale x 1 x i64> %a , <vscale x 1 x i64> poison, <vscale x 1 x i32> zeroinitializer1474  ret <vscale x 1 x i64> %b1475}1476 1477define <vscale x 2 x i64> @shufflevector_nxv2i64_0() {1478  ; RV32-LABEL: name: shufflevector_nxv2i64_01479  ; RV32: bb.1 (%ir-block.0):1480  ; RV32-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 2 x s64>) = G_IMPLICIT_DEF1481  ; RV32-NEXT:   [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 01482  ; RV32-NEXT:   [[EVEC:%[0-9]+]]:_(s64) = G_EXTRACT_VECTOR_ELT [[DEF]](<vscale x 2 x s64>), [[C]](s32)1483  ; RV32-NEXT:   [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 2 x s64>) = G_SPLAT_VECTOR [[EVEC]](s64)1484  ; RV32-NEXT:   $v8m2 = COPY [[SPLAT_VECTOR]](<vscale x 2 x s64>)1485  ; RV32-NEXT:   PseudoRET implicit $v8m21486  ;1487  ; RV64-LABEL: name: shufflevector_nxv2i64_01488  ; RV64: bb.1 (%ir-block.0):1489  ; RV64-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 2 x s64>) = G_IMPLICIT_DEF1490  ; RV64-NEXT:   [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 01491  ; RV64-NEXT:   [[EVEC:%[0-9]+]]:_(s64) = G_EXTRACT_VECTOR_ELT [[DEF]](<vscale x 2 x s64>), [[C]](s64)1492  ; RV64-NEXT:   [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 2 x s64>) = G_SPLAT_VECTOR [[EVEC]](s64)1493  ; RV64-NEXT:   $v8m2 = COPY [[SPLAT_VECTOR]](<vscale x 2 x s64>)1494  ; RV64-NEXT:   PseudoRET implicit $v8m21495  %a = shufflevector <vscale x 2 x i64> poison, <vscale x 2 x i64> poison, <vscale x 2 x i32> poison1496  ret <vscale x 2 x i64> %a1497}1498 1499define <vscale x 2 x i64> @shufflevector_nxv2i64_1() {1500  ; RV32-LABEL: name: shufflevector_nxv2i64_11501  ; RV32: bb.1 (%ir-block.0):1502  ; RV32-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 2 x s64>) = G_IMPLICIT_DEF1503  ; RV32-NEXT:   [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 01504  ; RV32-NEXT:   [[EVEC:%[0-9]+]]:_(s64) = G_EXTRACT_VECTOR_ELT [[DEF]](<vscale x 2 x s64>), [[C]](s32)1505  ; RV32-NEXT:   [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 2 x s64>) = G_SPLAT_VECTOR [[EVEC]](s64)1506  ; RV32-NEXT:   $v8m2 = COPY [[SPLAT_VECTOR]](<vscale x 2 x s64>)1507  ; RV32-NEXT:   PseudoRET implicit $v8m21508  ;1509  ; RV64-LABEL: name: shufflevector_nxv2i64_11510  ; RV64: bb.1 (%ir-block.0):1511  ; RV64-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 2 x s64>) = G_IMPLICIT_DEF1512  ; RV64-NEXT:   [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 01513  ; RV64-NEXT:   [[EVEC:%[0-9]+]]:_(s64) = G_EXTRACT_VECTOR_ELT [[DEF]](<vscale x 2 x s64>), [[C]](s64)1514  ; RV64-NEXT:   [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 2 x s64>) = G_SPLAT_VECTOR [[EVEC]](s64)1515  ; RV64-NEXT:   $v8m2 = COPY [[SPLAT_VECTOR]](<vscale x 2 x s64>)1516  ; RV64-NEXT:   PseudoRET implicit $v8m21517  %a = shufflevector <vscale x 2 x i64> poison, <vscale x 2 x i64> poison, <vscale x 2 x i32> poison1518  ret <vscale x 2 x i64> %a1519}1520 1521define <vscale x 2 x i64> @shufflevector_nxv2i64_2(<vscale x 2 x i64> %a) {1522  ; RV32-LABEL: name: shufflevector_nxv2i64_21523  ; RV32: bb.1 (%ir-block.0):1524  ; RV32-NEXT:   liveins: $v8m21525  ; RV32-NEXT: {{  $}}1526  ; RV32-NEXT:   [[COPY:%[0-9]+]]:_(<vscale x 2 x s64>) = COPY $v8m21527  ; RV32-NEXT:   [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 01528  ; RV32-NEXT:   [[EVEC:%[0-9]+]]:_(s64) = G_EXTRACT_VECTOR_ELT [[COPY]](<vscale x 2 x s64>), [[C]](s32)1529  ; RV32-NEXT:   [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 2 x s64>) = G_SPLAT_VECTOR [[EVEC]](s64)1530  ; RV32-NEXT:   $v8m2 = COPY [[SPLAT_VECTOR]](<vscale x 2 x s64>)1531  ; RV32-NEXT:   PseudoRET implicit $v8m21532  ;1533  ; RV64-LABEL: name: shufflevector_nxv2i64_21534  ; RV64: bb.1 (%ir-block.0):1535  ; RV64-NEXT:   liveins: $v8m21536  ; RV64-NEXT: {{  $}}1537  ; RV64-NEXT:   [[COPY:%[0-9]+]]:_(<vscale x 2 x s64>) = COPY $v8m21538  ; RV64-NEXT:   [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 01539  ; RV64-NEXT:   [[EVEC:%[0-9]+]]:_(s64) = G_EXTRACT_VECTOR_ELT [[COPY]](<vscale x 2 x s64>), [[C]](s64)1540  ; RV64-NEXT:   [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 2 x s64>) = G_SPLAT_VECTOR [[EVEC]](s64)1541  ; RV64-NEXT:   $v8m2 = COPY [[SPLAT_VECTOR]](<vscale x 2 x s64>)1542  ; RV64-NEXT:   PseudoRET implicit $v8m21543  %b = shufflevector <vscale x 2 x i64> %a , <vscale x 2 x i64> poison, <vscale x 2 x i32> zeroinitializer1544  ret <vscale x 2 x i64> %b1545}1546 1547define <vscale x 4 x i64> @shufflevector_nxv4i64_0() {1548  ; RV32-LABEL: name: shufflevector_nxv4i64_01549  ; RV32: bb.1 (%ir-block.0):1550  ; RV32-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 4 x s64>) = G_IMPLICIT_DEF1551  ; RV32-NEXT:   [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 01552  ; RV32-NEXT:   [[EVEC:%[0-9]+]]:_(s64) = G_EXTRACT_VECTOR_ELT [[DEF]](<vscale x 4 x s64>), [[C]](s32)1553  ; RV32-NEXT:   [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 4 x s64>) = G_SPLAT_VECTOR [[EVEC]](s64)1554  ; RV32-NEXT:   $v8m4 = COPY [[SPLAT_VECTOR]](<vscale x 4 x s64>)1555  ; RV32-NEXT:   PseudoRET implicit $v8m41556  ;1557  ; RV64-LABEL: name: shufflevector_nxv4i64_01558  ; RV64: bb.1 (%ir-block.0):1559  ; RV64-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 4 x s64>) = G_IMPLICIT_DEF1560  ; RV64-NEXT:   [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 01561  ; RV64-NEXT:   [[EVEC:%[0-9]+]]:_(s64) = G_EXTRACT_VECTOR_ELT [[DEF]](<vscale x 4 x s64>), [[C]](s64)1562  ; RV64-NEXT:   [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 4 x s64>) = G_SPLAT_VECTOR [[EVEC]](s64)1563  ; RV64-NEXT:   $v8m4 = COPY [[SPLAT_VECTOR]](<vscale x 4 x s64>)1564  ; RV64-NEXT:   PseudoRET implicit $v8m41565  %a = shufflevector <vscale x 4 x i64> poison, <vscale x 4 x i64> poison, <vscale x 4 x i32> poison1566  ret <vscale x 4 x i64> %a1567}1568 1569define <vscale x 4 x i64> @shufflevector_nxv4i64_1() {1570  ; RV32-LABEL: name: shufflevector_nxv4i64_11571  ; RV32: bb.1 (%ir-block.0):1572  ; RV32-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 4 x s64>) = G_IMPLICIT_DEF1573  ; RV32-NEXT:   [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 01574  ; RV32-NEXT:   [[EVEC:%[0-9]+]]:_(s64) = G_EXTRACT_VECTOR_ELT [[DEF]](<vscale x 4 x s64>), [[C]](s32)1575  ; RV32-NEXT:   [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 4 x s64>) = G_SPLAT_VECTOR [[EVEC]](s64)1576  ; RV32-NEXT:   $v8m4 = COPY [[SPLAT_VECTOR]](<vscale x 4 x s64>)1577  ; RV32-NEXT:   PseudoRET implicit $v8m41578  ;1579  ; RV64-LABEL: name: shufflevector_nxv4i64_11580  ; RV64: bb.1 (%ir-block.0):1581  ; RV64-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 4 x s64>) = G_IMPLICIT_DEF1582  ; RV64-NEXT:   [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 01583  ; RV64-NEXT:   [[EVEC:%[0-9]+]]:_(s64) = G_EXTRACT_VECTOR_ELT [[DEF]](<vscale x 4 x s64>), [[C]](s64)1584  ; RV64-NEXT:   [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 4 x s64>) = G_SPLAT_VECTOR [[EVEC]](s64)1585  ; RV64-NEXT:   $v8m4 = COPY [[SPLAT_VECTOR]](<vscale x 4 x s64>)1586  ; RV64-NEXT:   PseudoRET implicit $v8m41587  %a = shufflevector <vscale x 4 x i64> poison, <vscale x 4 x i64> poison, <vscale x 4 x i32> poison1588  ret <vscale x 4 x i64> %a1589}1590 1591define <vscale x 4 x i64> @shufflevector_nxv4i64_2(<vscale x 4 x i64> %a) {1592  ; RV32-LABEL: name: shufflevector_nxv4i64_21593  ; RV32: bb.1 (%ir-block.0):1594  ; RV32-NEXT:   liveins: $v8m41595  ; RV32-NEXT: {{  $}}1596  ; RV32-NEXT:   [[COPY:%[0-9]+]]:_(<vscale x 4 x s64>) = COPY $v8m41597  ; RV32-NEXT:   [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 01598  ; RV32-NEXT:   [[EVEC:%[0-9]+]]:_(s64) = G_EXTRACT_VECTOR_ELT [[COPY]](<vscale x 4 x s64>), [[C]](s32)1599  ; RV32-NEXT:   [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 4 x s64>) = G_SPLAT_VECTOR [[EVEC]](s64)1600  ; RV32-NEXT:   $v8m4 = COPY [[SPLAT_VECTOR]](<vscale x 4 x s64>)1601  ; RV32-NEXT:   PseudoRET implicit $v8m41602  ;1603  ; RV64-LABEL: name: shufflevector_nxv4i64_21604  ; RV64: bb.1 (%ir-block.0):1605  ; RV64-NEXT:   liveins: $v8m41606  ; RV64-NEXT: {{  $}}1607  ; RV64-NEXT:   [[COPY:%[0-9]+]]:_(<vscale x 4 x s64>) = COPY $v8m41608  ; RV64-NEXT:   [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 01609  ; RV64-NEXT:   [[EVEC:%[0-9]+]]:_(s64) = G_EXTRACT_VECTOR_ELT [[COPY]](<vscale x 4 x s64>), [[C]](s64)1610  ; RV64-NEXT:   [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 4 x s64>) = G_SPLAT_VECTOR [[EVEC]](s64)1611  ; RV64-NEXT:   $v8m4 = COPY [[SPLAT_VECTOR]](<vscale x 4 x s64>)1612  ; RV64-NEXT:   PseudoRET implicit $v8m41613  %b = shufflevector <vscale x 4 x i64> %a , <vscale x 4 x i64> poison, <vscale x 4 x i32> zeroinitializer1614  ret <vscale x 4 x i64> %b1615}1616 1617define <vscale x 8 x i64> @shufflevector_nxv8i64_0() {1618  ; RV32-LABEL: name: shufflevector_nxv8i64_01619  ; RV32: bb.1 (%ir-block.0):1620  ; RV32-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 8 x s64>) = G_IMPLICIT_DEF1621  ; RV32-NEXT:   [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 01622  ; RV32-NEXT:   [[EVEC:%[0-9]+]]:_(s64) = G_EXTRACT_VECTOR_ELT [[DEF]](<vscale x 8 x s64>), [[C]](s32)1623  ; RV32-NEXT:   [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 8 x s64>) = G_SPLAT_VECTOR [[EVEC]](s64)1624  ; RV32-NEXT:   $v8m8 = COPY [[SPLAT_VECTOR]](<vscale x 8 x s64>)1625  ; RV32-NEXT:   PseudoRET implicit $v8m81626  ;1627  ; RV64-LABEL: name: shufflevector_nxv8i64_01628  ; RV64: bb.1 (%ir-block.0):1629  ; RV64-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 8 x s64>) = G_IMPLICIT_DEF1630  ; RV64-NEXT:   [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 01631  ; RV64-NEXT:   [[EVEC:%[0-9]+]]:_(s64) = G_EXTRACT_VECTOR_ELT [[DEF]](<vscale x 8 x s64>), [[C]](s64)1632  ; RV64-NEXT:   [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 8 x s64>) = G_SPLAT_VECTOR [[EVEC]](s64)1633  ; RV64-NEXT:   $v8m8 = COPY [[SPLAT_VECTOR]](<vscale x 8 x s64>)1634  ; RV64-NEXT:   PseudoRET implicit $v8m81635  %a = shufflevector <vscale x 8 x i64> poison, <vscale x 8 x i64> poison, <vscale x 8 x i32> poison1636  ret <vscale x 8 x i64> %a1637}1638 1639define <vscale x 8 x i64> @shufflevector_nxv8i64_1() {1640  ; RV32-LABEL: name: shufflevector_nxv8i64_11641  ; RV32: bb.1 (%ir-block.0):1642  ; RV32-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 8 x s64>) = G_IMPLICIT_DEF1643  ; RV32-NEXT:   [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 01644  ; RV32-NEXT:   [[EVEC:%[0-9]+]]:_(s64) = G_EXTRACT_VECTOR_ELT [[DEF]](<vscale x 8 x s64>), [[C]](s32)1645  ; RV32-NEXT:   [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 8 x s64>) = G_SPLAT_VECTOR [[EVEC]](s64)1646  ; RV32-NEXT:   $v8m8 = COPY [[SPLAT_VECTOR]](<vscale x 8 x s64>)1647  ; RV32-NEXT:   PseudoRET implicit $v8m81648  ;1649  ; RV64-LABEL: name: shufflevector_nxv8i64_11650  ; RV64: bb.1 (%ir-block.0):1651  ; RV64-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 8 x s64>) = G_IMPLICIT_DEF1652  ; RV64-NEXT:   [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 01653  ; RV64-NEXT:   [[EVEC:%[0-9]+]]:_(s64) = G_EXTRACT_VECTOR_ELT [[DEF]](<vscale x 8 x s64>), [[C]](s64)1654  ; RV64-NEXT:   [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 8 x s64>) = G_SPLAT_VECTOR [[EVEC]](s64)1655  ; RV64-NEXT:   $v8m8 = COPY [[SPLAT_VECTOR]](<vscale x 8 x s64>)1656  ; RV64-NEXT:   PseudoRET implicit $v8m81657  %a = shufflevector <vscale x 8 x i64> poison, <vscale x 8 x i64> poison, <vscale x 8 x i32> poison1658  ret <vscale x 8 x i64> %a1659}1660 1661define <vscale x 8 x i64> @shufflevector_nxv8i64_2(<vscale x 8 x i64> %a) {1662  ; RV32-LABEL: name: shufflevector_nxv8i64_21663  ; RV32: bb.1 (%ir-block.0):1664  ; RV32-NEXT:   liveins: $v8m81665  ; RV32-NEXT: {{  $}}1666  ; RV32-NEXT:   [[COPY:%[0-9]+]]:_(<vscale x 8 x s64>) = COPY $v8m81667  ; RV32-NEXT:   [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 01668  ; RV32-NEXT:   [[EVEC:%[0-9]+]]:_(s64) = G_EXTRACT_VECTOR_ELT [[COPY]](<vscale x 8 x s64>), [[C]](s32)1669  ; RV32-NEXT:   [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 8 x s64>) = G_SPLAT_VECTOR [[EVEC]](s64)1670  ; RV32-NEXT:   $v8m8 = COPY [[SPLAT_VECTOR]](<vscale x 8 x s64>)1671  ; RV32-NEXT:   PseudoRET implicit $v8m81672  ;1673  ; RV64-LABEL: name: shufflevector_nxv8i64_21674  ; RV64: bb.1 (%ir-block.0):1675  ; RV64-NEXT:   liveins: $v8m81676  ; RV64-NEXT: {{  $}}1677  ; RV64-NEXT:   [[COPY:%[0-9]+]]:_(<vscale x 8 x s64>) = COPY $v8m81678  ; RV64-NEXT:   [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 01679  ; RV64-NEXT:   [[EVEC:%[0-9]+]]:_(s64) = G_EXTRACT_VECTOR_ELT [[COPY]](<vscale x 8 x s64>), [[C]](s64)1680  ; RV64-NEXT:   [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 8 x s64>) = G_SPLAT_VECTOR [[EVEC]](s64)1681  ; RV64-NEXT:   $v8m8 = COPY [[SPLAT_VECTOR]](<vscale x 8 x s64>)1682  ; RV64-NEXT:   PseudoRET implicit $v8m81683  %b = shufflevector <vscale x 8 x i64> %a , <vscale x 8 x i64> poison, <vscale x 8 x i32> zeroinitializer1684  ret <vscale x 8 x i64> %b1685}1686 1687define <vscale x 16 x i64> @shufflevector_nxv16i64_0() {1688  ; RV32-LABEL: name: shufflevector_nxv16i64_01689  ; RV32: bb.1 (%ir-block.0):1690  ; RV32-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 16 x s64>) = G_IMPLICIT_DEF1691  ; RV32-NEXT:   [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 01692  ; RV32-NEXT:   [[EVEC:%[0-9]+]]:_(s64) = G_EXTRACT_VECTOR_ELT [[DEF]](<vscale x 16 x s64>), [[C]](s32)1693  ; RV32-NEXT:   [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 16 x s64>) = G_SPLAT_VECTOR [[EVEC]](s64)1694  ; RV32-NEXT:   [[UV:%[0-9]+]]:_(<vscale x 8 x s64>), [[UV1:%[0-9]+]]:_(<vscale x 8 x s64>) = G_UNMERGE_VALUES [[SPLAT_VECTOR]](<vscale x 16 x s64>)1695  ; RV32-NEXT:   $v8m8 = COPY [[UV]](<vscale x 8 x s64>)1696  ; RV32-NEXT:   $v16m8 = COPY [[UV1]](<vscale x 8 x s64>)1697  ; RV32-NEXT:   PseudoRET implicit $v8m8, implicit $v16m81698  ;1699  ; RV64-LABEL: name: shufflevector_nxv16i64_01700  ; RV64: bb.1 (%ir-block.0):1701  ; RV64-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 16 x s64>) = G_IMPLICIT_DEF1702  ; RV64-NEXT:   [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 01703  ; RV64-NEXT:   [[EVEC:%[0-9]+]]:_(s64) = G_EXTRACT_VECTOR_ELT [[DEF]](<vscale x 16 x s64>), [[C]](s64)1704  ; RV64-NEXT:   [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 16 x s64>) = G_SPLAT_VECTOR [[EVEC]](s64)1705  ; RV64-NEXT:   [[UV:%[0-9]+]]:_(<vscale x 8 x s64>), [[UV1:%[0-9]+]]:_(<vscale x 8 x s64>) = G_UNMERGE_VALUES [[SPLAT_VECTOR]](<vscale x 16 x s64>)1706  ; RV64-NEXT:   $v8m8 = COPY [[UV]](<vscale x 8 x s64>)1707  ; RV64-NEXT:   $v16m8 = COPY [[UV1]](<vscale x 8 x s64>)1708  ; RV64-NEXT:   PseudoRET implicit $v8m8, implicit $v16m81709  %a = shufflevector <vscale x 16 x i64> poison, <vscale x 16 x i64> poison, <vscale x 16 x i32> poison1710  ret <vscale x 16 x i64> %a1711}1712 1713define <vscale x 16 x i64> @shufflevector_nxv16i64_1() {1714  ; RV32-LABEL: name: shufflevector_nxv16i64_11715  ; RV32: bb.1 (%ir-block.0):1716  ; RV32-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 16 x s64>) = G_IMPLICIT_DEF1717  ; RV32-NEXT:   [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 01718  ; RV32-NEXT:   [[EVEC:%[0-9]+]]:_(s64) = G_EXTRACT_VECTOR_ELT [[DEF]](<vscale x 16 x s64>), [[C]](s32)1719  ; RV32-NEXT:   [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 16 x s64>) = G_SPLAT_VECTOR [[EVEC]](s64)1720  ; RV32-NEXT:   [[UV:%[0-9]+]]:_(<vscale x 8 x s64>), [[UV1:%[0-9]+]]:_(<vscale x 8 x s64>) = G_UNMERGE_VALUES [[SPLAT_VECTOR]](<vscale x 16 x s64>)1721  ; RV32-NEXT:   $v8m8 = COPY [[UV]](<vscale x 8 x s64>)1722  ; RV32-NEXT:   $v16m8 = COPY [[UV1]](<vscale x 8 x s64>)1723  ; RV32-NEXT:   PseudoRET implicit $v8m8, implicit $v16m81724  ;1725  ; RV64-LABEL: name: shufflevector_nxv16i64_11726  ; RV64: bb.1 (%ir-block.0):1727  ; RV64-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 16 x s64>) = G_IMPLICIT_DEF1728  ; RV64-NEXT:   [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 01729  ; RV64-NEXT:   [[EVEC:%[0-9]+]]:_(s64) = G_EXTRACT_VECTOR_ELT [[DEF]](<vscale x 16 x s64>), [[C]](s64)1730  ; RV64-NEXT:   [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 16 x s64>) = G_SPLAT_VECTOR [[EVEC]](s64)1731  ; RV64-NEXT:   [[UV:%[0-9]+]]:_(<vscale x 8 x s64>), [[UV1:%[0-9]+]]:_(<vscale x 8 x s64>) = G_UNMERGE_VALUES [[SPLAT_VECTOR]](<vscale x 16 x s64>)1732  ; RV64-NEXT:   $v8m8 = COPY [[UV]](<vscale x 8 x s64>)1733  ; RV64-NEXT:   $v16m8 = COPY [[UV1]](<vscale x 8 x s64>)1734  ; RV64-NEXT:   PseudoRET implicit $v8m8, implicit $v16m81735  %a = shufflevector <vscale x 16 x i64> poison, <vscale x 16 x i64> poison, <vscale x 16 x i32> poison1736  ret <vscale x 16 x i64> %a1737}1738 1739define <vscale x 16 x i64> @shufflevector_nxv16i64_2(<vscale x 16 x i64> %a) {1740  ; RV32-LABEL: name: shufflevector_nxv16i64_21741  ; RV32: bb.1 (%ir-block.0):1742  ; RV32-NEXT:   liveins: $v8m8, $v16m81743  ; RV32-NEXT: {{  $}}1744  ; RV32-NEXT:   [[COPY:%[0-9]+]]:_(<vscale x 8 x s64>) = COPY $v8m81745  ; RV32-NEXT:   [[COPY1:%[0-9]+]]:_(<vscale x 8 x s64>) = COPY $v16m81746  ; RV32-NEXT:   [[CONCAT_VECTORS:%[0-9]+]]:_(<vscale x 16 x s64>) = G_CONCAT_VECTORS [[COPY]](<vscale x 8 x s64>), [[COPY1]](<vscale x 8 x s64>)1747  ; RV32-NEXT:   [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 01748  ; RV32-NEXT:   [[EVEC:%[0-9]+]]:_(s64) = G_EXTRACT_VECTOR_ELT [[CONCAT_VECTORS]](<vscale x 16 x s64>), [[C]](s32)1749  ; RV32-NEXT:   [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 16 x s64>) = G_SPLAT_VECTOR [[EVEC]](s64)1750  ; RV32-NEXT:   [[UV:%[0-9]+]]:_(<vscale x 8 x s64>), [[UV1:%[0-9]+]]:_(<vscale x 8 x s64>) = G_UNMERGE_VALUES [[SPLAT_VECTOR]](<vscale x 16 x s64>)1751  ; RV32-NEXT:   $v8m8 = COPY [[UV]](<vscale x 8 x s64>)1752  ; RV32-NEXT:   $v16m8 = COPY [[UV1]](<vscale x 8 x s64>)1753  ; RV32-NEXT:   PseudoRET implicit $v8m8, implicit $v16m81754  ;1755  ; RV64-LABEL: name: shufflevector_nxv16i64_21756  ; RV64: bb.1 (%ir-block.0):1757  ; RV64-NEXT:   liveins: $v8m8, $v16m81758  ; RV64-NEXT: {{  $}}1759  ; RV64-NEXT:   [[COPY:%[0-9]+]]:_(<vscale x 8 x s64>) = COPY $v8m81760  ; RV64-NEXT:   [[COPY1:%[0-9]+]]:_(<vscale x 8 x s64>) = COPY $v16m81761  ; RV64-NEXT:   [[CONCAT_VECTORS:%[0-9]+]]:_(<vscale x 16 x s64>) = G_CONCAT_VECTORS [[COPY]](<vscale x 8 x s64>), [[COPY1]](<vscale x 8 x s64>)1762  ; RV64-NEXT:   [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 01763  ; RV64-NEXT:   [[EVEC:%[0-9]+]]:_(s64) = G_EXTRACT_VECTOR_ELT [[CONCAT_VECTORS]](<vscale x 16 x s64>), [[C]](s64)1764  ; RV64-NEXT:   [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 16 x s64>) = G_SPLAT_VECTOR [[EVEC]](s64)1765  ; RV64-NEXT:   [[UV:%[0-9]+]]:_(<vscale x 8 x s64>), [[UV1:%[0-9]+]]:_(<vscale x 8 x s64>) = G_UNMERGE_VALUES [[SPLAT_VECTOR]](<vscale x 16 x s64>)1766  ; RV64-NEXT:   $v8m8 = COPY [[UV]](<vscale x 8 x s64>)1767  ; RV64-NEXT:   $v16m8 = COPY [[UV1]](<vscale x 8 x s64>)1768  ; RV64-NEXT:   PseudoRET implicit $v8m8, implicit $v16m81769  %b = shufflevector <vscale x 16 x i64> %a , <vscale x 16 x i64> poison, <vscale x 16 x i32> zeroinitializer1770  ret <vscale x 16 x i64> %b1771}1772 1773define <vscale x 1 x ptr> @shufflevector_nxv1p0_0() {1774  ; RV32-LABEL: name: shufflevector_nxv1p0_01775  ; RV32: bb.1 (%ir-block.0):1776  ; RV32-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 1 x p0>) = G_IMPLICIT_DEF1777  ; RV32-NEXT:   [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 01778  ; RV32-NEXT:   [[EVEC:%[0-9]+]]:_(p0) = G_EXTRACT_VECTOR_ELT [[DEF]](<vscale x 1 x p0>), [[C]](s32)1779  ; RV32-NEXT:   [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 1 x p0>) = G_SPLAT_VECTOR [[EVEC]](p0)1780  ; RV32-NEXT:   $v8 = COPY [[SPLAT_VECTOR]](<vscale x 1 x p0>)1781  ; RV32-NEXT:   PseudoRET implicit $v81782  ;1783  ; RV64-LABEL: name: shufflevector_nxv1p0_01784  ; RV64: bb.1 (%ir-block.0):1785  ; RV64-NEXT:   [[DEF:%[0-9]+]]:_(<vscale x 1 x p0>) = G_IMPLICIT_DEF1786  ; RV64-NEXT:   [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 01787  ; RV64-NEXT:   [[EVEC:%[0-9]+]]:_(p0) = G_EXTRACT_VECTOR_ELT [[DEF]](<vscale x 1 x p0>), [[C]](s64)1788  ; RV64-NEXT:   [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 1 x p0>) = G_SPLAT_VECTOR [[EVEC]](p0)1789  ; RV64-NEXT:   $v8 = COPY [[SPLAT_VECTOR]](<vscale x 1 x p0>)1790  ; RV64-NEXT:   PseudoRET implicit $v81791  %a = shufflevector <vscale x 1 x ptr> poison, <vscale x 1 x ptr> poison, <vscale x 1 x i32> zeroinitializer1792  ret <vscale x 1 x ptr> %a1793}1794