Mesa (master): ac: import lp_create_builder() from gallivm

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


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

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

ac: import lp_create_builder() from gallivm

Signed-off-by: Samuel Pitoiset <samuel.pitoiset at gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas at basnieuwenhuizen.nl>

---

 src/amd/common/ac_llvm_helper.cpp                  | 30 ++++++++++++++++++++++
 src/amd/common/ac_llvm_util.h                      |  9 +++++++
 src/gallium/auxiliary/gallivm/lp_bld_misc.cpp      | 29 ---------------------
 src/gallium/auxiliary/gallivm/lp_bld_misc.h        |  9 -------
 .../drivers/radeonsi/si_shader_tgsi_setup.c        |  8 +++---
 5 files changed, 43 insertions(+), 42 deletions(-)

diff --git a/src/amd/common/ac_llvm_helper.cpp b/src/amd/common/ac_llvm_helper.cpp
index 4db703622c..e42d00280b 100644
--- a/src/amd/common/ac_llvm_helper.cpp
+++ b/src/amd/common/ac_llvm_helper.cpp
@@ -35,6 +35,7 @@
 #include <llvm/ExecutionEngine/ExecutionEngine.h>
 #include <llvm/IR/Attributes.h>
 #include <llvm/IR/CallSite.h>
+#include <llvm/IR/IRBuilder.h>
 
 #if HAVE_LLVM < 0x0500
 namespace llvm {
@@ -80,3 +81,32 @@ bool ac_llvm_is_function(LLVMValueRef v)
 	return llvm::isa<llvm::Function>(llvm::unwrap(v));
 #endif
 }
+
+LLVMBuilderRef ac_create_builder(LLVMContextRef ctx,
+				 enum ac_float_mode float_mode)
+{
+	LLVMBuilderRef builder = LLVMCreateBuilderInContext(ctx);
+
+#if HAVE_LLVM >= 0x0308
+	llvm::FastMathFlags flags;
+
+	switch (float_mode) {
+	case AC_FLOAT_MODE_DEFAULT:
+		break;
+	case AC_FLOAT_MODE_NO_SIGNED_ZEROS_FP_MATH:
+		flags.setNoSignedZeros();
+		llvm::unwrap(builder)->setFastMathFlags(flags);
+		break;
+	case AC_FLOAT_MODE_UNSAFE_FP_MATH:
+#if HAVE_LLVM >= 0x0600
+		flags.setFast();
+#else
+		flags.setUnsafeAlgebra();
+#endif
+		llvm::unwrap(builder)->setFastMathFlags(flags);
+		break;
+	}
+#endif
+
+	return builder;
+}
diff --git a/src/amd/common/ac_llvm_util.h b/src/amd/common/ac_llvm_util.h
index 61bcc4e54e..84fcbf111c 100644
--- a/src/amd/common/ac_llvm_util.h
+++ b/src/amd/common/ac_llvm_util.h
@@ -62,6 +62,12 @@ enum ac_target_machine_options {
 	AC_TM_PROMOTE_ALLOCA_TO_SCRATCH = (1 << 4),
 };
 
+enum ac_float_mode {
+	AC_FLOAT_MODE_DEFAULT,
+	AC_FLOAT_MODE_NO_SIGNED_ZEROS_FP_MATH,
+	AC_FLOAT_MODE_UNSAFE_FP_MATH,
+};
+
 const char *ac_get_llvm_processor_name(enum radeon_family family);
 LLVMTargetMachineRef ac_create_target_machine(enum radeon_family family, enum ac_target_machine_options tm_options);
 
@@ -77,6 +83,9 @@ void ac_dump_module(LLVMModuleRef module);
 LLVMValueRef ac_llvm_get_called_value(LLVMValueRef call);
 bool ac_llvm_is_function(LLVMValueRef v);
 
+LLVMBuilderRef ac_create_builder(LLVMContextRef ctx,
+				 enum ac_float_mode float_mode);
+
 void
 ac_llvm_add_target_dep_function_attr(LLVMValueRef F,
 				     const char *name, int value);
diff --git a/src/gallium/auxiliary/gallivm/lp_bld_misc.cpp b/src/gallium/auxiliary/gallivm/lp_bld_misc.cpp
index 1319407290..79dbedbb56 100644
--- a/src/gallium/auxiliary/gallivm/lp_bld_misc.cpp
+++ b/src/gallium/auxiliary/gallivm/lp_bld_misc.cpp
@@ -813,32 +813,3 @@ lp_is_function(LLVMValueRef v)
 	return llvm::isa<llvm::Function>(llvm::unwrap(v));
 #endif
 }
-
-extern "C" LLVMBuilderRef
-lp_create_builder(LLVMContextRef ctx, enum lp_float_mode float_mode)
-{
-   LLVMBuilderRef builder = LLVMCreateBuilderInContext(ctx);
-
-#if HAVE_LLVM >= 0x0308
-   llvm::FastMathFlags flags;
-
-   switch (float_mode) {
-   case LP_FLOAT_MODE_DEFAULT:
-      break;
-   case LP_FLOAT_MODE_NO_SIGNED_ZEROS_FP_MATH:
-      flags.setNoSignedZeros();
-      llvm::unwrap(builder)->setFastMathFlags(flags);
-      break;
-   case LP_FLOAT_MODE_UNSAFE_FP_MATH:
-#if HAVE_LLVM >= 0x0600
-      flags.setFast();
-#else
-      flags.setUnsafeAlgebra();
-#endif
-      llvm::unwrap(builder)->setFastMathFlags(flags);
-      break;
-   }
-#endif
-
-   return builder;
-}
diff --git a/src/gallium/auxiliary/gallivm/lp_bld_misc.h b/src/gallium/auxiliary/gallivm/lp_bld_misc.h
index 1b725d10d7..ca5ba5c44f 100644
--- a/src/gallium/auxiliary/gallivm/lp_bld_misc.h
+++ b/src/gallium/auxiliary/gallivm/lp_bld_misc.h
@@ -76,15 +76,6 @@ lp_get_called_value(LLVMValueRef call);
 extern bool
 lp_is_function(LLVMValueRef v);
 
-enum lp_float_mode {
-   LP_FLOAT_MODE_DEFAULT,
-   LP_FLOAT_MODE_NO_SIGNED_ZEROS_FP_MATH,
-   LP_FLOAT_MODE_UNSAFE_FP_MATH,
-};
-
-extern LLVMBuilderRef
-lp_create_builder(LLVMContextRef ctx, enum lp_float_mode float_mode);
-
 #ifdef __cplusplus
 }
 #endif
diff --git a/src/gallium/drivers/radeonsi/si_shader_tgsi_setup.c b/src/gallium/drivers/radeonsi/si_shader_tgsi_setup.c
index 2ca036e67d..fc141ca1e0 100644
--- a/src/gallium/drivers/radeonsi/si_shader_tgsi_setup.c
+++ b/src/gallium/drivers/radeonsi/si_shader_tgsi_setup.c
@@ -1160,11 +1160,11 @@ void si_llvm_context_init(struct si_shader_context *ctx,
 	LLVMDisposeMessage(data_layout_str);
 
 	bool unsafe_fpmath = (sscreen->debug_flags & DBG(UNSAFE_MATH)) != 0;
-	enum lp_float_mode float_mode =
-		unsafe_fpmath ? LP_FLOAT_MODE_UNSAFE_FP_MATH :
-				LP_FLOAT_MODE_NO_SIGNED_ZEROS_FP_MATH;
+	enum ac_float_mode float_mode =
+		unsafe_fpmath ? AC_FLOAT_MODE_UNSAFE_FP_MATH :
+				AC_FLOAT_MODE_NO_SIGNED_ZEROS_FP_MATH;
 
-	ctx->gallivm.builder = lp_create_builder(ctx->gallivm.context,
+	ctx->gallivm.builder = ac_create_builder(ctx->gallivm.context,
 						 float_mode);
 
 	ac_llvm_context_init(&ctx->ac, ctx->gallivm.context,




More information about the mesa-commit mailing list