Fixed Visual C++ vec4 simd specification code path

master
Christophe Riccio ago%!(EXTRA string=12 years)
parent 5f1bb47bf2
commit d01630079c
  1. 1
      glm/detail/type_vec4.hpp
  2. 4
      glm/detail/type_vec4.inl
  3. 22
      test/gtx/gtx_simd_vec4.cpp

@ -93,6 +93,7 @@ namespace detail
# if(GLM_HAS_ANONYMOUS_UNION && defined(GLM_SWIZZLE))
union
{
typename simd<T>::type data;
struct { T r, g, b, a; };
struct { T s, t, p, q; };
struct { T x, y, z, w;};

@ -108,13 +108,13 @@ namespace detail
template <>
template <precision Q>
GLM_FUNC_QUALIFIER tvec4<float, lowp>::tvec4(tvec4<float, Q> const & v) :
data(_mm_set_ps(w, z, y, x))
data(_mm_set_ps(v.w, v.z, v.y, v.x))
{}
template <>
template <precision Q>
GLM_FUNC_QUALIFIER tvec4<float, mediump>::tvec4(tvec4<float, Q> const & v) :
data(_mm_set_ps(w, z, y, x))
data(_mm_set_ps(v.w, v.z, v.y, v.x))
{}
#endif

@ -13,30 +13,8 @@
#if(GLM_ARCH != GLM_ARCH_PURE)
struct value
{
value(float x, float y, float z, float w) :
x(x), y(y), z(z), w(w)
{}
union
{
__m128 data;
struct
{
union { float x, r, s; };
union { float y, g, t; };
union { float z, b, p; };
union { float w, a, q; };
};
};
};
int main()
{
value Value(1.0, 0.5, 0.0, 0.7);
glm::simdVec4 A1(0.0f, 0.1f, 0.2f, 0.3f);
glm::simdVec4 B1(0.4f, 0.5f, 0.6f, 0.7f);
glm::simdVec4 C1 = A1 + B1;

Loading…
Cancel
Save