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 15/03/2012 - GLM 0.9.3.2 released 10/03/2012 - GLM on GitHub