radeonsi: add a debug flag for unsafe math LLVM optimizations
Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
This commit is contained in:
@@ -482,6 +482,7 @@ static const struct debug_named_value common_debug_options[] = {
|
||||
{ "sisched", DBG_SI_SCHED, "Enable LLVM SI Machine Instruction Scheduler." },
|
||||
{ "mono", DBG_MONOLITHIC_SHADERS, "Use old-style monolithic shaders compiled on demand" },
|
||||
{ "noce", DBG_NO_CE, "Disable the constant engine"},
|
||||
{ "unsafemath", DBG_UNSAFE_MATH, "Enable unsafe math shader optimizations" },
|
||||
|
||||
DEBUG_NAMED_VALUE_END /* must be last */
|
||||
};
|
||||
|
||||
@@ -99,6 +99,7 @@
|
||||
#define DBG_SI_SCHED (1llu << 46)
|
||||
#define DBG_MONOLITHIC_SHADERS (1llu << 47)
|
||||
#define DBG_NO_CE (1llu << 48)
|
||||
#define DBG_UNSAFE_MATH (1llu << 49)
|
||||
|
||||
#define R600_MAP_BUFFER_ALIGNMENT 64
|
||||
#define R600_MAX_VIEWPORTS 16
|
||||
|
||||
@@ -5255,6 +5255,22 @@ static void si_create_function(struct si_shader_context *ctx,
|
||||
else
|
||||
LLVMAddAttribute(P, LLVMInRegAttribute);
|
||||
}
|
||||
|
||||
if (ctx->screen->b.debug_flags & DBG_UNSAFE_MATH) {
|
||||
/* These were copied from some LLVM test. */
|
||||
LLVMAddTargetDependentFunctionAttr(ctx->radeon_bld.main_fn,
|
||||
"less-precise-fpmad",
|
||||
"true");
|
||||
LLVMAddTargetDependentFunctionAttr(ctx->radeon_bld.main_fn,
|
||||
"no-infs-fp-math",
|
||||
"true");
|
||||
LLVMAddTargetDependentFunctionAttr(ctx->radeon_bld.main_fn,
|
||||
"no-nans-fp-math",
|
||||
"true");
|
||||
LLVMAddTargetDependentFunctionAttr(ctx->radeon_bld.main_fn,
|
||||
"unsafe-fp-math",
|
||||
"true");
|
||||
}
|
||||
}
|
||||
|
||||
static void create_meta_data(struct si_shader_context *ctx)
|
||||
|
||||
Reference in New Issue
Block a user