GLM requires anynimous struct for SIMD optimizations and swizzle support #524

master
Christophe Riccio ago%!(EXTRA string=9 years)
parent 848d68fe96
commit 2a3d241d78
  1. 2
      glm/detail/type_vec1.hpp
  2. 2
      glm/detail/type_vec2.hpp
  3. 2
      glm/detail/type_vec3.hpp
  4. 2
      glm/detail/type_vec4.hpp
  5. 19
      glm/gtc/quaternion.hpp

@ -27,7 +27,7 @@ namespace glm
// -- Data -- // -- Data --
# if GLM_HAS_UNRESTRICTED_UNIONS # if GLM_HAS_UNRESTRICTED_UNIONS && (defined(GLM_SWIZZLE) || (GLM_ARCH & (GLM_ARCH_SSE2_BIT | GLM_ARCH_NEON_BIT)))
# if GLM_COMPILER & GLM_COMPILER_GCC # if GLM_COMPILER & GLM_COMPILER_GCC
# pragma GCC diagnostic push # pragma GCC diagnostic push
# pragma GCC diagnostic ignored "-Wpedantic" # pragma GCC diagnostic ignored "-Wpedantic"

@ -26,7 +26,7 @@ namespace glm
// -- Data -- // -- Data --
# if GLM_HAS_UNRESTRICTED_UNIONS # if GLM_HAS_UNRESTRICTED_UNIONS && (defined(GLM_SWIZZLE) || (GLM_ARCH & (GLM_ARCH_SSE2_BIT | GLM_ARCH_NEON_BIT)))
# if GLM_COMPILER & GLM_COMPILER_GCC # if GLM_COMPILER & GLM_COMPILER_GCC
# pragma GCC diagnostic push # pragma GCC diagnostic push
# pragma GCC diagnostic ignored "-Wpedantic" # pragma GCC diagnostic ignored "-Wpedantic"

@ -26,7 +26,7 @@ namespace glm
// -- Data -- // -- Data --
# if GLM_HAS_UNRESTRICTED_UNIONS # if GLM_HAS_UNRESTRICTED_UNIONS && (defined(GLM_SWIZZLE) || (GLM_ARCH & (GLM_ARCH_SSE2_BIT | GLM_ARCH_NEON_BIT)))
# if GLM_COMPILER & GLM_COMPILER_GCC # if GLM_COMPILER & GLM_COMPILER_GCC
# pragma GCC diagnostic push # pragma GCC diagnostic push
# pragma GCC diagnostic ignored "-Wpedantic" # pragma GCC diagnostic ignored "-Wpedantic"

@ -27,7 +27,7 @@ namespace glm
// -- Data -- // -- Data --
# if GLM_HAS_UNRESTRICTED_UNIONS # if GLM_HAS_UNRESTRICTED_UNIONS && (defined(GLM_SWIZZLE) || (GLM_ARCH & (GLM_ARCH_SSE2_BIT | GLM_ARCH_NEON_BIT)))
# if GLM_COMPILER & GLM_COMPILER_GCC # if GLM_COMPILER & GLM_COMPILER_GCC
# pragma GCC diagnostic push # pragma GCC diagnostic push
# pragma GCC diagnostic ignored "-Wpedantic" # pragma GCC diagnostic ignored "-Wpedantic"

@ -40,12 +40,29 @@ namespace glm
// -- Data -- // -- Data --
# if GLM_HAS_UNRESTRICTED_UNIONS # if GLM_HAS_UNRESTRICTED_UNIONS && (defined(GLM_SWIZZLE) || (GLM_ARCH & (GLM_ARCH_SSE2_BIT | GLM_ARCH_NEON_BIT)))
# if GLM_COMPILER & GLM_COMPILER_GCC
# pragma GCC diagnostic push
# pragma GCC diagnostic ignored "-Wpedantic"
# endif
# if GLM_COMPILER & GLM_COMPILER_CLANG
# pragma clang diagnostic push
# pragma clang diagnostic ignored "-Wgnu-anonymous-struct"
# pragma clang diagnostic ignored "-Wnested-anon-types"
# endif
union union
{ {
struct { T x, y, z, w;}; struct { T x, y, z, w;};
typename detail::storage<T, sizeof(T) * 4, detail::is_aligned<P>::value>::type data; typename detail::storage<T, sizeof(T) * 4, detail::is_aligned<P>::value>::type data;
}; };
# if GLM_COMPILER & GLM_COMPILER_CLANG
# pragma clang diagnostic pop
# endif
# if GLM_COMPILER & GLM_COMPILER_GCC
# pragma GCC diagnostic pop
# endif
# else # else
T x, y, z, w; T x, y, z, w;
# endif # endif

Loading…
Cancel
Save