diff options
author | Matt Turner <[email protected]> | 2014-06-23 22:07:20 -0700 |
---|---|---|
committer | Matt Turner <[email protected]> | 2014-06-25 13:00:53 -0700 |
commit | 038eb649b30dfddaf40888ea28b5e88de3af2214 (patch) | |
tree | a3f7ec1d5ee5a05875145c67b44c45f9c58e081b /src | |
parent | aca4a951ea2bab855bcc2491a3b8996b54639ebd (diff) |
i965/fs: Constant propagate into 2-src math instructions on Gen8.
total instructions in shared programs: 1878133 -> 1876986 (-0.06%)
instructions in affected programs: 153007 -> 151860 (-0.75%)
Reviewed-by: Kenneth Graunke <[email protected]>
Diffstat (limited to 'src')
-rw-r--r-- | src/mesa/drivers/dri/i965/brw_fs_copy_propagation.cpp | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/src/mesa/drivers/dri/i965/brw_fs_copy_propagation.cpp b/src/mesa/drivers/dri/i965/brw_fs_copy_propagation.cpp index 28c6ca7ac29..3c6e616d92a 100644 --- a/src/mesa/drivers/dri/i965/brw_fs_copy_propagation.cpp +++ b/src/mesa/drivers/dri/i965/brw_fs_copy_propagation.cpp @@ -368,7 +368,8 @@ fs_visitor::try_copy_propagate(fs_inst *inst, int arg, acp_entry *entry) static bool -try_constant_propagate(fs_inst *inst, acp_entry *entry) +try_constant_propagate(struct brw_context *brw, fs_inst *inst, + acp_entry *entry) { bool progress = false; @@ -396,6 +397,12 @@ try_constant_propagate(fs_inst *inst, acp_entry *entry) progress = true; break; + case SHADER_OPCODE_POW: + case SHADER_OPCODE_INT_QUOTIENT: + case SHADER_OPCODE_INT_REMAINDER: + if (brw->gen < 8) + break; + /* fallthrough */ case BRW_OPCODE_BFI1: case BRW_OPCODE_ASR: case BRW_OPCODE_SHL: @@ -537,7 +544,7 @@ fs_visitor::opt_copy_propagate_local(void *copy_prop_ctx, bblock_t *block, foreach_list(entry_node, &acp[inst->src[i].reg % ACP_HASH_SIZE]) { acp_entry *entry = (acp_entry *)entry_node; - if (try_constant_propagate(inst, entry)) + if (try_constant_propagate(brw, inst, entry)) progress = true; if (try_copy_propagate(inst, i, entry)) |