aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-data-ref.c
diff options
context:
space:
mode:
authorRichard Sandiford <richard.sandiford@linaro.org>2018-02-01 11:03:36 +0000
committerRichard Sandiford <rsandifo@gcc.gnu.org>2018-02-01 11:03:36 +0000
commit947b137212d16d432eec201fe7f800dfdb481203 (patch)
tree115e9e9973ba12da75e94cd4bf7582ef41c8db9a /gcc/tree-data-ref.c
parentf9093f23517498f99768816fb11849b798db85e9 (diff)
downloadgcc-947b137212d16d432eec201fe7f800dfdb481203.zip
gcc-947b137212d16d432eec201fe7f800dfdb481203.tar.gz
gcc-947b137212d16d432eec201fe7f800dfdb481203.tar.bz2
[AArch64] Use all SVE LD1RQ variants
The fallback way of handling a repeated 128-bit constant vector for SVE is to force the 128 bits to the constant pool and use LD1RQ to load it. Previously the code always used the byte variant of LD1RQ (LD1RQB), with a preceding BSWAP for big-endian targets. However, that BSWAP doesn't handle all cases correctly. The simplest fix seemed to be to use the LD1RQ appropriate for the element size. This helps to fix some of the sve/slp_*.c tests for aarch64_be, although a later patch is needed as well. 2018-02-01 Richard Sandiford <richard.sandiford@linaro.org> gcc/ * config/aarch64/aarch64-sve.md (sve_ld1rq): Replace with... (*sve_ld1rq<Vesize>): ... this new pattern. Handle all element sizes, not just bytes. * config/aarch64/aarch64.c (aarch64_expand_sve_widened_duplicate): Remove BSWAP handing for big-endian targets and use the form of LD1RQ appropariate for the mode. gcc/testsuite/ * gcc.target/aarch64/sve/slp_2.c: Expect LD1RQD rather than LD1RQB. * gcc.target/aarch64/sve/slp_3.c: Expect LD1RQW rather than LD1RQB. * gcc.target/aarch64/sve/slp_4.c: Expect LD1RQH rather than LD1RQB. Reviewed-by: James Greenhalgh <james.greenhalgh@arm.com> From-SVN: r257287
Diffstat (limited to 'gcc/tree-data-ref.c')
0 files changed, 0 insertions, 0 deletions