Mesa (master): gallivm: add helper lp_add_attr_dereferenceable

Marek Olšák mareko at kemper.freedesktop.org
Wed Jul 13 17:49:55 UTC 2016


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

Author: Marek Olšák <marek.olsak at amd.com>
Date:   Tue Jul 12 18:49:57 2016 +0200

gallivm: add helper lp_add_attr_dereferenceable

Not sure if this is the right way to do it, but it seems to work.

v2: make it a no-op on LLVM <= 3.5

Reviewed-by: Roland Scheidegger <sroland at vmware.com>
Reviewed-by: Nicolai Hähnle <nicolai.haehnle at amd.com>

---

 src/gallium/auxiliary/gallivm/lp_bld_misc.cpp | 11 +++++++++++
 src/gallium/auxiliary/gallivm/lp_bld_misc.h   |  3 +++
 2 files changed, 14 insertions(+)

diff --git a/src/gallium/auxiliary/gallivm/lp_bld_misc.cpp b/src/gallium/auxiliary/gallivm/lp_bld_misc.cpp
index 23ef3ed..791a470 100644
--- a/src/gallium/auxiliary/gallivm/lp_bld_misc.cpp
+++ b/src/gallium/auxiliary/gallivm/lp_bld_misc.cpp
@@ -697,3 +697,14 @@ lp_free_memory_manager(LLVMMCJITMemoryManagerRef memorymgr)
 {
    delete reinterpret_cast<BaseMemoryManager*>(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
+}
diff --git a/src/gallium/auxiliary/gallivm/lp_bld_misc.h b/src/gallium/auxiliary/gallivm/lp_bld_misc.h
index d038e3b..c127c48 100644
--- a/src/gallium/auxiliary/gallivm/lp_bld_misc.h
+++ b/src/gallium/auxiliary/gallivm/lp_bld_misc.h
@@ -73,6 +73,9 @@ lp_get_default_memory_manager();
 extern void
 lp_free_memory_manager(LLVMMCJITMemoryManagerRef memorymgr);
 
+extern void
+lp_add_attr_dereferenceable(LLVMValueRef val, uint64_t bytes);
+
 #ifdef __cplusplus
 }
 #endif




More information about the mesa-commit mailing list