[Mesa-dev] [PATCH 03/11] ac/radeonsi: refactor out pass manager init to common code.
Marek Olšák
maraeo at gmail.com
Tue Jul 3 17:08:04 UTC 2018
s/init/create/ ?
Anyway, patch 1-3:
Reviewed-by: Marek Olšák <marek.olsak at amd.com>
On Mon, Jul 2, 2018, 8:48 PM Dave Airlie <airlied at gmail.com> wrote:
> From: Dave Airlie <airlied at redhat.com>
>
> ---
> src/amd/common/ac_llvm_util.c | 30 ++++++++++++++++++++++++++
> src/amd/common/ac_llvm_util.h | 2 ++
> src/gallium/drivers/radeonsi/si_pipe.c | 27 ++---------------------
> 3 files changed, 34 insertions(+), 25 deletions(-)
>
> diff --git a/src/amd/common/ac_llvm_util.c b/src/amd/common/ac_llvm_util.c
> index 25ff4a8c22a..adcdc730856 100644
> --- a/src/amd/common/ac_llvm_util.c
> +++ b/src/amd/common/ac_llvm_util.c
> @@ -28,6 +28,11 @@
> #include "util/bitscan.h"
> #include <llvm-c/Core.h>
> #include <llvm-c/Support.h>
> +#include <llvm-c/Transforms/IPO.h>
> +#include <llvm-c/Transforms/Scalar.h>
> +#if HAVE_LLVM >= 0x0700
> +#include <llvm-c/Transforms/Utils.h>
> +#endif
> #include "c11/threads.h"
> #include "util/u_math.h"
>
> @@ -160,6 +165,31 @@ LLVMTargetMachineRef ac_create_target_machine(enum
> radeon_family family,
> return tm;
> }
>
> +LLVMPassManagerRef ac_init_passmgr(LLVMTargetLibraryInfoRef
> target_library_info,
> + bool check_ir)
> +{
> + LLVMPassManagerRef passmgr = LLVMCreatePassManager();
> + if (!passmgr)
> + return NULL;
> +
> + LLVMAddTargetLibraryInfo(target_library_info,
> + passmgr);
> +
> + if (check_ir)
> + LLVMAddVerifierPass(passmgr);
> + LLVMAddAlwaysInlinerPass(passmgr);
> + /* This pass should eliminate all the load and store instructions.
> */
> + LLVMAddPromoteMemoryToRegisterPass(passmgr);
> + LLVMAddScalarReplAggregatesPass(passmgr);
> + LLVMAddLICMPass(passmgr);
> + LLVMAddAggressiveDCEPass(passmgr);
> + LLVMAddCFGSimplificationPass(passmgr);
> + /* This is recommended by the instruction combining pass. */
> + LLVMAddEarlyCSEMemSSAPass(passmgr);
> + LLVMAddInstructionCombiningPass(passmgr);
> + return passmgr;
> +}
> +
> static const char *attr_to_str(enum ac_func_attr attr)
> {
> switch (attr) {
> diff --git a/src/amd/common/ac_llvm_util.h b/src/amd/common/ac_llvm_util.h
> index 4311c5ea8a4..1c0e975aec3 100644
> --- a/src/amd/common/ac_llvm_util.h
> +++ b/src/amd/common/ac_llvm_util.h
> @@ -111,6 +111,8 @@ ac_get_store_intr_attribs(bool writeonly_memory)
> unsigned
> ac_count_scratch_private_memory(LLVMValueRef function);
>
> +LLVMPassManagerRef ac_init_passmgr(LLVMTargetLibraryInfoRef
> target_library_info,
> + bool check_ir);
> void ac_init_llvm_once(void);
>
> #ifdef __cplusplus
> diff --git a/src/gallium/drivers/radeonsi/si_pipe.c
> b/src/gallium/drivers/radeonsi/si_pipe.c
> index 0d6d93a7358..c815c7fc013 100644
> --- a/src/gallium/drivers/radeonsi/si_pipe.c
> +++ b/src/gallium/drivers/radeonsi/si_pipe.c
> @@ -41,12 +41,6 @@
> #include "vl/vl_decoder.h"
> #include "driver_ddebug/dd_util.h"
>
> -#include <llvm-c/Transforms/IPO.h>
> -#include <llvm-c/Transforms/Scalar.h>
> -#if HAVE_LLVM >= 0x0700
> -#include <llvm-c/Transforms/Utils.h>
> -#endif
> -
> static const struct debug_named_value debug_options[] = {
> /* Shader logging options: */
> { "vs", DBG(VS), "Print vertex shaders" },
> @@ -131,27 +125,10 @@ static void si_init_compiler(struct si_screen
> *sscreen,
> if (!compiler->target_library_info)
> return;
>
> - compiler->passmgr = LLVMCreatePassManager();
> + compiler->passmgr = ac_init_passmgr(compiler->target_library_info,
> + (sscreen->debug_flags &
> DBG(CHECK_IR)));
> if (!compiler->passmgr)
> return;
> -
> - LLVMAddTargetLibraryInfo(compiler->target_library_info,
> - compiler->passmgr);
> -
> - /* Add LLVM passes into the pass manager. */
> - if (sscreen->debug_flags & DBG(CHECK_IR))
> - LLVMAddVerifierPass(compiler->passmgr);
> -
> - LLVMAddAlwaysInlinerPass(compiler->passmgr);
> - /* This pass should eliminate all the load and store instructions.
> */
> - LLVMAddPromoteMemoryToRegisterPass(compiler->passmgr);
> - LLVMAddScalarReplAggregatesPass(compiler->passmgr);
> - LLVMAddLICMPass(compiler->passmgr);
> - LLVMAddAggressiveDCEPass(compiler->passmgr);
> - LLVMAddCFGSimplificationPass(compiler->passmgr);
> - /* This is recommended by the instruction combining pass. */
> - LLVMAddEarlyCSEMemSSAPass(compiler->passmgr);
> - LLVMAddInstructionCombiningPass(compiler->passmgr);
> }
>
> static void si_destroy_compiler(struct si_compiler *compiler)
> --
> 2.17.1
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/mesa-dev/attachments/20180703/3b756b5e/attachment.html>
More information about the mesa-dev
mailing list