Mesa (master): radeon/llvm: enable unsafe math for graphics shaders

Tom Stellard tstellar at kemper.freedesktop.org
Wed Jul 23 14:43:06 UTC 2014


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

Author: Grigori Goronzy <greg at chown.ath.cx>
Date:   Thu Jul 17 18:44:25 2014 +0200

radeon/llvm: enable unsafe math for graphics shaders

Accuracy of some operations was recently improved in the R600 backend,
at the cost of slower code. This is required for compute shaders,
but not for graphics shaders. Add unsafe-fp-math hint to make LLVM
generate faster but possibly less accurate code.

Piglit didn't indicate any regressions.

Reviewed-by: Tom Stellard <thomas.stellard at amd.com>

---

 src/gallium/drivers/radeon/radeon_llvm_emit.c |    5 +++++
 1 file changed, 5 insertions(+)

diff --git a/src/gallium/drivers/radeon/radeon_llvm_emit.c b/src/gallium/drivers/radeon/radeon_llvm_emit.c
index 1b17dd4..171ccaa 100644
--- a/src/gallium/drivers/radeon/radeon_llvm_emit.c
+++ b/src/gallium/drivers/radeon/radeon_llvm_emit.c
@@ -26,6 +26,7 @@
 #include "radeon_llvm_emit.h"
 #include "radeon_elf_util.h"
 #include "util/u_memory.h"
+#include "pipe/p_shader_tokens.h"
 
 #include <llvm-c/Target.h>
 #include <llvm-c/TargetMachine.h>
@@ -50,6 +51,10 @@ void radeon_llvm_shader_type(LLVMValueRef F, unsigned type)
   sprintf(Str, "%1d", type);
 
   LLVMAddTargetDependentFunctionAttr(F, "ShaderType", Str);
+
+  if (type != TGSI_PROCESSOR_COMPUTE) {
+    LLVMAddTargetDependentFunctionAttr(F, "unsafe-fp-math", "true");
+  }
 }
 
 static void init_r600_target() {




More information about the mesa-commit mailing list