[Mesa-dev] [PATCH] i965/fs: Add support for removing NOT.NZ and NOT.Z instructions.
From: Ian Romanick ian.d.roman...@intel.com Shader-db results: GM45 and Iron Lake: total instructions in shared programs: 7888585 - 7888585 (0.00%) instructions in affected programs: 0 - 0 Sandy Bridge, Ivy Bridge, Haswell, and Broadwell: total instructions in shared programs: 9598608 - 9598572 (-0.00%) instructions in affected programs: 6506 - 6470 (-0.55%) helped:36 Signed-off-by: Ian Romanick ian.d.roman...@intel.com --- src/mesa/drivers/dri/i965/brw_fs_cmod_propagation.cpp | 8 +++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/mesa/drivers/dri/i965/brw_fs_cmod_propagation.cpp b/src/mesa/drivers/dri/i965/brw_fs_cmod_propagation.cpp index 469f2ea..d72a83a 100644 --- a/src/mesa/drivers/dri/i965/brw_fs_cmod_propagation.cpp +++ b/src/mesa/drivers/dri/i965/brw_fs_cmod_propagation.cpp @@ -59,7 +59,8 @@ opt_cmod_propagation_local(bblock_t *block) if ((inst-opcode != BRW_OPCODE_AND inst-opcode != BRW_OPCODE_CMP - inst-opcode != BRW_OPCODE_MOV) || + inst-opcode != BRW_OPCODE_MOV + inst-opcode != BRW_OPCODE_NOT) || inst-predicate != BRW_PREDICATE_NONE || !inst-dst.is_null() || inst-src[0].file != GRF || @@ -86,6 +87,11 @@ opt_cmod_propagation_local(bblock_t *block) inst-conditional_mod != BRW_CONDITIONAL_NZ) continue; + if (inst-opcode == BRW_OPCODE_NOT + inst-conditional_mod != BRW_CONDITIONAL_Z + inst-conditional_mod != BRW_CONDITIONAL_NZ) + continue; + bool read_flag = false; foreach_inst_in_block_reverse_starting_from(fs_inst, scan_inst, inst, block) { -- 2.1.0 ___ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev
Re: [Mesa-dev] [PATCH] i965/fs: Add support for removing NOT.NZ and NOT.Z instructions.
This was not fully baked. I'll send out a fixed version later. On 05/08/2015 07:05 PM, Ian Romanick wrote: From: Ian Romanick ian.d.roman...@intel.com Shader-db results: GM45 and Iron Lake: total instructions in shared programs: 7888585 - 7888585 (0.00%) instructions in affected programs: 0 - 0 Sandy Bridge, Ivy Bridge, Haswell, and Broadwell: total instructions in shared programs: 9598608 - 9598572 (-0.00%) instructions in affected programs: 6506 - 6470 (-0.55%) helped:36 Signed-off-by: Ian Romanick ian.d.roman...@intel.com --- src/mesa/drivers/dri/i965/brw_fs_cmod_propagation.cpp | 8 +++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/mesa/drivers/dri/i965/brw_fs_cmod_propagation.cpp b/src/mesa/drivers/dri/i965/brw_fs_cmod_propagation.cpp index 469f2ea..d72a83a 100644 --- a/src/mesa/drivers/dri/i965/brw_fs_cmod_propagation.cpp +++ b/src/mesa/drivers/dri/i965/brw_fs_cmod_propagation.cpp @@ -59,7 +59,8 @@ opt_cmod_propagation_local(bblock_t *block) if ((inst-opcode != BRW_OPCODE_AND inst-opcode != BRW_OPCODE_CMP - inst-opcode != BRW_OPCODE_MOV) || + inst-opcode != BRW_OPCODE_MOV + inst-opcode != BRW_OPCODE_NOT) || inst-predicate != BRW_PREDICATE_NONE || !inst-dst.is_null() || inst-src[0].file != GRF || @@ -86,6 +87,11 @@ opt_cmod_propagation_local(bblock_t *block) inst-conditional_mod != BRW_CONDITIONAL_NZ) continue; + if (inst-opcode == BRW_OPCODE_NOT + inst-conditional_mod != BRW_CONDITIONAL_Z + inst-conditional_mod != BRW_CONDITIONAL_NZ) + continue; + bool read_flag = false; foreach_inst_in_block_reverse_starting_from(fs_inst, scan_inst, inst, block) { ___ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev