This bugzilla service is closed. All entries have been migrated to https://gitlab.com/libeigen/eigen
View | Details | Raw Unified | Return to bug 1325 | Differences between
and this patch

Collapse All | Expand All

(-)a/Eigen/src/Core/arch/NEON/Complex.h (-2 / +12 lines)
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

Return to bug 1325