On Mon, Dec 13, 2021 at 3:29 PM Kyrylo Tkachov via Gcc-patches < gcc-patches@gcc.gnu.org> wrote:
> Hi all, > > This patch adds the +mops architecture extension flag from the 2021 Arm > Architecture extensions, Armv8.8-a. > The +mops extensions introduce instructions to accelerate the memcpy, > memset, memmove standard functions. > The first patch here uses the instructions in the inline memcpy expansion. > Further patches in the series will use similar instructions to inline > memmove and memset. > > A new param, aarch64-mops-memcpy-size-threshold, is introduced to control > the size threshold above which to > emit the new sequence. Its default setting is 256 bytes, which is the same > as the current threshold above > which we'd emit a libcall. > > Bootstrapped and tested on aarch64-none-linux-gnu. > Pushing to trunk. > Thanks, > Kyrill > > gcc/ChangeLog: > > * config/aarch64/aarch64-option-extensions.def (mops): Define. > * config/aarch64/aarch64.c (aarch64_expand_cpymem_mops): Define. > (aarch64_expand_cpymem): Define. > * config/aarch64/aarch64.h (AARCH64_FL_MOPS): Define. > (AARCH64_ISA_MOPS): Define. > (TARGET_MOPS): Define. > (MOVE_RATIO): Adjust for TARGET_MOPS. > * config/aarch64/aarch64.md ("unspec"): Add UNSPEC_CPYMEM. > (aarch64_cpymemdi): New pattern. > (cpymemdi): Adjust for TARGET_MOPS. > * config/aarch64/aarch64.opt (aarch64-mops-memcpy-size-threshol): > New param. > * doc/invoke.texi (AArch64 Options): Document +mops. > > gcc/testsuite/ChangeLog: > > * gcc.target/aarch64/mops_1.c: New test. > Hi Kyrill, And this test fails with -mabi=ilp32 too, sorry for the delay. Thanks Christophe