diff options
author | Florian Hahn <flo@fhahn.com> | 2025-02-27 14:42:45 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2025-02-27 14:42:45 +0000 |
commit | 46a13a5b174b031b399606f92ca049cac8aa12a0 (patch) | |
tree | 58901679f1de6afdd8a22f7f1684c2ee8634046f /clang/lib/CodeGen/CodeGenModule.cpp | |
parent | cad1de50ba06db8288da0e20c9aeffed328b8fce (diff) | |
download | llvm-46a13a5b174b031b399606f92ca049cac8aa12a0.zip llvm-46a13a5b174b031b399606f92ca049cac8aa12a0.tar.gz llvm-46a13a5b174b031b399606f92ca049cac8aa12a0.tar.bz2 |
[AArch64] Runtime-unroll small multi-exit loops on Apple Silicon. (#124751)
Extend unrolling preferences to allow more aggressive unrolling of
search loops with 2 exits, building on the TTI hook added in
https://github.com/llvm/llvm-project/commit/ad9da92cf6f735747ef04fd56937e1d76819e503.
In combination with
https://github.com/llvm/llvm-project/commit/eac23a5b971362cda3c646e018b9f26d0bc1ff3a
this enables unrolling loops like
std::find, which can improve performance significantly (+15% end-to-end
on a workload that makes heavy use of std::find). It increase the total
number of unrolled loops by ~2.5% across a very large corpus of
workloads.
For SPEC2017, +1.6% more loops are unrolled and the following workloads
increase in size (`__text`):
workload base patch
500.perlbench_r 1682884.00 1694104.00 0.7%
523.xalancbmk_r 3001716.00 3003832.00 0.1%
PR: https://github.com/llvm/llvm-project/pull/124751
Diffstat (limited to 'clang/lib/CodeGen/CodeGenModule.cpp')
0 files changed, 0 insertions, 0 deletions