From: Marek Olšák <marek.ol...@amd.com>

Required for 1/sqrt ==> rsq.

We should finally fix the hang instead of running away from the issue. This
assumes the bug is in LLVM and we have time to fix it before the release.
Include compute shaders as well, which only affects TGSI and thus OpenGL.

Totals:
SGPRS: 344368 -> 345104 (0.21 %)
VGPRS: 197552 -> 197420 (-0.07 %)
Code Size: 7366304 -> 7324692 (-0.56 %) bytes
LDS: 91 -> 91 (0.00 %) blocks
Scratch: 1615872 -> 1524736 (-5.64 %) bytes per wave

Totals from affected shaders:
SGPRS: 146696 -> 147432 (0.50 %)
VGPRS: 87212 -> 87080 (-0.15 %)
Code Size: 3852664 -> 3811052 (-1.08 %) bytes
LDS: 48 -> 48 (0.00 %) blocks
Scratch: 1179648 -> 1088512 (-7.73 %) bytes per wave
---
 src/gallium/drivers/radeon/radeon_llvm_emit.c | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/src/gallium/drivers/radeon/radeon_llvm_emit.c 
b/src/gallium/drivers/radeon/radeon_llvm_emit.c
index 6b2ebde..4bda4a4 100644
--- a/src/gallium/drivers/radeon/radeon_llvm_emit.c
+++ b/src/gallium/drivers/radeon/radeon_llvm_emit.c
@@ -84,6 +84,13 @@ void radeon_llvm_shader_type(LLVMValueRef F, unsigned type)
        sprintf(Str, "%1d", llvm_type);
 
        LLVMAddTargetDependentFunctionAttr(F, "ShaderType", Str);
+
+#if HAVE_LLVM >= 0x0308
+       /* This only affects TGSI (OpenGL), so it's okay to set it for
+        * compute shaders too.
+        */
+       LLVMAddTargetDependentFunctionAttr(F, "unsafe-fp-math", "true");
+#endif
 }
 
 static void init_r600_target()
-- 
2.1.4

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

Reply via email to