diff options
author | Alex Coplan <alex.coplan@arm.com> | 2024-08-02 09:56:07 +0100 |
---|---|---|
committer | Alex Coplan <alex.coplan@arm.com> | 2024-09-11 11:50:48 +0100 |
commit | 3fd07d4f04f43816a038daf9b16c6d5bf2e96c9b (patch) | |
tree | 21a03d791832cad9a9b818df3b103fd4c20446e0 /libcpp | |
parent | 9759f6299d9633cabac540e5c893341c708093ac (diff) | |
download | gcc-3fd07d4f04f43816a038daf9b16c6d5bf2e96c9b.zip gcc-3fd07d4f04f43816a038daf9b16c6d5bf2e96c9b.tar.gz gcc-3fd07d4f04f43816a038daf9b16c6d5bf2e96c9b.tar.bz2 |
libstdc++: Restore unrolling in std::find using pragma [PR116140]
Together with the preparatory compiler patches, this patch restores
unrolling in std::__find_if, but this time relying on the compiler to do
it by using:
#pragma GCC unroll 4
which should restore the majority of the regression relative to the
hand-unrolled version while still being vectorizable with WIP alignment
peeling enhancements.
On Neoverse V1 with LTO, this reduces the regression in xalancbmk (from
SPEC CPU 2017) from 5.8% to 1.7% (restoring ~71% of the lost
performance).
libstdc++-v3/ChangeLog:
PR libstdc++/116140
* include/bits/stl_algobase.h (std::__find_if): Add #pragma to
request GCC to unroll the loop.
Diffstat (limited to 'libcpp')
0 files changed, 0 insertions, 0 deletions