- Add simd aligned_vec3 (and sse aligned_dvec3 - 2 x xmm)
- Fast packed_vec3 <=> aligned_vec3 and packed_vec4 <=> aligned_vec4 conversion
- Fast aligned_vec3 <=> aligned_vec4 conversion
- Optimized aligned_mat x aligned_mat and aligned_mat x aligned_vec
- Inverse aligned_mat3 simd version (actually slower than ssid on my computer even it has 30% less instruction ?)
It is used as default configuration for Visual Studio 64 bits compilation (needs Language Extension).
code changes:
- add new qualifiers:
unaligned_simd_highp
unaligned_simd_mediump
unaligned_simd_lowp
- add use_simd and replace is_aligned
(code for ARM NEON is added but not tested)
Fixes for compiler errors when building the tests using Clang 15,
including:
* Use explicit cast to silence Wimplicit-int-float-conversion
warning for conversion of spin count in implementation of
glm::slerp.
* Use GLM_FORCE_MESSAGES instead of removed GLM_MESSAGES for
messages in glm/gtx/hash.hpp, avoiding Wundef warning.
* Encode en dash in URL for Gram-Schmit Process wikipedia page and
replace similar en dashes in comments with regular dashes, to
avoid Winvalid-utf8 warnings in glm/gtx/matrix_factorisation.inl.
* Replace degree sign symbol with text "degrees" to avoid
Winvalid-utf8 warnings in test/gtc/gtc_quaternion.cpp.
* When using Clang, build tests with -Wno-float-equal to silence
Wfloat-equal warning in implementation of glm::vec<L,T,Q>::equal.
* For performance tests in test/gtx/gtx_fast_trigonometry.cpp, add
statement explicitly casting result to void, to silence
Wunused-but-set-variable warnings.
* Add newline at end of test/gtx/gtx_hash.cpp to silence
Wnewline-eof warning.
* Rename namespace _1aga to agarose in test/gtx/gtx_pca.cpp to
avoid Wreserved-identifier warning.
Depending on the developer environment, the output of round for o.5 or -0.5 may be different (according to the GLSL spec). So the test was too restrictive.
The previous patch made the incorrect assumption matrices were row-major
instead of column-major (got the two mixed up in my head).
This fixes this problem.
Also, this extends the test files to cover all matrix sizes (not types,
that would be redundant).
This is added as part of the GLM_EXT_matrix_common extension, as this
function is not provided by the core GLSL specification (version 4.20).
The implementation of this glm::abs(mat<>) function mirrors the
glm::abs(vec<>) implementation. It should be functionning the same in
every way as the vec implementation.
Bonus points : AFAICT this allows to vectorize operations on compilers
that support optimization of these patterns, just like the functor1<>
struct in _vectorize.hpp for vectors.