freedreno/ir3: fix mismatched flags on split
authorRob Clark <robdclark@chromium.org>
Fri, 15 May 2020 23:44:29 +0000 (16:44 -0700)
committerMarge Bot <eric+marge@anholt.net>
Tue, 19 May 2020 16:06:17 +0000 (16:06 +0000)
We have to fixup the meta:split half flag, because `ir3_split_dest()` is
called before we fixup the dest type.  But we should fixup both the
split src and dest, as well as the thing it is splitting.

Signed-off-by: Rob Clark <robdclark@chromium.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5048>

src/freedreno/ir3/ir3_context.c

index 6b6f485af05a4c4d78c9caebd39446716ef85978..527cd73a66449089f7ca1adefa585ce257a52468 100644 (file)
@@ -257,8 +257,10 @@ ir3_put_dst(struct ir3_context *ctx, nir_dest *dst)
                for (unsigned i = 0; i < ctx->last_dst_n; i++) {
                        struct ir3_instruction *dst = ctx->last_dst[i];
                        dst->regs[0]->flags |= IR3_REG_HALF;
-                       if (ctx->last_dst[i]->opc == OPC_META_SPLIT)
+                       if (dst->opc == OPC_META_SPLIT) {
                                dst->regs[1]->instr->regs[0]->flags |= IR3_REG_HALF;
+                               dst->regs[1]->flags |= IR3_REG_HALF;
+                       }
                }
        }