llvmpipe: add gallivm_add_global_mapping
Reviewed-by: Dave Airlie <airlied@redhat.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/29796>
This commit is contained in:
@@ -165,8 +165,8 @@ void lp_build_coro_add_malloc_hooks(struct gallivm_state *gallivm)
|
||||
|
||||
assert(gallivm->coro_malloc_hook);
|
||||
assert(gallivm->coro_free_hook);
|
||||
LLVMAddGlobalMapping(gallivm->engine, gallivm->coro_malloc_hook, coro_malloc);
|
||||
LLVMAddGlobalMapping(gallivm->engine, gallivm->coro_free_hook, coro_free);
|
||||
gallivm_add_global_mapping(gallivm, gallivm->coro_malloc_hook, coro_malloc);
|
||||
gallivm_add_global_mapping(gallivm, gallivm->coro_free_hook, coro_free);
|
||||
}
|
||||
|
||||
void lp_build_coro_declare_malloc_hooks(struct gallivm_state *gallivm)
|
||||
|
||||
@@ -420,6 +420,11 @@ gallivm_destroy(struct gallivm_state *gallivm)
|
||||
FREE(gallivm);
|
||||
}
|
||||
|
||||
void
|
||||
gallivm_add_global_mapping(struct gallivm_state *gallivm, LLVMValueRef sym, void* addr)
|
||||
{
|
||||
LLVMAddGlobalMapping(gallivm->engine, sym, addr);
|
||||
}
|
||||
|
||||
/**
|
||||
* Validate a function.
|
||||
@@ -522,10 +527,10 @@ gallivm_compile_module(struct gallivm_state *gallivm)
|
||||
++gallivm->compiled;
|
||||
|
||||
lp_init_printf_hook(gallivm);
|
||||
LLVMAddGlobalMapping(gallivm->engine, gallivm->debug_printf_hook, debug_printf);
|
||||
gallivm_add_global_mapping(gallivm, gallivm->debug_printf_hook, debug_printf);
|
||||
|
||||
lp_init_clock_hook(gallivm);
|
||||
LLVMAddGlobalMapping(gallivm->engine, gallivm->get_time_hook, os_time_get_nano);
|
||||
gallivm_add_global_mapping(gallivm, gallivm->get_time_hook, os_time_get_nano);
|
||||
|
||||
lp_build_coro_add_malloc_hooks(gallivm);
|
||||
|
||||
|
||||
@@ -89,6 +89,14 @@ gallivm_verify_function(struct gallivm_state *gallivm,
|
||||
LLVMValueRef func);
|
||||
|
||||
void
|
||||
gallivm_add_global_mapping(struct gallivm_state *gallivm, LLVMValueRef sym, void* addr);
|
||||
|
||||
/**
|
||||
* for ORCJIT, after this function gets called, all access and modification to
|
||||
* module and any structure associated to it should be avoided,
|
||||
* as module has been moved into ORCJIT and may be recycled
|
||||
*/
|
||||
void
|
||||
gallivm_compile_module(struct gallivm_state *gallivm);
|
||||
|
||||
func_pointer
|
||||
|
||||
Reference in New Issue
Block a user