Mesa (master): aco: fix constant folding of SMRD instructions on GFX6

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Mon Jan 20 16:46:07 UTC 2020


Module: Mesa
Branch: master
Commit: b8abfafe8690847dc09bb63a5674dc2e2228a56a
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=b8abfafe8690847dc09bb63a5674dc2e2228a56a

Author: Samuel Pitoiset <samuel.pitoiset at gmail.com>
Date:   Thu Jan 16 14:04:49 2020 +0100

aco: fix constant folding of SMRD instructions on GFX6

SMRD instructions have an 8-bit dword offset on SI.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset at gmail.com>
Reviewed-By: Timur Kristóf <timur.kristof at gmail.com>
Reviewed-by: Daniel Schürmann <daniel at schuermann.dev>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3432>

---

 src/amd/compiler/aco_optimizer.cpp | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/src/amd/compiler/aco_optimizer.cpp b/src/amd/compiler/aco_optimizer.cpp
index 8c2514598f0..7e05204d3b5 100644
--- a/src/amd/compiler/aco_optimizer.cpp
+++ b/src/amd/compiler/aco_optimizer.cpp
@@ -817,7 +817,9 @@ void label_instruction(opt_ctx &ctx, Block& block, aco_ptr<Instruction>& instr)
          Temp base;
          uint32_t offset;
          if (i == 1 && info.is_constant_or_literal() &&
-             (ctx.program->chip_class < GFX8 || info.val <= 0xFFFFF)) {
+             ((ctx.program->chip_class == GFX6 && info.val <= 0x3FF) ||
+              (ctx.program->chip_class == GFX7 && info.val <= 0xFFFFFFFF) ||
+              (ctx.program->chip_class >= GFX8 && info.val <= 0xFFFFF))) {
             instr->operands[i] = Operand(info.val);
             continue;
          } else if (i == 1 && parse_base_offset(ctx, instr.get(), i, &base, &offset) && base.regClass() == s1 && offset <= 0xFFFFF && ctx.program->chip_class >= GFX9) {



More information about the mesa-commit mailing list