}
void
-fs_visitor::lower_mul_dword_inst(fs_inst *inst, bblock_t *block,
- const fs_builder &ibld)
+fs_visitor::lower_mul_dword_inst(fs_inst *inst, bblock_t *block)
{
+ const fs_builder ibld(this, block, inst);
+
if (inst->src[1].file == IMM && inst->src[1].ud < (1 << 16)) {
/* The MUL instruction isn't commutative. On Gen <= 6, only the low
* 16-bits of src0 are read, and on Gen >= 7 only the low 16-bits of
}
void
-fs_visitor::lower_mulh_inst(fs_inst *inst, bblock_t *block,
- const fs_builder &ibld)
+fs_visitor::lower_mulh_inst(fs_inst *inst, bblock_t *block)
{
+ const fs_builder ibld(this, block, inst);
+
/* According to the BDW+ BSpec page for the "Multiply Accumulate
* High" instruction:
*
bool progress = false;
foreach_block_and_inst_safe(block, fs_inst, inst, cfg) {
- const fs_builder ibld(this, block, inst);
-
if (inst->opcode == BRW_OPCODE_MUL) {
if (inst->dst.is_accumulator() ||
(inst->dst.type != BRW_REGISTER_TYPE_D &&
if (devinfo->has_integer_dword_mul)
continue;
- lower_mul_dword_inst(inst, block, ibld);
+ lower_mul_dword_inst(inst, block);
} else if (inst->opcode == SHADER_OPCODE_MULH) {
- lower_mulh_inst(inst, block, ibld);
+ lower_mulh_inst(inst, block);
} else {
continue;
}
void resolve_inot_sources(const brw::fs_builder &bld, nir_alu_instr *instr,
fs_reg *op);
- void lower_mul_dword_inst(fs_inst *inst, bblock_t *block,
- const brw::fs_builder &ibld);
- void lower_mulh_inst(fs_inst *inst, bblock_t *block,
- const brw::fs_builder &ibld);
+ void lower_mul_dword_inst(fs_inst *inst, bblock_t *block);
+ void lower_mulh_inst(fs_inst *inst, bblock_t *block);
};
/**