# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
# RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx1010 -run-pass=machine-scheduler -verify-machineinstrs -o - %s | FileCheck -check-prefix=GCN %s
# RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx1100 -run-pass=machine-scheduler -verify-machineinstrs -o - %s | FileCheck -check-prefix=GCN %s

# handleMove was called for the BUNDLE pseudo-instruction, but
# considered it to be an instruction in the bundle. Make sure it
# doesn't assert when the whole bundle is moved.

---
name: handleMove_bundle
tracksRegLiveness: true
machineFunctionInfo:
  isEntryFunction: true
  memoryBound:     false
  waveLimiter:     false
body:             |
  bb.0:
    liveins: $sgpr4_sgpr5

    ; GCN-LABEL: name: handleMove_bundle
    ; GCN: liveins: $sgpr4_sgpr5
    ; GCN-NEXT: {{  $}}
    ; GCN-NEXT: [[COPY:%[0-9]+]]:sgpr_64 = COPY $sgpr4_sgpr5
    ; GCN-NEXT: [[S_LOAD_DWORD_IMM:%[0-9]+]]:sreg_32_xm0_xexec = S_LOAD_DWORD_IMM [[COPY]], 0, 0 :: (dereferenceable invariant load (s32), align 16, addrspace 4)
    ; GCN-NEXT: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 1, implicit $exec
    ; GCN-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 0, implicit $exec
    ; GCN-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 2, implicit $exec
    ; GCN-NEXT: DS_WRITE_B32_gfx9 [[V_MOV_B32_e32_1]], [[V_MOV_B32_e32_]], 0, 0, implicit $exec :: (store (s32), addrspace 3)
    ; GCN-NEXT: $vgpr0 = COPY [[S_LOAD_DWORD_IMM]]
    ; GCN-NEXT: $m0 = S_MOV_B32 0
    ; GCN-NEXT: BUNDLE implicit $vgpr0, implicit $m0, implicit $exec {
    ; GCN-NEXT:   DS_GWS_INIT $vgpr0, 11, implicit $m0, implicit $exec :: (store (s32))
    ; GCN-NEXT:   S_WAITCNT 0
    ; GCN-NEXT: }
    ; GCN-NEXT: DS_WRITE_B32_gfx9 [[V_MOV_B32_e32_1]], [[V_MOV_B32_e32_2]], 0, 0, implicit $exec :: (store (s32), addrspace 3)
    ; GCN-NEXT: S_ENDPGM 0
    %2:sgpr_64 = COPY $sgpr4_sgpr5
    %5:sreg_32_xm0_xexec = S_LOAD_DWORD_IMM %2, 0, 0 :: (dereferenceable invariant load (s32), align 16, addrspace 4)
    %6:vgpr_32 = V_MOV_B32_e32 1, implicit $exec
    %7:vgpr_32 = V_MOV_B32_e32 0, implicit $exec
    DS_WRITE_B32_gfx9 %7, %6, 0, 0, implicit $exec :: (store (s32), addrspace 3)
    $m0 = S_MOV_B32 0
    $vgpr0 = COPY %5
    BUNDLE implicit killed $vgpr0, implicit $m0, implicit $exec {
      DS_GWS_INIT $vgpr0, 11, implicit $m0, implicit $exec :: (store (s32))
      S_WAITCNT 0
    }
    %8:vgpr_32 = V_MOV_B32_e32 2, implicit $exec
    DS_WRITE_B32_gfx9 %7, %8, 0, 0, implicit $exec :: (store (s32), addrspace 3)
    S_ENDPGM 0

...
