ac: add reusable helpers for direct LLVM compilation
authorMarek Olšák <marek.olsak@amd.com>
Wed, 4 Jul 2018 05:11:47 +0000 (01:11 -0400)
committerMarek Olšák <marek.olsak@amd.com>
Wed, 4 Jul 2018 19:48:18 +0000 (15:48 -0400)
commit0075e5fed8ae0e33b29a7b99bcdb0f480846d8b1
treef7f8e26f811d68c26c77c68037d850d3d353ddbd
parentc2ae9b4052701f8fde47947acb9ee47a878e1409
ac: add reusable helpers for direct LLVM compilation

This is basically LLVMTargetMachineEmitToMemoryBuffer inlined and reworked.

struct ac_compiler_passes (opaque type) contains the main pass manager.

ac_create_llvm_passes -- the result can go to thread local storage
ac_destroy_llvm_passes -- can be called by a destructor in TLS
ac_compile_module_to_binary -- from LLVMModuleRef to ac_shader_binary

The motivation is to do the expensive call addPassesToEmitFile once
per context or thread.

Reviewed-by: Dave Airlie <airlied@redhat.com>
src/amd/common/ac_binary.h
src/amd/common/ac_llvm_helper.cpp
src/amd/common/ac_llvm_util.h