summaryrefslogtreecommitdiff
path: root/indra/llmath/llsimdtypes.h
diff options
context:
space:
mode:
Diffstat (limited to 'indra/llmath/llsimdtypes.h')
-rw-r--r--indra/llmath/llsimdtypes.h28
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