@@ -44,6 +44,54 @@ typedef eigen_packet_wrapper<__m512i, 6> Packet32s;
4444typedef eigen_packet_wrapper<__m256i, 6 > Packet16s;
4545typedef eigen_packet_wrapper<__m128i, 6 > Packet8s;
4646
47+ EIGEN_STRONG_INLINE __m512i eigen_mm512_loadu_epi32 (const int * from) {
48+ #if EIGEN_COMP_GNUC && !EIGEN_COMP_CLANG && EIGEN_COMP_GNUC < 800
49+ return _mm512_loadu_si512 (reinterpret_cast <const void *>(from));
50+ #else
51+ return _mm512_loadu_epi32 (from);
52+ #endif
53+ }
54+
55+ EIGEN_STRONG_INLINE __m512i eigen_mm512_loadu_epi64 (const int64_t * from) {
56+ #if EIGEN_COMP_GNUC && !EIGEN_COMP_CLANG && EIGEN_COMP_GNUC < 800
57+ return _mm512_loadu_si512 (reinterpret_cast <const void *>(from));
58+ #else
59+ return _mm512_loadu_epi64 (from);
60+ #endif
61+ }
62+
63+ EIGEN_STRONG_INLINE void eigen_mm512_storeu_epi32 (void * to, const __m512i& from) {
64+ #if EIGEN_COMP_GNUC && !EIGEN_COMP_CLANG && EIGEN_COMP_GNUC < 800
65+ _mm512_storeu_si512 (to, from);
66+ #else
67+ _mm512_storeu_epi32 (to, from);
68+ #endif
69+ }
70+
71+ EIGEN_STRONG_INLINE void eigen_mm512_storeu_epi64 (void * to, const __m512i& from) {
72+ #if EIGEN_COMP_GNUC && !EIGEN_COMP_CLANG && EIGEN_COMP_GNUC < 800
73+ _mm512_storeu_si512 (to, from);
74+ #else
75+ _mm512_storeu_epi64 (to, from);
76+ #endif
77+ }
78+
79+ EIGEN_STRONG_INLINE void eigen_mm256_storeu_epi32 (void * to, const __m256i& from) {
80+ #if EIGEN_COMP_GNUC && !EIGEN_COMP_CLANG && EIGEN_COMP_GNUC < 800
81+ _mm256_storeu_si256 (reinterpret_cast <__m256i*>(to), from);
82+ #else
83+ _mm256_storeu_epi32 (to, from);
84+ #endif
85+ }
86+
87+ EIGEN_STRONG_INLINE void eigen_mm_storeu_epi32 (void * to, const __m128i& from) {
88+ #if EIGEN_COMP_GNUC && !EIGEN_COMP_CLANG && EIGEN_COMP_GNUC < 800
89+ _mm_storeu_si128 (reinterpret_cast <__m128i*>(to), from);
90+ #else
91+ _mm_storeu_epi32 (to, from);
92+ #endif
93+ }
94+
4795template <>
4896struct is_arithmetic <__m512> {
4997 enum { value = true };
@@ -1033,11 +1081,11 @@ EIGEN_STRONG_INLINE Packet8d ploadu<Packet8d>(const double* from) {
10331081}
10341082template <>
10351083EIGEN_STRONG_INLINE Packet16i ploadu<Packet16i>(const int * from) {
1036- EIGEN_DEBUG_UNALIGNED_LOAD return _mm512_loadu_epi32 (from);
1084+ EIGEN_DEBUG_UNALIGNED_LOAD return eigen_mm512_loadu_epi32 (from);
10371085}
10381086template <>
10391087EIGEN_STRONG_INLINE Packet8l ploadu<Packet8l>(const int64_t * from) {
1040- EIGEN_DEBUG_UNALIGNED_LOAD return _mm512_loadu_epi64 (from);
1088+ EIGEN_DEBUG_UNALIGNED_LOAD return eigen_mm512_loadu_epi64 (from);
10411089}
10421090
10431091template <>
@@ -1158,11 +1206,11 @@ EIGEN_STRONG_INLINE void pstoreu<double>(double* to, const Packet8d& from) {
11581206}
11591207template <>
11601208EIGEN_STRONG_INLINE void pstoreu<int >(int * to, const Packet16i& from) {
1161- EIGEN_DEBUG_UNALIGNED_STORE _mm512_storeu_epi32 (to, from);
1209+ EIGEN_DEBUG_UNALIGNED_STORE eigen_mm512_storeu_epi32 (to, from);
11621210}
11631211template <>
11641212EIGEN_STRONG_INLINE void pstoreu<int64_t >(int64_t * to, const Packet8l& from) {
1165- EIGEN_DEBUG_UNALIGNED_STORE _mm512_storeu_epi64 (to, from);
1213+ EIGEN_DEBUG_UNALIGNED_STORE eigen_mm512_storeu_epi64 (to, from);
11661214}
11671215template <>
11681216EIGEN_STRONG_INLINE void pstoreu<float >(float * to, const Packet16f& from, uint16_t umask) {
@@ -2997,19 +3045,19 @@ EIGEN_STRONG_INLINE void pstore<numext::int16_t, Packet8s>(numext::int16_t* out,
29973045template <>
29983046EIGEN_STRONG_INLINE void pstoreu<numext::int16_t , Packet32s>(numext::int16_t * out, const Packet32s& x) {
29993047 EIGEN_DEBUG_UNALIGNED_STORE
3000- _mm512_storeu_epi32 (out, x);
3048+ eigen_mm512_storeu_epi32 (out, x);
30013049}
30023050
30033051template <>
30043052EIGEN_STRONG_INLINE void pstoreu<numext::int16_t , Packet16s>(numext::int16_t * out, const Packet16s& x) {
30053053 EIGEN_DEBUG_UNALIGNED_STORE
3006- _mm256_storeu_epi32 (out, x);
3054+ eigen_mm256_storeu_epi32 (out, x);
30073055}
30083056
30093057template <>
30103058EIGEN_STRONG_INLINE void pstoreu<numext::int16_t , Packet8s>(numext::int16_t * out, const Packet8s& x) {
30113059 EIGEN_DEBUG_UNALIGNED_STORE
3012- _mm_storeu_epi32 (out, x);
3060+ eigen_mm_storeu_epi32 (out, x);
30133061}
30143062
30153063template <>
0 commit comments