aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/amd/common/ac_llvm_helper.cpp30
-rw-r--r--src/amd/common/ac_llvm_util.h9
-rw-r--r--src/gallium/auxiliary/gallivm/lp_bld_misc.cpp29
-rw-r--r--src/gallium/auxiliary/gallivm/lp_bld_misc.h9
-rw-r--r--src/gallium/drivers/radeonsi/si_shader_tgsi_setup.c8
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 4db703622ca..e42d00280bc 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 61bcc4e54ed..84fcbf111cf 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 13194072902..79dbedbb565 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 1b725d10d7c..ca5ba5c44f2 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 2ca036e67d3..fc141ca1e03 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,