Module: Mesa
Branch: master
Commit: c181d4f2b7875882ba41b62ad43dfe58c2f70ab1
URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=c181d4f2b7875882ba41b62ad43dfe58c2f70ab1

Author: Connor Abbott <[email protected]>
Date:   Mon Jun  5 14:37:01 2017 -0700

radeonsi: move llvm_get_type_size() to ac

Reviewed-by: Nicolai Hähnle <[email protected]>
Reviewed-by: Marek Olšák <[email protected]>
Signed-off-by: Dave Airlie <[email protected]>

---

 src/amd/common/ac_llvm_build.c           | 24 ++++++++++++++++++
 src/amd/common/ac_llvm_build.h           |  2 ++
 src/gallium/drivers/radeonsi/si_shader.c | 43 +++++++-------------------------
 3 files changed, 35 insertions(+), 34 deletions(-)

diff --git a/src/amd/common/ac_llvm_build.c b/src/amd/common/ac_llvm_build.c
index a38aad68f7..2503608e26 100644
--- a/src/amd/common/ac_llvm_build.c
+++ b/src/amd/common/ac_llvm_build.c
@@ -88,6 +88,30 @@ ac_llvm_context_init(struct ac_llvm_context *ctx, 
LLVMContextRef context)
        ctx->empty_md = LLVMMDNodeInContext(ctx->context, NULL, 0);
 }
 
+unsigned
+ac_get_type_size(LLVMTypeRef type)
+{
+       LLVMTypeKind kind = LLVMGetTypeKind(type);
+
+       switch (kind) {
+       case LLVMIntegerTypeKind:
+               return LLVMGetIntTypeWidth(type) / 8;
+       case LLVMFloatTypeKind:
+               return 4;
+       case LLVMPointerTypeKind:
+               return 8;
+       case LLVMVectorTypeKind:
+               return LLVMGetVectorSize(type) *
+                      ac_get_type_size(LLVMGetElementType(type));
+       case LLVMArrayTypeKind:
+               return LLVMGetArrayLength(type) *
+                      ac_get_type_size(LLVMGetElementType(type));
+       default:
+               assert(0);
+               return 0;
+       }
+}
+
 LLVMValueRef
 ac_build_intrinsic(struct ac_llvm_context *ctx, const char *name,
                   LLVMTypeRef return_type, LLVMValueRef *params,
diff --git a/src/amd/common/ac_llvm_build.h b/src/amd/common/ac_llvm_build.h
index ee27d3ca25..cbc938d5a0 100644
--- a/src/amd/common/ac_llvm_build.h
+++ b/src/amd/common/ac_llvm_build.h
@@ -66,6 +66,8 @@ struct ac_llvm_context {
 void
 ac_llvm_context_init(struct ac_llvm_context *ctx, LLVMContextRef context);
 
+unsigned ac_get_type_size(LLVMTypeRef type);
+
 LLVMValueRef
 ac_build_intrinsic(struct ac_llvm_context *ctx, const char *name,
                   LLVMTypeRef return_type, LLVMValueRef *params,
diff --git a/src/gallium/drivers/radeonsi/si_shader.c 
b/src/gallium/drivers/radeonsi/si_shader.c
index e0e9c14beb..d893db315d 100644
--- a/src/gallium/drivers/radeonsi/si_shader.c
+++ b/src/gallium/drivers/radeonsi/si_shader.c
@@ -89,8 +89,6 @@ static void si_llvm_emit_barrier(const struct 
lp_build_tgsi_action *action,
 static void si_dump_shader_key(unsigned processor, const struct si_shader 
*shader,
                               FILE *f);
 
-static unsigned llvm_get_type_size(LLVMTypeRef type);
-
 static void si_build_vs_prolog_function(struct si_shader_context *ctx,
                                        union si_shader_part_key *key);
 static void si_build_tcs_epilog_function(struct si_shader_context *ctx,
@@ -3558,7 +3556,7 @@ static void emit_optimization_barrier(struct 
si_shader_context *ctx,
                LLVMValueRef inlineasm = LLVMConstInlineAsm(ftype, code, 
"=v,0", true, false);
                LLVMValueRef vgpr = *pvgpr;
                LLVMTypeRef vgpr_type = LLVMTypeOf(vgpr);
-               unsigned vgpr_size = llvm_get_type_size(vgpr_type);
+               unsigned vgpr_size = ac_get_type_size(vgpr_type);
                LLVMValueRef vgpr0;
 
                assert(vgpr_size % 4 == 0);
@@ -4226,29 +4224,6 @@ static void declare_streamout_params(struct 
si_shader_context *ctx,
        }
 }
 
-static unsigned llvm_get_type_size(LLVMTypeRef type)
-{
-       LLVMTypeKind kind = LLVMGetTypeKind(type);
-
-       switch (kind) {
-       case LLVMIntegerTypeKind:
-               return LLVMGetIntTypeWidth(type) / 8;
-       case LLVMFloatTypeKind:
-               return 4;
-       case LLVMPointerTypeKind:
-               return 8;
-       case LLVMVectorTypeKind:
-               return LLVMGetVectorSize(type) *
-                      llvm_get_type_size(LLVMGetElementType(type));
-       case LLVMArrayTypeKind:
-               return LLVMGetArrayLength(type) *
-                      llvm_get_type_size(LLVMGetElementType(type));
-       default:
-               assert(0);
-               return 0;
-       }
-}
-
 static void declare_lds_as_pointer(struct si_shader_context *ctx)
 {
        struct gallivm_state *gallivm = &ctx->gallivm;
@@ -4702,10 +4677,10 @@ static void create_function(struct si_shader_context 
*ctx)
        shader->info.num_input_vgprs = 0;
 
        for (i = 0; i < fninfo.num_sgpr_params; ++i)
-               shader->info.num_input_sgprs += 
llvm_get_type_size(fninfo.types[i]) / 4;
+               shader->info.num_input_sgprs += 
ac_get_type_size(fninfo.types[i]) / 4;
 
        for (; i < fninfo.num_params; ++i)
-               shader->info.num_input_vgprs += 
llvm_get_type_size(fninfo.types[i]) / 4;
+               shader->info.num_input_vgprs += 
ac_get_type_size(fninfo.types[i]) / 4;
 
        assert(shader->info.num_input_vgprs >= num_prolog_vgprs);
        shader->info.num_input_vgprs -= num_prolog_vgprs;
@@ -5671,7 +5646,7 @@ static void si_count_scratch_private_memory(struct 
si_shader_context *ctx)
                        LLVMTypeRef type = LLVMGetElementType(LLVMTypeOf(inst));
                        /* No idea why LLVM aligns allocas to 4 elements. */
                        unsigned alignment = LLVMGetAlignment(inst);
-                       unsigned dw_size = align(llvm_get_type_size(type) / 4, 
alignment);
+                       unsigned dw_size = align(ac_get_type_size(type) / 4, 
alignment);
                        ctx->shader->config.private_mem_vgprs += dw_size;
                }
                bb = LLVMGetNextBasicBlock(bb);
@@ -6193,9 +6168,9 @@ static void si_build_wrapper_function(struct 
si_shader_context *ctx,
 
                if (ac_is_sgpr_param(param)) {
                        assert(num_vgprs == 0);
-                       num_sgprs += llvm_get_type_size(LLVMTypeOf(param)) / 4;
+                       num_sgprs += ac_get_type_size(LLVMTypeOf(param)) / 4;
                } else {
-                       num_vgprs += llvm_get_type_size(LLVMTypeOf(param)) / 4;
+                       num_vgprs += ac_get_type_size(LLVMTypeOf(param)) / 4;
                }
        }
 
@@ -6203,7 +6178,7 @@ static void si_build_wrapper_function(struct 
si_shader_context *ctx,
        while (gprs < num_sgprs + num_vgprs) {
                LLVMValueRef param = LLVMGetParam(parts[main_part], 
fninfo.num_params);
                LLVMTypeRef type = LLVMTypeOf(param);
-               unsigned size = llvm_get_type_size(type) / 4;
+               unsigned size = ac_get_type_size(type) / 4;
 
                add_arg(&fninfo, gprs < num_sgprs ? ARG_SGPR : ARG_VGPR, type);
 
@@ -6230,7 +6205,7 @@ static void si_build_wrapper_function(struct 
si_shader_context *ctx,
                LLVMValueRef param = LLVMGetParam(ctx->main_fn, i);
                LLVMTypeRef param_type = LLVMTypeOf(param);
                LLVMTypeRef out_type = i < fninfo.num_sgpr_params ? ctx->i32 : 
ctx->f32;
-               unsigned size = llvm_get_type_size(param_type) / 4;
+               unsigned size = ac_get_type_size(param_type) / 4;
 
                if (size == 1) {
                        if (param_type != out_type)
@@ -6292,7 +6267,7 @@ static void si_build_wrapper_function(struct 
si_shader_context *ctx,
 
                        param = LLVMGetParam(parts[part], param_idx);
                        param_type = LLVMTypeOf(param);
-                       param_size = llvm_get_type_size(param_type) / 4;
+                       param_size = ac_get_type_size(param_type) / 4;
                        is_sgpr = ac_is_sgpr_param(param);
 
                        if (is_sgpr) {

_______________________________________________
mesa-commit mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/mesa-commit

Reply via email to