From: Rhys Perry Date: Fri, 3 Jan 2020 17:38:23 +0000 (+0000) Subject: aco: value-number MUBUF instructions X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=21d2799cee8d5fa01b118a8afe595759b4f22cab;p=mesa.git aco: value-number MUBUF instructions We will have to do this when we start creating MUBUF instructions for load_input because NIR might not be able to tell they are identical since it doesn't know whether two vertex attributes have the same offset. No pipeline-db changes. Signed-off-by: Rhys Perry Reviewed-by: Daniel Schürmann Part-of: --- diff --git a/src/amd/compiler/aco_opt_value_numbering.cpp b/src/amd/compiler/aco_opt_value_numbering.cpp index 295a4343854..2f5a3b8eec9 100644 --- a/src/amd/compiler/aco_opt_value_numbering.cpp +++ b/src/amd/compiler/aco_opt_value_numbering.cpp @@ -184,7 +184,6 @@ struct InstrPred { aR->cluster_size == bR->cluster_size; } case Format::MTBUF: { - /* this is fine since they are only used for vertex input fetches */ MTBUF_instruction* aM = static_cast(a); MTBUF_instruction* bM = static_cast(b); return aM->can_reorder && bM->can_reorder && @@ -195,12 +194,27 @@ struct InstrPred { aM->offen == bM->offen && aM->idxen == bM->idxen && aM->glc == bM->glc && + aM->dlc == bM->dlc && aM->slc == bM->slc && aM->tfe == bM->tfe && aM->disable_wqm == bM->disable_wqm; } + case Format::MUBUF: { + MUBUF_instruction* aM = static_cast(a); + MUBUF_instruction* bM = static_cast(b); + return aM->can_reorder && bM->can_reorder && + aM->barrier == bM->barrier && + aM->offset == bM->offset && + aM->offen == bM->offen && + aM->idxen == bM->idxen && + aM->glc == bM->glc && + aM->dlc == bM->dlc && + aM->slc == bM->slc && + aM->tfe == bM->tfe && + aM->lds == bM->lds && + aM->disable_wqm == bM->disable_wqm; + } /* we want to optimize these in NIR and don't hassle with load-store dependencies */ - case Format::MUBUF: case Format::FLAT: case Format::GLOBAL: case Format::SCRATCH: