Lines 11-28
Link Here
|
11 |
#ifndef EIGEN_COMPLEX_NEON_H |
11 |
#ifndef EIGEN_COMPLEX_NEON_H |
12 |
#define EIGEN_COMPLEX_NEON_H |
12 |
#define EIGEN_COMPLEX_NEON_H |
13 |
|
13 |
|
14 |
namespace Eigen { |
14 |
namespace Eigen { |
15 |
|
15 |
|
16 |
namespace internal { |
16 |
namespace internal { |
17 |
|
17 |
|
18 |
inline uint32x4_t p4ui_CONJ_XOR() { |
18 |
inline uint32x4_t p4ui_CONJ_XOR() { |
|
|
19 |
#if EIGEN_COMP_CLANG |
20 |
uint32x4_t ret = { 0x00000000, 0x80000000, 0x00000000, 0x80000000 }; |
21 |
return ret; |
22 |
#else |
19 |
static const uint32_t conj_XOR_DATA[] = { 0x00000000, 0x80000000, 0x00000000, 0x80000000 }; |
23 |
static const uint32_t conj_XOR_DATA[] = { 0x00000000, 0x80000000, 0x00000000, 0x80000000 }; |
20 |
return vld1q_u32( conj_XOR_DATA ); |
24 |
return vld1q_u32( conj_XOR_DATA ); |
|
|
25 |
#endif |
21 |
} |
26 |
} |
22 |
|
27 |
|
23 |
inline uint32x2_t p2ui_CONJ_XOR() { |
28 |
inline uint32x2_t p2ui_CONJ_XOR() { |
24 |
static const uint32_t conj_XOR_DATA[] = { 0x00000000, 0x80000000 }; |
29 |
static const uint32_t conj_XOR_DATA[] = { 0x00000000, 0x80000000 }; |
25 |
return vld1_u32( conj_XOR_DATA ); |
30 |
return vld1_u32( conj_XOR_DATA ); |
26 |
} |
31 |
} |
27 |
|
32 |
|
28 |
//---------- float ---------- |
33 |
//---------- float ---------- |
Lines 277-294
ptranspose(PacketBlock<Packet2cf,2>& ker
Link Here
|
277 |
Packet4f tmp = vcombine_f32(vget_high_f32(kernel.packet[0].v), vget_high_f32(kernel.packet[1].v)); |
282 |
Packet4f tmp = vcombine_f32(vget_high_f32(kernel.packet[0].v), vget_high_f32(kernel.packet[1].v)); |
278 |
kernel.packet[0].v = vcombine_f32(vget_low_f32(kernel.packet[0].v), vget_low_f32(kernel.packet[1].v)); |
283 |
kernel.packet[0].v = vcombine_f32(vget_low_f32(kernel.packet[0].v), vget_low_f32(kernel.packet[1].v)); |
279 |
kernel.packet[1].v = tmp; |
284 |
kernel.packet[1].v = tmp; |
280 |
} |
285 |
} |
281 |
|
286 |
|
282 |
//---------- double ---------- |
287 |
//---------- double ---------- |
283 |
#if EIGEN_ARCH_ARM64 && !EIGEN_APPLE_DOUBLE_NEON_BUG |
288 |
#if EIGEN_ARCH_ARM64 && !EIGEN_APPLE_DOUBLE_NEON_BUG |
284 |
|
289 |
|
285 |
const uint64_t p2ul_conj_XOR_DATA[] = { 0x0, 0x8000000000000000 }; |
290 |
// See bug 1325, clang 3.5 fails to call vld1q_u64. |
286 |
static uint64x2_t p2ul_CONJ_XOR = vld1q_u64( p2ul_conj_XOR_DATA ); |
291 |
#if EIGEN_COMP_CLANG |
|
|
292 |
static uint64x2_t p2ul_CONJ_XOR = {0x0, 0x8000000000000000}; |
293 |
#else |
294 |
const uint64_t p2ul_conj_XOR_DATA[] = { 0x0, 0x8000000000000000 }; |
295 |
static uint64x2_t p2ul_CONJ_XOR = vld1q_u64( p2ul_conj_XOR_DATA ); |
296 |
#endif |
287 |
|
297 |
|
288 |
struct Packet1cd |
298 |
struct Packet1cd |
289 |
{ |
299 |
{ |
290 |
EIGEN_STRONG_INLINE Packet1cd() {} |
300 |
EIGEN_STRONG_INLINE Packet1cd() {} |
291 |
EIGEN_STRONG_INLINE explicit Packet1cd(const Packet2d& a) : v(a) {} |
301 |
EIGEN_STRONG_INLINE explicit Packet1cd(const Packet2d& a) : v(a) {} |
292 |
Packet2d v; |
302 |
Packet2d v; |
293 |
}; |
303 |
}; |
294 |
|
304 |
|