summaryrefslogtreecommitdiffstats
path: root/src/freedreno/ir3/ir3_ra.c
diff options
context:
space:
mode:
authorRob Clark <[email protected]>2018-12-05 15:07:51 -0500
committerRob Clark <[email protected]>2018-12-22 15:27:21 -0500
commit6667dde098c4d9f30720024e76e35963eec2c511 (patch)
tree2b8134b80e030108f6182e81ea39ade914f2144b /src/freedreno/ir3/ir3_ra.c
parent3453814622040d2638ce7b7c73c046cd4a0119e9 (diff)
freedreno/ir3: don't treat all inputs/outputs as vec4
This was a hold-over from the early TGSI days, and mostly not needed with NIR. This avoids burning an entire 4 consecutive scalar regs for vec3 outputs, for example. Which fixes a few places that we were doing worse that we should on register usage. Signed-off-by: Rob Clark <[email protected]>
Diffstat (limited to 'src/freedreno/ir3/ir3_ra.c')
-rw-r--r--src/freedreno/ir3/ir3_ra.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/src/freedreno/ir3/ir3_ra.c b/src/freedreno/ir3/ir3_ra.c
index b202c141378..f951acd5eef 100644
--- a/src/freedreno/ir3/ir3_ra.c
+++ b/src/freedreno/ir3/ir3_ra.c
@@ -917,6 +917,8 @@ ra_add_interference(struct ir3_ra_ctx *ctx)
/* need to fix things up to keep outputs live: */
for (unsigned i = 0; i < ir->noutputs; i++) {
struct ir3_instruction *instr = ir->outputs[i];
+ if (!instr)
+ continue;
unsigned name = ra_name(ctx, &ctx->instrd[instr->ip]);
ctx->use[name] = ctx->instr_cnt;
}