brintos

brintos / llvm-project-archived public Read only

0
0
Text · 98.6 KiB · 9e1444d Raw
2775 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 52# RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx950 -run-pass=register-coalescer -verify-coalescing -o - %s | FileCheck %s3 4# Test coalescing situations which can use av_* registers to handle5# copies between VGPRs and AGPRs.6 7# Should coalesce %0 and %1 into subregisters of the av_64 common8# class9---10name: copy_vgpr32_to_areg64_coalesce_with_av6411tracksRegLiveness: true12body:             |13  bb.0:14    liveins: $vgpr0, $vgpr115 16    ; CHECK-LABEL: name: copy_vgpr32_to_areg64_coalesce_with_av6417    ; CHECK: liveins: $vgpr0, $vgpr118    ; CHECK-NEXT: {{  $}}19    ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr020    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr121    ; CHECK-NEXT: undef [[COPY2:%[0-9]+]].sub0:areg_64 = COPY [[COPY]]22    ; CHECK-NEXT: [[COPY2:%[0-9]+]].sub1:areg_64 = COPY [[COPY1]]23    ; CHECK-NEXT: INLINEASM &"; use $0", 0 /* attdialect */, 3407881 /* reguse:AReg_64 */, [[COPY2]]24    ; CHECK-NEXT: SI_RETURN25    %0:vgpr_32 = COPY $vgpr026    %1:vgpr_32 = COPY $vgpr127    undef %2.sub0:areg_64 = COPY %028    %2.sub1:areg_64 = COPY %129    INLINEASM &"; use $0", 0 /* attdialect */, 3407881 /* reguse:AReg_64 */, killed %230    SI_RETURN31 32...33 34---35name: copy_vgpr32_to_areg64_align2_coalesce_with_av64_align236tracksRegLiveness: true37body:             |38  bb.0:39    liveins: $vgpr0, $vgpr140 41    ; CHECK-LABEL: name: copy_vgpr32_to_areg64_align2_coalesce_with_av64_align242    ; CHECK: liveins: $vgpr0, $vgpr143    ; CHECK-NEXT: {{  $}}44    ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr045    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr146    ; CHECK-NEXT: undef [[COPY2:%[0-9]+]].sub0:areg_64_align2 = COPY [[COPY]]47    ; CHECK-NEXT: [[COPY2:%[0-9]+]].sub1:areg_64_align2 = COPY [[COPY1]]48    ; CHECK-NEXT: INLINEASM &"; use $0", 0 /* attdialect */, 3997705 /* reguse:AReg_64_Align2 */, [[COPY2]]49    ; CHECK-NEXT: SI_RETURN50    %0:vgpr_32 = COPY $vgpr051    %1:vgpr_32 = COPY $vgpr152    undef %2.sub0:areg_64_align2 = COPY %053    %2.sub1:areg_64_align2 = COPY %154    INLINEASM &"; use $0", 0 /* attdialect */, 3997705 /* reguse:AReg_64_Align2 */, %255    SI_RETURN56 57...58 59---60name: copy_vgpr32_to_areg96_coalesce_with_av9661tracksRegLiveness: true62body:             |63  bb.0:64    liveins: $vgpr0, $vgpr1, $vgpr265 66    ; CHECK-LABEL: name: copy_vgpr32_to_areg96_coalesce_with_av9667    ; CHECK: liveins: $vgpr0, $vgpr1, $vgpr268    ; CHECK-NEXT: {{  $}}69    ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr070    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr171    ; CHECK-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr272    ; CHECK-NEXT: undef [[COPY3:%[0-9]+]].sub0:areg_96 = COPY [[COPY]]73    ; CHECK-NEXT: [[COPY3:%[0-9]+]].sub1:areg_96 = COPY [[COPY1]]74    ; CHECK-NEXT: [[COPY3:%[0-9]+]].sub2:areg_96 = COPY [[COPY2]]75    ; CHECK-NEXT: INLINEASM &"; use $0", 0 /* attdialect */, 5505033 /* reguse:AReg_96 */, [[COPY3]]76    ; CHECK-NEXT: SI_RETURN77    %0:vgpr_32 = COPY $vgpr078    %1:vgpr_32 = COPY $vgpr179    %2:vgpr_32 = COPY $vgpr280    undef %3.sub0:areg_96 = COPY %081    %3.sub1:areg_96 = COPY %182    %3.sub2:areg_96 = COPY %283    INLINEASM &"; use $0", 0 /* attdialect */, 5505033 /* reguse:AReg_96 */, %384    SI_RETURN85 86...87 88---89name: copy_vgpr32_to_areg96_coalesce_with_av96_align290tracksRegLiveness: true91body:             |92  bb.0:93    liveins: $vgpr0, $vgpr1, $vgpr294 95    ; CHECK-LABEL: name: copy_vgpr32_to_areg96_coalesce_with_av96_align296    ; CHECK: liveins: $vgpr0, $vgpr1, $vgpr297    ; CHECK-NEXT: {{  $}}98    ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr099    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1100    ; CHECK-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr2101    ; CHECK-NEXT: undef [[COPY3:%[0-9]+]].sub0:areg_96_align2 = COPY [[COPY]]102    ; CHECK-NEXT: [[COPY3:%[0-9]+]].sub1:areg_96_align2 = COPY [[COPY1]]103    ; CHECK-NEXT: [[COPY3:%[0-9]+]].sub2:areg_96_align2 = COPY [[COPY2]]104    ; CHECK-NEXT: INLINEASM &"; use $0", 0 /* attdialect */, 5832713 /* reguse:AReg_96_Align2 */, [[COPY3]]105    ; CHECK-NEXT: SI_RETURN106    %0:vgpr_32 = COPY $vgpr0107    %1:vgpr_32 = COPY $vgpr1108    %2:vgpr_32 = COPY $vgpr2109    undef %3.sub0:areg_96_align2 = COPY %0110    %3.sub1:areg_96_align2 = COPY %1111    %3.sub2:areg_96_align2 = COPY %2112    INLINEASM &"; use $0", 0 /* attdialect */, 5832713 /* reguse:AReg_96_Align2 */, %3113    SI_RETURN114 115...116 117---118name: copy_vgpr64_to_areg64_coalesce_with_av128119tracksRegLiveness: true120body:             |121  bb.0:122    liveins: $vgpr0_vgpr1, $vgpr2_vgpr3123 124    ; CHECK-LABEL: name: copy_vgpr64_to_areg64_coalesce_with_av128125    ; CHECK: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3126    ; CHECK-NEXT: {{  $}}127    ; CHECK-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1128    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:vreg_64 = COPY $vgpr2_vgpr3129    ; CHECK-NEXT: undef [[COPY2:%[0-9]+]].sub0_sub1:areg_128 = COPY [[COPY]]130    ; CHECK-NEXT: [[COPY2:%[0-9]+]].sub2_sub3:areg_128 = COPY [[COPY1]]131    ; CHECK-NEXT: INLINEASM &"; use $0", 0 /* attdialect */, 7929865 /* reguse:AReg_128 */, [[COPY2]]132    ; CHECK-NEXT: SI_RETURN133    %0:vreg_64 = COPY $vgpr0_vgpr1134    %1:vreg_64 = COPY $vgpr2_vgpr3135    undef %2.sub0_sub1:areg_128 = COPY %0136    %2.sub2_sub3:areg_128 = COPY %1137    INLINEASM &"; use $0", 0 /* attdialect */, 7929865 /* reguse:AReg_128 */, killed %2138    SI_RETURN139 140...141 142---143name: copy_vgpr64_to_areg64_align2_coalesce_with_av128_align2144tracksRegLiveness: true145body:             |146  bb.0:147    liveins: $vgpr0_vgpr1, $vgpr2_vgpr3148 149    ; CHECK-LABEL: name: copy_vgpr64_to_areg64_align2_coalesce_with_av128_align2150    ; CHECK: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3151    ; CHECK-NEXT: {{  $}}152    ; CHECK-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1153    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:vreg_64 = COPY $vgpr2_vgpr3154    ; CHECK-NEXT: undef [[COPY2:%[0-9]+]].sub0_sub1:areg_128_align2 = COPY [[COPY]]155    ; CHECK-NEXT: [[COPY2:%[0-9]+]].sub2_sub3:areg_128_align2 = COPY [[COPY1]]156    ; CHECK-NEXT: INLINEASM &"; use $0", 0 /* attdialect */, 8650761 /* reguse:AReg_128_Align2 */, [[COPY2]]157    ; CHECK-NEXT: SI_RETURN158    %0:vreg_64 = COPY $vgpr0_vgpr1159    %1:vreg_64 = COPY $vgpr2_vgpr3160    undef %2.sub0_sub1:areg_128_align2 = COPY %0161    %2.sub2_sub3:areg_128_align2 = COPY %1162    INLINEASM &"; use $0", 0 /* attdialect */, 8650761 /* reguse:AReg_128_Align2 */, %2163    SI_RETURN164 165...166 167---168name: copy_sgpr32_to_areg64_align2169tracksRegLiveness: true170body:             |171  bb.0:172    liveins: $sgpr8, $sgpr9173 174    ; CHECK-LABEL: name: copy_sgpr32_to_areg64_align2175    ; CHECK: liveins: $sgpr8, $sgpr9176    ; CHECK-NEXT: {{  $}}177    ; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr_32 = COPY $sgpr8178    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:sgpr_32 = COPY $sgpr9179    ; CHECK-NEXT: undef [[COPY2:%[0-9]+]].sub0:areg_64_align2 = COPY [[COPY]]180    ; CHECK-NEXT: [[COPY2:%[0-9]+]].sub1:areg_64_align2 = COPY [[COPY1]]181    ; CHECK-NEXT: INLINEASM &"; use $0", 0 /* attdialect */, 3997705 /* reguse:AReg_64_Align2 */, [[COPY2]]182    ; CHECK-NEXT: SI_RETURN183    %0:sgpr_32 = COPY $sgpr8184    %1:sgpr_32 = COPY $sgpr9185    undef %2.sub0:areg_64_align2 = COPY %0186    %2.sub1:areg_64_align2 = COPY %1187    INLINEASM &"; use $0", 0 /* attdialect */, 3997705 /* reguse:AReg_64_Align2 */, %2188    SI_RETURN189 190...191 192---193name: copy_vgpr32_vgpr64_to_areg96_coalesce_with_av96194tracksRegLiveness: true195body:             |196  bb.0:197    liveins: $vgpr0, $vgpr1_vgpr2198 199    ; CHECK-LABEL: name: copy_vgpr32_vgpr64_to_areg96_coalesce_with_av96200    ; CHECK: liveins: $vgpr0, $vgpr1_vgpr2201    ; CHECK-NEXT: {{  $}}202    ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0203    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:vreg_64 = COPY $vgpr1_vgpr2204    ; CHECK-NEXT: undef [[COPY2:%[0-9]+]].sub0:areg_96 = COPY [[COPY]]205    ; CHECK-NEXT: [[COPY2:%[0-9]+]].sub1_sub2:areg_96 = COPY [[COPY1]]206    ; CHECK-NEXT: INLINEASM &"; use $0", 0 /* attdialect */, 5505033 /* reguse:AReg_96 */, [[COPY2]]207    ; CHECK-NEXT: SI_RETURN208    %0:vgpr_32 = COPY $vgpr0209    %1:vreg_64 = COPY $vgpr1_vgpr2210    undef %2.sub0:areg_96 = COPY %0211    %2.sub1_sub2:areg_96 = COPY %1212    INLINEASM &"; use $0", 0 /* attdialect */, 5505033 /* reguse:AReg_96 */, %2213    SI_RETURN214 215...216 217---218name: copy_vgpr32_vgpr64_to_areg96_coalesce_with_av96_align2219tracksRegLiveness: true220body:             |221  bb.0:222    liveins: $vgpr0, $vgpr1_vgpr2223 224    ; CHECK-LABEL: name: copy_vgpr32_vgpr64_to_areg96_coalesce_with_av96_align2225    ; CHECK: liveins: $vgpr0, $vgpr1_vgpr2226    ; CHECK-NEXT: {{  $}}227    ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0228    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:vreg_64 = COPY $vgpr1_vgpr2229    ; CHECK-NEXT: undef [[COPY2:%[0-9]+]].sub0:areg_96_align2 = COPY [[COPY]]230    ; CHECK-NEXT: [[COPY2:%[0-9]+]].sub1_sub2:areg_96_align2 = COPY [[COPY1]]231    ; CHECK-NEXT: INLINEASM &"; use $0", 0 /* attdialect */, 3997705 /* reguse:AReg_64_Align2 */, [[COPY2]]232    ; CHECK-NEXT: SI_RETURN233    %0:vgpr_32 = COPY $vgpr0234    %1:vreg_64 = COPY $vgpr1_vgpr2235    undef %2.sub0:areg_96_align2 = COPY %0236    %2.sub1_sub2:areg_96_align2 = COPY %1237    INLINEASM &"; use $0", 0 /* attdialect */, 3997705 /* reguse:AReg_64_Align2 */, %2238    SI_RETURN239 240...241 242---243name: copy_vgpr64_vgpr32_to_areg96_coalesce_with_av96244tracksRegLiveness: true245body:             |246  bb.0:247    liveins: $vgpr0_vgpr1, $vgpr2248 249    ; CHECK-LABEL: name: copy_vgpr64_vgpr32_to_areg96_coalesce_with_av96250    ; CHECK: liveins: $vgpr0_vgpr1, $vgpr2251    ; CHECK-NEXT: {{  $}}252    ; CHECK-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1253    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2254    ; CHECK-NEXT: undef [[COPY2:%[0-9]+]].sub0_sub1:areg_96 = COPY [[COPY]]255    ; CHECK-NEXT: [[COPY2:%[0-9]+]].sub2:areg_96 = COPY [[COPY1]]256    ; CHECK-NEXT: INLINEASM &"; use $0", 0 /* attdialect */, 5505033 /* reguse:AReg_96 */, [[COPY2]]257    ; CHECK-NEXT: SI_RETURN258    %0:vreg_64 = COPY $vgpr0_vgpr1259    %1:vgpr_32 = COPY $vgpr2260    undef %2.sub0_sub1:areg_96 = COPY %0261    %2.sub2:areg_96 = COPY %1262    INLINEASM &"; use $0", 0 /* attdialect */, 5505033 /* reguse:AReg_96 */, %2263    SI_RETURN264 265...266 267---268name: copy_vgpr64_vgpr32_to_areg96_coalesce_with_av96_align2269tracksRegLiveness: true270body:             |271  bb.0:272    liveins: $vgpr0, $vgpr1_vgpr2273 274    ; CHECK-LABEL: name: copy_vgpr64_vgpr32_to_areg96_coalesce_with_av96_align2275    ; CHECK: liveins: $vgpr0, $vgpr1_vgpr2276    ; CHECK-NEXT: {{  $}}277    ; CHECK-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1278    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2279    ; CHECK-NEXT: undef [[COPY2:%[0-9]+]].sub0_sub1:areg_96_align2 = COPY [[COPY]]280    ; CHECK-NEXT: [[COPY2:%[0-9]+]].sub2:areg_96_align2 = COPY [[COPY1]]281    ; CHECK-NEXT: INLINEASM &"; use $0", 0 /* attdialect */, 3997705 /* reguse:AReg_64_Align2 */, [[COPY2]]282    ; CHECK-NEXT: SI_RETURN283    %0:vreg_64 = COPY $vgpr0_vgpr1284    %1:vgpr_32 = COPY $vgpr2285    undef %2.sub0_sub1:areg_96_align2 = COPY %0286    %2.sub2:areg_96_align2 = COPY %1287    INLINEASM &"; use $0", 0 /* attdialect */, 3997705 /* reguse:AReg_64_Align2 */, %2288    SI_RETURN289 290...291 292---293name: copy_vgpr32_x2_to_areg64294tracksRegLiveness: true295body:             |296  bb.0:297    liveins: $vgpr0298 299    ; CHECK-LABEL: name: copy_vgpr32_x2_to_areg64300    ; CHECK: liveins: $vgpr0301    ; CHECK-NEXT: {{  $}}302    ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0303    ; CHECK-NEXT: undef [[COPY1:%[0-9]+]].sub0:areg_64 = COPY [[COPY]]304    ; CHECK-NEXT: [[COPY1:%[0-9]+]].sub1:areg_64 = COPY [[COPY]]305    ; CHECK-NEXT: INLINEASM &"; use $0", 0 /* attdialect */, 3407881 /* reguse:AReg_64 */, [[COPY1]]306    ; CHECK-NEXT: SI_RETURN307    %0:vgpr_32 = COPY $vgpr0308    undef %2.sub0:areg_64 = COPY %0309    %2.sub1:areg_64 = COPY %0310    INLINEASM &"; use $0", 0 /* attdialect */, 3407881 /* reguse:AReg_64 */, killed %2311    SI_RETURN312 313...314 315---316name: copy_vgpr32_x2_to_areg64_coalesce_with_av64_align2317tracksRegLiveness: true318body:             |319  bb.0:320    liveins: $vgpr0, $vgpr1321 322    ; CHECK-LABEL: name: copy_vgpr32_x2_to_areg64_coalesce_with_av64_align2323    ; CHECK: liveins: $vgpr0, $vgpr1324    ; CHECK-NEXT: {{  $}}325    ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0326    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1327    ; CHECK-NEXT: undef [[COPY2:%[0-9]+]].sub0:areg_64_align2 = COPY [[COPY]]328    ; CHECK-NEXT: [[COPY2:%[0-9]+]].sub1:areg_64_align2 = COPY [[COPY1]]329    ; CHECK-NEXT: INLINEASM &"; use $0", 0 /* attdialect */, 3997705 /* reguse:AReg_64_Align2 */, [[COPY2]]330    ; CHECK-NEXT: SI_RETURN331    %0:vgpr_32 = COPY $vgpr0332    %1:vgpr_32 = COPY $vgpr1333    undef %2.sub0:areg_64_align2 = COPY %0334    %2.sub1:areg_64_align2 = COPY %1335    INLINEASM &"; use $0", 0 /* attdialect */, 3997705 /* reguse:AReg_64_Align2 */, %2336    SI_RETURN337 338...339 340---341name: copy_vgpr32_x3_to_areg96342tracksRegLiveness: true343body:             |344  bb.0:345    liveins: $vgpr0346 347    ; CHECK-LABEL: name: copy_vgpr32_x3_to_areg96348    ; CHECK: liveins: $vgpr0349    ; CHECK-NEXT: {{  $}}350    ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0351    ; CHECK-NEXT: undef [[COPY1:%[0-9]+]].sub0:areg_96 = COPY [[COPY]]352    ; CHECK-NEXT: [[COPY1:%[0-9]+]].sub1:areg_96 = COPY [[COPY]]353    ; CHECK-NEXT: INLINEASM &"; use $0", 0 /* attdialect */, 5505033 /* reguse:AReg_96 */, [[COPY1]]354    ; CHECK-NEXT: SI_RETURN355    %0:vgpr_32 = COPY $vgpr0356    undef %1.sub0:areg_96 = COPY %0357    %1.sub1:areg_96 = COPY %0358    INLINEASM &"; use $0", 0 /* attdialect */, 5505033 /* reguse:AReg_96 */, %1359    SI_RETURN360 361...362 363---364name: copy_vgpr32_x3_to_areg96_align2365tracksRegLiveness: true366body:             |367  bb.0:368    liveins: $vgpr0369 370    ; CHECK-LABEL: name: copy_vgpr32_x3_to_areg96_align2371    ; CHECK: liveins: $vgpr0372    ; CHECK-NEXT: {{  $}}373    ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0374    ; CHECK-NEXT: undef [[COPY1:%[0-9]+]].sub0:areg_96_align2 = COPY [[COPY]]375    ; CHECK-NEXT: [[COPY1:%[0-9]+]].sub1:areg_96_align2 = COPY [[COPY]]376    ; CHECK-NEXT: INLINEASM &"; use $0", 0 /* attdialect */, 5832713 /* reguse:AReg_96_Align2 */, [[COPY1]]377    ; CHECK-NEXT: SI_RETURN378    %0:vgpr_32 = COPY $vgpr0379    undef %1.sub0:areg_96_align2 = COPY %0380    %1.sub1:areg_96_align2 = COPY %0381    INLINEASM &"; use $0", 0 /* attdialect */, 5832713 /* reguse:AReg_96_Align2 */, %1382    SI_RETURN383 384...385 386---387name: copy_vgpr32_x4_to_areg128388tracksRegLiveness: true389body:             |390  bb.0:391    liveins: $vgpr0392 393    ; CHECK-LABEL: name: copy_vgpr32_x4_to_areg128394    ; CHECK: liveins: $vgpr0395    ; CHECK-NEXT: {{  $}}396    ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0397    ; CHECK-NEXT: undef [[COPY1:%[0-9]+]].sub0:areg_128 = COPY [[COPY]]398    ; CHECK-NEXT: [[COPY1:%[0-9]+]].sub1:areg_128 = COPY [[COPY]]399    ; CHECK-NEXT: [[COPY1:%[0-9]+]].sub2:areg_128 = COPY [[COPY]]400    ; CHECK-NEXT: [[COPY1:%[0-9]+]].sub3:areg_128 = COPY [[COPY]]401    ; CHECK-NEXT: INLINEASM &"; use $0", 0 /* attdialect */, 7929865 /* reguse:AReg_128 */, [[COPY1]]402    ; CHECK-NEXT: SI_RETURN403    %0:vgpr_32 = COPY $vgpr0404    undef %1.sub0:areg_128 = COPY %0405    %1.sub1:areg_128 = COPY %0406    %1.sub2:areg_128 = COPY %0407    %1.sub3:areg_128 = COPY %0408    INLINEASM &"; use $0", 0 /* attdialect */, 7929865 /* reguse:AReg_128 */, killed %1409    SI_RETURN410 411...412 413---414name: copy_vgpr32_x4_to_areg128_align2415tracksRegLiveness: true416body:             |417  bb.0:418    liveins: $vgpr0419 420    ; CHECK-LABEL: name: copy_vgpr32_x4_to_areg128_align2421    ; CHECK: liveins: $vgpr0422    ; CHECK-NEXT: {{  $}}423    ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0424    ; CHECK-NEXT: undef [[COPY1:%[0-9]+]].sub0:areg_128_align2 = COPY [[COPY]]425    ; CHECK-NEXT: [[COPY1:%[0-9]+]].sub1:areg_128_align2 = COPY [[COPY]]426    ; CHECK-NEXT: [[COPY1:%[0-9]+]].sub2:areg_128_align2 = COPY [[COPY]]427    ; CHECK-NEXT: [[COPY1:%[0-9]+]].sub3:areg_128_align2 = COPY [[COPY]]428    ; CHECK-NEXT: INLINEASM &"; use $0", 0 /* attdialect */, 8650761 /* reguse:AReg_128_Align2 */, [[COPY1]]429    ; CHECK-NEXT: SI_RETURN430    %0:vgpr_32 = COPY $vgpr0431    undef %1.sub0:areg_128_align2 = COPY %0432    %1.sub1:areg_128_align2 = COPY %0433    %1.sub2:areg_128_align2 = COPY %0434    %1.sub3:areg_128_align2 = COPY %0435    INLINEASM &"; use $0", 0 /* attdialect */, 8650761 /* reguse:AReg_128_Align2 */, %1436    SI_RETURN437 438...439 440---441name: copy_vgpr32_to_areg64_coalesce_with_av64_other_v_use442tracksRegLiveness: true443body:             |444  bb.0:445    liveins: $vgpr0, $vgpr1446 447    ; CHECK-LABEL: name: copy_vgpr32_to_areg64_coalesce_with_av64_other_v_use448    ; CHECK: liveins: $vgpr0, $vgpr1449    ; CHECK-NEXT: {{  $}}450    ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0451    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1452    ; CHECK-NEXT: undef [[COPY2:%[0-9]+]].sub0:areg_64 = COPY [[COPY]]453    ; CHECK-NEXT: [[COPY2:%[0-9]+]].sub1:areg_64 = COPY [[COPY1]]454    ; CHECK-NEXT: INLINEASM &"; use $0", 0 /* attdialect */, 3407881 /* reguse:AReg_64 */, [[COPY2]]455    ; CHECK-NEXT: INLINEASM &"; use $0", 0 /* attdialect */, 1245193 /* reguse:VGPR_32 */, [[COPY]]456    ; CHECK-NEXT: SI_RETURN457    %0:vgpr_32 = COPY $vgpr0458    %1:vgpr_32 = COPY $vgpr1459    undef %2.sub0:areg_64 = COPY %0460    %2.sub1:areg_64 = COPY %1461    INLINEASM &"; use $0", 0 /* attdialect */, 3407881 /* reguse:AReg_64 */, killed %2462    INLINEASM &"; use $0", 0 /* attdialect */, 1245193 /* reguse:VGPR_32 */, killed %0463    SI_RETURN464 465...466 467---468name: copy_vgpr32_x2_to_areg64_coalesce_with_av64_other_v_use469tracksRegLiveness: true470body:             |471  bb.0:472    liveins: $vgpr0473 474    ; CHECK-LABEL: name: copy_vgpr32_x2_to_areg64_coalesce_with_av64_other_v_use475    ; CHECK: liveins: $vgpr0476    ; CHECK-NEXT: {{  $}}477    ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0478    ; CHECK-NEXT: undef [[COPY1:%[0-9]+]].sub0:areg_64 = COPY [[COPY]]479    ; CHECK-NEXT: [[COPY1:%[0-9]+]].sub1:areg_64 = COPY [[COPY]]480    ; CHECK-NEXT: INLINEASM &"; use $0", 0 /* attdialect */, 3407881 /* reguse:AReg_64 */, [[COPY1]]481    ; CHECK-NEXT: INLINEASM &"; use $0", 0 /* attdialect */, 1245193 /* reguse:VGPR_32 */, [[COPY]]482    ; CHECK-NEXT: SI_RETURN483    %0:vgpr_32 = COPY $vgpr0484    undef %1.sub0:areg_64 = COPY %0485    %1.sub1:areg_64 = COPY %0486    INLINEASM &"; use $0", 0 /* attdialect */, 3407881 /* reguse:AReg_64 */, killed %1487    INLINEASM &"; use $0", 0 /* attdialect */, 1245193 /* reguse:VGPR_32 */, killed %0488    SI_RETURN489 490...491 492---493name: copy_vgpr32_x2_to_areg64_and_vreg64_coalesce_with_av64_other_v_use494tracksRegLiveness: true495body:             |496  bb.0:497    liveins: $vgpr0498 499    ; CHECK-LABEL: name: copy_vgpr32_x2_to_areg64_and_vreg64_coalesce_with_av64_other_v_use500    ; CHECK: liveins: $vgpr0501    ; CHECK-NEXT: {{  $}}502    ; CHECK-NEXT: undef [[COPY:%[0-9]+]].sub0:vreg_64 = COPY $vgpr0503    ; CHECK-NEXT: undef [[COPY1:%[0-9]+]].sub0:areg_64 = COPY [[COPY]].sub0504    ; CHECK-NEXT: [[COPY1:%[0-9]+]].sub1:areg_64 = COPY [[COPY]].sub0505    ; CHECK-NEXT: [[COPY:%[0-9]+]].sub1:vreg_64 = COPY [[COPY]].sub0506    ; CHECK-NEXT: INLINEASM &"; use $0", 0 /* attdialect */, 3407881 /* reguse:AReg_64 */, [[COPY1]]507    ; CHECK-NEXT: INLINEASM &"; use $0", 0 /* attdialect */, 2818057 /* reguse:VReg_64 */, [[COPY]]508    ; CHECK-NEXT: SI_RETURN509    %0:vgpr_32 = COPY $vgpr0510    undef %1.sub0:areg_64 = COPY %0511    %1.sub1:areg_64 = COPY %0512    undef %2.sub0:vreg_64 = COPY %0513    %2.sub1:vreg_64 = COPY %0514    INLINEASM &"; use $0", 0 /* attdialect */, 3407881 /* reguse:AReg_64 */, killed %1515    INLINEASM &"; use $0", 0 /* attdialect */, 2818057 /* reguse:VReg_64 */, killed %2516    SI_RETURN517 518...519 520# Should coalesce %0 and %1 into subregisters of the av_64 common521# class522---523name: copy_vgpr32_to_areg64_coalesce_with_av64_sub524tracksRegLiveness: true525body:             |526  bb.0:527    liveins: $vgpr0, $vgpr1528 529    ; CHECK-LABEL: name: copy_vgpr32_to_areg64_coalesce_with_av64_sub530    ; CHECK: liveins: $vgpr0, $vgpr1531    ; CHECK-NEXT: {{  $}}532    ; CHECK-NEXT: undef [[COPY:%[0-9]+]].sub0:vreg_64 = COPY $vgpr0533    ; CHECK-NEXT: [[COPY:%[0-9]+]].sub1:vreg_64 = COPY $vgpr1534    ; CHECK-NEXT: undef [[COPY1:%[0-9]+]].sub0:areg_64 = COPY [[COPY]].sub0535    ; CHECK-NEXT: [[COPY1:%[0-9]+]].sub1:areg_64 = COPY [[COPY]].sub1536    ; CHECK-NEXT: INLINEASM &"; use $0", 0 /* attdialect */, 3407881 /* reguse:AReg_64 */, [[COPY1]]537    ; CHECK-NEXT: SI_RETURN538    undef %0.sub0:vreg_64 = COPY $vgpr0539    %0.sub1:vreg_64 = COPY $vgpr1540    undef %2.sub0:areg_64 = COPY %0.sub0541    %2.sub1:areg_64 = COPY %0.sub1542    INLINEASM &"; use $0", 0 /* attdialect */, 3407881 /* reguse:AReg_64 */, killed %2543    SI_RETURN544 545...546 547---548name: copy_vgpr32_to_areg64_align2_coalesce_with_av64_align2_sub549tracksRegLiveness: true550body:             |551  bb.0:552    liveins: $vgpr0, $vgpr1553 554    ; CHECK-LABEL: name: copy_vgpr32_to_areg64_align2_coalesce_with_av64_align2_sub555    ; CHECK: liveins: $vgpr0, $vgpr1556    ; CHECK-NEXT: {{  $}}557    ; CHECK-NEXT: undef [[COPY:%[0-9]+]].sub0:vreg_64 = COPY $vgpr0558    ; CHECK-NEXT: [[COPY:%[0-9]+]].sub1:vreg_64 = COPY $vgpr1559    ; CHECK-NEXT: undef [[COPY1:%[0-9]+]].sub0:areg_64_align2 = COPY [[COPY]].sub0560    ; CHECK-NEXT: [[COPY1:%[0-9]+]].sub1:areg_64_align2 = COPY [[COPY]].sub1561    ; CHECK-NEXT: INLINEASM &"; use $0", 0 /* attdialect */, 3997705 /* reguse:AReg_64_Align2 */, [[COPY1]]562    ; CHECK-NEXT: SI_RETURN563    undef %0.sub0:vreg_64 = COPY $vgpr0564    %0.sub1:vreg_64 = COPY $vgpr1565    undef %2.sub0:areg_64_align2 = COPY %0.sub0566    %2.sub1:areg_64_align2 = COPY %0.sub1567    INLINEASM &"; use $0", 0 /* attdialect */, 3997705 /* reguse:AReg_64_Align2 */, %2568    SI_RETURN569 570...571 572---573name: copy_vgpr32_to_areg96_coalesce_with_av96_sub574tracksRegLiveness: true575body:             |576  bb.0:577    liveins: $vgpr0, $vgpr1, $vgpr2578 579    ; CHECK-LABEL: name: copy_vgpr32_to_areg96_coalesce_with_av96_sub580    ; CHECK: liveins: $vgpr0, $vgpr1, $vgpr2581    ; CHECK-NEXT: {{  $}}582    ; CHECK-NEXT: undef [[COPY:%[0-9]+]].sub0:vreg_96 = COPY $vgpr0583    ; CHECK-NEXT: [[COPY:%[0-9]+]].sub1:vreg_96 = COPY $vgpr1584    ; CHECK-NEXT: [[COPY:%[0-9]+]].sub2:vreg_96 = COPY $vgpr2585    ; CHECK-NEXT: undef [[COPY1:%[0-9]+]].sub0:areg_96 = COPY [[COPY]].sub0586    ; CHECK-NEXT: [[COPY1:%[0-9]+]].sub1:areg_96 = COPY [[COPY]].sub1587    ; CHECK-NEXT: [[COPY1:%[0-9]+]].sub2:areg_96 = COPY [[COPY]].sub2588    ; CHECK-NEXT: INLINEASM &"; use $0", 0 /* attdialect */, 5505033 /* reguse:AReg_96 */, [[COPY1]]589    ; CHECK-NEXT: SI_RETURN590    undef %0.sub0:vreg_96 =COPY $vgpr0591    %0.sub1:vreg_96 = COPY $vgpr1592    %0.sub2:vreg_96 = COPY $vgpr2593    undef %3.sub0:areg_96 = COPY %0.sub0594    %3.sub1:areg_96 = COPY %0.sub1595    %3.sub2:areg_96 = COPY %0.sub2596    INLINEASM &"; use $0", 0 /* attdialect */, 5505033 /* reguse:AReg_96 */, %3597    SI_RETURN598 599...600 601---602name: copy_vgpr32_to_areg96_coalesce_with_av96_align2_sub603tracksRegLiveness: true604body:             |605  bb.0:606    liveins: $vgpr0, $vgpr1, $vgpr2607 608    ; CHECK-LABEL: name: copy_vgpr32_to_areg96_coalesce_with_av96_align2_sub609    ; CHECK: liveins: $vgpr0, $vgpr1, $vgpr2610    ; CHECK-NEXT: {{  $}}611    ; CHECK-NEXT: undef [[COPY:%[0-9]+]].sub0:vreg_96 = COPY $vgpr0612    ; CHECK-NEXT: [[COPY:%[0-9]+]].sub1:vreg_96 = COPY $vgpr1613    ; CHECK-NEXT: [[COPY:%[0-9]+]].sub2:vreg_96 = COPY $vgpr2614    ; CHECK-NEXT: undef [[COPY1:%[0-9]+]].sub0:areg_96_align2 = COPY [[COPY]].sub0615    ; CHECK-NEXT: [[COPY1:%[0-9]+]].sub1:areg_96_align2 = COPY [[COPY]].sub1616    ; CHECK-NEXT: [[COPY1:%[0-9]+]].sub2:areg_96_align2 = COPY [[COPY]].sub2617    ; CHECK-NEXT: INLINEASM &"; use $0", 0 /* attdialect */, 5832713 /* reguse:AReg_96_Align2 */, [[COPY1]]618    ; CHECK-NEXT: SI_RETURN619    undef %0.sub0:vreg_96 =COPY $vgpr0620    %0.sub1:vreg_96 = COPY $vgpr1621    %0.sub2:vreg_96 = COPY $vgpr2622    undef %3.sub0:areg_96_align2 = COPY %0.sub0623    %3.sub1:areg_96_align2 = COPY %0.sub1624    %3.sub2:areg_96_align2 = COPY %0.sub2625    INLINEASM &"; use $0", 0 /* attdialect */, 5832713 /* reguse:AReg_96_Align2 */, %3626    SI_RETURN627 628...629 630---631name: copy_vgpr64_to_areg64_coalesce_with_av128_sub632tracksRegLiveness: true633body:             |634  bb.0:635    liveins: $vgpr0_vgpr1, $vgpr2_vgpr3636 637    ; CHECK-LABEL: name: copy_vgpr64_to_areg64_coalesce_with_av128_sub638    ; CHECK: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3639    ; CHECK-NEXT: {{  $}}640    ; CHECK-NEXT: undef [[COPY:%[0-9]+]].sub0_sub1:vreg_128 = COPY $vgpr0_vgpr1641    ; CHECK-NEXT: [[COPY:%[0-9]+]].sub2_sub3:vreg_128 = COPY $vgpr2_vgpr3642    ; CHECK-NEXT: undef [[COPY1:%[0-9]+]].sub0_sub1:areg_128 = COPY [[COPY]].sub0_sub1643    ; CHECK-NEXT: [[COPY1:%[0-9]+]].sub2_sub3:areg_128 = COPY [[COPY]].sub2_sub3644    ; CHECK-NEXT: INLINEASM &"; use $0", 0 /* attdialect */, 7929865 /* reguse:AReg_128 */, [[COPY1]]645    ; CHECK-NEXT: SI_RETURN646    undef %0.sub0_sub1:vreg_128 =COPY $vgpr0_vgpr1647    %0.sub2_sub3:vreg_128 = COPY $vgpr2_vgpr3648    undef %2.sub0_sub1:areg_128 = COPY %0.sub0_sub1649    %2.sub2_sub3:areg_128 = COPY %0.sub2_sub3650    INLINEASM &"; use $0", 0 /* attdialect */, 7929865 /* reguse:AReg_128 */, killed %2651    SI_RETURN652 653...654 655 656 657---658name: copy_vgpr64_to_areg64_align2_coalesce_with_av128_align2_sub659tracksRegLiveness: true660body:             |661  bb.0:662    liveins: $vgpr0_vgpr1, $vgpr2_vgpr3663 664    ; CHECK-LABEL: name: copy_vgpr64_to_areg64_align2_coalesce_with_av128_align2_sub665    ; CHECK: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3666    ; CHECK-NEXT: {{  $}}667    ; CHECK-NEXT: undef [[COPY:%[0-9]+]].sub0:vreg_128 = COPY $vgpr0_vgpr1668    ; CHECK-NEXT: [[COPY:%[0-9]+]].sub1:vreg_128 = COPY $vgpr2_vgpr3669    ; CHECK-NEXT: undef [[COPY1:%[0-9]+]].sub0_sub1:areg_128_align2 = COPY [[COPY]].sub0670    ; CHECK-NEXT: [[COPY1:%[0-9]+]].sub2_sub3:areg_128_align2 = COPY [[COPY]].sub1671    ; CHECK-NEXT: INLINEASM &"; use $0", 0 /* attdialect */, 8650761 /* reguse:AReg_128_Align2 */, [[COPY1]]672    ; CHECK-NEXT: SI_RETURN673    undef %0.sub0:vreg_128 =COPY $vgpr0_vgpr1674    %0.sub1:vreg_128 = COPY $vgpr2_vgpr3675    undef %2.sub0_sub1:areg_128_align2 = COPY %0.sub0676    %2.sub2_sub3:areg_128_align2 = COPY %0.sub1677    INLINEASM &"; use $0", 0 /* attdialect */, 8650761 /* reguse:AReg_128_Align2 */, %2678    SI_RETURN679 680...681 682---683name: copy_sgpr32_to_areg64_align2_sub684tracksRegLiveness: true685body:             |686  bb.0:687    liveins: $sgpr8, $sgpr9688 689    ; CHECK-LABEL: name: copy_sgpr32_to_areg64_align2_sub690    ; CHECK: liveins: $sgpr8, $sgpr9691    ; CHECK-NEXT: {{  $}}692    ; CHECK-NEXT: undef [[COPY:%[0-9]+]].sub0:sreg_64 = COPY $sgpr8693    ; CHECK-NEXT: [[COPY:%[0-9]+]].sub1:sreg_64 = COPY $sgpr9694    ; CHECK-NEXT: undef [[COPY1:%[0-9]+]].sub0:areg_64_align2 = COPY [[COPY]].sub0695    ; CHECK-NEXT: [[COPY1:%[0-9]+]].sub1:areg_64_align2 = COPY [[COPY]].sub1696    ; CHECK-NEXT: INLINEASM &"; use $0", 0 /* attdialect */, 3997705 /* reguse:AReg_64_Align2 */, [[COPY1]]697    ; CHECK-NEXT: SI_RETURN698    undef %0.sub0:sreg_64 = COPY $sgpr8699    %0.sub1:sreg_64 = COPY $sgpr9700    undef %2.sub0:areg_64_align2 = COPY %0.sub0701    %2.sub1:areg_64_align2 = COPY %0.sub1702    INLINEASM &"; use $0", 0 /* attdialect */, 3997705 /* reguse:AReg_64_Align2 */, %2703    SI_RETURN704 705...706 707---708name: copy_vgpr32_vgpr64_to_areg96_coalesce_with_av96_sub709tracksRegLiveness: true710body:             |711  bb.0:712    liveins: $vgpr0, $vgpr1_vgpr2713 714    ; CHECK-LABEL: name: copy_vgpr32_vgpr64_to_areg96_coalesce_with_av96_sub715    ; CHECK: liveins: $vgpr0, $vgpr1_vgpr2716    ; CHECK-NEXT: {{  $}}717    ; CHECK-NEXT: undef [[COPY:%[0-9]+]].sub0:vreg_96 = COPY $vgpr0718    ; CHECK-NEXT: [[COPY:%[0-9]+]].sub1_sub2:vreg_96 = COPY $vgpr1_vgpr2719    ; CHECK-NEXT: undef [[COPY1:%[0-9]+]].sub0:areg_96 = COPY [[COPY]].sub0720    ; CHECK-NEXT: [[COPY1:%[0-9]+]].sub1_sub2:areg_96 = COPY [[COPY]].sub1_sub2721    ; CHECK-NEXT: INLINEASM &"; use $0", 0 /* attdialect */, 5505033 /* reguse:AReg_96 */, [[COPY1]]722    ; CHECK-NEXT: SI_RETURN723    undef %0.sub0:vreg_96 =COPY $vgpr0724    %0.sub1_sub2:vreg_96 = COPY $vgpr1_vgpr2725    undef %2.sub0:areg_96 = COPY %0.sub0726    %2.sub1_sub2:areg_96 = COPY %0.sub1_sub2727    INLINEASM &"; use $0", 0 /* attdialect */, 5505033 /* reguse:AReg_96 */, %2728    SI_RETURN729 730...731 732---733name: copy_vgpr32_vgpr64_to_areg96_coalesce_with_av96_align2_sub734tracksRegLiveness: true735body:             |736  bb.0:737    liveins: $vgpr0, $vgpr1_vgpr2738 739    ; CHECK-LABEL: name: copy_vgpr32_vgpr64_to_areg96_coalesce_with_av96_align2_sub740    ; CHECK: liveins: $vgpr0, $vgpr1_vgpr2741    ; CHECK-NEXT: {{  $}}742    ; CHECK-NEXT: undef [[COPY:%[0-9]+]].sub0:vreg_96 = COPY $vgpr0743    ; CHECK-NEXT: [[COPY:%[0-9]+]].sub1_sub2:vreg_96 = COPY $vgpr1_vgpr2744    ; CHECK-NEXT: undef [[COPY1:%[0-9]+]].sub0:areg_96_align2 = COPY [[COPY]].sub0745    ; CHECK-NEXT: [[COPY1:%[0-9]+]].sub1_sub2:areg_96_align2 = COPY [[COPY]].sub1_sub2746    ; CHECK-NEXT: INLINEASM &"; use $0", 0 /* attdialect */, 3997705 /* reguse:AReg_64_Align2 */, [[COPY1]]747    ; CHECK-NEXT: SI_RETURN748    undef %0.sub0:vreg_96 =COPY $vgpr0749    %0.sub1_sub2:vreg_96 = COPY $vgpr1_vgpr2750    undef %2.sub0:areg_96_align2 = COPY %0.sub0751    %2.sub1_sub2:areg_96_align2 = COPY %0.sub1_sub2752    INLINEASM &"; use $0", 0 /* attdialect */, 3997705 /* reguse:AReg_64_Align2 */, %2753    SI_RETURN754 755...756 757---758name: copy_vgpr64_vgpr32_to_areg96_coalesce_with_av96_sub759tracksRegLiveness: true760body:             |761  bb.0:762    liveins: $vgpr0_vgpr1, $vgpr2763 764    ; CHECK-LABEL: name: copy_vgpr64_vgpr32_to_areg96_coalesce_with_av96_sub765    ; CHECK: liveins: $vgpr0_vgpr1, $vgpr2766    ; CHECK-NEXT: {{  $}}767    ; CHECK-NEXT: undef [[COPY:%[0-9]+]].sub0_sub1:vreg_96 = COPY $vgpr0_vgpr1768    ; CHECK-NEXT: [[COPY:%[0-9]+]].sub2:vreg_96 = COPY $vgpr2769    ; CHECK-NEXT: undef [[COPY1:%[0-9]+]].sub0_sub1:areg_96 = COPY [[COPY]].sub0_sub1770    ; CHECK-NEXT: [[COPY1:%[0-9]+]].sub2:areg_96 = COPY [[COPY]].sub2771    ; CHECK-NEXT: INLINEASM &"; use $0", 0 /* attdialect */, 5505033 /* reguse:AReg_96 */, [[COPY1]]772    ; CHECK-NEXT: SI_RETURN773    undef %0.sub0_sub1:vreg_96 = COPY $vgpr0_vgpr1774    %0.sub2:vreg_96 = COPY $vgpr2775    undef %2.sub0_sub1:areg_96 = COPY %0.sub0_sub1776    %2.sub2:areg_96 = COPY %0.sub2777    INLINEASM &"; use $0", 0 /* attdialect */, 5505033 /* reguse:AReg_96 */, %2778    SI_RETURN779 780...781 782---783name: copy_vgpr64_vgpr32_to_areg96_coalesce_with_av96_align2_sub784tracksRegLiveness: true785body:             |786  bb.0:787    liveins: $vgpr0, $vgpr1_vgpr2788 789    ; CHECK-LABEL: name: copy_vgpr64_vgpr32_to_areg96_coalesce_with_av96_align2_sub790    ; CHECK: liveins: $vgpr0, $vgpr1_vgpr2791    ; CHECK-NEXT: {{  $}}792    ; CHECK-NEXT: undef [[COPY:%[0-9]+]].sub0_sub1:vreg_96 = COPY $vgpr0_vgpr1793    ; CHECK-NEXT: [[COPY:%[0-9]+]].sub2:vreg_96 = COPY $vgpr2794    ; CHECK-NEXT: undef [[COPY1:%[0-9]+]].sub0_sub1:areg_96_align2 = COPY [[COPY]].sub0_sub1795    ; CHECK-NEXT: [[COPY1:%[0-9]+]].sub2:areg_96_align2 = COPY [[COPY]].sub2796    ; CHECK-NEXT: INLINEASM &"; use $0", 0 /* attdialect */, 3997705 /* reguse:AReg_64_Align2 */, [[COPY1]]797    ; CHECK-NEXT: SI_RETURN798    undef %0.sub0_sub1:vreg_96 = COPY $vgpr0_vgpr1799    %0.sub2:vreg_96 = COPY $vgpr2800    undef %2.sub0_sub1:areg_96_align2 = COPY %0.sub0_sub1801    %2.sub2:areg_96_align2 = COPY %0.sub2802    INLINEASM &"; use $0", 0 /* attdialect */, 3997705 /* reguse:AReg_64_Align2 */, %2803    SI_RETURN804 805...806 807---808name: copy_vgpr32_x2_to_areg64_sub809tracksRegLiveness: true810body:             |811  bb.0:812    liveins: $vgpr0813 814    ; CHECK-LABEL: name: copy_vgpr32_x2_to_areg64_sub815    ; CHECK: liveins: $vgpr0816    ; CHECK-NEXT: {{  $}}817    ; CHECK-NEXT: undef [[COPY:%[0-9]+]].sub0:vreg_64 = COPY $vgpr0818    ; CHECK-NEXT: undef [[COPY1:%[0-9]+]].sub0:areg_64 = COPY [[COPY]].sub0819    ; CHECK-NEXT: [[COPY1:%[0-9]+]].sub1:areg_64 = COPY [[COPY]].sub0820    ; CHECK-NEXT: INLINEASM &"; use $0", 0 /* attdialect */, 3407881 /* reguse:AReg_64 */, [[COPY1]]821    ; CHECK-NEXT: SI_RETURN822    undef %0.sub0:vreg_64 = COPY $vgpr0823    undef %2.sub0:areg_64 = COPY %0.sub0824    %2.sub1:areg_64 = COPY %0.sub0825    INLINEASM &"; use $0", 0 /* attdialect */, 3407881 /* reguse:AReg_64 */, killed %2826    SI_RETURN827 828...829 830---831name: copy_vgpr32_x3_to_areg96_sub832tracksRegLiveness: true833body:             |834  bb.0:835    liveins: $vgpr0836 837    ; CHECK-LABEL: name: copy_vgpr32_x3_to_areg96_sub838    ; CHECK: liveins: $vgpr0839    ; CHECK-NEXT: {{  $}}840    ; CHECK-NEXT: undef [[COPY:%[0-9]+]].sub0:vreg_64 = COPY $vgpr0841    ; CHECK-NEXT: undef [[COPY1:%[0-9]+]].sub0:areg_96 = COPY [[COPY]].sub0842    ; CHECK-NEXT: [[COPY1:%[0-9]+]].sub1:areg_96 = COPY [[COPY]].sub0843    ; CHECK-NEXT: [[COPY1:%[0-9]+]].sub2:areg_96 = COPY [[COPY]].sub0844    ; CHECK-NEXT: INLINEASM &"; use $0", 0 /* attdialect */, 5505033 /* reguse:AReg_96 */, [[COPY1]]845    ; CHECK-NEXT: SI_RETURN846    undef %0.sub0:vreg_64 = COPY $vgpr0847    undef %1.sub0:areg_96 = COPY %0.sub0848    %1.sub1:areg_96 = COPY %0.sub0849    %1.sub2:areg_96 = COPY %0.sub0850    INLINEASM &"; use $0", 0 /* attdialect */, 5505033 /* reguse:AReg_96 */, %1851    SI_RETURN852 853...854 855---856name: copy_vgpr32_x3_to_areg96_align2_sub857tracksRegLiveness: true858body:             |859  bb.0:860    liveins: $vgpr0861 862    ; CHECK-LABEL: name: copy_vgpr32_x3_to_areg96_align2_sub863    ; CHECK: liveins: $vgpr0864    ; CHECK-NEXT: {{  $}}865    ; CHECK-NEXT: undef [[COPY:%[0-9]+]].sub0:vreg_64 = COPY $vgpr0866    ; CHECK-NEXT: undef [[COPY1:%[0-9]+]].sub0:areg_96_align2 = COPY [[COPY]].sub0867    ; CHECK-NEXT: [[COPY1:%[0-9]+]].sub1:areg_96_align2 = COPY [[COPY]].sub0868    ; CHECK-NEXT: INLINEASM &"; use $0", 0 /* attdialect */, 5832713 /* reguse:AReg_96_Align2 */, [[COPY1]]869    ; CHECK-NEXT: SI_RETURN870    undef %0.sub0:vreg_64 = COPY $vgpr0871    undef %1.sub0:areg_96_align2 = COPY %0.sub0872    %1.sub1:areg_96_align2 = COPY %0.sub0873    INLINEASM &"; use $0", 0 /* attdialect */, 5832713 /* reguse:AReg_96_Align2 */, %1874    SI_RETURN875 876...877 878---879name: copy_vgpr32_x4_to_areg128_sub880tracksRegLiveness: true881body:             |882  bb.0:883    liveins: $vgpr0884 885    ; CHECK-LABEL: name: copy_vgpr32_x4_to_areg128_sub886    ; CHECK: liveins: $vgpr0887    ; CHECK-NEXT: {{  $}}888    ; CHECK-NEXT: undef [[COPY:%[0-9]+]].sub0:vreg_64 = COPY $vgpr0889    ; CHECK-NEXT: undef [[COPY1:%[0-9]+]].sub0:areg_128 = COPY [[COPY]].sub0890    ; CHECK-NEXT: [[COPY1:%[0-9]+]].sub1:areg_128 = COPY [[COPY]].sub0891    ; CHECK-NEXT: [[COPY1:%[0-9]+]].sub2:areg_128 = COPY [[COPY]].sub0892    ; CHECK-NEXT: [[COPY1:%[0-9]+]].sub3:areg_128 = COPY [[COPY]].sub0893    ; CHECK-NEXT: INLINEASM &"; use $0", 0 /* attdialect */, 7929865 /* reguse:AReg_128 */, [[COPY1]]894    ; CHECK-NEXT: SI_RETURN895    undef %0.sub0:vreg_64 = COPY $vgpr0896    undef %1.sub0:areg_128 = COPY %0.sub0897    %1.sub1:areg_128 = COPY %0.sub0898    %1.sub2:areg_128 = COPY %0.sub0899    %1.sub3:areg_128 = COPY %0.sub0900    INLINEASM &"; use $0", 0 /* attdialect */, 7929865 /* reguse:AReg_128 */, killed %1901    SI_RETURN902 903...904 905---906name: copy_vgpr32_x4_to_areg128_align2_sub907tracksRegLiveness: true908body:             |909  bb.0:910    liveins: $vgpr0911 912    ; CHECK-LABEL: name: copy_vgpr32_x4_to_areg128_align2_sub913    ; CHECK: liveins: $vgpr0914    ; CHECK-NEXT: {{  $}}915    ; CHECK-NEXT: undef [[COPY:%[0-9]+]].sub0:vreg_64 = COPY $vgpr0916    ; CHECK-NEXT: undef [[COPY1:%[0-9]+]].sub0:areg_128_align2 = COPY [[COPY]].sub0917    ; CHECK-NEXT: [[COPY1:%[0-9]+]].sub1:areg_128_align2 = COPY [[COPY]].sub0918    ; CHECK-NEXT: [[COPY1:%[0-9]+]].sub2:areg_128_align2 = COPY [[COPY]].sub0919    ; CHECK-NEXT: [[COPY1:%[0-9]+]].sub3:areg_128_align2 = COPY [[COPY]].sub0920    ; CHECK-NEXT: INLINEASM &"; use $0", 0 /* attdialect */, 8650761 /* reguse:AReg_128_Align2 */, [[COPY1]]921    ; CHECK-NEXT: SI_RETURN922    undef %0.sub0:vreg_64 = COPY $vgpr0923    undef %1.sub0:areg_128_align2 = COPY %0.sub0924    %1.sub1:areg_128_align2 = COPY %0.sub0925    %1.sub2:areg_128_align2 = COPY %0.sub0926    %1.sub3:areg_128_align2 = COPY %0.sub0927    INLINEASM &"; use $0", 0 /* attdialect */, 8650761 /* reguse:AReg_128_Align2 */, %1928    SI_RETURN929 930...931 932---933name: copy_vgpr32_to_areg64_coalesce_with_av64_both_sub934tracksRegLiveness: true935body:             |936  bb.0:937    liveins: $vgpr0, $vgpr1938 939    ; CHECK-LABEL: name: copy_vgpr32_to_areg64_coalesce_with_av64_both_sub940    ; CHECK: liveins: $vgpr0, $vgpr1941    ; CHECK-NEXT: {{  $}}942    ; CHECK-NEXT: undef [[COPY:%[0-9]+]].sub0:vreg_64 = COPY $vgpr0943    ; CHECK-NEXT: [[COPY:%[0-9]+]].sub1:vreg_64 = COPY $vgpr1944    ; CHECK-NEXT: undef [[COPY1:%[0-9]+]].sub0:areg_64 = COPY [[COPY]].sub0945    ; CHECK-NEXT: [[COPY1:%[0-9]+]].sub1:areg_64 = COPY [[COPY]].sub1946    ; CHECK-NEXT: INLINEASM &"; use $0", 0 /* attdialect */, 3407881 /* reguse:AReg_64 */, [[COPY1]]947    ; CHECK-NEXT: SI_RETURN948    undef %0.sub0:vreg_64 = COPY $vgpr0949    %0.sub1:vreg_64 = COPY $vgpr1950    undef %2.sub0:areg_64 = COPY %0.sub0951    %2.sub1:areg_64 = COPY %0.sub1952    INLINEASM &"; use $0", 0 /* attdialect */, 3407881 /* reguse:AReg_64 */, killed %2953    SI_RETURN954 955...956 957---958name: copy_vgpr32_to_areg64_align2_coalesce_with_av64_align2_both_sub959tracksRegLiveness: true960body:             |961  bb.0:962    liveins: $vgpr0, $vgpr1963 964    ; CHECK-LABEL: name: copy_vgpr32_to_areg64_align2_coalesce_with_av64_align2_both_sub965    ; CHECK: liveins: $vgpr0, $vgpr1966    ; CHECK-NEXT: {{  $}}967    ; CHECK-NEXT: undef [[COPY:%[0-9]+]].sub0:vreg_64_align2 = COPY $vgpr0968    ; CHECK-NEXT: [[COPY:%[0-9]+]].sub1:vreg_64_align2 = COPY $vgpr1969    ; CHECK-NEXT: undef [[COPY1:%[0-9]+]].sub0:areg_64_align2 = COPY [[COPY]].sub0970    ; CHECK-NEXT: [[COPY1:%[0-9]+]].sub1:areg_64_align2 = COPY [[COPY]].sub1971    ; CHECK-NEXT: INLINEASM &"; use $0", 0 /* attdialect */, 3997705 /* reguse:AReg_64_Align2 */, [[COPY1]]972    ; CHECK-NEXT: SI_RETURN973    undef %0.sub0:vreg_64_align2 = COPY $vgpr0974    %0.sub1:vreg_64_align2 = COPY $vgpr1975    undef %2.sub0:areg_64_align2 = COPY %0.sub0976    %2.sub1:areg_64_align2 = COPY %0.sub1977    INLINEASM &"; use $0", 0 /* attdialect */, 3997705 /* reguse:AReg_64_Align2 */, %2978    SI_RETURN979 980...981 982---983name: copy_vgpr32_to_areg96_coalesce_with_av96_both_sub984tracksRegLiveness: true985body:             |986  bb.0:987    liveins: $vgpr0, $vgpr1, $vgpr2988 989    ; CHECK-LABEL: name: copy_vgpr32_to_areg96_coalesce_with_av96_both_sub990    ; CHECK: liveins: $vgpr0, $vgpr1, $vgpr2991    ; CHECK-NEXT: {{  $}}992    ; CHECK-NEXT: undef [[COPY:%[0-9]+]].sub0:vreg_96 = COPY $vgpr0993    ; CHECK-NEXT: [[COPY:%[0-9]+]].sub1:vreg_96 = COPY $vgpr1994    ; CHECK-NEXT: [[COPY:%[0-9]+]].sub2:vreg_96 = COPY $vgpr2995    ; CHECK-NEXT: undef [[COPY1:%[0-9]+]].sub0:areg_96 = COPY [[COPY]].sub0996    ; CHECK-NEXT: [[COPY1:%[0-9]+]].sub1:areg_96 = COPY [[COPY]].sub1997    ; CHECK-NEXT: [[COPY1:%[0-9]+]].sub2:areg_96 = COPY [[COPY]].sub2998    ; CHECK-NEXT: INLINEASM &"; use $0", 0 /* attdialect */, 5505033 /* reguse:AReg_96 */, [[COPY1]]999    ; CHECK-NEXT: SI_RETURN1000    undef %0.sub0:vreg_96 = COPY $vgpr01001    %0.sub1:vreg_96 = COPY $vgpr11002    %0.sub2:vreg_96 = COPY $vgpr21003    undef %3.sub0:areg_96 = COPY %0.sub01004    %3.sub1:areg_96 = COPY %0.sub11005    %3.sub2:areg_96 = COPY %0.sub21006    INLINEASM &"; use $0", 0 /* attdialect */, 5505033 /* reguse:AReg_96 */, %31007    SI_RETURN1008 1009...1010 1011---1012name: copy_vgpr32_to_areg96_coalesce_with_av96_align2_both_sub1013tracksRegLiveness: true1014body:             |1015  bb.0:1016    liveins: $vgpr0, $vgpr1, $vgpr21017 1018    ; CHECK-LABEL: name: copy_vgpr32_to_areg96_coalesce_with_av96_align2_both_sub1019    ; CHECK: liveins: $vgpr0, $vgpr1, $vgpr21020    ; CHECK-NEXT: {{  $}}1021    ; CHECK-NEXT: undef [[COPY:%[0-9]+]].sub0:vreg_96_align2 = COPY $vgpr01022    ; CHECK-NEXT: [[COPY:%[0-9]+]].sub1:vreg_96_align2 = COPY $vgpr11023    ; CHECK-NEXT: [[COPY:%[0-9]+]].sub2:vreg_96_align2 = COPY $vgpr21024    ; CHECK-NEXT: undef [[COPY1:%[0-9]+]].sub0:areg_96_align2 = COPY [[COPY]].sub01025    ; CHECK-NEXT: [[COPY1:%[0-9]+]].sub1:areg_96_align2 = COPY [[COPY]].sub11026    ; CHECK-NEXT: [[COPY1:%[0-9]+]].sub2:areg_96_align2 = COPY [[COPY]].sub21027    ; CHECK-NEXT: INLINEASM &"; use $0", 0 /* attdialect */, 5832713 /* reguse:AReg_96_Align2 */, [[COPY1]]1028    ; CHECK-NEXT: SI_RETURN1029    undef %0.sub0:vreg_96_align2 = COPY $vgpr01030    %0.sub1:vreg_96_align2 = COPY $vgpr11031    %0.sub2:vreg_96_align2 = COPY $vgpr21032    undef %3.sub0:areg_96_align2 = COPY %0.sub01033    %3.sub1:areg_96_align2 = COPY %0.sub11034    %3.sub2:areg_96_align2 = COPY %0.sub21035    INLINEASM &"; use $0", 0 /* attdialect */, 5832713 /* reguse:AReg_96_Align2 */, %31036    SI_RETURN1037 1038...1039 1040---1041name: copy_vgpr64_to_areg64_coalesce_with_av128_both_sub1042tracksRegLiveness: true1043body:             |1044  bb.0:1045    liveins: $vgpr0_vgpr1, $vgpr2_vgpr31046 1047    ; CHECK-LABEL: name: copy_vgpr64_to_areg64_coalesce_with_av128_both_sub1048    ; CHECK: liveins: $vgpr0_vgpr1, $vgpr2_vgpr31049    ; CHECK-NEXT: {{  $}}1050    ; CHECK-NEXT: undef [[COPY:%[0-9]+]].sub0_sub1:vreg_128 = COPY $vgpr0_vgpr11051    ; CHECK-NEXT: [[COPY:%[0-9]+]].sub2_sub3:vreg_128 = COPY $vgpr2_vgpr31052    ; CHECK-NEXT: undef [[COPY1:%[0-9]+]].sub0_sub1:areg_128 = COPY [[COPY]].sub0_sub11053    ; CHECK-NEXT: [[COPY1:%[0-9]+]].sub2_sub3:areg_128 = COPY [[COPY]].sub2_sub31054    ; CHECK-NEXT: INLINEASM &"; use $0", 0 /* attdialect */, 7929865 /* reguse:AReg_128 */, [[COPY1]]1055    ; CHECK-NEXT: SI_RETURN1056    undef %0.sub0_sub1:vreg_128 = COPY $vgpr0_vgpr11057    %0.sub2_sub3:vreg_128 = COPY $vgpr2_vgpr31058    undef %2.sub0_sub1:areg_128 = COPY %0.sub0_sub11059    %2.sub2_sub3:areg_128 = COPY %0.sub2_sub31060    INLINEASM &"; use $0", 0 /* attdialect */, 7929865 /* reguse:AReg_128 */, killed %21061    SI_RETURN1062 1063...1064 1065---1066name: copy_vgpr64_to_areg64_align2_coalesce_with_av128_align2_both_sub1067tracksRegLiveness: true1068body:             |1069  bb.0:1070    liveins: $vgpr0_vgpr1, $vgpr2_vgpr31071 1072    ; CHECK-LABEL: name: copy_vgpr64_to_areg64_align2_coalesce_with_av128_align2_both_sub1073    ; CHECK: liveins: $vgpr0_vgpr1, $vgpr2_vgpr31074    ; CHECK-NEXT: {{  $}}1075    ; CHECK-NEXT: undef [[COPY:%[0-9]+]].sub0_sub1:vreg_128_align2 = COPY $vgpr0_vgpr11076    ; CHECK-NEXT: [[COPY:%[0-9]+]].sub2_sub3:vreg_128_align2 = COPY $vgpr2_vgpr31077    ; CHECK-NEXT: undef [[COPY1:%[0-9]+]].sub0_sub1:areg_128_align2 = COPY [[COPY]].sub0_sub11078    ; CHECK-NEXT: [[COPY1:%[0-9]+]].sub2_sub3:areg_128_align2 = COPY [[COPY]].sub2_sub31079    ; CHECK-NEXT: INLINEASM &"; use $0", 0 /* attdialect */, 8650761 /* reguse:AReg_128_Align2 */, [[COPY1]]1080    ; CHECK-NEXT: SI_RETURN1081    undef %0.sub0_sub1:vreg_128_align2 = COPY $vgpr0_vgpr11082    %0.sub2_sub3:vreg_128_align2 = COPY $vgpr2_vgpr31083    undef %2.sub0_sub1:areg_128_align2 = COPY %0.sub0_sub11084    %2.sub2_sub3:areg_128_align2 = COPY %0.sub2_sub31085    INLINEASM &"; use $0", 0 /* attdialect */, 8650761 /* reguse:AReg_128_Align2 */, %21086    SI_RETURN1087 1088...1089 1090---1091name: copy_sgpr32_to_areg64_align2_both_sub1092tracksRegLiveness: true1093body:             |1094  bb.0:1095    liveins: $sgpr8, $sgpr91096 1097    ; CHECK-LABEL: name: copy_sgpr32_to_areg64_align2_both_sub1098    ; CHECK: liveins: $sgpr8, $sgpr91099    ; CHECK-NEXT: {{  $}}1100    ; CHECK-NEXT: undef [[COPY:%[0-9]+]].sub0:sreg_64 = COPY $sgpr81101    ; CHECK-NEXT: [[COPY:%[0-9]+]].sub1:sreg_64 = COPY $sgpr91102    ; CHECK-NEXT: undef [[COPY1:%[0-9]+]].sub0:areg_64_align2 = COPY [[COPY]].sub01103    ; CHECK-NEXT: [[COPY1:%[0-9]+]].sub1:areg_64_align2 = COPY [[COPY]].sub11104    ; CHECK-NEXT: INLINEASM &"; use $0", 0 /* attdialect */, 3997705 /* reguse:AReg_64_Align2 */, [[COPY1]]1105    ; CHECK-NEXT: SI_RETURN1106    undef %0.sub0:sreg_64 = COPY $sgpr81107    %0.sub1:sreg_64 = COPY $sgpr91108    undef %2.sub0:areg_64_align2 = COPY %0.sub01109    %2.sub1:areg_64_align2 = COPY %0.sub11110    INLINEASM &"; use $0", 0 /* attdialect */, 3997705 /* reguse:AReg_64_Align2 */, %21111    SI_RETURN1112 1113...1114 1115---1116name: copy_vgpr32_vgpr64_to_areg96_coalesce_with_av96_both_sub1117tracksRegLiveness: true1118body:             |1119  bb.0:1120    liveins: $vgpr0, $vgpr1_vgpr21121 1122    ; CHECK-LABEL: name: copy_vgpr32_vgpr64_to_areg96_coalesce_with_av96_both_sub1123    ; CHECK: liveins: $vgpr0, $vgpr1_vgpr21124    ; CHECK-NEXT: {{  $}}1125    ; CHECK-NEXT: undef [[COPY:%[0-9]+]].sub0:vreg_96 = COPY $vgpr01126    ; CHECK-NEXT: [[COPY:%[0-9]+]].sub1_sub2:vreg_96 = COPY $vgpr1_vgpr21127    ; CHECK-NEXT: undef [[COPY1:%[0-9]+]].sub0:areg_96 = COPY [[COPY]].sub01128    ; CHECK-NEXT: [[COPY1:%[0-9]+]].sub1_sub2:areg_96 = COPY [[COPY]].sub1_sub21129    ; CHECK-NEXT: INLINEASM &"; use $0", 0 /* attdialect */, 5505033 /* reguse:AReg_96 */, [[COPY1]]1130    ; CHECK-NEXT: SI_RETURN1131    undef %0.sub0:vreg_96 = COPY $vgpr01132    %0.sub1_sub2:vreg_96 = COPY $vgpr1_vgpr21133    undef %2.sub0:areg_96 = COPY %0.sub01134    %2.sub1_sub2:areg_96 = COPY %0.sub1_sub21135    INLINEASM &"; use $0", 0 /* attdialect */, 5505033 /* reguse:AReg_96 */, %21136    SI_RETURN1137 1138...1139 1140name: copy_vgpr32_vgpr64_to_areg96_coalesce_with_av96_shuffle_both_sub1141tracksRegLiveness: true1142body:             |1143  bb.0:1144    liveins: $vgpr0, $vgpr1_vgpr21145 1146    ; CHECK-LABEL: name: copy_vgpr32_vgpr64_to_areg96_coalesce_with_av961147    ; CHECK: liveins: $vgpr0, $vgpr1_vgpr21148    ; CHECK-NEXT: {{  $}}1149    ; CHECK-NEXT: [[COPY:%[0-9]+]].sub0:vreg_96 = COPY $vgpr01150    ; CHECK-NEXT: [[COPY1:%[0-9]+]].sub1_sub2:vreg_96 = COPY $vgpr1_vgpr21151    ; CHECK-NEXT: undef [[COPY2:%[0-9]+]].sub0:areg_96 = COPY [[COPY]]1152    ; CHECK-NEXT: [[COPY2:%[0-9]+]].sub1_sub2:areg_96 = COPY [[COPY1]]1153    ; CHECK-NEXT: INLINEASM &"; use $0", 0 /* attdialect */, 5505033 /* reguse:AReg_96 */, [[COPY2]]1154    ; CHECK-NEXT: SI_RETURN1155    undef %0.sub0:vreg_96 = COPY $vgpr01156    %0.sub1_sub2:vreg_96 = COPY $vgpr1_vgpr21157    undef %2.sub0:areg_96 = COPY %0.sub21158    %2.sub1_sub2:areg_96 = COPY %0.sub0_sub11159    INLINEASM &"; use $0", 0 /* attdialect */, 5505033 /* reguse:AReg_96 */, %21160    SI_RETURN1161 1162...1163 1164 1165---1166name: copy_vgpr32_vgpr64_to_areg96_coalesce_with_av96_align2_both_sub1167tracksRegLiveness: true1168body:             |1169  bb.0:1170    liveins: $vgpr0, $vgpr1_vgpr21171 1172    ; CHECK-LABEL: name: copy_vgpr32_vgpr64_to_areg96_coalesce_with_av96_align2_both_sub1173    ; CHECK: liveins: $vgpr0, $vgpr1_vgpr21174    ; CHECK-NEXT: {{  $}}1175    ; CHECK-NEXT: undef [[COPY:%[0-9]+]].sub0:vreg_96_align2 = COPY $vgpr01176    ; CHECK-NEXT: [[COPY:%[0-9]+]].sub1_sub2:vreg_96_align2 = COPY $vgpr1_vgpr21177    ; CHECK-NEXT: undef [[COPY1:%[0-9]+]].sub0:areg_96_align2 = COPY [[COPY]].sub01178    ; CHECK-NEXT: [[COPY1:%[0-9]+]].sub1_sub2:areg_96_align2 = COPY [[COPY]].sub1_sub21179    ; CHECK-NEXT: INLINEASM &"; use $0", 0 /* attdialect */, 3997705 /* reguse:AReg_64_Align2 */, [[COPY1]]1180    ; CHECK-NEXT: SI_RETURN1181    undef %0.sub0:vreg_96_align2 = COPY $vgpr01182    %0.sub1_sub2:vreg_96_align2 = COPY $vgpr1_vgpr21183    undef %2.sub0:areg_96_align2 = COPY %0.sub01184    %2.sub1_sub2:areg_96_align2 = COPY %0.sub1_sub21185    INLINEASM &"; use $0", 0 /* attdialect */, 3997705 /* reguse:AReg_64_Align2 */, %21186    SI_RETURN1187 1188...1189 1190---1191name: copy_vgpr64_vgpr32_to_areg96_coalesce_with_av96_both_sub1192tracksRegLiveness: true1193body:             |1194  bb.0:1195    liveins: $vgpr0_vgpr1, $vgpr21196 1197    ; CHECK-LABEL: name: copy_vgpr64_vgpr32_to_areg96_coalesce_with_av96_both_sub1198    ; CHECK: liveins: $vgpr0_vgpr1, $vgpr21199    ; CHECK-NEXT: {{  $}}1200    ; CHECK-NEXT: undef [[COPY:%[0-9]+]].sub0_sub1:vreg_96 = COPY $vgpr0_vgpr11201    ; CHECK-NEXT: [[COPY:%[0-9]+]].sub2:vreg_96 = COPY $vgpr21202    ; CHECK-NEXT: undef [[COPY1:%[0-9]+]].sub0_sub1:areg_96 = COPY [[COPY]].sub0_sub11203    ; CHECK-NEXT: [[COPY1:%[0-9]+]].sub2:areg_96 = COPY [[COPY]].sub21204    ; CHECK-NEXT: INLINEASM &"; use $0", 0 /* attdialect */, 5505033 /* reguse:AReg_96 */, [[COPY1]]1205    ; CHECK-NEXT: SI_RETURN1206    undef %0.sub0_sub1:vreg_96 = COPY $vgpr0_vgpr11207    %0.sub2:vreg_96 = COPY $vgpr21208    undef %2.sub0_sub1:areg_96 = COPY %0.sub0_sub11209    %2.sub2:areg_96 = COPY %0.sub21210    INLINEASM &"; use $0", 0 /* attdialect */, 5505033 /* reguse:AReg_96 */, %21211    SI_RETURN1212 1213...1214 1215---1216name: copy_vgpr64_vgpr32_to_areg96_coalesce_with_av96_align2_both_sub1217tracksRegLiveness: true1218body:             |1219  bb.0:1220    liveins: $vgpr0, $vgpr1_vgpr21221 1222    ; CHECK-LABEL: name: copy_vgpr64_vgpr32_to_areg96_coalesce_with_av96_align2_both_sub1223    ; CHECK: liveins: $vgpr0, $vgpr1_vgpr21224    ; CHECK-NEXT: {{  $}}1225    ; CHECK-NEXT: undef [[COPY:%[0-9]+]].sub0_sub1:vreg_96_align2 = COPY $vgpr0_vgpr11226    ; CHECK-NEXT: [[COPY:%[0-9]+]].sub2:vreg_96_align2 = COPY $vgpr21227    ; CHECK-NEXT: undef [[COPY1:%[0-9]+]].sub0_sub1:areg_96_align2 = COPY [[COPY]].sub0_sub11228    ; CHECK-NEXT: [[COPY1:%[0-9]+]].sub2:areg_96_align2 = COPY [[COPY]].sub21229    ; CHECK-NEXT: INLINEASM &"; use $0", 0 /* attdialect */, 3997705 /* reguse:AReg_64_Align2 */, [[COPY1]]1230    ; CHECK-NEXT: SI_RETURN1231    undef %0.sub0_sub1:vreg_96_align2 = COPY $vgpr0_vgpr11232    %0.sub2:vreg_96_align2 = COPY $vgpr21233    undef %2.sub0_sub1:areg_96_align2 = COPY %0.sub0_sub11234    %2.sub2:areg_96_align2 = COPY %0.sub21235    INLINEASM &"; use $0", 0 /* attdialect */, 3997705 /* reguse:AReg_64_Align2 */, %21236    SI_RETURN1237 1238...1239 1240---1241name: copy_vgpr64_vgpr32_to_areg96_coalesce_with_av96_align2_mismatch_both_sub1242tracksRegLiveness: true1243body:             |1244  bb.0:1245    liveins: $vgpr0, $vgpr1_vgpr21246 1247    ; CHECK-LABEL: name: copy_vgpr64_vgpr32_to_areg96_coalesce_with_av96_align2_mismatch_both_sub1248    ; CHECK: liveins: $vgpr0, $vgpr1_vgpr21249    ; CHECK-NEXT: {{  $}}1250    ; CHECK-NEXT: undef [[COPY:%[0-9]+]].sub0_sub1:vreg_96 = COPY $vgpr0_vgpr11251    ; CHECK-NEXT: [[COPY:%[0-9]+]].sub2:vreg_96 = COPY $vgpr21252    ; CHECK-NEXT: undef [[COPY1:%[0-9]+]].sub0_sub1:areg_96_align2 = COPY [[COPY]].sub0_sub11253    ; CHECK-NEXT: [[COPY1:%[0-9]+]].sub2:areg_96_align2 = COPY [[COPY]].sub21254    ; CHECK-NEXT: INLINEASM &"; use $0", 0 /* attdialect */, 3997705 /* reguse:AReg_64_Align2 */, [[COPY1]]1255    ; CHECK-NEXT: SI_RETURN1256    undef %0.sub0_sub1:vreg_96 = COPY $vgpr0_vgpr11257    %0.sub2:vreg_96 = COPY $vgpr21258    undef %2.sub0_sub1:areg_96_align2 = COPY %0.sub0_sub11259    %2.sub2:areg_96_align2 = COPY %0.sub21260    INLINEASM &"; use $0", 0 /* attdialect */, 3997705 /* reguse:AReg_64_Align2 */, %21261    SI_RETURN1262 1263...1264 1265---1266name: copy_vgpr32_to_areg64_coalesce_with_av64_whole_reg1267tracksRegLiveness: true1268body:             |1269  bb.0:1270    liveins: $vgpr0, $vgpr11271 1272    ; CHECK-LABEL: name: copy_vgpr32_to_areg64_coalesce_with_av64_whole_reg1273    ; CHECK: liveins: $vgpr0, $vgpr11274    ; CHECK-NEXT: {{  $}}1275    ; CHECK-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr11276    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:areg_64 = COPY [[COPY]]1277    ; CHECK-NEXT: INLINEASM &"; use $0", 0 /* attdialect */, 3407881 /* reguse:AReg_64 */, [[COPY1]]1278    ; CHECK-NEXT: SI_RETURN1279    %0:vreg_64 = COPY $vgpr0_vgpr11280    %2:areg_64 = COPY %01281    INLINEASM &"; use $0", 0 /* attdialect */, 3407881 /* reguse:AReg_64 */, killed %21282    SI_RETURN1283 1284...1285 1286---1287name: copy_vgpr32_to_areg64_align2_coalesce_with_av64_align2_whole_reg1288tracksRegLiveness: true1289body:             |1290  bb.0:1291    liveins: $vgpr0, $vgpr11292 1293    ; CHECK-LABEL: name: copy_vgpr32_to_areg64_align2_coalesce_with_av64_align2_whole_reg1294    ; CHECK: liveins: $vgpr0, $vgpr11295    ; CHECK-NEXT: {{  $}}1296    ; CHECK-NEXT: [[COPY:%[0-9]+]]:vreg_64_align2 = COPY $vgpr0_vgpr11297    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:areg_64_align2 = COPY [[COPY]]1298    ; CHECK-NEXT: INLINEASM &"; use $0", 0 /* attdialect */, 3997705 /* reguse:AReg_64_Align2 */, [[COPY1]]1299    ; CHECK-NEXT: SI_RETURN1300    %0:vreg_64_align2 = COPY $vgpr0_vgpr11301    %2:areg_64_align2 = COPY %01302    INLINEASM &"; use $0", 0 /* attdialect */, 3997705 /* reguse:AReg_64_Align2 */, %21303    SI_RETURN1304 1305...1306 1307---1308name: copy_vgpr32_to_areg96_coalesce_with_av96_whole_reg1309tracksRegLiveness: true1310body:             |1311  bb.0:1312    liveins: $vgpr0, $vgpr1, $vgpr21313 1314    ; CHECK-LABEL: name: copy_vgpr32_to_areg96_coalesce_with_av96_whole_reg1315    ; CHECK: liveins: $vgpr0, $vgpr1, $vgpr21316    ; CHECK-NEXT: {{  $}}1317    ; CHECK-NEXT: [[COPY:%[0-9]+]]:vreg_96 = COPY $vgpr0_vgpr1_vgpr21318    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:areg_96 = COPY [[COPY]]1319    ; CHECK-NEXT: INLINEASM &"; use $0", 0 /* attdialect */, 5505033 /* reguse:AReg_96 */, [[COPY1]]1320    ; CHECK-NEXT: SI_RETURN1321    %0:vreg_96 = COPY $vgpr0_vgpr1_vgpr21322    %3:areg_96 = COPY %01323    INLINEASM &"; use $0", 0 /* attdialect */, 5505033 /* reguse:AReg_96 */, %31324    SI_RETURN1325 1326...1327 1328---1329name: copy_vgpr32_to_areg96_coalesce_with_av96_align2_whole_reg1330tracksRegLiveness: true1331body:             |1332  bb.0:1333    liveins: $vgpr0, $vgpr1, $vgpr21334 1335    ; CHECK-LABEL: name: copy_vgpr32_to_areg96_coalesce_with_av96_align2_whole_reg1336    ; CHECK: liveins: $vgpr0, $vgpr1, $vgpr21337    ; CHECK-NEXT: {{  $}}1338    ; CHECK-NEXT: [[COPY:%[0-9]+]]:vreg_96_align2 = COPY $vgpr0_vgpr1_vgpr21339    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:areg_96_align2 = COPY [[COPY]]1340    ; CHECK-NEXT: INLINEASM &"; use $0", 0 /* attdialect */, 5832713 /* reguse:AReg_96_Align2 */, [[COPY1]]1341    ; CHECK-NEXT: SI_RETURN1342    %0:vreg_96_align2 = COPY $vgpr0_vgpr1_vgpr21343    %3:areg_96_align2 = COPY %01344    INLINEASM &"; use $0", 0 /* attdialect */, 5832713 /* reguse:AReg_96_Align2 */, %31345    SI_RETURN1346 1347...1348 1349---1350name: copy_vgpr64_to_areg64_coalesce_with_av128_whole_reg1351tracksRegLiveness: true1352body:             |1353  bb.0:1354    liveins: $vgpr0_vgpr1, $vgpr2_vgpr31355 1356    ; CHECK-LABEL: name: copy_vgpr64_to_areg64_coalesce_with_av128_whole_reg1357    ; CHECK: liveins: $vgpr0_vgpr1, $vgpr2_vgpr31358    ; CHECK-NEXT: {{  $}}1359    ; CHECK-NEXT: [[COPY:%[0-9]+]]:vreg_128 = COPY $vgpr0_vgpr1_vgpr2_vgpr31360    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:areg_128 = COPY [[COPY]]1361    ; CHECK-NEXT: INLINEASM &"; use $0", 0 /* attdialect */, 7929865 /* reguse:AReg_128 */, [[COPY1]]1362    ; CHECK-NEXT: SI_RETURN1363    %0:vreg_128 = COPY $vgpr0_vgpr1_vgpr2_vgpr31364    %2:areg_128 = COPY %01365    INLINEASM &"; use $0", 0 /* attdialect */, 7929865 /* reguse:AReg_128 */, killed %21366    SI_RETURN1367 1368...1369 1370---1371name: copy_vgpr64_to_areg64_align2_coalesce_with_av128_align2_whole_reg1372tracksRegLiveness: true1373body:             |1374  bb.0:1375    liveins: $vgpr0_vgpr1, $vgpr2_vgpr31376 1377    ; CHECK-LABEL: name: copy_vgpr64_to_areg64_align2_coalesce_with_av128_align2_whole_reg1378    ; CHECK: liveins: $vgpr0_vgpr1, $vgpr2_vgpr31379    ; CHECK-NEXT: {{  $}}1380    ; CHECK-NEXT: [[COPY:%[0-9]+]]:vreg_128_align2 = COPY $vgpr0_vgpr1_vgpr2_vgpr31381    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:areg_128_align2 = COPY [[COPY]]1382    ; CHECK-NEXT: INLINEASM &"; use $0", 0 /* attdialect */, 8650761 /* reguse:AReg_128_Align2 */, [[COPY1]]1383    ; CHECK-NEXT: SI_RETURN1384    %0:vreg_128_align2 = COPY $vgpr0_vgpr1_vgpr2_vgpr31385    %2:areg_128_align2 = COPY %01386    INLINEASM &"; use $0", 0 /* attdialect */, 8650761 /* reguse:AReg_128_Align2 */, %21387    SI_RETURN1388 1389...1390 1391---1392name: copy_sgpr32_to_areg64_align2_whole_reg1393tracksRegLiveness: true1394body:             |1395  bb.0:1396    liveins: $sgpr8, $sgpr91397 1398    ; CHECK-LABEL: name: copy_sgpr32_to_areg64_align2_whole_reg1399    ; CHECK: liveins: $sgpr8, $sgpr91400    ; CHECK-NEXT: {{  $}}1401    ; CHECK-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr8_sgpr91402    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:areg_64_align2 = COPY [[COPY]]1403    ; CHECK-NEXT: INLINEASM &"; use $0", 0 /* attdialect */, 3997705 /* reguse:AReg_64_Align2 */, [[COPY1]]1404    ; CHECK-NEXT: SI_RETURN1405    %0:sreg_64 = COPY $sgpr8_sgpr91406    %2:areg_64_align2 = COPY %01407    INLINEASM &"; use $0", 0 /* attdialect */, 3997705 /* reguse:AReg_64_Align2 */, %21408    SI_RETURN1409 1410...1411 1412---1413name: copy_vgpr64_vgpr32_to_areg96_coalesce_with_av96_align2_mismatch_whole_reg1414tracksRegLiveness: true1415body:             |1416  bb.0:1417    liveins: $vgpr0, $vgpr1_vgpr21418 1419    ; CHECK-LABEL: name: copy_vgpr64_vgpr32_to_areg96_coalesce_with_av96_align2_mismatch_whole_reg1420    ; CHECK: liveins: $vgpr0, $vgpr1_vgpr21421    ; CHECK-NEXT: {{  $}}1422    ; CHECK-NEXT: [[COPY:%[0-9]+]]:vreg_96 = COPY $vgpr0_vgpr1_vgpr21423    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:areg_96_align2 = COPY [[COPY]]1424    ; CHECK-NEXT: INLINEASM &"; use $0", 0 /* attdialect */, 3997705 /* reguse:AReg_64_Align2 */, [[COPY1]]1425    ; CHECK-NEXT: SI_RETURN1426    %0:vreg_96 = COPY $vgpr0_vgpr1_vgpr21427    %2:areg_96_align2 = COPY %01428    INLINEASM &"; use $0", 0 /* attdialect */, 3997705 /* reguse:AReg_64_Align2 */, %21429    SI_RETURN1430 1431...1432 1433---1434name: copy_vgpr32_to_areg64_coalesce_with_av64_snop1435tracksRegLiveness: true1436body:             |1437  bb.0:1438    liveins: $vgpr0, $vgpr11439 1440    ; CHECK-LABEL: name: copy_vgpr32_to_areg64_coalesce_with_av64_snop1441    ; CHECK: liveins: $vgpr0, $vgpr11442    ; CHECK-NEXT: {{  $}}1443    ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr01444    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr11445    ; CHECK-NEXT: undef [[COPY2:%[0-9]+]].sub0:areg_64 = COPY [[COPY]]1446    ; CHECK-NEXT: [[COPY2:%[0-9]+]].sub1:areg_64 = COPY [[COPY1]]1447    ; CHECK-NEXT: S_NOP 0, implicit [[COPY2]]1448    ; CHECK-NEXT: SI_RETURN1449    %0:vgpr_32 = COPY $vgpr01450    %1:vgpr_32 = COPY $vgpr11451    undef %2.sub0:areg_64 = COPY %01452    %2.sub1:areg_64 = COPY %11453    S_NOP 0, implicit %21454    SI_RETURN1455 1456...1457 1458---1459name: copy_vgpr32_to_areg64_align2_coalesce_with_av64_align2_snop1460tracksRegLiveness: true1461body:             |1462  bb.0:1463    liveins: $vgpr0, $vgpr11464 1465    ; CHECK-LABEL: name: copy_vgpr32_to_areg64_align2_coalesce_with_av64_align2_snop1466    ; CHECK: liveins: $vgpr0, $vgpr11467    ; CHECK-NEXT: {{  $}}1468    ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr01469    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr11470    ; CHECK-NEXT: undef [[COPY2:%[0-9]+]].sub0:areg_64_align2 = COPY [[COPY]]1471    ; CHECK-NEXT: [[COPY2:%[0-9]+]].sub1:areg_64_align2 = COPY [[COPY1]]1472    ; CHECK-NEXT: S_NOP 0, implicit [[COPY2]]1473    ; CHECK-NEXT: SI_RETURN1474    %0:vgpr_32 = COPY $vgpr01475    %1:vgpr_32 = COPY $vgpr11476    undef %2.sub0:areg_64_align2 = COPY %01477    %2.sub1:areg_64_align2 = COPY %11478    S_NOP 0, implicit %21479    SI_RETURN1480 1481...1482 1483---1484name: copy_vgpr32_to_areg96_coalesce_with_av96_snop1485tracksRegLiveness: true1486body:             |1487  bb.0:1488    liveins: $vgpr0, $vgpr1, $vgpr21489 1490    ; CHECK-LABEL: name: copy_vgpr32_to_areg96_coalesce_with_av96_snop1491    ; CHECK: liveins: $vgpr0, $vgpr1, $vgpr21492    ; CHECK-NEXT: {{  $}}1493    ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr01494    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr11495    ; CHECK-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr21496    ; CHECK-NEXT: undef [[COPY3:%[0-9]+]].sub0:areg_96 = COPY [[COPY]]1497    ; CHECK-NEXT: [[COPY3:%[0-9]+]].sub1:areg_96 = COPY [[COPY1]]1498    ; CHECK-NEXT: [[COPY3:%[0-9]+]].sub2:areg_96 = COPY [[COPY2]]1499    ; CHECK-NEXT: S_NOP 0, implicit [[COPY3]]1500    ; CHECK-NEXT: SI_RETURN1501    %0:vgpr_32 = COPY $vgpr01502    %1:vgpr_32 = COPY $vgpr11503    %2:vgpr_32 = COPY $vgpr21504    undef %3.sub0:areg_96 = COPY %01505    %3.sub1:areg_96 = COPY %11506    %3.sub2:areg_96 = COPY %21507    S_NOP 0, implicit %31508    SI_RETURN1509 1510...1511 1512---1513name: copy_vgpr32_to_areg96_coalesce_with_av96_align2_snop1514tracksRegLiveness: true1515body:             |1516  bb.0:1517    liveins: $vgpr0, $vgpr1, $vgpr21518 1519    ; CHECK-LABEL: name: copy_vgpr32_to_areg96_coalesce_with_av96_align2_snop1520    ; CHECK: liveins: $vgpr0, $vgpr1, $vgpr21521    ; CHECK-NEXT: {{  $}}1522    ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr01523    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr11524    ; CHECK-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr21525    ; CHECK-NEXT: undef [[COPY3:%[0-9]+]].sub0:areg_96_align2 = COPY [[COPY]]1526    ; CHECK-NEXT: [[COPY3:%[0-9]+]].sub1:areg_96_align2 = COPY [[COPY1]]1527    ; CHECK-NEXT: [[COPY3:%[0-9]+]].sub2:areg_96_align2 = COPY [[COPY2]]1528    ; CHECK-NEXT: S_NOP 0, implicit [[COPY3]]1529    ; CHECK-NEXT: SI_RETURN1530    %0:vgpr_32 = COPY $vgpr01531    %1:vgpr_32 = COPY $vgpr11532    %2:vgpr_32 = COPY $vgpr21533    undef %3.sub0:areg_96_align2 = COPY %01534    %3.sub1:areg_96_align2 = COPY %11535    %3.sub2:areg_96_align2 = COPY %21536    S_NOP 0, implicit %31537    SI_RETURN1538 1539...1540 1541---1542name: copy_vgpr64_to_areg64_coalesce_with_av128_snop1543tracksRegLiveness: true1544body:             |1545  bb.0:1546    liveins: $vgpr0_vgpr1, $vgpr2_vgpr31547 1548    ; CHECK-LABEL: name: copy_vgpr64_to_areg64_coalesce_with_av128_snop1549    ; CHECK: liveins: $vgpr0_vgpr1, $vgpr2_vgpr31550    ; CHECK-NEXT: {{  $}}1551    ; CHECK-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr11552    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:vreg_64 = COPY $vgpr2_vgpr31553    ; CHECK-NEXT: undef [[COPY2:%[0-9]+]].sub0_sub1:areg_128 = COPY [[COPY]]1554    ; CHECK-NEXT: [[COPY2:%[0-9]+]].sub2_sub3:areg_128 = COPY [[COPY1]]1555    ; CHECK-NEXT: S_NOP 0, implicit [[COPY2]]1556    ; CHECK-NEXT: SI_RETURN1557    %0:vreg_64 = COPY $vgpr0_vgpr11558    %1:vreg_64 = COPY $vgpr2_vgpr31559    undef %2.sub0_sub1:areg_128 = COPY %01560    %2.sub2_sub3:areg_128 = COPY %11561    S_NOP 0, implicit %21562    SI_RETURN1563 1564...1565 1566---1567name: copy_vgpr64_to_areg64_align2_coalesce_with_av128_align2_snop1568tracksRegLiveness: true1569body:             |1570  bb.0:1571    liveins: $vgpr0_vgpr1, $vgpr2_vgpr31572 1573    ; CHECK-LABEL: name: copy_vgpr64_to_areg64_align2_coalesce_with_av128_align2_snop1574    ; CHECK: liveins: $vgpr0_vgpr1, $vgpr2_vgpr31575    ; CHECK-NEXT: {{  $}}1576    ; CHECK-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr11577    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:vreg_64 = COPY $vgpr2_vgpr31578    ; CHECK-NEXT: undef [[COPY2:%[0-9]+]].sub0_sub1:areg_128_align2 = COPY [[COPY]]1579    ; CHECK-NEXT: [[COPY2:%[0-9]+]].sub2_sub3:areg_128_align2 = COPY [[COPY1]]1580    ; CHECK-NEXT: S_NOP 0, implicit [[COPY2]]1581    ; CHECK-NEXT: SI_RETURN1582    %0:vreg_64 = COPY $vgpr0_vgpr11583    %1:vreg_64 = COPY $vgpr2_vgpr31584    undef %2.sub0_sub1:areg_128_align2 = COPY %01585    %2.sub2_sub3:areg_128_align2 = COPY %11586    S_NOP 0, implicit %21587    SI_RETURN1588 1589...1590 1591---1592name: copy_sgpr32_to_areg64_align2_snop1593tracksRegLiveness: true1594body:             |1595  bb.0:1596    liveins: $sgpr8, $sgpr91597 1598    ; CHECK-LABEL: name: copy_sgpr32_to_areg64_align2_snop1599    ; CHECK: liveins: $sgpr8, $sgpr91600    ; CHECK-NEXT: {{  $}}1601    ; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr_32 = COPY $sgpr81602    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:sgpr_32 = COPY $sgpr91603    ; CHECK-NEXT: undef [[COPY2:%[0-9]+]].sub0:areg_64_align2 = COPY [[COPY]]1604    ; CHECK-NEXT: [[COPY2:%[0-9]+]].sub1:areg_64_align2 = COPY [[COPY1]]1605    ; CHECK-NEXT: S_NOP 0, implicit [[COPY2]]1606    ; CHECK-NEXT: SI_RETURN1607    %0:sgpr_32 = COPY $sgpr81608    %1:sgpr_32 = COPY $sgpr91609    undef %2.sub0:areg_64_align2 = COPY %01610    %2.sub1:areg_64_align2 = COPY %11611    S_NOP 0, implicit %21612    SI_RETURN1613 1614...1615 1616---1617name: copy_vgpr32_vgpr64_to_areg96_coalesce_with_av96_snop1618tracksRegLiveness: true1619body:             |1620  bb.0:1621    liveins: $vgpr0, $vgpr1_vgpr21622 1623    ; CHECK-LABEL: name: copy_vgpr32_vgpr64_to_areg96_coalesce_with_av96_snop1624    ; CHECK: liveins: $vgpr0, $vgpr1_vgpr21625    ; CHECK-NEXT: {{  $}}1626    ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr01627    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:vreg_64 = COPY $vgpr1_vgpr21628    ; CHECK-NEXT: undef [[COPY2:%[0-9]+]].sub0:areg_96 = COPY [[COPY]]1629    ; CHECK-NEXT: [[COPY2:%[0-9]+]].sub1_sub2:areg_96 = COPY [[COPY1]]1630    ; CHECK-NEXT: S_NOP 0, implicit [[COPY2]]1631    ; CHECK-NEXT: SI_RETURN1632    %0:vgpr_32 = COPY $vgpr01633    %1:vreg_64 = COPY $vgpr1_vgpr21634    undef %2.sub0:areg_96 = COPY %01635    %2.sub1_sub2:areg_96 = COPY %11636    S_NOP 0, implicit %21637    SI_RETURN1638 1639...1640 1641---1642name: copy_vgpr32_vgpr64_to_areg96_coalesce_with_av96_align2_snop1643tracksRegLiveness: true1644body:             |1645  bb.0:1646    liveins: $vgpr0, $vgpr1_vgpr21647 1648    ; CHECK-LABEL: name: copy_vgpr32_vgpr64_to_areg96_coalesce_with_av96_align2_snop1649    ; CHECK: liveins: $vgpr0, $vgpr1_vgpr21650    ; CHECK-NEXT: {{  $}}1651    ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr01652    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:vreg_64 = COPY $vgpr1_vgpr21653    ; CHECK-NEXT: undef [[COPY2:%[0-9]+]].sub0:areg_96_align2 = COPY [[COPY]]1654    ; CHECK-NEXT: [[COPY2:%[0-9]+]].sub1_sub2:areg_96_align2 = COPY [[COPY1]]1655    ; CHECK-NEXT: S_NOP 0, implicit [[COPY2]]1656    ; CHECK-NEXT: SI_RETURN1657    %0:vgpr_32 = COPY $vgpr01658    %1:vreg_64 = COPY $vgpr1_vgpr21659    undef %2.sub0:areg_96_align2 = COPY %01660    %2.sub1_sub2:areg_96_align2 = COPY %11661    S_NOP 0, implicit %21662    SI_RETURN1663 1664...1665 1666---1667name: copy_vgpr64_vgpr32_to_areg96_coalesce_with_av96_snop1668tracksRegLiveness: true1669body:             |1670  bb.0:1671    liveins: $vgpr0_vgpr1, $vgpr21672 1673    ; CHECK-LABEL: name: copy_vgpr64_vgpr32_to_areg96_coalesce_with_av96_snop1674    ; CHECK: liveins: $vgpr0_vgpr1, $vgpr21675    ; CHECK-NEXT: {{  $}}1676    ; CHECK-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr11677    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr21678    ; CHECK-NEXT: undef [[COPY2:%[0-9]+]].sub0_sub1:areg_96 = COPY [[COPY]]1679    ; CHECK-NEXT: [[COPY2:%[0-9]+]].sub2:areg_96 = COPY [[COPY1]]1680    ; CHECK-NEXT: S_NOP 0, implicit [[COPY2]]1681    ; CHECK-NEXT: SI_RETURN1682    %0:vreg_64 = COPY $vgpr0_vgpr11683    %1:vgpr_32 = COPY $vgpr21684    undef %2.sub0_sub1:areg_96 = COPY %01685    %2.sub2:areg_96 = COPY %11686    S_NOP 0, implicit %21687    SI_RETURN1688 1689...1690 1691---1692name: copy_vgpr64_vgpr32_to_areg96_coalesce_with_av96_align2_snop1693tracksRegLiveness: true1694body:             |1695  bb.0:1696    liveins: $vgpr0, $vgpr1_vgpr21697 1698    ; CHECK-LABEL: name: copy_vgpr64_vgpr32_to_areg96_coalesce_with_av96_align2_snop1699    ; CHECK: liveins: $vgpr0, $vgpr1_vgpr21700    ; CHECK-NEXT: {{  $}}1701    ; CHECK-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr11702    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr21703    ; CHECK-NEXT: undef [[COPY2:%[0-9]+]].sub0_sub1:areg_96_align2 = COPY [[COPY]]1704    ; CHECK-NEXT: [[COPY2:%[0-9]+]].sub2:areg_96_align2 = COPY [[COPY1]]1705    ; CHECK-NEXT: S_NOP 0, implicit [[COPY2]]1706    ; CHECK-NEXT: SI_RETURN1707    %0:vreg_64 = COPY $vgpr0_vgpr11708    %1:vgpr_32 = COPY $vgpr21709    undef %2.sub0_sub1:areg_96_align2 = COPY %01710    %2.sub2:areg_96_align2 = COPY %11711    S_NOP 0, implicit %21712    SI_RETURN1713 1714...1715 1716---1717name: copy_vgpr32_x2_to_areg64_snop1718tracksRegLiveness: true1719body:             |1720  bb.0:1721    liveins: $vgpr01722 1723    ; CHECK-LABEL: name: copy_vgpr32_x2_to_areg64_snop1724    ; CHECK: liveins: $vgpr01725    ; CHECK-NEXT: {{  $}}1726    ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr01727    ; CHECK-NEXT: undef [[COPY1:%[0-9]+]].sub0:areg_64 = COPY [[COPY]]1728    ; CHECK-NEXT: [[COPY1:%[0-9]+]].sub1:areg_64 = COPY [[COPY]]1729    ; CHECK-NEXT: S_NOP 0, implicit [[COPY1]]1730    ; CHECK-NEXT: SI_RETURN1731    %0:vgpr_32 = COPY $vgpr01732    undef %2.sub0:areg_64 = COPY %01733    %2.sub1:areg_64 = COPY %01734    S_NOP 0, implicit %21735    SI_RETURN1736 1737...1738 1739---1740name: copy_vgpr32_x2_to_areg64_coalesce_with_av64_align2_snop1741tracksRegLiveness: true1742body:             |1743  bb.0:1744    liveins: $vgpr0, $vgpr11745 1746    ; CHECK-LABEL: name: copy_vgpr32_x2_to_areg64_coalesce_with_av64_align2_snop1747    ; CHECK: liveins: $vgpr0, $vgpr11748    ; CHECK-NEXT: {{  $}}1749    ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr01750    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr11751    ; CHECK-NEXT: undef [[COPY2:%[0-9]+]].sub0:areg_64_align2 = COPY [[COPY]]1752    ; CHECK-NEXT: [[COPY2:%[0-9]+]].sub1:areg_64_align2 = COPY [[COPY1]]1753    ; CHECK-NEXT: S_NOP 0, implicit [[COPY2]]1754    ; CHECK-NEXT: SI_RETURN1755    %0:vgpr_32 = COPY $vgpr01756    %1:vgpr_32 = COPY $vgpr11757    undef %2.sub0:areg_64_align2 = COPY %01758    %2.sub1:areg_64_align2 = COPY %11759    S_NOP 0, implicit %21760    SI_RETURN1761 1762...1763 1764---1765name: copy_vgpr32_x3_to_areg96_snop1766tracksRegLiveness: true1767body:             |1768  bb.0:1769    liveins: $vgpr01770 1771    ; CHECK-LABEL: name: copy_vgpr32_x3_to_areg96_snop1772    ; CHECK: liveins: $vgpr01773    ; CHECK-NEXT: {{  $}}1774    ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr01775    ; CHECK-NEXT: undef [[COPY1:%[0-9]+]].sub0:areg_96 = COPY [[COPY]]1776    ; CHECK-NEXT: [[COPY1:%[0-9]+]].sub1:areg_96 = COPY [[COPY]]1777    ; CHECK-NEXT: S_NOP 0, implicit [[COPY1]]1778    ; CHECK-NEXT: SI_RETURN1779    %0:vgpr_32 = COPY $vgpr01780    undef %1.sub0:areg_96 = COPY %01781    %1.sub1:areg_96 = COPY %01782    S_NOP 0, implicit %11783    SI_RETURN1784 1785...1786 1787---1788name: copy_vgpr32_x3_to_areg96_align2_snop1789tracksRegLiveness: true1790body:             |1791  bb.0:1792    liveins: $vgpr01793 1794    ; CHECK-LABEL: name: copy_vgpr32_x3_to_areg96_align2_snop1795    ; CHECK: liveins: $vgpr01796    ; CHECK-NEXT: {{  $}}1797    ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr01798    ; CHECK-NEXT: undef [[COPY1:%[0-9]+]].sub0:areg_96_align2 = COPY [[COPY]]1799    ; CHECK-NEXT: [[COPY1:%[0-9]+]].sub1:areg_96_align2 = COPY [[COPY]]1800    ; CHECK-NEXT: S_NOP 0, implicit [[COPY1]]1801    ; CHECK-NEXT: SI_RETURN1802    %0:vgpr_32 = COPY $vgpr01803    undef %1.sub0:areg_96_align2 = COPY %01804    %1.sub1:areg_96_align2 = COPY %01805    S_NOP 0, implicit %11806    SI_RETURN1807 1808...1809 1810---1811name: copy_vgpr32_x4_to_areg128_snop1812tracksRegLiveness: true1813body:             |1814  bb.0:1815    liveins: $vgpr01816 1817    ; CHECK-LABEL: name: copy_vgpr32_x4_to_areg128_snop1818    ; CHECK: liveins: $vgpr01819    ; CHECK-NEXT: {{  $}}1820    ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr01821    ; CHECK-NEXT: undef [[COPY1:%[0-9]+]].sub0:areg_128 = COPY [[COPY]]1822    ; CHECK-NEXT: [[COPY1:%[0-9]+]].sub1:areg_128 = COPY [[COPY]]1823    ; CHECK-NEXT: [[COPY1:%[0-9]+]].sub2:areg_128 = COPY [[COPY]]1824    ; CHECK-NEXT: [[COPY1:%[0-9]+]].sub3:areg_128 = COPY [[COPY]]1825    ; CHECK-NEXT: S_NOP 0, implicit [[COPY1]]1826    ; CHECK-NEXT: SI_RETURN1827    %0:vgpr_32 = COPY $vgpr01828    undef %1.sub0:areg_128 = COPY %01829    %1.sub1:areg_128 = COPY %01830    %1.sub2:areg_128 = COPY %01831    %1.sub3:areg_128 = COPY %01832    S_NOP 0, implicit %11833    SI_RETURN1834 1835...1836 1837---1838name: copy_vgpr32_x4_to_areg128_align2_snop1839tracksRegLiveness: true1840body:             |1841  bb.0:1842    liveins: $vgpr01843 1844    ; CHECK-LABEL: name: copy_vgpr32_x4_to_areg128_align2_snop1845    ; CHECK: liveins: $vgpr01846    ; CHECK-NEXT: {{  $}}1847    ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr01848    ; CHECK-NEXT: undef [[COPY1:%[0-9]+]].sub0:areg_128_align2 = COPY [[COPY]]1849    ; CHECK-NEXT: [[COPY1:%[0-9]+]].sub1:areg_128_align2 = COPY [[COPY]]1850    ; CHECK-NEXT: [[COPY1:%[0-9]+]].sub2:areg_128_align2 = COPY [[COPY]]1851    ; CHECK-NEXT: [[COPY1:%[0-9]+]].sub3:areg_128_align2 = COPY [[COPY]]1852    ; CHECK-NEXT: S_NOP 0, implicit [[COPY1]]1853    ; CHECK-NEXT: SI_RETURN1854    %0:vgpr_32 = COPY $vgpr01855    undef %1.sub0:areg_128_align2 = COPY %01856    %1.sub1:areg_128_align2 = COPY %01857    %1.sub2:areg_128_align2 = COPY %01858    %1.sub3:areg_128_align2 = COPY %01859    S_NOP 0, implicit %11860    SI_RETURN1861 1862...1863 1864---1865name: copy_vgpr32_to_areg64_coalesce_with_av64_sub_snop1866tracksRegLiveness: true1867body:             |1868  bb.0:1869    liveins: $vgpr0, $vgpr11870 1871    ; CHECK-LABEL: name: copy_vgpr32_to_areg64_coalesce_with_av64_sub_snop1872    ; CHECK: liveins: $vgpr0, $vgpr11873    ; CHECK-NEXT: {{  $}}1874    ; CHECK-NEXT: undef [[COPY:%[0-9]+]].sub0:vreg_64 = COPY $vgpr01875    ; CHECK-NEXT: [[COPY:%[0-9]+]].sub1:vreg_64 = COPY $vgpr11876    ; CHECK-NEXT: undef [[COPY1:%[0-9]+]].sub0:areg_64 = COPY [[COPY]].sub01877    ; CHECK-NEXT: [[COPY1:%[0-9]+]].sub1:areg_64 = COPY [[COPY]].sub11878    ; CHECK-NEXT: S_NOP 0, implicit [[COPY1]]1879    ; CHECK-NEXT: SI_RETURN1880    undef %0.sub0:vreg_64 = COPY $vgpr01881    %0.sub1:vreg_64 = COPY $vgpr11882    undef %2.sub0:areg_64 = COPY %0.sub01883    %2.sub1:areg_64 = COPY %0.sub11884    S_NOP 0, implicit %21885    SI_RETURN1886 1887...1888 1889---1890name: copy_vgpr32_to_areg64_align2_coalesce_with_av64_align2_sub_snop1891tracksRegLiveness: true1892body:             |1893  bb.0:1894    liveins: $vgpr0, $vgpr11895 1896    ; CHECK-LABEL: name: copy_vgpr32_to_areg64_align2_coalesce_with_av64_align2_sub_snop1897    ; CHECK: liveins: $vgpr0, $vgpr11898    ; CHECK-NEXT: {{  $}}1899    ; CHECK-NEXT: undef [[COPY:%[0-9]+]].sub0:vreg_64 = COPY $vgpr01900    ; CHECK-NEXT: [[COPY:%[0-9]+]].sub1:vreg_64 = COPY $vgpr11901    ; CHECK-NEXT: undef [[COPY1:%[0-9]+]].sub0:areg_64_align2 = COPY [[COPY]].sub01902    ; CHECK-NEXT: [[COPY1:%[0-9]+]].sub1:areg_64_align2 = COPY [[COPY]].sub11903    ; CHECK-NEXT: S_NOP 0, implicit [[COPY1]]1904    ; CHECK-NEXT: SI_RETURN1905    undef %0.sub0:vreg_64 = COPY $vgpr01906    %0.sub1:vreg_64 = COPY $vgpr11907    undef %2.sub0:areg_64_align2 = COPY %0.sub01908    %2.sub1:areg_64_align2 = COPY %0.sub11909    S_NOP 0, implicit %21910    SI_RETURN1911 1912...1913 1914---1915name: copy_vgpr32_to_areg96_coalesce_with_av96_sub_snop1916tracksRegLiveness: true1917body:             |1918  bb.0:1919    liveins: $vgpr0, $vgpr1, $vgpr21920 1921    ; CHECK-LABEL: name: copy_vgpr32_to_areg96_coalesce_with_av96_sub_snop1922    ; CHECK: liveins: $vgpr0, $vgpr1, $vgpr21923    ; CHECK-NEXT: {{  $}}1924    ; CHECK-NEXT: undef [[COPY:%[0-9]+]].sub0:vreg_96 = COPY $vgpr01925    ; CHECK-NEXT: [[COPY:%[0-9]+]].sub1:vreg_96 = COPY $vgpr11926    ; CHECK-NEXT: [[COPY:%[0-9]+]].sub2:vreg_96 = COPY $vgpr21927    ; CHECK-NEXT: undef [[COPY1:%[0-9]+]].sub0:areg_96 = COPY [[COPY]].sub01928    ; CHECK-NEXT: [[COPY1:%[0-9]+]].sub1:areg_96 = COPY [[COPY]].sub11929    ; CHECK-NEXT: [[COPY1:%[0-9]+]].sub2:areg_96 = COPY [[COPY]].sub21930    ; CHECK-NEXT: S_NOP 0, implicit [[COPY1]]1931    ; CHECK-NEXT: SI_RETURN1932    undef %0.sub0:vreg_96 =COPY $vgpr01933    %0.sub1:vreg_96 = COPY $vgpr11934    %0.sub2:vreg_96 = COPY $vgpr21935    undef %3.sub0:areg_96 = COPY %0.sub01936    %3.sub1:areg_96 = COPY %0.sub11937    %3.sub2:areg_96 = COPY %0.sub21938    S_NOP 0, implicit %31939    SI_RETURN1940 1941...1942 1943---1944name: copy_vgpr32_to_areg96_coalesce_with_av96_align2_sub_snop1945tracksRegLiveness: true1946body:             |1947  bb.0:1948    liveins: $vgpr0, $vgpr1, $vgpr21949 1950    ; CHECK-LABEL: name: copy_vgpr32_to_areg96_coalesce_with_av96_align2_sub_snop1951    ; CHECK: liveins: $vgpr0, $vgpr1, $vgpr21952    ; CHECK-NEXT: {{  $}}1953    ; CHECK-NEXT: undef [[COPY:%[0-9]+]].sub0:vreg_96 = COPY $vgpr01954    ; CHECK-NEXT: [[COPY:%[0-9]+]].sub1:vreg_96 = COPY $vgpr11955    ; CHECK-NEXT: [[COPY:%[0-9]+]].sub2:vreg_96 = COPY $vgpr21956    ; CHECK-NEXT: undef [[COPY1:%[0-9]+]].sub0:areg_96_align2 = COPY [[COPY]].sub01957    ; CHECK-NEXT: [[COPY1:%[0-9]+]].sub1:areg_96_align2 = COPY [[COPY]].sub11958    ; CHECK-NEXT: [[COPY1:%[0-9]+]].sub2:areg_96_align2 = COPY [[COPY]].sub21959    ; CHECK-NEXT: S_NOP 0, implicit [[COPY1]]1960    ; CHECK-NEXT: SI_RETURN1961    undef %0.sub0:vreg_96 =COPY $vgpr01962    %0.sub1:vreg_96 = COPY $vgpr11963    %0.sub2:vreg_96 = COPY $vgpr21964    undef %3.sub0:areg_96_align2 = COPY %0.sub01965    %3.sub1:areg_96_align2 = COPY %0.sub11966    %3.sub2:areg_96_align2 = COPY %0.sub21967    S_NOP 0, implicit %31968    SI_RETURN1969 1970...1971 1972---1973name: copy_vgpr64_to_areg64_coalesce_with_av128_sub_snop1974tracksRegLiveness: true1975body:             |1976  bb.0:1977    liveins: $vgpr0_vgpr1, $vgpr2_vgpr31978 1979    ; CHECK-LABEL: name: copy_vgpr64_to_areg64_coalesce_with_av128_sub_snop1980    ; CHECK: liveins: $vgpr0_vgpr1, $vgpr2_vgpr31981    ; CHECK-NEXT: {{  $}}1982    ; CHECK-NEXT: undef [[COPY:%[0-9]+]].sub0_sub1:vreg_128 = COPY $vgpr0_vgpr11983    ; CHECK-NEXT: [[COPY:%[0-9]+]].sub2_sub3:vreg_128 = COPY $vgpr2_vgpr31984    ; CHECK-NEXT: undef [[COPY1:%[0-9]+]].sub0_sub1:areg_128 = COPY [[COPY]].sub0_sub11985    ; CHECK-NEXT: [[COPY1:%[0-9]+]].sub2_sub3:areg_128 = COPY [[COPY]].sub2_sub31986    ; CHECK-NEXT: S_NOP 0, implicit [[COPY1]]1987    ; CHECK-NEXT: SI_RETURN1988    undef %0.sub0_sub1:vreg_128 =COPY $vgpr0_vgpr11989    %0.sub2_sub3:vreg_128 = COPY $vgpr2_vgpr31990    undef %2.sub0_sub1:areg_128 = COPY %0.sub0_sub11991    %2.sub2_sub3:areg_128 = COPY %0.sub2_sub31992    S_NOP 0, implicit %21993    SI_RETURN1994 1995...1996 1997 1998 1999---2000name: copy_vgpr64_to_areg64_align2_coalesce_with_av128_align2_sub_snop2001tracksRegLiveness: true2002body:             |2003  bb.0:2004    liveins: $vgpr0_vgpr1, $vgpr2_vgpr32005 2006    ; CHECK-LABEL: name: copy_vgpr64_to_areg64_align2_coalesce_with_av128_align2_sub_snop2007    ; CHECK: liveins: $vgpr0_vgpr1, $vgpr2_vgpr32008    ; CHECK-NEXT: {{  $}}2009    ; CHECK-NEXT: undef [[COPY:%[0-9]+]].sub0_sub1:vreg_128 = COPY $vgpr0_vgpr12010    ; CHECK-NEXT: [[COPY:%[0-9]+]].sub2_sub3:vreg_128 = COPY $vgpr2_vgpr32011    ; CHECK-NEXT: undef [[COPY1:%[0-9]+]].sub0_sub1:areg_128_align2 = COPY [[COPY]].sub0_sub12012    ; CHECK-NEXT: [[COPY1:%[0-9]+]].sub2_sub3:areg_128_align2 = COPY [[COPY]].sub2_sub32013    ; CHECK-NEXT: S_NOP 0, implicit [[COPY1]]2014    ; CHECK-NEXT: SI_RETURN2015    undef %0.sub0_sub1:vreg_128 =COPY $vgpr0_vgpr12016    %0.sub2_sub3:vreg_128 = COPY $vgpr2_vgpr32017    undef %2.sub0_sub1:areg_128_align2 = COPY %0.sub0_sub12018    %2.sub2_sub3:areg_128_align2 = COPY %0.sub2_sub32019    S_NOP 0, implicit %22020    SI_RETURN2021 2022...2023 2024---2025name: copy_sgpr32_to_areg64_align2_sub_snop2026tracksRegLiveness: true2027body:             |2028  bb.0:2029    liveins: $sgpr8, $sgpr92030 2031    ; CHECK-LABEL: name: copy_sgpr32_to_areg64_align2_sub_snop2032    ; CHECK: liveins: $sgpr8, $sgpr92033    ; CHECK-NEXT: {{  $}}2034    ; CHECK-NEXT: undef [[COPY:%[0-9]+]].sub0:sreg_64 = COPY $sgpr82035    ; CHECK-NEXT: [[COPY:%[0-9]+]].sub1:sreg_64 = COPY $sgpr92036    ; CHECK-NEXT: undef [[COPY1:%[0-9]+]].sub0:areg_64_align2 = COPY [[COPY]].sub02037    ; CHECK-NEXT: [[COPY1:%[0-9]+]].sub1:areg_64_align2 = COPY [[COPY]].sub12038    ; CHECK-NEXT: S_NOP 0, implicit [[COPY1]]2039    ; CHECK-NEXT: SI_RETURN2040    undef %0.sub0:sreg_64 = COPY $sgpr82041    %0.sub1:sreg_64 = COPY $sgpr92042    undef %2.sub0:areg_64_align2 = COPY %0.sub02043    %2.sub1:areg_64_align2 = COPY %0.sub12044    S_NOP 0, implicit %22045    SI_RETURN2046 2047...2048 2049---2050name: copy_vgpr32_vgpr64_to_areg96_coalesce_with_av96_sub_snop2051tracksRegLiveness: true2052body:             |2053  bb.0:2054    liveins: $vgpr0, $vgpr1_vgpr22055 2056    ; CHECK-LABEL: name: copy_vgpr32_vgpr64_to_areg96_coalesce_with_av96_sub_snop2057    ; CHECK: liveins: $vgpr0, $vgpr1_vgpr22058    ; CHECK-NEXT: {{  $}}2059    ; CHECK-NEXT: undef [[COPY:%[0-9]+]].sub0:vreg_96 = COPY $vgpr02060    ; CHECK-NEXT: [[COPY:%[0-9]+]].sub1_sub2:vreg_96 = COPY $vgpr1_vgpr22061    ; CHECK-NEXT: undef [[COPY1:%[0-9]+]].sub0:areg_96 = COPY [[COPY]].sub02062    ; CHECK-NEXT: [[COPY1:%[0-9]+]].sub1_sub2:areg_96 = COPY [[COPY]].sub1_sub22063    ; CHECK-NEXT: S_NOP 0, implicit [[COPY1]]2064    ; CHECK-NEXT: SI_RETURN2065    undef %0.sub0:vreg_96 =COPY $vgpr02066    %0.sub1_sub2:vreg_96 = COPY $vgpr1_vgpr22067    undef %2.sub0:areg_96 = COPY %0.sub02068    %2.sub1_sub2:areg_96 = COPY %0.sub1_sub22069    S_NOP 0, implicit %22070    SI_RETURN2071 2072...2073 2074---2075name: copy_vgpr32_vgpr64_to_areg96_coalesce_with_av96_align2_sub_snop2076tracksRegLiveness: true2077body:             |2078  bb.0:2079    liveins: $vgpr0, $vgpr1_vgpr22080 2081    ; CHECK-LABEL: name: copy_vgpr32_vgpr64_to_areg96_coalesce_with_av96_align2_sub_snop2082    ; CHECK: liveins: $vgpr0, $vgpr1_vgpr22083    ; CHECK-NEXT: {{  $}}2084    ; CHECK-NEXT: undef [[COPY:%[0-9]+]].sub0:vreg_96 = COPY $vgpr02085    ; CHECK-NEXT: [[COPY:%[0-9]+]].sub1_sub2:vreg_96 = COPY $vgpr1_vgpr22086    ; CHECK-NEXT: undef [[COPY1:%[0-9]+]].sub0:areg_96_align2 = COPY [[COPY]].sub02087    ; CHECK-NEXT: [[COPY1:%[0-9]+]].sub1_sub2:areg_96_align2 = COPY [[COPY]].sub1_sub22088    ; CHECK-NEXT: S_NOP 0, implicit [[COPY1]]2089    ; CHECK-NEXT: SI_RETURN2090    undef %0.sub0:vreg_96 =COPY $vgpr02091    %0.sub1_sub2:vreg_96 = COPY $vgpr1_vgpr22092    undef %2.sub0:areg_96_align2 = COPY %0.sub02093    %2.sub1_sub2:areg_96_align2 = COPY %0.sub1_sub22094    S_NOP 0, implicit %22095    SI_RETURN2096 2097...2098 2099---2100name: copy_vgpr64_vgpr32_to_areg96_coalesce_with_av96_sub_snop2101tracksRegLiveness: true2102body:             |2103  bb.0:2104    liveins: $vgpr0_vgpr1, $vgpr22105 2106    ; CHECK-LABEL: name: copy_vgpr64_vgpr32_to_areg96_coalesce_with_av96_sub_snop2107    ; CHECK: liveins: $vgpr0_vgpr1, $vgpr22108    ; CHECK-NEXT: {{  $}}2109    ; CHECK-NEXT: undef [[COPY:%[0-9]+]].sub0_sub1:vreg_96 = COPY $vgpr0_vgpr12110    ; CHECK-NEXT: [[COPY:%[0-9]+]].sub2:vreg_96 = COPY $vgpr22111    ; CHECK-NEXT: undef [[COPY1:%[0-9]+]].sub0_sub1:areg_96 = COPY [[COPY]].sub0_sub12112    ; CHECK-NEXT: [[COPY1:%[0-9]+]].sub2:areg_96 = COPY [[COPY]].sub22113    ; CHECK-NEXT: S_NOP 0, implicit [[COPY1]]2114    ; CHECK-NEXT: SI_RETURN2115    undef %0.sub0_sub1:vreg_96 = COPY $vgpr0_vgpr12116    %0.sub2:vreg_96 = COPY $vgpr22117    undef %2.sub0_sub1:areg_96 = COPY %0.sub0_sub12118    %2.sub2:areg_96 = COPY %0.sub22119    S_NOP 0, implicit %22120    SI_RETURN2121 2122...2123 2124---2125name: copy_vgpr64_vgpr32_to_areg96_coalesce_with_av96_align2_sub_snop2126tracksRegLiveness: true2127body:             |2128  bb.0:2129    liveins: $vgpr0, $vgpr1_vgpr22130 2131    ; CHECK-LABEL: name: copy_vgpr64_vgpr32_to_areg96_coalesce_with_av96_align2_sub_snop2132    ; CHECK: liveins: $vgpr0, $vgpr1_vgpr22133    ; CHECK-NEXT: {{  $}}2134    ; CHECK-NEXT: undef [[COPY:%[0-9]+]].sub0_sub1:vreg_96 = COPY $vgpr0_vgpr12135    ; CHECK-NEXT: [[COPY:%[0-9]+]].sub2:vreg_96 = COPY $vgpr22136    ; CHECK-NEXT: undef [[COPY1:%[0-9]+]].sub0_sub1:areg_96_align2 = COPY [[COPY]].sub0_sub12137    ; CHECK-NEXT: [[COPY1:%[0-9]+]].sub2:areg_96_align2 = COPY [[COPY]].sub22138    ; CHECK-NEXT: S_NOP 0, implicit [[COPY1]]2139    ; CHECK-NEXT: SI_RETURN2140    undef %0.sub0_sub1:vreg_96 = COPY $vgpr0_vgpr12141    %0.sub2:vreg_96 = COPY $vgpr22142    undef %2.sub0_sub1:areg_96_align2 = COPY %0.sub0_sub12143    %2.sub2:areg_96_align2 = COPY %0.sub22144    S_NOP 0, implicit %22145    SI_RETURN2146 2147...2148 2149---2150name: copy_vgpr32_x2_to_areg64_sub_snop2151tracksRegLiveness: true2152body:             |2153  bb.0:2154    liveins: $vgpr02155 2156    ; CHECK-LABEL: name: copy_vgpr32_x2_to_areg64_sub_snop2157    ; CHECK: liveins: $vgpr02158    ; CHECK-NEXT: {{  $}}2159    ; CHECK-NEXT: undef [[COPY:%[0-9]+]].sub0:vreg_64 = COPY $vgpr02160    ; CHECK-NEXT: undef [[COPY1:%[0-9]+]].sub0:areg_64 = COPY [[COPY]].sub02161    ; CHECK-NEXT: [[COPY1:%[0-9]+]].sub1:areg_64 = COPY [[COPY]].sub02162    ; CHECK-NEXT: S_NOP 0, implicit [[COPY1]]2163    ; CHECK-NEXT: SI_RETURN2164    undef %0.sub0:vreg_64 = COPY $vgpr02165    undef %2.sub0:areg_64 = COPY %0.sub02166    %2.sub1:areg_64 = COPY %0.sub02167    S_NOP 0, implicit %22168    SI_RETURN2169 2170...2171 2172---2173name: copy_vgpr32_x3_to_areg96_sub_snop2174tracksRegLiveness: true2175body:             |2176  bb.0:2177    liveins: $vgpr02178 2179    ; CHECK-LABEL: name: copy_vgpr32_x3_to_areg96_sub_snop2180    ; CHECK: liveins: $vgpr02181    ; CHECK-NEXT: {{  $}}2182    ; CHECK-NEXT: undef [[COPY:%[0-9]+]].sub0:vreg_64 = COPY $vgpr02183    ; CHECK-NEXT: undef [[COPY1:%[0-9]+]].sub0:areg_96 = COPY [[COPY]].sub02184    ; CHECK-NEXT: [[COPY1:%[0-9]+]].sub1:areg_96 = COPY [[COPY]].sub02185    ; CHECK-NEXT: [[COPY1:%[0-9]+]].sub2:areg_96 = COPY [[COPY]].sub02186    ; CHECK-NEXT: S_NOP 0, implicit [[COPY1]]2187    ; CHECK-NEXT: SI_RETURN2188    undef %0.sub0:vreg_64 = COPY $vgpr02189    undef %1.sub0:areg_96 = COPY %0.sub02190    %1.sub1:areg_96 = COPY %0.sub02191    %1.sub2:areg_96 = COPY %0.sub02192    S_NOP 0, implicit %12193    SI_RETURN2194 2195...2196 2197---2198name: copy_vgpr32_x3_to_areg96_align2_sub_snop2199tracksRegLiveness: true2200body:             |2201  bb.0:2202    liveins: $vgpr02203 2204    ; CHECK-LABEL: name: copy_vgpr32_x3_to_areg96_align2_sub_snop2205    ; CHECK: liveins: $vgpr02206    ; CHECK-NEXT: {{  $}}2207    ; CHECK-NEXT: undef [[COPY:%[0-9]+]].sub0:vreg_64 = COPY $vgpr02208    ; CHECK-NEXT: undef [[COPY1:%[0-9]+]].sub0:areg_96_align2 = COPY [[COPY]].sub02209    ; CHECK-NEXT: [[COPY1:%[0-9]+]].sub1:areg_96_align2 = COPY [[COPY]].sub02210    ; CHECK-NEXT: S_NOP 0, implicit [[COPY1]]2211    ; CHECK-NEXT: SI_RETURN2212    undef %0.sub0:vreg_64 = COPY $vgpr02213    undef %1.sub0:areg_96_align2 = COPY %0.sub02214    %1.sub1:areg_96_align2 = COPY %0.sub02215    S_NOP 0, implicit %12216    SI_RETURN2217 2218...2219 2220---2221name: copy_vgpr32_x4_to_areg128_sub_snop2222tracksRegLiveness: true2223body:             |2224  bb.0:2225    liveins: $vgpr02226 2227    ; CHECK-LABEL: name: copy_vgpr32_x4_to_areg128_sub_snop2228    ; CHECK: liveins: $vgpr02229    ; CHECK-NEXT: {{  $}}2230    ; CHECK-NEXT: undef [[COPY:%[0-9]+]].sub0:vreg_64 = COPY $vgpr02231    ; CHECK-NEXT: undef [[COPY1:%[0-9]+]].sub0:areg_128 = COPY [[COPY]].sub02232    ; CHECK-NEXT: [[COPY1:%[0-9]+]].sub1:areg_128 = COPY [[COPY]].sub02233    ; CHECK-NEXT: [[COPY1:%[0-9]+]].sub2:areg_128 = COPY [[COPY]].sub02234    ; CHECK-NEXT: [[COPY1:%[0-9]+]].sub3:areg_128 = COPY [[COPY]].sub02235    ; CHECK-NEXT: S_NOP 0, implicit [[COPY1]]2236    ; CHECK-NEXT: SI_RETURN2237    undef %0.sub0:vreg_64 = COPY $vgpr02238    undef %1.sub0:areg_128 = COPY %0.sub02239    %1.sub1:areg_128 = COPY %0.sub02240    %1.sub2:areg_128 = COPY %0.sub02241    %1.sub3:areg_128 = COPY %0.sub02242    S_NOP 0, implicit %12243    SI_RETURN2244 2245...2246 2247---2248name: copy_vgpr32_x4_to_areg128_align2_sub_snop2249tracksRegLiveness: true2250body:             |2251  bb.0:2252    liveins: $vgpr02253 2254    ; CHECK-LABEL: name: copy_vgpr32_x4_to_areg128_align2_sub_snop2255    ; CHECK: liveins: $vgpr02256    ; CHECK-NEXT: {{  $}}2257    ; CHECK-NEXT: undef [[COPY:%[0-9]+]].sub0:vreg_64 = COPY $vgpr02258    ; CHECK-NEXT: undef [[COPY1:%[0-9]+]].sub0:areg_128_align2 = COPY [[COPY]].sub02259    ; CHECK-NEXT: [[COPY1:%[0-9]+]].sub1:areg_128_align2 = COPY [[COPY]].sub02260    ; CHECK-NEXT: [[COPY1:%[0-9]+]].sub2:areg_128_align2 = COPY [[COPY]].sub02261    ; CHECK-NEXT: [[COPY1:%[0-9]+]].sub3:areg_128_align2 = COPY [[COPY]].sub02262    ; CHECK-NEXT: S_NOP 0, implicit [[COPY1]]2263    ; CHECK-NEXT: SI_RETURN2264    undef %0.sub0:vreg_64 = COPY $vgpr02265    undef %1.sub0:areg_128_align2 = COPY %0.sub02266    %1.sub1:areg_128_align2 = COPY %0.sub02267    %1.sub2:areg_128_align2 = COPY %0.sub02268    %1.sub3:areg_128_align2 = COPY %0.sub02269    S_NOP 0, implicit %12270    SI_RETURN2271 2272...2273 2274---2275name: copy_vgpr32_to_areg64_coalesce_with_av64_both_sub_snop2276tracksRegLiveness: true2277body:             |2278  bb.0:2279    liveins: $vgpr0, $vgpr12280 2281    ; CHECK-LABEL: name: copy_vgpr32_to_areg64_coalesce_with_av64_both_sub_snop2282    ; CHECK: liveins: $vgpr0, $vgpr12283    ; CHECK-NEXT: {{  $}}2284    ; CHECK-NEXT: undef [[COPY:%[0-9]+]].sub0:vreg_64 = COPY $vgpr02285    ; CHECK-NEXT: [[COPY:%[0-9]+]].sub1:vreg_64 = COPY $vgpr12286    ; CHECK-NEXT: undef [[COPY1:%[0-9]+]].sub0:areg_64 = COPY [[COPY]].sub02287    ; CHECK-NEXT: [[COPY1:%[0-9]+]].sub1:areg_64 = COPY [[COPY]].sub12288    ; CHECK-NEXT: S_NOP 0, implicit [[COPY1]]2289    ; CHECK-NEXT: SI_RETURN2290    undef %0.sub0:vreg_64 = COPY $vgpr02291    %0.sub1:vreg_64 = COPY $vgpr12292    undef %2.sub0:areg_64 = COPY %0.sub02293    %2.sub1:areg_64 = COPY %0.sub12294    S_NOP 0, implicit %22295    SI_RETURN2296 2297...2298 2299---2300name: copy_vgpr32_to_areg64_align2_coalesce_with_av64_align2_both_sub_snop2301tracksRegLiveness: true2302body:             |2303  bb.0:2304    liveins: $vgpr0, $vgpr12305 2306    ; CHECK-LABEL: name: copy_vgpr32_to_areg64_align2_coalesce_with_av64_align2_both_sub_snop2307    ; CHECK: liveins: $vgpr0, $vgpr12308    ; CHECK-NEXT: {{  $}}2309    ; CHECK-NEXT: undef [[COPY:%[0-9]+]].sub0:vreg_64_align2 = COPY $vgpr02310    ; CHECK-NEXT: [[COPY:%[0-9]+]].sub1:vreg_64_align2 = COPY $vgpr12311    ; CHECK-NEXT: undef [[COPY1:%[0-9]+]].sub0:areg_64_align2 = COPY [[COPY]].sub02312    ; CHECK-NEXT: [[COPY1:%[0-9]+]].sub1:areg_64_align2 = COPY [[COPY]].sub12313    ; CHECK-NEXT: S_NOP 0, implicit [[COPY1]]2314    ; CHECK-NEXT: SI_RETURN2315    undef %0.sub0:vreg_64_align2 = COPY $vgpr02316    %0.sub1:vreg_64_align2 = COPY $vgpr12317    undef %2.sub0:areg_64_align2 = COPY %0.sub02318    %2.sub1:areg_64_align2 = COPY %0.sub12319    S_NOP 0, implicit %22320    SI_RETURN2321 2322...2323 2324---2325name: copy_vgpr32_to_areg96_coalesce_with_av96_both_sub_snop2326tracksRegLiveness: true2327body:             |2328  bb.0:2329    liveins: $vgpr0, $vgpr1, $vgpr22330 2331    ; CHECK-LABEL: name: copy_vgpr32_to_areg96_coalesce_with_av96_both_sub_snop2332    ; CHECK: liveins: $vgpr0, $vgpr1, $vgpr22333    ; CHECK-NEXT: {{  $}}2334    ; CHECK-NEXT: undef [[COPY:%[0-9]+]].sub0:vreg_96 = COPY $vgpr02335    ; CHECK-NEXT: [[COPY:%[0-9]+]].sub1:vreg_96 = COPY $vgpr12336    ; CHECK-NEXT: [[COPY:%[0-9]+]].sub2:vreg_96 = COPY $vgpr22337    ; CHECK-NEXT: undef [[COPY1:%[0-9]+]].sub0:areg_96 = COPY [[COPY]].sub02338    ; CHECK-NEXT: [[COPY1:%[0-9]+]].sub1:areg_96 = COPY [[COPY]].sub12339    ; CHECK-NEXT: [[COPY1:%[0-9]+]].sub2:areg_96 = COPY [[COPY]].sub22340    ; CHECK-NEXT: S_NOP 0, implicit [[COPY1]]2341    ; CHECK-NEXT: SI_RETURN2342    undef %0.sub0:vreg_96 = COPY $vgpr02343    %0.sub1:vreg_96 = COPY $vgpr12344    %0.sub2:vreg_96 = COPY $vgpr22345    undef %3.sub0:areg_96 = COPY %0.sub02346    %3.sub1:areg_96 = COPY %0.sub12347    %3.sub2:areg_96 = COPY %0.sub22348    S_NOP 0, implicit %32349    SI_RETURN2350 2351...2352 2353---2354name: copy_vgpr32_to_areg96_coalesce_with_av96_align2_both_sub_snop2355tracksRegLiveness: true2356body:             |2357  bb.0:2358    liveins: $vgpr0, $vgpr1, $vgpr22359 2360    ; CHECK-LABEL: name: copy_vgpr32_to_areg96_coalesce_with_av96_align2_both_sub_snop2361    ; CHECK: liveins: $vgpr0, $vgpr1, $vgpr22362    ; CHECK-NEXT: {{  $}}2363    ; CHECK-NEXT: undef [[COPY:%[0-9]+]].sub0:vreg_96_align2 = COPY $vgpr02364    ; CHECK-NEXT: [[COPY:%[0-9]+]].sub1:vreg_96_align2 = COPY $vgpr12365    ; CHECK-NEXT: [[COPY:%[0-9]+]].sub2:vreg_96_align2 = COPY $vgpr22366    ; CHECK-NEXT: undef [[COPY1:%[0-9]+]].sub0:areg_96_align2 = COPY [[COPY]].sub02367    ; CHECK-NEXT: [[COPY1:%[0-9]+]].sub1:areg_96_align2 = COPY [[COPY]].sub12368    ; CHECK-NEXT: [[COPY1:%[0-9]+]].sub2:areg_96_align2 = COPY [[COPY]].sub22369    ; CHECK-NEXT: S_NOP 0, implicit [[COPY1]]2370    ; CHECK-NEXT: SI_RETURN2371    undef %0.sub0:vreg_96_align2 = COPY $vgpr02372    %0.sub1:vreg_96_align2 = COPY $vgpr12373    %0.sub2:vreg_96_align2 = COPY $vgpr22374    undef %3.sub0:areg_96_align2 = COPY %0.sub02375    %3.sub1:areg_96_align2 = COPY %0.sub12376    %3.sub2:areg_96_align2 = COPY %0.sub22377    S_NOP 0, implicit %32378    SI_RETURN2379 2380...2381 2382---2383name: copy_vgpr64_to_areg64_coalesce_with_av128_both_sub_snop2384tracksRegLiveness: true2385body:             |2386  bb.0:2387    liveins: $vgpr0_vgpr1, $vgpr2_vgpr32388 2389    ; CHECK-LABEL: name: copy_vgpr64_to_areg64_coalesce_with_av128_both_sub_snop2390    ; CHECK: liveins: $vgpr0_vgpr1, $vgpr2_vgpr32391    ; CHECK-NEXT: {{  $}}2392    ; CHECK-NEXT: undef [[COPY:%[0-9]+]].sub0_sub1:vreg_128 = COPY $vgpr0_vgpr12393    ; CHECK-NEXT: [[COPY:%[0-9]+]].sub2_sub3:vreg_128 = COPY $vgpr2_vgpr32394    ; CHECK-NEXT: undef [[COPY1:%[0-9]+]].sub0_sub1:areg_128 = COPY [[COPY]].sub0_sub12395    ; CHECK-NEXT: [[COPY1:%[0-9]+]].sub2_sub3:areg_128 = COPY [[COPY]].sub2_sub32396    ; CHECK-NEXT: S_NOP 0, implicit [[COPY1]]2397    ; CHECK-NEXT: SI_RETURN2398    undef %0.sub0_sub1:vreg_128 = COPY $vgpr0_vgpr12399    %0.sub2_sub3:vreg_128 = COPY $vgpr2_vgpr32400    undef %2.sub0_sub1:areg_128 = COPY %0.sub0_sub12401    %2.sub2_sub3:areg_128 = COPY %0.sub2_sub32402    S_NOP 0, implicit %22403    SI_RETURN2404 2405...2406 2407---2408name: copy_vgpr64_to_areg64_align2_coalesce_with_av128_align2_both_sub_snop2409tracksRegLiveness: true2410body:             |2411  bb.0:2412    liveins: $vgpr0_vgpr1, $vgpr2_vgpr32413 2414    ; CHECK-LABEL: name: copy_vgpr64_to_areg64_align2_coalesce_with_av128_align2_both_sub_snop2415    ; CHECK: liveins: $vgpr0_vgpr1, $vgpr2_vgpr32416    ; CHECK-NEXT: {{  $}}2417    ; CHECK-NEXT: undef [[COPY:%[0-9]+]].sub0_sub1:vreg_128_align2 = COPY $vgpr0_vgpr12418    ; CHECK-NEXT: [[COPY:%[0-9]+]].sub2_sub3:vreg_128_align2 = COPY $vgpr2_vgpr32419    ; CHECK-NEXT: undef [[COPY1:%[0-9]+]].sub0_sub1:areg_128_align2 = COPY [[COPY]].sub0_sub12420    ; CHECK-NEXT: [[COPY1:%[0-9]+]].sub2_sub3:areg_128_align2 = COPY [[COPY]].sub2_sub32421    ; CHECK-NEXT: S_NOP 0, implicit [[COPY1]]2422    ; CHECK-NEXT: SI_RETURN2423    undef %0.sub0_sub1:vreg_128_align2 = COPY $vgpr0_vgpr12424    %0.sub2_sub3:vreg_128_align2 = COPY $vgpr2_vgpr32425    undef %2.sub0_sub1:areg_128_align2 = COPY %0.sub0_sub12426    %2.sub2_sub3:areg_128_align2 = COPY %0.sub2_sub32427    S_NOP 0, implicit %22428    SI_RETURN2429 2430...2431 2432---2433name: copy_sgpr32_to_areg64_align2_both_sub_snop2434tracksRegLiveness: true2435body:             |2436  bb.0:2437    liveins: $sgpr8, $sgpr92438 2439    ; CHECK-LABEL: name: copy_sgpr32_to_areg64_align2_both_sub_snop2440    ; CHECK: liveins: $sgpr8, $sgpr92441    ; CHECK-NEXT: {{  $}}2442    ; CHECK-NEXT: undef [[COPY:%[0-9]+]].sub0:sreg_64 = COPY $sgpr82443    ; CHECK-NEXT: [[COPY:%[0-9]+]].sub1:sreg_64 = COPY $sgpr92444    ; CHECK-NEXT: undef [[COPY1:%[0-9]+]].sub0:areg_64_align2 = COPY [[COPY]].sub02445    ; CHECK-NEXT: [[COPY1:%[0-9]+]].sub1:areg_64_align2 = COPY [[COPY]].sub12446    ; CHECK-NEXT: S_NOP 0, implicit [[COPY1]]2447    ; CHECK-NEXT: SI_RETURN2448    undef %0.sub0:sreg_64 = COPY $sgpr82449    %0.sub1:sreg_64 = COPY $sgpr92450    undef %2.sub0:areg_64_align2 = COPY %0.sub02451    %2.sub1:areg_64_align2 = COPY %0.sub12452    S_NOP 0, implicit %22453    SI_RETURN2454 2455...2456 2457---2458name: copy_vgpr32_vgpr64_to_areg96_coalesce_with_av96_both_sub_snop2459tracksRegLiveness: true2460body:             |2461  bb.0:2462    liveins: $vgpr0, $vgpr1_vgpr22463 2464    ; CHECK-LABEL: name: copy_vgpr32_vgpr64_to_areg96_coalesce_with_av96_both_sub_snop2465    ; CHECK: liveins: $vgpr0, $vgpr1_vgpr22466    ; CHECK-NEXT: {{  $}}2467    ; CHECK-NEXT: undef [[COPY:%[0-9]+]].sub0:vreg_96 = COPY $vgpr02468    ; CHECK-NEXT: [[COPY:%[0-9]+]].sub1_sub2:vreg_96 = COPY $vgpr1_vgpr22469    ; CHECK-NEXT: undef [[COPY1:%[0-9]+]].sub0:areg_96 = COPY [[COPY]].sub02470    ; CHECK-NEXT: [[COPY1:%[0-9]+]].sub1_sub2:areg_96 = COPY [[COPY]].sub1_sub22471    ; CHECK-NEXT: S_NOP 0, implicit [[COPY1]]2472    ; CHECK-NEXT: SI_RETURN2473    undef %0.sub0:vreg_96 = COPY $vgpr02474    %0.sub1_sub2:vreg_96 = COPY $vgpr1_vgpr22475    undef %2.sub0:areg_96 = COPY %0.sub02476    %2.sub1_sub2:areg_96 = COPY %0.sub1_sub22477    S_NOP 0, implicit %22478    SI_RETURN2479 2480...2481 2482name: copy_vgpr32_vgpr64_to_areg96_coalesce_with_av96_shuffle_both_sub_snop2483tracksRegLiveness: true2484body:             |2485  bb.0:2486    liveins: $vgpr0, $vgpr1_vgpr22487 2488    ; CHECK-LABEL: name: copy_vgpr32_vgpr64_to_areg96_coalesce_with_av962489    ; CHECK: liveins: $vgpr0, $vgpr1_vgpr22490    ; CHECK-NEXT: {{  $}}2491    ; CHECK-NEXT: [[COPY:%[0-9]+]].sub0:vreg_96  = COPY $vgpr02492    ; CHECK-NEXT: [[COPY:%[0-9]+]].sub1_sub2:vreg_96  = COPY $vgpr1_vgpr22493    ; CHECK-NEXT: undef [[COPY2:%[0-9]+]].sub0:areg_96 = COPY [[COPY]].sub22494    ; CHECK-NEXT: [[COPY2:%[0-9]+]].sub1_sub2:areg_96 = COPY [[COPY]].sub0_sub12495    ; CHECK-NEXT: S_NOP 0, implicit %12496    ; CHECK-NEXT: SI_RETURN2497    undef %0.sub0:vreg_96 = COPY $vgpr02498    %0.sub1_sub2:vreg_96 = COPY $vgpr1_vgpr22499    undef %2.sub0:areg_96 = COPY %0.sub22500    %2.sub1_sub2:areg_96 = COPY %0.sub0_sub12501    S_NOP 0, implicit %22502    SI_RETURN2503 2504...2505 2506 2507---2508name: copy_vgpr32_vgpr64_to_areg96_coalesce_with_av96_align2_both_sub_snop2509tracksRegLiveness: true2510body:             |2511  bb.0:2512    liveins: $vgpr0, $vgpr1_vgpr22513 2514    ; CHECK-LABEL: name: copy_vgpr32_vgpr64_to_areg96_coalesce_with_av96_align2_both_sub_snop2515    ; CHECK: liveins: $vgpr0, $vgpr1_vgpr22516    ; CHECK-NEXT: {{  $}}2517    ; CHECK-NEXT: undef [[COPY:%[0-9]+]].sub0:vreg_96_align2 = COPY $vgpr02518    ; CHECK-NEXT: [[COPY:%[0-9]+]].sub1_sub2:vreg_96_align2 = COPY $vgpr1_vgpr22519    ; CHECK-NEXT: undef [[COPY1:%[0-9]+]].sub0:areg_96_align2 = COPY [[COPY]].sub02520    ; CHECK-NEXT: [[COPY1:%[0-9]+]].sub1_sub2:areg_96_align2 = COPY [[COPY]].sub1_sub22521    ; CHECK-NEXT: S_NOP 0, implicit [[COPY1]]2522    ; CHECK-NEXT: SI_RETURN2523    undef %0.sub0:vreg_96_align2 = COPY $vgpr02524    %0.sub1_sub2:vreg_96_align2 = COPY $vgpr1_vgpr22525    undef %2.sub0:areg_96_align2 = COPY %0.sub02526    %2.sub1_sub2:areg_96_align2 = COPY %0.sub1_sub22527    S_NOP 0, implicit %22528    SI_RETURN2529 2530...2531 2532---2533name: copy_vgpr64_vgpr32_to_areg96_coalesce_with_av96_both_sub_snop2534tracksRegLiveness: true2535body:             |2536  bb.0:2537    liveins: $vgpr0_vgpr1, $vgpr22538 2539    ; CHECK-LABEL: name: copy_vgpr64_vgpr32_to_areg96_coalesce_with_av96_both_sub_snop2540    ; CHECK: liveins: $vgpr0_vgpr1, $vgpr22541    ; CHECK-NEXT: {{  $}}2542    ; CHECK-NEXT: undef [[COPY:%[0-9]+]].sub0_sub1:vreg_96 = COPY $vgpr0_vgpr12543    ; CHECK-NEXT: [[COPY:%[0-9]+]].sub2:vreg_96 = COPY $vgpr22544    ; CHECK-NEXT: undef [[COPY1:%[0-9]+]].sub0_sub1:areg_96 = COPY [[COPY]].sub0_sub12545    ; CHECK-NEXT: [[COPY1:%[0-9]+]].sub2:areg_96 = COPY [[COPY]].sub22546    ; CHECK-NEXT: S_NOP 0, implicit [[COPY1]]2547    ; CHECK-NEXT: SI_RETURN2548    undef %0.sub0_sub1:vreg_96 = COPY $vgpr0_vgpr12549    %0.sub2:vreg_96 = COPY $vgpr22550    undef %2.sub0_sub1:areg_96 = COPY %0.sub0_sub12551    %2.sub2:areg_96 = COPY %0.sub22552    S_NOP 0, implicit %22553    SI_RETURN2554 2555...2556 2557---2558name: copy_vgpr64_vgpr32_to_areg96_coalesce_with_av96_align2_both_sub_snop2559tracksRegLiveness: true2560body:             |2561  bb.0:2562    liveins: $vgpr0, $vgpr1_vgpr22563 2564    ; CHECK-LABEL: name: copy_vgpr64_vgpr32_to_areg96_coalesce_with_av96_align2_both_sub_snop2565    ; CHECK: liveins: $vgpr0, $vgpr1_vgpr22566    ; CHECK-NEXT: {{  $}}2567    ; CHECK-NEXT: undef [[COPY:%[0-9]+]].sub0_sub1:vreg_96_align2 = COPY $vgpr0_vgpr12568    ; CHECK-NEXT: [[COPY:%[0-9]+]].sub2:vreg_96_align2 = COPY $vgpr22569    ; CHECK-NEXT: undef [[COPY1:%[0-9]+]].sub0_sub1:areg_96_align2 = COPY [[COPY]].sub0_sub12570    ; CHECK-NEXT: [[COPY1:%[0-9]+]].sub2:areg_96_align2 = COPY [[COPY]].sub22571    ; CHECK-NEXT: S_NOP 0, implicit [[COPY1]]2572    ; CHECK-NEXT: SI_RETURN2573    undef %0.sub0_sub1:vreg_96_align2 = COPY $vgpr0_vgpr12574    %0.sub2:vreg_96_align2 = COPY $vgpr22575    undef %2.sub0_sub1:areg_96_align2 = COPY %0.sub0_sub12576    %2.sub2:areg_96_align2 = COPY %0.sub22577    S_NOP 0, implicit %22578    SI_RETURN2579 2580...2581 2582---2583name: copy_vgpr64_vgpr32_to_areg96_coalesce_with_av96_align2_mismatch_both_sub_snop2584tracksRegLiveness: true2585body:             |2586  bb.0:2587    liveins: $vgpr0, $vgpr1_vgpr22588 2589    ; CHECK-LABEL: name: copy_vgpr64_vgpr32_to_areg96_coalesce_with_av96_align2_mismatch_both_sub_snop2590    ; CHECK: liveins: $vgpr0, $vgpr1_vgpr22591    ; CHECK-NEXT: {{  $}}2592    ; CHECK-NEXT: undef [[COPY:%[0-9]+]].sub0_sub1:vreg_96 = COPY $vgpr0_vgpr12593    ; CHECK-NEXT: [[COPY:%[0-9]+]].sub2:vreg_96 = COPY $vgpr22594    ; CHECK-NEXT: undef [[COPY1:%[0-9]+]].sub0_sub1:areg_96_align2 = COPY [[COPY]].sub0_sub12595    ; CHECK-NEXT: [[COPY1:%[0-9]+]].sub2:areg_96_align2 = COPY [[COPY]].sub22596    ; CHECK-NEXT: S_NOP 0, implicit [[COPY1]]2597    ; CHECK-NEXT: SI_RETURN2598    undef %0.sub0_sub1:vreg_96 = COPY $vgpr0_vgpr12599    %0.sub2:vreg_96 = COPY $vgpr22600    undef %2.sub0_sub1:areg_96_align2 = COPY %0.sub0_sub12601    %2.sub2:areg_96_align2 = COPY %0.sub22602    S_NOP 0, implicit %22603    SI_RETURN2604 2605...2606 2607 2608---2609name: copy_vgpr32_to_areg64_coalesce_with_av64_whole_reg_snop2610tracksRegLiveness: true2611body:             |2612  bb.0:2613    liveins: $vgpr0, $vgpr12614 2615    ; CHECK-LABEL: name: copy_vgpr32_to_areg64_coalesce_with_av64_whole_reg_snop2616    ; CHECK: liveins: $vgpr0, $vgpr12617    ; CHECK-NEXT: {{  $}}2618    ; CHECK-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr12619    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:areg_64 = COPY [[COPY]]2620    ; CHECK-NEXT: S_NOP 0, implicit [[COPY1]]2621    ; CHECK-NEXT: SI_RETURN2622    %0:vreg_64 = COPY $vgpr0_vgpr12623    %2:areg_64 = COPY %02624    S_NOP 0, implicit %22625    SI_RETURN2626 2627...2628 2629---2630name: copy_vgpr32_to_areg64_align2_coalesce_with_av64_align2_whole_reg_snop2631tracksRegLiveness: true2632body:             |2633  bb.0:2634    liveins: $vgpr0, $vgpr12635 2636    ; CHECK-LABEL: name: copy_vgpr32_to_areg64_align2_coalesce_with_av64_align2_whole_reg_snop2637    ; CHECK: liveins: $vgpr0, $vgpr12638    ; CHECK-NEXT: {{  $}}2639    ; CHECK-NEXT: [[COPY:%[0-9]+]]:vreg_64_align2 = COPY $vgpr0_vgpr12640    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:areg_64_align2 = COPY [[COPY]]2641    ; CHECK-NEXT: S_NOP 0, implicit [[COPY1]]2642    ; CHECK-NEXT: SI_RETURN2643    %0:vreg_64_align2 = COPY $vgpr0_vgpr12644    %2:areg_64_align2 = COPY %02645    S_NOP 0, implicit %22646    SI_RETURN2647 2648...2649 2650---2651name: copy_vgpr32_to_areg96_coalesce_with_av96_whole_reg_snop2652tracksRegLiveness: true2653body:             |2654  bb.0:2655    liveins: $vgpr0, $vgpr1, $vgpr22656 2657    ; CHECK-LABEL: name: copy_vgpr32_to_areg96_coalesce_with_av96_whole_reg_snop2658    ; CHECK: liveins: $vgpr0, $vgpr1, $vgpr22659    ; CHECK-NEXT: {{  $}}2660    ; CHECK-NEXT: [[COPY:%[0-9]+]]:vreg_96 = COPY $vgpr0_vgpr1_vgpr22661    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:areg_96 = COPY [[COPY]]2662    ; CHECK-NEXT: S_NOP 0, implicit [[COPY1]]2663    ; CHECK-NEXT: SI_RETURN2664    %0:vreg_96 = COPY $vgpr0_vgpr1_vgpr22665    %3:areg_96 = COPY %02666    S_NOP 0, implicit %32667    SI_RETURN2668 2669...2670 2671---2672name: copy_vgpr32_to_areg96_coalesce_with_av96_align2_whole_reg_snop2673tracksRegLiveness: true2674body:             |2675  bb.0:2676    liveins: $vgpr0, $vgpr1, $vgpr22677 2678    ; CHECK-LABEL: name: copy_vgpr32_to_areg96_coalesce_with_av96_align2_whole_reg_snop2679    ; CHECK: liveins: $vgpr0, $vgpr1, $vgpr22680    ; CHECK-NEXT: {{  $}}2681    ; CHECK-NEXT: [[COPY:%[0-9]+]]:vreg_96_align2 = COPY $vgpr0_vgpr1_vgpr22682    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:areg_96_align2 = COPY [[COPY]]2683    ; CHECK-NEXT: S_NOP 0, implicit [[COPY1]]2684    ; CHECK-NEXT: SI_RETURN2685    %0:vreg_96_align2 = COPY $vgpr0_vgpr1_vgpr22686    %3:areg_96_align2 = COPY %02687    S_NOP 0, implicit %32688    SI_RETURN2689 2690...2691 2692---2693name: copy_vgpr64_to_areg64_coalesce_with_av128_whole_reg_snop2694tracksRegLiveness: true2695body:             |2696  bb.0:2697    liveins: $vgpr0_vgpr1, $vgpr2_vgpr32698 2699    ; CHECK-LABEL: name: copy_vgpr64_to_areg64_coalesce_with_av128_whole_reg_snop2700    ; CHECK: liveins: $vgpr0_vgpr1, $vgpr2_vgpr32701    ; CHECK-NEXT: {{  $}}2702    ; CHECK-NEXT: [[COPY:%[0-9]+]]:vreg_128 = COPY $vgpr0_vgpr1_vgpr2_vgpr32703    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:areg_128 = COPY [[COPY]]2704    ; CHECK-NEXT: S_NOP 0, implicit [[COPY1]]2705    ; CHECK-NEXT: SI_RETURN2706    %0:vreg_128 = COPY $vgpr0_vgpr1_vgpr2_vgpr32707    %2:areg_128 = COPY %02708    S_NOP 0, implicit %22709    SI_RETURN2710 2711...2712 2713---2714name: copy_vgpr64_to_areg64_align2_coalesce_with_av128_align2_whole_reg_snop2715tracksRegLiveness: true2716body:             |2717  bb.0:2718    liveins: $vgpr0_vgpr1, $vgpr2_vgpr32719 2720    ; CHECK-LABEL: name: copy_vgpr64_to_areg64_align2_coalesce_with_av128_align2_whole_reg_snop2721    ; CHECK: liveins: $vgpr0_vgpr1, $vgpr2_vgpr32722    ; CHECK-NEXT: {{  $}}2723    ; CHECK-NEXT: [[COPY:%[0-9]+]]:vreg_128_align2 = COPY $vgpr0_vgpr1_vgpr2_vgpr32724    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:areg_128_align2 = COPY [[COPY]]2725    ; CHECK-NEXT: S_NOP 0, implicit [[COPY1]]2726    ; CHECK-NEXT: SI_RETURN2727    %0:vreg_128_align2 = COPY $vgpr0_vgpr1_vgpr2_vgpr32728    %2:areg_128_align2 = COPY %02729    S_NOP 0, implicit %22730    SI_RETURN2731 2732...2733 2734---2735name: copy_sgpr32_to_areg64_align2_whole_reg_snop2736tracksRegLiveness: true2737body:             |2738  bb.0:2739    liveins: $sgpr8, $sgpr92740 2741    ; CHECK-LABEL: name: copy_sgpr32_to_areg64_align2_whole_reg_snop2742    ; CHECK: liveins: $sgpr8, $sgpr92743    ; CHECK-NEXT: {{  $}}2744    ; CHECK-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr8_sgpr92745    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:areg_64_align2 = COPY [[COPY]]2746    ; CHECK-NEXT: S_NOP 0, implicit [[COPY1]]2747    ; CHECK-NEXT: SI_RETURN2748    %0:sreg_64 = COPY $sgpr8_sgpr92749    %2:areg_64_align2 = COPY %02750    S_NOP 0, implicit %22751    SI_RETURN2752 2753...2754 2755---2756name: copy_vgpr64_vgpr32_to_areg96_coalesce_with_av96_align2_mismatch_whole_reg_snop2757tracksRegLiveness: true2758body:             |2759  bb.0:2760    liveins: $vgpr0, $vgpr1_vgpr22761 2762    ; CHECK-LABEL: name: copy_vgpr64_vgpr32_to_areg96_coalesce_with_av96_align2_mismatch_whole_reg_snop2763    ; CHECK: liveins: $vgpr0, $vgpr1_vgpr22764    ; CHECK-NEXT: {{  $}}2765    ; CHECK-NEXT: [[COPY:%[0-9]+]]:vreg_96 = COPY $vgpr0_vgpr1_vgpr22766    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:areg_96_align2 = COPY [[COPY]]2767    ; CHECK-NEXT: S_NOP 0, implicit [[COPY1]]2768    ; CHECK-NEXT: SI_RETURN2769    %0:vreg_96 = COPY $vgpr0_vgpr1_vgpr22770    %2:areg_96_align2 = COPY %02771    S_NOP 0, implicit %22772    SI_RETURN2773 2774...2775