SuccessChanges

Summary

  1. [ARM][MVE] Enable MVE gathers and scatters by default (details)
  2. [llvm][CodeGen] Machine Function Splitter (details)
  3. [gn build] Port 94faadaca4e (details)
Commit 064981f0cee47b140e94ca7df6c24102514af6f0 by anna.welker
[ARM][MVE] Enable MVE gathers and scatters by default

Enable MVE gather/scatters by default, which requires some
minor adaptations in some tests.

Differential revision: https://reviews.llvm.org/D86776
The file was modifiedllvm/test/CodeGen/Thumb2/mve-gather-scatter-ptr-address.ll (diff)
The file was modifiedllvm/test/CodeGen/Thumb2/mve-scatter-ind16-scaled.ll (diff)
The file was modifiedllvm/test/CodeGen/Thumb2/mve-scatter-ptrs.ll (diff)
The file was modifiedllvm/test/CodeGen/Thumb2/mve-gather-scatter-tailpred.ll (diff)
The file was modifiedllvm/test/Transforms/LoopVectorize/ARM/mve-interleaved-cost.ll (diff)
The file was modifiedllvm/test/CodeGen/Thumb2/mve-scatter-ind16-unscaled.ll (diff)
The file was modifiedllvm/lib/Target/ARM/MVEGatherScatterLowering.cpp (diff)
The file was modifiedllvm/test/CodeGen/Thumb2/mve-gather-ptrs.ll (diff)
The file was modifiedllvm/test/CodeGen/Thumb2/mve-gather-ind8-unscaled.ll (diff)
The file was modifiedllvm/test/Transforms/LoopVectorize/ARM/mve-gather-scatter-tailpred.ll (diff)
The file was modifiedllvm/test/Transforms/LoopVectorize/ARM/prefer-tail-loop-folding.ll (diff)
The file was modifiedllvm/test/Transforms/LoopVectorize/ARM/pointer_iv.ll (diff)
The file was modifiedllvm/test/CodeGen/Thumb2/mve-gather-ind16-scaled.ll (diff)
The file was modifiedllvm/test/CodeGen/Thumb2/mve-gather-increment.ll (diff)
The file was modifiedllvm/test/CodeGen/Thumb2/mve-scatter-ind32-scaled.ll (diff)
The file was modifiedllvm/test/CodeGen/Thumb2/mve-gather-scatter-opt.ll (diff)
The file was modifiedllvm/test/CodeGen/Thumb2/mve-gather-scatter-optimisation.ll (diff)
The file was modifiedllvm/test/CodeGen/Thumb2/mve-scatter-ind32-unscaled.ll (diff)
The file was modifiedllvm/test/CodeGen/Thumb2/mve-gather-ind16-unscaled.ll (diff)
The file was modifiedllvm/test/Analysis/CostModel/ARM/mve-gather-scatter-cost.ll (diff)
The file was modifiedllvm/test/CodeGen/Thumb2/mve-gather-optimisation-deep.ll (diff)
The file was modifiedllvm/test/CodeGen/Thumb2/mve-scatter-increment.ll (diff)
The file was modifiedllvm/test/CodeGen/Thumb2/mve-gather-ind32-scaled.ll (diff)
The file was modifiedllvm/test/CodeGen/Thumb2/mve-scatter-ind8-unscaled.ll (diff)
The file was modifiedllvm/test/CodeGen/Thumb2/mve-gather-tailpred.ll (diff)
The file was modifiedllvm/test/CodeGen/Thumb2/mve-gather-ind32-unscaled.ll (diff)
Commit 94faadaca4e1704f674d2e9d4a1d25643b9ca52c by snehasishk
[llvm][CodeGen] Machine Function Splitter

We introduce a codegen optimization pass which splits functions into hot and cold
parts. This pass leverages the basic block sections feature recently
introduced in LLVM from the Propeller project. The pass targets
functions with profile coverage, identifies cold blocks and moves them
to a separate section. The linker groups all cold blocks across
functions together, decreasing fragmentation and improving icache and
itlb utilization.

We evaluated the Machine Function Splitter pass on clang bootstrap and
SPECInt 2017.

For clang bootstrap we observe a mean 2.33% runtime improvement with a
~32% reduction in itlb and stlb misses. Additionally, L1 icache misses
reduced by 9.5% while L2 instruction misses reduced by 20%.

For SPECInt we report the change in IntRate the C/C++
benchmarks. All benchmarks apart from mcf and x264 improve, on average
by 0.6% with the max for deepsjeng at 1.6%.

Benchmark % Change
500.perlbench_r 0.78
502.gcc_r 0.82
505.mcf_r -0.30
520.omnetpp_r 0.18
523.xalancbmk_r 0.37
525.x264_r -0.46
531.deepsjeng_r 1.61
541.leela_r 0.83
557.xz_r 0.15

Differential Revision: https://reviews.llvm.org/D85368
The file was addedllvm/test/CodeGen/X86/machine-function-splitter.ll
The file was modifiedllvm/include/llvm/InitializePasses.h (diff)
The file was modifiedllvm/include/llvm/CodeGen/MachineFunction.h (diff)
The file was modifiedllvm/lib/CodeGen/CMakeLists.txt (diff)
The file was modifiedllvm/include/llvm/Target/TargetOptions.h (diff)
The file was modifiedllvm/include/llvm/CodeGen/Passes.h (diff)
The file was modifiedllvm/lib/CodeGen/BasicBlockSections.cpp (diff)
The file was modifiedllvm/lib/CodeGen/CommandFlags.cpp (diff)
The file was addedllvm/lib/CodeGen/MachineFunctionSplitter.cpp
The file was addedllvm/include/llvm/CodeGen/BasicBlockSectionUtils.h
The file was modifiedllvm/lib/CodeGen/TargetPassConfig.cpp (diff)
The file was modifiedllvm/include/llvm/CodeGen/CommandFlags.h (diff)
Commit 73f4317ffd5608de4e56bb39faf595acd01dca95 by llvmgnsyncbot
[gn build] Port 94faadaca4e
The file was modifiedllvm/utils/gn/secondary/llvm/lib/CodeGen/BUILD.gn (diff)