[PATCH 5/5] libstdc++: Restore unrolling in std::find using pragma [PR116140]

Alex Coplan alex.coplan@arm.com
Fri Aug 9 09:29:19 GMT 2024


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).

Bootstrapped/regtested on aarch64-linux-gnu, OK for trunk?

Thanks,
Alex

libstdc++-v3/ChangeLog:

	PR libstdc++/116140
	* include/bits/stl_algobase.h (std::__find_if): Add #pragma to
	request GCC to unroll the loop.
---
 libstdc++-v3/include/bits/stl_algobase.h | 1 +
 1 file changed, 1 insertion(+)

-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0005-libstdc-Restore-unrolling-in-std-find-using-pragma-P.patch
Type: text/x-patch
Size: 490 bytes
Desc: not available
URL: <https://gcc.gnu.org/pipermail/libstdc++/attachments/20240809/e3fb349b/attachment-0001.bin>


More information about the Libstdc++ mailing list