arm: Auto-vectorization for MVE: vorr
authorChristophe Lyon <christophe.lyon@linaro.org>
Fri, 13 Nov 2020 12:34:12 +0000 (12:34 +0000)
committerChristophe Lyon <christophe.lyon@linaro.org>
Fri, 11 Dec 2020 16:22:28 +0000 (16:22 +0000)
commit75de6a2895f503905589934e30c68b9a5ec41f2f
treec9afb08bd9a03561439f0b5299ef3a1c437adce1
parentf7ad4446274831234e5acd3506fd2e01c7594c6a
arm: Auto-vectorization for MVE: vorr

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

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

gcc/
* config/arm/iterators.md (supf): Remove VORRQ_S and VORRQ_U.
(VORRQ): Remove.
* config/arm/mve.md (mve_vorrq_s<mode>): New entry for vorr
instruction using expression ior.
(mve_vorrq_u<mode>): New expander.
(mve_vorrq_f<mode>): Use ior code instead of unspec.
* config/arm/neon.md (ior<mode>3): Renamed into ior<mode>3_neon.
* config/arm/predicates.md (imm_for_neon_logic_operand): Enable
for MVE.
* config/arm/unspecs.md (VORRQ_S, VORRQ_U, VORRQ_F): Remove.
* config/arm/vec-common.md (ior<mode>3): New expander.

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