diff options
Diffstat (limited to 'indra/llmath/llsimdtypes.h')
| -rw-r--r-- | indra/llmath/llsimdtypes.h | 28 |
1 files changed, 7 insertions, 21 deletions
diff --git a/indra/llmath/llsimdtypes.h b/indra/llmath/llsimdtypes.h index 11462170fb..6c4f55b0c0 100644 --- a/indra/llmath/llsimdtypes.h +++ b/indra/llmath/llsimdtypes.h @@ -33,24 +33,10 @@ typedef __m128 LLQuad; - -#if LL_WINDOWS -#pragma warning(push) -#pragma warning( disable : 4800 3 ) // Disable warning about casting int to bool for this class. -#if defined(_MSC_VER) && (_MSC_VER < 1500) -// VC++ 2005 is missing these intrinsics -// __forceinline is MSVC specific and attempts to override compiler inlining judgment. This is so -// even in debug builds this call is a NOP. -__forceinline const __m128 _mm_castsi128_ps( const __m128i a ) { return reinterpret_cast<const __m128&>(a); } -__forceinline const __m128i _mm_castps_si128( const __m128 a ) { return reinterpret_cast<const __m128i&>(a); } -#endif // _MSC_VER - -#endif // LL_WINDOWS - class LLBool32 { public: - inline LLBool32() {} + inline LLBool32() = default; inline LLBool32(int rhs) : m_bool(rhs) {} inline LLBool32(unsigned int rhs) : m_bool(rhs) {} inline LLBool32(bool rhs) { m_bool = static_cast<const int>(rhs); } @@ -60,17 +46,15 @@ public: inline operator bool() const { return static_cast<const bool&>(m_bool); } private: - int m_bool{ 0 }; + int m_bool; }; -#if LL_WINDOWS -#pragma warning(pop) -#endif +static_assert(std::is_trivial<LLBool32>::value, "LLBool32 must be a standard layout type"); class LLSimdScalar { public: - inline LLSimdScalar() {} + inline LLSimdScalar() = default; inline LLSimdScalar(LLQuad q) { mQ = q; @@ -118,7 +102,9 @@ public: } private: - LLQuad mQ{}; + LLQuad mQ; }; +static_assert(std::is_trivial<LLSimdScalar>::value, "LLSimdScalar must be a standard layout type"); + #endif //LL_SIMD_TYPES_H |
