#include /* #if GLM_CONFIG_SIMD == GLM_ENABLE #define GLM_ENABLE_EXPERIMENTAL #include #include #include #include #include namespace glm { enum genTypeEnum { QUALIFIER_HIGHP, QUALIFIER_MEDIUMP, QUALIFIER_LOWP }; template struct genTypeTrait {}; template struct genTypeTrait > { static const genTypeEnum GENTYPE = QUALIFIER_HIGHP; }; template struct genTypeTrait > { static const genTypeEnum GENTYPE = QUALIFIER_MEDIUMP; }; template struct genTypeTrait > { static const genTypeEnum GENTYPE = QUALIFIER_LOWP; }; template struct load_gentype { }; # if GLM_ARCH & GLM_ARCH_SSE_BIT template struct load_gentype<4, float, Q, true> { GLM_FUNC_QUALIFIER GLM_CONSTEXPR static vec<4, float, Q> load(float const* Mem) { vec<4, float, Q> Result; Result.data = _mm_loadu_ps(Mem); return Result; } }; # endif//GLM_ARCH & GLM_ARCH_SSE_BIT template GLM_FUNC_QUALIFIER GLM_CONSTEXPR genType example_identity() { return detail::init_gentype::GENTYPE>::identity(); } template genType load(valType const* Mem) { } aligned_vec4 loadu(float const* Mem) { aligned_vec4 Result; # if GLM_ARCH & GLM_ARCH_SSE_BIT Result.data = _mm_loadu_ps(Mem); # else Result[0] = *(Mem + 0); Result[1] = *(Mem + 1); Result[2] = *(Mem + 2); Result[3] = *(Mem + 3); # endif//GLM_ARCH & GLM_ARCH_SSE_BIT return Result; } aligned_vec4 loada(float const* Mem) { aligned_vec4 Result; # if GLM_ARCH & GLM_ARCH_SSE_BIT Result.data = _mm_load_ps(Mem); # else Result[0] = *(Mem + 0); Result[1] = *(Mem + 1); Result[2] = *(Mem + 2); Result[3] = *(Mem + 3); # endif//GLM_ARCH & GLM_ARCH_SSE_BIT return Result; } }//namespace glm int test_vec4_load() { int Error = 0; float Data[] = {1.f, 2.f, 3.f, 4.f}; glm::aligned_vec4 const V = glm::loadu(Data); Error += glm::all(glm::equal(V, glm::aligned_vec4(1.f, 2.f, 3.f, 4.f), glm::epsilon())) ? 0 : 1; return Error; } #endif */ int main() { int Error = 0; /* # if GLM_CONFIG_SIMD == GLM_ENABLE Error += test_vec4_load(); # endif */ return Error; }