nv50/ir: get rid of memory stores with nop values
authorIlia Mirkin <imirkin@alum.mit.edu>
Fri, 29 Jan 2016 23:23:21 +0000 (18:23 -0500)
committerIlia Mirkin <imirkin@alum.mit.edu>
Sat, 30 Jan 2016 22:18:41 +0000 (17:18 -0500)
commit7f19e293055d2a9897df803efa310c293280ab8f
tree97c665aa174af9b11e14c20eaf697208c3d5334c
parent3ca941d60ed38800038cd545842e0ed3a69946da
nv50/ir: get rid of memory stores with nop values

This happens especially with exports and varying packing, where the last
bits aren't always filled in. We end up trying to do quad-wide stores,
which ends up being a lot of register moves that carefully preserve the
nop value. Instead don't do the stores.

total instructions in shared programs : 6131375 -> 6125267 (-0.10%)
total gprs used in shared programs    : 910139 -> 895501 (-1.61%)
total local used in shared programs   : 15328 -> 15328 (0.00%)

                local        gpr       inst
    helped           0        7442        4693
      hurt           0          90        2687

Most of the helped/hurt instruction changes are by one or two ops
because can no longer do quad-wide stores in all cases.

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