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:
Yukari Chiba
2024-06-19 16:22:13 +08:00
committed by Marge Bot
parent 47cd0eee26
commit fae6a8737a
3 changed files with 17 additions and 4 deletions
+2 -2
View File
@@ -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)
+7 -2
View File
@@ -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