789 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -mtriple=riscv64 -mattr=+v -run-pass=legalizer %s -o - | FileCheck %s3 4---5name: splatvector_nxv1i1_06legalized: false7tracksRegLiveness: true8body: |9 bb.1:10 ; CHECK-LABEL: name: splatvector_nxv1i1_011 ; CHECK: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 -112 ; CHECK-NEXT: [[VMSET_VL:%[0-9]+]]:_(<vscale x 1 x s1>) = G_VMSET_VL [[C]](s64)13 ; CHECK-NEXT: [[VMCLR_VL:%[0-9]+]]:_(<vscale x 1 x s1>) = G_VMCLR_VL [[C]](s64)14 ; CHECK-NEXT: $v0 = COPY [[VMCLR_VL]](<vscale x 1 x s1>)15 ; CHECK-NEXT: PseudoRET implicit $v016 %0:_(s1) = G_CONSTANT i1 017 %1:_(<vscale x 1 x s1>) = G_SPLAT_VECTOR %0(s1)18 $v0 = COPY %1(<vscale x 1 x s1>)19 PseudoRET implicit $v020 21...22---23name: splatvector_nxv1i1_124legalized: false25tracksRegLiveness: true26body: |27 bb.1:28 ; CHECK-LABEL: name: splatvector_nxv1i1_129 ; CHECK: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 -130 ; CHECK-NEXT: [[VMSET_VL:%[0-9]+]]:_(<vscale x 1 x s1>) = G_VMSET_VL [[C]](s64)31 ; CHECK-NEXT: [[VMSET_VL1:%[0-9]+]]:_(<vscale x 1 x s1>) = G_VMSET_VL [[C]](s64)32 ; CHECK-NEXT: $v0 = COPY [[VMSET_VL1]](<vscale x 1 x s1>)33 ; CHECK-NEXT: PseudoRET implicit $v034 %0:_(s1) = G_CONSTANT i1 135 %1:_(<vscale x 1 x s1>) = G_SPLAT_VECTOR %0(s1)36 $v0 = COPY %1(<vscale x 1 x s1>)37 PseudoRET implicit $v038 39...40---41name: splatvector_nxv1i1_242legalized: false43tracksRegLiveness: true44body: |45 bb.1:46 liveins: $x1047 48 ; CHECK-LABEL: name: splatvector_nxv1i1_249 ; CHECK: liveins: $x1050 ; CHECK-NEXT: {{ $}}51 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x1052 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 153 ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s64) = G_AND [[COPY]], [[C]]54 ; CHECK-NEXT: [[AND1:%[0-9]+]]:_(s64) = G_AND [[AND]], [[C]]55 ; CHECK-NEXT: [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 1 x s8>) = G_SPLAT_VECTOR [[AND1]](s64)56 ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 057 ; CHECK-NEXT: [[SPLAT_VECTOR1:%[0-9]+]]:_(<vscale x 1 x s8>) = G_SPLAT_VECTOR [[C1]](s64)58 ; CHECK-NEXT: [[ICMP:%[0-9]+]]:_(<vscale x 1 x s1>) = G_ICMP intpred(ne), [[SPLAT_VECTOR]](<vscale x 1 x s8>), [[SPLAT_VECTOR1]]59 ; CHECK-NEXT: $v0 = COPY [[ICMP]](<vscale x 1 x s1>)60 ; CHECK-NEXT: PseudoRET implicit $v061 %0:_(s64) = COPY $x1062 %1:_(s1) = G_TRUNC %0(s64)63 %2:_(<vscale x 1 x s1>) = G_SPLAT_VECTOR %1(s1)64 $v0 = COPY %2(<vscale x 1 x s1>)65 PseudoRET implicit $v066...67---68name: splatvector_nxv2i1_069legalized: false70tracksRegLiveness: true71body: |72 bb.1:73 ; CHECK-LABEL: name: splatvector_nxv2i1_074 ; CHECK: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 -175 ; CHECK-NEXT: [[VMSET_VL:%[0-9]+]]:_(<vscale x 2 x s1>) = G_VMSET_VL [[C]](s64)76 ; CHECK-NEXT: [[VMCLR_VL:%[0-9]+]]:_(<vscale x 2 x s1>) = G_VMCLR_VL [[C]](s64)77 ; CHECK-NEXT: $v0 = COPY [[VMCLR_VL]](<vscale x 2 x s1>)78 ; CHECK-NEXT: PseudoRET implicit $v079 %0:_(s1) = G_CONSTANT i1 080 %1:_(<vscale x 2 x s1>) = G_SPLAT_VECTOR %0(s1)81 $v0 = COPY %1(<vscale x 2 x s1>)82 PseudoRET implicit $v083 84...85---86name: splatvector_nxv2i1_187legalized: false88tracksRegLiveness: true89body: |90 bb.1:91 ; CHECK-LABEL: name: splatvector_nxv2i1_192 ; CHECK: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 -193 ; CHECK-NEXT: [[VMSET_VL:%[0-9]+]]:_(<vscale x 2 x s1>) = G_VMSET_VL [[C]](s64)94 ; CHECK-NEXT: [[VMSET_VL1:%[0-9]+]]:_(<vscale x 2 x s1>) = G_VMSET_VL [[C]](s64)95 ; CHECK-NEXT: $v0 = COPY [[VMSET_VL1]](<vscale x 2 x s1>)96 ; CHECK-NEXT: PseudoRET implicit $v097 %0:_(s1) = G_CONSTANT i1 198 %1:_(<vscale x 2 x s1>) = G_SPLAT_VECTOR %0(s1)99 $v0 = COPY %1(<vscale x 2 x s1>)100 PseudoRET implicit $v0101 102...103---104name: splatvector_nxv2i1_2105legalized: false106tracksRegLiveness: true107body: |108 bb.1:109 liveins: $x10110 111 ; CHECK-LABEL: name: splatvector_nxv2i1_2112 ; CHECK: liveins: $x10113 ; CHECK-NEXT: {{ $}}114 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x10115 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 1116 ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s64) = G_AND [[COPY]], [[C]]117 ; CHECK-NEXT: [[AND1:%[0-9]+]]:_(s64) = G_AND [[AND]], [[C]]118 ; CHECK-NEXT: [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 2 x s8>) = G_SPLAT_VECTOR [[AND1]](s64)119 ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 0120 ; CHECK-NEXT: [[SPLAT_VECTOR1:%[0-9]+]]:_(<vscale x 2 x s8>) = G_SPLAT_VECTOR [[C1]](s64)121 ; CHECK-NEXT: [[ICMP:%[0-9]+]]:_(<vscale x 2 x s1>) = G_ICMP intpred(ne), [[SPLAT_VECTOR]](<vscale x 2 x s8>), [[SPLAT_VECTOR1]]122 ; CHECK-NEXT: $v0 = COPY [[ICMP]](<vscale x 2 x s1>)123 ; CHECK-NEXT: PseudoRET implicit $v0124 %0:_(s64) = COPY $x10125 %1:_(s1) = G_TRUNC %0(s64)126 %2:_(<vscale x 2 x s1>) = G_SPLAT_VECTOR %1(s1)127 $v0 = COPY %2(<vscale x 2 x s1>)128 PseudoRET implicit $v0129...130---131name: splatvector_nxv4i1_0132legalized: false133tracksRegLiveness: true134body: |135 bb.1:136 ; CHECK-LABEL: name: splatvector_nxv4i1_0137 ; CHECK: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 -1138 ; CHECK-NEXT: [[VMSET_VL:%[0-9]+]]:_(<vscale x 4 x s1>) = G_VMSET_VL [[C]](s64)139 ; CHECK-NEXT: [[VMCLR_VL:%[0-9]+]]:_(<vscale x 4 x s1>) = G_VMCLR_VL [[C]](s64)140 ; CHECK-NEXT: $v0 = COPY [[VMCLR_VL]](<vscale x 4 x s1>)141 ; CHECK-NEXT: PseudoRET implicit $v0142 %0:_(s1) = G_CONSTANT i1 0143 %1:_(<vscale x 4 x s1>) = G_SPLAT_VECTOR %0(s1)144 $v0 = COPY %1(<vscale x 4 x s1>)145 PseudoRET implicit $v0146 147...148---149name: splatvector_nxv4i1_1150legalized: false151tracksRegLiveness: true152body: |153 bb.1:154 ; CHECK-LABEL: name: splatvector_nxv4i1_1155 ; CHECK: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 -1156 ; CHECK-NEXT: [[VMSET_VL:%[0-9]+]]:_(<vscale x 4 x s1>) = G_VMSET_VL [[C]](s64)157 ; CHECK-NEXT: [[VMSET_VL1:%[0-9]+]]:_(<vscale x 4 x s1>) = G_VMSET_VL [[C]](s64)158 ; CHECK-NEXT: $v0 = COPY [[VMSET_VL1]](<vscale x 4 x s1>)159 ; CHECK-NEXT: PseudoRET implicit $v0160 %0:_(s1) = G_CONSTANT i1 1161 %1:_(<vscale x 4 x s1>) = G_SPLAT_VECTOR %0(s1)162 $v0 = COPY %1(<vscale x 4 x s1>)163 PseudoRET implicit $v0164 165...166---167name: splatvector_nxv4i1_2168legalized: false169tracksRegLiveness: true170body: |171 bb.1:172 liveins: $x10173 174 ; CHECK-LABEL: name: splatvector_nxv4i1_2175 ; CHECK: liveins: $x10176 ; CHECK-NEXT: {{ $}}177 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x10178 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 1179 ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s64) = G_AND [[COPY]], [[C]]180 ; CHECK-NEXT: [[AND1:%[0-9]+]]:_(s64) = G_AND [[AND]], [[C]]181 ; CHECK-NEXT: [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 4 x s8>) = G_SPLAT_VECTOR [[AND1]](s64)182 ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 0183 ; CHECK-NEXT: [[SPLAT_VECTOR1:%[0-9]+]]:_(<vscale x 4 x s8>) = G_SPLAT_VECTOR [[C1]](s64)184 ; CHECK-NEXT: [[ICMP:%[0-9]+]]:_(<vscale x 4 x s1>) = G_ICMP intpred(ne), [[SPLAT_VECTOR]](<vscale x 4 x s8>), [[SPLAT_VECTOR1]]185 ; CHECK-NEXT: $v0 = COPY [[ICMP]](<vscale x 4 x s1>)186 ; CHECK-NEXT: PseudoRET implicit $v0187 %0:_(s64) = COPY $x10188 %1:_(s1) = G_TRUNC %0(s64)189 %2:_(<vscale x 4 x s1>) = G_SPLAT_VECTOR %1(s1)190 $v0 = COPY %2(<vscale x 4 x s1>)191 PseudoRET implicit $v0192...193---194name: splatvector_nxv8i1_0195legalized: false196tracksRegLiveness: true197body: |198 bb.1:199 ; CHECK-LABEL: name: splatvector_nxv8i1_0200 ; CHECK: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 -1201 ; CHECK-NEXT: [[VMSET_VL:%[0-9]+]]:_(<vscale x 8 x s1>) = G_VMSET_VL [[C]](s64)202 ; CHECK-NEXT: [[VMCLR_VL:%[0-9]+]]:_(<vscale x 8 x s1>) = G_VMCLR_VL [[C]](s64)203 ; CHECK-NEXT: $v0 = COPY [[VMCLR_VL]](<vscale x 8 x s1>)204 ; CHECK-NEXT: PseudoRET implicit $v0205 %0:_(s1) = G_CONSTANT i1 0206 %1:_(<vscale x 8 x s1>) = G_SPLAT_VECTOR %0(s1)207 $v0 = COPY %1(<vscale x 8 x s1>)208 PseudoRET implicit $v0209 210...211---212name: splatvector_nxv8i1_1213legalized: false214tracksRegLiveness: true215body: |216 bb.1:217 ; CHECK-LABEL: name: splatvector_nxv8i1_1218 ; CHECK: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 -1219 ; CHECK-NEXT: [[VMSET_VL:%[0-9]+]]:_(<vscale x 8 x s1>) = G_VMSET_VL [[C]](s64)220 ; CHECK-NEXT: [[VMSET_VL1:%[0-9]+]]:_(<vscale x 8 x s1>) = G_VMSET_VL [[C]](s64)221 ; CHECK-NEXT: $v0 = COPY [[VMSET_VL1]](<vscale x 8 x s1>)222 ; CHECK-NEXT: PseudoRET implicit $v0223 %0:_(s1) = G_CONSTANT i1 1224 %1:_(<vscale x 8 x s1>) = G_SPLAT_VECTOR %0(s1)225 $v0 = COPY %1(<vscale x 8 x s1>)226 PseudoRET implicit $v0227 228...229---230name: splatvector_nxv8i1_2231legalized: false232tracksRegLiveness: true233body: |234 bb.1:235 liveins: $x10236 237 ; CHECK-LABEL: name: splatvector_nxv8i1_2238 ; CHECK: liveins: $x10239 ; CHECK-NEXT: {{ $}}240 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x10241 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 1242 ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s64) = G_AND [[COPY]], [[C]]243 ; CHECK-NEXT: [[AND1:%[0-9]+]]:_(s64) = G_AND [[AND]], [[C]]244 ; CHECK-NEXT: [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 8 x s8>) = G_SPLAT_VECTOR [[AND1]](s64)245 ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 0246 ; CHECK-NEXT: [[SPLAT_VECTOR1:%[0-9]+]]:_(<vscale x 8 x s8>) = G_SPLAT_VECTOR [[C1]](s64)247 ; CHECK-NEXT: [[ICMP:%[0-9]+]]:_(<vscale x 8 x s1>) = G_ICMP intpred(ne), [[SPLAT_VECTOR]](<vscale x 8 x s8>), [[SPLAT_VECTOR1]]248 ; CHECK-NEXT: $v0 = COPY [[ICMP]](<vscale x 8 x s1>)249 ; CHECK-NEXT: PseudoRET implicit $v0250 %0:_(s64) = COPY $x10251 %1:_(s1) = G_TRUNC %0(s64)252 %2:_(<vscale x 8 x s1>) = G_SPLAT_VECTOR %1(s1)253 $v0 = COPY %2(<vscale x 8 x s1>)254 PseudoRET implicit $v0255...256---257name: splatvector_nxv16i1_0258legalized: false259tracksRegLiveness: true260body: |261 bb.1:262 ; CHECK-LABEL: name: splatvector_nxv16i1_0263 ; CHECK: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 -1264 ; CHECK-NEXT: [[VMSET_VL:%[0-9]+]]:_(<vscale x 16 x s1>) = G_VMSET_VL [[C]](s64)265 ; CHECK-NEXT: [[VMCLR_VL:%[0-9]+]]:_(<vscale x 16 x s1>) = G_VMCLR_VL [[C]](s64)266 ; CHECK-NEXT: $v0 = COPY [[VMCLR_VL]](<vscale x 16 x s1>)267 ; CHECK-NEXT: PseudoRET implicit $v0268 %0:_(s1) = G_CONSTANT i1 0269 %1:_(<vscale x 16 x s1>) = G_SPLAT_VECTOR %0(s1)270 $v0 = COPY %1(<vscale x 16 x s1>)271 PseudoRET implicit $v0272 273...274---275name: splatvector_nxv16i1_1276legalized: false277tracksRegLiveness: true278body: |279 bb.1:280 ; CHECK-LABEL: name: splatvector_nxv16i1_1281 ; CHECK: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 -1282 ; CHECK-NEXT: [[VMSET_VL:%[0-9]+]]:_(<vscale x 16 x s1>) = G_VMSET_VL [[C]](s64)283 ; CHECK-NEXT: [[VMSET_VL1:%[0-9]+]]:_(<vscale x 16 x s1>) = G_VMSET_VL [[C]](s64)284 ; CHECK-NEXT: $v0 = COPY [[VMSET_VL1]](<vscale x 16 x s1>)285 ; CHECK-NEXT: PseudoRET implicit $v0286 %0:_(s1) = G_CONSTANT i1 1287 %1:_(<vscale x 16 x s1>) = G_SPLAT_VECTOR %0(s1)288 $v0 = COPY %1(<vscale x 16 x s1>)289 PseudoRET implicit $v0290 291...292---293name: splatvector_nxv16i1_2294legalized: false295tracksRegLiveness: true296body: |297 bb.1:298 liveins: $x10299 300 ; CHECK-LABEL: name: splatvector_nxv16i1_2301 ; CHECK: liveins: $x10302 ; CHECK-NEXT: {{ $}}303 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x10304 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 1305 ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s64) = G_AND [[COPY]], [[C]]306 ; CHECK-NEXT: [[AND1:%[0-9]+]]:_(s64) = G_AND [[AND]], [[C]]307 ; CHECK-NEXT: [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 16 x s8>) = G_SPLAT_VECTOR [[AND1]](s64)308 ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 0309 ; CHECK-NEXT: [[SPLAT_VECTOR1:%[0-9]+]]:_(<vscale x 16 x s8>) = G_SPLAT_VECTOR [[C1]](s64)310 ; CHECK-NEXT: [[ICMP:%[0-9]+]]:_(<vscale x 16 x s1>) = G_ICMP intpred(ne), [[SPLAT_VECTOR]](<vscale x 16 x s8>), [[SPLAT_VECTOR1]]311 ; CHECK-NEXT: $v0 = COPY [[ICMP]](<vscale x 16 x s1>)312 ; CHECK-NEXT: PseudoRET implicit $v0313 %0:_(s64) = COPY $x10314 %1:_(s1) = G_TRUNC %0(s64)315 %2:_(<vscale x 16 x s1>) = G_SPLAT_VECTOR %1(s1)316 $v0 = COPY %2(<vscale x 16 x s1>)317 PseudoRET implicit $v0318...319---320name: splatvector_nxv32i1_0321legalized: false322tracksRegLiveness: true323body: |324 bb.1:325 ; CHECK-LABEL: name: splatvector_nxv32i1_0326 ; CHECK: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 -1327 ; CHECK-NEXT: [[VMSET_VL:%[0-9]+]]:_(<vscale x 32 x s1>) = G_VMSET_VL [[C]](s64)328 ; CHECK-NEXT: [[VMCLR_VL:%[0-9]+]]:_(<vscale x 32 x s1>) = G_VMCLR_VL [[C]](s64)329 ; CHECK-NEXT: $v0 = COPY [[VMCLR_VL]](<vscale x 32 x s1>)330 ; CHECK-NEXT: PseudoRET implicit $v0331 %0:_(s1) = G_CONSTANT i1 0332 %1:_(<vscale x 32 x s1>) = G_SPLAT_VECTOR %0(s1)333 $v0 = COPY %1(<vscale x 32 x s1>)334 PseudoRET implicit $v0335 336...337---338name: splatvector_nxv32i1_1339legalized: false340tracksRegLiveness: true341body: |342 bb.1:343 ; CHECK-LABEL: name: splatvector_nxv32i1_1344 ; CHECK: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 -1345 ; CHECK-NEXT: [[VMSET_VL:%[0-9]+]]:_(<vscale x 32 x s1>) = G_VMSET_VL [[C]](s64)346 ; CHECK-NEXT: [[VMSET_VL1:%[0-9]+]]:_(<vscale x 32 x s1>) = G_VMSET_VL [[C]](s64)347 ; CHECK-NEXT: $v0 = COPY [[VMSET_VL1]](<vscale x 32 x s1>)348 ; CHECK-NEXT: PseudoRET implicit $v0349 %0:_(s1) = G_CONSTANT i1 1350 %1:_(<vscale x 32 x s1>) = G_SPLAT_VECTOR %0(s1)351 $v0 = COPY %1(<vscale x 32 x s1>)352 PseudoRET implicit $v0353 354...355---356name: splatvector_nxv32i1_2357legalized: false358tracksRegLiveness: true359body: |360 bb.1:361 liveins: $x10362 363 ; CHECK-LABEL: name: splatvector_nxv32i1_2364 ; CHECK: liveins: $x10365 ; CHECK-NEXT: {{ $}}366 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x10367 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 1368 ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s64) = G_AND [[COPY]], [[C]]369 ; CHECK-NEXT: [[AND1:%[0-9]+]]:_(s64) = G_AND [[AND]], [[C]]370 ; CHECK-NEXT: [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 32 x s8>) = G_SPLAT_VECTOR [[AND1]](s64)371 ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 0372 ; CHECK-NEXT: [[SPLAT_VECTOR1:%[0-9]+]]:_(<vscale x 32 x s8>) = G_SPLAT_VECTOR [[C1]](s64)373 ; CHECK-NEXT: [[ICMP:%[0-9]+]]:_(<vscale x 32 x s1>) = G_ICMP intpred(ne), [[SPLAT_VECTOR]](<vscale x 32 x s8>), [[SPLAT_VECTOR1]]374 ; CHECK-NEXT: $v0 = COPY [[ICMP]](<vscale x 32 x s1>)375 ; CHECK-NEXT: PseudoRET implicit $v0376 %0:_(s64) = COPY $x10377 %1:_(s1) = G_TRUNC %0(s64)378 %2:_(<vscale x 32 x s1>) = G_SPLAT_VECTOR %1(s1)379 $v0 = COPY %2(<vscale x 32 x s1>)380 PseudoRET implicit $v0381...382---383name: splatvector_nxv64i1_0384legalized: false385tracksRegLiveness: true386body: |387 bb.1:388 ; CHECK-LABEL: name: splatvector_nxv64i1_0389 ; CHECK: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 -1390 ; CHECK-NEXT: [[VMSET_VL:%[0-9]+]]:_(<vscale x 64 x s1>) = G_VMSET_VL [[C]](s64)391 ; CHECK-NEXT: [[VMCLR_VL:%[0-9]+]]:_(<vscale x 64 x s1>) = G_VMCLR_VL [[C]](s64)392 ; CHECK-NEXT: $v0 = COPY [[VMCLR_VL]](<vscale x 64 x s1>)393 ; CHECK-NEXT: PseudoRET implicit $v0394 %0:_(s1) = G_CONSTANT i1 0395 %1:_(<vscale x 64 x s1>) = G_SPLAT_VECTOR %0(s1)396 $v0 = COPY %1(<vscale x 64 x s1>)397 PseudoRET implicit $v0398 399...400---401name: splatvector_nxv64i1_1402legalized: false403tracksRegLiveness: true404body: |405 bb.1:406 ; CHECK-LABEL: name: splatvector_nxv64i1_1407 ; CHECK: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 -1408 ; CHECK-NEXT: [[VMSET_VL:%[0-9]+]]:_(<vscale x 64 x s1>) = G_VMSET_VL [[C]](s64)409 ; CHECK-NEXT: [[VMSET_VL1:%[0-9]+]]:_(<vscale x 64 x s1>) = G_VMSET_VL [[C]](s64)410 ; CHECK-NEXT: $v0 = COPY [[VMSET_VL1]](<vscale x 64 x s1>)411 ; CHECK-NEXT: PseudoRET implicit $v0412 %0:_(s1) = G_CONSTANT i1 1413 %1:_(<vscale x 64 x s1>) = G_SPLAT_VECTOR %0(s1)414 $v0 = COPY %1(<vscale x 64 x s1>)415 PseudoRET implicit $v0416 417...418---419name: splatvector_nxv64i1_2420legalized: false421tracksRegLiveness: true422body: |423 bb.1:424 liveins: $x10425 426 ; CHECK-LABEL: name: splatvector_nxv64i1_2427 ; CHECK: liveins: $x10428 ; CHECK-NEXT: {{ $}}429 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x10430 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 1431 ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s64) = G_AND [[COPY]], [[C]]432 ; CHECK-NEXT: [[AND1:%[0-9]+]]:_(s64) = G_AND [[AND]], [[C]]433 ; CHECK-NEXT: [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 64 x s8>) = G_SPLAT_VECTOR [[AND1]](s64)434 ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 0435 ; CHECK-NEXT: [[SPLAT_VECTOR1:%[0-9]+]]:_(<vscale x 64 x s8>) = G_SPLAT_VECTOR [[C1]](s64)436 ; CHECK-NEXT: [[ICMP:%[0-9]+]]:_(<vscale x 64 x s1>) = G_ICMP intpred(ne), [[SPLAT_VECTOR]](<vscale x 64 x s8>), [[SPLAT_VECTOR1]]437 ; CHECK-NEXT: $v0 = COPY [[ICMP]](<vscale x 64 x s1>)438 ; CHECK-NEXT: PseudoRET implicit $v0439 %0:_(s64) = COPY $x10440 %1:_(s1) = G_TRUNC %0(s64)441 %2:_(<vscale x 64 x s1>) = G_SPLAT_VECTOR %1(s1)442 $v0 = COPY %2(<vscale x 64 x s1>)443 PseudoRET implicit $v0444...445 446---447name: splatvector_nxv1i8448legalized: false449tracksRegLiveness: true450body: |451 bb.1:452 ; CHECK-LABEL: name: splatvector_nxv1i8453 ; CHECK: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 0454 ; CHECK-NEXT: [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 1 x s8>) = G_SPLAT_VECTOR [[C]](s64)455 ; CHECK-NEXT: $v8 = COPY [[SPLAT_VECTOR]](<vscale x 1 x s8>)456 ; CHECK-NEXT: PseudoRET implicit $v8457 %0:_(<vscale x 1 x s8>) = G_IMPLICIT_DEF458 %1:_(s8) = G_CONSTANT i8 0459 %2:_(<vscale x 1 x s8>) = G_SPLAT_VECTOR %1(s8)460 $v8 = COPY %2(<vscale x 1 x s8>)461 PseudoRET implicit $v8462 463...464 465---466name: splatvector_nxv2i8467legalized: false468tracksRegLiveness: true469body: |470 bb.1:471 ; CHECK-LABEL: name: splatvector_nxv2i8472 ; CHECK: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 0473 ; CHECK-NEXT: [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 2 x s8>) = G_SPLAT_VECTOR [[C]](s64)474 ; CHECK-NEXT: $v8 = COPY [[SPLAT_VECTOR]](<vscale x 2 x s8>)475 ; CHECK-NEXT: PseudoRET implicit $v8476 %0:_(<vscale x 2 x s8>) = G_IMPLICIT_DEF477 %1:_(s8) = G_CONSTANT i8 0478 %2:_(<vscale x 2 x s8>) = G_SPLAT_VECTOR %1(s8)479 $v8 = COPY %2(<vscale x 2 x s8>)480 PseudoRET implicit $v8481 482...483---484name: splatvector_nxv4i8485legalized: false486tracksRegLiveness: true487body: |488 bb.1:489 ; CHECK-LABEL: name: splatvector_nxv4i8490 ; CHECK: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 0491 ; CHECK-NEXT: [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 4 x s8>) = G_SPLAT_VECTOR [[C]](s64)492 ; CHECK-NEXT: $v8 = COPY [[SPLAT_VECTOR]](<vscale x 4 x s8>)493 ; CHECK-NEXT: PseudoRET implicit $v8494 %0:_(<vscale x 4 x s8>) = G_IMPLICIT_DEF495 %1:_(s8) = G_CONSTANT i8 0496 %2:_(<vscale x 4 x s8>) = G_SPLAT_VECTOR %1(s8)497 $v8 = COPY %2(<vscale x 4 x s8>)498 PseudoRET implicit $v8499 500...501---502name: splatvector_nxv8i8503legalized: false504tracksRegLiveness: true505body: |506 bb.1:507 ; CHECK-LABEL: name: splatvector_nxv8i8508 ; CHECK: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 0509 ; CHECK-NEXT: [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 8 x s8>) = G_SPLAT_VECTOR [[C]](s64)510 ; CHECK-NEXT: $v8 = COPY [[SPLAT_VECTOR]](<vscale x 8 x s8>)511 ; CHECK-NEXT: PseudoRET implicit $v8512 %0:_(<vscale x 8 x s8>) = G_IMPLICIT_DEF513 %1:_(s8) = G_CONSTANT i8 0514 %2:_(<vscale x 8 x s8>) = G_SPLAT_VECTOR %1(s8)515 $v8 = COPY %2(<vscale x 8 x s8>)516 PseudoRET implicit $v8517 518...519---520name: splatvector_nxv16i8521legalized: false522tracksRegLiveness: true523body: |524 bb.1:525 ; CHECK-LABEL: name: splatvector_nxv16i8526 ; CHECK: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 0527 ; CHECK-NEXT: [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 16 x s8>) = G_SPLAT_VECTOR [[C]](s64)528 ; CHECK-NEXT: $v8m2 = COPY [[SPLAT_VECTOR]](<vscale x 16 x s8>)529 ; CHECK-NEXT: PseudoRET implicit $v8m2530 %0:_(<vscale x 16 x s8>) = G_IMPLICIT_DEF531 %1:_(s8) = G_CONSTANT i8 0532 %2:_(<vscale x 16 x s8>) = G_SPLAT_VECTOR %1(s8)533 $v8m2 = COPY %2(<vscale x 16 x s8>)534 PseudoRET implicit $v8m2535 536...537---538name: splatvector_nxv1i16539legalized: false540tracksRegLiveness: true541body: |542 bb.1:543 ; CHECK-LABEL: name: splatvector_nxv1i16544 ; CHECK: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 0545 ; CHECK-NEXT: [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 1 x s16>) = G_SPLAT_VECTOR [[C]](s64)546 ; CHECK-NEXT: $v8 = COPY [[SPLAT_VECTOR]](<vscale x 1 x s16>)547 ; CHECK-NEXT: PseudoRET implicit $v8548 %0:_(<vscale x 1 x s16>) = G_IMPLICIT_DEF549 %1:_(s16) = G_CONSTANT i16 0550 %2:_(<vscale x 1 x s16>) = G_SPLAT_VECTOR %1(s16)551 $v8 = COPY %2(<vscale x 1 x s16>)552 PseudoRET implicit $v8553 554...555---556name: splatvector_nxv2i16557legalized: false558tracksRegLiveness: true559body: |560 bb.1:561 ; CHECK-LABEL: name: splatvector_nxv2i16562 ; CHECK: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 0563 ; CHECK-NEXT: [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 2 x s16>) = G_SPLAT_VECTOR [[C]](s64)564 ; CHECK-NEXT: $v8 = COPY [[SPLAT_VECTOR]](<vscale x 2 x s16>)565 ; CHECK-NEXT: PseudoRET implicit $v8566 %0:_(<vscale x 2 x s16>) = G_IMPLICIT_DEF567 %1:_(s16) = G_CONSTANT i16 0568 %2:_(<vscale x 2 x s16>) = G_SPLAT_VECTOR %1(s16)569 $v8 = COPY %2(<vscale x 2 x s16>)570 PseudoRET implicit $v8571 572...573---574name: splatvector_nxv4i16575legalized: false576tracksRegLiveness: true577body: |578 bb.1:579 ; CHECK-LABEL: name: splatvector_nxv4i16580 ; CHECK: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 0581 ; CHECK-NEXT: [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 4 x s16>) = G_SPLAT_VECTOR [[C]](s64)582 ; CHECK-NEXT: $v8 = COPY [[SPLAT_VECTOR]](<vscale x 4 x s16>)583 ; CHECK-NEXT: PseudoRET implicit $v8584 %0:_(<vscale x 4 x s16>) = G_IMPLICIT_DEF585 %1:_(s16) = G_CONSTANT i16 0586 %2:_(<vscale x 4 x s16>) = G_SPLAT_VECTOR %1(s16)587 $v8 = COPY %2(<vscale x 4 x s16>)588 PseudoRET implicit $v8589 590...591---592name: splatvector_nxv8i16593legalized: false594tracksRegLiveness: true595body: |596 bb.1:597 ; CHECK-LABEL: name: splatvector_nxv8i16598 ; CHECK: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 0599 ; CHECK-NEXT: [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 8 x s16>) = G_SPLAT_VECTOR [[C]](s64)600 ; CHECK-NEXT: $v8m2 = COPY [[SPLAT_VECTOR]](<vscale x 8 x s16>)601 ; CHECK-NEXT: PseudoRET implicit $v8m2602 %0:_(<vscale x 8 x s16>) = G_IMPLICIT_DEF603 %1:_(s16) = G_CONSTANT i16 0604 %2:_(<vscale x 8 x s16>) = G_SPLAT_VECTOR %1(s16)605 $v8m2 = COPY %2(<vscale x 8 x s16>)606 PseudoRET implicit $v8m2607 608...609---610name: splatvector_nxv16i16611legalized: false612tracksRegLiveness: true613body: |614 bb.1:615 ; CHECK-LABEL: name: splatvector_nxv16i16616 ; CHECK: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 0617 ; CHECK-NEXT: [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 16 x s16>) = G_SPLAT_VECTOR [[C]](s64)618 ; CHECK-NEXT: $v8m4 = COPY [[SPLAT_VECTOR]](<vscale x 16 x s16>)619 ; CHECK-NEXT: PseudoRET implicit $v8m4620 %0:_(<vscale x 16 x s16>) = G_IMPLICIT_DEF621 %1:_(s16) = G_CONSTANT i16 0622 %2:_(<vscale x 16 x s16>) = G_SPLAT_VECTOR %1(s16)623 $v8m4 = COPY %2(<vscale x 16 x s16>)624 PseudoRET implicit $v8m4625 626...627---628name: splatvector_nxv1i32629legalized: false630tracksRegLiveness: true631body: |632 bb.1:633 ; CHECK-LABEL: name: splatvector_nxv1i32634 ; CHECK: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 0635 ; CHECK-NEXT: [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 1 x s32>) = G_SPLAT_VECTOR [[C]](s64)636 ; CHECK-NEXT: $v8 = COPY [[SPLAT_VECTOR]](<vscale x 1 x s32>)637 ; CHECK-NEXT: PseudoRET implicit $v8638 %0:_(<vscale x 1 x s32>) = G_IMPLICIT_DEF639 %1:_(s32) = G_CONSTANT i32 0640 %2:_(<vscale x 1 x s32>) = G_SPLAT_VECTOR %1(s32)641 $v8 = COPY %2(<vscale x 1 x s32>)642 PseudoRET implicit $v8643 644...645---646name: splatvector_nxv2i32647legalized: false648tracksRegLiveness: true649body: |650 bb.1:651 ; CHECK-LABEL: name: splatvector_nxv2i32652 ; CHECK: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 0653 ; CHECK-NEXT: [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 2 x s32>) = G_SPLAT_VECTOR [[C]](s64)654 ; CHECK-NEXT: $v8 = COPY [[SPLAT_VECTOR]](<vscale x 2 x s32>)655 ; CHECK-NEXT: PseudoRET implicit $v8656 %0:_(<vscale x 2 x s32>) = G_IMPLICIT_DEF657 %1:_(s32) = G_CONSTANT i32 0658 %2:_(<vscale x 2 x s32>) = G_SPLAT_VECTOR %1(s32)659 $v8 = COPY %2(<vscale x 2 x s32>)660 PseudoRET implicit $v8661 662...663---664name: splatvector_nxv4i32665legalized: false666tracksRegLiveness: true667body: |668 bb.1:669 ; CHECK-LABEL: name: splatvector_nxv4i32670 ; CHECK: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 0671 ; CHECK-NEXT: [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 4 x s32>) = G_SPLAT_VECTOR [[C]](s64)672 ; CHECK-NEXT: $v8m2 = COPY [[SPLAT_VECTOR]](<vscale x 4 x s32>)673 ; CHECK-NEXT: PseudoRET implicit $v8m2674 %0:_(<vscale x 4 x s32>) = G_IMPLICIT_DEF675 %1:_(s32) = G_CONSTANT i32 0676 %2:_(<vscale x 4 x s32>) = G_SPLAT_VECTOR %1(s32)677 $v8m2 = COPY %2(<vscale x 4 x s32>)678 PseudoRET implicit $v8m2679 680...681---682name: splatvector_nxv8i32683legalized: false684tracksRegLiveness: true685body: |686 bb.1:687 ; CHECK-LABEL: name: splatvector_nxv8i32688 ; CHECK: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 0689 ; CHECK-NEXT: [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 8 x s32>) = G_SPLAT_VECTOR [[C]](s64)690 ; CHECK-NEXT: $v8m4 = COPY [[SPLAT_VECTOR]](<vscale x 8 x s32>)691 ; CHECK-NEXT: PseudoRET implicit $v8m4692 %0:_(<vscale x 8 x s32>) = G_IMPLICIT_DEF693 %1:_(s32) = G_CONSTANT i32 0694 %2:_(<vscale x 8 x s32>) = G_SPLAT_VECTOR %1(s32)695 $v8m4 = COPY %2(<vscale x 8 x s32>)696 PseudoRET implicit $v8m4697 698...699---700name: splatvector_nxv16i32701legalized: false702tracksRegLiveness: true703body: |704 bb.1:705 ; CHECK-LABEL: name: splatvector_nxv16i32706 ; CHECK: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 0707 ; CHECK-NEXT: [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 16 x s32>) = G_SPLAT_VECTOR [[C]](s64)708 ; CHECK-NEXT: $v8m8 = COPY [[SPLAT_VECTOR]](<vscale x 16 x s32>)709 ; CHECK-NEXT: PseudoRET implicit $v8m8710 %0:_(<vscale x 16 x s32>) = G_IMPLICIT_DEF711 %1:_(s32) = G_CONSTANT i32 0712 %2:_(<vscale x 16 x s32>) = G_SPLAT_VECTOR %1(s32)713 $v8m8 = COPY %2(<vscale x 16 x s32>)714 PseudoRET implicit $v8m8715 716...717---718name: splatvector_nxv1i64719legalized: false720tracksRegLiveness: true721body: |722 bb.1:723 ; CHECK-LABEL: name: splatvector_nxv1i64724 ; CHECK: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 0725 ; CHECK-NEXT: [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 1 x s64>) = G_SPLAT_VECTOR [[C]](s64)726 ; CHECK-NEXT: $v8 = COPY [[SPLAT_VECTOR]](<vscale x 1 x s64>)727 ; CHECK-NEXT: PseudoRET implicit $v8728 %0:_(<vscale x 1 x s64>) = G_IMPLICIT_DEF729 %1:_(s64) = G_CONSTANT i64 0730 %2:_(<vscale x 1 x s64>) = G_SPLAT_VECTOR %1(s64)731 $v8 = COPY %2(<vscale x 1 x s64>)732 PseudoRET implicit $v8733 734...735---736name: splatvector_nxv2i64737legalized: false738tracksRegLiveness: true739body: |740 bb.1:741 ; CHECK-LABEL: name: splatvector_nxv2i64742 ; CHECK: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 0743 ; CHECK-NEXT: [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 2 x s64>) = G_SPLAT_VECTOR [[C]](s64)744 ; CHECK-NEXT: $v8m2 = COPY [[SPLAT_VECTOR]](<vscale x 2 x s64>)745 ; CHECK-NEXT: PseudoRET implicit $v8m2746 %0:_(<vscale x 2 x s64>) = G_IMPLICIT_DEF747 %1:_(s64) = G_CONSTANT i64 0748 %2:_(<vscale x 2 x s64>) = G_SPLAT_VECTOR %1(s64)749 $v8m2 = COPY %2(<vscale x 2 x s64>)750 PseudoRET implicit $v8m2751 752...753---754name: splatvector_nxv4i64755legalized: false756tracksRegLiveness: true757body: |758 bb.1:759 ; CHECK-LABEL: name: splatvector_nxv4i64760 ; CHECK: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 0761 ; CHECK-NEXT: [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 4 x s64>) = G_SPLAT_VECTOR [[C]](s64)762 ; CHECK-NEXT: $v8m4 = COPY [[SPLAT_VECTOR]](<vscale x 4 x s64>)763 ; CHECK-NEXT: PseudoRET implicit $v8m4764 %0:_(<vscale x 4 x s64>) = G_IMPLICIT_DEF765 %1:_(s64) = G_CONSTANT i64 0766 %2:_(<vscale x 4 x s64>) = G_SPLAT_VECTOR %1(s64)767 $v8m4 = COPY %2(<vscale x 4 x s64>)768 PseudoRET implicit $v8m4769 770...771---772name: splatvector_nxv8i64773legalized: false774tracksRegLiveness: true775body: |776 bb.1:777 ; CHECK-LABEL: name: splatvector_nxv8i64778 ; CHECK: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 0779 ; CHECK-NEXT: [[SPLAT_VECTOR:%[0-9]+]]:_(<vscale x 8 x s64>) = G_SPLAT_VECTOR [[C]](s64)780 ; CHECK-NEXT: $v8m8 = COPY [[SPLAT_VECTOR]](<vscale x 8 x s64>)781 ; CHECK-NEXT: PseudoRET implicit $v8m8782 %0:_(<vscale x 8 x s64>) = G_IMPLICIT_DEF783 %1:_(s64) = G_CONSTANT i64 0784 %2:_(<vscale x 8 x s64>) = G_SPLAT_VECTOR %1(s64)785 $v8m8 = COPY %2(<vscale x 8 x s64>)786 PseudoRET implicit $v8m8787 788...789