593 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -mtriple=amdgcn-mesa-mesa3d -mcpu=tahiti -run-pass=instruction-select -verify-machineinstrs -global-isel-abort=2 -pass-remarks-missed='gisel*' -o - %s | FileCheck -check-prefix=GCN %s3 4---5name: test_merge_values_v_s64_v_s32_v_s326legalized: true7regBankSelected: true8tracksRegLiveness: true9 10body: |11 bb.0:12 liveins: $vgpr0, $vgpr113 14 ; GCN-LABEL: name: test_merge_values_v_s64_v_s32_v_s3215 ; GCN: liveins: $vgpr0, $vgpr116 ; GCN-NEXT: {{ $}}17 ; GCN-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr018 ; GCN-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr119 ; GCN-NEXT: [[REG_SEQUENCE:%[0-9]+]]:vreg_64 = REG_SEQUENCE [[COPY]], %subreg.sub0, [[COPY1]], %subreg.sub120 ; GCN-NEXT: S_ENDPGM 0, implicit [[REG_SEQUENCE]]21 %0:vgpr(s32) = COPY $vgpr022 %1:vgpr(s32) = COPY $vgpr123 %2:vgpr(s64) = G_MERGE_VALUES %0, %124 S_ENDPGM 0, implicit %225...26 27---28name: test_merge_values_v_s64_s_s32_v_s3229legalized: true30regBankSelected: true31tracksRegLiveness: true32 33body: |34 bb.0:35 liveins: $sgpr0, $vgpr036 37 ; GCN-LABEL: name: test_merge_values_v_s64_s_s32_v_s3238 ; GCN: liveins: $sgpr0, $vgpr039 ; GCN-NEXT: {{ $}}40 ; GCN-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr041 ; GCN-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr042 ; GCN-NEXT: [[REG_SEQUENCE:%[0-9]+]]:vreg_64 = REG_SEQUENCE [[COPY]], %subreg.sub0, [[COPY1]], %subreg.sub143 ; GCN-NEXT: S_ENDPGM 0, implicit [[REG_SEQUENCE]]44 %0:sgpr(s32) = COPY $sgpr045 %1:vgpr(s32) = COPY $vgpr046 %2:vgpr(s64) = G_MERGE_VALUES %0, %147 S_ENDPGM 0, implicit %248...49 50---51name: test_merge_values_v_s64_v_s32_s_s3252legalized: true53regBankSelected: true54tracksRegLiveness: true55 56body: |57 bb.0:58 liveins: $sgpr0, $vgpr059 60 ; GCN-LABEL: name: test_merge_values_v_s64_v_s32_s_s3261 ; GCN: liveins: $sgpr0, $vgpr062 ; GCN-NEXT: {{ $}}63 ; GCN-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr064 ; GCN-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr065 ; GCN-NEXT: [[REG_SEQUENCE:%[0-9]+]]:vreg_64 = REG_SEQUENCE [[COPY]], %subreg.sub0, [[COPY1]], %subreg.sub166 ; GCN-NEXT: S_ENDPGM 0, implicit [[REG_SEQUENCE]]67 %0:vgpr(s32) = COPY $vgpr068 %1:sgpr(s32) = COPY $sgpr069 %2:vgpr(s64) = G_MERGE_VALUES %0, %170 S_ENDPGM 0, implicit %271...72 73---74name: test_merge_values_s_s64_s_s32_s_s3275legalized: true76regBankSelected: true77tracksRegLiveness: true78 79body: |80 bb.0:81 liveins: $sgpr0, $sgpr182 83 ; GCN-LABEL: name: test_merge_values_s_s64_s_s32_s_s3284 ; GCN: liveins: $sgpr0, $sgpr185 ; GCN-NEXT: {{ $}}86 ; GCN-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr087 ; GCN-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr188 ; GCN-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sreg_64 = REG_SEQUENCE [[COPY]], %subreg.sub0, [[COPY1]], %subreg.sub189 ; GCN-NEXT: S_ENDPGM 0, implicit [[REG_SEQUENCE]]90 %0:sgpr(s32) = COPY $sgpr091 %1:sgpr(s32) = COPY $sgpr192 %2:sgpr(s64) = G_MERGE_VALUES %0, %193 S_ENDPGM 0, implicit %294...95 96---97name: test_merge_values_s_s96_s_s32_s_s32_s_s3298legalized: true99regBankSelected: true100 101body: |102 bb.0:103 liveins: $sgpr0, $sgpr1, $sgpr2104 105 ; GCN-LABEL: name: test_merge_values_s_s96_s_s32_s_s32_s_s32106 ; GCN: liveins: $sgpr0, $sgpr1, $sgpr2107 ; GCN-NEXT: {{ $}}108 ; GCN-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0109 ; GCN-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr1110 ; GCN-NEXT: [[COPY2:%[0-9]+]]:sreg_32 = COPY $sgpr2111 ; GCN-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sgpr_96 = REG_SEQUENCE [[COPY]], %subreg.sub0, [[COPY1]], %subreg.sub1, [[COPY2]], %subreg.sub2112 ; GCN-NEXT: $sgpr0_sgpr1_sgpr2 = COPY [[REG_SEQUENCE]]113 %0:sgpr(s32) = COPY $sgpr0114 %1:sgpr(s32) = COPY $sgpr1115 %2:sgpr(s32) = COPY $sgpr2116 %3:sgpr(s96) = G_MERGE_VALUES %0, %1, %2117 $sgpr0_sgpr1_sgpr2 = COPY %3118...119 120---121name: test_merge_values_v_s96_v_s32_v_s32_v_s32122legalized: true123regBankSelected: true124tracksRegLiveness: true125 126body: |127 bb.0:128 liveins: $vgpr0, $vgpr1, $vgpr2129 130 ; GCN-LABEL: name: test_merge_values_v_s96_v_s32_v_s32_v_s32131 ; GCN: liveins: $vgpr0, $vgpr1, $vgpr2132 ; GCN-NEXT: {{ $}}133 ; GCN-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0134 ; GCN-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1135 ; GCN-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr2136 ; GCN-NEXT: [[REG_SEQUENCE:%[0-9]+]]:vreg_96 = REG_SEQUENCE [[COPY]], %subreg.sub0, [[COPY1]], %subreg.sub1, [[COPY2]], %subreg.sub2137 ; GCN-NEXT: $vgpr0_vgpr1_vgpr2 = COPY [[REG_SEQUENCE]]138 %0:vgpr(s32) = COPY $vgpr0139 %1:vgpr(s32) = COPY $vgpr1140 %2:vgpr(s32) = COPY $vgpr2141 %3:vgpr(s96) = G_MERGE_VALUES %0, %1, %2142 $vgpr0_vgpr1_vgpr2 = COPY %3143...144 145---146name: test_merge_values_s_s128_s_s32_s_s32_s_s32_s_s32147legalized: true148regBankSelected: true149tracksRegLiveness: true150 151body: |152 bb.0:153 liveins: $sgpr0, $sgpr1, $sgpr2, $sgpr3154 155 ; GCN-LABEL: name: test_merge_values_s_s128_s_s32_s_s32_s_s32_s_s32156 ; GCN: liveins: $sgpr0, $sgpr1, $sgpr2, $sgpr3157 ; GCN-NEXT: {{ $}}158 ; GCN-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0159 ; GCN-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr1160 ; GCN-NEXT: [[COPY2:%[0-9]+]]:sreg_32 = COPY $sgpr2161 ; GCN-NEXT: [[COPY3:%[0-9]+]]:sreg_32 = COPY $sgpr3162 ; GCN-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sgpr_128 = REG_SEQUENCE [[COPY]], %subreg.sub0, [[COPY1]], %subreg.sub1, [[COPY2]], %subreg.sub2, [[COPY3]], %subreg.sub3163 ; GCN-NEXT: $sgpr0_sgpr1_sgpr2_sgpr3 = COPY [[REG_SEQUENCE]]164 %0:sgpr(s32) = COPY $sgpr0165 %1:sgpr(s32) = COPY $sgpr1166 %2:sgpr(s32) = COPY $sgpr2167 %3:sgpr(s32) = COPY $sgpr3168 %4:sgpr(s128) = G_MERGE_VALUES %0, %1, %2, %3169 $sgpr0_sgpr1_sgpr2_sgpr3 = COPY %4170...171 172---173name: test_merge_values_v_s128_v_s32_v_s32_v_s32174legalized: true175regBankSelected: true176tracksRegLiveness: true177 178body: |179 bb.0:180 liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3181 182 ; GCN-LABEL: name: test_merge_values_v_s128_v_s32_v_s32_v_s32183 ; GCN: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3184 ; GCN-NEXT: {{ $}}185 ; GCN-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0186 ; GCN-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1187 ; GCN-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr2188 ; GCN-NEXT: [[COPY3:%[0-9]+]]:vgpr_32 = COPY $vgpr3189 ; GCN-NEXT: [[REG_SEQUENCE:%[0-9]+]]:vreg_128 = REG_SEQUENCE [[COPY]], %subreg.sub0, [[COPY1]], %subreg.sub1, [[COPY2]], %subreg.sub2, [[COPY3]], %subreg.sub3190 ; GCN-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[REG_SEQUENCE]]191 %0:vgpr(s32) = COPY $vgpr0192 %1:vgpr(s32) = COPY $vgpr1193 %2:vgpr(s32) = COPY $vgpr2194 %3:vgpr(s32) = COPY $vgpr3195 %4:vgpr(s128) = G_MERGE_VALUES %0, %1, %2, %3196 $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %4197...198 199---200name: test_merge_values_s_s128_s_s64_s_s64201legalized: true202regBankSelected: true203tracksRegLiveness: true204 205body: |206 bb.0:207 liveins: $sgpr0_sgpr1, $sgpr2_sgpr3208 209 ; GCN-LABEL: name: test_merge_values_s_s128_s_s64_s_s64210 ; GCN: liveins: $sgpr0_sgpr1, $sgpr2_sgpr3211 ; GCN-NEXT: {{ $}}212 ; GCN-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1213 ; GCN-NEXT: [[COPY1:%[0-9]+]]:sreg_64 = COPY $sgpr2_sgpr3214 ; GCN-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sgpr_128 = REG_SEQUENCE [[COPY]], %subreg.sub0_sub1, [[COPY1]], %subreg.sub2_sub3215 ; GCN-NEXT: $sgpr0_sgpr1_sgpr2_sgpr3 = COPY [[REG_SEQUENCE]]216 %0:sgpr(s64) = COPY $sgpr0_sgpr1217 %1:sgpr(s64) = COPY $sgpr2_sgpr3218 %4:sgpr(s128) = G_MERGE_VALUES %0, %1219 $sgpr0_sgpr1_sgpr2_sgpr3 = COPY %4220...221 222---223name: test_merge_values_v_s128_v_s64_v_s64224legalized: true225regBankSelected: true226tracksRegLiveness: true227 228body: |229 bb.0:230 liveins: $vgpr0_vgpr1, $vgpr2_vgpr3231 232 ; GCN-LABEL: name: test_merge_values_v_s128_v_s64_v_s64233 ; GCN: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3234 ; GCN-NEXT: {{ $}}235 ; GCN-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1236 ; GCN-NEXT: [[COPY1:%[0-9]+]]:vreg_64 = COPY $vgpr2_vgpr3237 ; GCN-NEXT: [[REG_SEQUENCE:%[0-9]+]]:vreg_128 = REG_SEQUENCE [[COPY]], %subreg.sub0_sub1, [[COPY1]], %subreg.sub2_sub3238 ; GCN-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[REG_SEQUENCE]]239 %0:vgpr(s64) = COPY $vgpr0_vgpr1240 %1:vgpr(s64) = COPY $vgpr2_vgpr3241 %2:vgpr(s128) = G_MERGE_VALUES %0, %1242 $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %2243...244 245---246name: test_merge_values_s_s160_s_s32_s_s32_s_s32_s_s32_s_s32247legalized: true248regBankSelected: true249tracksRegLiveness: true250 251body: |252 bb.0:253 liveins: $sgpr0, $sgpr1, $sgpr2, $sgpr3, $sgpr4254 255 ; GCN-LABEL: name: test_merge_values_s_s160_s_s32_s_s32_s_s32_s_s32_s_s32256 ; GCN: liveins: $sgpr0, $sgpr1, $sgpr2, $sgpr3, $sgpr4257 ; GCN-NEXT: {{ $}}258 ; GCN-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0259 ; GCN-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr1260 ; GCN-NEXT: [[COPY2:%[0-9]+]]:sreg_32 = COPY $sgpr2261 ; GCN-NEXT: [[COPY3:%[0-9]+]]:sreg_32 = COPY $sgpr3262 ; GCN-NEXT: [[COPY4:%[0-9]+]]:sreg_32 = COPY $sgpr4263 ; GCN-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sgpr_160 = REG_SEQUENCE [[COPY]], %subreg.sub0, [[COPY1]], %subreg.sub1, [[COPY2]], %subreg.sub2, [[COPY3]], %subreg.sub3, [[COPY4]], %subreg.sub4264 ; GCN-NEXT: $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4 = COPY [[REG_SEQUENCE]]265 %0:sgpr(s32) = COPY $sgpr0266 %1:sgpr(s32) = COPY $sgpr1267 %2:sgpr(s32) = COPY $sgpr2268 %3:sgpr(s32) = COPY $sgpr3269 %4:sgpr(s32) = COPY $sgpr4270 %5:sgpr(s160) = G_MERGE_VALUES %0, %1, %2, %3, %4271 $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4 = COPY %5272...273 274---275name: test_merge_values_v_s160_v_s32_v_s32_v_s32_v_s32_v_s32276legalized: true277regBankSelected: true278tracksRegLiveness: true279 280body: |281 bb.0:282 liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4283 284 ; GCN-LABEL: name: test_merge_values_v_s160_v_s32_v_s32_v_s32_v_s32_v_s32285 ; GCN: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4286 ; GCN-NEXT: {{ $}}287 ; GCN-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0288 ; GCN-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1289 ; GCN-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr2290 ; GCN-NEXT: [[COPY3:%[0-9]+]]:vgpr_32 = COPY $vgpr3291 ; GCN-NEXT: [[COPY4:%[0-9]+]]:vgpr_32 = COPY $vgpr4292 ; GCN-NEXT: [[REG_SEQUENCE:%[0-9]+]]:vreg_160 = REG_SEQUENCE [[COPY]], %subreg.sub0, [[COPY1]], %subreg.sub1, [[COPY2]], %subreg.sub2, [[COPY3]], %subreg.sub3, [[COPY4]], %subreg.sub4293 ; GCN-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4 = COPY [[REG_SEQUENCE]]294 %0:vgpr(s32) = COPY $vgpr0295 %1:vgpr(s32) = COPY $vgpr1296 %2:vgpr(s32) = COPY $vgpr2297 %3:vgpr(s32) = COPY $vgpr3298 %4:vgpr(s32) = COPY $vgpr4299 %5:vgpr(s160) = G_MERGE_VALUES %0, %1, %2, %3, %4300 $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4 = COPY %5301...302 303---304name: test_merge_values_s_s192_s_s64_s_s64_s_s64305legalized: true306regBankSelected: true307tracksRegLiveness: true308 309body: |310 bb.0:311 liveins: $sgpr0_sgpr1, $sgpr2_sgpr3, $sgpr4_sgpr5312 313 ; GCN-LABEL: name: test_merge_values_s_s192_s_s64_s_s64_s_s64314 ; GCN: liveins: $sgpr0_sgpr1, $sgpr2_sgpr3, $sgpr4_sgpr5315 ; GCN-NEXT: {{ $}}316 ; GCN-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1317 ; GCN-NEXT: [[COPY1:%[0-9]+]]:sreg_64 = COPY $sgpr2_sgpr3318 ; GCN-NEXT: [[COPY2:%[0-9]+]]:sreg_64 = COPY $sgpr4_sgpr5319 ; GCN-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sgpr_192 = REG_SEQUENCE [[COPY]], %subreg.sub0_sub1, [[COPY1]], %subreg.sub2_sub3, [[COPY2]], %subreg.sub4_sub5320 ; GCN-NEXT: S_ENDPGM 0, implicit [[REG_SEQUENCE]]321 %0:sgpr(s64) = COPY $sgpr0_sgpr1322 %1:sgpr(s64) = COPY $sgpr2_sgpr3323 %2:sgpr(s64) = COPY $sgpr4_sgpr5324 %3:sgpr(s192) = G_MERGE_VALUES %0, %1, %2325 S_ENDPGM 0, implicit %3326...327 328---329name: test_merge_values_v_s192_v_s64_v_s64_v_s64330legalized: true331regBankSelected: true332tracksRegLiveness: true333 334body: |335 bb.0:336 liveins: $vgpr0_vgpr1, $vgpr2_vgpr3, $vgpr4_vgpr5337 338 ; GCN-LABEL: name: test_merge_values_v_s192_v_s64_v_s64_v_s64339 ; GCN: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3, $vgpr4_vgpr5340 ; GCN-NEXT: {{ $}}341 ; GCN-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1342 ; GCN-NEXT: [[COPY1:%[0-9]+]]:vreg_64 = COPY $vgpr2_vgpr3343 ; GCN-NEXT: [[COPY2:%[0-9]+]]:vreg_64 = COPY $vgpr4_vgpr5344 ; GCN-NEXT: [[REG_SEQUENCE:%[0-9]+]]:vreg_192 = REG_SEQUENCE [[COPY]], %subreg.sub0_sub1, [[COPY1]], %subreg.sub2_sub3, [[COPY2]], %subreg.sub4_sub5345 ; GCN-NEXT: S_ENDPGM 0, implicit [[REG_SEQUENCE]]346 %0:vgpr(s64) = COPY $vgpr0_vgpr1347 %1:vgpr(s64) = COPY $vgpr2_vgpr3348 %2:vgpr(s64) = COPY $vgpr4_vgpr5349 %3:vgpr(s192) = G_MERGE_VALUES %0, %1, %2350 S_ENDPGM 0, implicit %3351...352 353---354name: test_merge_values_s_s256_s_s64_s_s64_s_s64_s_s64355legalized: true356regBankSelected: true357tracksRegLiveness: true358 359body: |360 bb.0:361 liveins: $sgpr0_sgpr1, $sgpr2_sgpr3, $sgpr4_sgpr5, $sgpr6_sgpr7362 363 ; GCN-LABEL: name: test_merge_values_s_s256_s_s64_s_s64_s_s64_s_s64364 ; GCN: liveins: $sgpr0_sgpr1, $sgpr2_sgpr3, $sgpr4_sgpr5, $sgpr6_sgpr7365 ; GCN-NEXT: {{ $}}366 ; GCN-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1367 ; GCN-NEXT: [[COPY1:%[0-9]+]]:sreg_64 = COPY $sgpr2_sgpr3368 ; GCN-NEXT: [[COPY2:%[0-9]+]]:sreg_64 = COPY $sgpr4_sgpr5369 ; GCN-NEXT: [[COPY3:%[0-9]+]]:sreg_64 = COPY $sgpr6_sgpr7370 ; GCN-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sgpr_256 = REG_SEQUENCE [[COPY]], %subreg.sub0_sub1, [[COPY1]], %subreg.sub2_sub3, [[COPY2]], %subreg.sub4_sub5, [[COPY3]], %subreg.sub6_sub7371 ; GCN-NEXT: $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7 = COPY [[REG_SEQUENCE]]372 %0:sgpr(s64) = COPY $sgpr0_sgpr1373 %1:sgpr(s64) = COPY $sgpr2_sgpr3374 %2:sgpr(s64) = COPY $sgpr4_sgpr5375 %3:sgpr(s64) = COPY $sgpr6_sgpr7376 %4:sgpr(s256) = G_MERGE_VALUES %0, %1, %2, %3377 $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7 = COPY %4378...379 380---381name: test_merge_values_s_s256_s_s128_s_s128382legalized: true383regBankSelected: true384tracksRegLiveness: true385 386body: |387 bb.0:388 liveins: $sgpr0_sgpr1_sgpr2_sgpr3, $sgpr4_sgpr5_sgpr6_sgpr7389 390 ; GCN-LABEL: name: test_merge_values_s_s256_s_s128_s_s128391 ; GCN: liveins: $sgpr0_sgpr1_sgpr2_sgpr3, $sgpr4_sgpr5_sgpr6_sgpr7392 ; GCN-NEXT: {{ $}}393 ; GCN-NEXT: [[COPY:%[0-9]+]]:sgpr_128 = COPY $sgpr0_sgpr1_sgpr2_sgpr3394 ; GCN-NEXT: [[COPY1:%[0-9]+]]:sgpr_128 = COPY $sgpr4_sgpr5_sgpr6_sgpr7395 ; GCN-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sgpr_256 = REG_SEQUENCE [[COPY]], %subreg.sub0_sub1_sub2_sub3, [[COPY1]], %subreg.sub4_sub5_sub6_sub7396 ; GCN-NEXT: $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7 = COPY [[REG_SEQUENCE]]397 %0:sgpr(s128) = COPY $sgpr0_sgpr1_sgpr2_sgpr3398 %1:sgpr(s128) = COPY $sgpr4_sgpr5_sgpr6_sgpr7399 %2:sgpr(s256) = G_MERGE_VALUES %0, %1400 $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7 = COPY %2401...402 403---404name: test_merge_values_s_s512_s_s256_s_s256405legalized: true406regBankSelected: true407tracksRegLiveness: true408 409body: |410 bb.0:411 liveins: $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7, $sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15412 413 ; GCN-LABEL: name: test_merge_values_s_s512_s_s256_s_s256414 ; GCN: liveins: $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7, $sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15415 ; GCN-NEXT: {{ $}}416 ; GCN-NEXT: [[COPY:%[0-9]+]]:sgpr_256 = COPY $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7417 ; GCN-NEXT: [[COPY1:%[0-9]+]]:sgpr_256 = COPY $sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15418 ; GCN-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sgpr_512 = REG_SEQUENCE [[COPY]], %subreg.sub0_sub1_sub2_sub3_sub4_sub5_sub6_sub7, [[COPY1]], %subreg.sub8_sub9_sub10_sub11_sub12_sub13_sub14_sub15419 ; GCN-NEXT: $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15 = COPY [[REG_SEQUENCE]]420 %0:sgpr(s256) = COPY $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7,421 %1:sgpr(s256) = COPY $sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15422 %4:sgpr(s512) = G_MERGE_VALUES %0, %1423 $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15 = COPY %4424...425 426---427name: test_merge_values_s_s512_s_s64_s_s64_s_s64_s_s64_s_s64_s_s64_s_s64_s_s64428legalized: true429regBankSelected: true430tracksRegLiveness: true431 432body: |433 bb.0:434 liveins: $sgpr0_sgpr1, $sgpr2_sgpr3, $sgpr4_sgpr5, $sgpr6_sgpr7, $sgpr8_sgpr9, $sgpr10_sgpr11, $sgpr12_sgpr13, $sgpr14_sgpr15435 436 ; GCN-LABEL: name: test_merge_values_s_s512_s_s64_s_s64_s_s64_s_s64_s_s64_s_s64_s_s64_s_s64437 ; GCN: liveins: $sgpr0_sgpr1, $sgpr2_sgpr3, $sgpr4_sgpr5, $sgpr6_sgpr7, $sgpr8_sgpr9, $sgpr10_sgpr11, $sgpr12_sgpr13, $sgpr14_sgpr15438 ; GCN-NEXT: {{ $}}439 ; GCN-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1440 ; GCN-NEXT: [[COPY1:%[0-9]+]]:sreg_64 = COPY $sgpr2_sgpr3441 ; GCN-NEXT: [[COPY2:%[0-9]+]]:sreg_64 = COPY $sgpr4_sgpr5442 ; GCN-NEXT: [[COPY3:%[0-9]+]]:sreg_64 = COPY $sgpr6_sgpr7443 ; GCN-NEXT: [[COPY4:%[0-9]+]]:sreg_64 = COPY $sgpr8_sgpr9444 ; GCN-NEXT: [[COPY5:%[0-9]+]]:sreg_64 = COPY $sgpr10_sgpr11445 ; GCN-NEXT: [[COPY6:%[0-9]+]]:sreg_64 = COPY $sgpr12_sgpr13446 ; GCN-NEXT: [[COPY7:%[0-9]+]]:sreg_64 = COPY $sgpr14_sgpr15447 ; GCN-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sgpr_512 = REG_SEQUENCE [[COPY]], %subreg.sub0_sub1, [[COPY1]], %subreg.sub2_sub3, [[COPY2]], %subreg.sub4_sub5, [[COPY3]], %subreg.sub6_sub7, [[COPY4]], %subreg.sub8_sub9, [[COPY5]], %subreg.sub10_sub11, [[COPY6]], %subreg.sub12_sub13, [[COPY7]], %subreg.sub14_sub15448 ; GCN-NEXT: $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15 = COPY [[REG_SEQUENCE]]449 %0:sgpr(s64) = COPY $sgpr0_sgpr1450 %1:sgpr(s64) = COPY $sgpr2_sgpr3451 %2:sgpr(s64) = COPY $sgpr4_sgpr5452 %3:sgpr(s64) = COPY $sgpr6_sgpr7453 %4:sgpr(s64) = COPY $sgpr8_sgpr9454 %5:sgpr(s64) = COPY $sgpr10_sgpr11455 %6:sgpr(s64) = COPY $sgpr12_sgpr13456 %7:sgpr(s64) = COPY $sgpr14_sgpr15457 %8:sgpr(s512) = G_MERGE_VALUES %0, %1, %2, %3, %4, %5, %6, %7458 $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15 = COPY %8459...460 461---462name: test_merge_values_v_v512_v_s64_v_s64_v_s64_v_s64_v_s64_v_s64_v_s64_v_s64463legalized: true464regBankSelected: true465tracksRegLiveness: true466 467body: |468 bb.0:469 liveins: $vgpr0_vgpr1, $vgpr2_vgpr3, $vgpr4_vgpr5, $vgpr6_vgpr7, $vgpr8_vgpr9, $vgpr10_vgpr11, $vgpr12_vgpr13, $vgpr14_vgpr15470 471 ; GCN-LABEL: name: test_merge_values_v_v512_v_s64_v_s64_v_s64_v_s64_v_s64_v_s64_v_s64_v_s64472 ; GCN: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3, $vgpr4_vgpr5, $vgpr6_vgpr7, $vgpr8_vgpr9, $vgpr10_vgpr11, $vgpr12_vgpr13, $vgpr14_vgpr15473 ; GCN-NEXT: {{ $}}474 ; GCN-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1475 ; GCN-NEXT: [[COPY1:%[0-9]+]]:vreg_64 = COPY $vgpr2_vgpr3476 ; GCN-NEXT: [[COPY2:%[0-9]+]]:vreg_64 = COPY $vgpr4_vgpr5477 ; GCN-NEXT: [[COPY3:%[0-9]+]]:vreg_64 = COPY $vgpr6_vgpr7478 ; GCN-NEXT: [[COPY4:%[0-9]+]]:vreg_64 = COPY $vgpr8_vgpr9479 ; GCN-NEXT: [[COPY5:%[0-9]+]]:vreg_64 = COPY $vgpr10_vgpr11480 ; GCN-NEXT: [[COPY6:%[0-9]+]]:vreg_64 = COPY $vgpr12_vgpr13481 ; GCN-NEXT: [[COPY7:%[0-9]+]]:vreg_64 = COPY $vgpr14_vgpr15482 ; GCN-NEXT: [[REG_SEQUENCE:%[0-9]+]]:vreg_512 = REG_SEQUENCE [[COPY]], %subreg.sub0_sub1, [[COPY1]], %subreg.sub2_sub3, [[COPY2]], %subreg.sub4_sub5, [[COPY3]], %subreg.sub6_sub7, [[COPY4]], %subreg.sub8_sub9, [[COPY5]], %subreg.sub10_sub11, [[COPY6]], %subreg.sub12_sub13, [[COPY7]], %subreg.sub14_sub15483 ; GCN-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15 = COPY [[REG_SEQUENCE]]484 %0:vgpr(s64) = COPY $vgpr0_vgpr1485 %1:vgpr(s64) = COPY $vgpr2_vgpr3486 %2:vgpr(s64) = COPY $vgpr4_vgpr5487 %3:vgpr(s64) = COPY $vgpr6_vgpr7488 %4:vgpr(s64) = COPY $vgpr8_vgpr9489 %5:vgpr(s64) = COPY $vgpr10_vgpr11490 %6:vgpr(s64) = COPY $vgpr12_vgpr13491 %7:vgpr(s64) = COPY $vgpr14_vgpr15492 %8:vgpr(s512) = G_MERGE_VALUES %0, %1, %2, %3, %4, %5, %6, %7493 $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15 = COPY %8494...495 496---497name: test_merge_values_rc_already_set_src_v_s64_v_s32_v_s32498legalized: true499regBankSelected: true500tracksRegLiveness: true501 502body: |503 bb.0:504 liveins: $vgpr0, $vgpr1505 506 ; GCN-LABEL: name: test_merge_values_rc_already_set_src_v_s64_v_s32_v_s32507 ; GCN: liveins: $vgpr0, $vgpr1508 ; GCN-NEXT: {{ $}}509 ; GCN-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0510 ; GCN-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1511 ; GCN-NEXT: [[REG_SEQUENCE:%[0-9]+]]:vreg_64 = REG_SEQUENCE [[COPY]], %subreg.sub0, [[COPY1]], %subreg.sub1512 ; GCN-NEXT: S_ENDPGM 0, implicit [[REG_SEQUENCE]]513 %0:vgpr_32(s32) = COPY $vgpr0514 %1:vgpr_32(s32) = COPY $vgpr1515 %2:vgpr(s64) = G_MERGE_VALUES %0, %1516 S_ENDPGM 0, implicit %2517...518 519---520name: test_merge_values_rc_already_set_dst_v_s64_v_s32_v_s32521legalized: true522regBankSelected: true523tracksRegLiveness: true524 525body: |526 bb.0:527 liveins: $vgpr0, $vgpr1528 529 ; GCN-LABEL: name: test_merge_values_rc_already_set_dst_v_s64_v_s32_v_s32530 ; GCN: liveins: $vgpr0, $vgpr1531 ; GCN-NEXT: {{ $}}532 ; GCN-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0533 ; GCN-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1534 ; GCN-NEXT: [[REG_SEQUENCE:%[0-9]+]]:vreg_64 = REG_SEQUENCE [[COPY]], %subreg.sub0, [[COPY1]], %subreg.sub1535 ; GCN-NEXT: S_ENDPGM 0, implicit [[REG_SEQUENCE]]536 %0:vgpr(s32) = COPY $vgpr0537 %1:vgpr(s32) = COPY $vgpr1538 %2:vreg_64(s64) = G_MERGE_VALUES %0, %1539 S_ENDPGM 0, implicit %2540...541 542---543name: test_merge_values_s_s1024_s_s256_s_s256_s_s256_s_s256544legalized: true545regBankSelected: true546tracksRegLiveness: true547 548body: |549 bb.0:550 liveins: $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7, $sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15551 552 ; GCN-LABEL: name: test_merge_values_s_s1024_s_s256_s_s256_s_s256_s_s256553 ; GCN: liveins: $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7, $sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15554 ; GCN-NEXT: {{ $}}555 ; GCN-NEXT: [[COPY:%[0-9]+]]:sgpr_256 = COPY $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7556 ; GCN-NEXT: [[DEF:%[0-9]+]]:sgpr_256 = IMPLICIT_DEF557 ; GCN-NEXT: [[COPY1:%[0-9]+]]:sgpr_256 = COPY $sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15558 ; GCN-NEXT: [[DEF1:%[0-9]+]]:sgpr_256 = IMPLICIT_DEF559 ; GCN-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sgpr_1024 = REG_SEQUENCE [[COPY]], %subreg.sub0_sub1_sub2_sub3_sub4_sub5_sub6_sub7, [[DEF]], %subreg.sub8_sub9_sub10_sub11_sub12_sub13_sub14_sub15, [[COPY1]], %subreg.sub16_sub17_sub18_sub19_sub20_sub21_sub22_sub23, [[DEF1]], %subreg.sub24_sub25_sub26_sub27_sub28_sub29_sub30_sub31560 ; GCN-NEXT: S_ENDPGM 0, implicit [[REG_SEQUENCE]]561 %0:sgpr(s256) = COPY $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7,562 %1:sgpr(s256) = G_IMPLICIT_DEF563 %2:sgpr(s256) = COPY $sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15564 %3:sgpr(s256) = G_IMPLICIT_DEF565 %4:sgpr(s1024) = G_MERGE_VALUES %0, %1, %2, %3566 S_ENDPGM 0, implicit %4567...568 569---570 571name: test_merge_values_s_s1024_s_s512572legalized: true573regBankSelected: true574tracksRegLiveness: true575 576body: |577 bb.0:578 liveins: $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15, $sgpr16_sgpr17_sgpr18_sgpr19_sgpr20_sgpr21_sgpr22_sgpr23_sgpr24_sgpr25_sgpr26_sgpr27_sgpr28_sgpr29_sgpr30_sgpr31579 580 ; GCN-LABEL: name: test_merge_values_s_s1024_s_s512581 ; GCN: liveins: $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15, $sgpr16_sgpr17_sgpr18_sgpr19_sgpr20_sgpr21_sgpr22_sgpr23_sgpr24_sgpr25_sgpr26_sgpr27_sgpr28_sgpr29_sgpr30_sgpr31582 ; GCN-NEXT: {{ $}}583 ; GCN-NEXT: [[COPY:%[0-9]+]]:sgpr_512 = COPY $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15584 ; GCN-NEXT: [[COPY1:%[0-9]+]]:sgpr_512 = COPY $sgpr16_sgpr17_sgpr18_sgpr19_sgpr20_sgpr21_sgpr22_sgpr23_sgpr24_sgpr25_sgpr26_sgpr27_sgpr28_sgpr29_sgpr30_sgpr31585 ; GCN-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sgpr_1024 = REG_SEQUENCE [[COPY]], %subreg.sub0_sub1_sub2_sub3_sub4_sub5_sub6_sub7_sub8_sub9_sub10_sub11_sub12_sub13_sub14_sub15, [[COPY1]], %subreg.sub16_sub17_sub18_sub19_sub20_sub21_sub22_sub23_sub24_sub25_sub26_sub27_sub28_sub29_sub30_sub31586 ; GCN-NEXT: $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15_sgpr16_sgpr17_sgpr18_sgpr19_sgpr20_sgpr21_sgpr22_sgpr23_sgpr24_sgpr25_sgpr26_sgpr27_sgpr28_sgpr29_sgpr30_sgpr31 = COPY [[REG_SEQUENCE]]587 %0:sgpr(s512) = COPY $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15588 %1:sgpr(s512) = COPY $sgpr16_sgpr17_sgpr18_sgpr19_sgpr20_sgpr21_sgpr22_sgpr23_sgpr24_sgpr25_sgpr26_sgpr27_sgpr28_sgpr29_sgpr30_sgpr31589 %2:sgpr(s1024) = G_MERGE_VALUES %0, %1590 $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15_sgpr16_sgpr17_sgpr18_sgpr19_sgpr20_sgpr21_sgpr22_sgpr23_sgpr24_sgpr25_sgpr26_sgpr27_sgpr28_sgpr29_sgpr30_sgpr31 = COPY %2591 592...593