[Mesa-dev] [PATCH] i965/fs: Add support for removing NOT.NZ and NOT.Z instructions.

2015-05-08 Thread Ian Romanick
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.

2015-05-08 Thread Ian Romanick
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