Mesa (staging/20.1): aco: check instruction format before waiting for a previous SMEM store

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Sun May 31 23:07:48 UTC 2020


Module: Mesa
Branch: staging/20.1
Commit: 36ac686dc523a5d3cbc10a2a20aab430b212ead5
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=36ac686dc523a5d3cbc10a2a20aab430b212ead5

Author: Rhys Perry <pendingchaos02 at gmail.com>
Date:   Wed Apr 29 17:47:50 2020 +0100

aco: check instruction format before waiting for a previous SMEM store

Totals from 7 (0.01% of 127638) affected shaders:
CodeSize: 40336 -> 40320 (-0.04%)
Instrs: 7807 -> 7803 (-0.05%)
Cycles: 118588 -> 118344 (-0.21%); split: -0.23%, +0.02%
SMEM: 331 -> 339 (+2.42%)

Signed-off-by: Rhys Perry <pendingchaos02 at gmail.com>
Fixes: 1749953ea3 ('aco/gfx10: Wait for pending SMEM stores before loads')
Reviewed-by: Daniel Schürmann <daniel at schuermann.dev>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4880>
(cherry picked from commit 95d5c1b8a1ebe4a2ce47206b9ff0af4fbfd5a31a)

---

 .pick_status.json                       | 2 +-
 src/amd/compiler/aco_insert_waitcnt.cpp | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/.pick_status.json b/.pick_status.json
index 259a14649a6..3b98d1691c2 100644
--- a/.pick_status.json
+++ b/.pick_status.json
@@ -850,7 +850,7 @@
         "description": "aco: check instruction format before waiting for a previous SMEM store",
         "nominated": true,
         "nomination_type": 1,
-        "resolution": 0,
+        "resolution": 1,
         "master_sha": null,
         "because_sha": "1749953ea3eb2f3e33a61243cc11860795c658f3"
     },
diff --git a/src/amd/compiler/aco_insert_waitcnt.cpp b/src/amd/compiler/aco_insert_waitcnt.cpp
index e4087e7add5..bc16fceaa9a 100644
--- a/src/amd/compiler/aco_insert_waitcnt.cpp
+++ b/src/amd/compiler/aco_insert_waitcnt.cpp
@@ -457,7 +457,7 @@ wait_imm kill(Instruction* instr, wait_ctx& ctx)
       imm.lgkm = 0;
    }
 
-   if (ctx.chip_class >= GFX10) {
+   if (ctx.chip_class >= GFX10 && instr->format == Format::SMEM) {
       /* GFX10: A store followed by a load at the same address causes a problem because
        * the load doesn't load the correct values unless we wait for the store first.
        * This is NOT mitigated by an s_nop.



More information about the mesa-commit mailing list