neon.md (widen_<us>sum<mode>): New patterns where mode is VQI to improve mixed mode...
authorMichael Collison <collison@gcc.gnu.org>
Mon, 25 Apr 2016 05:03:09 +0000 (05:03 +0000)
committerMichael Collison <collison@gcc.gnu.org>
Mon, 25 Apr 2016 05:03:09 +0000 (05:03 +0000)
commit93c590ee1aa41d3df7298d7dd1596994163f6d74
tree232a7b2f09a3eaab8167683bda4524742de85802
parent151a16073f59ef1445d9e66a0f65e1ced9060416
neon.md (widen_<us>sum<mode>): New patterns where mode is VQI to improve mixed mode vectorization.

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.
    * 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.

From-SVN: r235402
12 files changed:
gcc/ChangeLog
gcc/config/arm/arm-protos.h
gcc/config/arm/arm.c
gcc/config/arm/neon.md
gcc/config/arm/predicates.md
gcc/testsuite/ChangeLog
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