[llvm-dev] [CodeGen] CodeSize - TailMerging and BlockPlacement

Hal Finkel via llvm-dev llvm-dev at lists.llvm.org
Thu Apr 21 17:34:11 PDT 2016


----- Original Message -----
> From: "via llvm-dev" <llvm-dev at lists.llvm.org>
> To: llvm-dev at lists.llvm.org
> Sent: Tuesday, March 29, 2016 8:20:22 AM
> Subject: [llvm-dev] [CodeGen] CodeSize - TailMerging and BlockPlacement
> 
> Hi everyone,
> 
> The code layout that TailMerging (inside BranchFolding) works on is
> not
> the final layout optimized based on the branch probability.
>  Generally,
> after BlockPlacement, many new merging opportunities emerge. I did an
> experiment of adding additional BranchFolding and BlockPlacement
> after
> the existing BlockPlacement (i.e., -block-placement  -branch-folder
> -block-placement) targeting an AARch64 backend. Thousands of
> instructions can be removed in spec2006 benchmarks as shown below. I
> checked the binaries and did not find any increase of unwanted
> instructions. The change does not hurt any benchmark with noticeable
> regression and sometimes results in small improvement (1%-3%).
> 
> 473.astar        -7
> 401.bzip2        -110
> 403.gcc          -13,006
> 445.gobmk        -1,716
> 464.h264ref      -684
> 456.hmmer        -391
> 462.libquantum   -4
> 429.mcf          -4
> 471.omnetpp      -1,980
> 400.perlbench    -4,176
> 458.sjeng        -338
> 450.soplex       -395
> 483.xalancbmk    -4,183
> 447.dealII       -186
> 433.milc         -34
> 444.namd         -104
> 453.povray       -1,785
> 482.sphinx3      -112
> 
> I propose to factor out the relevant code from BranchFolding into a
> utility, and call it from BlockPlacement whenever the layout is
> changed.
>   It is similar to D18226 and D18411 which factor tail duplication
>   into a
> utility and call it from BlockPlacement.  Any thoughts, advice, or
> comments?

Did anyone yet provide you with feedback on this? It seems like a reasonable plan to me.

 -Hal

> 
> Best,
> 
> Haicheng
> _______________________________________________
> LLVM Developers mailing list
> llvm-dev at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
> 

-- 
Hal Finkel
Assistant Computational Scientist
Leadership Computing Facility
Argonne National Laboratory


More information about the llvm-dev mailing list