This is the mail archive of the
gcc-cvs@gcc.gnu.org
mailing list for the GCC project.
r278342 - in /trunk/gcc: ChangeLog config/aarch...
- From: rsandifo at gcc dot gnu dot org
- To: gcc-cvs at gcc dot gnu dot org
- Date: Sat, 16 Nov 2019 11:07:23 -0000
- Subject: r278342 - in /trunk/gcc: ChangeLog config/aarch...
Author: rsandifo
Date: Sat Nov 16 11:07:23 2019
New Revision: 278342
URL: https://gcc.gnu.org/viewcvs?rev=278342&root=gcc&view=rev
Log:
[AArch64] Add sign and zero extension for partial SVE modes
This patch adds support for extending from partial SVE modes
to both full vector modes and wider partial modes.
Some tests now need --param aarch64-sve-compare-costs=0 to force
the original full-vector code.
2019-11-16 Richard Sandiford <richard.sandiford@arm.com>
gcc/
* config/aarch64/iterators.md (SVE_HSDI): New mode iterator.
(narrower_mask): Handle VNx4HI, VNx2HI and VNx2SI.
* config/aarch64/aarch64-sve.md
(<ANY_EXTEND:optab><SVE_PARTIAL_I:mode><SVE_HSDI:mode>2): New pattern.
(*<ANY_EXTEND:optab><SVE_PARTIAL_I:mode><SVE_HSDI:mode>2): Likewise.
(@aarch64_pred_sxt<SVE_FULL_HSDI:mode><SVE_PARTIAL_I:mode>): Update
comment. Avoid new narrower_mask ambiguity.
(@aarch64_cond_sxt<SVE_FULL_HSDI:mode><SVE_PARTIAL_I:mode>): Likewise.
(*cond_uxt<mode>_2): Update comment.
(*cond_uxt<mode>_any): Likewise.
gcc/testsuite/
* gcc.target/aarch64/sve/cost_model_1.c: Expect the loop to be
vectorized with bytes stored in 32-bit containers.
* gcc.target/aarch64/sve/extend_1.c: New test.
* gcc.target/aarch64/sve/extend_2.c: New test.
* gcc.target/aarch64/sve/extend_3.c: New test.
* gcc.target/aarch64/sve/extend_4.c: New test.
* gcc.target/aarch64/sve/load_const_offset_3.c: Add
--param aarch64-sve-compare-costs=0.
* gcc.target/aarch64/sve/mask_struct_store_1.c: Likewise.
* gcc.target/aarch64/sve/mask_struct_store_1_run.c: Likewise.
* gcc.target/aarch64/sve/mask_struct_store_2.c: Likewise.
* gcc.target/aarch64/sve/mask_struct_store_2_run.c: Likewise.
* gcc.target/aarch64/sve/unpack_unsigned_1.c: Likewise.
* gcc.target/aarch64/sve/unpack_unsigned_1_run.c: Likewise.
Added:
trunk/gcc/testsuite/gcc.target/aarch64/sve/extend_1.c
trunk/gcc/testsuite/gcc.target/aarch64/sve/extend_2.c
trunk/gcc/testsuite/gcc.target/aarch64/sve/extend_3.c
trunk/gcc/testsuite/gcc.target/aarch64/sve/extend_4.c
Modified:
trunk/gcc/ChangeLog
trunk/gcc/config/aarch64/aarch64-sve.md
trunk/gcc/config/aarch64/iterators.md
trunk/gcc/testsuite/ChangeLog
trunk/gcc/testsuite/gcc.target/aarch64/sve/cost_model_1.c
trunk/gcc/testsuite/gcc.target/aarch64/sve/load_const_offset_3.c
trunk/gcc/testsuite/gcc.target/aarch64/sve/mask_struct_store_1.c
trunk/gcc/testsuite/gcc.target/aarch64/sve/mask_struct_store_1_run.c
trunk/gcc/testsuite/gcc.target/aarch64/sve/mask_struct_store_2.c
trunk/gcc/testsuite/gcc.target/aarch64/sve/mask_struct_store_2_run.c
trunk/gcc/testsuite/gcc.target/aarch64/sve/unpack_unsigned_1.c
trunk/gcc/testsuite/gcc.target/aarch64/sve/unpack_unsigned_1_run.c