blob: e3c9226acded86dfa5f366ee32f585325116af71 [file] [edit]
# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 6
# RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx1250 -run-pass si-insert-waitcnts -o - %s | FileCheck -check-prefix=GCN %s
---
name: drain_cbranch
tracksRegLiveness: true
machineFunctionInfo:
isEntryFunction: true
body: |
; GCN-LABEL: name: drain_cbranch
; GCN: bb.0:
; GCN-NEXT: successors: %bb.1(0x40000000), %bb.2(0x40000000)
; GCN-NEXT: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $scc
; GCN-NEXT: {{ $}}
; GCN-NEXT: GLOBAL_STORE_DWORD killed $vgpr0_vgpr1, $vgpr2, 0, 0, implicit $exec
; GCN-NEXT: S_CBRANCH_SCC1 %bb.2, implicit $scc
; GCN-NEXT: {{ $}}
; GCN-NEXT: bb.1:
; GCN-NEXT: liveins: $vgpr3
; GCN-NEXT: {{ $}}
; GCN-NEXT: $vgpr2 = V_LSHLREV_B32_e64 16, $vgpr3, implicit $exec
; GCN-NEXT: S_ENDPGM 0
; GCN-NEXT: {{ $}}
; GCN-NEXT: bb.2:
; GCN-NEXT: liveins: $vgpr3
; GCN-NEXT: {{ $}}
; GCN-NEXT: $vgpr2 = V_LSHLREV_B32_e64 32, $vgpr3, implicit $exec
; GCN-NEXT: S_ENDPGM 0
bb.0:
successors: %bb.1, %bb.2
liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $scc
GLOBAL_STORE_DWORD killed $vgpr0_vgpr1, $vgpr2, 0, 0, implicit $exec
S_CBRANCH_SCC1 %bb.2, implicit $scc
bb.1:
liveins: $vgpr3
$vgpr2 = V_LSHLREV_B32_e64 16, $vgpr3, implicit $exec
S_ENDPGM 0
bb.2:
liveins: $vgpr3
$vgpr2 = V_LSHLREV_B32_e64 32, $vgpr3, implicit $exec
S_ENDPGM 0
...
---
name: drain_call
tracksRegLiveness: true
body: |
bb.0:
liveins: $vgpr0, $vgpr1, $vgpr2, $sgpr0_sgpr1
; GCN-LABEL: name: drain_call
; GCN: liveins: $vgpr0, $vgpr1, $vgpr2, $sgpr0_sgpr1
; GCN-NEXT: {{ $}}
; GCN-NEXT: S_WAIT_LOADCNT_DSCNT .Loadcnt_0_Dscnt_0
; GCN-NEXT: S_WAIT_KMCNT 0
; GCN-NEXT: GLOBAL_STORE_DWORD killed $vgpr0_vgpr1, $vgpr2, 0, 0, implicit $exec
; GCN-NEXT: $sgpr30_sgpr31 = SI_CALL killed $sgpr0_sgpr1, 0, csr_amdgpu
; GCN-NEXT: $vgpr2 = V_MOV_B32_e32 0, implicit $exec
; GCN-NEXT: SI_RETURN implicit $vgpr2
GLOBAL_STORE_DWORD killed $vgpr0_vgpr1, $vgpr2, 0, 0, implicit $exec
$sgpr30_sgpr31 = SI_CALL killed $sgpr0_sgpr1, 0, csr_amdgpu
$vgpr2 = V_MOV_B32_e32 0, implicit $exec
SI_RETURN implicit $vgpr2
...
---
name: drain_indirect_branch
tracksRegLiveness: true
machineFunctionInfo:
isEntryFunction: true
body: |
; GCN-LABEL: name: drain_indirect_branch
; GCN: bb.0:
; GCN-NEXT: successors: %bb.1(0x80000000)
; GCN-NEXT: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $sgpr0_sgpr1
; GCN-NEXT: {{ $}}
; GCN-NEXT: GLOBAL_STORE_DWORD killed $vgpr0_vgpr1, $vgpr2, 0, 0, implicit $exec
; GCN-NEXT: S_SETPC_B64 $sgpr0_sgpr1
; GCN-NEXT: {{ $}}
; GCN-NEXT: bb.1:
; GCN-NEXT: liveins: $vgpr3
; GCN-NEXT: {{ $}}
; GCN-NEXT: $vgpr2 = V_LSHLREV_B32_e64 16, $vgpr3, implicit $exec
; GCN-NEXT: S_ENDPGM 0
bb.0:
successors: %bb.1
liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $sgpr0_sgpr1
GLOBAL_STORE_DWORD killed $vgpr0_vgpr1, $vgpr2, 0, 0, implicit $exec
S_SETPC_B64 $sgpr0_sgpr1
bb.1:
liveins: $vgpr3
$vgpr2 = V_LSHLREV_B32_e64 16, $vgpr3, implicit $exec
S_ENDPGM 0
...
---
name: drain_trap
tracksRegLiveness: true
machineFunctionInfo:
isEntryFunction: true
body: |
bb.0:
liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3
; GCN-LABEL: name: drain_trap
; GCN: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3
; GCN-NEXT: {{ $}}
; GCN-NEXT: GLOBAL_STORE_DWORD killed $vgpr0_vgpr1, $vgpr2, 0, 0, implicit $exec
; GCN-NEXT: S_TRAP 0
; GCN-NEXT: $vgpr2 = V_LSHLREV_B32_e64 16, $vgpr3, implicit $exec
; GCN-NEXT: S_ENDPGM 0
GLOBAL_STORE_DWORD killed $vgpr0_vgpr1, $vgpr2, 0, 0, implicit $exec
S_TRAP 0
$vgpr2 = V_LSHLREV_B32_e64 16, $vgpr3, implicit $exec
S_ENDPGM 0
...
---
name: drain_getreg
tracksRegLiveness: true
machineFunctionInfo:
isEntryFunction: true
body: |
bb.0:
liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3
; GCN-LABEL: name: drain_getreg
; GCN: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3
; GCN-NEXT: {{ $}}
; GCN-NEXT: GLOBAL_STORE_DWORD killed $vgpr0_vgpr1, $vgpr2, 0, 0, implicit $exec
; GCN-NEXT: $sgpr0 = S_GETREG_B32 1, implicit $mode
; GCN-NEXT: $vgpr2 = V_LSHLREV_B32_e64 16, $vgpr3, implicit $exec
; GCN-NEXT: S_ENDPGM 0
GLOBAL_STORE_DWORD killed $vgpr0_vgpr1, $vgpr2, 0, 0, implicit $exec
$sgpr0 = S_GETREG_B32 1, implicit $mode
$vgpr2 = V_LSHLREV_B32_e64 16, $vgpr3, implicit $exec
S_ENDPGM 0
...
---
name: drain_setreg
tracksRegLiveness: true
machineFunctionInfo:
isEntryFunction: true
body: |
bb.0:
liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $sgpr0
; GCN-LABEL: name: drain_setreg
; GCN: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $sgpr0
; GCN-NEXT: {{ $}}
; GCN-NEXT: GLOBAL_STORE_DWORD killed $vgpr0_vgpr1, $vgpr2, 0, 0, implicit $exec
; GCN-NEXT: S_SETREG_B32 $sgpr0, 1, implicit-def $mode, implicit $mode
; GCN-NEXT: $vgpr2 = V_LSHLREV_B32_e64 16, $vgpr3, implicit $exec
; GCN-NEXT: S_ENDPGM 0
GLOBAL_STORE_DWORD killed $vgpr0_vgpr1, $vgpr2, 0, 0, implicit $exec
S_SETREG_B32 $sgpr0, 1, implicit-def $mode, implicit $mode
$vgpr2 = V_LSHLREV_B32_e64 16, $vgpr3, implicit $exec
S_ENDPGM 0
...
---
name: drain_setreg_mode
tracksRegLiveness: true
machineFunctionInfo:
isEntryFunction: true
body: |
bb.0:
liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $sgpr0
; GCN-LABEL: name: drain_setreg_mode
; GCN: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $sgpr0
; GCN-NEXT: {{ $}}
; GCN-NEXT: GLOBAL_STORE_DWORD killed $vgpr0_vgpr1, $vgpr2, 0, 0, implicit $exec
; GCN-NEXT: S_SETREG_B32_mode $sgpr0, 1, implicit-def $mode, implicit $mode
; GCN-NEXT: $vgpr2 = V_LSHLREV_B32_e64 16, $vgpr3, implicit $exec
; GCN-NEXT: S_ENDPGM 0
GLOBAL_STORE_DWORD killed $vgpr0_vgpr1, $vgpr2, 0, 0, implicit $exec
S_SETREG_B32_mode $sgpr0, 1, implicit-def $mode, implicit $mode
$vgpr2 = V_LSHLREV_B32_e64 16, $vgpr3, implicit $exec
S_ENDPGM 0
...
---
name: drain_setreg_imm32
tracksRegLiveness: true
machineFunctionInfo:
isEntryFunction: true
body: |
bb.0:
liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3
; GCN-LABEL: name: drain_setreg_imm32
; GCN: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3
; GCN-NEXT: {{ $}}
; GCN-NEXT: GLOBAL_STORE_DWORD killed $vgpr0_vgpr1, $vgpr2, 0, 0, implicit $exec
; GCN-NEXT: S_SETREG_IMM32_B32 0, 1, implicit-def $mode, implicit $mode
; GCN-NEXT: $vgpr2 = V_LSHLREV_B32_e64 16, $vgpr3, implicit $exec
; GCN-NEXT: S_ENDPGM 0
GLOBAL_STORE_DWORD killed $vgpr0_vgpr1, $vgpr2, 0, 0, implicit $exec
S_SETREG_IMM32_B32 0, 1, implicit-def $mode, implicit $mode
$vgpr2 = V_LSHLREV_B32_e64 16, $vgpr3, implicit $exec
S_ENDPGM 0
...
---
name: drain_setreg_imm32_mode
tracksRegLiveness: true
machineFunctionInfo:
isEntryFunction: true
body: |
bb.0:
liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3
; GCN-LABEL: name: drain_setreg_imm32_mode
; GCN: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3
; GCN-NEXT: {{ $}}
; GCN-NEXT: GLOBAL_STORE_DWORD killed $vgpr0_vgpr1, $vgpr2, 0, 0, implicit $exec
; GCN-NEXT: S_SETREG_IMM32_B32_mode 0, 1, implicit-def $mode, implicit $mode
; GCN-NEXT: $vgpr2 = V_LSHLREV_B32_e64 16, $vgpr3, implicit $exec
; GCN-NEXT: S_ENDPGM 0
GLOBAL_STORE_DWORD killed $vgpr0_vgpr1, $vgpr2, 0, 0, implicit $exec
S_SETREG_IMM32_B32_mode 0, 1, implicit-def $mode, implicit $mode
$vgpr2 = V_LSHLREV_B32_e64 16, $vgpr3, implicit $exec
S_ENDPGM 0
...
---
name: drain_sendmsg
tracksRegLiveness: true
machineFunctionInfo:
isEntryFunction: true
body: |
bb.0:
liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $m0
; GCN-LABEL: name: drain_sendmsg
; GCN: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $m0
; GCN-NEXT: {{ $}}
; GCN-NEXT: GLOBAL_STORE_DWORD killed $vgpr0_vgpr1, $vgpr2, 0, 0, implicit $exec
; GCN-NEXT: S_SENDMSG 1, implicit $exec, implicit $m0
; GCN-NEXT: $vgpr2 = V_LSHLREV_B32_e64 16, $vgpr3, implicit $exec
; GCN-NEXT: S_ENDPGM 0
GLOBAL_STORE_DWORD killed $vgpr0_vgpr1, $vgpr2, 0, 0, implicit $exec
S_SENDMSG 1, implicit $exec, implicit $m0
$vgpr2 = V_LSHLREV_B32_e64 16, $vgpr3, implicit $exec
S_ENDPGM 0
...
---
name: drain_sendmsg_halt
tracksRegLiveness: true
machineFunctionInfo:
isEntryFunction: true
body: |
bb.0:
liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $m0
; GCN-LABEL: name: drain_sendmsg_halt
; GCN: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $m0
; GCN-NEXT: {{ $}}
; GCN-NEXT: GLOBAL_STORE_DWORD killed $vgpr0_vgpr1, $vgpr2, 0, 0, implicit $exec
; GCN-NEXT: S_SENDMSGHALT 1, implicit $exec, implicit $m0
; GCN-NEXT: $vgpr2 = V_LSHLREV_B32_e64 16, $vgpr3, implicit $exec
; GCN-NEXT: S_ENDPGM 0
GLOBAL_STORE_DWORD killed $vgpr0_vgpr1, $vgpr2, 0, 0, implicit $exec
S_SENDMSGHALT 1, implicit $exec, implicit $m0
$vgpr2 = V_LSHLREV_B32_e64 16, $vgpr3, implicit $exec
S_ENDPGM 0
...
---
name: drain_sendmsg_rtn_b32
tracksRegLiveness: true
machineFunctionInfo:
isEntryFunction: true
body: |
bb.0:
liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3
; GCN-LABEL: name: drain_sendmsg_rtn_b32
; GCN: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3
; GCN-NEXT: {{ $}}
; GCN-NEXT: GLOBAL_STORE_DWORD killed $vgpr0_vgpr1, $vgpr2, 0, 0, implicit $exec
; GCN-NEXT: $sgpr0 = S_SENDMSG_RTN_B32 1
; GCN-NEXT: $vgpr2 = V_LSHLREV_B32_e64 16, $vgpr3, implicit $exec
; GCN-NEXT: S_ENDPGM 0
GLOBAL_STORE_DWORD killed $vgpr0_vgpr1, $vgpr2, 0, 0, implicit $exec
$sgpr0 = S_SENDMSG_RTN_B32 1
$vgpr2 = V_LSHLREV_B32_e64 16, $vgpr3, implicit $exec
S_ENDPGM 0
...
---
name: drain_sendmsg_rtn_b64
tracksRegLiveness: true
machineFunctionInfo:
isEntryFunction: true
body: |
bb.0:
liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3
; GCN-LABEL: name: drain_sendmsg_rtn_b64
; GCN: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3
; GCN-NEXT: {{ $}}
; GCN-NEXT: GLOBAL_STORE_DWORD killed $vgpr0_vgpr1, $vgpr2, 0, 0, implicit $exec
; GCN-NEXT: $sgpr0_sgpr1 = S_SENDMSG_RTN_B64 1
; GCN-NEXT: $vgpr2 = V_LSHLREV_B32_e64 16, $vgpr3, implicit $exec
; GCN-NEXT: S_ENDPGM 0
GLOBAL_STORE_DWORD killed $vgpr0_vgpr1, $vgpr2, 0, 0, implicit $exec
$sgpr0_sgpr1 = S_SENDMSG_RTN_B64 1
$vgpr2 = V_LSHLREV_B32_e64 16, $vgpr3, implicit $exec
S_ENDPGM 0
...
---
name: drain_barrier_wait
tracksRegLiveness: true
machineFunctionInfo:
isEntryFunction: true
body: |
bb.0:
liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3
; GCN-LABEL: name: drain_barrier_wait
; GCN: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3
; GCN-NEXT: {{ $}}
; GCN-NEXT: GLOBAL_STORE_DWORD killed $vgpr0_vgpr1, $vgpr2, 0, 0, implicit $exec
; GCN-NEXT: S_BARRIER_WAIT 1
; GCN-NEXT: $vgpr2 = V_LSHLREV_B32_e64 16, $vgpr3, implicit $exec
; GCN-NEXT: S_ENDPGM 0
GLOBAL_STORE_DWORD killed $vgpr0_vgpr1, $vgpr2, 0, 0, implicit $exec
S_BARRIER_WAIT 1
$vgpr2 = V_LSHLREV_B32_e64 16, $vgpr3, implicit $exec
S_ENDPGM 0
...
---
name: drain_barrier_signal_m0
tracksRegLiveness: true
machineFunctionInfo:
isEntryFunction: true
body: |
bb.0:
liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $m0
; GCN-LABEL: name: drain_barrier_signal_m0
; GCN: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $m0
; GCN-NEXT: {{ $}}
; GCN-NEXT: GLOBAL_STORE_DWORD killed $vgpr0_vgpr1, $vgpr2, 0, 0, implicit $exec
; GCN-NEXT: S_BARRIER_SIGNAL_M0 implicit $m0
; GCN-NEXT: $vgpr2 = V_LSHLREV_B32_e64 16, $vgpr3, implicit $exec
; GCN-NEXT: S_ENDPGM 0
GLOBAL_STORE_DWORD killed $vgpr0_vgpr1, $vgpr2, 0, 0, implicit $exec
S_BARRIER_SIGNAL_M0 implicit $m0
$vgpr2 = V_LSHLREV_B32_e64 16, $vgpr3, implicit $exec
S_ENDPGM 0
...
---
name: drain_barrier_signal
tracksRegLiveness: true
machineFunctionInfo:
isEntryFunction: true
body: |
bb.0:
liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3
; GCN-LABEL: name: drain_barrier_signal
; GCN: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3
; GCN-NEXT: {{ $}}
; GCN-NEXT: GLOBAL_STORE_DWORD killed $vgpr0_vgpr1, $vgpr2, 0, 0, implicit $exec
; GCN-NEXT: S_BARRIER_SIGNAL_IMM 1
; GCN-NEXT: $vgpr2 = V_LSHLREV_B32_e64 16, $vgpr3, implicit $exec
; GCN-NEXT: S_ENDPGM 0
GLOBAL_STORE_DWORD killed $vgpr0_vgpr1, $vgpr2, 0, 0, implicit $exec
S_BARRIER_SIGNAL_IMM 1
$vgpr2 = V_LSHLREV_B32_e64 16, $vgpr3, implicit $exec
S_ENDPGM 0
...
---
name: drain_barrier_signal_isfirst_m0
tracksRegLiveness: true
machineFunctionInfo:
isEntryFunction: true
body: |
bb.0:
liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $m0, $scc
; GCN-LABEL: name: drain_barrier_signal_isfirst_m0
; GCN: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $m0, $scc
; GCN-NEXT: {{ $}}
; GCN-NEXT: GLOBAL_STORE_DWORD killed $vgpr0_vgpr1, $vgpr2, 0, 0, implicit $exec
; GCN-NEXT: S_BARRIER_SIGNAL_ISFIRST_M0 implicit $m0, implicit-def $scc, implicit $scc
; GCN-NEXT: $vgpr2 = V_LSHLREV_B32_e64 16, $vgpr3, implicit $exec
; GCN-NEXT: S_ENDPGM 0
GLOBAL_STORE_DWORD killed $vgpr0_vgpr1, $vgpr2, 0, 0, implicit $exec
S_BARRIER_SIGNAL_ISFIRST_M0 implicit $m0, implicit-def $scc, implicit $scc
$vgpr2 = V_LSHLREV_B32_e64 16, $vgpr3, implicit $exec
S_ENDPGM 0
...
---
name: drain_barrier_signal_isfirst
tracksRegLiveness: true
machineFunctionInfo:
isEntryFunction: true
body: |
bb.0:
liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $scc
; GCN-LABEL: name: drain_barrier_signal_isfirst
; GCN: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $scc
; GCN-NEXT: {{ $}}
; GCN-NEXT: GLOBAL_STORE_DWORD killed $vgpr0_vgpr1, $vgpr2, 0, 0, implicit $exec
; GCN-NEXT: S_BARRIER_SIGNAL_ISFIRST_IMM 1, implicit-def $scc, implicit $scc
; GCN-NEXT: $vgpr2 = V_LSHLREV_B32_e64 16, $vgpr3, implicit $exec
; GCN-NEXT: S_ENDPGM 0
GLOBAL_STORE_DWORD killed $vgpr0_vgpr1, $vgpr2, 0, 0, implicit $exec
S_BARRIER_SIGNAL_ISFIRST_IMM 1, implicit-def $scc, implicit $scc
$vgpr2 = V_LSHLREV_B32_e64 16, $vgpr3, implicit $exec
S_ENDPGM 0
...