freedreno/ir3: propagate HALF flag across fanout

If we have a fanout (split) meta instruction to split the result of a
vector instruction, propagate the HALF flag back to the original
instruction.  Otherwise result ends up in a full precision register
while instruction(s) that use the result look in a half-precision
register.

Signed-off-by: Rob Clark <robdclark@gmail.com>
This commit is contained in:
Rob Clark 2018-04-26 14:52:09 -04:00
parent fc1690c9d9
commit a52e698219

View file

@ -495,7 +495,10 @@ put_dst(struct ir3_context *ctx, nir_dest *dst)
if (bit_size < 32) {
for (unsigned i = 0; i < ctx->last_dst_n; i++) {
ctx->last_dst[i]->regs[0]->flags |= IR3_REG_HALF;
struct ir3_instruction *dst = ctx->last_dst[i];
dst->regs[0]->flags |= IR3_REG_HALF;
if (ctx->last_dst[i]->opc == OPC_META_FO)
dst->regs[1]->instr->regs[0]->flags |= IR3_REG_HALF;
}
}