workaround for legacy compilers

This commit is contained in:
pinterior 2019-02-02 17:12:38 +09:00
parent 8aaf3520b2
commit 91e37507d7
4 changed files with 22 additions and 3 deletions

View File

@ -23,7 +23,11 @@ private:
__m128i v;
public:
inline xmm() { v = _mm_undefined_si128(); }
inline xmm() {
#if !defined(NO_MM_UNDEFINED)
v = _mm_undefined_si128();
#endif
}
inline xmm(uint32_t n) { v = _mm_set1_epi32(n); }
inline xmm(const __m128i &r) { v = r; }

View File

@ -23,7 +23,11 @@ private:
__m256i v;
public:
inline ymm() { v = _mm256_undefined_si256(); }
inline ymm() {
#if !defined(NO_MM_UNDEFINED)
v = _mm256_undefined_si256();
#endif
}
inline ymm(uint32_t n) { v = _mm256_set1_epi32(n); }
inline ymm(const __m256i &r) { v = r; }

View File

@ -24,7 +24,11 @@ private:
__m256i v1;
public:
inline ymm2() { v0 = v1 = _mm256_undefined_si256(); }
inline ymm2() {
#if !defined(NO_MM_UNDEFINED)
v0 = v1 = _mm256_undefined_si256();
#endif
}
inline ymm2(uint32_t n) { v0 = v1 = _mm256_set1_epi32(n); }
inline ymm2(const __m256i &r0, const __m256i &r1) {
v0 = r0;

View File

@ -36,4 +36,11 @@ typedef signed __int64 int64_t;
#define _S_IWRITE (S_IWUSR|S_IWGRP|S_IWOTH)
#endif
#if defined(__GNUC__) && (__GNUC__ < 5 && !(__GNUC__ == 4 && 9 <= __GNUC_MINOR__))
#define NO_MM_UNDEFINED
#endif
#if defined(__clang__) && (__clang_major__ < 4 && !(__clang_major__ == 3 && 8 <= __clang_minor__))
#define NO_MM_UNDEFINED
#endif
#endif /* PORTABLE_H */