arm: Auto-vectorization for MVE: vclz
authorChristophe Lyon <christophe.lyon@linaro.org>
Wed, 9 Jun 2021 16:07:43 +0000 (16:07 +0000)
committerChristophe Lyon <christophe.lyon@linaro.org>
Wed, 9 Jun 2021 16:07:43 +0000 (16:07 +0000)
commit7969d9c83d061e57ea80795768469cffb1a859f8
tree95c092922d62441444d7909210507f2ae410272d
parent880198da50e1beac9b7cf8ff1bff570359c5f2a0
arm: Auto-vectorization for MVE: vclz

This patch adds support for auto-vectorization of clz for MVE.

It does so by removing the unspec from mve_vclzq_<supf><mode> and uses
'clz' instead. It moves to neon_vclz<mode> expander from neon.md to
vec-common.md and renames it into the standard name clz<mode>2.

2021-06-09  Christophe Lyon  <christophe.lyon@linaro.org>

gcc/
* config/arm/iterators.md (<supf>): Remove VCLZQ_U, VCLZQ_S.
(VCLZQ): Remove.
* config/arm/mve.md (mve_vclzq_<supf><mode>): Add '@' prefix,
remove <supf> iterator.
(mve_vclzq_u<mode>): New.
* config/arm/neon.md (clz<mode>2): Rename to neon_vclz<mode>.
(neon_vclz<mode): Move to ...
* config/arm/unspecs.md (VCLZQ_U, VCLZQ_S): Remove.
* config/arm/vec-common.md: ... here. Add support for MVE.

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