mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-24 19:40:10 +01:00
aco: validate v_interp_*_f16 as VOP3 instructions instead of VINTRP
16-bit interp instructions are considered VINTRP by the compiler but they are emitted as VOP3 by the assembler. Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com> Reviewed-by: Rhys Perry <pendingchaos02@gmail.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4966>
This commit is contained in:
parent
3fba5bb9cc
commit
34f2c4dc6a
1 changed files with 13 additions and 2 deletions
|
|
@ -85,8 +85,19 @@ void validate(Program* program, FILE * output)
|
|||
base_format = Format::VOP2;
|
||||
else if ((uint32_t)base_format & (uint32_t)Format::VOPC)
|
||||
base_format = Format::VOPC;
|
||||
else if ((uint32_t)base_format & (uint32_t)Format::VINTRP)
|
||||
base_format = Format::VINTRP;
|
||||
else if ((uint32_t)base_format & (uint32_t)Format::VINTRP) {
|
||||
if (instr->opcode == aco_opcode::v_interp_p1ll_f16 ||
|
||||
instr->opcode == aco_opcode::v_interp_p1lv_f16 ||
|
||||
instr->opcode == aco_opcode::v_interp_p2_legacy_f16 ||
|
||||
instr->opcode == aco_opcode::v_interp_p2_f16) {
|
||||
/* v_interp_*_fp16 are considered VINTRP by the compiler but
|
||||
* they are emitted as VOP3.
|
||||
*/
|
||||
base_format = Format::VOP3;
|
||||
} else {
|
||||
base_format = Format::VINTRP;
|
||||
}
|
||||
}
|
||||
check(base_format == instr_info.format[(int)instr->opcode], "Wrong base format for instruction", instr.get());
|
||||
|
||||
/* check VOP3 modifiers */
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue