On Tue, Aug 09, 2016 at 12:36:40PM +0200, Nicolai Hähnle wrote:
> From: Nicolai Hähnle <nicolai.haeh...@amd.com>
> 
This is a great idea.

Reviewed-by: Tom Stellard <thomas.stell...@amd.com>

> ---
>  src/gallium/drivers/radeon/radeon_setup_tgsi_llvm.c | 14 ++++++++++++--
>  1 file changed, 12 insertions(+), 2 deletions(-)
> 
> diff --git a/src/gallium/drivers/radeon/radeon_setup_tgsi_llvm.c 
> b/src/gallium/drivers/radeon/radeon_setup_tgsi_llvm.c
> index 7b96a58..22ff18e 100644
> --- a/src/gallium/drivers/radeon/radeon_setup_tgsi_llvm.c
> +++ b/src/gallium/drivers/radeon/radeon_setup_tgsi_llvm.c
> @@ -31,20 +31,21 @@
>  #include "gallivm/lp_bld_init.h"
>  #include "gallivm/lp_bld_intr.h"
>  #include "gallivm/lp_bld_misc.h"
>  #include "gallivm/lp_bld_swizzle.h"
>  #include "tgsi/tgsi_info.h"
>  #include "tgsi/tgsi_parse.h"
>  #include "util/u_math.h"
>  #include "util/u_memory.h"
>  #include "util/u_debug.h"
>  
> +#include <stdio.h>
>  #include <llvm-c/Core.h>
>  #include <llvm-c/Transforms/Scalar.h>
>  
>  LLVMTypeRef tgsi2llvmtype(struct lp_build_tgsi_context *bld_base,
>                         enum tgsi_opcode_type type)
>  {
>       LLVMContextRef ctx = bld_base->base.gallivm->context;
>  
>       switch (type) {
>       case TGSI_TYPE_UNSIGNED:
> @@ -421,20 +422,21 @@ static void emit_declaration(struct 
> lp_build_tgsi_context *bld_base,
>                                ctx->soa.addr[idx][chan] = 
> si_build_alloca_undef(
>                                       &ctx->gallivm,
>                                       ctx->soa.bld_base.uint_bld.elem_type, 
> "");
>                       }
>               }
>               break;
>       }
>  
>       case TGSI_FILE_TEMPORARY:
>       {
> +             char name[16] = "";
>               LLVMValueRef array_alloca = NULL;
>               unsigned decl_size;
>               first = decl->Range.First;
>               last = decl->Range.Last;
>               decl_size = 4 * ((last - first) + 1);
>               if (decl->Declaration.Array) {
>                       unsigned id = decl->Array.ArrayID - 1;
>                       if (!ctx->arrays) {
>                               int size = 
> bld_base->info->array_max[TGSI_FILE_TEMPORARY];
>                               ctx->arrays = CALLOC(size, 
> sizeof(ctx->arrays[0]));
> @@ -458,34 +460,42 @@ static void emit_declaration(struct 
> lp_build_tgsi_context *bld_base,
>                               ctx->arrays[id].alloca = array_alloca;
>                       }
>               }
>  
>               if (!ctx->temps_count) {
>                       ctx->temps_count = 
> bld_base->info->file_max[TGSI_FILE_TEMPORARY] + 1;
>                       ctx->temps = MALLOC(TGSI_NUM_CHANNELS * 
> ctx->temps_count * sizeof(LLVMValueRef));
>               }
>               if (!array_alloca) {
>                       for (i = 0; i < decl_size; ++i) {
> +#ifdef DEBUG
> +                             snprintf(name, sizeof(name), "TEMP%d.%c",
> +                                      first + i / 4, "xyzw"[i % 4]);
> +#endif
>                               ctx->temps[first * TGSI_NUM_CHANNELS + i] =
>                                       
> si_build_alloca_undef(bld_base->base.gallivm,
>                                                             
> bld_base->base.vec_type,
> -                                                           "temp");
> +                                                           name);
>                       }
>               } else {
>                       LLVMValueRef idxs[2] = {
>                               bld_base->uint_bld.zero,
>                               NULL
>                       };
>                       for (i = 0; i < decl_size; ++i) {
> +#ifdef DEBUG
> +                             snprintf(name, sizeof(name), "TEMP%d.%c",
> +                                      first + i / 4, "xyzw"[i % 4]);
> +#endif
>                               idxs[1] = 
> lp_build_const_int32(bld_base->base.gallivm, i);
>                               ctx->temps[first * TGSI_NUM_CHANNELS + i] =
> -                                     LLVMBuildGEP(builder, array_alloca, 
> idxs, 2, "temp");
> +                                     LLVMBuildGEP(builder, array_alloca, 
> idxs, 2, name);
>                       }
>               }
>               break;
>       }
>       case TGSI_FILE_INPUT:
>       {
>               unsigned idx;
>               for (idx = decl->Range.First; idx <= decl->Range.Last; idx++) {
>                       if (ctx->load_input)
>                               ctx->load_input(ctx, idx, decl);
> -- 
> 2.7.4
> 
> _______________________________________________
> mesa-dev mailing list
> mesa-dev@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev
_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to