Mesa (master): gallivm: add wrappers for missing functions in LLVM <= 3.8
Marek Olšák
mareko at kemper.freedesktop.org
Thu Oct 20 09:11:40 UTC 2016
Module: Mesa
Branch: master
Commit: 2db56434d4a275b5b24445dcaeaa024eca6fa7f9
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=2db56434d4a275b5b24445dcaeaa024eca6fa7f9
Author: Marek Olšák <marek.olsak at amd.com>
Date: Thu Oct 20 00:09:44 2016 +0200
gallivm: add wrappers for missing functions in LLVM <= 3.8
radeonsi needs these.
Reviewed-by: Nicolai Hähnle <nicolai.haehnle at amd.com>
---
src/gallium/auxiliary/gallivm/lp_bld_misc.cpp | 21 +++++++++++++++++++++
src/gallium/auxiliary/gallivm/lp_bld_misc.h | 6 ++++++
2 files changed, 27 insertions(+)
diff --git a/src/gallium/auxiliary/gallivm/lp_bld_misc.cpp b/src/gallium/auxiliary/gallivm/lp_bld_misc.cpp
index 791a470..f4045ad 100644
--- a/src/gallium/auxiliary/gallivm/lp_bld_misc.cpp
+++ b/src/gallium/auxiliary/gallivm/lp_bld_misc.cpp
@@ -77,6 +77,7 @@
#include <llvm/Support/TargetSelect.h>
+#include <llvm/IR/CallSite.h>
#include <llvm/IR/IRBuilder.h>
#include <llvm/IR/Module.h>
#include <llvm/Support/CBindingWrapping.h>
@@ -708,3 +709,23 @@ lp_add_attr_dereferenceable(LLVMValueRef val, uint64_t bytes)
A->addAttr(llvm::AttributeSet::get(A->getContext(), A->getArgNo() + 1, B));
#endif
}
+
+extern "C" LLVMValueRef
+lp_get_called_value(LLVMValueRef call)
+{
+#if HAVE_LLVM >= 0x0309
+ return LLVMGetCalledValue(call);
+#else
+ return llvm::wrap(llvm::CallSite(llvm::unwrap<llvm::Instruction>(call)).getCalledValue());
+#endif
+}
+
+extern "C" bool
+lp_is_function(LLVMValueRef v)
+{
+#if HAVE_LLVM >= 0x0309
+ return LLVMGetValueKind(v) == LLVMFunctionValueKind;
+#else
+ return llvm::isa<llvm::Function>(llvm::unwrap(v));
+#endif
+}
diff --git a/src/gallium/auxiliary/gallivm/lp_bld_misc.h b/src/gallium/auxiliary/gallivm/lp_bld_misc.h
index c127c48..a55c6bd 100644
--- a/src/gallium/auxiliary/gallivm/lp_bld_misc.h
+++ b/src/gallium/auxiliary/gallivm/lp_bld_misc.h
@@ -76,6 +76,12 @@ lp_free_memory_manager(LLVMMCJITMemoryManagerRef memorymgr);
extern void
lp_add_attr_dereferenceable(LLVMValueRef val, uint64_t bytes);
+extern LLVMValueRef
+lp_get_called_value(LLVMValueRef call);
+
+extern bool
+lp_is_function(LLVMValueRef v);
+
#ifdef __cplusplus
}
#endif
More information about the mesa-commit
mailing list