blob: d5e3beb75d142aa49889aae9af13f89e598ce621 [file]
# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 5
# RUN: llc -mtriple=amdgcn -mcpu=gfx1200 -run-pass si-insert-waitcnts -o - %s | FileCheck %s
# Check storecnt is not eliminated after global_wb/wbinv or
# loadcnt after inv.
---
name: wb_storecnt
body: |
; CHECK-LABEL: name: wb_storecnt
; CHECK: bb.0:
; CHECK-NEXT: successors: %bb.2(0x40000000), %bb.1(0x40000000)
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: S_WAIT_LOADCNT_DSCNT 0
; CHECK-NEXT: S_WAIT_EXPCNT 0
; CHECK-NEXT: S_WAIT_SAMPLECNT 0
; CHECK-NEXT: S_WAIT_BVHCNT 0
; CHECK-NEXT: S_WAIT_KMCNT 0
; CHECK-NEXT: S_WAIT_STORECNT 0
; CHECK-NEXT: S_CMP_EQ_U32 renamable $sgpr1, 0, implicit-def $scc
; CHECK-NEXT: S_CBRANCH_SCC1 %bb.2, implicit killed $scc
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: bb.1:
; CHECK-NEXT: successors: %bb.1(0x40000000), %bb.2(0x40000000)
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: GLOBAL_WB 16, implicit $exec
; CHECK-NEXT: S_WAIT_STORECNT 0
; CHECK-NEXT: GLOBAL_STORE_DWORD_SADDR renamable $vgpr0, renamable $vgpr1, renamable $sgpr2_sgpr3, 0, 16, implicit $exec
; CHECK-NEXT: S_CBRANCH_SCC0 %bb.1, implicit killed $scc
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: bb.2:
; CHECK-NEXT: S_ENDPGM 0
bb.0:
S_WAIT_LOADCNT_soft 0
S_WAIT_STORECNT_soft 0
S_WAIT_DSCNT_soft 0
S_CMP_EQ_U32 renamable $sgpr1, 0, implicit-def $scc
S_CBRANCH_SCC1 %bb.2, implicit killed $scc
bb.1:
GLOBAL_WB 16, implicit $exec
S_WAIT_LOADCNT_soft 0
S_WAIT_STORECNT_soft 0
GLOBAL_STORE_DWORD_SADDR renamable $vgpr0, renamable $vgpr1, renamable $sgpr2_sgpr3, 0, 16, implicit $exec
S_CBRANCH_SCC0 %bb.1, implicit killed $scc
bb.2:
S_ENDPGM 0
...
---
name: wbinv_storecnt
body: |
; CHECK-LABEL: name: wbinv_storecnt
; CHECK: bb.0:
; CHECK-NEXT: successors: %bb.2(0x40000000), %bb.1(0x40000000)
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: S_WAIT_LOADCNT_DSCNT 0
; CHECK-NEXT: S_WAIT_EXPCNT 0
; CHECK-NEXT: S_WAIT_SAMPLECNT 0
; CHECK-NEXT: S_WAIT_BVHCNT 0
; CHECK-NEXT: S_WAIT_KMCNT 0
; CHECK-NEXT: S_WAIT_STORECNT 0
; CHECK-NEXT: S_CMP_EQ_U32 renamable $sgpr1, 0, implicit-def $scc
; CHECK-NEXT: S_CBRANCH_SCC1 %bb.2, implicit killed $scc
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: bb.1:
; CHECK-NEXT: successors: %bb.1(0x40000000), %bb.2(0x40000000)
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: GLOBAL_WBINV 16, implicit $exec
; CHECK-NEXT: S_WAIT_STORECNT 0
; CHECK-NEXT: GLOBAL_STORE_DWORD_SADDR renamable $vgpr0, renamable $vgpr1, renamable $sgpr2_sgpr3, 0, 16, implicit $exec
; CHECK-NEXT: S_CBRANCH_SCC0 %bb.1, implicit killed $scc
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: bb.2:
; CHECK-NEXT: S_ENDPGM 0
bb.0:
S_WAIT_LOADCNT_soft 0
S_WAIT_STORECNT_soft 0
S_WAIT_DSCNT_soft 0
S_CMP_EQ_U32 renamable $sgpr1, 0, implicit-def $scc
S_CBRANCH_SCC1 %bb.2, implicit killed $scc
bb.1:
GLOBAL_WBINV 16, implicit $exec
S_WAIT_LOADCNT_soft 0
S_WAIT_STORECNT_soft 0
GLOBAL_STORE_DWORD_SADDR renamable $vgpr0, renamable $vgpr1, renamable $sgpr2_sgpr3, 0, 16, implicit $exec
S_CBRANCH_SCC0 %bb.1, implicit killed $scc
bb.2:
S_ENDPGM 0
...
---
name: inv_loadcnt
body: |
; CHECK-LABEL: name: inv_loadcnt
; CHECK: bb.0:
; CHECK-NEXT: successors: %bb.2(0x40000000), %bb.1(0x40000000)
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: S_WAIT_LOADCNT_DSCNT 0
; CHECK-NEXT: S_WAIT_EXPCNT 0
; CHECK-NEXT: S_WAIT_SAMPLECNT 0
; CHECK-NEXT: S_WAIT_BVHCNT 0
; CHECK-NEXT: S_WAIT_KMCNT 0
; CHECK-NEXT: S_WAIT_STORECNT 0
; CHECK-NEXT: S_CMP_EQ_U32 renamable $sgpr1, 0, implicit-def $scc
; CHECK-NEXT: S_CBRANCH_SCC1 %bb.2, implicit killed $scc
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: bb.1:
; CHECK-NEXT: successors: %bb.1(0x40000000), %bb.2(0x40000000)
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: GLOBAL_INV 16, implicit $exec
; CHECK-NEXT: S_WAIT_LOADCNT 0
; CHECK-NEXT: GLOBAL_STORE_DWORD_SADDR renamable $vgpr0, renamable $vgpr1, renamable $sgpr2_sgpr3, 0, 16, implicit $exec
; CHECK-NEXT: S_CBRANCH_SCC0 %bb.1, implicit killed $scc
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: bb.2:
; CHECK-NEXT: S_ENDPGM 0
bb.0:
S_WAIT_LOADCNT_soft 0
S_WAIT_STORECNT_soft 0
S_WAIT_DSCNT_soft 0
S_CMP_EQ_U32 renamable $sgpr1, 0, implicit-def $scc
S_CBRANCH_SCC1 %bb.2, implicit killed $scc
bb.1:
GLOBAL_INV 16, implicit $exec
S_WAIT_LOADCNT_soft 0
S_WAIT_STORECNT_soft 0
GLOBAL_STORE_DWORD_SADDR renamable $vgpr0, renamable $vgpr1, renamable $sgpr2_sgpr3, 0, 16, implicit $exec
S_CBRANCH_SCC0 %bb.1, implicit killed $scc
bb.2:
S_ENDPGM 0
...