aco/gfx10: Wait for pending SMEM stores before loads
authorTimur Kristóf <timur.kristof@gmail.com>
Mon, 14 Oct 2019 13:18:31 +0000 (15:18 +0200)
committerRhys Perry <pendingchaos02@gmail.com>
Mon, 21 Oct 2019 14:33:54 +0000 (14:33 +0000)
commit1749953ea3eb2f3e33a61243cc11860795c658f3
treeb73cbc03241c73ffcee293fa51b23228a9460e64
parent7fa5cd3ee365ed35c5799b96d7867b6ebded4fdd
aco/gfx10: Wait for pending SMEM stores before loads

Currently if you have an SMEM store followed by an SMEM load that
loads the same location as was written, it won't work because the
store isn't finished before the load is executed. This is NOT
mitigated by an s_nop instruction on GFX10.

Since we currently don't have proper alias analysis, this commit adds
a workaround which will insert an s_waitcnt lgkmcnt(0) before each
SSBO load if they follow a store. We should further refine this in
the future when we can make sure to only add the wait when we load the
same thing as has been stored.

Signed-off-by: Timur Kristóf <timur.kristof@gmail.com>
Reviewed-by: Daniel Schürmann <daniel@schuermann.dev>
src/amd/compiler/README
src/amd/compiler/aco_insert_waitcnt.cpp