ir3: Set up full/half register conflicts correctly
authorKristian H. Kristensen <hoegsberg@google.com>
Thu, 9 Jan 2020 17:37:35 +0000 (09:37 -0800)
committerKristian H. Kristensen <hoegsberg@google.com>
Fri, 10 Jan 2020 00:03:25 +0000 (16:03 -0800)
commitf9d35ea55b1e4822a04928bb007f6a339f3d9a20
treee449df91db8cd6adf1c8497997e02e73bb06b0a4
parent85eed5def3056d522971820e2ec3a0a0fd622ff5
ir3: Set up full/half register conflicts correctly

Setting up transitive conflicts between a full register and its two
half registers (eg r0.x and hr0.x and hr0.y) will make the half
registers conflict.  They don't actually conflict and this prevents us
from using both at the same time.

Add and use a new ra helper that sets up transitive conflicts between
a register and its subregisters, except it carefully avoids the
subregister conflict.

Signed-off-by: Kristian H. Kristensen <hoegsberg@google.com>
Reviewed-by: Rob Clark <robdclark@chromium.org>
src/freedreno/ir3/ir3_ra.c
src/util/register_allocate.c
src/util/register_allocate.h