]> git.ipfire.org Git - thirdparty/gcc.git/commit
arm: Revert Auto-vectorization for MVE: add pack/unpack patterns PR target/104882
authorChristophe Lyon <christophe.lyon@arm.com>
Fri, 18 Mar 2022 08:30:00 +0000 (08:30 +0000)
committerChristophe Lyon <christophe.lyon@arm.com>
Fri, 25 Mar 2022 17:26:33 +0000 (17:26 +0000)
commit3ab5c8cd03d92bf4ec41e351820349d92fbc40c4
treed7fb4667893cc9150e2bea0d960af8e83a732069
parent25725506b85f478076770942d76799c54310c696
arm: Revert Auto-vectorization for MVE: add pack/unpack patterns PR target/104882

This reverts commit r12-1434-g046a3beb1673bf to fix PR target/104882.

As discussed in the PR, it turns out that the MVE ISA has no natural
mapping with GCC's vec_pack_trunc / vec_unpack standard patterns, unlike
Neon or SVE for instance.

This patch also adds the executable testcase provided in the PR.
This test passes at -O3 because the generated code does not need
to use the pack/unpack patterns, hence the use of -O2 which now
triggers vectorization since a few months ago.

2022-03-18  Christophe Lyon  <christohe.lyon@arm.com>

PR target/104882
Revert
2021-06-11  Christophe Lyon  <christophe.lyon@linaro.org>

gcc/
* config/arm/mve.md (mve_vec_unpack<US>_lo_<mode>): Delete.
(mve_vec_unpack<US>_hi_<mode>): Delete.
(@mve_vec_pack_trunc_lo_<mode>): Delete.
(mve_vmovntq_<supf><mode>): Remove '@' prefix.
* config/arm/neon.md (vec_unpack<US>_hi_<mode>): Move back
from vec-common.md.
(vec_unpack<US>_lo_<mode>): Likewise.
(vec_pack_trunc_<mode>): Rename from
neon_quad_vec_pack_trunc_<mode>.
* config/arm/vec-common.md (vec_unpack<US>_hi_<mode>): Delete.
(vec_unpack<US>_lo_<mode>): Delete.
(vec_pack_trunc_<mode>): Delete.

PR target/104882
gcc/testsuite/
* gcc.target/arm/simd/mve-vclz.c: Update expected results.
* gcc.target/arm/simd/mve-vshl.c: Likewise.
* gcc.target/arm/simd/mve-vec-pack.c: Delete.
* gcc.target/arm/simd/mve-vec-unpack.c: Delete.
* gcc.target/arm/simd/pr104882.c: New test.
gcc/config/arm/mve.md
gcc/config/arm/neon.md
gcc/config/arm/vec-common.md
gcc/testsuite/gcc.target/arm/simd/mve-vclz.c
gcc/testsuite/gcc.target/arm/simd/mve-vec-pack.c [deleted file]
gcc/testsuite/gcc.target/arm/simd/mve-vec-unpack.c [deleted file]
gcc/testsuite/gcc.target/arm/simd/mve-vshl.c
gcc/testsuite/gcc.target/arm/simd/pr104882.c [new file with mode: 0644]