Am 12.07.2016 um 22:52 schrieb Marek Olšák:
> From: Marek Olšák <marek.ol...@amd.com>
> 
> Not sure if this is the right way to do it, but it seems to work.
> ---
>  src/gallium/auxiliary/gallivm/lp_bld_misc.cpp | 9 +++++++++
>  src/gallium/auxiliary/gallivm/lp_bld_misc.h   | 3 +++
>  2 files changed, 12 insertions(+)
> 
> diff --git a/src/gallium/auxiliary/gallivm/lp_bld_misc.cpp 
> b/src/gallium/auxiliary/gallivm/lp_bld_misc.cpp
> index 23ef3ed..d9b62b8 100644
> --- a/src/gallium/auxiliary/gallivm/lp_bld_misc.cpp
> +++ b/src/gallium/auxiliary/gallivm/lp_bld_misc.cpp
> @@ -697,3 +697,12 @@ lp_free_memory_manager(LLVMMCJITMemoryManagerRef 
> memorymgr)
>  {
>     delete reinterpret_cast<BaseMemoryManager*>(memorymgr);
>  }
> +
> +extern "C" void
> +lp_add_attr_dereferenceable(LLVMValueRef val, uint64_t bytes)
> +{
> +   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));
> +}
> 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
> 

Based on some quick grepping, I've got some suspicion this won't compile
with llvm versions earlier than 3.5.
If so, could you add some ifdef?
Otherwise looks reasonable enough (of course, this being settable with
the c api would be nicer...).

Roland

_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to