Mesa (master): aco: fix subdword copies on GFX6-GFX7
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Wed Jun 3 18:29:40 UTC 2020
Module: Mesa
Branch: master
Commit: f31c9b4edf6e8d972f26461c49c5e193bf6d9a13
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=f31c9b4edf6e8d972f26461c49c5e193bf6d9a13
Author: Samuel Pitoiset <samuel.pitoiset at gmail.com>
Date: Tue May 26 09:38:27 2020 +0200
aco: fix subdword copies on GFX6-GFX7
SDWA is only GFX8+. Use v_mov_b32 since the upper 16 bits don't matter.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset at gmail.com>
Reviewed-by: Rhys Perry <pendingchaos02 at gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5227>
---
src/amd/compiler/aco_builder_h.py | 18 +++++++++++-------
1 file changed, 11 insertions(+), 7 deletions(-)
diff --git a/src/amd/compiler/aco_builder_h.py b/src/amd/compiler/aco_builder_h.py
index 2b56e04e501..eb655471c90 100644
--- a/src/amd/compiler/aco_builder_h.py
+++ b/src/amd/compiler/aco_builder_h.py
@@ -382,13 +382,17 @@ public:
} else if (op.bytes() > 2) {
return pseudo(aco_opcode::p_create_vector, dst, op);
} else if (dst.regClass().is_subdword()) {
- aco_ptr<SDWA_instruction> sdwa{create_instruction<SDWA_instruction>(aco_opcode::v_mov_b32, asSDWA(Format::VOP1), 1, 1)};
- sdwa->operands[0] = op;
- sdwa->definitions[0] = dst;
- sdwa->sel[0] = op.bytes() == 1 ? sdwa_ubyte : sdwa_uword;
- sdwa->dst_sel = dst.bytes() == 1 ? sdwa_ubyte : sdwa_uword;
- sdwa->dst_preserve = true;
- return insert(std::move(sdwa));
+ if (program->chip_class >= GFX8) {
+ aco_ptr<SDWA_instruction> sdwa{create_instruction<SDWA_instruction>(aco_opcode::v_mov_b32, asSDWA(Format::VOP1), 1, 1)};
+ sdwa->operands[0] = op;
+ sdwa->definitions[0] = dst;
+ sdwa->sel[0] = op.bytes() == 1 ? sdwa_ubyte : sdwa_uword;
+ sdwa->dst_sel = dst.bytes() == 1 ? sdwa_ubyte : sdwa_uword;
+ sdwa->dst_preserve = true;
+ return insert(std::move(sdwa));
+ } else {
+ return vop1(aco_opcode::v_mov_b32, dst, op);
+ }
} else {
unreachable("Unhandled case in bld.copy()");
}
More information about the mesa-commit
mailing list