From c4d886a3d65faef5851c96c952a874ce1daf19e4 Mon Sep 17 00:00:00 2001 From: Christophe Riccio Date: Thu, 10 May 2012 00:14:20 +0100 Subject: [PATCH 1/5] Updared readme --- readme.txt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/readme.txt b/readme.txt index 8c6fab5f..4aa2141c 100644 --- a/readme.txt +++ b/readme.txt @@ -45,6 +45,8 @@ GLM 0.9.3.3: 2012-05-10 - Fixed SIMD mat4 test on GCC - Fixed perspectiveFov implementation - Fixed matrixCompMult for none-square matrices +- Fixed namespace issue on stream operators +- Fixed various warnings - Added VC11 support ================================================================================ From febf66715913f18acbb245d1fea550d59a33adc0 Mon Sep 17 00:00:00 2001 From: Christophe Riccio Date: Sat, 12 May 2012 15:42:33 +0100 Subject: [PATCH 2/5] Updated links --- doc/src/data.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/src/data.xml b/doc/src/data.xml index feaf61c6..94812601 100644 --- a/doc/src/data.xml +++ b/doc/src/data.xml @@ -200,7 +200,7 @@ GLM 0.9.3.3 (zip) GLM 0.9.3.3 (7z) - Submit a bug report + Submit a bug report GLM 0.9.3 Manual GLM 0.9.3 API From b88c550a10b4c4943df200c1f9091d4a5063ce2a Mon Sep 17 00:00:00 2001 From: Christophe Riccio Date: Sun, 3 Jun 2012 01:11:35 +0100 Subject: [PATCH 3/5] Updated version for next release --- glm/core/setup.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/glm/core/setup.hpp b/glm/core/setup.hpp index 314a27d2..c952e29e 100644 --- a/glm/core/setup.hpp +++ b/glm/core/setup.hpp @@ -36,7 +36,7 @@ #define GLM_VERSION_MAJOR 0 #define GLM_VERSION_MINOR 9 #define GLM_VERSION_PATCH 3 -#define GLM_VERSION_REVISION 1 +#define GLM_VERSION_REVISION 3 /////////////////////////////////////////////////////////////////////////////////////////////////// // Platform From ba6807b7543ba28e431a6f482ffe70c4f5d60115 Mon Sep 17 00:00:00 2001 From: Christophe Riccio Date: Sun, 3 Jun 2012 02:17:36 +0100 Subject: [PATCH 4/5] Added SSE4 and AVX2 detection, most changes from https://github.com/mackron/glm/commit/d9dc21328fb03e480b2e0b899dccd8c9ffd21129 --- glm/core/intrinsic_geometric.inl | 16 +++++++----- glm/core/setup.hpp | 44 ++++++++++++++++++++------------ readme.txt | 5 ++++ 3 files changed, 42 insertions(+), 23 deletions(-) diff --git a/glm/core/intrinsic_geometric.inl b/glm/core/intrinsic_geometric.inl index aaaeb366..f28d584e 100644 --- a/glm/core/intrinsic_geometric.inl +++ b/glm/core/intrinsic_geometric.inl @@ -48,12 +48,16 @@ GLM_FUNC_QUALIFIER __m128 sse_dst_ps(__m128 p0, __m128 p1) //dot GLM_FUNC_QUALIFIER __m128 sse_dot_ps(__m128 v1, __m128 v2) { - __m128 mul0 = _mm_mul_ps(v1, v2); - __m128 swp0 = _mm_shuffle_ps(mul0, mul0, _MM_SHUFFLE(2, 3, 0, 1)); - __m128 add0 = _mm_add_ps(mul0, swp0); - __m128 swp1 = _mm_shuffle_ps(add0, add0, _MM_SHUFFLE(0, 1, 2, 3)); - __m128 add1 = _mm_add_ps(add0, swp1); - return add1; +# if((GLM_ARCH & GLM_ARCH_SSE4) == GLM_ARCH_SSE4) + return _mm_dp_ps(v1, v2, 0xff); +# else + __m128 mul0 = _mm_mul_ps(v1, v2); + __m128 swp0 = _mm_shuffle_ps(mul0, mul0, _MM_SHUFFLE(2, 3, 0, 1)); + __m128 add0 = _mm_add_ps(mul0, swp0); + __m128 swp1 = _mm_shuffle_ps(add0, add0, _MM_SHUFFLE(0, 1, 2, 3)); + __m128 add1 = _mm_add_ps(add0, swp1); + return add1; +# endif } // SSE1 diff --git a/glm/core/setup.hpp b/glm/core/setup.hpp index c952e29e..c4d439a4 100644 --- a/glm/core/setup.hpp +++ b/glm/core/setup.hpp @@ -36,7 +36,7 @@ #define GLM_VERSION_MAJOR 0 #define GLM_VERSION_MINOR 9 #define GLM_VERSION_PATCH 3 -#define GLM_VERSION_REVISION 3 +#define GLM_VERSION_REVISION 4 /////////////////////////////////////////////////////////////////////////////////////////////////// // Platform @@ -469,15 +469,21 @@ // User defines: GLM_FORCE_PURE GLM_FORCE_SSE2 GLM_FORCE_AVX -#define GLM_ARCH_PURE 0x0000 //(0x0000) -#define GLM_ARCH_SSE2 0x0001 //(0x0001) -#define GLM_ARCH_SSE3 0x0003 //(0x0002 | GLM_ARCH_SSE2) -#define GLM_ARCH_AVX 0x0007 //(0x0004 | GLM_ARCH_SSE3 | GLM_ARCH_SSE2) +#define GLM_ARCH_PURE 0x0000 +#define GLM_ARCH_SSE2 0x0001 +#define GLM_ARCH_SSE3 0x0002 | GLM_ARCH_SSE2 +#define GLM_ARCH_SSE4 0x0004 | GLM_ARCH_SSE3 | GLM_ARCH_SSE2 +#define GLM_ARCH_AVX 0x0008 | GLM_ARCH_SSE4 | GLM_ARCH_SSE3 | GLM_ARCH_SSE2 +#define GLM_ARCH_AVX2 0x0010 | GLM_ARCH_AVX | GLM_ARCH_SSE4 | GLM_ARCH_SSE3 | GLM_ARCH_SSE2 #if(defined(GLM_FORCE_PURE)) # define GLM_ARCH GLM_ARCH_PURE +#elif(defined(GLM_FORCE_AVX2)) +# define GLM_ARCH GLM_ARCH_AVX2 #elif(defined(GLM_FORCE_AVX)) # define GLM_ARCH GLM_ARCH_AVX +#elif(defined(GLM_FORCE_SSE4)) +# define GLM_ARCH GLM_ARCH_SSE4 #elif(defined(GLM_FORCE_SSE3)) # define GLM_ARCH GLM_ARCH_SSE3 #elif(defined(GLM_FORCE_SSE2)) @@ -498,19 +504,13 @@ # else # define GLM_ARCH GLM_ARCH_PURE # endif -#elif(GLM_COMPILER & GLM_COMPILER_LLVM_GCC) -# if(defined(__AVX__)) -# define GLM_ARCH GLM_ARCH_AVX -# elif(defined(__SSE3__)) -# define GLM_ARCH GLM_ARCH_SSE3 -# elif(defined(__SSE2__)) -# define GLM_ARCH GLM_ARCH_SSE2 -# else -# define GLM_ARCH GLM_ARCH_PURE -# endif -#elif((GLM_COMPILER & GLM_COMPILER_GCC) && (defined(__i386__) || defined(__x86_64__))) -# if(defined(__AVX__)) +#elif(((GLM_COMPILER & GLM_COMPILER_GCC) && (defined(__i386__) || defined(__x86_64__))) || (GLM_COMPILER & GLM_COMPILER_LLVM_GCC)) +# if(defined(__AVX2__)) +# define GLM_ARCH GLM_ARCH_AVX2 +# elif(defined(__AVX__)) # define GLM_ARCH GLM_ARCH_AVX +# elif(defined(__SSE4__)) +# define GLM_ARCH GLM_ARCH_SSE4 # elif(defined(__SSE3__)) # define GLM_ARCH GLM_ARCH_SSE3 # elif(defined(__SSE2__)) @@ -523,9 +523,15 @@ #endif #if(GLM_ARCH != GLM_ARCH_PURE) +#if((GLM_ARCH & GLM_ARCH_AVX2) == GLM_ARCH_AVX2) +# include +#endif//GLM_ARCH #if((GLM_ARCH & GLM_ARCH_AVX) == GLM_ARCH_AVX) # include #endif//GLM_ARCH +#if((GLM_ARCH & GLM_ARCH_SSE4) == GLM_ARCH_SSE4) +# include +#endif//GLM_ARCH #if((GLM_ARCH & GLM_ARCH_SSE3) == GLM_ARCH_SSE3) # include #endif//GLM_ARCH @@ -542,8 +548,12 @@ # pragma message("GLM: SSE2 instruction set") # elif(GLM_ARCH == GLM_ARCH_SSE3) # pragma message("GLM: SSE3 instruction set") +# elif(GLM_ARCH == GLM_ARCH_SSE4) +# pragma message("GLM: SSE4 instruction set") # elif(GLM_ARCH == GLM_ARCH_AVX) # pragma message("GLM: AVX instruction set") +# elif(GLM_ARCH == GLM_ARCH_AVX2) +# pragma message("GLM: AVX2 instruction set") # endif//GLM_ARCH #endif//GLM_MESSAGE diff --git a/readme.txt b/readme.txt index 8c6fab5f..41dbf79c 100644 --- a/readme.txt +++ b/readme.txt @@ -36,6 +36,11 @@ GLM is a header only library, there is nothing to build, just include it. More informations in GLM manual: http://glm.g-truc.net/glm-0.9.3.pdf +================================================================================ +GLM 0.9.3.4: 2012-XX-XX +-------------------------------------------------------------------------------- +- Added SSE4 and AVX2 detection. + ================================================================================ GLM 0.9.3.3: 2012-05-10 -------------------------------------------------------------------------------- From 6eeec5c191522f8ece1c01271098f80cf0b1cf6c Mon Sep 17 00:00:00 2001 From: Christophe Riccio Date: Wed, 20 Jun 2012 15:11:30 +0100 Subject: [PATCH 5/5] Updated index --- doc/index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/index.html b/doc/index.html index cd560e58..e2a984e6 100644 --- a/doc/index.html +++ b/doc/index.html @@ -37,7 +37,7 @@


10/05/2012 - GLM 0.9.3.3 released

Nearly two months since the previous release of a GLM revision gave enough time to fix few things reported. Most importantly, this revision should provide a better compatibility with Intel C++ compiler. -

Changelog:
  • Fixed isinf and isnan
  • Improved compatibility with Intel compiler
  • Added CMake test build options: SIMD, C++11, fast math and MS land ext
  • Fixed SIMD mat4 test on GCC
  • Fixed perspectiveFov implementation
  • Fixed matrixCompMult for none-square matrices
  • Fixed namespace issue on stream operators
  • Fixed various warnings
  • Added VC11 support

If you encounter bugs, don't hesitate to report them.

Download: GLM 0.9.3.3 (zip)
Download: GLM 0.9.3.3 (7z)
Link: Submit a bug report
Link: GLM 0.9.3 Manual
Link: GLM 0.9.3 API

15/03/2012 - GLM 0.9.3.2 released

+

Changelog:
  • Fixed isinf and isnan
  • Improved compatibility with Intel compiler
  • Added CMake test build options: SIMD, C++11, fast math and MS land ext
  • Fixed SIMD mat4 test on GCC
  • Fixed perspectiveFov implementation
  • Fixed matrixCompMult for none-square matrices
  • Fixed namespace issue on stream operators
  • Fixed various warnings
  • Added VC11 support

If you encounter bugs, don't hesitate to report them.

Download: GLM 0.9.3.3 (zip)
Download: GLM 0.9.3.3 (7z)
Link: Submit a bug report
Link: GLM 0.9.3 Manual
Link: GLM 0.9.3 API

15/03/2012 - GLM 0.9.3.2 released

Just a regular revision fixing the only three minor issues reported since last release.

Download: GLM 0.9.3.2 (zip)
Download: GLM 0.9.3.2 (7z)
Link: Submit a bug report
Link: GLM 0.9.3 Manual
Link: GLM 0.9.3 API

10/03/2012 - GLM on GitHub

After years of using SourceForge.net, GLM is moving to GitHub,