aboutsummaryrefslogtreecommitdiffstats
path: root/src/gallium
diff options
context:
space:
mode:
Diffstat (limited to 'src/gallium')
-rw-r--r--src/gallium/drivers/freedreno/a3xx/fd3_compiler.c70
1 files changed, 35 insertions, 35 deletions
diff --git a/src/gallium/drivers/freedreno/a3xx/fd3_compiler.c b/src/gallium/drivers/freedreno/a3xx/fd3_compiler.c
index 3159e7adee9..cee446a9fa8 100644
--- a/src/gallium/drivers/freedreno/a3xx/fd3_compiler.c
+++ b/src/gallium/drivers/freedreno/a3xx/fd3_compiler.c
@@ -348,41 +348,6 @@ pop_block(struct fd3_compile_context *ctx)
compile_assert(ctx, ctx->block);
}
-static void
-ssa_dst(struct fd3_compile_context *ctx, struct ir3_instruction *instr,
- const struct tgsi_dst_register *dst, unsigned chan)
-{
- unsigned n = regid(dst->Index, chan);
- unsigned idx = ctx->num_output_updates;
-
- compile_assert(ctx, idx < ARRAY_SIZE(ctx->output_updates));
-
- /* NOTE: defer update of temporaries[idx] or output[idx]
- * until instr_finish(), so that if the current instruction
- * reads the same TEMP/OUT[] it gets the old value:
- *
- * bleh.. this might be a bit easier to just figure out
- * in instr_finish(). But at that point we've already
- * lost information about OUTPUT vs TEMPORARY register
- * file..
- */
-
- switch (dst->File) {
- case TGSI_FILE_OUTPUT:
- compile_assert(ctx, n < ctx->block->noutputs);
- ctx->output_updates[idx].instrp = &ctx->block->outputs[n];
- ctx->output_updates[idx].instr = instr;
- ctx->num_output_updates++;
- break;
- case TGSI_FILE_TEMPORARY:
- compile_assert(ctx, n < ctx->block->ntemporaries);
- ctx->output_updates[idx].instrp = &ctx->block->temporaries[n];
- ctx->output_updates[idx].instr = instr;
- ctx->num_output_updates++;
- break;
- }
-}
-
static struct ir3_instruction *
create_output(struct ir3_block *block, struct ir3_instruction *instr,
unsigned n)
@@ -468,6 +433,41 @@ create_immed(struct fd3_compile_context *ctx, float val)
}
static void
+ssa_dst(struct fd3_compile_context *ctx, struct ir3_instruction *instr,
+ const struct tgsi_dst_register *dst, unsigned chan)
+{
+ unsigned n = regid(dst->Index, chan);
+ unsigned idx = ctx->num_output_updates;
+
+ compile_assert(ctx, idx < ARRAY_SIZE(ctx->output_updates));
+
+ /* NOTE: defer update of temporaries[idx] or output[idx]
+ * until instr_finish(), so that if the current instruction
+ * reads the same TEMP/OUT[] it gets the old value:
+ *
+ * bleh.. this might be a bit easier to just figure out
+ * in instr_finish(). But at that point we've already
+ * lost information about OUTPUT vs TEMPORARY register
+ * file..
+ */
+
+ switch (dst->File) {
+ case TGSI_FILE_OUTPUT:
+ compile_assert(ctx, n < ctx->block->noutputs);
+ ctx->output_updates[idx].instrp = &ctx->block->outputs[n];
+ ctx->output_updates[idx].instr = instr;
+ ctx->num_output_updates++;
+ break;
+ case TGSI_FILE_TEMPORARY:
+ compile_assert(ctx, n < ctx->block->ntemporaries);
+ ctx->output_updates[idx].instrp = &ctx->block->temporaries[n];
+ ctx->output_updates[idx].instr = instr;
+ ctx->num_output_updates++;
+ break;
+ }
+}
+
+static void
ssa_src(struct fd3_compile_context *ctx, struct ir3_register *reg,
const struct tgsi_src_register *src, unsigned chan)
{