freedreno/ir3: handle const/immed/abs/neg in cp
authorRob Clark <robclark@freedesktop.org>
Sun, 29 Mar 2015 15:24:57 +0000 (11:24 -0400)
committerRob Clark <robclark@freedesktop.org>
Sun, 5 Apr 2015 20:36:34 +0000 (16:36 -0400)
commitf370e95421f553ace931a02743c96be80fd62dc8
treeeedcee138a10be5616b80f5883d421523aa92025
parent104713d9f2dced94a427004a25c54b2c7feee166
freedreno/ir3: handle const/immed/abs/neg in cp

Be smarter about propagating copies from const or immed, or with abs/neg
modifiers.  Also, realize that absneg.s and absneg.f are really "fancy"
mov instructions.

This opens up the possibility to remove more copies.  It helps the TGSI
frontend a bit, but will be really needed for the NIR f/e which builds
everything up in SSA form (ie. will *always* insert a mov from const or
immediate).

Signed-off-by: Rob Clark <robclark@freedesktop.org>
src/gallium/drivers/freedreno/ir3/ir3.h
src/gallium/drivers/freedreno/ir3/ir3_cp.c
src/gallium/drivers/freedreno/ir3/ir3_group.c