Mesa (staging/20.1): aco: consider SDWA during value numbering
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Sun May 31 23:07:48 UTC 2020
Module: Mesa
Branch: staging/20.1
Commit: 9509a4815968101fac7796e31f5ded4f0bf4128b
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=9509a4815968101fac7796e31f5ded4f0bf4128b
Author: Rhys Perry <pendingchaos02 at gmail.com>
Date: Fri May 22 15:42:39 2020 +0100
aco: consider SDWA during value numbering
Signed-off-by: Rhys Perry <pendingchaos02 at gmail.com>
Fixes: 23ac24f5b1fdde73cf8ec1ef6cbe08d73d6776f5
('aco: add missing conversion operations for small bitsizes')
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5164>
(cherry picked from commit 5ccc7c277c86f754f40515820b27b55296107c54)
---
.pick_status.json | 2 +-
src/amd/compiler/aco_opt_value_numbering.cpp | 17 +++++++++++++++++
2 files changed, 18 insertions(+), 1 deletion(-)
diff --git a/.pick_status.json b/.pick_status.json
index d16fcb5a449..259a14649a6 100644
--- a/.pick_status.json
+++ b/.pick_status.json
@@ -859,7 +859,7 @@
"description": "aco: consider SDWA during value numbering",
"nominated": true,
"nomination_type": 1,
- "resolution": 0,
+ "resolution": 1,
"master_sha": null,
"because_sha": "23ac24f5b1fdde73cf8ec1ef6cbe08d73d6776f5"
},
diff --git a/src/amd/compiler/aco_opt_value_numbering.cpp b/src/amd/compiler/aco_opt_value_numbering.cpp
index 4ab3d6d56e5..487d1588128 100644
--- a/src/amd/compiler/aco_opt_value_numbering.cpp
+++ b/src/amd/compiler/aco_opt_value_numbering.cpp
@@ -86,6 +86,9 @@ struct InstrHash {
if (instr->isDPP())
return hash_murmur_32<DPP_instruction>(instr);
+ if (instr->isSDWA())
+ return hash_murmur_32<SDWA_instruction>(instr);
+
switch (instr->format) {
case Format::SMEM:
return hash_murmur_32<SMEM_instruction>(instr);
@@ -199,6 +202,20 @@ struct InstrPred {
aDPP->neg[0] == bDPP->neg[0] &&
aDPP->neg[1] == bDPP->neg[1];
}
+ if (a->isSDWA()) {
+ SDWA_instruction* aSDWA = static_cast<SDWA_instruction*>(a);
+ SDWA_instruction* bSDWA = static_cast<SDWA_instruction*>(b);
+ return aSDWA->sel[0] == bSDWA->sel[0] &&
+ aSDWA->sel[1] == bSDWA->sel[1] &&
+ aSDWA->dst_sel == bSDWA->dst_sel &&
+ aSDWA->abs[0] == bSDWA->abs[0] &&
+ aSDWA->abs[1] == bSDWA->abs[1] &&
+ aSDWA->neg[0] == bSDWA->neg[0] &&
+ aSDWA->neg[1] == bSDWA->neg[1] &&
+ aSDWA->dst_preserve == bSDWA->dst_preserve &&
+ aSDWA->clamp == bSDWA->clamp &&
+ aSDWA->omod == bSDWA->omod;
+ }
switch (a->format) {
case Format::SOPK: {
More information about the mesa-commit
mailing list