OSDN Git Service

gcc/
authordrow <drow@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 11 Nov 2009 14:23:03 +0000 (14:23 +0000)
committerdrow <drow@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 11 Nov 2009 14:23:03 +0000 (14:23 +0000)
commitc747abbb95983ecb442ac915ac3a625b04242af9
tree8b82758d87fb4dcc505191cc1b4a840c0e65c2cb
parentfdd8cbd8b4daf0eb0c40ba77cadbcfe450754133
gcc/
* config/arm/arm.c (neon_vdup_constant, neon_make_constant): New.
(neon_expand_vector_init): Use them.  Also handle non-constant
vectors with identical elements and vectors with only one
non-constant element.
(arm_print_operand): Handle 'y' modifier.
* config/arm/arm-protos.h (neon_make_constant): Declare.
* config/arm/neon.md (neon_vdup_n<mode>): Split into two
patterns.  Use VX instead of VDQW for the first one.  Allow
a VFP alternative and V32 modes for the second one.
* config/arm/neon.ml (shape_elt): Add Alternatives.
(ops): Use Alternatives for vdup lane instructions.
* config/arm/neon-testgen.ml (analyze_shape): Handle Alternatives.
* config/arm/vec-common.md (mov<mode>): Use neon_make_constant.

gcc/testsuite/
* gcc.target/arm/neon: Regenerate generated tests.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@154094 138bc75d-0d04-0410-961f-82ee72b054a4
44 files changed:
gcc/ChangeLog
gcc/config/arm/arm-protos.h
gcc/config/arm/arm.c
gcc/config/arm/neon-testgen.ml
gcc/config/arm/neon.md
gcc/config/arm/neon.ml
gcc/config/arm/vec-common.md
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.target/arm/neon/vdupQ_nf32.c
gcc/testsuite/gcc.target/arm/neon/vdupQ_np16.c
gcc/testsuite/gcc.target/arm/neon/vdupQ_np8.c
gcc/testsuite/gcc.target/arm/neon/vdupQ_ns16.c
gcc/testsuite/gcc.target/arm/neon/vdupQ_ns32.c
gcc/testsuite/gcc.target/arm/neon/vdupQ_ns8.c
gcc/testsuite/gcc.target/arm/neon/vdupQ_nu16.c
gcc/testsuite/gcc.target/arm/neon/vdupQ_nu32.c
gcc/testsuite/gcc.target/arm/neon/vdupQ_nu8.c
gcc/testsuite/gcc.target/arm/neon/vdup_nf32.c
gcc/testsuite/gcc.target/arm/neon/vdup_np16.c
gcc/testsuite/gcc.target/arm/neon/vdup_np8.c
gcc/testsuite/gcc.target/arm/neon/vdup_ns16.c
gcc/testsuite/gcc.target/arm/neon/vdup_ns32.c
gcc/testsuite/gcc.target/arm/neon/vdup_ns8.c
gcc/testsuite/gcc.target/arm/neon/vdup_nu16.c
gcc/testsuite/gcc.target/arm/neon/vdup_nu32.c
gcc/testsuite/gcc.target/arm/neon/vdup_nu8.c
gcc/testsuite/gcc.target/arm/neon/vmovQ_nf32.c
gcc/testsuite/gcc.target/arm/neon/vmovQ_np16.c
gcc/testsuite/gcc.target/arm/neon/vmovQ_np8.c
gcc/testsuite/gcc.target/arm/neon/vmovQ_ns16.c
gcc/testsuite/gcc.target/arm/neon/vmovQ_ns32.c
gcc/testsuite/gcc.target/arm/neon/vmovQ_ns8.c
gcc/testsuite/gcc.target/arm/neon/vmovQ_nu16.c
gcc/testsuite/gcc.target/arm/neon/vmovQ_nu32.c
gcc/testsuite/gcc.target/arm/neon/vmovQ_nu8.c
gcc/testsuite/gcc.target/arm/neon/vmov_nf32.c
gcc/testsuite/gcc.target/arm/neon/vmov_np16.c
gcc/testsuite/gcc.target/arm/neon/vmov_np8.c
gcc/testsuite/gcc.target/arm/neon/vmov_ns16.c
gcc/testsuite/gcc.target/arm/neon/vmov_ns32.c
gcc/testsuite/gcc.target/arm/neon/vmov_ns8.c
gcc/testsuite/gcc.target/arm/neon/vmov_nu16.c
gcc/testsuite/gcc.target/arm/neon/vmov_nu32.c
gcc/testsuite/gcc.target/arm/neon/vmov_nu8.c