freedreno/ir3: intra-block scheduling
authorRob Clark <robdclark@gmail.com>
Mon, 5 Feb 2018 13:45:29 +0000 (08:45 -0500)
committerRob Clark <robdclark@gmail.com>
Sat, 10 Feb 2018 19:54:58 +0000 (14:54 -0500)
commitc57ed8e01cb40ef9a422346c3d304c1a3cc1f418
tree7cc5f80c53b0e7a3b27a343804b2d5669890dbab
parent2a2099a875568f2d979f0030aa6291ed88366046
freedreno/ir3: intra-block scheduling

Because of loops, we can't schedule all of a block's predecessors first.
Instead just assume that the result consumed in a block was written far
enough away in all paths into a block.  And do an intra-block scheduling
pass to figure out if there are any cases where we need to insert extra
nop's.  This works out better than always assuming the worst case (ie.
that a value live into a block was written in the last instruction in
the predecessor block).

Signed-off-by: Rob Clark <robdclark@gmail.com>
src/gallium/drivers/freedreno/ir3/ir3_sched.c