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