aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-complex.c
diff options
context:
space:
mode:
authorRichard Sandiford <richard.sandiford@linaro.org>2017-11-01 20:40:04 +0000
committerRichard Sandiford <rsandifo@gcc.gnu.org>2017-11-01 20:40:04 +0000
commit3f8334a56feab6b165fb642ba5260510660e2e5f (patch)
treefc034f2531812c72a463efa1c043ab74401fead0 /gcc/tree-complex.c
parentc6108cbd510e2d60cf53d1eb8a5bf24a12fcf441 (diff)
downloadgcc-3f8334a56feab6b165fb642ba5260510660e2e5f.zip
gcc-3f8334a56feab6b165fb642ba5260510660e2e5f.tar.gz
gcc-3f8334a56feab6b165fb642ba5260510660e2e5f.tar.bz2
[AArch64] Generate permute patterns using rtx builders
This patch replaces switch statements that call specific generator functions with code that constructs the rtl pattern directly. This seemed to scale better to SVE and also seems less error-prone. As a side-effect, the patch fixes the REV handling for diff==1, vmode==E_V4HFmode and adds missing support for diff==3, vmode==E_V4HFmode. To compensate for the lack of switches that check for specific modes, the patch makes aarch64_expand_vec_perm_const_1 reject permutes on single-element vectors (specifically V1DImode). 2017-11-01 Richard Sandiford <richard.sandiford@linaro.org> Alan Hayward <alan.hayward@arm.com> David Sherwood <david.sherwood@arm.com> gcc/ * config/aarch64/aarch64.c (aarch64_evpc_trn, aarch64_evpc_uzp) (aarch64_evpc_zip, aarch64_evpc_ext, aarch64_evpc_rev) (aarch64_evpc_dup): Generate rtl direcly, rather than using named expanders. (aarch64_expand_vec_perm_const_1): Explicitly check for permutes of a single element. * config/aarch64/iterators.md: Add a comment above the permute unspecs to say that they are generated directly by aarch64_expand_vec_perm_const. * config/aarch64/aarch64-simd.md: Likewise the permute instructions. Reviewed-by: James Greenhalgh <james.greenhalgh@arm.com> Co-Authored-By: Alan Hayward <alan.hayward@arm.com> Co-Authored-By: David Sherwood <david.sherwood@arm.com> From-SVN: r254324
Diffstat (limited to 'gcc/tree-complex.c')
0 files changed, 0 insertions, 0 deletions