nv50/ir: move LateAlgebraicOpt to the very end
authorIlia Mirkin <imirkin@alum.mit.edu>
Thu, 16 Nov 2017 06:48:20 +0000 (01:48 -0500)
committerIlia Mirkin <imirkin@alum.mit.edu>
Sun, 26 Nov 2017 06:10:19 +0000 (01:10 -0500)
commit0bd83d04612520ff97e21d41bcc3ad2e68e160df
treeb577e572cc54b2fa10cf9e726e52982bfadc1e84
parent3072bbef63c9a41929cfd781a583de9689ec5b65
nv50/ir: move LateAlgebraicOpt to the very end

Memory loads can take offsets, but the SHLADD will often attempt to
consume the offsets too. As there may be multiple memory loads with the
same base but different offsets, those would end up in a SHLADD instead
of the offset of the memory operation.

This moves the pass after we've had a chance to attempt to propagate
immediate adds into the indirect offset.

total instructions in shared programs : 6580681 -> 6567716 (-0.20%)
total gprs used in shared programs    : 944261 -> 943375 (-0.09%)
total shared used in shared programs  : 0 -> 0 (0.00%)
total local used in shared programs   : 15328 -> 15328 (0.00%)
total bytes used in shared programs   : 60339896 -> 60221504 (-0.20%)

                local     shared        gpr       inst      bytes
    helped           0           0         555        2698        2698
      hurt           0           0         138         336         336

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