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