520 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -run-pass=aarch64-prelegalizer-combiner -verify-machineinstrs -mtriple aarch64-unknown-unknown %s -o - | FileCheck %s3 4---5name: zext_trunc_nuw6body: |7 bb.0:8 liveins: $w0, $w19 ; CHECK-LABEL: name: zext_trunc_nuw10 ; CHECK: liveins: $w0, $w111 ; CHECK-NEXT: {{ $}}12 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x013 ; CHECK-NEXT: $x1 = COPY [[COPY]](s64)14 %0:_(s64) = COPY $x015 %2:_(s32) = nuw G_TRUNC %016 %3:_(s64) = G_ZEXT %217 $x1 = COPY %318...19---20name: zext_trunc_nsw21body: |22 bb.0:23 liveins: $w0, $w124 ; CHECK-LABEL: name: zext_trunc_nsw25 ; CHECK: liveins: $w0, $w126 ; CHECK-NEXT: {{ $}}27 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x028 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s32) = nsw G_TRUNC [[COPY]](s64)29 ; CHECK-NEXT: [[ZEXT:%[0-9]+]]:_(s64) = G_ZEXT [[TRUNC]](s32)30 ; CHECK-NEXT: $x1 = COPY [[ZEXT]](s64)31 %0:_(s64) = COPY $x032 %2:_(s32) = nsw G_TRUNC %033 %3:_(s64) = G_ZEXT %234 $x1 = COPY %335...36---37name: zext_trunc38body: |39 bb.0:40 liveins: $w0, $w141 ; CHECK-LABEL: name: zext_trunc42 ; CHECK: liveins: $w0, $w143 ; CHECK-NEXT: {{ $}}44 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x045 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s32) = G_TRUNC [[COPY]](s64)46 ; CHECK-NEXT: [[ZEXT:%[0-9]+]]:_(s64) = G_ZEXT [[TRUNC]](s32)47 ; CHECK-NEXT: $x1 = COPY [[ZEXT]](s64)48 %0:_(s64) = COPY $x049 %2:_(s32) = G_TRUNC %050 %3:_(s64) = G_ZEXT %251 $x1 = COPY %352...53---54name: zext_trunc_nuw_vector55body: |56 bb.0:57 liveins: $w0, $w158 ; CHECK-LABEL: name: zext_trunc_nuw_vector59 ; CHECK: liveins: $w0, $w160 ; CHECK-NEXT: {{ $}}61 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $w062 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $w163 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32)64 ; CHECK-NEXT: [[TRUNC1:%[0-9]+]]:_(s16) = G_TRUNC [[COPY1]](s32)65 ; CHECK-NEXT: %trunc:_(<4 x s16>) = G_BUILD_VECTOR [[TRUNC]](s16), [[TRUNC1]](s16), [[TRUNC]](s16), [[TRUNC1]](s16)66 ; CHECK-NEXT: %zext:_(<4 x s32>) = G_ZEXT %trunc(<4 x s16>)67 ; CHECK-NEXT: $q0 = COPY %zext(<4 x s32>)68 ; CHECK-NEXT: RET_ReallyLR implicit $w069 %0:_(s32) = COPY $w070 %1:_(s32) = COPY $w171 %2:_(s32) = COPY $w272 %3:_(s32) = COPY $w373 %bv0:_(<4 x s32>) = G_BUILD_VECTOR %0:_(s32), %1:_(s32), %0:_(s32), %1:_(s32)74 %trunc:_(<4 x s16>) = nuw G_TRUNC %bv075 %zext:_(<4 x s32>) = G_ZEXT %trunc76 $q0 = COPY %zext(<4 x s32>)77 RET_ReallyLR implicit $w078...79---80name: sext_trunc_nsw81body: |82 bb.0:83 liveins: $w0, $w184 ; CHECK-LABEL: name: sext_trunc_nsw85 ; CHECK: liveins: $w0, $w186 ; CHECK-NEXT: {{ $}}87 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x088 ; CHECK-NEXT: $x1 = COPY [[COPY]](s64)89 %0:_(s64) = COPY $x090 %2:_(s32) = nsw G_TRUNC %091 %3:_(s64) = G_SEXT %292 $x1 = COPY %393...94---95name: sext_trunc_nuw96body: |97 bb.0:98 liveins: $w0, $w199 ; CHECK-LABEL: name: sext_trunc_nuw100 ; CHECK: liveins: $w0, $w1101 ; CHECK-NEXT: {{ $}}102 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x0103 ; CHECK-NEXT: [[SEXT_INREG:%[0-9]+]]:_(s64) = G_SEXT_INREG [[COPY]], 32104 ; CHECK-NEXT: $x1 = COPY [[SEXT_INREG]](s64)105 %0:_(s64) = COPY $x0106 %2:_(s32) = nuw G_TRUNC %0107 %3:_(s64) = G_SEXT %2108 $x1 = COPY %3109...110---111name: sext_trunc112body: |113 bb.0:114 liveins: $w0, $w1115 ; CHECK-LABEL: name: sext_trunc116 ; CHECK: liveins: $w0, $w1117 ; CHECK-NEXT: {{ $}}118 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x0119 ; CHECK-NEXT: [[SEXT_INREG:%[0-9]+]]:_(s64) = G_SEXT_INREG [[COPY]], 32120 ; CHECK-NEXT: $x1 = COPY [[SEXT_INREG]](s64)121 %0:_(s64) = COPY $x0122 %2:_(s32) = G_TRUNC %0123 %3:_(s64) = G_SEXT %2124 $x1 = COPY %3125...126---127name: sext_trunc_nsw_types_wrong128body: |129 bb.0:130 liveins: $w0, $w1131 ; CHECK-LABEL: name: sext_trunc_nsw_types_wrong132 ; CHECK: liveins: $w0, $w1133 ; CHECK-NEXT: {{ $}}134 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x0135 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s32) = nsw G_TRUNC [[COPY]](s64)136 ; CHECK-NEXT: $w1 = COPY [[TRUNC]](s32)137 %0:_(s64) = COPY $x0138 %2:_(s16) = nsw G_TRUNC %0139 %3:_(s32) = G_SEXT %2140 $w1 = COPY %3141...142---143name: sext_trunc_nsw_nuw144body: |145 bb.0:146 liveins: $w0, $w1147 ; CHECK-LABEL: name: sext_trunc_nsw_nuw148 ; CHECK: liveins: $w0, $w1149 ; CHECK-NEXT: {{ $}}150 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x0151 ; CHECK-NEXT: $x1 = COPY [[COPY]](s64)152 %0:_(s64) = COPY $x0153 %2:_(s32) = nsw nuw G_TRUNC %0154 %3:_(s64) = G_SEXT %2155 $x1 = COPY %3156...157---158name: sext_trunc_nsw_nuw_vector159body: |160 bb.0:161 liveins: $w0, $w1162 ; CHECK-LABEL: name: sext_trunc_nsw_nuw_vector163 ; CHECK: liveins: $w0, $w1164 ; CHECK-NEXT: {{ $}}165 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $w0166 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $w1167 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $w2168 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $w3169 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32)170 ; CHECK-NEXT: [[TRUNC1:%[0-9]+]]:_(s16) = G_TRUNC [[COPY1]](s32)171 ; CHECK-NEXT: [[TRUNC2:%[0-9]+]]:_(s16) = G_TRUNC [[COPY2]](s32)172 ; CHECK-NEXT: [[TRUNC3:%[0-9]+]]:_(s16) = G_TRUNC [[COPY3]](s32)173 ; CHECK-NEXT: %t:_(<4 x s16>) = G_BUILD_VECTOR [[TRUNC]](s16), [[TRUNC1]](s16), [[TRUNC2]](s16), [[TRUNC3]](s16)174 ; CHECK-NEXT: %s:_(<4 x s32>) = G_SEXT %t(<4 x s16>)175 ; CHECK-NEXT: $q0 = COPY %s(<4 x s32>)176 %0:_(s32) = COPY $w0177 %1:_(s32) = COPY $w1178 %2:_(s32) = COPY $w2179 %3:_(s32) = COPY $w3180 %bv0:_(<4 x s32>) = G_BUILD_VECTOR %0:_(s32), %1:_(s32), %2:_(s32), %3:_(s32)181 %t:_(<4 x s16>) = nsw nuw G_TRUNC %bv0182 %s:_(<4 x s32>) = G_SEXT %t183 $q0 = COPY %s184...185---186name: zext_trunc_vector187body: |188 bb.0:189 liveins: $w0, $w1190 ; CHECK-LABEL: name: zext_trunc_vector191 ; CHECK: liveins: $w0, $w1192 ; CHECK-NEXT: {{ $}}193 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $w0194 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $w1195 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $w2196 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $w3197 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32)198 ; CHECK-NEXT: [[TRUNC1:%[0-9]+]]:_(s16) = G_TRUNC [[COPY1]](s32)199 ; CHECK-NEXT: [[TRUNC2:%[0-9]+]]:_(s16) = G_TRUNC [[COPY2]](s32)200 ; CHECK-NEXT: [[TRUNC3:%[0-9]+]]:_(s16) = G_TRUNC [[COPY3]](s32)201 ; CHECK-NEXT: %t:_(<4 x s16>) = G_BUILD_VECTOR [[TRUNC]](s16), [[TRUNC1]](s16), [[TRUNC2]](s16), [[TRUNC3]](s16)202 ; CHECK-NEXT: %z:_(<4 x s32>) = G_ZEXT %t(<4 x s16>)203 ; CHECK-NEXT: $q0 = COPY %z(<4 x s32>)204 %0:_(s32) = COPY $w0205 %1:_(s32) = COPY $w1206 %2:_(s32) = COPY $w2207 %3:_(s32) = COPY $w3208 %bv0:_(<4 x s32>) = G_BUILD_VECTOR %0:_(s32), %1:_(s32), %2:_(s32), %3:_(s32)209 %t:_(<4 x s16>) = G_TRUNC %bv0210 %z:_(<4 x s32>) = G_ZEXT %t211 $q0 = COPY %z212...213---214name: zext_trunc_nsw_vector215body: |216 bb.0:217 liveins: $w0, $w1218 ; CHECK-LABEL: name: zext_trunc_nsw_vector219 ; CHECK: liveins: $w0, $w1220 ; CHECK-NEXT: {{ $}}221 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $w0222 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $w1223 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $w2224 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $w3225 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32)226 ; CHECK-NEXT: [[TRUNC1:%[0-9]+]]:_(s16) = G_TRUNC [[COPY1]](s32)227 ; CHECK-NEXT: [[TRUNC2:%[0-9]+]]:_(s16) = G_TRUNC [[COPY2]](s32)228 ; CHECK-NEXT: [[TRUNC3:%[0-9]+]]:_(s16) = G_TRUNC [[COPY3]](s32)229 ; CHECK-NEXT: %t:_(<4 x s16>) = G_BUILD_VECTOR [[TRUNC]](s16), [[TRUNC1]](s16), [[TRUNC2]](s16), [[TRUNC3]](s16)230 ; CHECK-NEXT: %z:_(<4 x s32>) = G_ZEXT %t(<4 x s16>)231 ; CHECK-NEXT: $q0 = COPY %z(<4 x s32>)232 %0:_(s32) = COPY $w0233 %1:_(s32) = COPY $w1234 %2:_(s32) = COPY $w2235 %3:_(s32) = COPY $w3236 %bv0:_(<4 x s32>) = G_BUILD_VECTOR %0:_(s32), %1:_(s32), %2:_(s32), %3:_(s32)237 %t:_(<4 x s16>) = nsw G_TRUNC %bv0238 %z:_(<4 x s32>) = G_ZEXT %t239 $q0 = COPY %z240...241---242name: zext_trunc_nuw_vector2243body: |244 bb.0:245 liveins: $w0, $w1246 ; CHECK-LABEL: name: zext_trunc_nuw_vector2247 ; CHECK: liveins: $w0, $w1248 ; CHECK-NEXT: {{ $}}249 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $w0250 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $w1251 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $w2252 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $w3253 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32)254 ; CHECK-NEXT: [[TRUNC1:%[0-9]+]]:_(s16) = G_TRUNC [[COPY1]](s32)255 ; CHECK-NEXT: [[TRUNC2:%[0-9]+]]:_(s16) = G_TRUNC [[COPY2]](s32)256 ; CHECK-NEXT: [[TRUNC3:%[0-9]+]]:_(s16) = G_TRUNC [[COPY3]](s32)257 ; CHECK-NEXT: %t:_(<4 x s16>) = G_BUILD_VECTOR [[TRUNC]](s16), [[TRUNC1]](s16), [[TRUNC2]](s16), [[TRUNC3]](s16)258 ; CHECK-NEXT: %z:_(<4 x s32>) = G_ZEXT %t(<4 x s16>)259 ; CHECK-NEXT: $q0 = COPY %z(<4 x s32>)260 %0:_(s32) = COPY $w0261 %1:_(s32) = COPY $w1262 %2:_(s32) = COPY $w2263 %3:_(s32) = COPY $w3264 %bv0:_(<4 x s32>) = G_BUILD_VECTOR %0:_(s32), %1:_(s32), %2:_(s32), %3:_(s32)265 %t:_(<4 x s16>) = nuw G_TRUNC %bv0266 %z:_(<4 x s32>) = G_ZEXT %t267 $q0 = COPY %z268...269---270name: zext_trunc_nuw_vector_wrong_type271body: |272 bb.0:273 liveins: $w0, $w1274 ; CHECK-LABEL: name: zext_trunc_nuw_vector_wrong_type275 ; CHECK: liveins: $w0, $w1276 ; CHECK-NEXT: {{ $}}277 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x0278 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $x1279 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s64)280 ; CHECK-NEXT: [[TRUNC1:%[0-9]+]]:_(s16) = G_TRUNC [[COPY1]](s64)281 ; CHECK-NEXT: %t:_(<2 x s16>) = G_BUILD_VECTOR [[TRUNC]](s16), [[TRUNC1]](s16)282 ; CHECK-NEXT: %z:_(<2 x s32>) = G_ZEXT %t(<2 x s16>)283 ; CHECK-NEXT: $d0 = COPY %z(<2 x s32>)284 %0:_(s64) = COPY $x0285 %1:_(s64) = COPY $x1286 %bv0:_(<2 x s64>) = G_BUILD_VECTOR %0:_(s64), %1:_(s64)287 %t:_(<2 x s16>) = nuw G_TRUNC %bv0288 %z:_(<2 x s32>) = G_ZEXT %t289 $d0 = COPY %z290...291---292name: zext_trunc_nuw_scalable_vector293body: |294 bb.0:295 liveins: $w0, $w1296 ; CHECK-LABEL: name: zext_trunc_nuw_scalable_vector297 ; CHECK: liveins: $w0, $w1298 ; CHECK-NEXT: {{ $}}299 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x0300 ; CHECK-NEXT: %sv0:_(<vscale x 2 x s64>) = G_SPLAT_VECTOR [[COPY]](s64)301 ; CHECK-NEXT: $z0 = COPY %sv0(<vscale x 2 x s64>)302 %0:_(s64) = COPY $x0303 %1:_(s64) = COPY $x1304 %sv0:_(<vscale x 2 x s64>) = G_SPLAT_VECTOR %0:_(s64)305 %t:_(<vscale x 2 x s32>) = nuw G_TRUNC %sv0306 %z:_(<vscale x 2 x s64>) = G_ZEXT %t307 $z0 = COPY %z308...309---310name: zext_trunc_nuw_to_zext311body: |312 bb.0:313 liveins: $w0, $w1314 ; CHECK-LABEL: name: zext_trunc_nuw_to_zext315 ; CHECK: liveins: $w0, $w1316 ; CHECK-NEXT: {{ $}}317 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $w0318 ; CHECK-NEXT: %2:_(s64) = nneg G_ZEXT [[COPY]](s32)319 ; CHECK-NEXT: $x1 = COPY %2(s64)320 %0:_(s32) = COPY $w0321 %2:_(s16) = nuw G_TRUNC %0322 %3:_(s64) = G_ZEXT %2323 $x1 = COPY %3324...325---326name: zext_trunc_nuw_to_trunc327body: |328 bb.0:329 liveins: $w0, $w1330 ; CHECK-LABEL: name: zext_trunc_nuw_to_trunc331 ; CHECK: liveins: $w0, $w1332 ; CHECK-NEXT: {{ $}}333 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x0334 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s32) = nuw G_TRUNC [[COPY]](s64)335 ; CHECK-NEXT: $w1 = COPY [[TRUNC]](s32)336 %0:_(s64) = COPY $x0337 %2:_(s16) = nuw G_TRUNC %0338 %3:_(s32) = G_ZEXT %2339 $w1 = COPY %3340...341---342name: sext_trunc_nsw_to_sext343body: |344 bb.0:345 liveins: $w0, $w1346 ; CHECK-LABEL: name: sext_trunc_nsw_to_sext347 ; CHECK: liveins: $w0, $w1348 ; CHECK-NEXT: {{ $}}349 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $w0350 ; CHECK-NEXT: [[SEXT:%[0-9]+]]:_(s64) = G_SEXT [[COPY]](s32)351 ; CHECK-NEXT: $x1 = COPY [[SEXT]](s64)352 %0:_(s32) = COPY $w0353 %2:_(s16) = nsw G_TRUNC %0354 %3:_(s64) = G_SEXT %2355 $x1 = COPY %3356...357---358name: sext_trunc_nsw_to_trunc359body: |360 bb.0:361 liveins: $w0, $w1362 ; CHECK-LABEL: name: sext_trunc_nsw_to_trunc363 ; CHECK: liveins: $w0, $w1364 ; CHECK-NEXT: {{ $}}365 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x0366 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s32) = nsw G_TRUNC [[COPY]](s64)367 ; CHECK-NEXT: $w1 = COPY [[TRUNC]](s32)368 %0:_(s64) = COPY $x0369 %2:_(s16) = nsw G_TRUNC %0370 %3:_(s32) = G_SEXT %2371 $w1 = COPY %3372...373---374name: trunc_sext_i32_i16375tracksRegLiveness: true376body: |377 bb.0:378 liveins: $w0379 380 ; CHECK-LABEL: name: trunc_sext_i32_i16381 ; CHECK: liveins: $w0382 ; CHECK-NEXT: {{ $}}383 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $w0384 ; CHECK-NEXT: [[SEXT_INREG:%[0-9]+]]:_(s32) = G_SEXT_INREG [[COPY]], 16385 ; CHECK-NEXT: $w0 = COPY [[SEXT_INREG]](s32)386 %0:_(s32) = COPY $w0387 %1:_(s16) = G_TRUNC %0388 %2:_(s32) = G_SEXT %1389 $w0 = COPY %2390...391---392name: trunc_sext_i32_i1393tracksRegLiveness: true394body: |395 bb.0:396 liveins: $w0397 398 ; CHECK-LABEL: name: trunc_sext_i32_i1399 ; CHECK: liveins: $w0400 ; CHECK-NEXT: {{ $}}401 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $w0402 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s1) = G_TRUNC [[COPY]](s32)403 ; CHECK-NEXT: [[SEXT:%[0-9]+]]:_(s32) = G_SEXT [[TRUNC]](s1)404 ; CHECK-NEXT: $w0 = COPY [[SEXT]](s32)405 %0:_(s32) = COPY $w0406 %1:_(s1) = G_TRUNC %0407 %2:_(s32) = G_SEXT %1408 $w0 = COPY %2409...410---411name: trunc_sext_i32_i2412tracksRegLiveness: true413body: |414 bb.0:415 liveins: $w0416 417 ; CHECK-LABEL: name: trunc_sext_i32_i2418 ; CHECK: liveins: $w0419 ; CHECK-NEXT: {{ $}}420 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $w0421 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s2) = G_TRUNC [[COPY]](s32)422 ; CHECK-NEXT: [[SEXT:%[0-9]+]]:_(s32) = G_SEXT [[TRUNC]](s2)423 ; CHECK-NEXT: $w0 = COPY [[SEXT]](s32)424 %0:_(s32) = COPY $w0425 %1:_(s2) = G_TRUNC %0426 %2:_(s32) = G_SEXT %1427 $w0 = COPY %2428...429---430name: trunc_sext_i32_i8431tracksRegLiveness: true432body: |433 bb.0:434 liveins: $w0435 436 ; CHECK-LABEL: name: trunc_sext_i32_i8437 ; CHECK: liveins: $w0438 ; CHECK-NEXT: {{ $}}439 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $w0440 ; CHECK-NEXT: [[SEXT_INREG:%[0-9]+]]:_(s32) = G_SEXT_INREG [[COPY]], 8441 ; CHECK-NEXT: $w0 = COPY [[SEXT_INREG]](s32)442 %0:_(s32) = COPY $w0443 %1:_(s8) = G_TRUNC %0444 %2:_(s32) = G_SEXT %1445 $w0 = COPY %2446...447---448name: trunc_sext_i64_i32449tracksRegLiveness: true450body: |451 bb.0:452 liveins: $w0, $w1453 454 ; CHECK-LABEL: name: trunc_sext_i64_i32455 ; CHECK: liveins: $w0, $w1456 ; CHECK-NEXT: {{ $}}457 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x0458 ; CHECK-NEXT: [[SEXT_INREG:%[0-9]+]]:_(s64) = G_SEXT_INREG [[COPY]], 32459 ; CHECK-NEXT: $x0 = COPY [[SEXT_INREG]](s64)460 %0:_(s64) = COPY $x0461 %1:_(s32) = G_TRUNC %0462 %2:_(s64) = G_SEXT %1463 $x0 = COPY %2464...465---466name: trunc_sext_v2i32_v2i16467tracksRegLiveness: true468body: |469 bb.0:470 liveins: $w0, $w1471 472 ; CHECK-LABEL: name: trunc_sext_v2i32_v2i16473 ; CHECK: liveins: $w0, $w1474 ; CHECK-NEXT: {{ $}}475 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<2 x s32>) = COPY $x0476 ; CHECK-NEXT: [[SEXT_INREG:%[0-9]+]]:_(<2 x s32>) = G_SEXT_INREG [[COPY]], 16477 ; CHECK-NEXT: $x0 = COPY [[SEXT_INREG]](<2 x s32>)478 %0:_(<2 x s32>) = COPY $x0479 %1:_(<2 x s16>) = G_TRUNC %0480 %2:_(<2 x s32>) = G_SEXT %1481 $x0 = COPY %2482...483---484name: trunc_sext_v4i16_v4i8485tracksRegLiveness: true486body: |487 bb.0:488 liveins: $w0, $w1489 490 ; CHECK-LABEL: name: trunc_sext_v4i16_v4i8491 ; CHECK: liveins: $w0, $w1492 ; CHECK-NEXT: {{ $}}493 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<4 x s16>) = COPY $x0494 ; CHECK-NEXT: [[SEXT_INREG:%[0-9]+]]:_(<4 x s16>) = G_SEXT_INREG [[COPY]], 8495 ; CHECK-NEXT: $x0 = COPY [[SEXT_INREG]](<4 x s16>)496 %0:_(<4 x s16>) = COPY $x0497 %1:_(<4 x s8>) = G_TRUNC %0498 %2:_(<4 x s16>) = G_SEXT %1499 $x0 = COPY %2500...501---502name: trunc_sext_mismatching_types503tracksRegLiveness: true504body: |505 bb.0:506 liveins: $w0, $w1507 508 ; CHECK-LABEL: name: trunc_sext_mismatching_types509 ; CHECK: liveins: $w0, $w1510 ; CHECK-NEXT: {{ $}}511 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x0512 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s64)513 ; CHECK-NEXT: [[SEXT:%[0-9]+]]:_(s32) = G_SEXT [[TRUNC]](s16)514 ; CHECK-NEXT: $w0 = COPY [[SEXT]](s32)515 %0:_(s64) = COPY $x0516 %1:_(s16) = G_TRUNC %0517 %2:_(s32) = G_SEXT %1518 $w0 = COPY %2519...520