gcc/
authorChristophe Lyon <christophe.lyon@linaro.org>
Tue, 12 Jul 2016 10:03:28 +0000 (12:03 +0200)
committerYvan Roux <yvan.roux@linaro.org>
Thu, 25 Aug 2016 12:45:42 +0000 (12:45 +0000)
commit1406b1e395f946abc1bfa6cc5a24d10b67ba06a2
tree0ff8d0d4607689aad99ef2a4ea604d833ec300ca
parentecce98641f1f442de27b998a5fab54a9e9973a0f
gcc/
Backport from trunk r235402, r235403.
2016-04-25  Michael Collison  <michael.collison@linaro.org>

* config/arm/neon.md (widen_<us>sum<mode>): New patterns where
mode is VQI to improve mixed mode vectorization.
* config/arm/neon.md (vec_sel_widen_ssum_lo<VQI:mode><VW:mode>3): New
define_insn to match low half of signed vaddw.
* config/arm/neon.md (vec_sel_widen_ssum_hi<VQI:mode><VW:mode>3): New
define_insn to match high half of signed vaddw.
* config/arm/neon.md (vec_sel_widen_usum_lo<VQI:mode><VW:mode>3): New
define_insn to match low half of unsigned vaddw.
* config/arm/neon.md (vec_sel_widen_usum_hi<VQI:mode><VW:mode>3): New
define_insn to match high half of unsigned vaddw.
* config/arm/arm.c (arm_simd_vect_par_cnst_half): New function.
(arm_simd_check_vect_par_cnst_half_p): Likewise.
* config/arm/arm-protos.h (arm_simd_vect_par_cnst_half): Prototype
for new function.
(arm_simd_check_vect_par_cnst_half_p): Likewise.
* config/arm/predicates.md (vect_par_constant_high): Support
big endian and simplify by calling
arm_simd_check_vect_par_cnst_half
(vect_par_constant_low): Likewise.

gcc/testsuite/
Backport from trunk r235402.
2016-04-25  Michael Collison <michael.collison@arm.com>

* testsuite/gcc.target/arm/neon-vaddws16.c: New test.
* testsuite/gcc.target/arm/neon-vaddws32.c: New test.
* testsuite/gcc.target/arm/neon-vaddwu16.c: New test.
* testsuite/gcc.target/arm/neon-vaddwu32.c: New test.
* testsuite/gcc.target/arm/neon-vaddwu8.c: New test.
* testsuite/lib/target-supports.exp
(check_effective_target_vect_widen_sum_hi_to_si_pattern): Indicate
that arm neon support vector widen sum of HImode TO SImode.

Change-Id: I73e392d5089153973547e78cb918f3bf8e5594d0
gcc/config/arm/arm-protos.h
gcc/config/arm/arm.c
gcc/config/arm/neon.md
gcc/config/arm/predicates.md
gcc/testsuite/gcc.target/arm/neon-vaddws16.c [new file with mode: 0644]
gcc/testsuite/gcc.target/arm/neon-vaddws32.c [new file with mode: 0644]
gcc/testsuite/gcc.target/arm/neon-vaddwu16.c [new file with mode: 0644]
gcc/testsuite/gcc.target/arm/neon-vaddwu32.c [new file with mode: 0644]
gcc/testsuite/gcc.target/arm/neon-vaddwu8.c [new file with mode: 0644]
gcc/testsuite/lib/target-supports.exp