2010-07-02 Sandra Loosemore <sandra@codesourcery.com>
authorsandra <sandra@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 2 Jul 2010 23:16:35 +0000 (23:16 +0000)
committersandra <sandra@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 2 Jul 2010 23:16:35 +0000 (23:16 +0000)
commite2669ea74dd370c02edc4f1c740610024dc8fdc4
treea25fee3a9968cad28df3933528753ab2d110e680
parent657e7797d9d42ef2a16fed0790c1bd637499f050
2010-07-02  Sandra Loosemore  <sandra@codesourcery.com>

gcc/
* config/arm/neon.md (UNSPEC_VAND): Delete.
(UNSPEC_VBIC): Delete.
(UNSPEC_VCLZ): Delete.
(UNSPEC_VCNT): Delete.
(UNSPEC_VEOR): Delete.
(UNSPEC_VORN): Delete.
(UNSPEC_VORR): Delete.
(iordi3_neon): Rewrite RTL without unspec.  Add alternatives to handle
core registers too.
(anddi3_neon): Likewise.
(orndi3_neon): Likewise.
(bicdi3_neon): Likewise.
(xordi3_neon): Likewise.
(neon_vclz<mode>): Rewrite as define_expand and clz<mode>2 to get
rid of unspec and handle unused operand.
(neon_vcnt<mode>): Similarly, with popcount<mode>2.
* config/arm/predicates.md (imm_for_neon_logic_operand):
Require TARGET_NEON.
(imm_for_neon_inv_logic_operand): Likewise.
* config/arm/arm.md (define_split for logical_binary_operator):
Disable for NEON registers.
(anddi3): Add new define_expand, and rename the insn.  Disable
this insn for NEON, where anddi3_neon now applies.
(*anddi_notdi_di): Disable for TARGET_NEON, where bicdi3_neon applies.
(iordi3): As for anddi3.
(xordi3): Likewise.
* config/arm/neon.ml (Vand): Split DImode variants and mark them
as No_op to disable testing for exact instruction match.
(Vorr): Likewise.
(Veor): Likewise.
(Vbic): Likewise.
(Vorn): Likewise.
* config/arm/arm_neon.h: Regenerated.
* doc/arm-neon-intrinsics.texi: Regenerated.

gcc/testsuite/
* gcc.target/arm/neon-vands64.c: New.
* gcc.target/arm/neon-vandu64.c: New.
* gcc.target/arm/neon-vbics64.c: New.
* gcc.target/arm/neon-vbicu64.c: New.
* gcc.target/arm/neon-veors64.c: New.
* gcc.target/arm/neon-veoru64.c: New.
* gcc.target/arm/neon-vorns64.c: New.
* gcc.target/arm/neon-vornu64.c: New.
* gcc.target/arm/neon-vorrs64.c: New.
* gcc.target/arm/neon-vorru64.c: New.
* gcc.target/arm/neon/vands64.c: Regenerated.
* gcc.target/arm/neon/vandu64.c: Regenerated.
* gcc.target/arm/neon/vbics64.c: Regenerated.
* gcc.target/arm/neon/vbicu64.c: Regenerated.
* gcc.target/arm/neon/veors64.c: Regenerated.
* gcc.target/arm/neon/veoru64.c: Regenerated.
* gcc.target/arm/neon/vorns64.c: Regenerated.
* gcc.target/arm/neon/vornu64.c: Regenerated.
* gcc.target/arm/neon/vorrs64.c: Regenerated.
* gcc.target/arm/neon/vorru64.c: Regenerated.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@161755 138bc75d-0d04-0410-961f-82ee72b054a4
28 files changed:
gcc/ChangeLog
gcc/config/arm/arm.md
gcc/config/arm/arm_neon.h
gcc/config/arm/neon.md
gcc/config/arm/neon.ml
gcc/config/arm/predicates.md
gcc/doc/arm-neon-intrinsics.texi
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.target/arm/neon-vands64.c [new file with mode: 0644]
gcc/testsuite/gcc.target/arm/neon-vandu64.c [new file with mode: 0644]
gcc/testsuite/gcc.target/arm/neon-vbics64.c [new file with mode: 0644]
gcc/testsuite/gcc.target/arm/neon-vbicu64.c [new file with mode: 0644]
gcc/testsuite/gcc.target/arm/neon-veors64.c [new file with mode: 0644]
gcc/testsuite/gcc.target/arm/neon-veoru64.c [new file with mode: 0644]
gcc/testsuite/gcc.target/arm/neon-vorns64.c [new file with mode: 0644]
gcc/testsuite/gcc.target/arm/neon-vornu64.c [new file with mode: 0644]
gcc/testsuite/gcc.target/arm/neon-vorrs64.c [new file with mode: 0644]
gcc/testsuite/gcc.target/arm/neon-vorru64.c [new file with mode: 0644]
gcc/testsuite/gcc.target/arm/neon/vands64.c
gcc/testsuite/gcc.target/arm/neon/vandu64.c
gcc/testsuite/gcc.target/arm/neon/vbics64.c
gcc/testsuite/gcc.target/arm/neon/vbicu64.c
gcc/testsuite/gcc.target/arm/neon/veors64.c
gcc/testsuite/gcc.target/arm/neon/veoru64.c
gcc/testsuite/gcc.target/arm/neon/vorns64.c
gcc/testsuite/gcc.target/arm/neon/vornu64.c
gcc/testsuite/gcc.target/arm/neon/vorrs64.c
gcc/testsuite/gcc.target/arm/neon/vorru64.c