summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSamuel Pitoiset <samuel.pitoiset@gmail.com>2018-01-19 12:12:02 +0100
committerSamuel Pitoiset <samuel.pitoiset@gmail.com>2018-01-22 12:28:33 +0100
commit33e6e5e6a45a63728053d92c366fe8b320199843 (patch)
treea5dd61a31210be3d044712e50db41daba522aea6
parent525b4f7548462bfc2e82f2d1f04f61ce6854a3c5 (diff)
radv: add an option that allows to dump pre-optimization ir
With RADV_DEBUG=preoptir. Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com> Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com>
-rw-r--r--src/amd/common/ac_nir_to_llvm.c3
-rw-r--r--src/amd/common/ac_nir_to_llvm.h1
-rw-r--r--src/amd/vulkan/radv_debug.h1
-rw-r--r--src/amd/vulkan/radv_device.c1
-rw-r--r--src/amd/vulkan/radv_shader.c2
5 files changed, 8 insertions, 0 deletions
diff --git a/src/amd/common/ac_nir_to_llvm.c b/src/amd/common/ac_nir_to_llvm.c
index 2aef51be855..3d9cb249ad6 100644
--- a/src/amd/common/ac_nir_to_llvm.c
+++ b/src/amd/common/ac_nir_to_llvm.c
@@ -6848,6 +6848,9 @@ LLVMModuleRef ac_translate_nir_to_llvm(LLVMTargetMachineRef tm,
LLVMBuildRetVoid(ctx.builder);
+ if (options->dump_preoptir)
+ ac_dump_module(ctx.module);
+
ac_llvm_finalize_module(&ctx);
if (shader_count == 1)
diff --git a/src/amd/common/ac_nir_to_llvm.h b/src/amd/common/ac_nir_to_llvm.h
index 1737866166e..62ea38be373 100644
--- a/src/amd/common/ac_nir_to_llvm.h
+++ b/src/amd/common/ac_nir_to_llvm.h
@@ -81,6 +81,7 @@ struct ac_nir_compiler_options {
bool unsafe_math;
bool supports_spill;
bool clamp_shadow_reference;
+ bool dump_preoptir;
enum radeon_family family;
enum chip_class chip_class;
};
diff --git a/src/amd/vulkan/radv_debug.h b/src/amd/vulkan/radv_debug.h
index 5b37bfe0847..804f620690d 100644
--- a/src/amd/vulkan/radv_debug.h
+++ b/src/amd/vulkan/radv_debug.h
@@ -42,6 +42,7 @@ enum {
RADV_DEBUG_ZERO_VRAM = 0x1000,
RADV_DEBUG_SYNC_SHADERS = 0x2000,
RADV_DEBUG_NO_SISCHED = 0x4000,
+ RADV_DEBUG_PREOPTIR = 0x8000,
};
enum {
diff --git a/src/amd/vulkan/radv_device.c b/src/amd/vulkan/radv_device.c
index b5ae1032392..4463e6945ef 100644
--- a/src/amd/vulkan/radv_device.c
+++ b/src/amd/vulkan/radv_device.c
@@ -336,6 +336,7 @@ static const struct debug_control radv_debug_options[] = {
{"zerovram", RADV_DEBUG_ZERO_VRAM},
{"syncshaders", RADV_DEBUG_SYNC_SHADERS},
{"nosisched", RADV_DEBUG_NO_SISCHED},
+ {"preoptir", RADV_DEBUG_PREOPTIR},
{NULL, 0}
};
diff --git a/src/amd/vulkan/radv_shader.c b/src/amd/vulkan/radv_shader.c
index 3bcaac168ad..620effe50e6 100644
--- a/src/amd/vulkan/radv_shader.c
+++ b/src/amd/vulkan/radv_shader.c
@@ -476,6 +476,8 @@ shader_variant_create(struct radv_device *device,
options->family = chip_family;
options->chip_class = device->physical_device->rad_info.chip_class;
+ options->dump_preoptir = radv_can_dump_shader(device, module) &&
+ device->instance->debug_flags & RADV_DEBUG_PREOPTIR;
if (options->supports_spill)
tm_options |= AC_TM_SUPPORTS_SPILL;