Skip to content

Commit c8e9def

Browse files
committed
[AMDGPU][InsertWaitCnts] Add test for global_wb/inv/wbinv tracking
1 parent 587206a commit c8e9def

File tree

1 file changed

+129
-0
lines changed

1 file changed

+129
-0
lines changed
Lines changed: 129 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,129 @@
1+
# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 5
2+
# RUN: llc -mtriple=amdgcn -mcpu=gfx1200 -run-pass si-insert-waitcnts -o - %s | FileCheck %s
3+
4+
5+
# Check storecnt is not eliminated after global_wb/wbinv or
6+
# loadcnt after inv.
7+
---
8+
9+
name: wb_storecnt
10+
body: |
11+
; CHECK-LABEL: name: wb_storecnt
12+
; CHECK: bb.0:
13+
; CHECK-NEXT: successors: %bb.2(0x40000000), %bb.1(0x40000000)
14+
; CHECK-NEXT: {{ $}}
15+
; CHECK-NEXT: S_WAIT_LOADCNT_DSCNT 0
16+
; CHECK-NEXT: S_WAIT_EXPCNT 0
17+
; CHECK-NEXT: S_WAIT_SAMPLECNT 0
18+
; CHECK-NEXT: S_WAIT_BVHCNT 0
19+
; CHECK-NEXT: S_WAIT_KMCNT 0
20+
; CHECK-NEXT: S_WAIT_STORECNT 0
21+
; CHECK-NEXT: S_CMP_EQ_U32 renamable $sgpr1, 0, implicit-def $scc
22+
; CHECK-NEXT: S_CBRANCH_SCC1 %bb.2, implicit killed $scc
23+
; CHECK-NEXT: {{ $}}
24+
; CHECK-NEXT: bb.1:
25+
; CHECK-NEXT: successors: %bb.1(0x40000000), %bb.2(0x40000000)
26+
; CHECK-NEXT: {{ $}}
27+
; CHECK-NEXT: GLOBAL_WB 16, implicit $exec
28+
; CHECK-NEXT: GLOBAL_STORE_DWORD_SADDR renamable $vgpr0, renamable $vgpr1, renamable $sgpr2_sgpr3, 0, 16, implicit $exec
29+
; CHECK-NEXT: S_CBRANCH_SCC0 %bb.1, implicit killed $scc
30+
; CHECK-NEXT: {{ $}}
31+
; CHECK-NEXT: bb.2:
32+
; CHECK-NEXT: S_ENDPGM 0
33+
bb.0:
34+
S_WAIT_LOADCNT_soft 0
35+
S_WAIT_STORECNT_soft 0
36+
S_WAIT_DSCNT_soft 0
37+
S_CMP_EQ_U32 renamable $sgpr1, 0, implicit-def $scc
38+
S_CBRANCH_SCC1 %bb.2, implicit killed $scc
39+
bb.1:
40+
GLOBAL_WB 16, implicit $exec
41+
S_WAIT_LOADCNT_soft 0
42+
S_WAIT_STORECNT_soft 0
43+
GLOBAL_STORE_DWORD_SADDR renamable $vgpr0, renamable $vgpr1, renamable $sgpr2_sgpr3, 0, 16, implicit $exec
44+
S_CBRANCH_SCC0 %bb.1, implicit killed $scc
45+
bb.2:
46+
S_ENDPGM 0
47+
...
48+
---
49+
50+
name: wbinv_storecnt
51+
body: |
52+
; CHECK-LABEL: name: wbinv_storecnt
53+
; CHECK: bb.0:
54+
; CHECK-NEXT: successors: %bb.2(0x40000000), %bb.1(0x40000000)
55+
; CHECK-NEXT: {{ $}}
56+
; CHECK-NEXT: S_WAIT_LOADCNT_DSCNT 0
57+
; CHECK-NEXT: S_WAIT_EXPCNT 0
58+
; CHECK-NEXT: S_WAIT_SAMPLECNT 0
59+
; CHECK-NEXT: S_WAIT_BVHCNT 0
60+
; CHECK-NEXT: S_WAIT_KMCNT 0
61+
; CHECK-NEXT: S_WAIT_STORECNT 0
62+
; CHECK-NEXT: S_CMP_EQ_U32 renamable $sgpr1, 0, implicit-def $scc
63+
; CHECK-NEXT: S_CBRANCH_SCC1 %bb.2, implicit killed $scc
64+
; CHECK-NEXT: {{ $}}
65+
; CHECK-NEXT: bb.1:
66+
; CHECK-NEXT: successors: %bb.1(0x40000000), %bb.2(0x40000000)
67+
; CHECK-NEXT: {{ $}}
68+
; CHECK-NEXT: GLOBAL_WBINV 16, implicit $exec
69+
; CHECK-NEXT: GLOBAL_STORE_DWORD_SADDR renamable $vgpr0, renamable $vgpr1, renamable $sgpr2_sgpr3, 0, 16, implicit $exec
70+
; CHECK-NEXT: S_CBRANCH_SCC0 %bb.1, implicit killed $scc
71+
; CHECK-NEXT: {{ $}}
72+
; CHECK-NEXT: bb.2:
73+
; CHECK-NEXT: S_ENDPGM 0
74+
bb.0:
75+
S_WAIT_LOADCNT_soft 0
76+
S_WAIT_STORECNT_soft 0
77+
S_WAIT_DSCNT_soft 0
78+
S_CMP_EQ_U32 renamable $sgpr1, 0, implicit-def $scc
79+
S_CBRANCH_SCC1 %bb.2, implicit killed $scc
80+
bb.1:
81+
GLOBAL_WBINV 16, implicit $exec
82+
S_WAIT_LOADCNT_soft 0
83+
S_WAIT_STORECNT_soft 0
84+
GLOBAL_STORE_DWORD_SADDR renamable $vgpr0, renamable $vgpr1, renamable $sgpr2_sgpr3, 0, 16, implicit $exec
85+
S_CBRANCH_SCC0 %bb.1, implicit killed $scc
86+
bb.2:
87+
S_ENDPGM 0
88+
...
89+
---
90+
91+
name: inv_loadcnt
92+
body: |
93+
; CHECK-LABEL: name: inv_loadcnt
94+
; CHECK: bb.0:
95+
; CHECK-NEXT: successors: %bb.2(0x40000000), %bb.1(0x40000000)
96+
; CHECK-NEXT: {{ $}}
97+
; CHECK-NEXT: S_WAIT_LOADCNT_DSCNT 0
98+
; CHECK-NEXT: S_WAIT_EXPCNT 0
99+
; CHECK-NEXT: S_WAIT_SAMPLECNT 0
100+
; CHECK-NEXT: S_WAIT_BVHCNT 0
101+
; CHECK-NEXT: S_WAIT_KMCNT 0
102+
; CHECK-NEXT: S_WAIT_STORECNT 0
103+
; CHECK-NEXT: S_CMP_EQ_U32 renamable $sgpr1, 0, implicit-def $scc
104+
; CHECK-NEXT: S_CBRANCH_SCC1 %bb.2, implicit killed $scc
105+
; CHECK-NEXT: {{ $}}
106+
; CHECK-NEXT: bb.1:
107+
; CHECK-NEXT: successors: %bb.1(0x40000000), %bb.2(0x40000000)
108+
; CHECK-NEXT: {{ $}}
109+
; CHECK-NEXT: GLOBAL_INV 16, implicit $exec
110+
; CHECK-NEXT: GLOBAL_STORE_DWORD_SADDR renamable $vgpr0, renamable $vgpr1, renamable $sgpr2_sgpr3, 0, 16, implicit $exec
111+
; CHECK-NEXT: S_CBRANCH_SCC0 %bb.1, implicit killed $scc
112+
; CHECK-NEXT: {{ $}}
113+
; CHECK-NEXT: bb.2:
114+
; CHECK-NEXT: S_ENDPGM 0
115+
bb.0:
116+
S_WAIT_LOADCNT_soft 0
117+
S_WAIT_STORECNT_soft 0
118+
S_WAIT_DSCNT_soft 0
119+
S_CMP_EQ_U32 renamable $sgpr1, 0, implicit-def $scc
120+
S_CBRANCH_SCC1 %bb.2, implicit killed $scc
121+
bb.1:
122+
GLOBAL_INV 16, implicit $exec
123+
S_WAIT_LOADCNT_soft 0
124+
S_WAIT_STORECNT_soft 0
125+
GLOBAL_STORE_DWORD_SADDR renamable $vgpr0, renamable $vgpr1, renamable $sgpr2_sgpr3, 0, 16, implicit $exec
126+
S_CBRANCH_SCC0 %bb.1, implicit killed $scc
127+
bb.2:
128+
S_ENDPGM 0
129+
...

0 commit comments

Comments
 (0)