diff options
author | sandra <sandra@138bc75d-0d04-0410-961f-82ee72b054a4> | 2010-07-02 23:16:35 +0000 |
---|---|---|
committer | sandra <sandra@138bc75d-0d04-0410-961f-82ee72b054a4> | 2010-07-02 23:16:35 +0000 |
commit | e2669ea74dd370c02edc4f1c740610024dc8fdc4 (patch) | |
tree | a25fee3a9968cad28df3933528753ab2d110e680 /gcc/config/arm/arm_neon.h | |
parent | 657e7797d9d42ef2a16fed0790c1bd637499f050 (diff) | |
download | gcc-e2669ea74dd370c02edc4f1c740610024dc8fdc4.tar.gz |
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
Diffstat (limited to 'gcc/config/arm/arm_neon.h')
-rw-r--r-- | gcc/config/arm/arm_neon.h | 84 |
1 files changed, 42 insertions, 42 deletions
diff --git a/gcc/config/arm/arm_neon.h b/gcc/config/arm/arm_neon.h index ccfc7426077..a6085bba285 100644 --- a/gcc/config/arm/arm_neon.h +++ b/gcc/config/arm/arm_neon.h @@ -5808,12 +5808,6 @@ vget_low_s32 (int32x4_t __a) return (int32x2_t)__builtin_neon_vget_lowv4si (__a); } -__extension__ static __inline int64x1_t __attribute__ ((__always_inline__)) -vget_low_s64 (int64x2_t __a) -{ - return (int64x1_t)__builtin_neon_vget_lowv2di (__a); -} - __extension__ static __inline float32x2_t __attribute__ ((__always_inline__)) vget_low_f32 (float32x4_t __a) { @@ -5838,12 +5832,6 @@ vget_low_u32 (uint32x4_t __a) return (uint32x2_t)__builtin_neon_vget_lowv4si ((int32x4_t) __a); } -__extension__ static __inline uint64x1_t __attribute__ ((__always_inline__)) -vget_low_u64 (uint64x2_t __a) -{ - return (uint64x1_t)__builtin_neon_vget_lowv2di ((int64x2_t) __a); -} - __extension__ static __inline poly8x8_t __attribute__ ((__always_inline__)) vget_low_p8 (poly8x16_t __a) { @@ -5856,6 +5844,18 @@ vget_low_p16 (poly16x8_t __a) return (poly16x4_t)__builtin_neon_vget_lowv8hi ((int16x8_t) __a); } +__extension__ static __inline int64x1_t __attribute__ ((__always_inline__)) +vget_low_s64 (int64x2_t __a) +{ + return (int64x1_t)__builtin_neon_vget_lowv2di (__a); +} + +__extension__ static __inline uint64x1_t __attribute__ ((__always_inline__)) +vget_low_u64 (uint64x2_t __a) +{ + return (uint64x1_t)__builtin_neon_vget_lowv2di ((int64x2_t) __a); +} + __extension__ static __inline int32x2_t __attribute__ ((__always_inline__)) vcvt_s32_f32 (float32x2_t __a) { @@ -10386,12 +10386,6 @@ vand_s32 (int32x2_t __a, int32x2_t __b) return (int32x2_t)__builtin_neon_vandv2si (__a, __b, 1); } -__extension__ static __inline int64x1_t __attribute__ ((__always_inline__)) -vand_s64 (int64x1_t __a, int64x1_t __b) -{ - return (int64x1_t)__builtin_neon_vanddi (__a, __b, 1); -} - __extension__ static __inline uint8x8_t __attribute__ ((__always_inline__)) vand_u8 (uint8x8_t __a, uint8x8_t __b) { @@ -10410,6 +10404,12 @@ vand_u32 (uint32x2_t __a, uint32x2_t __b) return (uint32x2_t)__builtin_neon_vandv2si ((int32x2_t) __a, (int32x2_t) __b, 0); } +__extension__ static __inline int64x1_t __attribute__ ((__always_inline__)) +vand_s64 (int64x1_t __a, int64x1_t __b) +{ + return (int64x1_t)__builtin_neon_vanddi (__a, __b, 1); +} + __extension__ static __inline uint64x1_t __attribute__ ((__always_inline__)) vand_u64 (uint64x1_t __a, uint64x1_t __b) { @@ -10482,12 +10482,6 @@ vorr_s32 (int32x2_t __a, int32x2_t __b) return (int32x2_t)__builtin_neon_vorrv2si (__a, __b, 1); } -__extension__ static __inline int64x1_t __attribute__ ((__always_inline__)) -vorr_s64 (int64x1_t __a, int64x1_t __b) -{ - return (int64x1_t)__builtin_neon_vorrdi (__a, __b, 1); -} - __extension__ static __inline uint8x8_t __attribute__ ((__always_inline__)) vorr_u8 (uint8x8_t __a, uint8x8_t __b) { @@ -10506,6 +10500,12 @@ vorr_u32 (uint32x2_t __a, uint32x2_t __b) return (uint32x2_t)__builtin_neon_vorrv2si ((int32x2_t) __a, (int32x2_t) __b, 0); } +__extension__ static __inline int64x1_t __attribute__ ((__always_inline__)) +vorr_s64 (int64x1_t __a, int64x1_t __b) +{ + return (int64x1_t)__builtin_neon_vorrdi (__a, __b, 1); +} + __extension__ static __inline uint64x1_t __attribute__ ((__always_inline__)) vorr_u64 (uint64x1_t __a, uint64x1_t __b) { @@ -10578,12 +10578,6 @@ veor_s32 (int32x2_t __a, int32x2_t __b) return (int32x2_t)__builtin_neon_veorv2si (__a, __b, 1); } -__extension__ static __inline int64x1_t __attribute__ ((__always_inline__)) -veor_s64 (int64x1_t __a, int64x1_t __b) -{ - return (int64x1_t)__builtin_neon_veordi (__a, __b, 1); -} - __extension__ static __inline uint8x8_t __attribute__ ((__always_inline__)) veor_u8 (uint8x8_t __a, uint8x8_t __b) { @@ -10602,6 +10596,12 @@ veor_u32 (uint32x2_t __a, uint32x2_t __b) return (uint32x2_t)__builtin_neon_veorv2si ((int32x2_t) __a, (int32x2_t) __b, 0); } +__extension__ static __inline int64x1_t __attribute__ ((__always_inline__)) +veor_s64 (int64x1_t __a, int64x1_t __b) +{ + return (int64x1_t)__builtin_neon_veordi (__a, __b, 1); +} + __extension__ static __inline uint64x1_t __attribute__ ((__always_inline__)) veor_u64 (uint64x1_t __a, uint64x1_t __b) { @@ -10674,12 +10674,6 @@ vbic_s32 (int32x2_t __a, int32x2_t __b) return (int32x2_t)__builtin_neon_vbicv2si (__a, __b, 1); } -__extension__ static __inline int64x1_t __attribute__ ((__always_inline__)) -vbic_s64 (int64x1_t __a, int64x1_t __b) -{ - return (int64x1_t)__builtin_neon_vbicdi (__a, __b, 1); -} - __extension__ static __inline uint8x8_t __attribute__ ((__always_inline__)) vbic_u8 (uint8x8_t __a, uint8x8_t __b) { @@ -10698,6 +10692,12 @@ vbic_u32 (uint32x2_t __a, uint32x2_t __b) return (uint32x2_t)__builtin_neon_vbicv2si ((int32x2_t) __a, (int32x2_t) __b, 0); } +__extension__ static __inline int64x1_t __attribute__ ((__always_inline__)) +vbic_s64 (int64x1_t __a, int64x1_t __b) +{ + return (int64x1_t)__builtin_neon_vbicdi (__a, __b, 1); +} + __extension__ static __inline uint64x1_t __attribute__ ((__always_inline__)) vbic_u64 (uint64x1_t __a, uint64x1_t __b) { @@ -10770,12 +10770,6 @@ vorn_s32 (int32x2_t __a, int32x2_t __b) return (int32x2_t)__builtin_neon_vornv2si (__a, __b, 1); } -__extension__ static __inline int64x1_t __attribute__ ((__always_inline__)) -vorn_s64 (int64x1_t __a, int64x1_t __b) -{ - return (int64x1_t)__builtin_neon_vorndi (__a, __b, 1); -} - __extension__ static __inline uint8x8_t __attribute__ ((__always_inline__)) vorn_u8 (uint8x8_t __a, uint8x8_t __b) { @@ -10794,6 +10788,12 @@ vorn_u32 (uint32x2_t __a, uint32x2_t __b) return (uint32x2_t)__builtin_neon_vornv2si ((int32x2_t) __a, (int32x2_t) __b, 0); } +__extension__ static __inline int64x1_t __attribute__ ((__always_inline__)) +vorn_s64 (int64x1_t __a, int64x1_t __b) +{ + return (int64x1_t)__builtin_neon_vorndi (__a, __b, 1); +} + __extension__ static __inline uint64x1_t __attribute__ ((__always_inline__)) vorn_u64 (uint64x1_t __a, uint64x1_t __b) { |