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 <samuel.pitoi...@gmail.com>
---
 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 2034039543..46bb4decab 100644
--- a/src/amd/common/ac_nir_to_llvm.c
+++ b/src/amd/common/ac_nir_to_llvm.c
@@ -6681,7 +6681,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));
@@ -7093,7 +7097,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.15.1

_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to