arm: Auto-vectorization for MVE: vmul
authorDennis Zhang <dennis.zh@live.com>
Thu, 22 Oct 2020 00:09:33 +0000 (01:09 +0100)
committerDennis Zhang <dennis.zh@live.com>
Thu, 22 Oct 2020 00:09:33 +0000 (01:09 +0100)
commit0f41b5e02fa47db2080b77e4e1f7cd3305457c05
treefb604198a910464fbb37f7d83da87304460f8b85
parentca5f4666f7a9404cdb04832324de3dd7d71e35c3
arm: Auto-vectorization for MVE: vmul

This patch enables MVE vmul instructions for auto-vectorization.
It includes MVE in expander mul<mode>3 to enable vectorization for MVE.
Related MVE vmul insns are modified to support the expander by using
expression 'mult' instead of unspec.
The mul<mode>3 for vectorization in vec-common.md uses mode iterator
VDQWH instead of VALLW to cover all supported modes.
The macros ARM_HAVE_NEON_<MODE>_ARITH are used to select supported
modes for different targets.
The redundant mul<mode>3 in neon.md is removed.

gcc/ChangeLog:

2020-10-22  Dennis Zhang  <dennis.zhang@arm.com>

* config/arm/mve.md (mve_vmulq<mode>): New entry for vmul instruction
using expression 'mult'.
(mve_vmulq_f<mode>): Use mult instead of VMULQ_F.
* config/arm/neon.md (mul<mode>3): Removed.
* config/arm/vec-common.md (mul<mode>3): Use the new mode macros
ARM_HAVE_<MODE>_ARITH. Use mode iterator VDQWH instead of VALLW.

gcc/testsuite/ChangeLog:

* gcc.target/arm/simd/mve-vmul_1.c: New test.
gcc/ChangeLog
gcc/config/arm/mve.md
gcc/config/arm/neon.md
gcc/config/arm/vec-common.md
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.target/arm/simd/mve-vmul_1.c [new file with mode: 0644]