mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-24 21:50:12 +01:00
aubinator: Make gen_disasm_disassemble handle split sends
Skylake adds new SENDS and SENDSC opcodes, which should be handled in the send-with-EOT check. Make an is_send() helper that checks if the opcode is SEND/SENDC/SENDS/SENDSC (Ken) v2: Make is_send() much more crispier, Mix declaration and code to make the code compact (Ken) Signed-off-by: Sirisha Gandikota <Sirisha.Gandikota@intel.com> Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
This commit is contained in:
parent
5d2440532f
commit
1ab92d80a8
1 changed files with 12 additions and 7 deletions
|
|
@ -35,6 +35,15 @@ struct gen_disasm {
|
|||
struct gen_device_info devinfo;
|
||||
};
|
||||
|
||||
static bool
|
||||
is_send(uint32_t opcode)
|
||||
{
|
||||
return (opcode == BRW_OPCODE_SEND ||
|
||||
opcode == BRW_OPCODE_SENDC ||
|
||||
opcode == BRW_OPCODE_SENDS ||
|
||||
opcode == BRW_OPCODE_SENDSC );
|
||||
}
|
||||
|
||||
void
|
||||
gen_disasm_disassemble(struct gen_disasm *disasm, void *assembly, int start,
|
||||
int end, FILE *out)
|
||||
|
|
@ -74,14 +83,10 @@ gen_disasm_disassemble(struct gen_disasm *disasm, void *assembly, int start,
|
|||
brw_disassemble_inst(out, devinfo, insn, compacted);
|
||||
|
||||
/* Simplistic, but efficient way to terminate disasm */
|
||||
if (brw_inst_opcode(devinfo, insn) == BRW_OPCODE_SEND ||
|
||||
brw_inst_opcode(devinfo, insn) == BRW_OPCODE_SENDC) {
|
||||
if (brw_inst_eot(devinfo, insn))
|
||||
break;
|
||||
}
|
||||
|
||||
if (brw_inst_opcode(devinfo, insn) == 0)
|
||||
uint32_t opcode = brw_inst_opcode(devinfo, insn);
|
||||
if (opcode == 0 || (is_send(opcode) && brw_inst_eot(devinfo, insn))) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue