nv50/ir: optimize neg(and(set, 1)) to set
authorKarol Herbst <nouveau@karolherbst.de>
Sat, 23 Jan 2016 23:16:05 +0000 (00:16 +0100)
committerIlia Mirkin <imirkin@alum.mit.edu>
Tue, 16 Feb 2016 23:20:10 +0000 (18:20 -0500)
commit068e9848ba5937673d66c42a4b44067fd78becaf
tree23e03894acd9dab58ff32da31ad701d1d72104cd
parentca23c8081f1f9f709df7a63b9e6de379c0b8df44
nv50/ir: optimize neg(and(set, 1)) to set

helps shaders in saints row IV, bioshock infinite and shadow warrior

total instructions in shared programs : 1914931 -> 1903900 (-0.58%)
total gprs used in shared programs    : 247920 -> 247785 (-0.05%)
total local used in shared programs   : 5673 -> 5673 (0.00%)
total bytes used in shared programs   : 17558272 -> 17457320 (-0.57%)

                local        gpr       inst      bytes
    helped           0         137         719         719
      hurt           0          12           0           0

v2: remove this opt for OP_SLCT and check against float for OP_SET
v3: simplified the code

Signed-off-by: Karol Herbst <nouveau@karolherbst.de>
Reviewed-by: Ilia Mirkin <imirkin@alum.mit.edu>
src/gallium/drivers/nouveau/codegen/nv50_ir_peephole.cpp