diff --git a/glm/detail/setup.hpp b/glm/detail/setup.hpp index f3c8609f..3f65eb44 100644 --- a/glm/detail/setup.hpp +++ b/glm/detail/setup.hpp @@ -202,7 +202,7 @@ # define GLM_COMPILER GLM_COMPILER_INTEL13 # elif __INTEL_COMPILER == 1400 # define GLM_COMPILER GLM_COMPILER_INTEL14 -# elif __INTEL_COMPILER >= 1500 +# elif __INTEL_COMPILER == 1500 # define GLM_COMPILER GLM_COMPILER_INTEL15 # elif __INTEL_COMPILER >= 1600 # define GLM_COMPILER GLM_COMPILER_INTEL16 @@ -313,7 +313,11 @@ # define GLM_COMPILER (GLM_COMPILER_GCC52) # elif (__GNUC__ == 5) && (__GNUC_MINOR__ >= 3) # define GLM_COMPILER (GLM_COMPILER_GCC53) +<<<<<<< HEAD # elif (__GNUC__ == 6) && (__GNUC_MINOR__ >= 0) +======= +# elif (__GNUC__ >= 6) +>>>>>>> 0.9.7 # define GLM_COMPILER (GLM_COMPILER_GCC60) # else # define GLM_COMPILER (GLM_COMPILER_GCC) @@ -374,7 +378,7 @@ /////////////////////////////////////////////////////////////////////////////////// // Platform -// User defines: GLM_FORCE_PURE GLM_FORCE_SSE2 GLM_FORCE_SSE3 GLM_FORCE_AVX GLM_FORCE_AVX2 +// User defines: GLM_FORCE_PURE GLM_FORCE_SSE2 GLM_FORCE_SSE3 GLM_FORCE_AVX GLM_FORCE_AVX2 GLM_FORCE_AVX2 #define GLM_ARCH_PURE 0x0000 #define GLM_ARCH_ARM 0x0001 @@ -384,9 +388,12 @@ #define GLM_ARCH_SSE4 0x0010 #define GLM_ARCH_AVX 0x0020 #define GLM_ARCH_AVX2 0x0040 +#define GLM_ARCH_AVX512 0x0080 // Skylake set #if defined(GLM_FORCE_PURE) # define GLM_ARCH GLM_ARCH_PURE +#elif defined(GLM_FORCE_AVX512) +# define GLM_ARCH (GLM_ARCH_AVX512 | GLM_ARCH_AVX2 | GLM_ARCH_AVX | GLM_ARCH_SSE4 | GLM_ARCH_SSE3 | GLM_ARCH_SSE2) #elif defined(GLM_FORCE_AVX2) # define GLM_ARCH (GLM_ARCH_AVX2 | GLM_ARCH_AVX | GLM_ARCH_SSE4 | GLM_ARCH_SSE3 | GLM_ARCH_SSE2) #elif defined(GLM_FORCE_AVX) @@ -398,7 +405,10 @@ #elif defined(GLM_FORCE_SSE2) # define GLM_ARCH (GLM_ARCH_SSE2) #elif (GLM_COMPILER & (GLM_COMPILER_APPLE_CLANG | GLM_COMPILER_LLVM | GLM_COMPILER_GCC)) || ((GLM_COMPILER & GLM_COMPILER_INTEL) && (GLM_PLATFORM & GLM_PLATFORM_LINUX)) -# if defined(__AVX2__) +// This is Skylake set of instruction set +# if defined(__AVX512BW__) && defined(__AVX512F__) && defined(__AVX512CD__) && defined(__AVX512VL__) && defined(__AVX512DQ__) +# define GLM_ARCH (GLM_ARCH_AVX512 | GLM_ARCH_AVX2 | GLM_ARCH_AVX | GLM_ARCH_SSE3 | GLM_ARCH_SSE2) +# elif defined(__AVX2__) # define GLM_ARCH (GLM_ARCH_AVX2 | GLM_ARCH_AVX | GLM_ARCH_SSE3 | GLM_ARCH_SSE2) # elif defined(__AVX__) # define GLM_ARCH (GLM_ARCH_AVX | GLM_ARCH_SSE3 | GLM_ARCH_SSE2) diff --git a/readme.md b/readme.md index a6fedb71..b341a679 100644 --- a/readme.md +++ b/readme.md @@ -70,8 +70,12 @@ glm::mat4 camera(float Translate, glm::vec2 const & Rotate) - Fixed intersectRayTriangle to not do any unintentional backface culling #### [GLM 0.9.7.3](https://github.com/g-truc/glm/tree/0.9.7) - 2016-XX-XX +##### Improvements: +- Added AVX512 detection + ##### Fixes: - Fixed CMake policy warning +- Fixed GCC 6.0 detection #### [GLM 0.9.7.2](https://github.com/g-truc/glm/releases/tag/0.9.7.2) - 2016-01-03 ##### Fixes: