diff --git a/glm/detail/setup.hpp b/glm/detail/setup.hpp index 3ef86dfa..43083743 100644 --- a/glm/detail/setup.hpp +++ b/glm/detail/setup.hpp @@ -737,11 +737,17 @@ # define GLM_RELAXED_CONSTEXPR const #endif +#if GLM_ARCH == GLM_ARCH_PURE +# define GLM_CONSTEXPR_SIMD GLM_CONSTEXPR +#else +# define GLM_CONSTEXPR_SIMD +#endif + // GCC 4.6 has a bug causing a compiler crash #if GLM_COMPILER & GLM_COMPILER_GCC -# define GLM_CONSTEXPR_GCC +# define GLM_CONSTEXPR_GCC #else -# define GLM_CONSTEXPR_GCC GLM_CONSTEXPR +# define GLM_CONSTEXPR_GCC GLM_CONSTEXPR #endif #ifdef GLM_FORCE_EXPLICIT_CTOR diff --git a/glm/detail/type_vec4.hpp b/glm/detail/type_vec4.hpp index 93ba6645..d54c45c4 100644 --- a/glm/detail/type_vec4.hpp +++ b/glm/detail/type_vec4.hpp @@ -158,8 +158,8 @@ namespace detail // -- Explicit basic constructors -- GLM_FUNC_DECL GLM_CONSTEXPR_CTOR explicit tvec4(ctor); - GLM_FUNC_DECL GLM_CONSTEXPR_GCC explicit tvec4(T scalar); - GLM_FUNC_DECL GLM_CONSTEXPR tvec4(T a, T b, T c, T d); + GLM_FUNC_DECL GLM_CONSTEXPR_SIMD explicit tvec4(T scalar); + GLM_FUNC_DECL GLM_CONSTEXPR_SIMD tvec4(T a, T b, T c, T d); // -- Conversion scalar constructors -- diff --git a/glm/detail/type_vec4.inl b/glm/detail/type_vec4.inl index 4eac0b16..20f2b43c 100644 --- a/glm/detail/type_vec4.inl +++ b/glm/detail/type_vec4.inl @@ -63,12 +63,12 @@ namespace glm {} template - GLM_FUNC_QUALIFIER GLM_CONSTEXPR_GCC tvec4::tvec4(T scalar) + GLM_FUNC_QUALIFIER GLM_CONSTEXPR_SIMD tvec4::tvec4(T scalar) : x(scalar), y(scalar), z(scalar), w(scalar) {} template - GLM_FUNC_QUALIFIER GLM_CONSTEXPR tvec4::tvec4(T a, T b, T c, T d) + GLM_FUNC_QUALIFIER GLM_CONSTEXPR_SIMD tvec4::tvec4(T a, T b, T c, T d) : x(a), y(b), z(c), w(d) {} diff --git a/glm/detail/type_vec4_simd.inl b/glm/detail/type_vec4_simd.inl index 6ddc21a6..099c35ea 100644 --- a/glm/detail/type_vec4_simd.inl +++ b/glm/detail/type_vec4_simd.inl @@ -36,7 +36,7 @@ namespace glm # if !GLM_HAS_DEFAULTED_FUNCTIONS template <> - GLM_FUNC_QUALIFIER GLM_CONSTEXPR tvec4::tvec4() + GLM_FUNC_QUALIFIER GLM_CONSTEXPR_CTOR tvec4::tvec4() # ifndef GLM_FORCE_NO_CTOR_INIT : data(_mm_setzero_ps()) # endif @@ -44,12 +44,12 @@ namespace glm # endif//!GLM_HAS_DEFAULTED_FUNCTIONS template <> - GLM_FUNC_QUALIFIER GLM_CONSTEXPR_GCC tvec4::tvec4(float s) : + GLM_FUNC_QUALIFIER GLM_CONSTEXPR_SIMD tvec4::tvec4(float s) : data(_mm_set1_ps(s)) {} template <> - GLM_FUNC_QUALIFIER GLM_CONSTEXPR tvec4::tvec4(float a, float b, float c, float d) : + GLM_FUNC_QUALIFIER GLM_CONSTEXPR_SIMD tvec4::tvec4(float a, float b, float c, float d) : data(_mm_set_ps(d, c, b, a)) {}