From: Marek Olšák <[email protected]> radeonsi needs these. --- 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 @@ -70,20 +70,21 @@ #include <llvm/ExecutionEngine/JITMemoryManager.h> #else #include <llvm/ExecutionEngine/SectionMemoryManager.h> #endif #include <llvm/Support/CommandLine.h> #include <llvm/Support/Host.h> #include <llvm/Support/PrettyStackTrace.h> #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> #include <llvm/Config/llvm-config.h> #if LLVM_USE_INTEL_JITEVENTS #include <llvm/ExecutionEngine/JITEventListener.h> #endif // Workaround http://llvm.org/PR23628 @@ -701,10 +702,30 @@ lp_free_memory_manager(LLVMMCJITMemoryManagerRef memorymgr) extern "C" void lp_add_attr_dereferenceable(LLVMValueRef val, uint64_t bytes) { #if HAVE_LLVM >= 0x0306 llvm::Argument *A = llvm::unwrap<llvm::Argument>(val); llvm::AttrBuilder B; B.addDereferenceableAttr(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 @@ -69,16 +69,22 @@ lp_free_generated_code(struct lp_generated_code *code); extern LLVMMCJITMemoryManagerRef lp_get_default_memory_manager(); extern void 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 #endif /* !LP_BLD_MISC_H */ -- 2.7.4 _______________________________________________ mesa-dev mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/mesa-dev
