intel/disasm/gen12: Disassemble Gen12 SEND instructions.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
This commit is contained in:
Francisco Jerez
2019-08-27 21:52:51 -07:00
parent fd7e21dd90
commit f15e0b3439

View File

@@ -92,8 +92,11 @@ is_send(unsigned opcode)
static bool
is_split_send(UNUSED const struct gen_device_info *devinfo, unsigned opcode)
{
return opcode == BRW_OPCODE_SENDS ||
opcode == BRW_OPCODE_SENDSC;
if (devinfo->gen >= 12)
return is_send(opcode);
else
return opcode == BRW_OPCODE_SENDS ||
opcode == BRW_OPCODE_SENDSC;
}
const char *const conditional_modifier[16] = {
@@ -748,7 +751,11 @@ dest(FILE *file, const struct gen_device_info *devinfo, const brw_inst *inst)
/* These are fixed for split sends */
type = BRW_REGISTER_TYPE_UD;
elem_size = 4;
if (brw_inst_dst_address_mode(devinfo, inst) == BRW_ADDRESS_DIRECT) {
if (devinfo->gen >= 12) {
err |= reg(file, brw_inst_send_dst_reg_file(devinfo, inst),
brw_inst_dst_da_reg_nr(devinfo, inst));
string(file, brw_reg_type_to_letters(type));
} else if (brw_inst_dst_address_mode(devinfo, inst) == BRW_ADDRESS_DIRECT) {
err |= reg(file, brw_inst_send_dst_reg_file(devinfo, inst),
brw_inst_dst_da_reg_nr(devinfo, inst));
unsigned subreg_nr = brw_inst_dst_da16_subreg_nr(devinfo, inst);
@@ -1436,7 +1443,14 @@ static int
src0(FILE *file, const struct gen_device_info *devinfo, const brw_inst *inst)
{
if (is_split_send(devinfo, brw_inst_opcode(devinfo, inst))) {
if (brw_inst_send_src0_address_mode(devinfo, inst) == BRW_ADDRESS_DIRECT) {
if (devinfo->gen >= 12) {
return src_sends_da(file,
devinfo,
BRW_REGISTER_TYPE_UD,
brw_inst_send_src0_reg_file(devinfo, inst),
brw_inst_src0_da_reg_nr(devinfo, inst),
0);
} else if (brw_inst_send_src0_address_mode(devinfo, inst) == BRW_ADDRESS_DIRECT) {
return src_sends_da(file,
devinfo,
BRW_REGISTER_TYPE_UD,