diff options
author | Gael Guennebaud <g.gael@free.fr> | 2016-10-12 16:55:47 +0200 |
---|---|---|
committer | Gael Guennebaud <g.gael@free.fr> | 2016-10-12 16:55:47 +0200 |
commit | 89e315152c759f298c144fd25f67b1a9a375ee08 (patch) | |
tree | b0acd67b5fb05763caeb3e34e9501137ad065a2d /Eigen/src/Core/arch/NEON/Complex.h | |
parent | 7f0599b6eb45c8a1a1aae9db32408d64eb7f5d45 (diff) |
bug #1325: fix compilation on NEON with clang
Diffstat (limited to 'Eigen/src/Core/arch/NEON/Complex.h')
-rw-r--r-- | Eigen/src/Core/arch/NEON/Complex.h | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/Eigen/src/Core/arch/NEON/Complex.h b/Eigen/src/Core/arch/NEON/Complex.h index 3e121dce5..57e9b431f 100644 --- a/Eigen/src/Core/arch/NEON/Complex.h +++ b/Eigen/src/Core/arch/NEON/Complex.h @@ -16,8 +16,14 @@ namespace Eigen { namespace internal { inline uint32x4_t p4ui_CONJ_XOR() { +// See bug 1325, clang fails to call vld1q_u64. +#if EIGEN_COMP_CLANG + uint32x4_t ret = { 0x00000000, 0x80000000, 0x00000000, 0x80000000 }; + return ret; +#else static const uint32_t conj_XOR_DATA[] = { 0x00000000, 0x80000000, 0x00000000, 0x80000000 }; return vld1q_u32( conj_XOR_DATA ); +#endif } inline uint32x2_t p2ui_CONJ_XOR() { @@ -282,8 +288,13 @@ ptranspose(PacketBlock<Packet2cf,2>& kernel) { //---------- double ---------- #if EIGEN_ARCH_ARM64 && !EIGEN_APPLE_DOUBLE_NEON_BUG -const uint64_t p2ul_conj_XOR_DATA[] = { 0x0, 0x8000000000000000 }; -static uint64x2_t p2ul_CONJ_XOR = vld1q_u64( p2ul_conj_XOR_DATA ); +// See bug 1325, clang fails to call vld1q_u64. +#if EIGEN_COMP_CLANG + static uint64x2_t p2ul_CONJ_XOR = {0x0, 0x8000000000000000}; +#else + const uint64_t p2ul_conj_XOR_DATA[] = { 0x0, 0x8000000000000000 }; + static uint64x2_t p2ul_CONJ_XOR = vld1q_u64( p2ul_conj_XOR_DATA ); +#endif struct Packet1cd { |