arm: Auto-vectorization for MVE: vmvn
authorChristophe Lyon <christophe.lyon@linaro.org>
Wed, 2 Dec 2020 12:20:02 +0000 (12:20 +0000)
committerChristophe Lyon <christophe.lyon@linaro.org>
Mon, 14 Dec 2020 10:47:29 +0000 (10:47 +0000)
commitfd43603414a9b7bdbac5a822af144dcd559733eb
treeedf2a306554388a1828200197fa8606e7f58faa3
parent5391cf07be7117c2df605acbfad31a4f9c6b7a65
arm: Auto-vectorization for MVE: vmvn

This patch enables MVE vmvnq instructions for auto-vectorization.  MVE
vmvnq insns in mve.md are modified to use 'not' instead of unspec
expression to support one_cmpl<mode>2.  The one_cmpl<mode>2 expander
is added to vec-common.md.

2020-12-11  Christophe Lyon  <christophe.lyon@linaro.org>

gcc/
* config/arm/iterators.md (VDQNOTM2): New mode iterator.
(supf): Remove VMVNQ_S and VMVNQ_U.
(VMVNQ): Remove.
* config/arm/mve.md (mve_vmvnq_u<mode>): New entry for vmvn
instruction using expression not.
(mve_vmvnq_s<mode>): New expander.
* config/arm/neon.md (one_cmpl<mode>2): Renamed into
one_cmpl<mode>2_neon.
* config/arm/unspecs.md (VMVNQ_S, VMVNQ_U): Remove.
* config/arm/vec-common.md (one_cmpl<mode>2): New expander.

gcc/testsuite/
* gcc.target/arm/simd/mve-vmvn.c: Add tests for vmvn.
gcc/config/arm/iterators.md
gcc/config/arm/mve.md
gcc/config/arm/neon.md
gcc/config/arm/unspecs.md
gcc/config/arm/vec-common.md
gcc/testsuite/gcc.target/arm/simd/mve-vmvn.c [new file with mode: 0644]