1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py 2# RUN: llc -mtriple=amdgcn-mesa-mesa3d -mcpu=tahiti -run-pass=instruction-select -global-isel-abort=2 -pass-remarks-missed='gisel*' -o - %s | FileCheck -check-prefix=GCN %s 3 4--- 5name: test_unmerge_values_v_s32_v_s32_v_s64 6legalized: true 7regBankSelected: true 8tracksRegLiveness: true 9 10body: | 11 bb.0: 12 liveins: $vgpr0_vgpr1 13 14 ; GCN-LABEL: name: test_unmerge_values_v_s32_v_s32_v_s64 15 ; GCN: liveins: $vgpr0_vgpr1 16 ; GCN-NEXT: {{ $}} 17 ; GCN-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1 18 ; GCN-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY [[COPY]].sub0 19 ; GCN-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY [[COPY]].sub1 20 ; GCN-NEXT: S_ENDPGM 0, implicit [[COPY1]], implicit [[COPY2]] 21 %0:vgpr(s64) = COPY $vgpr0_vgpr1 22 %1:vgpr(s32), %2:vgpr(s32) = G_UNMERGE_VALUES %0 23 S_ENDPGM 0, implicit %1, implicit %2 24... 25 26--- 27name: test_unmerge_values_s_s32_s_s32_s_s64 28legalized: true 29regBankSelected: true 30tracksRegLiveness: true 31 32body: | 33 bb.0: 34 liveins: $sgpr0_sgpr1 35 36 ; GCN-LABEL: name: test_unmerge_values_s_s32_s_s32_s_s64 37 ; GCN: liveins: $sgpr0_sgpr1 38 ; GCN-NEXT: {{ $}} 39 ; GCN-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1 40 ; GCN-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY [[COPY]].sub0 41 ; GCN-NEXT: [[COPY2:%[0-9]+]]:sreg_32 = COPY [[COPY]].sub1 42 ; GCN-NEXT: S_ENDPGM 0, implicit [[COPY1]], implicit [[COPY2]] 43 %0:sgpr(s64) = COPY $sgpr0_sgpr1 44 %1:sgpr(s32), %2:sgpr(s32) = G_UNMERGE_VALUES %0 45 S_ENDPGM 0, implicit %1, implicit %2 46... 47 48--- 49name: test_unmerge_values_v_s32_s_s32_s_s64 50legalized: true 51regBankSelected: true 52tracksRegLiveness: true 53 54body: | 55 bb.0: 56 liveins: $sgpr0_sgpr1 57 58 ; GCN-LABEL: name: test_unmerge_values_v_s32_s_s32_s_s64 59 ; GCN: liveins: $sgpr0_sgpr1 60 ; GCN-NEXT: {{ $}} 61 ; GCN-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1 62 ; GCN-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY [[COPY]].sub0 63 ; GCN-NEXT: [[COPY2:%[0-9]+]]:sreg_32 = COPY [[COPY]].sub1 64 ; GCN-NEXT: S_ENDPGM 0, implicit [[COPY1]], implicit [[COPY2]] 65 %0:sgpr(s64) = COPY $sgpr0_sgpr1 66 %1:vgpr(s32), %2:sgpr(s32) = G_UNMERGE_VALUES %0 67 S_ENDPGM 0, implicit %1, implicit %2 68... 69 70--- 71name: test_unmerge_values_s_s32_v_s32_s_s64 72legalized: true 73regBankSelected: true 74tracksRegLiveness: true 75 76body: | 77 bb.0: 78 liveins: $sgpr0_sgpr1 79 80 ; GCN-LABEL: name: test_unmerge_values_s_s32_v_s32_s_s64 81 ; GCN: liveins: $sgpr0_sgpr1 82 ; GCN-NEXT: {{ $}} 83 ; GCN-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1 84 ; GCN-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY [[COPY]].sub0 85 ; GCN-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY [[COPY]].sub1 86 ; GCN-NEXT: S_ENDPGM 0, implicit [[COPY1]], implicit [[COPY2]] 87 %0:sgpr(s64) = COPY $sgpr0_sgpr1 88 %1:sgpr(s32), %2:vgpr(s32) = G_UNMERGE_VALUES %0 89 S_ENDPGM 0, implicit %1, implicit %2 90... 91 92--- 93name: test_unmerge_values_s_s32_s_s32_s32_s_s96 94legalized: true 95regBankSelected: true 96tracksRegLiveness: true 97 98body: | 99 bb.0: 100 liveins: $sgpr0_sgpr1_sgpr2 101 102 ; GCN-LABEL: name: test_unmerge_values_s_s32_s_s32_s32_s_s96 103 ; GCN: liveins: $sgpr0_sgpr1_sgpr2 104 ; GCN-NEXT: {{ $}} 105 ; GCN-NEXT: [[COPY:%[0-9]+]]:sgpr_96 = COPY $sgpr0_sgpr1_sgpr2 106 ; GCN-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY [[COPY]].sub0 107 ; GCN-NEXT: [[COPY2:%[0-9]+]]:sreg_32 = COPY [[COPY]].sub1 108 ; GCN-NEXT: [[COPY3:%[0-9]+]]:sreg_32 = COPY [[COPY]].sub2 109 ; GCN-NEXT: S_ENDPGM 0, implicit [[COPY1]], implicit [[COPY2]], implicit [[COPY3]] 110 %0:sgpr(s96) = COPY $sgpr0_sgpr1_sgpr2 111 %1:sgpr(s32), %2:sgpr(s32), %3:sgpr(s32) = G_UNMERGE_VALUES %0 112 S_ENDPGM 0, implicit %1, implicit %2, implicit %3 113... 114 115--- 116name: test_unmerge_values_s_s32_s_s32_s32_s_s32_s_s128 117legalized: true 118regBankSelected: true 119tracksRegLiveness: true 120 121body: | 122 bb.0: 123 liveins: $sgpr0_sgpr1_sgpr2_sgpr3 124 125 ; GCN-LABEL: name: test_unmerge_values_s_s32_s_s32_s32_s_s32_s_s128 126 ; GCN: liveins: $sgpr0_sgpr1_sgpr2_sgpr3 127 ; GCN-NEXT: {{ $}} 128 ; GCN-NEXT: [[COPY:%[0-9]+]]:sgpr_128 = COPY $sgpr0_sgpr1_sgpr2_sgpr3 129 ; GCN-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY [[COPY]].sub0 130 ; GCN-NEXT: [[COPY2:%[0-9]+]]:sreg_32 = COPY [[COPY]].sub1 131 ; GCN-NEXT: [[COPY3:%[0-9]+]]:sreg_32 = COPY [[COPY]].sub2 132 ; GCN-NEXT: [[COPY4:%[0-9]+]]:sreg_32 = COPY [[COPY]].sub3 133 ; GCN-NEXT: S_ENDPGM 0, implicit [[COPY1]], implicit [[COPY2]], implicit [[COPY3]], implicit [[COPY4]] 134 %0:sgpr(s128) = COPY $sgpr0_sgpr1_sgpr2_sgpr3 135 %1:sgpr(s32), %2:sgpr(s32), %3:sgpr(s32), %4:sgpr(s32) = G_UNMERGE_VALUES %0 136 S_ENDPGM 0, implicit %1, implicit %2, implicit %3, implicit %4 137... 138 139--- 140name: test_unmerge_values_s_s64_s_s64_s_s128 141legalized: true 142regBankSelected: true 143tracksRegLiveness: true 144 145body: | 146 bb.0: 147 liveins: $sgpr0_sgpr1_sgpr2_sgpr3 148 149 ; GCN-LABEL: name: test_unmerge_values_s_s64_s_s64_s_s128 150 ; GCN: liveins: $sgpr0_sgpr1_sgpr2_sgpr3 151 ; GCN-NEXT: {{ $}} 152 ; GCN-NEXT: [[COPY:%[0-9]+]]:sgpr_128 = COPY $sgpr0_sgpr1_sgpr2_sgpr3 153 ; GCN-NEXT: [[COPY1:%[0-9]+]]:sreg_64 = COPY [[COPY]].sub0_sub1 154 ; GCN-NEXT: [[COPY2:%[0-9]+]]:sreg_64 = COPY [[COPY]].sub2_sub3 155 ; GCN-NEXT: S_ENDPGM 0, implicit [[COPY1]], implicit [[COPY2]] 156 %0:sgpr(s128) = COPY $sgpr0_sgpr1_sgpr2_sgpr3 157 %1:sgpr(s64), %2:sgpr(s64) = G_UNMERGE_VALUES %0 158 S_ENDPGM 0, implicit %1, implicit %2 159... 160 161--- 162name: test_unmerge_values_s_s64_s_s64_s64_s_s192 163legalized: true 164regBankSelected: true 165tracksRegLiveness: true 166 167body: | 168 bb.0: 169 liveins: $sgpr0_sgpr1_sgpr2_sgpr3 170 171 ; GCN-LABEL: name: test_unmerge_values_s_s64_s_s64_s64_s_s192 172 ; GCN: liveins: $sgpr0_sgpr1_sgpr2_sgpr3 173 ; GCN-NEXT: {{ $}} 174 ; GCN-NEXT: [[DEF:%[0-9]+]]:sgpr_192 = IMPLICIT_DEF 175 ; GCN-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY [[DEF]].sub0_sub1 176 ; GCN-NEXT: [[COPY1:%[0-9]+]]:sreg_64 = COPY [[DEF]].sub2_sub3 177 ; GCN-NEXT: [[COPY2:%[0-9]+]]:sreg_64 = COPY [[DEF]].sub4_sub5 178 ; GCN-NEXT: S_ENDPGM 0, implicit [[COPY]], implicit [[COPY1]], implicit [[COPY2]] 179 %0:sgpr(s192) = G_IMPLICIT_DEF 180 %1:sgpr(s64), %2:sgpr(s64), %3:sgpr(s64) = G_UNMERGE_VALUES %0 181 S_ENDPGM 0, implicit %1, implicit %2, implicit %3 182... 183 184--- 185name: test_unmerge_values_rc_set_def_v_s32_v_s32_v_s64 186legalized: true 187regBankSelected: true 188tracksRegLiveness: true 189 190body: | 191 bb.0: 192 liveins: $vgpr0_vgpr1 193 194 ; GCN-LABEL: name: test_unmerge_values_rc_set_def_v_s32_v_s32_v_s64 195 ; GCN: liveins: $vgpr0_vgpr1 196 ; GCN-NEXT: {{ $}} 197 ; GCN-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1 198 ; GCN-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY [[COPY]].sub0 199 ; GCN-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY [[COPY]].sub1 200 ; GCN-NEXT: S_ENDPGM 0, implicit [[COPY1]], implicit [[COPY2]] 201 %0:vgpr(s64) = COPY $vgpr0_vgpr1 202 %1:vgpr_32(s32), %2:vgpr_32(s32) = G_UNMERGE_VALUES %0 203 S_ENDPGM 0, implicit %1, implicit %2 204... 205 206--- 207name: test_unmerge_values_rc_set_use_v_s32_v_s32_v_s64 208legalized: true 209regBankSelected: true 210tracksRegLiveness: true 211 212body: | 213 bb.0: 214 liveins: $vgpr0_vgpr1 215 216 ; GCN-LABEL: name: test_unmerge_values_rc_set_use_v_s32_v_s32_v_s64 217 ; GCN: liveins: $vgpr0_vgpr1 218 ; GCN-NEXT: {{ $}} 219 ; GCN-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1 220 ; GCN-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY [[COPY]].sub0 221 ; GCN-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY [[COPY]].sub1 222 ; GCN-NEXT: S_ENDPGM 0, implicit [[COPY1]], implicit [[COPY2]] 223 %0:vreg_64(s64) = COPY $vgpr0_vgpr1 224 %1:vgpr(s32), %2:vgpr(s32) = G_UNMERGE_VALUES %0 225 S_ENDPGM 0, implicit %1, implicit %2 226... 227 228--- 229name: test_unmerge_values_s_s256_s_s1024 230legalized: true 231regBankSelected: true 232tracksRegLiveness: true 233 234body: | 235 bb.0: 236 liveins: $sgpr0_sgpr1_sgpr2_sgpr3 237 238 ; GCN-LABEL: name: test_unmerge_values_s_s256_s_s1024 239 ; GCN: liveins: $sgpr0_sgpr1_sgpr2_sgpr3 240 ; GCN-NEXT: {{ $}} 241 ; GCN-NEXT: [[DEF:%[0-9]+]]:sgpr_1024 = IMPLICIT_DEF 242 ; GCN-NEXT: [[COPY:%[0-9]+]]:sgpr_256 = COPY [[DEF]].sub0_sub1_sub2_sub3_sub4_sub5_sub6_sub7 243 ; GCN-NEXT: [[COPY1:%[0-9]+]]:sgpr_256 = COPY [[DEF]].sub8_sub9_sub10_sub11_sub12_sub13_sub14_sub15 244 ; GCN-NEXT: [[COPY2:%[0-9]+]]:sgpr_256 = COPY [[DEF]].sub16_sub17_sub18_sub19_sub20_sub21_sub22_sub23 245 ; GCN-NEXT: [[COPY3:%[0-9]+]]:sgpr_256 = COPY [[DEF]].sub24_sub25_sub26_sub27_sub28_sub29_sub30_sub31 246 ; GCN-NEXT: S_ENDPGM 0, implicit [[COPY]], implicit [[COPY1]], implicit [[COPY2]], implicit [[COPY3]] 247 %0:sgpr(s1024) = G_IMPLICIT_DEF 248 %1:sgpr(s256), %2:sgpr(s256), %3:sgpr(s256), %4:sgpr(s256) = G_UNMERGE_VALUES %0 249 S_ENDPGM 0, implicit %1, implicit %2, implicit %3, implicit %4 250... 251 252--- 253 254name: test_unmerge_values_s_s512_s_s1024 255legalized: true 256regBankSelected: true 257tracksRegLiveness: true 258 259body: | 260 bb.0: 261 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_sgpr31 262 263 ; GCN-LABEL: name: test_unmerge_values_s_s512_s_s1024 264 ; 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_sgpr31 265 ; GCN-NEXT: {{ $}} 266 ; GCN-NEXT: [[COPY:%[0-9]+]]:sgpr_1024 = COPY $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 267 ; GCN-NEXT: [[COPY1:%[0-9]+]]:sgpr_512 = COPY [[COPY]].sub0_sub1_sub2_sub3_sub4_sub5_sub6_sub7_sub8_sub9_sub10_sub11_sub12_sub13_sub14_sub15 268 ; GCN-NEXT: [[COPY2:%[0-9]+]]:sgpr_512 = COPY [[COPY]].sub16_sub17_sub18_sub19_sub20_sub21_sub22_sub23_sub24_sub25_sub26_sub27_sub28_sub29_sub30_sub31 269 ; GCN-NEXT: $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15 = COPY [[COPY1]] 270 ; GCN-NEXT: $sgpr16_sgpr17_sgpr18_sgpr19_sgpr20_sgpr21_sgpr22_sgpr23_sgpr24_sgpr25_sgpr26_sgpr27_sgpr28_sgpr29_sgpr30_sgpr31 = COPY [[COPY2]] 271 %0:sgpr(s1024) = COPY $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 272 %1:sgpr(s512), %2:sgpr(s512) = G_UNMERGE_VALUES %0 273 $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15 = COPY %1 274 $sgpr16_sgpr17_sgpr18_sgpr19_sgpr20_sgpr21_sgpr22_sgpr23_sgpr24_sgpr25_sgpr26_sgpr27_sgpr28_sgpr29_sgpr30_sgpr31 = COPY %2 275... 276 277--- 278name: test_unmerge_s_v3s32_s_v12s32 279legalized: true 280regBankSelected: true 281tracksRegLiveness: true 282 283body: | 284 bb.0: 285 liveins: $sgpr0_sgpr1_sgpr2, $sgpr4_sgpr5_sgpr6, $sgpr8_sgpr9_sgpr10, $sgpr12_sgpr13_sgpr14 286 287 ; GCN-LABEL: name: test_unmerge_s_v3s32_s_v12s32 288 ; GCN: liveins: $sgpr0_sgpr1_sgpr2, $sgpr4_sgpr5_sgpr6, $sgpr8_sgpr9_sgpr10, $sgpr12_sgpr13_sgpr14 289 ; GCN-NEXT: {{ $}} 290 ; GCN-NEXT: [[COPY:%[0-9]+]]:sgpr(<3 x s32>) = COPY $sgpr0_sgpr1_sgpr2 291 ; GCN-NEXT: [[COPY1:%[0-9]+]]:sgpr(<3 x s32>) = COPY $sgpr4_sgpr5_sgpr6 292 ; GCN-NEXT: [[COPY2:%[0-9]+]]:sgpr(<3 x s32>) = COPY $sgpr8_sgpr9_sgpr10 293 ; GCN-NEXT: [[COPY3:%[0-9]+]]:sgpr(<3 x s32>) = COPY $sgpr12_sgpr13_sgpr14 294 ; GCN-NEXT: [[CONCAT_VECTORS:%[0-9]+]]:sgpr_384(<12 x s32>) = G_CONCAT_VECTORS [[COPY]](<3 x s32>), [[COPY1]](<3 x s32>), [[COPY2]](<3 x s32>), [[COPY3]](<3 x s32>) 295 ; GCN-NEXT: [[COPY4:%[0-9]+]]:sgpr_96(<3 x s32>) = COPY [[CONCAT_VECTORS]].sub0_sub1_sub2(<12 x s32>) 296 ; GCN-NEXT: [[COPY5:%[0-9]+]]:sgpr_96(<3 x s32>) = COPY [[CONCAT_VECTORS]].sub3_sub4_sub5(<12 x s32>) 297 ; GCN-NEXT: [[UV:%[0-9]+]]:sgpr_96(<3 x s32>), [[UV1:%[0-9]+]]:sgpr_96(<3 x s32>), [[UV2:%[0-9]+]]:sgpr_96(<3 x s32>), [[UV3:%[0-9]+]]:sgpr_96(<3 x s32>) = G_UNMERGE_VALUES [[CONCAT_VECTORS]](<12 x s32>) 298 ; GCN-NEXT: $sgpr0_sgpr1_sgpr2 = COPY [[UV]](<3 x s32>) 299 ; GCN-NEXT: $sgpr4_sgpr5_sgpr6 = COPY [[UV1]](<3 x s32>) 300 ; GCN-NEXT: $sgpr8_sgpr9_sgpr10 = COPY [[UV2]](<3 x s32>) 301 ; GCN-NEXT: $sgpr12_sgpr13_sgpr14 = COPY [[UV3]](<3 x s32>) 302 %0:sgpr(<3 x s32>) = COPY $sgpr0_sgpr1_sgpr2 303 %1:sgpr(<3 x s32>) = COPY $sgpr4_sgpr5_sgpr6 304 %2:sgpr(<3 x s32>) = COPY $sgpr8_sgpr9_sgpr10 305 %3:sgpr(<3 x s32>) = COPY $sgpr12_sgpr13_sgpr14 306 %4:sgpr(<12 x s32>) = G_CONCAT_VECTORS %0, %1, %2, %3 307 %5:sgpr(<3 x s32>), %6:sgpr(<3 x s32>), %7:sgpr(<3 x s32>), %8:sgpr(<3 x s32>) = G_UNMERGE_VALUES %4 308 $sgpr0_sgpr1_sgpr2 = COPY %5 309 $sgpr4_sgpr5_sgpr6 = COPY %6 310 $sgpr8_sgpr9_sgpr10 = COPY %7 311 $sgpr12_sgpr13_sgpr14 = COPY %8 312 313... 314 315--- 316name: test_unmerge_v_v3s32_v_v12s32 317legalized: true 318regBankSelected: true 319tracksRegLiveness: true 320body: | 321 bb.0: 322 liveins: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5, $vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11 323 324 ; GCN-LABEL: name: test_unmerge_v_v3s32_v_v12s32 325 ; GCN: liveins: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5, $vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11 326 ; GCN-NEXT: {{ $}} 327 ; GCN-NEXT: [[COPY:%[0-9]+]]:vreg_192 = COPY $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5 328 ; GCN-NEXT: [[COPY1:%[0-9]+]]:vreg_192 = COPY $vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11 329 ; GCN-NEXT: [[REG_SEQUENCE:%[0-9]+]]:vreg_384 = REG_SEQUENCE [[COPY]], %subreg.sub0_sub1_sub2_sub3_sub4_sub5, [[COPY1]], %subreg.sub6_sub7_sub8_sub9_sub10_sub11 330 ; GCN-NEXT: [[COPY2:%[0-9]+]]:vreg_96 = COPY [[REG_SEQUENCE]].sub0_sub1_sub2 331 ; GCN-NEXT: [[COPY3:%[0-9]+]]:vreg_96 = COPY [[REG_SEQUENCE]].sub3_sub4_sub5 332 ; GCN-NEXT: [[COPY4:%[0-9]+]]:vreg_96 = COPY [[REG_SEQUENCE]].sub6_sub7_sub8 333 ; GCN-NEXT: [[COPY5:%[0-9]+]]:vreg_96 = COPY [[REG_SEQUENCE]].sub9_sub10_sub11 334 ; GCN-NEXT: $vgpr0_vgpr1_vgpr2 = COPY [[COPY2]] 335 ; GCN-NEXT: $vgpr3_vgpr4_vgpr5 = COPY [[COPY3]] 336 ; GCN-NEXT: $vgpr6_vgpr7_vgpr8 = COPY [[COPY4]] 337 ; GCN-NEXT: $vgpr9_vgpr10_vgpr11 = COPY [[COPY5]] 338 %0:vgpr(<6 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5 339 %1:vgpr(<6 x s32>) = COPY $vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11 340 %2:vgpr(<12 x s32>) = G_CONCAT_VECTORS %0, %1 341 %3:vgpr(<3 x s32>), %4:vgpr(<3 x s32>), %5:vgpr(<3 x s32>), %6:vgpr(<3 x s32>) = G_UNMERGE_VALUES %2 342 $vgpr0_vgpr1_vgpr2 = COPY %3 343 $vgpr3_vgpr4_vgpr5 = COPY %4 344 $vgpr6_vgpr7_vgpr8 = COPY %5 345 $vgpr9_vgpr10_vgpr11 = COPY %6 346 347... 348