Mesa (main): aco: don't create v_madmk_f32/v_madak_f32 from v_fma_legacy_f16

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Thu Jul 22 15:59:43 UTC 2021


Module: Mesa
Branch: main
Commit: 211d1dfd34499d57709c15d10bdadc514e9e13c2
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=211d1dfd34499d57709c15d10bdadc514e9e13c2

Author: Rhys Perry <pendingchaos02 at gmail.com>
Date:   Wed Jul 21 20:18:12 2021 +0100

aco: don't create v_madmk_f32/v_madak_f32 from v_fma_legacy_f16

Signed-off-by: Rhys Perry <pendingchaos02 at gmail.com>
Reviewed-by: Daniel Schürmann <daniel at schuermann.dev>
Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/5105
Cc: mesa-stable
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12004>

---

 src/amd/compiler/aco_optimizer.cpp | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/src/amd/compiler/aco_optimizer.cpp b/src/amd/compiler/aco_optimizer.cpp
index f6198e4b465..a4d84a3a4e2 100644
--- a/src/amd/compiler/aco_optimizer.cpp
+++ b/src/amd/compiler/aco_optimizer.cpp
@@ -3760,6 +3760,11 @@ select_instruction(opt_ctx& ctx, aco_ptr<Instruction>& instr)
          if ((instr->opcode == aco_opcode::v_fma_f32 || instr->opcode == aco_opcode::v_fma_f16) &&
              ctx.program->chip_class < GFX10)
             return;
+         /* There are no v_fmaak_legacy_f16/v_fmamk_legacy_f16 and on chips where VOP3 can take
+          * literals (GFX10+), these instructions don't exist.
+          */
+         if (instr->opcode == aco_opcode::v_fma_legacy_f16)
+            return;
 
          bool sgpr_used = false;
          uint32_t literal_idx = 0;



More information about the mesa-commit mailing list