nir: Turn imov/fmov of undef into undef.
authorKenneth Graunke <kenneth@whitecape.org>
Fri, 29 Jul 2016 08:29:10 +0000 (01:29 -0700)
committerKenneth Graunke <kenneth@whitecape.org>
Thu, 4 Aug 2016 07:40:59 +0000 (00:40 -0700)
On Broadwell:

total instructions in shared programs: 11640214 -> 11639872 (-0.00%)
instructions in affected programs: 17744 -> 17402 (-1.93%)
helped: 78
HURT: 0

total spills in shared programs: 2924 -> 2922 (-0.07%)
spills in affected programs: 104 -> 102 (-1.92%)
helped: 1
HURT: 0

total fills in shared programs: 4394 -> 4389 (-0.11%)
fills in affected programs: 237 -> 232 (-2.11%)
helped: 1
HURT: 0

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Iago Toral Quiroga <itoral@igalia.com>
src/compiler/nir/nir_opt_undef.c

index c4777a86c8f3cb26eab3dc7c78492b80e65a396f..0f8ba31a68ef022303c1b76db1f8ee4eda8b5022 100644 (file)
@@ -79,7 +79,9 @@ opt_undef_vecN(nir_builder *b, nir_alu_instr *alu)
 {
    if (alu->op != nir_op_vec2 &&
        alu->op != nir_op_vec3 &&
-       alu->op != nir_op_vec4)
+       alu->op != nir_op_vec4 &&
+       alu->op != nir_op_fmov &&
+       alu->op != nir_op_imov)
       return false;
 
    assert(alu->dest.dest.is_ssa);