aco: add p_dual_src_export_gfx11 for dual source blending on GFX11
Dual source blending must be in strict WQM mode. Cc: 22.3 mesa-stable 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/19643>
This commit is contained in:
committed by
Marge Bot
parent
e93de8a75e
commit
bb90d29660
@@ -262,6 +262,7 @@ validate_ir(Program* program)
|
||||
bool can_be_undef = is_phi(instr) || instr->isEXP() || instr->isReduction() ||
|
||||
instr->opcode == aco_opcode::p_create_vector ||
|
||||
instr->opcode == aco_opcode::p_jump_to_epilog ||
|
||||
instr->opcode == aco_opcode::p_dual_src_export_gfx11 ||
|
||||
(instr->opcode == aco_opcode::p_interp_gfx11 && i == 0) ||
|
||||
(flat && i == 1) || (instr->isMIMG() && (i == 1 || i == 2)) ||
|
||||
((instr->isMUBUF() || instr->isMTBUF()) && i == 1) ||
|
||||
@@ -526,6 +527,26 @@ validate_ir(Program* program)
|
||||
instr->operands[i].isUndefined(),
|
||||
"Other operands of p_jump_to_epilog must be VGPRs or undef", instr.get());
|
||||
}
|
||||
} else if (instr->opcode == aco_opcode::p_dual_src_export_gfx11) {
|
||||
check(instr->definitions.size() == 6,
|
||||
"p_dual_src_export_gfx11 must have 6 definitions", instr.get());
|
||||
check(instr->definitions[2].getTemp().type() == RegType::vgpr &&
|
||||
instr->definitions[2].getTemp().size() == 1,
|
||||
"Third definition of p_dual_src_export_gfx11 must be a v1", instr.get());
|
||||
check(instr->definitions[3].getTemp().type() == RegType::sgpr &&
|
||||
instr->definitions[3].getTemp().size() == 2,
|
||||
"Fourth definition of p_dual_src_export_gfx11 must be a s2", instr.get());
|
||||
check(instr->definitions[4].physReg() == vcc,
|
||||
"Fifth definition of p_dual_src_export_gfx11 must be vcc", instr.get());
|
||||
check(instr->definitions[5].physReg() == scc,
|
||||
"Sixth definition of p_dual_src_export_gfx11 must be scc", instr.get());
|
||||
check(instr->operands.size() == 8, "p_dual_src_export_gfx11 must have 8 operands",
|
||||
instr.get());
|
||||
for (unsigned i = 0; i < instr->operands.size(); i++) {
|
||||
check(instr->operands[i].getTemp().type() == RegType::vgpr ||
|
||||
instr->operands[i].isUndefined(),
|
||||
"Operands of p_dual_src_export_gfx11 must be VGPRs or undef", instr.get());
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user