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 -verify-machineinstrs -global-isel-abort=2 -pass-remarks-missed='gisel*' -o - %s | FileCheck -check-prefix=GCN %s 3 4--- 5name: test_merge_values_v_s64_v_s32_v_s32 6legalized: true 7regBankSelected: true 8tracksRegLiveness: true 9 10body: | 11 bb.0: 12 liveins: $vgpr0, $vgpr1 13 14 ; GCN-LABEL: name: test_merge_values_v_s64_v_s32_v_s32 15 ; GCN: liveins: $vgpr0, $vgpr1 16 ; GCN: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 17 ; GCN: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1 18 ; GCN: [[REG_SEQUENCE:%[0-9]+]]:vreg_64 = REG_SEQUENCE [[COPY]], %subreg.sub0, [[COPY1]], %subreg.sub1 19 ; GCN: S_ENDPGM 0, implicit [[REG_SEQUENCE]] 20 %0:vgpr(s32) = COPY $vgpr0 21 %1:vgpr(s32) = COPY $vgpr1 22 %2:vgpr(s64) = G_MERGE_VALUES %0, %1 23 S_ENDPGM 0, implicit %2 24... 25 26--- 27name: test_merge_values_v_s64_s_s32_v_s32 28legalized: true 29regBankSelected: true 30tracksRegLiveness: true 31 32body: | 33 bb.0: 34 liveins: $sgpr0, $vgpr0 35 36 ; GCN-LABEL: name: test_merge_values_v_s64_s_s32_v_s32 37 ; GCN: liveins: $sgpr0, $vgpr0 38 ; GCN: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0 39 ; GCN: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr0 40 ; GCN: [[REG_SEQUENCE:%[0-9]+]]:vreg_64 = REG_SEQUENCE [[COPY]], %subreg.sub0, [[COPY1]], %subreg.sub1 41 ; GCN: S_ENDPGM 0, implicit [[REG_SEQUENCE]] 42 %0:sgpr(s32) = COPY $sgpr0 43 %1:vgpr(s32) = COPY $vgpr0 44 %2:vgpr(s64) = G_MERGE_VALUES %0, %1 45 S_ENDPGM 0, implicit %2 46... 47 48--- 49name: test_merge_values_v_s64_v_s32_s_s32 50legalized: true 51regBankSelected: true 52tracksRegLiveness: true 53 54body: | 55 bb.0: 56 liveins: $sgpr0, $vgpr0 57 58 ; GCN-LABEL: name: test_merge_values_v_s64_v_s32_s_s32 59 ; GCN: liveins: $sgpr0, $vgpr0 60 ; GCN: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 61 ; GCN: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr0 62 ; GCN: [[REG_SEQUENCE:%[0-9]+]]:vreg_64 = REG_SEQUENCE [[COPY]], %subreg.sub0, [[COPY1]], %subreg.sub1 63 ; GCN: S_ENDPGM 0, implicit [[REG_SEQUENCE]] 64 %0:vgpr(s32) = COPY $vgpr0 65 %1:sgpr(s32) = COPY $sgpr0 66 %2:vgpr(s64) = G_MERGE_VALUES %0, %1 67 S_ENDPGM 0, implicit %2 68... 69 70--- 71name: test_merge_values_s_s64_s_s32_s_s32 72legalized: true 73regBankSelected: true 74tracksRegLiveness: true 75 76body: | 77 bb.0: 78 liveins: $sgpr0, $sgpr1 79 80 ; GCN-LABEL: name: test_merge_values_s_s64_s_s32_s_s32 81 ; GCN: liveins: $sgpr0, $sgpr1 82 ; GCN: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0 83 ; GCN: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr1 84 ; GCN: [[REG_SEQUENCE:%[0-9]+]]:sreg_64 = REG_SEQUENCE [[COPY]], %subreg.sub0, [[COPY1]], %subreg.sub1 85 ; GCN: S_ENDPGM 0, implicit [[REG_SEQUENCE]] 86 %0:sgpr(s32) = COPY $sgpr0 87 %1:sgpr(s32) = COPY $sgpr1 88 %2:sgpr(s64) = G_MERGE_VALUES %0, %1 89 S_ENDPGM 0, implicit %2 90... 91 92--- 93name: test_merge_values_s_s96_s_s32_s_s32_s_s32 94legalized: true 95regBankSelected: true 96 97body: | 98 bb.0: 99 liveins: $sgpr0, $sgpr1, $sgpr2 100 101 ; GCN-LABEL: name: test_merge_values_s_s96_s_s32_s_s32_s_s32 102 ; GCN: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0 103 ; GCN: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr1 104 ; GCN: [[COPY2:%[0-9]+]]:sreg_32 = COPY $sgpr2 105 ; GCN: [[REG_SEQUENCE:%[0-9]+]]:sgpr_96 = REG_SEQUENCE [[COPY]], %subreg.sub0, [[COPY1]], %subreg.sub1, [[COPY2]], %subreg.sub2 106 ; GCN: $sgpr0_sgpr1_sgpr2 = COPY [[REG_SEQUENCE]] 107 %0:sgpr(s32) = COPY $sgpr0 108 %1:sgpr(s32) = COPY $sgpr1 109 %2:sgpr(s32) = COPY $sgpr2 110 %3:sgpr(s96) = G_MERGE_VALUES %0, %1, %2 111 $sgpr0_sgpr1_sgpr2 = COPY %3 112... 113 114--- 115name: test_merge_values_v_s96_v_s32_v_s32_v_s32 116legalized: true 117regBankSelected: true 118tracksRegLiveness: true 119 120body: | 121 bb.0: 122 liveins: $vgpr0, $vgpr1, $vgpr2 123 124 ; GCN-LABEL: name: test_merge_values_v_s96_v_s32_v_s32_v_s32 125 ; GCN: liveins: $vgpr0, $vgpr1, $vgpr2 126 ; GCN: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 127 ; GCN: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1 128 ; GCN: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr2 129 ; GCN: [[REG_SEQUENCE:%[0-9]+]]:vreg_96 = REG_SEQUENCE [[COPY]], %subreg.sub0, [[COPY1]], %subreg.sub1, [[COPY2]], %subreg.sub2 130 ; GCN: $vgpr0_vgpr1_vgpr2 = COPY [[REG_SEQUENCE]] 131 %0:vgpr(s32) = COPY $vgpr0 132 %1:vgpr(s32) = COPY $vgpr1 133 %2:vgpr(s32) = COPY $vgpr2 134 %3:vgpr(s96) = G_MERGE_VALUES %0, %1, %2 135 $vgpr0_vgpr1_vgpr2 = COPY %3 136... 137 138--- 139name: test_merge_values_s_s128_s_s32_s_s32_s_s32_s_s32 140legalized: true 141regBankSelected: true 142tracksRegLiveness: true 143 144body: | 145 bb.0: 146 liveins: $sgpr0, $sgpr1, $sgpr2, $sgpr3 147 148 ; GCN-LABEL: name: test_merge_values_s_s128_s_s32_s_s32_s_s32_s_s32 149 ; GCN: liveins: $sgpr0, $sgpr1, $sgpr2, $sgpr3 150 ; GCN: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0 151 ; GCN: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr1 152 ; GCN: [[COPY2:%[0-9]+]]:sreg_32 = COPY $sgpr2 153 ; GCN: [[COPY3:%[0-9]+]]:sreg_32 = COPY $sgpr3 154 ; GCN: [[REG_SEQUENCE:%[0-9]+]]:sgpr_128 = REG_SEQUENCE [[COPY]], %subreg.sub0, [[COPY1]], %subreg.sub1, [[COPY2]], %subreg.sub2, [[COPY3]], %subreg.sub3 155 ; GCN: $sgpr0_sgpr1_sgpr2_sgpr3 = COPY [[REG_SEQUENCE]] 156 %0:sgpr(s32) = COPY $sgpr0 157 %1:sgpr(s32) = COPY $sgpr1 158 %2:sgpr(s32) = COPY $sgpr2 159 %3:sgpr(s32) = COPY $sgpr3 160 %4:sgpr(s128) = G_MERGE_VALUES %0, %1, %2, %3 161 $sgpr0_sgpr1_sgpr2_sgpr3 = COPY %4 162... 163 164--- 165name: test_merge_values_v_s128_v_s32_v_s32_v_s32 166legalized: true 167regBankSelected: true 168tracksRegLiveness: true 169 170body: | 171 bb.0: 172 liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3 173 174 ; GCN-LABEL: name: test_merge_values_v_s128_v_s32_v_s32_v_s32 175 ; GCN: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3 176 ; GCN: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 177 ; GCN: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1 178 ; GCN: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr2 179 ; GCN: [[COPY3:%[0-9]+]]:vgpr_32 = COPY $vgpr3 180 ; GCN: [[REG_SEQUENCE:%[0-9]+]]:vreg_128 = REG_SEQUENCE [[COPY]], %subreg.sub0, [[COPY1]], %subreg.sub1, [[COPY2]], %subreg.sub2, [[COPY3]], %subreg.sub3 181 ; GCN: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[REG_SEQUENCE]] 182 %0:vgpr(s32) = COPY $vgpr0 183 %1:vgpr(s32) = COPY $vgpr1 184 %2:vgpr(s32) = COPY $vgpr2 185 %3:vgpr(s32) = COPY $vgpr3 186 %4:vgpr(s128) = G_MERGE_VALUES %0, %1, %2, %3 187 $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %4 188... 189 190--- 191name: test_merge_values_s_s128_s_s64_s_s64 192legalized: true 193regBankSelected: true 194tracksRegLiveness: true 195 196body: | 197 bb.0: 198 liveins: $sgpr0_sgpr1, $sgpr2_sgpr3 199 200 ; GCN-LABEL: name: test_merge_values_s_s128_s_s64_s_s64 201 ; GCN: liveins: $sgpr0_sgpr1, $sgpr2_sgpr3 202 ; GCN: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1 203 ; GCN: [[COPY1:%[0-9]+]]:sreg_64 = COPY $sgpr2_sgpr3 204 ; GCN: [[REG_SEQUENCE:%[0-9]+]]:sgpr_128 = REG_SEQUENCE [[COPY]], %subreg.sub0_sub1, [[COPY1]], %subreg.sub2_sub3 205 ; GCN: $sgpr0_sgpr1_sgpr2_sgpr3 = COPY [[REG_SEQUENCE]] 206 %0:sgpr(s64) = COPY $sgpr0_sgpr1 207 %1:sgpr(s64) = COPY $sgpr2_sgpr3 208 %4:sgpr(s128) = G_MERGE_VALUES %0, %1 209 $sgpr0_sgpr1_sgpr2_sgpr3 = COPY %4 210... 211 212--- 213name: test_merge_values_v_s128_v_s64_v_s64 214legalized: true 215regBankSelected: true 216tracksRegLiveness: true 217 218body: | 219 bb.0: 220 liveins: $vgpr0_vgpr1, $vgpr2_vgpr3 221 222 ; GCN-LABEL: name: test_merge_values_v_s128_v_s64_v_s64 223 ; GCN: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3 224 ; GCN: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1 225 ; GCN: [[COPY1:%[0-9]+]]:vreg_64 = COPY $vgpr2_vgpr3 226 ; GCN: [[REG_SEQUENCE:%[0-9]+]]:vreg_128 = REG_SEQUENCE [[COPY]], %subreg.sub0_sub1, [[COPY1]], %subreg.sub2_sub3 227 ; GCN: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[REG_SEQUENCE]] 228 %0:vgpr(s64) = COPY $vgpr0_vgpr1 229 %1:vgpr(s64) = COPY $vgpr2_vgpr3 230 %2:vgpr(s128) = G_MERGE_VALUES %0, %1 231 $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %2 232... 233 234--- 235name: test_merge_values_s_s160_s_s32_s_s32_s_s32_s_s32_s_s32 236legalized: true 237regBankSelected: true 238tracksRegLiveness: true 239 240body: | 241 bb.0: 242 liveins: $sgpr0, $sgpr1, $sgpr2, $sgpr3, $sgpr4 243 244 ; GCN-LABEL: name: test_merge_values_s_s160_s_s32_s_s32_s_s32_s_s32_s_s32 245 ; GCN: liveins: $sgpr0, $sgpr1, $sgpr2, $sgpr3, $sgpr4 246 ; GCN: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0 247 ; GCN: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr1 248 ; GCN: [[COPY2:%[0-9]+]]:sreg_32 = COPY $sgpr2 249 ; GCN: [[COPY3:%[0-9]+]]:sreg_32 = COPY $sgpr3 250 ; GCN: [[COPY4:%[0-9]+]]:sreg_32 = COPY $sgpr4 251 ; GCN: [[REG_SEQUENCE:%[0-9]+]]:sgpr_160 = REG_SEQUENCE [[COPY]], %subreg.sub0, [[COPY1]], %subreg.sub1, [[COPY2]], %subreg.sub2, [[COPY3]], %subreg.sub3, [[COPY4]], %subreg.sub4 252 ; GCN: $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4 = COPY [[REG_SEQUENCE]] 253 %0:sgpr(s32) = COPY $sgpr0 254 %1:sgpr(s32) = COPY $sgpr1 255 %2:sgpr(s32) = COPY $sgpr2 256 %3:sgpr(s32) = COPY $sgpr3 257 %4:sgpr(s32) = COPY $sgpr4 258 %5:sgpr(s160) = G_MERGE_VALUES %0, %1, %2, %3, %4 259 $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4 = COPY %5 260... 261 262--- 263name: test_merge_values_v_s160_v_s32_v_s32_v_s32_v_s32_v_s32 264legalized: true 265regBankSelected: true 266tracksRegLiveness: true 267 268body: | 269 bb.0: 270 liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4 271 272 ; GCN-LABEL: name: test_merge_values_v_s160_v_s32_v_s32_v_s32_v_s32_v_s32 273 ; GCN: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4 274 ; GCN: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 275 ; GCN: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1 276 ; GCN: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr2 277 ; GCN: [[COPY3:%[0-9]+]]:vgpr_32 = COPY $vgpr3 278 ; GCN: [[COPY4:%[0-9]+]]:vgpr_32 = COPY $vgpr4 279 ; GCN: [[REG_SEQUENCE:%[0-9]+]]:vreg_160 = REG_SEQUENCE [[COPY]], %subreg.sub0, [[COPY1]], %subreg.sub1, [[COPY2]], %subreg.sub2, [[COPY3]], %subreg.sub3, [[COPY4]], %subreg.sub4 280 ; GCN: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4 = COPY [[REG_SEQUENCE]] 281 %0:vgpr(s32) = COPY $vgpr0 282 %1:vgpr(s32) = COPY $vgpr1 283 %2:vgpr(s32) = COPY $vgpr2 284 %3:vgpr(s32) = COPY $vgpr3 285 %4:vgpr(s32) = COPY $vgpr4 286 %5:vgpr(s160) = G_MERGE_VALUES %0, %1, %2, %3, %4 287 $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4 = COPY %5 288... 289 290--- 291name: test_merge_values_s_s192_s_s64_s_s64_s_s64 292legalized: true 293regBankSelected: true 294tracksRegLiveness: true 295 296body: | 297 bb.0: 298 liveins: $sgpr0_sgpr1, $sgpr2_sgpr3, $sgpr4_sgpr5 299 300 ; GCN-LABEL: name: test_merge_values_s_s192_s_s64_s_s64_s_s64 301 ; GCN: liveins: $sgpr0_sgpr1, $sgpr2_sgpr3, $sgpr4_sgpr5 302 ; GCN: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1 303 ; GCN: [[COPY1:%[0-9]+]]:sreg_64 = COPY $sgpr2_sgpr3 304 ; GCN: [[COPY2:%[0-9]+]]:sreg_64 = COPY $sgpr4_sgpr5 305 ; GCN: [[REG_SEQUENCE:%[0-9]+]]:sgpr_192 = REG_SEQUENCE [[COPY]], %subreg.sub0_sub1, [[COPY1]], %subreg.sub2_sub3, [[COPY2]], %subreg.sub4_sub5 306 ; GCN: S_ENDPGM 0, implicit [[REG_SEQUENCE]] 307 %0:sgpr(s64) = COPY $sgpr0_sgpr1 308 %1:sgpr(s64) = COPY $sgpr2_sgpr3 309 %2:sgpr(s64) = COPY $sgpr4_sgpr5 310 %3:sgpr(s192) = G_MERGE_VALUES %0, %1, %2 311 S_ENDPGM 0, implicit %3 312... 313 314--- 315name: test_merge_values_v_s192_v_s64_v_s64_v_s64 316legalized: true 317regBankSelected: true 318tracksRegLiveness: true 319 320body: | 321 bb.0: 322 liveins: $vgpr0_vgpr1, $vgpr2_vgpr3, $vgpr4_vgpr5 323 324 ; GCN-LABEL: name: test_merge_values_v_s192_v_s64_v_s64_v_s64 325 ; GCN: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3, $vgpr4_vgpr5 326 ; GCN: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1 327 ; GCN: [[COPY1:%[0-9]+]]:vreg_64 = COPY $vgpr2_vgpr3 328 ; GCN: [[COPY2:%[0-9]+]]:vreg_64 = COPY $vgpr4_vgpr5 329 ; GCN: [[REG_SEQUENCE:%[0-9]+]]:vreg_192 = REG_SEQUENCE [[COPY]], %subreg.sub0_sub1, [[COPY1]], %subreg.sub2_sub3, [[COPY2]], %subreg.sub4_sub5 330 ; GCN: S_ENDPGM 0, implicit [[REG_SEQUENCE]] 331 %0:vgpr(s64) = COPY $vgpr0_vgpr1 332 %1:vgpr(s64) = COPY $vgpr2_vgpr3 333 %2:vgpr(s64) = COPY $vgpr4_vgpr5 334 %3:vgpr(s192) = G_MERGE_VALUES %0, %1, %2 335 S_ENDPGM 0, implicit %3 336... 337 338--- 339name: test_merge_values_s_s256_s_s64_s_s64_s_s64_s_s64 340legalized: true 341regBankSelected: true 342tracksRegLiveness: true 343 344body: | 345 bb.0: 346 liveins: $sgpr0_sgpr1, $sgpr2_sgpr3, $sgpr4_sgpr5, $sgpr6_sgpr7 347 348 ; GCN-LABEL: name: test_merge_values_s_s256_s_s64_s_s64_s_s64_s_s64 349 ; GCN: liveins: $sgpr0_sgpr1, $sgpr2_sgpr3, $sgpr4_sgpr5, $sgpr6_sgpr7 350 ; GCN: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1 351 ; GCN: [[COPY1:%[0-9]+]]:sreg_64 = COPY $sgpr2_sgpr3 352 ; GCN: [[COPY2:%[0-9]+]]:sreg_64 = COPY $sgpr4_sgpr5 353 ; GCN: [[COPY3:%[0-9]+]]:sreg_64 = COPY $sgpr6_sgpr7 354 ; 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 355 ; GCN: $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7 = COPY [[REG_SEQUENCE]] 356 %0:sgpr(s64) = COPY $sgpr0_sgpr1 357 %1:sgpr(s64) = COPY $sgpr2_sgpr3 358 %2:sgpr(s64) = COPY $sgpr4_sgpr5 359 %3:sgpr(s64) = COPY $sgpr6_sgpr7 360 %4:sgpr(s256) = G_MERGE_VALUES %0, %1, %2, %3 361 $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7 = COPY %4 362... 363 364--- 365name: test_merge_values_s_s256_s_s128_s_s128 366legalized: true 367regBankSelected: true 368tracksRegLiveness: true 369 370body: | 371 bb.0: 372 liveins: $sgpr0_sgpr1_sgpr2_sgpr3, $sgpr4_sgpr5_sgpr6_sgpr7 373 374 ; GCN-LABEL: name: test_merge_values_s_s256_s_s128_s_s128 375 ; GCN: liveins: $sgpr0_sgpr1_sgpr2_sgpr3, $sgpr4_sgpr5_sgpr6_sgpr7 376 ; GCN: [[COPY:%[0-9]+]]:sgpr_128 = COPY $sgpr0_sgpr1_sgpr2_sgpr3 377 ; GCN: [[COPY1:%[0-9]+]]:sgpr_128 = COPY $sgpr4_sgpr5_sgpr6_sgpr7 378 ; GCN: [[REG_SEQUENCE:%[0-9]+]]:sgpr_256 = REG_SEQUENCE [[COPY]], %subreg.sub0_sub1_sub2_sub3, [[COPY1]], %subreg.sub4_sub5_sub6_sub7 379 ; GCN: $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7 = COPY [[REG_SEQUENCE]] 380 %0:sgpr(s128) = COPY $sgpr0_sgpr1_sgpr2_sgpr3 381 %1:sgpr(s128) = COPY $sgpr4_sgpr5_sgpr6_sgpr7 382 %2:sgpr(s256) = G_MERGE_VALUES %0, %1 383 $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7 = COPY %2 384... 385 386--- 387name: test_merge_values_s_s512_s_s256_s_s256 388legalized: true 389regBankSelected: true 390tracksRegLiveness: true 391 392body: | 393 bb.0: 394 liveins: $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7, $sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15 395 396 ; GCN-LABEL: name: test_merge_values_s_s512_s_s256_s_s256 397 ; GCN: liveins: $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7, $sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15 398 ; GCN: [[COPY:%[0-9]+]]:sgpr_256 = COPY $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7 399 ; GCN: [[COPY1:%[0-9]+]]:sgpr_256 = COPY $sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15 400 ; 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 401 ; GCN: $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15 = COPY [[REG_SEQUENCE]] 402 %0:sgpr(s256) = COPY $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7, 403 %1:sgpr(s256) = COPY $sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15 404 %4:sgpr(s512) = G_MERGE_VALUES %0, %1 405 $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15 = COPY %4 406... 407 408--- 409name: test_merge_values_s_s512_s_s64_s_s64_s_s64_s_s64_s_s64_s_s64_s_s64_s_s64 410legalized: true 411regBankSelected: true 412tracksRegLiveness: true 413 414body: | 415 bb.0: 416 liveins: $sgpr0_sgpr1, $sgpr2_sgpr3, $sgpr4_sgpr5, $sgpr6_sgpr7, $sgpr8_sgpr9, $sgpr10_sgpr11, $sgpr12_sgpr13, $sgpr14_sgpr15 417 418 ; GCN-LABEL: name: test_merge_values_s_s512_s_s64_s_s64_s_s64_s_s64_s_s64_s_s64_s_s64_s_s64 419 ; GCN: liveins: $sgpr0_sgpr1, $sgpr2_sgpr3, $sgpr4_sgpr5, $sgpr6_sgpr7, $sgpr8_sgpr9, $sgpr10_sgpr11, $sgpr12_sgpr13, $sgpr14_sgpr15 420 ; GCN: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr1 421 ; GCN: [[COPY1:%[0-9]+]]:sreg_64 = COPY $sgpr2_sgpr3 422 ; GCN: [[COPY2:%[0-9]+]]:sreg_64 = COPY $sgpr4_sgpr5 423 ; GCN: [[COPY3:%[0-9]+]]:sreg_64 = COPY $sgpr6_sgpr7 424 ; GCN: [[COPY4:%[0-9]+]]:sreg_64 = COPY $sgpr8_sgpr9 425 ; GCN: [[COPY5:%[0-9]+]]:sreg_64 = COPY $sgpr10_sgpr11 426 ; GCN: [[COPY6:%[0-9]+]]:sreg_64 = COPY $sgpr12_sgpr13 427 ; GCN: [[COPY7:%[0-9]+]]:sreg_64 = COPY $sgpr14_sgpr15 428 ; 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 429 ; GCN: $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15 = COPY [[REG_SEQUENCE]] 430 %0:sgpr(s64) = COPY $sgpr0_sgpr1 431 %1:sgpr(s64) = COPY $sgpr2_sgpr3 432 %2:sgpr(s64) = COPY $sgpr4_sgpr5 433 %3:sgpr(s64) = COPY $sgpr6_sgpr7 434 %4:sgpr(s64) = COPY $sgpr8_sgpr9 435 %5:sgpr(s64) = COPY $sgpr10_sgpr11 436 %6:sgpr(s64) = COPY $sgpr12_sgpr13 437 %7:sgpr(s64) = COPY $sgpr14_sgpr15 438 %8:sgpr(s512) = G_MERGE_VALUES %0, %1, %2, %3, %4, %5, %6, %7 439 $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15 = COPY %8 440... 441 442--- 443name: test_merge_values_v_v512_v_s64_v_s64_v_s64_v_s64_v_s64_v_s64_v_s64_v_s64 444legalized: true 445regBankSelected: true 446tracksRegLiveness: true 447 448body: | 449 bb.0: 450 liveins: $vgpr0_vgpr1, $vgpr2_vgpr3, $vgpr4_vgpr5, $vgpr6_vgpr7, $vgpr8_vgpr9, $vgpr10_vgpr11, $vgpr12_vgpr13, $vgpr14_vgpr15 451 452 ; GCN-LABEL: name: test_merge_values_v_v512_v_s64_v_s64_v_s64_v_s64_v_s64_v_s64_v_s64_v_s64 453 ; GCN: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3, $vgpr4_vgpr5, $vgpr6_vgpr7, $vgpr8_vgpr9, $vgpr10_vgpr11, $vgpr12_vgpr13, $vgpr14_vgpr15 454 ; GCN: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1 455 ; GCN: [[COPY1:%[0-9]+]]:vreg_64 = COPY $vgpr2_vgpr3 456 ; GCN: [[COPY2:%[0-9]+]]:vreg_64 = COPY $vgpr4_vgpr5 457 ; GCN: [[COPY3:%[0-9]+]]:vreg_64 = COPY $vgpr6_vgpr7 458 ; GCN: [[COPY4:%[0-9]+]]:vreg_64 = COPY $vgpr8_vgpr9 459 ; GCN: [[COPY5:%[0-9]+]]:vreg_64 = COPY $vgpr10_vgpr11 460 ; GCN: [[COPY6:%[0-9]+]]:vreg_64 = COPY $vgpr12_vgpr13 461 ; GCN: [[COPY7:%[0-9]+]]:vreg_64 = COPY $vgpr14_vgpr15 462 ; 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 463 ; GCN: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15 = COPY [[REG_SEQUENCE]] 464 %0:vgpr(s64) = COPY $vgpr0_vgpr1 465 %1:vgpr(s64) = COPY $vgpr2_vgpr3 466 %2:vgpr(s64) = COPY $vgpr4_vgpr5 467 %3:vgpr(s64) = COPY $vgpr6_vgpr7 468 %4:vgpr(s64) = COPY $vgpr8_vgpr9 469 %5:vgpr(s64) = COPY $vgpr10_vgpr11 470 %6:vgpr(s64) = COPY $vgpr12_vgpr13 471 %7:vgpr(s64) = COPY $vgpr14_vgpr15 472 %8:vgpr(s512) = G_MERGE_VALUES %0, %1, %2, %3, %4, %5, %6, %7 473 $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15 = COPY %8 474... 475 476--- 477name: test_merge_values_rc_already_set_src_v_s64_v_s32_v_s32 478legalized: true 479regBankSelected: true 480tracksRegLiveness: true 481 482body: | 483 bb.0: 484 liveins: $vgpr0, $vgpr1 485 486 ; GCN-LABEL: name: test_merge_values_rc_already_set_src_v_s64_v_s32_v_s32 487 ; GCN: liveins: $vgpr0, $vgpr1 488 ; GCN: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 489 ; GCN: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1 490 ; GCN: [[REG_SEQUENCE:%[0-9]+]]:vreg_64 = REG_SEQUENCE [[COPY]], %subreg.sub0, [[COPY1]], %subreg.sub1 491 ; GCN: S_ENDPGM 0, implicit [[REG_SEQUENCE]] 492 %0:vgpr_32(s32) = COPY $vgpr0 493 %1:vgpr_32(s32) = COPY $vgpr1 494 %2:vgpr(s64) = G_MERGE_VALUES %0, %1 495 S_ENDPGM 0, implicit %2 496... 497 498--- 499name: test_merge_values_rc_already_set_dst_v_s64_v_s32_v_s32 500legalized: true 501regBankSelected: true 502tracksRegLiveness: true 503 504body: | 505 bb.0: 506 liveins: $vgpr0, $vgpr1 507 508 ; GCN-LABEL: name: test_merge_values_rc_already_set_dst_v_s64_v_s32_v_s32 509 ; GCN: liveins: $vgpr0, $vgpr1 510 ; GCN: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 511 ; GCN: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1 512 ; GCN: [[REG_SEQUENCE:%[0-9]+]]:vreg_64 = REG_SEQUENCE [[COPY]], %subreg.sub0, [[COPY1]], %subreg.sub1 513 ; GCN: S_ENDPGM 0, implicit [[REG_SEQUENCE]] 514 %0:vgpr(s32) = COPY $vgpr0 515 %1:vgpr(s32) = COPY $vgpr1 516 %2:vreg_64(s64) = G_MERGE_VALUES %0, %1 517 S_ENDPGM 0, implicit %2 518... 519 520--- 521name: test_merge_values_s_s1024_s_s256_s_s256_s_s256_s_s256 522legalized: true 523regBankSelected: true 524tracksRegLiveness: true 525 526body: | 527 bb.0: 528 liveins: $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7, $sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15 529 530 ; GCN-LABEL: name: test_merge_values_s_s1024_s_s256_s_s256_s_s256_s_s256 531 ; GCN: liveins: $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7, $sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15 532 ; GCN: [[COPY:%[0-9]+]]:sgpr_256 = COPY $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7 533 ; GCN: [[DEF:%[0-9]+]]:sgpr_256 = IMPLICIT_DEF 534 ; GCN: [[COPY1:%[0-9]+]]:sgpr_256 = COPY $sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15 535 ; GCN: [[DEF1:%[0-9]+]]:sgpr_256 = IMPLICIT_DEF 536 ; GCN: [[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_sub31 537 ; GCN: S_ENDPGM 0, implicit [[REG_SEQUENCE]] 538 %0:sgpr(s256) = COPY $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7, 539 %1:sgpr(s256) = G_IMPLICIT_DEF 540 %2:sgpr(s256) = COPY $sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15 541 %3:sgpr(s256) = G_IMPLICIT_DEF 542 %4:sgpr(s1024) = G_MERGE_VALUES %0, %1, %2, %3 543 S_ENDPGM 0, implicit %4 544... 545 546--- 547 548name: test_merge_values_s_s1024_s_s512 549legalized: true 550regBankSelected: true 551tracksRegLiveness: true 552 553body: | 554 bb.0: 555 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 556 557 ; GCN-LABEL: name: test_merge_values_s_s1024_s_s512 558 ; 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 559 ; GCN: [[COPY:%[0-9]+]]:sgpr_512 = COPY $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15 560 ; GCN: [[COPY1:%[0-9]+]]:sgpr_512 = COPY $sgpr16_sgpr17_sgpr18_sgpr19_sgpr20_sgpr21_sgpr22_sgpr23_sgpr24_sgpr25_sgpr26_sgpr27_sgpr28_sgpr29_sgpr30_sgpr31 561 ; 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 562 ; 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]] 563 %0:sgpr(s512) = COPY $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15 564 %1:sgpr(s512) = COPY $sgpr16_sgpr17_sgpr18_sgpr19_sgpr20_sgpr21_sgpr22_sgpr23_sgpr24_sgpr25_sgpr26_sgpr27_sgpr28_sgpr29_sgpr30_sgpr31 565 %2:sgpr(s1024) = G_MERGE_VALUES %0, %1 566 $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 567 568... 569