aco: support DPP8
Reviewed-by: Rhys Perry <pendingchaos02@gmail.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/13971>
This commit is contained in:
committed by
Marge Bot
parent
5c3dfb4ef5
commit
da0412e55b
@@ -662,14 +662,14 @@ emit_instruction(asm_context& ctx, std::vector<uint32_t>& out, Instruction* inst
|
||||
encoding |= vop3.neg_lo[i] << (29 + i);
|
||||
out.push_back(encoding);
|
||||
|
||||
} else if (instr->isDPP()) {
|
||||
} else if (instr->isDPP16()) {
|
||||
assert(ctx.chip_class >= GFX8);
|
||||
DPP_instruction& dpp = instr->dpp();
|
||||
DPP16_instruction& dpp = instr->dpp16();
|
||||
|
||||
/* first emit the instruction without the DPP operand */
|
||||
Operand dpp_op = instr->operands[0];
|
||||
instr->operands[0] = Operand(PhysReg{250}, v1);
|
||||
instr->format = (Format)((uint16_t)instr->format & ~(uint16_t)Format::DPP);
|
||||
instr->format = (Format)((uint16_t)instr->format & ~(uint16_t)Format::DPP16);
|
||||
emit_instruction(ctx, out, instr);
|
||||
uint32_t encoding = (0xF & dpp.row_mask) << 28;
|
||||
encoding |= (0xF & dpp.bank_mask) << 24;
|
||||
@@ -684,6 +684,20 @@ emit_instruction(asm_context& ctx, std::vector<uint32_t>& out, Instruction* inst
|
||||
encoding |= (0xFF) & dpp_op.physReg();
|
||||
out.push_back(encoding);
|
||||
return;
|
||||
} else if (instr->isDPP8()) {
|
||||
assert(ctx.chip_class >= GFX10);
|
||||
DPP8_instruction& dpp = instr->dpp8();
|
||||
|
||||
/* first emit the instruction without the DPP operand */
|
||||
Operand dpp_op = instr->operands[0];
|
||||
instr->operands[0] = Operand(PhysReg{234}, v1);
|
||||
instr->format = (Format)((uint16_t)instr->format & ~(uint16_t)Format::DPP8);
|
||||
emit_instruction(ctx, out, instr);
|
||||
uint32_t encoding = (0xFF) & dpp_op.physReg();
|
||||
for (unsigned i = 0; i < 8; ++i)
|
||||
encoding |= dpp.lane_sel[i] << (8 + i * 3);
|
||||
out.push_back(encoding);
|
||||
return;
|
||||
} else if (instr->isSDWA()) {
|
||||
SDWA_instruction& sdwa = instr->sdwa();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user