aboutsummaryrefslogtreecommitdiff
path: root/libatomic/config/linux
diff options
context:
space:
mode:
authorWilco Dijkstra <wilco.dijkstra@arm.com>2023-12-01 15:05:53 +0000
committerWilco Dijkstra <wilco.dijkstra@arm.com>2023-12-15 13:19:40 +0000
commitbbdb72ba29ead4931a6cfff023c0485fa25e648b (patch)
tree64ee18aefebb804cdd9c9cf39cbbc2c56447936a /libatomic/config/linux
parent5ddf651ad91d34b754dbe280e5ab2b19cf90f8ee (diff)
downloadgcc-bbdb72ba29ead4931a6cfff023c0485fa25e648b.zip
gcc-bbdb72ba29ead4931a6cfff023c0485fa25e648b.tar.gz
gcc-bbdb72ba29ead4931a6cfff023c0485fa25e648b.tar.bz2
AArch64: Add inline memmove expansion
Add support for inline memmove expansions. The generated code is identical as for memcpy, except that all loads are emitted before stores rather than being interleaved. The maximum size is 256 bytes which requires at most 16 registers. gcc/ChangeLog: * config/aarch64/aarch64.opt (aarch64_mops_memmove_size_threshold): Change default. * config/aarch64/aarch64.md (cpymemdi): Add a parameter. (movmemdi): Call aarch64_expand_cpymem. * config/aarch64/aarch64.cc (aarch64_copy_one_block): Rename function, simplify, support storing generated loads/stores. (aarch64_expand_cpymem): Support expansion of memmove. * config/aarch64/aarch64-protos.h (aarch64_expand_cpymem): Add bool arg. gcc/testsuite/ChangeLog: * gcc.target/aarch64/memmove.c: Add new test. * gcc.target/aarch64/memmove2.c: Likewise.
Diffstat (limited to 'libatomic/config/linux')
0 files changed, 0 insertions, 0 deletions