radeon/llvm: move system value fetching to common code
authorChristian König <christian.koenig@amd.com>
Thu, 21 Mar 2013 16:37:37 +0000 (17:37 +0100)
committerChristian König <christian.koenig@amd.com>
Tue, 2 Apr 2013 11:01:42 +0000 (13:01 +0200)
This should be used by both SI and R600.

Signed-off-by: Christian König <christian.koenig@amd.com>
Reviewed-by: Michel Dänzer <michel.daenzer@amd.com>
Tested-by: Michel Dänzer <michel.daenzer@amd.com>
src/gallium/drivers/r600/r600_llvm.c
src/gallium/drivers/radeon/radeon_setup_tgsi_llvm.c

index e3e7d9f4fff64a0a6a6a47c9358dd09c19e35787..be8ad1559872ab0e48e2a8bf646985bac119c9ca 100644 (file)
@@ -72,17 +72,6 @@ static void llvm_load_system_value(
                        LLVMReadNoneAttribute);
 }
 
-static LLVMValueRef llvm_fetch_system_value(
-               struct lp_build_tgsi_context * bld_base,
-               const struct tgsi_full_src_register *reg,
-               enum tgsi_opcode_type type,
-               unsigned swizzle)
-{
-       struct radeon_llvm_context * ctx = radeon_llvm_context(bld_base);
-       LLVMValueRef cval = ctx->system_values[reg->Register.Index];
-       return bitcast(bld_base, type, cval);
-}
-
 static LLVMValueRef
 llvm_load_input_helper(
        struct radeon_llvm_context * ctx,
@@ -530,7 +519,6 @@ LLVMModuleRef r600_tgsi_llvm(
        bld_base->info = &shader_info;
        bld_base->userdata = ctx;
        bld_base->emit_fetch_funcs[TGSI_FILE_CONSTANT] = llvm_fetch_const;
-       bld_base->emit_fetch_funcs[TGSI_FILE_SYSTEM_VALUE] = llvm_fetch_system_value;
        bld_base->emit_prologue = llvm_emit_prologue;
        bld_base->emit_epilogue = llvm_emit_epilogue;
        ctx->userdata = ctx;
index e2a6bee26ac09f60881c21781e22ee542d424592..314c9634fa759fa35b00fd7e18121a5fe1f92000 100644 (file)
@@ -200,6 +200,17 @@ emit_fetch(
        return bitcast(bld_base, type, result);
 }
 
+static LLVMValueRef fetch_system_value(
+       struct lp_build_tgsi_context * bld_base,
+       const struct tgsi_full_src_register *reg,
+       enum tgsi_opcode_type type,
+       unsigned swizzle)
+{
+       struct radeon_llvm_context * ctx = radeon_llvm_context(bld_base);
+       LLVMValueRef cval = ctx->system_values[reg->Register.Index];
+       return bitcast(bld_base, type, cval);
+}
+
 static void emit_declaration(
        struct lp_build_tgsi_context * bld_base,
        const struct tgsi_full_declaration *decl)
@@ -1153,6 +1164,7 @@ void radeon_llvm_context_init(struct radeon_llvm_context * ctx)
        bld_base->emit_fetch_funcs[TGSI_FILE_INPUT] = emit_fetch;
        bld_base->emit_fetch_funcs[TGSI_FILE_TEMPORARY] = emit_fetch;
        bld_base->emit_fetch_funcs[TGSI_FILE_OUTPUT] = emit_fetch;
+       bld_base->emit_fetch_funcs[TGSI_FILE_SYSTEM_VALUE] = fetch_system_value;
 
        /* Allocate outputs */
        ctx->soa.outputs = ctx->outputs;