diff options
author | Paulo Zanoni <[email protected]> | 2019-07-10 16:48:01 -0700 |
---|---|---|
committer | Caio Marcelo de Oliveira Filho <[email protected]> | 2019-08-12 15:16:23 -0700 |
commit | 6ba4717924f2bdf1e77c62f117b4f6b98ea2f75e (patch) | |
tree | b6caaab39b17cf8620483bafda3dc45e82e48c54 /src/intel/compiler | |
parent | 75b3868dcc81e9b629e997f354aae691b7933f32 (diff) |
intel/compiler: don't instantiate a builder for each instruction
Don't instantiate a builder for each instruction during
lower_integer_multiplication(). Instantiate one only when needed.
On the other hand, these unneeded builders don't seem to cost much to
init, so I don't expect any significant difference in performance:
this is mostly about code organization.
Reviewed-by: Matt Turner <[email protected]>
Reviewed-by: Caio Marcelo de Oliveira Filho <[email protected]>
Signed-off-by: Paulo Zanoni <[email protected]>
Diffstat (limited to 'src/intel/compiler')
-rw-r--r-- | src/intel/compiler/brw_fs.cpp | 16 | ||||
-rw-r--r-- | src/intel/compiler/brw_fs.h | 6 |
2 files changed, 10 insertions, 12 deletions
diff --git a/src/intel/compiler/brw_fs.cpp b/src/intel/compiler/brw_fs.cpp index 755157cf1cf..3db3332a208 100644 --- a/src/intel/compiler/brw_fs.cpp +++ b/src/intel/compiler/brw_fs.cpp @@ -3863,9 +3863,10 @@ fs_visitor::lower_load_payload() } 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 @@ -3990,9 +3991,10 @@ fs_visitor::lower_mul_dword_inst(fs_inst *inst, bblock_t *block, } 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: * @@ -4059,8 +4061,6 @@ fs_visitor::lower_integer_multiplication() 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 && @@ -4070,9 +4070,9 @@ fs_visitor::lower_integer_multiplication() 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; } diff --git a/src/intel/compiler/brw_fs.h b/src/intel/compiler/brw_fs.h index 82d572916ce..fb78fa829a0 100644 --- a/src/intel/compiler/brw_fs.h +++ b/src/intel/compiler/brw_fs.h @@ -406,10 +406,8 @@ private: 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); }; /** |