r600/shader: split address get out to a function.
authorDave Airlie <airlied@redhat.com>
Mon, 30 Nov 2015 04:23:00 +0000 (14:23 +1000)
committerDave Airlie <airlied@redhat.com>
Mon, 30 Nov 2015 22:10:21 +0000 (08:10 +1000)
This will be used in the tess shaders.

Reviewed-by: Oded Gabbay <oded.gabbay@gmail.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
src/gallium/drivers/r600/r600_shader.c

index d25fc3b85a2eb4eecda99dd4484bd9d9f4313e37..6233753e71678ca021bd5ba37fc6835d55175f84 100644 (file)
@@ -598,6 +598,11 @@ static int select_twoside_color(struct r600_shader_ctx *ctx, int front, int back
        return 0;
 }
 
+static inline int get_address_file_reg(struct r600_shader_ctx *ctx, int index)
+{
+       return index > 0 ? ctx->bc->index_reg[index - 1] : ctx->bc->ar_reg;
+}
+
 static int vs_add_primid_output(struct r600_shader_ctx *ctx, int prim_id_sid)
 {
        int i;
@@ -7188,7 +7193,7 @@ static int tgsi_eg_arl(struct r600_shader_ctx *ctx)
        struct r600_bytecode_alu alu;
        int r;
        int i, lasti = tgsi_last_instruction(inst->Dst[0].Register.WriteMask);
-       unsigned reg = inst->Dst[0].Register.Index > 0 ? ctx->bc->index_reg[inst->Dst[0].Register.Index - 1] : ctx->bc->ar_reg;
+       unsigned reg = get_address_file_reg(ctx, inst->Dst[0].Register.Index);
 
        assert(inst->Dst[0].Register.Index < 3);
        memset(&alu, 0, sizeof(struct r600_bytecode_alu));