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

Collapse All | Expand All

(-)a/Eigen/src/Core/arch/NEON/Complex.h (-2 / +12 lines)
Lines 27-34 Link Here
27
27
28
namespace internal {
28
namespace internal {
29
29
30
static uint32x4_t p4ui_CONJ_XOR = { 0x00000000, 0x80000000, 0x00000000, 0x80000000 };
30
static uint32x4_t p4ui_CONJ_XOR =
31
static uint32x2_t p2ui_CONJ_XOR = { 0x00000000, 0x80000000 };
31
#if __llvm__ && !__clang__
32
    {{ 0x00000000, 0x80000000, 0x00000000, 0x80000000 }};
33
#else
34
    { 0x00000000, 0x80000000, 0x00000000, 0x80000000 };
35
#endif
36
static uint32x2_t p2ui_CONJ_XOR =
37
#if __llvm__ && !__clang__
38
    {{ 0x00000000, 0x80000000 }};
39
#else
40
    { 0x00000000, 0x80000000 };
41
#endif
32
42
33
//---------- float ----------
43
//---------- float ----------
34
struct Packet2cf
44
struct Packet2cf
(-)a/Eigen/src/Core/arch/NEON/PacketMath.h (-21 / +31 lines)
Lines 84-90 Link Here
84
  };
84
  };
85
};
85
};
86
86
87
#if EIGEN_GNUC_AT_MOST(4,4)
87
#if EIGEN_GNUC_AT_MOST(4,4) && !__llvm__
88
// workaround gcc 4.2, 4.3 and 4.4 compilatin issue
88
// workaround gcc 4.2, 4.3 and 4.4 compilatin issue
89
EIGEN_STRONG_INLINE float32x4_t vld1q_f32(const float* x) { return ::vld1q_f32((const float32_t*)x); }
89
EIGEN_STRONG_INLINE float32x4_t vld1q_f32(const float* x) { return ::vld1q_f32((const float32_t*)x); }
90
EIGEN_STRONG_INLINE float32x2_t vld1_f32 (const float* x) { return ::vld1_f32 ((const float32_t*)x); }
90
EIGEN_STRONG_INLINE float32x2_t vld1_f32 (const float* x) { return ::vld1_f32 ((const float32_t*)x); }
Lines 100-111 Link Here
100
100
101
template<> EIGEN_STRONG_INLINE Packet4f plset<float>(const float& a)
101
template<> EIGEN_STRONG_INLINE Packet4f plset<float>(const float& a)
102
{
102
{
103
  Packet4f countdown = { 0, 1, 2, 3 };
103
  Packet4f countdown = 
104
#if __llvm__ && !__clang__
105
    {{ 0, 1, 2, 3 }};
106
#else
107
    { 0, 1, 2, 3 };
108
#endif
104
  return vaddq_f32(pset1<Packet4f>(a), countdown);
109
  return vaddq_f32(pset1<Packet4f>(a), countdown);
105
}
110
}
106
template<> EIGEN_STRONG_INLINE Packet4i plset<int>(const int& a)
111
template<> EIGEN_STRONG_INLINE Packet4i plset<int>(const int& a)
107
{
112
{
108
  Packet4i countdown = { 0, 1, 2, 3 };
113
  Packet4i countdown = 
114
#if __llvm__ && !__clang__
115
    {{ 0, 1, 2, 3 }};
116
#else
117
    { 0, 1, 2, 3 };
118
#endif
109
  return vaddq_s32(pset1<Packet4i>(a), countdown);
119
  return vaddq_s32(pset1<Packet4i>(a), countdown);
110
}
120
}
111
121
Lines 395-419 Link Here
395
  return s[0];
405
  return s[0];
396
}
406
}
397
407
398
template<int Offset>
408
#define PALIGN_NEON(Offset,Type,Command) \
399
struct palign_impl<Offset,Packet4f>
409
template<>\
400
{
410
struct palign_impl<Offset,Type>\
401
  EIGEN_STRONG_INLINE static void run(Packet4f& first, const Packet4f& second)
411
{\
402
  {
412
    EIGEN_STRONG_INLINE static void run(Type& first, const Type& second)\
403
    if (Offset!=0)
413
    {\
404
      first = vextq_f32(first, second, Offset);
414
        if (Offset!=0)\
405
  }
415
            first = Command(first, second, Offset);\
406
};
416
    }\
417
};\
407
418
408
template<int Offset>
419
PALIGN_NEON(0,Packet4f,vextq_f32)
409
struct palign_impl<Offset,Packet4i>
420
PALIGN_NEON(1,Packet4f,vextq_f32)
410
{
421
PALIGN_NEON(2,Packet4f,vextq_f32)
411
  EIGEN_STRONG_INLINE static void run(Packet4i& first, const Packet4i& second)
422
PALIGN_NEON(3,Packet4f,vextq_f32)
412
  {
423
PALIGN_NEON(0,Packet4i,vextq_s32)
413
    if (Offset!=0)
424
PALIGN_NEON(1,Packet4i,vextq_s32)
414
      first = vextq_s32(first, second, Offset);
425
PALIGN_NEON(2,Packet4i,vextq_s32)
415
  }
426
PALIGN_NEON(3,Packet4i,vextq_s32)
416
};
417
427
418
} // end namespace internal
428
} // end namespace internal
419
429
(-)a/Eigen/src/Core/util/Macros.h (-1 / +1 lines)
Lines 45-51 Link Here
45
  #define EIGEN_GNUC_AT_MOST(x,y) 0
45
  #define EIGEN_GNUC_AT_MOST(x,y) 0
46
#endif
46
#endif
47
47
48
#if EIGEN_GNUC_AT_MOST(4,3)
48
#if EIGEN_GNUC_AT_MOST(4,3) && !__clang__
49
  // see bug 89
49
  // see bug 89
50
  #define EIGEN_SAFE_TO_USE_STANDARD_ASSERT_MACRO 0
50
  #define EIGEN_SAFE_TO_USE_STANDARD_ASSERT_MACRO 0
51
#else
51
#else

Return to bug 347