On Wed, Jun 14, 2017 at 12:12 AM, Miklós Máté <mtm...@gmail.com> wrote: > On 05/06/17 18:50, Marek Olšák wrote: >> >> From: Marek Olšák <marek.ol...@amd.com> >> >> so that LLVM IR looks like CSE has been run on it. It's also recommended >> by the instruction combining pass. >> >> This also fixes: >> - GL45-CTS.arrays_of_arrays_gl.InteractionFunctionCalls2 (crash) >> - piglit/spec/arb_shader_ballot/execution/fs-readFirstInvocation-uint-loop >> (fail) >> >> The code size decrease is positive, the register usage isn't. There is >> a decrease in VGPR spilling for Tomb Raider, but increase in DiRT Showdown >> and GRID Autosport. >> >> EarlyCSEMemSSA has a -0.01% change in code size compared EarlyCSE. > > This needs LLVM 4.0.0, whereas radeonsi officially only needs 3.9.0.
It was fixed in master. Marek > > MM > >> >> SGPRS: 1935420 -> 1938076 (0.14 %) >> VGPRS: 1645504 -> 1645988 (0.03 %) >> Spilled SGPRs: 2493 -> 2651 (6.34 %) >> Spilled VGPRs: 107 -> 115 (7.48 %) >> Private memory VGPRs: 1332 -> 1332 (0.00 %) >> Scratch size: 1512 -> 1516 (0.26 %) dwords per thread >> Code Size: 61981592 -> 61890012 (-0.15 %) bytes >> Max Waves: 371847 -> 371798 (-0.01 %) >> --- >> src/gallium/drivers/radeonsi/si_shader_tgsi_setup.c | 2 ++ >> 1 file changed, 2 insertions(+) >> >> diff --git a/src/gallium/drivers/radeonsi/si_shader_tgsi_setup.c >> b/src/gallium/drivers/radeonsi/si_shader_tgsi_setup.c >> index 1f8e913..802e2b9 100644 >> --- a/src/gallium/drivers/radeonsi/si_shader_tgsi_setup.c >> +++ b/src/gallium/drivers/radeonsi/si_shader_tgsi_setup.c >> @@ -1444,20 +1444,22 @@ void si_llvm_optimize_module(struct >> si_shader_context *ctx) >> LLVMAddAlwaysInlinerPass(gallivm->passmgr); >> /* This pass should eliminate all the load and store instructions >> */ >> LLVMAddPromoteMemoryToRegisterPass(gallivm->passmgr); >> /* Add some optimization passes */ >> LLVMAddScalarReplAggregatesPass(gallivm->passmgr); >> LLVMAddLICMPass(gallivm->passmgr); >> LLVMAddAggressiveDCEPass(gallivm->passmgr); >> LLVMAddCFGSimplificationPass(gallivm->passmgr); >> + /* This is recommended by the instruction combining pass. */ >> + LLVMAddEarlyCSEMemSSAPass(gallivm->passmgr); >> LLVMAddInstructionCombiningPass(gallivm->passmgr); >> /* Run the pass */ >> LLVMRunPassManager(gallivm->passmgr, ctx->gallivm.module); >> LLVMDisposeBuilder(gallivm->builder); >> LLVMDisposePassManager(gallivm->passmgr); >> gallivm_dispose_target_library_info(target_library_info); >> } >> > > > > _______________________________________________ > mesa-dev mailing list > mesa-dev@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/mesa-dev _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev