Mesa (master): ac: set fast math flags when RADV_DEBUG="unsafemath" is used

Samuel Pitoiset hakzsam at kemper.freedesktop.org
Tue Jan 16 20:58:51 UTC 2018


Module: Mesa
Branch: master
Commit: 4f5318df2cba4f4a455cf3a5aaa020908806987d
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=4f5318df2cba4f4a455cf3a5aaa020908806987d

Author: Samuel Pitoiset <samuel.pitoiset at gmail.com>
Date:   Mon Jan 15 14:51:44 2018 +0100

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 <samuel.pitoiset at gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas at basnieuwenhuizen.nl>

---

 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 aca9a0a260..635a74d243 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;
 




More information about the mesa-commit mailing list