Mesa (main): aco/validate: simplify get_subdword_bytes_written()
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Mon Aug 23 10:48:49 UTC 2021
Module: Mesa
Branch: main
Commit: f6b281a1c2b3dbbb04397641cd18fd0415a08405
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=f6b281a1c2b3dbbb04397641cd18fd0415a08405
Author: Daniel Schürmann <daniel at schuermann.dev>
Date: Fri Aug 13 14:38:40 2021 +0200
aco/validate: simplify get_subdword_bytes_written()
Reviewed-by: Rhys Perry <pendingchaos02 at gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12364>
---
src/amd/compiler/aco_validate.cpp | 27 ++++++++++++---------------
1 file changed, 12 insertions(+), 15 deletions(-)
diff --git a/src/amd/compiler/aco_validate.cpp b/src/amd/compiler/aco_validate.cpp
index 500266f58cf..602c4367348 100644
--- a/src/amd/compiler/aco_validate.cpp
+++ b/src/amd/compiler/aco_validate.cpp
@@ -763,8 +763,17 @@ get_subdword_bytes_written(Program* program, const aco_ptr<Instruction>& instr,
if (instr->isPseudo())
return chip >= GFX8 ? def.bytes() : def.size() * 4u;
- if (instr->isSDWA() && instr->sdwa().dst_sel == (sdwa_isra | def.bytes()))
- return def.bytes();
+ if (instr->isVALU()) {
+ assert(def.bytes() <= 2);
+
+ if (instr->isSDWA() && instr->sdwa().dst_sel == (sdwa_isra | def.bytes()))
+ return def.bytes();
+
+ if (instr_is_16bit(chip, instr->opcode))
+ return 2;
+
+ return 4;
+ }
switch (instr->opcode) {
case aco_opcode::buffer_load_ubyte_d16:
@@ -787,20 +796,8 @@ get_subdword_bytes_written(Program* program, const aco_ptr<Instruction>& instr,
case aco_opcode::global_load_short_d16_hi:
case aco_opcode::ds_read_u8_d16_hi:
case aco_opcode::ds_read_u16_d16_hi: return program->dev.sram_ecc_enabled ? 4 : 2;
- case aco_opcode::v_mad_f16:
- case aco_opcode::v_mad_u16:
- case aco_opcode::v_mad_i16:
- case aco_opcode::v_fma_f16:
- case aco_opcode::v_div_fixup_f16:
- case aco_opcode::v_interp_p2_f16:
- if (chip >= GFX9)
- return 2;
- break;
- default: break;
+ default: return def.size() * 4;
}
-
- return MAX2(chip >= GFX10 ? def.bytes() : 4,
- instr_info.definition_size[(int)instr->opcode] / 8u);
}
} /* end namespace */
More information about the mesa-commit
mailing list