Fix aligned access to misaligned stack, fixes #3152
This commit is contained in:
@@ -21,12 +21,12 @@ typedef __m128i vint2;
|
|||||||
|
|
||||||
//
|
//
|
||||||
#ifdef __GNUC__
|
#ifdef __GNUC__
|
||||||
#if (__GNUC__ == 4 && __GNUC_MINOR__ >= 9) || __GNUC__ > 4
|
#if ((__GNUC__ == 4 && __GNUC_MINOR__ >= 9) || __GNUC__ > 4) && (!defined(WIN32) || defined( __x86_64__ ))
|
||||||
#define LVF(x) _mm_load_ps(&x)
|
#define LVF(x) _mm_load_ps(&x)
|
||||||
#define LVFU(x) _mm_loadu_ps(&x)
|
#define LVFU(x) _mm_loadu_ps(&x)
|
||||||
#define STVF(x,y) _mm_store_ps(&x,y)
|
#define STVF(x,y) _mm_store_ps(&x,y)
|
||||||
#define STVFU(x,y) _mm_storeu_ps(&x,y)
|
#define STVFU(x,y) _mm_storeu_ps(&x,y)
|
||||||
#else // there is a bug in gcc 4.7.x when using openmp and aligned memory and -O3
|
#else // there is a bug in gcc 4.7.x when using openmp and aligned memory and -O3, also need to map the aligned functions to unaligned functions for WIN32 builds
|
||||||
#define LVF(x) _mm_loadu_ps(&x)
|
#define LVF(x) _mm_loadu_ps(&x)
|
||||||
#define LVFU(x) _mm_loadu_ps(&x)
|
#define LVFU(x) _mm_loadu_ps(&x)
|
||||||
#define STVF(x,y) _mm_storeu_ps(&x,y)
|
#define STVF(x,y) _mm_storeu_ps(&x,y)
|
||||||
|
@@ -55,10 +55,10 @@
|
|||||||
#define RESTRICT __restrict__
|
#define RESTRICT __restrict__
|
||||||
#define LIKELY(x) __builtin_expect (!!(x), 1)
|
#define LIKELY(x) __builtin_expect (!!(x), 1)
|
||||||
#define UNLIKELY(x) __builtin_expect (!!(x), 0)
|
#define UNLIKELY(x) __builtin_expect (!!(x), 0)
|
||||||
#if (__GNUC__ == 4 && __GNUC_MINOR__ >= 9) || __GNUC__ > 4
|
#if ((__GNUC__ == 4 && __GNUC_MINOR__ >= 9) || __GNUC__ > 4) && (!defined(WIN32) || defined( __x86_64__ ))
|
||||||
#define ALIGNED64 __attribute__ ((aligned (64)))
|
#define ALIGNED64 __attribute__ ((aligned (64)))
|
||||||
#define ALIGNED16 __attribute__ ((aligned (16)))
|
#define ALIGNED16 __attribute__ ((aligned (16)))
|
||||||
#else // there is a bug in gcc 4.7.x when using openmp and aligned memory and -O3
|
#else // there is a bug in gcc 4.7.x when using openmp and aligned memory and -O3, also needed for WIN32 builds
|
||||||
#define ALIGNED64
|
#define ALIGNED64
|
||||||
#define ALIGNED16
|
#define ALIGNED16
|
||||||
#endif
|
#endif
|
||||||
|
Reference in New Issue
Block a user