From c956acbb8786f48a26155bb63218a1ccdcc70241 Mon Sep 17 00:00:00 2001 From: "erwin.coumans" Date: Sun, 27 Feb 2011 06:02:22 +0000 Subject: [PATCH] fixes in vectormath, sse, when compiling on GCC --- src/vectormath/sse/vec_aos.h | 22 +++++++++++----------- src/vectormath/sse/vectormath_aos.h | 2 +- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/src/vectormath/sse/vec_aos.h b/src/vectormath/sse/vec_aos.h index aad251ac5..1c1eeb33c 100644 --- a/src/vectormath/sse/vec_aos.h +++ b/src/vectormath/sse/vec_aos.h @@ -346,10 +346,10 @@ VECTORMATH_FORCE_INLINE void loadXYZ(Vector3& vec, const float* fptr) VECTORMATH_FORCE_INLINE void storeXYZ( const Vector3 &vec, __m128 * quad ) { - __m128 dstVec = *quad; - __declspec(align(16)) unsigned int sw[4] = {0, 0, 0, 0xffffffff}; // TODO: Centralize - dstVec = vec_sel(vec.get128(), dstVec, sw); - *quad = dstVec; + __m128 dstVec = *quad; + VM_ATTRIBUTE_ALIGN16 unsigned int sw[4] = {0, 0, 0, 0xffffffff}; // TODO: Centralize + dstVec = vec_sel(vec.get128(), dstVec, sw); + *quad = dstVec; } VECTORMATH_FORCE_INLINE void storeXYZ(const Vector3& vec, float* fptr) @@ -373,8 +373,8 @@ VECTORMATH_FORCE_INLINE void storeXYZArray( const Vector3 &vec0, const Vector3 & { __m128 xxxx = _mm_shuffle_ps( vec1.get128(), vec1.get128(), _MM_SHUFFLE(0, 0, 0, 0) ); __m128 zzzz = _mm_shuffle_ps( vec2.get128(), vec2.get128(), _MM_SHUFFLE(2, 2, 2, 2) ); - __declspec(align(16)) unsigned int xsw[4] = {0, 0, 0, 0xffffffff}; - __declspec(align(16)) unsigned int zsw[4] = {0xffffffff, 0, 0, 0}; + VM_ATTRIBUTE_ALIGN16 unsigned int xsw[4] = {0, 0, 0, 0xffffffff}; + VM_ATTRIBUTE_ALIGN16 unsigned int zsw[4] = {0xffffffff, 0, 0, 0}; threeQuads[0] = vec_sel( vec0.get128(), xxxx, xsw ); threeQuads[1] = _mm_shuffle_ps( vec1.get128(), vec2.get128(), _MM_SHUFFLE(1, 0, 2, 1) ); threeQuads[2] = vec_sel( _mm_shuffle_ps( vec3.get128(), vec3.get128(), _MM_SHUFFLE(2, 1, 0, 3) ), zzzz, zsw ); @@ -553,7 +553,7 @@ VECTORMATH_FORCE_INLINE const Vector3 Vector3::operator -( ) const { //return Vector3(_mm_sub_ps( _mm_setzero_ps(), mVec128 ) ); - __declspec(align(16)) static const int array[] = {0x80000000, 0x80000000, 0x80000000, 0x80000000}; + VM_ATTRIBUTE_ALIGN16 static const int array[] = {0x80000000, 0x80000000, 0x80000000, 0x80000000}; __m128 NEG_MASK = SSEFloat(*(const vec_float4*)array).vf; return Vector3(_mm_xor_ps(get128(),NEG_MASK)); } @@ -809,7 +809,7 @@ VECTORMATH_FORCE_INLINE Vector4 & Vector4::operator =( const Vector4 &vec ) VECTORMATH_FORCE_INLINE Vector4 & Vector4::setXYZ( const Vector3 &vec ) { - __declspec(align(16)) unsigned int sw[4] = {0, 0, 0, 0xffffffff}; + VM_ATTRIBUTE_ALIGN16 unsigned int sw[4] = {0, 0, 0, 0xffffffff}; mVec128 = vec_sel( vec.get128(), mVec128, sw ); return *this; } @@ -1151,7 +1151,7 @@ VECTORMATH_FORCE_INLINE __m128 Point3::get128( ) const VECTORMATH_FORCE_INLINE void storeXYZ( const Point3 &pnt, __m128 * quad ) { __m128 dstVec = *quad; - __declspec(align(16)) unsigned int sw[4] = {0, 0, 0, 0xffffffff}; // TODO: Centralize + VM_ATTRIBUTE_ALIGN16 unsigned int sw[4] = {0, 0, 0, 0xffffffff}; // TODO: Centralize dstVec = vec_sel(pnt.get128(), dstVec, sw); *quad = dstVec; } @@ -1169,8 +1169,8 @@ VECTORMATH_FORCE_INLINE void storeXYZArray( const Point3 &pnt0, const Point3 &pn { __m128 xxxx = _mm_shuffle_ps( pnt1.get128(), pnt1.get128(), _MM_SHUFFLE(0, 0, 0, 0) ); __m128 zzzz = _mm_shuffle_ps( pnt2.get128(), pnt2.get128(), _MM_SHUFFLE(2, 2, 2, 2) ); - __declspec(align(16)) unsigned int xsw[4] = {0, 0, 0, 0xffffffff}; - __declspec(align(16)) unsigned int zsw[4] = {0xffffffff, 0, 0, 0}; + VM_ATTRIBUTE_ALIGN16 unsigned int xsw[4] = {0, 0, 0, 0xffffffff}; + VM_ATTRIBUTE_ALIGN16 unsigned int zsw[4] = {0xffffffff, 0, 0, 0}; threeQuads[0] = vec_sel( pnt0.get128(), xxxx, xsw ); threeQuads[1] = _mm_shuffle_ps( pnt1.get128(), pnt2.get128(), _MM_SHUFFLE(1, 0, 2, 1) ); threeQuads[2] = vec_sel( _mm_shuffle_ps( pnt3.get128(), pnt3.get128(), _MM_SHUFFLE(2, 1, 0, 3) ), zzzz, zsw ); diff --git a/src/vectormath/sse/vectormath_aos.h b/src/vectormath/sse/vectormath_aos.h index 6fa7fc10d..5b0977020 100644 --- a/src/vectormath/sse/vectormath_aos.h +++ b/src/vectormath/sse/vectormath_aos.h @@ -1328,7 +1328,7 @@ public: // VECTORMATH_FORCE_INLINE Quat( ) { }; - VECTORMATH_FORCE_INLINE Quat::Quat(const Quat& quat); + VECTORMATH_FORCE_INLINE Quat(const Quat& quat); // Construct a quaternion from x, y, z, and w elements //