From 4f5318df2cba4f4a455cf3a5aaa020908806987d Mon Sep 17 00:00:00 2001 From: Samuel Pitoiset Date: Mon, 15 Jan 2018 14:51:44 +0100 Subject: [PATCH] ac: set fast math flags when RADV_DEBUG="unsafemath" is used When that debug option is not used, we use the default float mode because the no signed zeros optimisation is not Vulkan compatible. Signed-off-by: Samuel Pitoiset Reviewed-by: Bas Nieuwenhuizen --- src/amd/common/ac_nir_to_llvm.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/amd/common/ac_nir_to_llvm.c b/src/amd/common/ac_nir_to_llvm.c index aca9a0a2601..635a74d2430 100644 --- a/src/amd/common/ac_nir_to_llvm.c +++ b/src/amd/common/ac_nir_to_llvm.c @@ -6683,7 +6683,11 @@ LLVMModuleRef ac_translate_nir_to_llvm(LLVMTargetMachineRef tm, LLVMDisposeTargetData(data_layout); LLVMDisposeMessage(data_layout_str); - ctx.builder = LLVMCreateBuilderInContext(ctx.context); + enum ac_float_mode float_mode = + options->unsafe_math ? AC_FLOAT_MODE_UNSAFE_FP_MATH : + AC_FLOAT_MODE_DEFAULT; + + ctx.builder = ac_create_builder(ctx.context, float_mode); ctx.ac.builder = ctx.builder; memset(shader_info, 0, sizeof(*shader_info)); @@ -7095,7 +7099,11 @@ void ac_create_gs_copy_shader(LLVMTargetMachineRef tm, ctx.is_gs_copy_shader = true; LLVMSetTarget(ctx.module, "amdgcn--"); - ctx.builder = LLVMCreateBuilderInContext(ctx.context); + enum ac_float_mode float_mode = + options->unsafe_math ? AC_FLOAT_MODE_UNSAFE_FP_MATH : + AC_FLOAT_MODE_DEFAULT; + + ctx.builder = ac_create_builder(ctx.context, float_mode); ctx.ac.builder = ctx.builder; ctx.stage = MESA_SHADER_VERTEX; -- 2.30.2