radeonsi: make functions for creating LLVM functions non-static

Tested-by: Dieter Nützel <Dieter@nuetzel-hh.de>
Acked-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
This commit is contained in:
Marek Olšák
2018-08-15 21:41:52 -04:00
parent b19884e08e
commit 43aa2f4f7c
2 changed files with 32 additions and 23 deletions

View File

@@ -51,22 +51,6 @@ struct si_shader_output_values
ubyte vertex_stream[4]; ubyte vertex_stream[4];
}; };
/**
* Used to collect types and other info about arguments of the LLVM function
* before the function is created.
*/
struct si_function_info {
LLVMTypeRef types[100];
LLVMValueRef *assign[100];
unsigned num_sgpr_params;
unsigned num_params;
};
enum si_arg_regfile {
ARG_SGPR,
ARG_VGPR
};
static void si_init_shader_ctx(struct si_shader_context *ctx, static void si_init_shader_ctx(struct si_shader_context *ctx,
struct si_screen *sscreen, struct si_screen *sscreen,
struct ac_llvm_compiler *compiler); struct ac_llvm_compiler *compiler);
@@ -114,13 +98,13 @@ static bool is_merged_shader(struct si_shader_context *ctx)
ctx->type == PIPE_SHADER_GEOMETRY; ctx->type == PIPE_SHADER_GEOMETRY;
} }
static void si_init_function_info(struct si_function_info *fninfo) void si_init_function_info(struct si_function_info *fninfo)
{ {
fninfo->num_params = 0; fninfo->num_params = 0;
fninfo->num_sgpr_params = 0; fninfo->num_sgpr_params = 0;
} }
static unsigned add_arg_assign(struct si_function_info *fninfo, unsigned add_arg_assign(struct si_function_info *fninfo,
enum si_arg_regfile regfile, LLVMTypeRef type, enum si_arg_regfile regfile, LLVMTypeRef type,
LLVMValueRef *assign) LLVMValueRef *assign)
{ {
@@ -4228,11 +4212,11 @@ static void si_llvm_emit_barrier(const struct lp_build_tgsi_action *action,
ac_build_s_barrier(&ctx->ac); ac_build_s_barrier(&ctx->ac);
} }
static void si_create_function(struct si_shader_context *ctx, void si_create_function(struct si_shader_context *ctx,
const char *name, const char *name,
LLVMTypeRef *returns, unsigned num_returns, LLVMTypeRef *returns, unsigned num_returns,
struct si_function_info *fninfo, struct si_function_info *fninfo,
unsigned max_workgroup_size) unsigned max_workgroup_size)
{ {
int i; int i;

View File

@@ -45,6 +45,22 @@ struct ac_shader_binary;
#define RADEON_LLVM_MAX_SYSTEM_VALUES 11 #define RADEON_LLVM_MAX_SYSTEM_VALUES 11
#define RADEON_LLVM_MAX_ADDRS 16 #define RADEON_LLVM_MAX_ADDRS 16
enum si_arg_regfile {
ARG_SGPR,
ARG_VGPR
};
/**
* Used to collect types and other info about arguments of the LLVM function
* before the function is created.
*/
struct si_function_info {
LLVMTypeRef types[100];
LLVMValueRef *assign[100];
unsigned num_sgpr_params;
unsigned num_params;
};
struct si_shader_context { struct si_shader_context {
struct lp_build_tgsi_context bld_base; struct lp_build_tgsi_context bld_base;
struct gallivm_state gallivm; struct gallivm_state gallivm;
@@ -218,6 +234,15 @@ si_shader_context_from_abi(struct ac_shader_abi *abi)
return container_of(abi, ctx, abi); return container_of(abi, ctx, abi);
} }
void si_init_function_info(struct si_function_info *fninfo);
unsigned add_arg_assign(struct si_function_info *fninfo,
enum si_arg_regfile regfile, LLVMTypeRef type,
LLVMValueRef *assign);
void si_create_function(struct si_shader_context *ctx,
const char *name,
LLVMTypeRef *returns, unsigned num_returns,
struct si_function_info *fninfo,
unsigned max_workgroup_size);
unsigned si_llvm_compile(LLVMModuleRef M, struct ac_shader_binary *binary, unsigned si_llvm_compile(LLVMModuleRef M, struct ac_shader_binary *binary,
struct ac_llvm_compiler *compiler, struct ac_llvm_compiler *compiler,
struct pipe_debug_callback *debug, struct pipe_debug_callback *debug,