diff --git a/indra/llmath/llsimdmath.h b/indra/llmath/llsimdmath.h index 01458521ec..d309b9a69a 100644 --- a/indra/llmath/llsimdmath.h +++ b/indra/llmath/llsimdmath.h @@ -31,7 +31,7 @@ #error "Please include llmath.h before this file." #endif -#if ( ( LL_DARWIN || LL_LINUX ) && !(__SSE2__) ) || ( LL_WINDOWS && ( _M_IX86_FP < 2 ) ) +#if ( ( LL_DARWIN || LL_LINUX ) && !(__SSE2__) ) || ( LL_WINDOWS && ( _M_IX86_FP < 2 && !ND_BUILD64BIT_ARCH ) ) #error SSE2 not enabled. LLVector4a and related class will not compile. #endif diff --git a/indra/llmath/llvector4a.inl b/indra/llmath/llvector4a.inl index 7c52ffef21..31baf0dd34 100644 --- a/indra/llmath/llvector4a.inl +++ b/indra/llmath/llvector4a.inl @@ -27,6 +27,11 @@ //////////////////////////////////// // LOAD/STORE //////////////////////////////////// +#if defined( LL_WINDOWS ) && defined( ND_BUILD64BIT_ARCH ) +#pragma optimize( "", off ) +#pragma warning(push) +#pragma warning(disable:4748) +#endif // Load from 16-byte aligned src array (preferred method of loading) inline void LLVector4a::load4a(const F32* src) @@ -592,3 +597,8 @@ inline LLVector4a::operator LLQuad() const { return mQ; } + +#if defined( LL_WINDOWS ) && defined( ND_BUILD64BIT_ARCH ) +#pragma warning(pop) +#pragma optimize( "", on ) +#endif