@@ -37,13 +37,13 @@ namespace glm{
namespace detail
{
template <typename genFIType, bool /*signed*/>
- struct Abs_
+ struct compute_abs
{};
template <typename genFIType>
- struct Abs_<genFIType, true>
+ struct compute_abs<genFIType, true>
- GLM_FUNC_QUALIFIER static genFIType get(genFIType const & x)
+ GLM_FUNC_QUALIFIER static genFIType call(genFIType const & x)
GLM_STATIC_ASSERT(
std::numeric_limits<genFIType>::is_iec559 || std::numeric_limits<genFIType>::is_signed,
@@ -54,9 +54,9 @@ namespace detail
};
- struct Abs_<genFIType, false>
+ struct compute_abs<genFIType, false>
!std::numeric_limits<genFIType>::is_signed && std::numeric_limits<genFIType>::is_integer,
@@ -73,7 +73,7 @@ namespace detail
genFIType const & x
)
- return detail::Abs_<genFIType, std::numeric_limits<genFIType>::is_signed>::get(x);
+ return detail::compute_abs<genFIType, std::numeric_limits<genFIType>::is_signed>::call(x);
}
VECTORIZE_VEC(abs)
@@ -391,19 +391,19 @@ int test_round()
Error += G == 2.0f ? 0 : 1;
#if GLM_LANG >= GLM_LANG_CXX11
- float A1 = std::round(0.0f);
+ float A1 = glm::round(0.0f);
Error += A1 == A ? 0 : 1;
- float B1 = std::round(0.5f);
+ float B1 = glm::round(0.5f);
Error += B1 == B ? 0 : 1;
- float C1 = std::round(1.0f);
+ float C1 = glm::round(1.0f);
Error += C1 == C ? 0 : 1;
- float D1 = std::round(0.1f);
+ float D1 = glm::round(0.1f);
Error += D1 == D ? 0 : 1;
- float E1 = std::round(0.9f);
+ float E1 = glm::round(0.9f);
Error += E1 == E ? 0 : 1;
- float F1 = std::round(1.5f);
+ float F1 = glm::round(1.5f);
Error += F == F ? 0 : 1;
- float G1 = std::round(1.9f);
+ float G1 = glm::round(1.9f);
Error += G1 == G ? 0 : 1;
#endif // GLM_LANG >= GLM_CXX0X
@@ -135,6 +135,8 @@ int test_ctr()
glm::vec4(8, 9, 10, 11),
glm::vec4(12, 13, 14, 15));
+ assert(sizeof(m0) == 4 * 4 * 4);
+
glm::mat4 m1{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15};
glm::mat4 m2{
@@ -362,12 +362,28 @@ int test_vec4_perf_SoA(std::size_t Size)
return Error;
+/*
+struct simd_vec4
+{
+ union
+ {
+ __m128 data;
+ union { float x, r, s; };
+ union { float y, g, t; };
+ union { float z, b, p; };
+ union { float w, a, q; };
+ };
+};
+*/
int main()
//__m128 DataA = swizzle<X, Y, Z, W>(glm::vec4(1.0f, 2.0f, 3.0f, 4.0f));
//__m128 DataB = swizzle<W, Z, Y, X>(glm::vec4(1.0f, 2.0f, 3.0f, 4.0f));
int Error(0);
+ glm::vec4 v(1.0, 0.5, 0.0, 1.0);
std::size_t const Size(1000000);