aco: consider SDWA during value numbering

Signed-off-by: Rhys Perry <pendingchaos02@gmail.com>
Fixes: 23ac24f5b1
   ('aco: add missing conversion operations for small bitsizes')

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5164>
(cherry picked from commit 5ccc7c277c)
This commit is contained in:
Rhys Perry 2020-05-22 15:42:39 +01:00 committed by Eric Engestrom
parent aa7b5b52c0
commit 7ff34259f1
2 changed files with 18 additions and 1 deletions

View file

@ -4063,7 +4063,7 @@
"description": "aco: consider SDWA during value numbering",
"nominated": true,
"nomination_type": 1,
"resolution": 0,
"resolution": 1,
"master_sha": null,
"because_sha": "23ac24f5b1fdde73cf8ec1ef6cbe08d73d6776f5"
},

View file

@ -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: {