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 5--- 6name: test_concat_vectors_v_v4s16_v_v2s16_v_v2s16 7legalized: true 8regBankSelected: true 9 10body: | 11 bb.0: 12 liveins: $vgpr0, $vgpr1 13 14 ; GCN-LABEL: name: test_concat_vectors_v_v4s16_v_v2s16_v_v2s16 15 ; GCN: liveins: $vgpr0, $vgpr1 16 ; GCN-NEXT: {{ $}} 17 ; GCN-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 18 ; GCN-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1 19 ; GCN-NEXT: [[REG_SEQUENCE:%[0-9]+]]:vreg_64 = REG_SEQUENCE [[COPY]], %subreg.sub0, [[COPY1]], %subreg.sub1 20 ; GCN-NEXT: $vgpr0_vgpr1 = COPY [[REG_SEQUENCE]] 21 %0:vgpr(<2 x s16>) = COPY $vgpr0 22 %1:vgpr(<2 x s16>) = COPY $vgpr1 23 %2:vgpr(<4 x s16>) = G_CONCAT_VECTORS %0, %1 24 $vgpr0_vgpr1 = COPY %2 25... 26 27--- 28name: test_concat_vectors_v_v4s16_s_v2s16_v_v2s16 29legalized: true 30regBankSelected: true 31 32body: | 33 bb.0: 34 liveins: $sgpr0, $vgpr0 35 36 ; GCN-LABEL: name: test_concat_vectors_v_v4s16_s_v2s16_v_v2s16 37 ; GCN: liveins: $sgpr0, $vgpr0 38 ; GCN-NEXT: {{ $}} 39 ; GCN-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0 40 ; GCN-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1 41 ; GCN-NEXT: [[REG_SEQUENCE:%[0-9]+]]:vreg_64 = REG_SEQUENCE [[COPY]], %subreg.sub0, [[COPY1]], %subreg.sub1 42 ; GCN-NEXT: $vgpr0_vgpr1 = COPY [[REG_SEQUENCE]] 43 %0:sgpr(<2 x s16>) = COPY $sgpr0 44 %1:vgpr(<2 x s16>) = COPY $vgpr1 45 %2:vgpr(<4 x s16>) = G_CONCAT_VECTORS %0, %1 46 $vgpr0_vgpr1 = COPY %2 47... 48 49--- 50name: test_concat_vectors_v_v4s16_v_v2s16_s_v2s16 51legalized: true 52regBankSelected: true 53 54body: | 55 bb.0: 56 liveins: $sgpr0, $vgpr0 57 58 ; GCN-LABEL: name: test_concat_vectors_v_v4s16_v_v2s16_s_v2s16 59 ; GCN: liveins: $sgpr0, $vgpr0 60 ; GCN-NEXT: {{ $}} 61 ; GCN-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 62 ; GCN-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr0 63 ; GCN-NEXT: [[REG_SEQUENCE:%[0-9]+]]:vreg_64 = REG_SEQUENCE [[COPY]], %subreg.sub0, [[COPY1]], %subreg.sub1 64 ; GCN-NEXT: $vgpr0_vgpr1 = COPY [[REG_SEQUENCE]] 65 %0:vgpr(<2 x s16>) = COPY $vgpr0 66 %1:sgpr(<2 x s16>) = COPY $sgpr0 67 %2:vgpr(<4 x s16>) = G_CONCAT_VECTORS %0, %1 68 $vgpr0_vgpr1 = COPY %2 69... 70 71--- 72name: test_concat_vectors_s_v4s16_s_v2s16_s_v2s16 73legalized: true 74regBankSelected: true 75 76body: | 77 bb.0: 78 liveins: $sgpr0, $sgpr1 79 80 ; GCN-LABEL: name: test_concat_vectors_s_v4s16_s_v2s16_s_v2s16 81 ; GCN: liveins: $sgpr0, $sgpr1 82 ; GCN-NEXT: {{ $}} 83 ; GCN-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0 84 ; GCN-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr1 85 ; GCN-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sreg_64 = REG_SEQUENCE [[COPY]], %subreg.sub0, [[COPY1]], %subreg.sub1 86 ; GCN-NEXT: $sgpr0_sgpr1 = COPY [[REG_SEQUENCE]] 87 %0:sgpr(<2 x s16>) = COPY $sgpr0 88 %1:sgpr(<2 x s16>) = COPY $sgpr1 89 %2:sgpr(<4 x s16>) = G_CONCAT_VECTORS %0, %1 90 $sgpr0_sgpr1 = COPY %2 91... 92 93--- 94name: test_concat_vectors_s_s96_s_v2s16_s_v2s16_s_v2s16 95legalized: true 96regBankSelected: true 97 98body: | 99 bb.0: 100 liveins: $sgpr0, $sgpr1, $sgpr2 101 102 ; GCN-LABEL: name: test_concat_vectors_s_s96_s_v2s16_s_v2s16_s_v2s16 103 ; GCN: liveins: $sgpr0, $sgpr1, $sgpr2 104 ; GCN-NEXT: {{ $}} 105 ; GCN-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0 106 ; GCN-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr1 107 ; GCN-NEXT: [[COPY2:%[0-9]+]]:sreg_32 = COPY $sgpr2 108 ; GCN-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sgpr_96 = REG_SEQUENCE [[COPY]], %subreg.sub0, [[COPY1]], %subreg.sub1, [[COPY2]], %subreg.sub2 109 ; GCN-NEXT: $sgpr0_sgpr1_sgpr2 = COPY [[REG_SEQUENCE]] 110 %0:sgpr(<2 x s16>) = COPY $sgpr0 111 %1:sgpr(<2 x s16>) = COPY $sgpr1 112 %2:sgpr(<2 x s16>) = COPY $sgpr2 113 %3:sgpr(<6 x s16>) = G_CONCAT_VECTORS %0, %1, %2 114 $sgpr0_sgpr1_sgpr2 = COPY %3 115... 116 117--- 118name: test_concat_vectors_v_s96_v_v2s16_v_v2s16_v_v2s16 119legalized: true 120regBankSelected: true 121 122body: | 123 bb.0: 124 liveins: $vgpr0, $vgpr1, $vgpr2 125 126 ; GCN-LABEL: name: test_concat_vectors_v_s96_v_v2s16_v_v2s16_v_v2s16 127 ; GCN: liveins: $vgpr0, $vgpr1, $vgpr2 128 ; GCN-NEXT: {{ $}} 129 ; GCN-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 130 ; GCN-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1 131 ; GCN-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr2 132 ; GCN-NEXT: [[REG_SEQUENCE:%[0-9]+]]:vreg_96 = REG_SEQUENCE [[COPY]], %subreg.sub0, [[COPY1]], %subreg.sub1, [[COPY2]], %subreg.sub2 133 ; GCN-NEXT: $vgpr0_vgpr1_vgpr2 = COPY [[REG_SEQUENCE]] 134 %0:vgpr(<2 x s16>) = COPY $vgpr0 135 %1:vgpr(<2 x s16>) = COPY $vgpr1 136 %2:vgpr(<2 x s16>) = COPY $vgpr2 137 %3:vgpr(<6 x s16>) = G_CONCAT_VECTORS %0, %1, %2 138 $vgpr0_vgpr1_vgpr2 = COPY %3 139... 140 141--- 142name: test_concat_vectors_s_v8s16_s_v2s16_s_v2s16_s_v2s16_s_v2s16 143legalized: true 144regBankSelected: true 145 146body: | 147 bb.0: 148 liveins: $sgpr0, $sgpr1, $sgpr2, $sgpr3 149 150 ; GCN-LABEL: name: test_concat_vectors_s_v8s16_s_v2s16_s_v2s16_s_v2s16_s_v2s16 151 ; GCN: liveins: $sgpr0, $sgpr1, $sgpr2, $sgpr3 152 ; GCN-NEXT: {{ $}} 153 ; GCN-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0 154 ; GCN-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr1 155 ; GCN-NEXT: [[COPY2:%[0-9]+]]:sreg_32 = COPY $sgpr2 156 ; GCN-NEXT: [[COPY3:%[0-9]+]]:sreg_32 = COPY $sgpr3 157 ; GCN-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sgpr_128 = REG_SEQUENCE [[COPY]], %subreg.sub0, [[COPY1]], %subreg.sub1, [[COPY2]], %subreg.sub2, [[COPY3]], %subreg.sub3 158 ; GCN-NEXT: $sgpr0_sgpr1_sgpr2_sgpr3 = COPY [[REG_SEQUENCE]] 159 %0:sgpr(<2 x s16>) = COPY $sgpr0 160 %1:sgpr(<2 x s16>) = COPY $sgpr1 161 %2:sgpr(<2 x s16>) = COPY $sgpr2 162 %3:sgpr(<2 x s16>) = COPY $sgpr3 163 %4:sgpr(<8 x s16>) = G_CONCAT_VECTORS %0, %1, %2, %3 164 $sgpr0_sgpr1_sgpr2_sgpr3 = COPY %4 165... 166 167--- 168name: test_concat_vectors_v_v8s16_v_v2s16_v_v2s16_v_v2s16 169legalized: true 170regBankSelected: true 171 172body: | 173 bb.0: 174 liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3 175 176 ; GCN-LABEL: name: test_concat_vectors_v_v8s16_v_v2s16_v_v2s16_v_v2s16 177 ; GCN: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3 178 ; GCN-NEXT: {{ $}} 179 ; GCN-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 180 ; GCN-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1 181 ; GCN-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr2 182 ; GCN-NEXT: [[COPY3:%[0-9]+]]:vgpr_32 = COPY $vgpr3 183 ; GCN-NEXT: [[REG_SEQUENCE:%[0-9]+]]:vreg_128 = REG_SEQUENCE [[COPY]], %subreg.sub0, [[COPY1]], %subreg.sub1, [[COPY2]], %subreg.sub2, [[COPY3]], %subreg.sub3 184 ; GCN-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[REG_SEQUENCE]] 185 %0:vgpr(<2 x s16>) = COPY $vgpr0 186 %1:vgpr(<2 x s16>) = COPY $vgpr1 187 %2:vgpr(<2 x s16>) = COPY $vgpr2 188 %3:vgpr(<2 x s16>) = COPY $vgpr3 189 %4:vgpr(<8 x s16>) = G_CONCAT_VECTORS %0, %1, %2, %3 190 $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %4 191... 192 193--- 194name: test_concat_vectors_s_v8s16_s_v4s16_s_v4s16 195legalized: true 196regBankSelected: true 197 198body: | 199 bb.0: 200 liveins: $sgpr0_sgpr1, $sgpr2_sgpr3 201 202 ; GCN-LABEL: name: test_concat_vectors_s_v8s16_s_v4s16_s_v4s16 203 ; GCN: liveins: $sgpr0_sgpr1, $sgpr2_sgpr3 204 ; GCN-NEXT: {{ $}} 205 ; GCN-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1 206 ; GCN-NEXT: [[COPY1:%[0-9]+]]:sreg_64 = COPY $sgpr2_sgpr3 207 ; GCN-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sgpr_128 = REG_SEQUENCE [[COPY]], %subreg.sub0_sub1, [[COPY1]], %subreg.sub2_sub3 208 ; GCN-NEXT: $sgpr0_sgpr1_sgpr2_sgpr3 = COPY [[REG_SEQUENCE]] 209 %0:sgpr(<4 x s16>) = COPY $sgpr0_sgpr1 210 %1:sgpr(<4 x s16>) = COPY $sgpr2_sgpr3 211 %2:sgpr(<8 x s16>) = G_CONCAT_VECTORS %0, %1 212 $sgpr0_sgpr1_sgpr2_sgpr3 = COPY %2 213... 214 215--- 216name: test_concat_vectors_v_v8s16_v_v4s16_v_v4s16 217legalized: true 218regBankSelected: true 219 220body: | 221 bb.0: 222 liveins: $vgpr0_vgpr1, $vgpr2_vgpr3 223 224 ; GCN-LABEL: name: test_concat_vectors_v_v8s16_v_v4s16_v_v4s16 225 ; GCN: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3 226 ; GCN-NEXT: {{ $}} 227 ; GCN-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1 228 ; GCN-NEXT: [[COPY1:%[0-9]+]]:vreg_64 = COPY $vgpr2_vgpr3 229 ; GCN-NEXT: [[REG_SEQUENCE:%[0-9]+]]:vreg_128 = REG_SEQUENCE [[COPY]], %subreg.sub0_sub1, [[COPY1]], %subreg.sub2_sub3 230 ; GCN-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[REG_SEQUENCE]] 231 %0:vgpr(<4 x s16>) = COPY $vgpr0_vgpr1 232 %1:vgpr(<4 x s16>) = COPY $vgpr2_vgpr3 233 %2:vgpr(<8 x s16>) = G_CONCAT_VECTORS %0, %1 234 $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %2 235... 236 237--- 238name: test_concat_vectors_s_s160_s_v2s16_s_v2s16_s_v2s16_s_v2s16_s_v2s16 239legalized: true 240regBankSelected: true 241 242body: | 243 bb.0: 244 liveins: $sgpr0, $sgpr1, $sgpr2, $sgpr3, $sgpr4 245 246 ; GCN-LABEL: name: test_concat_vectors_s_s160_s_v2s16_s_v2s16_s_v2s16_s_v2s16_s_v2s16 247 ; GCN: liveins: $sgpr0, $sgpr1, $sgpr2, $sgpr3, $sgpr4 248 ; GCN-NEXT: {{ $}} 249 ; GCN-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0 250 ; GCN-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr1 251 ; GCN-NEXT: [[COPY2:%[0-9]+]]:sreg_32 = COPY $sgpr2 252 ; GCN-NEXT: [[COPY3:%[0-9]+]]:sreg_32 = COPY $sgpr3 253 ; GCN-NEXT: [[COPY4:%[0-9]+]]:sreg_32 = COPY $sgpr4 254 ; GCN-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sgpr_160 = REG_SEQUENCE [[COPY]], %subreg.sub0, [[COPY1]], %subreg.sub1, [[COPY2]], %subreg.sub2, [[COPY3]], %subreg.sub3, [[COPY4]], %subreg.sub4 255 ; GCN-NEXT: $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4 = COPY [[REG_SEQUENCE]] 256 %0:sgpr(<2 x s16>) = COPY $sgpr0 257 %1:sgpr(<2 x s16>) = COPY $sgpr1 258 %2:sgpr(<2 x s16>) = COPY $sgpr2 259 %3:sgpr(<2 x s16>) = COPY $sgpr3 260 %4:sgpr(<2 x s16>) = COPY $sgpr4 261 %5:sgpr(<10 x s16>) = G_CONCAT_VECTORS %0, %1, %2, %3, %4 262 $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4 = COPY %5 263... 264 265--- 266name: test_concat_vectors_v_s160_v_v2s16_v_v2s16_v_v2s16_v_v2s16_v_v2s16 267legalized: true 268regBankSelected: true 269 270body: | 271 bb.0: 272 liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4 273 274 ; GCN-LABEL: name: test_concat_vectors_v_s160_v_v2s16_v_v2s16_v_v2s16_v_v2s16_v_v2s16 275 ; GCN: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4 276 ; GCN-NEXT: {{ $}} 277 ; GCN-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 278 ; GCN-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1 279 ; GCN-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr2 280 ; GCN-NEXT: [[COPY3:%[0-9]+]]:vgpr_32 = COPY $vgpr3 281 ; GCN-NEXT: [[COPY4:%[0-9]+]]:vgpr_32 = COPY $vgpr4 282 ; GCN-NEXT: [[REG_SEQUENCE:%[0-9]+]]:vreg_160 = REG_SEQUENCE [[COPY]], %subreg.sub0, [[COPY1]], %subreg.sub1, [[COPY2]], %subreg.sub2, [[COPY3]], %subreg.sub3, [[COPY4]], %subreg.sub4 283 ; GCN-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4 = COPY [[REG_SEQUENCE]] 284 %0:vgpr(<2 x s16>) = COPY $vgpr0 285 %1:vgpr(<2 x s16>) = COPY $vgpr1 286 %2:vgpr(<2 x s16>) = COPY $vgpr2 287 %3:vgpr(<2 x s16>) = COPY $vgpr3 288 %4:vgpr(<2 x s16>) = COPY $vgpr4 289 %5:vgpr(<10 x s16>) = G_CONCAT_VECTORS %0, %1, %2, %3, %4 290 $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4 = COPY %5 291... 292 293--- 294name: test_concat_vectors_s_v12s16_s_v4s16_s_v4s16_s_v4s16 295legalized: true 296regBankSelected: true 297 298body: | 299 bb.0: 300 liveins: $sgpr0_sgpr1, $sgpr2_sgpr3, $sgpr4_sgpr5 301 302 ; GCN-LABEL: name: test_concat_vectors_s_v12s16_s_v4s16_s_v4s16_s_v4s16 303 ; GCN: liveins: $sgpr0_sgpr1, $sgpr2_sgpr3, $sgpr4_sgpr5 304 ; GCN-NEXT: {{ $}} 305 ; GCN-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1 306 ; GCN-NEXT: [[COPY1:%[0-9]+]]:sreg_64 = COPY $sgpr2_sgpr3 307 ; GCN-NEXT: [[COPY2:%[0-9]+]]:sreg_64 = COPY $sgpr4_sgpr5 308 ; GCN-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sgpr_192 = REG_SEQUENCE [[COPY]], %subreg.sub0_sub1, [[COPY1]], %subreg.sub2_sub3, [[COPY2]], %subreg.sub4_sub5 309 ; GCN-NEXT: S_ENDPGM 0, implicit [[REG_SEQUENCE]] 310 %0:sgpr(<4 x s16>) = COPY $sgpr0_sgpr1 311 %1:sgpr(<4 x s16>) = COPY $sgpr2_sgpr3 312 %2:sgpr(<4 x s16>) = COPY $sgpr4_sgpr5 313 %3:sgpr(<12 x s16>) = G_CONCAT_VECTORS %0, %1, %2 314 S_ENDPGM 0, implicit %3 315... 316 317--- 318name: test_concat_vectors_v_v12s16_v_v4s16_v_v4s16_v_v4s16 319legalized: true 320regBankSelected: true 321 322body: | 323 bb.0: 324 liveins: $vgpr0_vgpr1, $vgpr2_vgpr3, $vgpr4_vgpr5 325 326 ; GCN-LABEL: name: test_concat_vectors_v_v12s16_v_v4s16_v_v4s16_v_v4s16 327 ; GCN: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3, $vgpr4_vgpr5 328 ; GCN-NEXT: {{ $}} 329 ; GCN-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1 330 ; GCN-NEXT: [[COPY1:%[0-9]+]]:vreg_64 = COPY $vgpr2_vgpr3 331 ; GCN-NEXT: [[COPY2:%[0-9]+]]:vreg_64 = COPY $vgpr4_vgpr5 332 ; GCN-NEXT: [[REG_SEQUENCE:%[0-9]+]]:vreg_192 = REG_SEQUENCE [[COPY]], %subreg.sub0_sub1, [[COPY1]], %subreg.sub2_sub3, [[COPY2]], %subreg.sub4_sub5 333 ; GCN-NEXT: S_ENDPGM 0, implicit [[REG_SEQUENCE]] 334 %0:vgpr(<4 x s16>) = COPY $vgpr0_vgpr1 335 %1:vgpr(<4 x s16>) = COPY $vgpr2_vgpr3 336 %2:vgpr(<4 x s16>) = COPY $vgpr4_vgpr5 337 %3:vgpr(<12 x s16>) = G_CONCAT_VECTORS %0, %1, %2 338 S_ENDPGM 0, implicit %3 339... 340 341--- 342name: test_concat_vectors_s_v16s16_s_v4s16_s_v4s16_s_v4s16_s_v4s16 343legalized: true 344regBankSelected: true 345 346body: | 347 bb.0: 348 liveins: $sgpr0_sgpr1, $sgpr2_sgpr3, $sgpr4_sgpr5, $sgpr6_sgpr7 349 350 ; GCN-LABEL: name: test_concat_vectors_s_v16s16_s_v4s16_s_v4s16_s_v4s16_s_v4s16 351 ; GCN: liveins: $sgpr0_sgpr1, $sgpr2_sgpr3, $sgpr4_sgpr5, $sgpr6_sgpr7 352 ; GCN-NEXT: {{ $}} 353 ; GCN-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1 354 ; GCN-NEXT: [[COPY1:%[0-9]+]]:sreg_64 = COPY $sgpr2_sgpr3 355 ; GCN-NEXT: [[COPY2:%[0-9]+]]:sreg_64 = COPY $sgpr4_sgpr5 356 ; GCN-NEXT: [[COPY3:%[0-9]+]]:sreg_64 = COPY $sgpr6_sgpr7 357 ; 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_sub7 358 ; GCN-NEXT: $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7 = COPY [[REG_SEQUENCE]] 359 %0:sgpr(<4 x s16>) = COPY $sgpr0_sgpr1 360 %1:sgpr(<4 x s16>) = COPY $sgpr2_sgpr3 361 %2:sgpr(<4 x s16>) = COPY $sgpr4_sgpr5 362 %3:sgpr(<4 x s16>) = COPY $sgpr6_sgpr7 363 %4:sgpr(<16 x s16>) = G_CONCAT_VECTORS %0, %1, %2, %3 364 $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7 = COPY %4 365... 366 367--- 368name: test_concat_vectors_s_v12s16_s_v8s16_s_v8s16 369legalized: true 370regBankSelected: true 371 372body: | 373 bb.0: 374 liveins: $sgpr0_sgpr1_sgpr2_sgpr3, $sgpr4_sgpr5_sgpr6_sgpr7 375 376 ; GCN-LABEL: name: test_concat_vectors_s_v12s16_s_v8s16_s_v8s16 377 ; GCN: liveins: $sgpr0_sgpr1_sgpr2_sgpr3, $sgpr4_sgpr5_sgpr6_sgpr7 378 ; GCN-NEXT: {{ $}} 379 ; GCN-NEXT: [[COPY:%[0-9]+]]:sgpr_128 = COPY $sgpr0_sgpr1_sgpr2_sgpr3 380 ; GCN-NEXT: [[COPY1:%[0-9]+]]:sgpr_128 = COPY $sgpr4_sgpr5_sgpr6_sgpr7 381 ; GCN-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sgpr_256 = REG_SEQUENCE [[COPY]], %subreg.sub0_sub1_sub2_sub3, [[COPY1]], %subreg.sub4_sub5_sub6_sub7 382 ; GCN-NEXT: $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7 = COPY [[REG_SEQUENCE]] 383 %0:sgpr(<8 x s16>) = COPY $sgpr0_sgpr1_sgpr2_sgpr3 384 %1:sgpr(<8 x s16>) = COPY $sgpr4_sgpr5_sgpr6_sgpr7 385 %2:sgpr(<16 x s16>) = G_CONCAT_VECTORS %0, %1 386 $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7 = COPY %2 387... 388 389--- 390name: test_concat_vectors_s_v32s16_s_v12s16_s_v12s16 391legalized: true 392regBankSelected: true 393 394body: | 395 bb.0: 396 liveins: $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7, $sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15 397 398 ; GCN-LABEL: name: test_concat_vectors_s_v32s16_s_v12s16_s_v12s16 399 ; GCN: liveins: $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7, $sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15 400 ; GCN-NEXT: {{ $}} 401 ; GCN-NEXT: [[COPY:%[0-9]+]]:sgpr_256 = COPY $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7 402 ; GCN-NEXT: [[COPY1:%[0-9]+]]:sgpr_256 = COPY $sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15 403 ; 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_sub15 404 ; GCN-NEXT: $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15 = COPY [[REG_SEQUENCE]] 405 %0:sgpr(<16 x s16>) = COPY $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7, 406 %1:sgpr(<16 x s16>) = COPY $sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15 407 %4:sgpr(<32 x s16>) = G_CONCAT_VECTORS %0, %1 408 $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15 = COPY %4 409... 410 411--- 412name: test_concat_vectors_s_v32s16_s_v4s16_s_v4s16_s_v4s16_s_v4s16_s_v4s16_s_v4s16_s_v4s16_s_v4s16 413legalized: true 414regBankSelected: true 415 416body: | 417 bb.0: 418 liveins: $sgpr0_sgpr1, $sgpr2_sgpr3, $sgpr4_sgpr5, $sgpr6_sgpr7, $sgpr8_sgpr9, $sgpr10_sgpr11, $sgpr12_sgpr13, $sgpr14_sgpr15 419 420 ; GCN-LABEL: name: test_concat_vectors_s_v32s16_s_v4s16_s_v4s16_s_v4s16_s_v4s16_s_v4s16_s_v4s16_s_v4s16_s_v4s16 421 ; GCN: liveins: $sgpr0_sgpr1, $sgpr2_sgpr3, $sgpr4_sgpr5, $sgpr6_sgpr7, $sgpr8_sgpr9, $sgpr10_sgpr11, $sgpr12_sgpr13, $sgpr14_sgpr15 422 ; GCN-NEXT: {{ $}} 423 ; GCN-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1 424 ; GCN-NEXT: [[COPY1:%[0-9]+]]:sreg_64 = COPY $sgpr2_sgpr3 425 ; GCN-NEXT: [[COPY2:%[0-9]+]]:sreg_64 = COPY $sgpr4_sgpr5 426 ; GCN-NEXT: [[COPY3:%[0-9]+]]:sreg_64 = COPY $sgpr6_sgpr7 427 ; GCN-NEXT: [[COPY4:%[0-9]+]]:sreg_64 = COPY $sgpr8_sgpr9 428 ; GCN-NEXT: [[COPY5:%[0-9]+]]:sreg_64 = COPY $sgpr10_sgpr11 429 ; GCN-NEXT: [[COPY6:%[0-9]+]]:sreg_64 = COPY $sgpr12_sgpr13 430 ; GCN-NEXT: [[COPY7:%[0-9]+]]:sreg_64 = COPY $sgpr14_sgpr15 431 ; 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_sub15 432 ; GCN-NEXT: $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15 = COPY [[REG_SEQUENCE]] 433 %0:sgpr(<4 x s16>) = COPY $sgpr0_sgpr1 434 %1:sgpr(<4 x s16>) = COPY $sgpr2_sgpr3 435 %2:sgpr(<4 x s16>) = COPY $sgpr4_sgpr5 436 %3:sgpr(<4 x s16>) = COPY $sgpr6_sgpr7 437 %4:sgpr(<4 x s16>) = COPY $sgpr8_sgpr9 438 %5:sgpr(<4 x s16>) = COPY $sgpr10_sgpr11 439 %6:sgpr(<4 x s16>) = COPY $sgpr12_sgpr13 440 %7:sgpr(<4 x s16>) = COPY $sgpr14_sgpr15 441 %8:sgpr(<32 x s16>) = G_CONCAT_VECTORS %0, %1, %2, %3, %4, %5, %6, %7 442 $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15 = COPY %8 443... 444 445--- 446name: test_concat_vectors_v_v512_v_v64_v_v64_v_v64_v_v64_v_v64_v_v64_v_v64_v_v64 447legalized: true 448regBankSelected: true 449 450body: | 451 bb.0: 452 liveins: $vgpr0_vgpr1, $vgpr2_vgpr3, $vgpr4_vgpr5, $vgpr6_vgpr7, $vgpr8_vgpr9, $vgpr10_vgpr11, $vgpr12_vgpr13, $vgpr14_vgpr15 453 454 ; GCN-LABEL: name: test_concat_vectors_v_v512_v_v64_v_v64_v_v64_v_v64_v_v64_v_v64_v_v64_v_v64 455 ; GCN: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3, $vgpr4_vgpr5, $vgpr6_vgpr7, $vgpr8_vgpr9, $vgpr10_vgpr11, $vgpr12_vgpr13, $vgpr14_vgpr15 456 ; GCN-NEXT: {{ $}} 457 ; GCN-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1 458 ; GCN-NEXT: [[COPY1:%[0-9]+]]:vreg_64 = COPY $vgpr2_vgpr3 459 ; GCN-NEXT: [[COPY2:%[0-9]+]]:vreg_64 = COPY $vgpr4_vgpr5 460 ; GCN-NEXT: [[COPY3:%[0-9]+]]:vreg_64 = COPY $vgpr6_vgpr7 461 ; GCN-NEXT: [[COPY4:%[0-9]+]]:vreg_64 = COPY $vgpr8_vgpr9 462 ; GCN-NEXT: [[COPY5:%[0-9]+]]:vreg_64 = COPY $vgpr10_vgpr11 463 ; GCN-NEXT: [[COPY6:%[0-9]+]]:vreg_64 = COPY $vgpr12_vgpr13 464 ; GCN-NEXT: [[COPY7:%[0-9]+]]:vreg_64 = COPY $vgpr14_vgpr15 465 ; 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_sub15 466 ; GCN-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15 = COPY [[REG_SEQUENCE]] 467 %0:vgpr(<4 x s16>) = COPY $vgpr0_vgpr1 468 %1:vgpr(<4 x s16>) = COPY $vgpr2_vgpr3 469 %2:vgpr(<4 x s16>) = COPY $vgpr4_vgpr5 470 %3:vgpr(<4 x s16>) = COPY $vgpr6_vgpr7 471 %4:vgpr(<4 x s16>) = COPY $vgpr8_vgpr9 472 %5:vgpr(<4 x s16>) = COPY $vgpr10_vgpr11 473 %6:vgpr(<4 x s16>) = COPY $vgpr12_vgpr13 474 %7:vgpr(<4 x s16>) = COPY $vgpr14_vgpr15 475 %8:vgpr(<32 x s16>) = G_CONCAT_VECTORS %0, %1, %2, %3, %4, %5, %6, %7 476 $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15 = COPY %8 477... 478 479 480 481 482 483 484--- 485name: test_concat_vectors_s_v4s32_s_v2s32_s_v2s32 486legalized: true 487regBankSelected: true 488 489body: | 490 bb.0: 491 liveins: $sgpr0_sgpr1, $sgpr2_sgpr3 492 493 ; GCN-LABEL: name: test_concat_vectors_s_v4s32_s_v2s32_s_v2s32 494 ; GCN: liveins: $sgpr0_sgpr1, $sgpr2_sgpr3 495 ; GCN-NEXT: {{ $}} 496 ; GCN-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1 497 ; GCN-NEXT: [[COPY1:%[0-9]+]]:sreg_64 = COPY $sgpr2_sgpr3 498 ; GCN-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sgpr_128 = REG_SEQUENCE [[COPY]], %subreg.sub0_sub1, [[COPY1]], %subreg.sub2_sub3 499 ; GCN-NEXT: $sgpr0_sgpr1_sgpr2_sgpr3 = COPY [[REG_SEQUENCE]] 500 %0:sgpr(<2 x s32>) = COPY $sgpr0_sgpr1 501 %1:sgpr(<2 x s32>) = COPY $sgpr2_sgpr3 502 %4:sgpr(<4 x s32>) = G_CONCAT_VECTORS %0, %1 503 $sgpr0_sgpr1_sgpr2_sgpr3 = COPY %4 504... 505 506--- 507name: test_concat_vectors_v_v4s32_v_v2s32_v_v2s32 508legalized: true 509regBankSelected: true 510 511body: | 512 bb.0: 513 liveins: $vgpr0_vgpr1, $vgpr2_vgpr3 514 515 ; GCN-LABEL: name: test_concat_vectors_v_v4s32_v_v2s32_v_v2s32 516 ; GCN: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3 517 ; GCN-NEXT: {{ $}} 518 ; GCN-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1 519 ; GCN-NEXT: [[COPY1:%[0-9]+]]:vreg_64 = COPY $vgpr2_vgpr3 520 ; GCN-NEXT: [[REG_SEQUENCE:%[0-9]+]]:vreg_128 = REG_SEQUENCE [[COPY]], %subreg.sub0_sub1, [[COPY1]], %subreg.sub2_sub3 521 ; GCN-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[REG_SEQUENCE]] 522 %0:vgpr(<2 x s32>) = COPY $vgpr0_vgpr1 523 %1:vgpr(<2 x s32>) = COPY $vgpr2_vgpr3 524 %2:vgpr(<4 x s32>) = G_CONCAT_VECTORS %0, %1 525 $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %2 526... 527 528--- 529name: test_concat_vectors_s_v8s32_s_v2s32_s_v2s32_s_v2s32_s_v2s32 530legalized: true 531regBankSelected: true 532 533body: | 534 bb.0: 535 liveins: $sgpr0_sgpr1, $sgpr2_sgpr3, $sgpr4_sgpr5, $sgpr6_sgpr7 536 537 ; GCN-LABEL: name: test_concat_vectors_s_v8s32_s_v2s32_s_v2s32_s_v2s32_s_v2s32 538 ; GCN: liveins: $sgpr0_sgpr1, $sgpr2_sgpr3, $sgpr4_sgpr5, $sgpr6_sgpr7 539 ; GCN-NEXT: {{ $}} 540 ; GCN-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1 541 ; GCN-NEXT: [[COPY1:%[0-9]+]]:sreg_64 = COPY $sgpr2_sgpr3 542 ; GCN-NEXT: [[COPY2:%[0-9]+]]:sreg_64 = COPY $sgpr4_sgpr5 543 ; GCN-NEXT: [[COPY3:%[0-9]+]]:sreg_64 = COPY $sgpr6_sgpr7 544 ; 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_sub7 545 ; GCN-NEXT: $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7 = COPY [[REG_SEQUENCE]] 546 %0:sgpr(<2 x s32>) = COPY $sgpr0_sgpr1 547 %1:sgpr(<2 x s32>) = COPY $sgpr2_sgpr3 548 %2:sgpr(<2 x s32>) = COPY $sgpr4_sgpr5 549 %3:sgpr(<2 x s32>) = COPY $sgpr6_sgpr7 550 %4:sgpr(<8 x s32>) = G_CONCAT_VECTORS %0, %1, %2, %3 551 $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7 = COPY %4 552... 553 554--- 555 556name: test_concat_vectors_s_v8s32_s_v4s32_s_v4s32 557legalized: true 558regBankSelected: true 559 560body: | 561 bb.0: 562 liveins: $sgpr0_sgpr1_sgpr2_sgpr3, $sgpr4_sgpr5_sgpr6_sgpr7 563 564 ; GCN-LABEL: name: test_concat_vectors_s_v8s32_s_v4s32_s_v4s32 565 ; GCN: liveins: $sgpr0_sgpr1_sgpr2_sgpr3, $sgpr4_sgpr5_sgpr6_sgpr7 566 ; GCN-NEXT: {{ $}} 567 ; GCN-NEXT: [[COPY:%[0-9]+]]:sgpr_128 = COPY $sgpr0_sgpr1_sgpr2_sgpr3 568 ; GCN-NEXT: [[COPY1:%[0-9]+]]:sgpr_128 = COPY $sgpr4_sgpr5_sgpr6_sgpr7 569 ; GCN-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sgpr_256 = REG_SEQUENCE [[COPY]], %subreg.sub0_sub1_sub2_sub3, [[COPY1]], %subreg.sub4_sub5_sub6_sub7 570 ; GCN-NEXT: $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7 = COPY [[REG_SEQUENCE]] 571 %0:sgpr(<4 x s32>) = COPY $sgpr0_sgpr1_sgpr2_sgpr3 572 %1:sgpr(<4 x s32>) = COPY $sgpr4_sgpr5_sgpr6_sgpr7 573 %2:sgpr(<8 x s32>) = G_CONCAT_VECTORS %0, %1 574 $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7 = COPY %2 575... 576 577--- 578name: test_concat_vectors_s_v16s32_s_v8s32_s_v8s32 579legalized: true 580regBankSelected: true 581 582body: | 583 bb.0: 584 liveins: $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7, $sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15 585 586 ; GCN-LABEL: name: test_concat_vectors_s_v16s32_s_v8s32_s_v8s32 587 ; GCN: liveins: $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7, $sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15 588 ; GCN-NEXT: {{ $}} 589 ; GCN-NEXT: [[COPY:%[0-9]+]]:sgpr_256 = COPY $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7 590 ; GCN-NEXT: [[COPY1:%[0-9]+]]:sgpr_256 = COPY $sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15 591 ; 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_sub15 592 ; GCN-NEXT: $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15 = COPY [[REG_SEQUENCE]] 593 %0:sgpr(<8 x s32>) = COPY $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7, 594 %1:sgpr(<8 x s32>) = COPY $sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15 595 %4:sgpr(<16 x s32>) = G_CONCAT_VECTORS %0, %1 596 $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15 = COPY %4 597... 598 599--- 600name: test_concat_vectors_v_v16s32_v_v2s32_v_v2s32_v_v2s32_v_v2s32_v_v2s32_v_v2s32_v_v2s32_v_v2s32 601legalized: true 602regBankSelected: true 603 604body: | 605 bb.0: 606 liveins: $vgpr0_vgpr1, $vgpr2_vgpr3, $vgpr4_vgpr5, $vgpr6_vgpr7, $vgpr8_vgpr9, $vgpr10_vgpr11, $vgpr12_vgpr13, $vgpr14_vgpr15 607 608 ; GCN-LABEL: name: test_concat_vectors_v_v16s32_v_v2s32_v_v2s32_v_v2s32_v_v2s32_v_v2s32_v_v2s32_v_v2s32_v_v2s32 609 ; GCN: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3, $vgpr4_vgpr5, $vgpr6_vgpr7, $vgpr8_vgpr9, $vgpr10_vgpr11, $vgpr12_vgpr13, $vgpr14_vgpr15 610 ; GCN-NEXT: {{ $}} 611 ; GCN-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1 612 ; GCN-NEXT: [[COPY1:%[0-9]+]]:vreg_64 = COPY $vgpr2_vgpr3 613 ; GCN-NEXT: [[COPY2:%[0-9]+]]:vreg_64 = COPY $vgpr4_vgpr5 614 ; GCN-NEXT: [[COPY3:%[0-9]+]]:vreg_64 = COPY $vgpr6_vgpr7 615 ; GCN-NEXT: [[COPY4:%[0-9]+]]:vreg_64 = COPY $vgpr8_vgpr9 616 ; GCN-NEXT: [[COPY5:%[0-9]+]]:vreg_64 = COPY $vgpr10_vgpr11 617 ; GCN-NEXT: [[COPY6:%[0-9]+]]:vreg_64 = COPY $vgpr12_vgpr13 618 ; GCN-NEXT: [[COPY7:%[0-9]+]]:vreg_64 = COPY $vgpr14_vgpr15 619 ; 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_sub15 620 ; GCN-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15 = COPY [[REG_SEQUENCE]] 621 %0:vgpr(<2 x s32>) = COPY $vgpr0_vgpr1 622 %1:vgpr(<2 x s32>) = COPY $vgpr2_vgpr3 623 %2:vgpr(<2 x s32>) = COPY $vgpr4_vgpr5 624 %3:vgpr(<2 x s32>) = COPY $vgpr6_vgpr7 625 %4:vgpr(<2 x s32>) = COPY $vgpr8_vgpr9 626 %5:vgpr(<2 x s32>) = COPY $vgpr10_vgpr11 627 %6:vgpr(<2 x s32>) = COPY $vgpr12_vgpr13 628 %7:vgpr(<2 x s32>) = COPY $vgpr14_vgpr15 629 %8:vgpr(<16 x s32>) = G_CONCAT_VECTORS %0, %1, %2, %3, %4, %5, %6, %7 630 $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15 = COPY %8 631... 632 633--- 634name: test_concat_vectors_s_v32s32_s_v16s32_s_v16s32 635legalized: true 636regBankSelected: true 637 638body: | 639 bb.0: 640 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 641 642 ; GCN-LABEL: name: test_concat_vectors_s_v32s32_s_v16s32_s_v16s32 643 ; 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 644 ; GCN-NEXT: {{ $}} 645 ; GCN-NEXT: [[COPY:%[0-9]+]]:sgpr_512 = COPY $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15 646 ; GCN-NEXT: [[COPY1:%[0-9]+]]:sgpr_512 = COPY $sgpr16_sgpr17_sgpr18_sgpr19_sgpr20_sgpr21_sgpr22_sgpr23_sgpr24_sgpr25_sgpr26_sgpr27_sgpr28_sgpr29_sgpr30_sgpr31 647 ; 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_sub31 648 ; 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]] 649 %0:sgpr(<16 x s32>) = COPY $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15 650 %1:sgpr(<16 x s32>) = COPY $sgpr16_sgpr17_sgpr18_sgpr19_sgpr20_sgpr21_sgpr22_sgpr23_sgpr24_sgpr25_sgpr26_sgpr27_sgpr28_sgpr29_sgpr30_sgpr31 651 %2:sgpr(<32 x s32>) = G_CONCAT_VECTORS %0, %1 652 $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 %2 653... 654 655--- 656name: test_concat_vectors_s_v4s64_s_v2s64_s_v2s64 657legalized: true 658regBankSelected: true 659 660body: | 661 bb.0: 662 liveins: $sgpr0_sgpr1_sgpr2_sgpr3, $sgpr4_sgpr5_sgpr6_sgpr7 663 664 ; GCN-LABEL: name: test_concat_vectors_s_v4s64_s_v2s64_s_v2s64 665 ; GCN: liveins: $sgpr0_sgpr1_sgpr2_sgpr3, $sgpr4_sgpr5_sgpr6_sgpr7 666 ; GCN-NEXT: {{ $}} 667 ; GCN-NEXT: [[COPY:%[0-9]+]]:sgpr_128 = COPY $sgpr0_sgpr1_sgpr2_sgpr3 668 ; GCN-NEXT: [[COPY1:%[0-9]+]]:sgpr_128 = COPY $sgpr4_sgpr5_sgpr6_sgpr7 669 ; GCN-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sgpr_256 = REG_SEQUENCE [[COPY]], %subreg.sub0_sub1_sub2_sub3, [[COPY1]], %subreg.sub4_sub5_sub6_sub7 670 ; GCN-NEXT: $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7 = COPY [[REG_SEQUENCE]] 671 %0:sgpr(<2 x s64>) = COPY $sgpr0_sgpr1_sgpr2_sgpr3 672 %1:sgpr(<2 x s64>) = COPY $sgpr4_sgpr5_sgpr6_sgpr7 673 %3:sgpr(<4 x s64>) = G_CONCAT_VECTORS %0, %1 674 $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7 = COPY %3 675... 676 677--- 678name: test_concat_vectors_s_v6s64_s_v3s64_s_v3s64 679legalized: true 680regBankSelected: true 681 682body: | 683 bb.0: 684 liveins: $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7, $sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15 685 686 ; GCN-LABEL: name: test_concat_vectors_s_v6s64_s_v3s64_s_v3s64 687 ; GCN: liveins: $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7, $sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15 688 ; GCN-NEXT: {{ $}} 689 ; GCN-NEXT: [[DEF:%[0-9]+]]:sgpr_192 = IMPLICIT_DEF 690 ; GCN-NEXT: [[DEF1:%[0-9]+]]:sgpr_192 = IMPLICIT_DEF 691 ; GCN-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sgpr_384 = REG_SEQUENCE [[DEF]], %subreg.sub0_sub1_sub2_sub3_sub4_sub5, [[DEF1]], %subreg.sub6_sub7_sub8_sub9_sub10_sub11 692 ; GCN-NEXT: S_ENDPGM 0, implicit [[REG_SEQUENCE]] 693 %0:sgpr(<3 x s64>) = G_IMPLICIT_DEF 694 %1:sgpr(<3 x s64>) = G_IMPLICIT_DEF 695 %2:sgpr(<6 x s64>) = G_CONCAT_VECTORS %0, %1 696 S_ENDPGM 0, implicit %2 697... 698 699--- 700name: test_concat_vectors_s_v8s64_s_v4s64_s_v4s64 701legalized: true 702regBankSelected: true 703 704body: | 705 bb.0: 706 liveins: $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7, $sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15 707 708 ; GCN-LABEL: name: test_concat_vectors_s_v8s64_s_v4s64_s_v4s64 709 ; GCN: liveins: $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7, $sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15 710 ; GCN-NEXT: {{ $}} 711 ; GCN-NEXT: [[COPY:%[0-9]+]]:sgpr_256 = COPY $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7 712 ; GCN-NEXT: [[COPY1:%[0-9]+]]:sgpr_256 = COPY $sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15 713 ; 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_sub15 714 ; GCN-NEXT: $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15 = COPY [[REG_SEQUENCE]] 715 %0:sgpr(<4 x s64>) = COPY $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7, 716 %1:sgpr(<4 x s64>) = COPY $sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15 717 %4:sgpr(<8 x s64>) = G_CONCAT_VECTORS %0, %1 718 $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15 = COPY %4 719... 720 721--- 722name: test_concat_vectors_s_v8s64_s_v2s64_s_v2s64_s_v2s64_s_v2s64 723legalized: true 724regBankSelected: true 725 726body: | 727 bb.0: 728 liveins: $sgpr0_sgpr1_sgpr2_sgpr3, $sgpr4_sgpr5_sgpr6_sgpr7, $sgpr8_sgpr9_sgpr10_sgpr11, $sgpr12_sgpr13_sgpr14_sgpr15 729 730 ; GCN-LABEL: name: test_concat_vectors_s_v8s64_s_v2s64_s_v2s64_s_v2s64_s_v2s64 731 ; GCN: liveins: $sgpr0_sgpr1_sgpr2_sgpr3, $sgpr4_sgpr5_sgpr6_sgpr7, $sgpr8_sgpr9_sgpr10_sgpr11, $sgpr12_sgpr13_sgpr14_sgpr15 732 ; GCN-NEXT: {{ $}} 733 ; GCN-NEXT: [[COPY:%[0-9]+]]:sgpr_128 = COPY $sgpr0_sgpr1_sgpr2_sgpr3 734 ; GCN-NEXT: [[COPY1:%[0-9]+]]:sgpr_128 = COPY $sgpr4_sgpr5_sgpr6_sgpr7 735 ; GCN-NEXT: [[COPY2:%[0-9]+]]:sgpr_128 = COPY $sgpr8_sgpr9_sgpr10_sgpr11 736 ; GCN-NEXT: [[COPY3:%[0-9]+]]:sgpr_128 = COPY $sgpr12_sgpr13_sgpr14_sgpr15 737 ; GCN-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sgpr_512 = REG_SEQUENCE [[COPY]], %subreg.sub0_sub1_sub2_sub3, [[COPY1]], %subreg.sub4_sub5_sub6_sub7, [[COPY2]], %subreg.sub8_sub9_sub10_sub11, [[COPY3]], %subreg.sub12_sub13_sub14_sub15 738 ; GCN-NEXT: $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15 = COPY [[REG_SEQUENCE]] 739 %0:sgpr(<2 x s64>) = COPY $sgpr0_sgpr1_sgpr2_sgpr3 740 %1:sgpr(<2 x s64>) = COPY $sgpr4_sgpr5_sgpr6_sgpr7 741 %2:sgpr(<2 x s64>) = COPY $sgpr8_sgpr9_sgpr10_sgpr11 742 %3:sgpr(<2 x s64>) = COPY $sgpr12_sgpr13_sgpr14_sgpr15 743 %4:sgpr(<8 x s64>) = G_CONCAT_VECTORS %0, %1, %2, %3 744 $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15 = COPY %4 745... 746 747--- 748name: test_concat_vectors_s_v4p1_s_v2p1_s_v2p1 749legalized: true 750regBankSelected: true 751 752body: | 753 bb.0: 754 liveins: $sgpr0_sgpr1_sgpr2_sgpr3, $sgpr4_sgpr5_sgpr6_sgpr7 755 756 ; GCN-LABEL: name: test_concat_vectors_s_v4p1_s_v2p1_s_v2p1 757 ; GCN: liveins: $sgpr0_sgpr1_sgpr2_sgpr3, $sgpr4_sgpr5_sgpr6_sgpr7 758 ; GCN-NEXT: {{ $}} 759 ; GCN-NEXT: [[COPY:%[0-9]+]]:sgpr_128 = COPY $sgpr0_sgpr1_sgpr2_sgpr3 760 ; GCN-NEXT: [[COPY1:%[0-9]+]]:sgpr_128 = COPY $sgpr4_sgpr5_sgpr6_sgpr7 761 ; GCN-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sgpr_256 = REG_SEQUENCE [[COPY]], %subreg.sub0_sub1_sub2_sub3, [[COPY1]], %subreg.sub4_sub5_sub6_sub7 762 ; GCN-NEXT: $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7 = COPY [[REG_SEQUENCE]] 763 %0:sgpr(<2 x p1>) = COPY $sgpr0_sgpr1_sgpr2_sgpr3 764 %1:sgpr(<2 x p1>) = COPY $sgpr4_sgpr5_sgpr6_sgpr7 765 %3:sgpr(<4 x p1>) = G_CONCAT_VECTORS %0, %1 766 $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7 = COPY %3 767... 768 769--- 770name: test_concat_vectors_s_v4p3_s_v2p3_s_v2p3 771legalized: true 772regBankSelected: true 773 774body: | 775 bb.0: 776 liveins: $sgpr0_sgpr1, $sgpr2_sgpr3 777 778 ; GCN-LABEL: name: test_concat_vectors_s_v4p3_s_v2p3_s_v2p3 779 ; GCN: liveins: $sgpr0_sgpr1, $sgpr2_sgpr3 780 ; GCN-NEXT: {{ $}} 781 ; GCN-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1 782 ; GCN-NEXT: [[COPY1:%[0-9]+]]:sreg_64 = COPY $sgpr2_sgpr3 783 ; GCN-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sgpr_128 = REG_SEQUENCE [[COPY]], %subreg.sub0_sub1, [[COPY1]], %subreg.sub2_sub3 784 ; GCN-NEXT: $sgpr0_sgpr1_sgpr2_sgpr3 = COPY [[REG_SEQUENCE]] 785 %0:sgpr(<2 x p3>) = COPY $sgpr0_sgpr1 786 %1:sgpr(<2 x p3>) = COPY $sgpr2_sgpr3 787 %2:sgpr(<4 x p3>) = G_CONCAT_VECTORS %0, %1 788 $sgpr0_sgpr1_sgpr2_sgpr3 = COPY %2 789... 790 791--- 792name: test_concat_vectors_s_v8p3_s_v2p3_s_v2p3_v2p3_s_v2p3 793legalized: true 794regBankSelected: true 795 796body: | 797 bb.0: 798 liveins: $sgpr0_sgpr1, $sgpr2_sgpr3, $sgpr4_sgpr5, $sgpr6_sgpr7 799 800 ; GCN-LABEL: name: test_concat_vectors_s_v8p3_s_v2p3_s_v2p3_v2p3_s_v2p3 801 ; GCN: liveins: $sgpr0_sgpr1, $sgpr2_sgpr3, $sgpr4_sgpr5, $sgpr6_sgpr7 802 ; GCN-NEXT: {{ $}} 803 ; GCN-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1 804 ; GCN-NEXT: [[COPY1:%[0-9]+]]:sreg_64 = COPY $sgpr2_sgpr3 805 ; GCN-NEXT: [[COPY2:%[0-9]+]]:sreg_64 = COPY $sgpr4_sgpr5 806 ; GCN-NEXT: [[COPY3:%[0-9]+]]:sreg_64 = COPY $sgpr6_sgpr7 807 ; 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_sub7 808 ; GCN-NEXT: $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7 = COPY [[REG_SEQUENCE]] 809 %0:sgpr(<2 x p3>) = COPY $sgpr0_sgpr1 810 %1:sgpr(<2 x p3>) = COPY $sgpr2_sgpr3 811 %2:sgpr(<2 x p3>) = COPY $sgpr4_sgpr5 812 %3:sgpr(<2 x p3>) = COPY $sgpr6_sgpr7 813 %4:sgpr(<8 x p3>) = G_CONCAT_VECTORS %0, %1, %2, %3 814 $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7 = COPY %4 815... 816