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 
> 
> 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 
> ---
>  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


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

2015-05-08 Thread Ian Romanick
From: Ian Romanick 

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 
---
 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