ALU2(DPH)
ALU2(DP3)
ALU2(DP2)
-ALU3F(MAD)
+ALU3(MAD)
ALU3F(LRP)
ALU1(BFREV)
ALU3(BFE)
struct brw_reg surface,
unsigned atomic_op,
unsigned msg_length,
- bool response_expected)
+ bool response_expected,
+ bool header_present)
{
const struct gen_device_info *devinfo = p->devinfo;
const unsigned sfid = (devinfo->gen >= 8 || devinfo->is_haswell ?
p, sfid, brw_writemask(dst, mask), payload, surface, msg_length,
brw_surface_payload_size(p, response_expected,
devinfo->gen >= 8 || devinfo->is_haswell, true),
- align1);
+ header_present);
brw_set_dp_untyped_atomic_message(
p, insn, atomic_op, response_expected);
struct brw_reg payload,
struct brw_reg surface,
unsigned msg_length,
- unsigned num_channels)
+ unsigned num_channels,
+ bool header_present)
{
const struct gen_device_info *devinfo = p->devinfo;
const unsigned sfid = (devinfo->gen >= 8 || devinfo->is_haswell ?
WRITEMASK_X : WRITEMASK_XYZW;
struct brw_inst *insn = brw_send_indirect_surface_message(
p, sfid, brw_writemask(brw_null_reg(), mask),
- payload, surface, msg_length, 0, align1);
+ payload, surface, msg_length, 0, header_present);
brw_set_dp_untyped_surface_write_message(
p, insn, num_channels);
struct brw_reg payload,
struct brw_reg surface,
unsigned msg_length,
- unsigned bit_size)
+ unsigned bit_size,
+ bool header_present)
{
const struct gen_device_info *devinfo = p->devinfo;
assert(devinfo->gen > 7 || devinfo->is_haswell);
struct brw_inst *insn = brw_send_indirect_surface_message(
p, sfid, brw_writemask(brw_null_reg(), WRITEMASK_XYZW),
- payload, surface, msg_length, 0, true);
+ payload, surface, msg_length, 0, header_present);
unsigned msg_control =
brw_byte_scattered_data_element_from_bit_size(bit_size) << 2;
struct brw_reg surface,
unsigned atomic_op,
unsigned msg_length,
- bool response_expected) {
+ bool response_expected,
+ bool header_present) {
const struct gen_device_info *devinfo = p->devinfo;
const unsigned sfid = (devinfo->gen >= 8 || devinfo->is_haswell ?
HSW_SFID_DATAPORT_DATA_CACHE_1 :
p, sfid, brw_writemask(dst, mask), payload, surface, msg_length,
brw_surface_payload_size(p, response_expected,
devinfo->gen >= 8 || devinfo->is_haswell, false),
- true);
+ header_present);
brw_set_dp_typed_atomic_message(
p, insn, atomic_op, response_expected);
struct brw_reg payload,
struct brw_reg surface,
unsigned msg_length,
- unsigned num_channels)
+ unsigned num_channels,
+ bool header_present)
{
const struct gen_device_info *devinfo = p->devinfo;
const unsigned sfid = (devinfo->gen >= 8 || devinfo->is_haswell ?
p, sfid, dst, payload, surface, msg_length,
brw_surface_payload_size(p, num_channels,
devinfo->gen >= 8 || devinfo->is_haswell, false),
- true);
+ header_present);
brw_set_dp_typed_surface_read_message(
p, insn, num_channels);
struct brw_reg payload,
struct brw_reg surface,
unsigned msg_length,
- unsigned num_channels)
+ unsigned num_channels,
+ bool header_present)
{
const struct gen_device_info *devinfo = p->devinfo;
const unsigned sfid = (devinfo->gen >= 8 || devinfo->is_haswell ?
WRITEMASK_X : WRITEMASK_XYZW);
struct brw_inst *insn = brw_send_indirect_surface_message(
p, sfid, brw_writemask(brw_null_reg(), mask),
- payload, surface, msg_length, 0, true);
+ payload, surface, msg_length, 0, header_present);
brw_set_dp_typed_surface_write_message(
p, insn, num_channels);
*/
inst = brw_FBL(p, vec1(dst), exec_mask);
} else {
- const struct brw_reg flag = brw_flag_reg(1, 0);
+ const struct brw_reg flag = brw_flag_reg(
+ brw_inst_flag_reg_nr(devinfo, p->current),
+ brw_inst_flag_subreg_nr(devinfo, p->current));
brw_set_default_exec_size(p, BRW_EXECUTE_1);
brw_MOV(p, retype(flag, BRW_REGISTER_TYPE_UD), brw_imm_ud(0));
brw_inst_set_mask_control(devinfo, inst, BRW_MASK_ENABLE);
brw_inst_set_group(devinfo, inst, lower_size * i + 8 * qtr_control);
brw_inst_set_cond_modifier(devinfo, inst, BRW_CONDITIONAL_Z);
- brw_inst_set_flag_reg_nr(devinfo, inst, 1);
brw_inst_set_exec_size(devinfo, inst, cvt(lower_size) - 1);
}