aco: fix VOP3P assembly, VN and validation
aco/opcodes: rename v_pk_fma_mix* -> v_fma_mix* and add modifier capabilities for VOP3P. Reviewed-by: Rhys Perry <pendingchaos02@gmail.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6680>
This commit is contained in:
committed by
Marge Bot
parent
2bde971f46
commit
2caba08c1a
@@ -240,12 +240,13 @@ bool validate_ir(Program* program)
|
||||
instr->format == Format::VOP1 ||
|
||||
instr->format == Format::VOP2 ||
|
||||
instr->format == Format::VOPC ||
|
||||
(instr->isVOP3() && program->chip_class >= GFX10),
|
||||
(instr->isVOP3() && program->chip_class >= GFX10) ||
|
||||
(instr->format == Format::VOP3P && program->chip_class >= GFX10),
|
||||
"Literal applied on wrong instruction format", instr.get());
|
||||
|
||||
check(literal.isUndefined() || (literal.size() == op.size() && literal.constantValue() == op.constantValue()), "Only 1 Literal allowed", instr.get());
|
||||
literal = op;
|
||||
check(!instr->isVALU() || instr->isVOP3() || i == 0 || i == 2, "Wrong source position for Literal argument", instr.get());
|
||||
check(instr->isSALU() || instr->isVOP3() || instr->format == Format::VOP3P || i == 0 || i == 2, "Wrong source position for Literal argument", instr.get());
|
||||
}
|
||||
|
||||
/* check num sgprs for VALU */
|
||||
@@ -257,7 +258,7 @@ bool validate_ir(Program* program)
|
||||
if (program->chip_class >= GFX10 && !is_shift64)
|
||||
const_bus_limit = 2;
|
||||
|
||||
uint32_t scalar_mask = instr->isVOP3() ? 0x7 : 0x5;
|
||||
uint32_t scalar_mask = instr->isVOP3() || instr->format == Format::VOP3P ? 0x7 : 0x5;
|
||||
if (instr->isSDWA())
|
||||
scalar_mask = program->chip_class >= GFX9 ? 0x7 : 0x4;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user