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