diff options
author | Sudakshina Das <sudi.das@arm.com> | 2020-11-13 10:48:27 +0000 |
---|---|---|
committer | Sudakshina Das <sudi.das@arm.com> | 2020-11-13 10:48:27 +0000 |
commit | 54bbde550ec557e48a67ca1f4036e46710bcfeda (patch) | |
tree | 8aa3b8ab436d1a1720cbe8d2ab0b1a18d851668b /gcc/tree-vrp.c | |
parent | 5e28fca09c9c72bf5631efd0f0b06d52b0ebdb4d (diff) | |
download | gcc-54bbde550ec557e48a67ca1f4036e46710bcfeda.zip gcc-54bbde550ec557e48a67ca1f4036e46710bcfeda.tar.gz gcc-54bbde550ec557e48a67ca1f4036e46710bcfeda.tar.bz2 |
aarch64: Add backend support for expanding __builtin_memset
This patch implements aarch64 backend expansion for __builtin_memset. Most of
the implementation is based on the expansion of __builtin_memcpy. We change the
values of SET_RATIO and MOVE_RATIO for cases where we do not have to strictly
align and where we can benefit from NEON instructions in the backend.
gcc/ChangeLog:
* config/aarch64/aarch64-protos.h (aarch64_expand_setmem): New
declaration.
* config/aarch64/aarch64.c (aarch64_gen_store_pair): Add case for
E_V16QImode.
(aarch64_set_one_block_and_progress_pointer): New helper for
aarch64_expand_setmem.
(aarch64_expand_setmem): Define the expansion for memset.
* config/aarch64/aarch64.h (CLEAR_RATIO): Tweak to favor
aarch64_expand_setmem when allowed and profitable.
(SET_RATIO): Likewise.
* config/aarch64/aarch64.md: Define pattern for setmemdi.
gcc/testsuite/ChangeLog:
* g++.dg/tree-ssa/pr90883.C: Remove xfail for aarch64.
* gcc.dg/tree-prof/stringop-2.c: Add xfail for aarch64.
* gcc.target/aarch64/memset-corner-cases.c: New test.
* gcc.target/aarch64/memset-q-reg.c: New test.
Diffstat (limited to 'gcc/tree-vrp.c')
0 files changed, 0 insertions, 0 deletions