vc4: Don't conditionalize the src1 mov of qir_SEL().
authorEric Anholt <eric@anholt.net>
Tue, 22 Nov 2016 07:52:37 +0000 (23:52 -0800)
committerEric Anholt <eric@anholt.net>
Wed, 23 Nov 2016 00:46:03 +0000 (16:46 -0800)
commit414dbb2d5c48b7e9dc0dc8b14583f91415ca3960
tree51ddf15c8fb26855552a9455568d5eecf4b42c71
parent1f0ba902f0ef87e182e50b7e19a406b0936f5293
vc4: Don't conditionalize the src1 mov of qir_SEL().

My thought in having both arguments conditionally moved was that it should
theoretically save some power by not doing work in those channels.
However, it ends up costing us instructions because we can't
register-coalesce the first of the MOVs, and it also introduces extra
scheduling dependencies.  The instruction cost would swamp whatever power
benefit I was hoping for.

shader-db results:
total instructions in shared programs: 100548 -> 99741 (-0.80%)
instructions in affected programs:     42450 -> 41643 (-1.90%)

With obvious outliers removed (I had an X11 emacs running over the network
in the "after" case), 3DMMES Taiji showed 1.07231% +/- 0.488241% fps
improvement (n=18, 30).
src/gallium/drivers/vc4/vc4_qir.h