]> git.ipfire.org Git - thirdparty/gcc.git/commit - gcc/config/arm/mve.md
arm: Auto-vectorization for MVE: vsub
authorDennis Zhang <dennis.zh@live.com>
Fri, 23 Oct 2020 07:53:53 +0000 (08:53 +0100)
committerDennis Zhang <dennis.zh@live.com>
Fri, 23 Oct 2020 07:53:53 +0000 (08:53 +0100)
commit98161c248c88f873bbffba23664c540f551d89d5
tree85788a59de2faac58f11a54183b20d7717a31bb0
parent6fade5a6044b7102758f4ca66c8715ebc12a6306
arm: Auto-vectorization for MVE: vsub

This patch enables MVE vsub instructions for auto-vectorization.
The sub<mode>3 in vec-common.md is modified to use new mode macros
to include MVE extension for vectorization. MVE vsub insns in mve.md are
modified to use 'minus' instead of unspec expression to support
sub<mode>3. Use VDQ instead fo VALL to cover all supported modes. The
redundant sub<mode>3 insns in neon.md are then removed.

gcc/ChangeLog:

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

* config/arm/mve.md (mve_vsubq<mode>): New entry for vsub instruction
using expression 'minus'.
(mve_vsubq_f<mode>): Use minus instead of VSUBQ_F unspec.
* config/arm/neon.md (sub<mode>3, sub<mode>3_fp16): Removed.
(neon_vsub<mode>): Use gen_sub<mode>3 instead of gen_sub<mode>3_fp16.
* config/arm/vec-common.md (sub<mode>3): Use the new mode macros
ARM_HAVE_<MODE>_ARITH. Use iterator VDQ instead of VALL.

gcc/testsuite/ChangeLog:

* gcc.target/arm/simd/mve-vsub_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-vsub_1.c [new file with mode: 0644]