mirror of
https://github.com/g-truc/glm.git
synced 2024-11-26 18:24:35 +00:00
Merge branch '0.9.3' of github.com:Groovounet/glm into 0.9.3
This commit is contained in:
commit
a5e450cc01
@ -48,12 +48,16 @@ GLM_FUNC_QUALIFIER __m128 sse_dst_ps(__m128 p0, __m128 p1)
|
|||||||
//dot
|
//dot
|
||||||
GLM_FUNC_QUALIFIER __m128 sse_dot_ps(__m128 v1, __m128 v2)
|
GLM_FUNC_QUALIFIER __m128 sse_dot_ps(__m128 v1, __m128 v2)
|
||||||
{
|
{
|
||||||
__m128 mul0 = _mm_mul_ps(v1, v2);
|
# if((GLM_ARCH & GLM_ARCH_SSE4) == GLM_ARCH_SSE4)
|
||||||
__m128 swp0 = _mm_shuffle_ps(mul0, mul0, _MM_SHUFFLE(2, 3, 0, 1));
|
return _mm_dp_ps(v1, v2, 0xff);
|
||||||
__m128 add0 = _mm_add_ps(mul0, swp0);
|
# else
|
||||||
__m128 swp1 = _mm_shuffle_ps(add0, add0, _MM_SHUFFLE(0, 1, 2, 3));
|
__m128 mul0 = _mm_mul_ps(v1, v2);
|
||||||
__m128 add1 = _mm_add_ps(add0, swp1);
|
__m128 swp0 = _mm_shuffle_ps(mul0, mul0, _MM_SHUFFLE(2, 3, 0, 1));
|
||||||
return add1;
|
__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
|
// SSE1
|
||||||
|
@ -36,7 +36,7 @@
|
|||||||
#define GLM_VERSION_MAJOR 0
|
#define GLM_VERSION_MAJOR 0
|
||||||
#define GLM_VERSION_MINOR 9
|
#define GLM_VERSION_MINOR 9
|
||||||
#define GLM_VERSION_PATCH 3
|
#define GLM_VERSION_PATCH 3
|
||||||
#define GLM_VERSION_REVISION 1
|
#define GLM_VERSION_REVISION 4
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
// Platform
|
// Platform
|
||||||
@ -469,15 +469,21 @@
|
|||||||
|
|
||||||
// User defines: GLM_FORCE_PURE GLM_FORCE_SSE2 GLM_FORCE_AVX
|
// User defines: GLM_FORCE_PURE GLM_FORCE_SSE2 GLM_FORCE_AVX
|
||||||
|
|
||||||
#define GLM_ARCH_PURE 0x0000 //(0x0000)
|
#define GLM_ARCH_PURE 0x0000
|
||||||
#define GLM_ARCH_SSE2 0x0001 //(0x0001)
|
#define GLM_ARCH_SSE2 0x0001
|
||||||
#define GLM_ARCH_SSE3 0x0003 //(0x0002 | GLM_ARCH_SSE2)
|
#define GLM_ARCH_SSE3 0x0002 | GLM_ARCH_SSE2
|
||||||
#define GLM_ARCH_AVX 0x0007 //(0x0004 | GLM_ARCH_SSE3 | 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))
|
#if(defined(GLM_FORCE_PURE))
|
||||||
# define GLM_ARCH GLM_ARCH_PURE
|
# define GLM_ARCH GLM_ARCH_PURE
|
||||||
|
#elif(defined(GLM_FORCE_AVX2))
|
||||||
|
# define GLM_ARCH GLM_ARCH_AVX2
|
||||||
#elif(defined(GLM_FORCE_AVX))
|
#elif(defined(GLM_FORCE_AVX))
|
||||||
# define GLM_ARCH GLM_ARCH_AVX
|
# define GLM_ARCH GLM_ARCH_AVX
|
||||||
|
#elif(defined(GLM_FORCE_SSE4))
|
||||||
|
# define GLM_ARCH GLM_ARCH_SSE4
|
||||||
#elif(defined(GLM_FORCE_SSE3))
|
#elif(defined(GLM_FORCE_SSE3))
|
||||||
# define GLM_ARCH GLM_ARCH_SSE3
|
# define GLM_ARCH GLM_ARCH_SSE3
|
||||||
#elif(defined(GLM_FORCE_SSE2))
|
#elif(defined(GLM_FORCE_SSE2))
|
||||||
@ -498,19 +504,13 @@
|
|||||||
# else
|
# else
|
||||||
# define GLM_ARCH GLM_ARCH_PURE
|
# define GLM_ARCH GLM_ARCH_PURE
|
||||||
# endif
|
# endif
|
||||||
#elif(GLM_COMPILER & GLM_COMPILER_LLVM_GCC)
|
#elif(((GLM_COMPILER & GLM_COMPILER_GCC) && (defined(__i386__) || defined(__x86_64__))) || (GLM_COMPILER & GLM_COMPILER_LLVM_GCC))
|
||||||
# if(defined(__AVX__))
|
# if(defined(__AVX2__))
|
||||||
# define GLM_ARCH GLM_ARCH_AVX
|
# define GLM_ARCH GLM_ARCH_AVX2
|
||||||
# elif(defined(__SSE3__))
|
# elif(defined(__AVX__))
|
||||||
# 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__))
|
|
||||||
# define GLM_ARCH GLM_ARCH_AVX
|
# define GLM_ARCH GLM_ARCH_AVX
|
||||||
|
# elif(defined(__SSE4__))
|
||||||
|
# define GLM_ARCH GLM_ARCH_SSE4
|
||||||
# elif(defined(__SSE3__))
|
# elif(defined(__SSE3__))
|
||||||
# define GLM_ARCH GLM_ARCH_SSE3
|
# define GLM_ARCH GLM_ARCH_SSE3
|
||||||
# elif(defined(__SSE2__))
|
# elif(defined(__SSE2__))
|
||||||
@ -523,9 +523,15 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if(GLM_ARCH != GLM_ARCH_PURE)
|
#if(GLM_ARCH != GLM_ARCH_PURE)
|
||||||
|
#if((GLM_ARCH & GLM_ARCH_AVX2) == GLM_ARCH_AVX2)
|
||||||
|
# include <immintrin.h>
|
||||||
|
#endif//GLM_ARCH
|
||||||
#if((GLM_ARCH & GLM_ARCH_AVX) == GLM_ARCH_AVX)
|
#if((GLM_ARCH & GLM_ARCH_AVX) == GLM_ARCH_AVX)
|
||||||
# include <immintrin.h>
|
# include <immintrin.h>
|
||||||
#endif//GLM_ARCH
|
#endif//GLM_ARCH
|
||||||
|
#if((GLM_ARCH & GLM_ARCH_SSE4) == GLM_ARCH_SSE4)
|
||||||
|
# include <smmintrin.h>
|
||||||
|
#endif//GLM_ARCH
|
||||||
#if((GLM_ARCH & GLM_ARCH_SSE3) == GLM_ARCH_SSE3)
|
#if((GLM_ARCH & GLM_ARCH_SSE3) == GLM_ARCH_SSE3)
|
||||||
# include <pmmintrin.h>
|
# include <pmmintrin.h>
|
||||||
#endif//GLM_ARCH
|
#endif//GLM_ARCH
|
||||||
@ -542,8 +548,12 @@
|
|||||||
# pragma message("GLM: SSE2 instruction set")
|
# pragma message("GLM: SSE2 instruction set")
|
||||||
# elif(GLM_ARCH == GLM_ARCH_SSE3)
|
# elif(GLM_ARCH == GLM_ARCH_SSE3)
|
||||||
# pragma message("GLM: SSE3 instruction set")
|
# pragma message("GLM: SSE3 instruction set")
|
||||||
|
# elif(GLM_ARCH == GLM_ARCH_SSE4)
|
||||||
|
# pragma message("GLM: SSE4 instruction set")
|
||||||
# elif(GLM_ARCH == GLM_ARCH_AVX)
|
# elif(GLM_ARCH == GLM_ARCH_AVX)
|
||||||
# pragma message("GLM: AVX instruction set")
|
# pragma message("GLM: AVX instruction set")
|
||||||
|
# elif(GLM_ARCH == GLM_ARCH_AVX2)
|
||||||
|
# pragma message("GLM: AVX2 instruction set")
|
||||||
# endif//GLM_ARCH
|
# endif//GLM_ARCH
|
||||||
#endif//GLM_MESSAGE
|
#endif//GLM_MESSAGE
|
||||||
|
|
||||||
|
@ -36,6 +36,11 @@ GLM is a header only library, there is nothing to build, just include it.
|
|||||||
More informations in GLM manual:
|
More informations in GLM manual:
|
||||||
http://glm.g-truc.net/glm-0.9.3.pdf
|
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
|
GLM 0.9.3.3: 2012-05-10
|
||||||
--------------------------------------------------------------------------------
|
--------------------------------------------------------------------------------
|
||||||
|
Loading…
Reference in New Issue
Block a user