[Mesa-dev] [PATCH 10/20] radeonsi: introduce bitcast_llvmtype()

Marek Olšák maraeo at gmail.com
Fri Nov 10 17:03:55 UTC 2017


I don't think this wrapper is useful.

Marek

On Fri, Nov 10, 2017 at 4:13 AM, Timothy Arceri <tarceri at itsqueeze.com> wrote:
> This is like bitcast() but takes an llvm type rather than a tgsi
> type.
> ---
>  src/gallium/drivers/radeonsi/si_shader_internal.h   | 3 +++
>  src/gallium/drivers/radeonsi/si_shader_tgsi_setup.c | 9 +++++++++
>  2 files changed, 12 insertions(+)
>
> diff --git a/src/gallium/drivers/radeonsi/si_shader_internal.h b/src/gallium/drivers/radeonsi/si_shader_internal.h
> index 7ff8815b92..4da39830f6 100644
> --- a/src/gallium/drivers/radeonsi/si_shader_internal.h
> +++ b/src/gallium/drivers/radeonsi/si_shader_internal.h
> @@ -242,20 +242,23 @@ si_shader_context_from_abi(struct ac_shader_abi *abi)
>
>  void si_llvm_add_attribute(LLVMValueRef F, const char *name, int value);
>
>  unsigned si_llvm_compile(LLVMModuleRef M, struct ac_shader_binary *binary,
>                          LLVMTargetMachineRef tm,
>                          struct pipe_debug_callback *debug);
>
>  LLVMTypeRef tgsi2llvmtype(struct lp_build_tgsi_context *bld_base,
>                           enum tgsi_opcode_type type);
>
> +LLVMValueRef bitcast_llvmtype(struct si_shader_context *ctx,
> +                             LLVMTypeRef type, LLVMValueRef value);
> +
>  LLVMValueRef bitcast(struct lp_build_tgsi_context *bld_base,
>                      enum tgsi_opcode_type type, LLVMValueRef value);
>
>  LLVMValueRef si_llvm_bound_index(struct si_shader_context *ctx,
>                                  LLVMValueRef index,
>                                  unsigned num);
>
>  void si_llvm_context_init(struct si_shader_context *ctx,
>                           struct si_screen *sscreen,
>                           LLVMTargetMachineRef tm);
> diff --git a/src/gallium/drivers/radeonsi/si_shader_tgsi_setup.c b/src/gallium/drivers/radeonsi/si_shader_tgsi_setup.c
> index 59d02605e9..b6a919fc8f 100644
> --- a/src/gallium/drivers/radeonsi/si_shader_tgsi_setup.c
> +++ b/src/gallium/drivers/radeonsi/si_shader_tgsi_setup.c
> @@ -177,20 +177,29 @@ LLVMTypeRef tgsi2llvmtype(struct lp_build_tgsi_context *bld_base,
>         case TGSI_TYPE_DOUBLE:
>                 return ctx->ac.f64;
>         case TGSI_TYPE_UNTYPED:
>         case TGSI_TYPE_FLOAT:
>                 return ctx->ac.f32;
>         default: break;
>         }
>         return 0;
>  }
>
> +LLVMValueRef bitcast_llvmtype(struct si_shader_context *ctx,
> +                             LLVMTypeRef type, LLVMValueRef value)
> +{
> +       if (type)
> +               return LLVMBuildBitCast(ctx->ac.builder, value, type, "");
> +       else
> +               return value;
> +}
> +
>  LLVMValueRef bitcast(struct lp_build_tgsi_context *bld_base,
>                      enum tgsi_opcode_type type, LLVMValueRef value)
>  {
>         struct si_shader_context *ctx = si_shader_context(bld_base);
>         LLVMTypeRef dst_type = tgsi2llvmtype(bld_base, type);
>
>         if (dst_type)
>                 return LLVMBuildBitCast(ctx->ac.builder, value, dst_type, "");
>         else
>                 return value;
> --
> 2.14.3
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev


More information about the mesa-dev mailing list