arm: Auto-vectorization for MVE: veor
authorChristophe Lyon <christophe.lyon@linaro.org>
Fri, 13 Nov 2020 13:05:43 +0000 (13:05 +0000)
committerChristophe Lyon <christophe.lyon@linaro.org>
Mon, 14 Dec 2020 10:47:29 +0000 (10:47 +0000)
commit434fb3b6cc7d4a8d9d07c7e0052a89093953c8c0
tree2ebe83e351e0e892bb39c63edc19348d196798a4
parentebc15a4e1eee66f68b106e93d4fbf4ed9c8ef07a
arm: Auto-vectorization for MVE: veor

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

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

gcc/
* config/arm/iterators.md (supf): Remove VEORQ_S and VEORQ_U.
(VEORQ): Remove.
* config/arm/mve.md (mve_veorq_u<mode>): New entry for veor
instruction using expression xor.
(mve_veorq_s<mode>): New expander.
(mve_veorq_f<mode>): Use 'xor' code instead of unspec.
* config/arm/neon.md (xor<mode>3): Renamed into xor<mode>3_neon.
* config/arm/unspecs.md (VEORQ_S, VEORQ_U, VEORQ_F): Remove.
* config/arm/vec-common.md (xor<mode>3): New expander.

gcc/testsuite/
* gcc.target/arm/simd/mve-veor.c: Add tests for veor.
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-veor.c [new file with mode: 0644]