[Mesa-dev] [PATCH] radv: add RADV_DEBUG=checkir

Bas Nieuwenhuizen bas at basnieuwenhuizen.nl
Thu Jun 14 13:17:27 UTC 2018


Reviewed-by: Bas Nieuwenhuizen <bas at basnieuwenhuizen.nl>

On Thu, Jun 14, 2018 at 2:28 PM, Samuel Pitoiset
<samuel.pitoiset at gmail.com> wrote:
> This allows to run the LLVM verifier pass.
>
> Signed-off-by: Samuel Pitoiset <samuel.pitoiset at gmail.com>
> ---
>  src/amd/vulkan/radv_debug.h       |  1 +
>  src/amd/vulkan/radv_device.c      |  1 +
>  src/amd/vulkan/radv_nir_to_llvm.c | 10 +++++++---
>  src/amd/vulkan/radv_shader.c      |  1 +
>  src/amd/vulkan/radv_shader.h      |  1 +
>  5 files changed, 11 insertions(+), 3 deletions(-)
>
> diff --git a/src/amd/vulkan/radv_debug.h b/src/amd/vulkan/radv_debug.h
> index 762b338219..1e71349509 100644
> --- a/src/amd/vulkan/radv_debug.h
> +++ b/src/amd/vulkan/radv_debug.h
> @@ -48,6 +48,7 @@ enum {
>         RADV_DEBUG_INFO              = 0x40000,
>         RADV_DEBUG_ERRORS            = 0x80000,
>         RADV_DEBUG_STARTUP           = 0x100000,
> +       RADV_DEBUG_CHECKIR           = 0x200000,
>  };
>
>  enum {
> diff --git a/src/amd/vulkan/radv_device.c b/src/amd/vulkan/radv_device.c
> index 5936b43093..1ffbe75ef6 100644
> --- a/src/amd/vulkan/radv_device.c
> +++ b/src/amd/vulkan/radv_device.c
> @@ -410,6 +410,7 @@ static const struct debug_control radv_debug_options[] = {
>         {"info", RADV_DEBUG_INFO},
>         {"errors", RADV_DEBUG_ERRORS},
>         {"startup", RADV_DEBUG_STARTUP},
> +       {"checkir", RADV_DEBUG_CHECKIR},
>         {NULL, 0}
>  };
>
> diff --git a/src/amd/vulkan/radv_nir_to_llvm.c b/src/amd/vulkan/radv_nir_to_llvm.c
> index a56f017e25..5168c9d554 100644
> --- a/src/amd/vulkan/radv_nir_to_llvm.c
> +++ b/src/amd/vulkan/radv_nir_to_llvm.c
> @@ -2967,13 +2967,17 @@ handle_shader_outputs_post(struct ac_shader_abi *abi, unsigned max_outputs,
>         }
>  }
>
> -static void ac_llvm_finalize_module(struct radv_shader_context *ctx)
> +static void ac_llvm_finalize_module(struct radv_shader_context *ctx,
> +                                   const struct radv_nir_compiler_options *options)
>  {
>         LLVMPassManagerRef passmgr;
>         /* Create the pass manager */
>         passmgr = LLVMCreateFunctionPassManagerForModule(
>                                                         ctx->ac.module);
>
> +       if (options->check_ir)
> +               LLVMAddVerifierPass(passmgr);
> +
>         /* This pass should eliminate all the load and store instructions */
>         LLVMAddPromoteMemoryToRegisterPass(passmgr);
>
> @@ -3299,7 +3303,7 @@ LLVMModuleRef ac_translate_nir_to_llvm(LLVMTargetMachineRef tm,
>         if (options->dump_preoptir)
>                 ac_dump_module(ctx.ac.module);
>
> -       ac_llvm_finalize_module(&ctx);
> +       ac_llvm_finalize_module(&ctx, options);
>
>         if (shader_count == 1)
>                 ac_nir_eliminate_const_vs_outputs(&ctx);
> @@ -3617,7 +3621,7 @@ radv_compile_gs_copy_shader(LLVMTargetMachineRef tm,
>
>         LLVMBuildRetVoid(ctx.ac.builder);
>
> -       ac_llvm_finalize_module(&ctx);
> +       ac_llvm_finalize_module(&ctx, options);
>
>         ac_compile_llvm_module(tm, ctx.ac.module, binary, config, shader_info,
>                                MESA_SHADER_VERTEX, options);
> diff --git a/src/amd/vulkan/radv_shader.c b/src/amd/vulkan/radv_shader.c
> index 76790a1904..a68e1d0254 100644
> --- a/src/amd/vulkan/radv_shader.c
> +++ b/src/amd/vulkan/radv_shader.c
> @@ -571,6 +571,7 @@ shader_variant_create(struct radv_device *device,
>         options->dump_preoptir = options->dump_shader &&
>                                  device->instance->debug_flags & RADV_DEBUG_PREOPTIR;
>         options->record_llvm_ir = device->keep_shader_info;
> +       options->check_ir = device->instance->debug_flags & RADV_DEBUG_CHECKIR;
>         options->tess_offchip_block_dw_size = device->tess_offchip_block_dw_size;
>         options->address32_hi = device->physical_device->rad_info.address32_hi;
>
> diff --git a/src/amd/vulkan/radv_shader.h b/src/amd/vulkan/radv_shader.h
> index 05de188e3f..0473f3fa6a 100644
> --- a/src/amd/vulkan/radv_shader.h
> +++ b/src/amd/vulkan/radv_shader.h
> @@ -120,6 +120,7 @@ struct radv_nir_compiler_options {
>         bool dump_shader;
>         bool dump_preoptir;
>         bool record_llvm_ir;
> +       bool check_ir;
>         enum radeon_family family;
>         enum chip_class chip_class;
>         uint32_t tess_offchip_block_dw_size;
> --
> 2.17.1
>
> _______________________________________________
> 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