vc4: Replace the SSA-style SEL operators with conditional MOVs.
authorEric Anholt <eric@anholt.net>
Tue, 22 Dec 2015 21:37:36 +0000 (13:37 -0800)
committerEric Anholt <eric@anholt.net>
Wed, 6 Jan 2016 20:39:51 +0000 (12:39 -0800)
commit71db7d3dc577e48da3689fd66989ec3b0a069089
tree450fb776d1617cbdec4160d81a87480599c7dbb1
parent0a89f307f95de3a3357d834f36c60fe803895f8a
vc4: Replace the SSA-style SEL operators with conditional MOVs.

I'm moving away from QIR being SSA (since NIR is doing lots of SSA
optimization for us now) and instead having QIR just be QPU operations
with virtual registers.  By making our SELs be composed of two MOVs, we
could potentially coalesce the registers for the MOV's src and dst and
eliminate the MOV.

total instructions in shared programs: 88448 -> 88028 (-0.47%)
instructions in affected programs:     39845 -> 39425 (-1.05%)
total estimated cycles in shared programs: 246306 -> 245762 (-0.22%)
estimated cycles in affected programs:     162887 -> 162343 (-0.33%)
src/gallium/drivers/vc4/vc4_opt_algebraic.c
src/gallium/drivers/vc4/vc4_program.c
src/gallium/drivers/vc4/vc4_qir.c
src/gallium/drivers/vc4/vc4_qir.h
src/gallium/drivers/vc4/vc4_qir_schedule.c
src/gallium/drivers/vc4/vc4_qpu_emit.c