intel/eu/gen12: Use SEND instruction for split sends.
authorFrancisco Jerez <currojerez@riseup.net>
Mon, 26 Aug 2019 01:12:35 +0000 (18:12 -0700)
committerFrancisco Jerez <currojerez@riseup.net>
Fri, 11 Oct 2019 19:24:16 +0000 (12:24 -0700)
The new SEND instruction behaves like the former SENDS instruction.
The original single-payload SEND instruction is gone.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
src/intel/compiler/brw_eu_emit.c
src/intel/compiler/brw_fs_generator.cpp

index 6a576edae1f7720a2818979014161e6e210185f4..42dc2617fb0642f2a22e6073c96dfdfff621dd9c 100644 (file)
@@ -2688,7 +2688,7 @@ brw_send_indirect_split_message(struct brw_codegen *p,
       ex_desc = addr;
    }
 
-   send = next_insn(p, BRW_OPCODE_SENDS);
+   send = next_insn(p, devinfo->gen >= 12 ? BRW_OPCODE_SEND : BRW_OPCODE_SENDS);
    brw_set_dest(p, send, dst);
    brw_set_src0(p, send, retype(payload0, BRW_REGISTER_TYPE_UD));
    brw_set_src1(p, send, retype(payload1, BRW_REGISTER_TYPE_UD));
index f05468e73550099e7ebcaa42857a752b478f246b..4b7b3183ef7517e606fd26b07779bad8b1a86eea 100644 (file)
@@ -285,7 +285,8 @@ fs_generator::generate_send(fs_inst *inst,
                                       desc, desc_imm, ex_desc, ex_desc_imm,
                                       inst->eot);
       if (inst->check_tdr)
-         brw_inst_set_opcode(p->devinfo, brw_last_inst, BRW_OPCODE_SENDSC);
+         brw_inst_set_opcode(p->devinfo, brw_last_inst,
+                             devinfo->gen >= 12 ? BRW_OPCODE_SENDC : BRW_OPCODE_SENDSC);
    } else {
       brw_send_indirect_message(p, inst->sfid, dst, payload, desc, desc_imm,
                                    inst->eot);