vmull / vmovl support for Neon.
authorTejas Belagod <tejas.belagod@arm.com>
Wed, 25 Aug 2010 07:23:26 +0000 (08:23 +0100)
committerRamana Radhakrishnan <ramana@gcc.gnu.org>
Wed, 25 Aug 2010 07:23:26 +0000 (07:23 +0000)
commit46b57af175e889126f65a6ca667c2c4606f93f84
treeece038bdb45a512974b020f1864bb6948370b6b2
parent34f41f7c1ada644dca11e1bcb1a5e13e0eb6eecb
vmull / vmovl support for Neon.

For Tejas Belagod

2010-08-25  Tejas Belagod  <tejas.belagod@arm.com>

* lib/target-supports.exp (check_effective_target_vect_unpack):
Set vect_unpack supported flag to true for neon.

* config/arm/iterators.md (VU, SE, V_widen_l): New.
(V_unpack, US): New.
* config/arm/neon.md (vec_unpack<US>_hi_<mode>): Expansion for
vmovl.
(vec_unpack<US>_lo_<mode>): Likewise.
(neon_vec_unpack<US>_hi_<mode>): Instruction pattern for vmovl.
(neon_vec_unpack<US>_lo_<mode>): Likewise.
(vec_widen_<US>mult_lo_<mode>): Expansion for vmull.
(vec_widen_<US>mult_hi_<mode>): Likewise.
(neon_vec_<US>mult_lo_<mode>"): Instruction pattern for vmull.
(neon_vec_<US>mult_hi_<mode>"): Likewise.
(neon_unpack<US>_<mode>): Widening move intermediate step for
vectorizing without -mvectorize-with-neon-quad.
(neon_vec_<US>mult_<mode>): Widening multiply intermediate step
for vectorizing without -mvectorize-with-neon-quad.
* config/arm/predicates.md (vect_par_constant_high): Check for
high-half lanes of a vector.
(vect_par_constant_low): Check for low-half lanes of a vector.

From-SVN: r163538
gcc/ChangeLog
gcc/config/arm/iterators.md
gcc/config/arm/neon.md
gcc/config/arm/predicates.md
gcc/testsuite/ChangeLog
gcc/testsuite/lib/target-supports.exp