summaryrefslogtreecommitdiffstats
path: root/src/intel
diff options
context:
space:
mode:
authorPaulo Zanoni <[email protected]>2019-07-10 16:48:01 -0700
committerCaio Marcelo de Oliveira Filho <[email protected]>2019-08-12 15:16:23 -0700
commit6ba4717924f2bdf1e77c62f117b4f6b98ea2f75e (patch)
treeb6caaab39b17cf8620483bafda3dc45e82e48c54 /src/intel
parent75b3868dcc81e9b629e997f354aae691b7933f32 (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')
-rw-r--r--src/intel/compiler/brw_fs.cpp16
-rw-r--r--src/intel/compiler/brw_fs.h6
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);
};
/**