From 2336264f4eecea8a029b14e54b275e77318c3782 Mon Sep 17 00:00:00 2001 From: Christophe Riccio Date: Sat, 20 Dec 2014 17:16:52 +0100 Subject: [PATCH] Added ARM instruction set detection --- glm/detail/setup.hpp | 19 ++++++++++++------- readme.txt | 1 + test/core/core_setup_message.cpp | 2 ++ 3 files changed, 15 insertions(+), 7 deletions(-) diff --git a/glm/detail/setup.hpp b/glm/detail/setup.hpp index bfd10196..2053cbc7 100644 --- a/glm/detail/setup.hpp +++ b/glm/detail/setup.hpp @@ -632,12 +632,13 @@ // User defines: GLM_FORCE_PURE GLM_FORCE_SSE2 GLM_FORCE_SSE3 GLM_FORCE_AVX GLM_FORCE_AVX2 #define GLM_ARCH_PURE 0x0000 -#define GLM_ARCH_X86 0x0001 -#define GLM_ARCH_SSE2 0x0002 -#define GLM_ARCH_SSE3 0x0004 -#define GLM_ARCH_SSE4 0x0008 -#define GLM_ARCH_AVX 0x0010 -#define GLM_ARCH_AVX2 0x0020 +#define GLM_ARCH_ARM 0x0001 +#define GLM_ARCH_X86 0x0002 +#define GLM_ARCH_SSE2 0x0004 +#define GLM_ARCH_SSE3 0x0008 +#define GLM_ARCH_SSE4 0x0010 +#define GLM_ARCH_AVX 0x0020 +#define GLM_ARCH_AVX2 0x0040 #if defined(GLM_FORCE_PURE) # define GLM_ARCH GLM_ARCH_PURE @@ -664,7 +665,9 @@ # define GLM_ARCH GLM_ARCH_PURE # endif #elif (GLM_COMPILER & GLM_COMPILER_VC) || ((GLM_COMPILER & GLM_COMPILER_INTEL) && (GLM_PLATFORM & GLM_PLATFORM_WINDOWS)) -# if defined(__AVX2__) +# if defined(_M_ARM_FP) +# define GLM_ARCH (GLM_ARCH_ARM) +# elif defined(__AVX2__) # define GLM_ARCH (GLM_ARCH_AVX2 | GLM_ARCH_AVX | GLM_ARCH_SSE4 | GLM_ARCH_SSE3 | GLM_ARCH_SSE2) # elif defined(__AVX__) # define GLM_ARCH (GLM_ARCH_AVX | GLM_ARCH_SSE4 | GLM_ARCH_SSE3 | GLM_ARCH_SSE2) @@ -725,6 +728,8 @@ # define GLM_MESSAGE_ARCH_DISPLAYED # if(GLM_ARCH == GLM_ARCH_PURE) # pragma message("GLM: Platform independent code") +# elif(GLM_ARCH & GLM_ARCH_ARM) +# pragma message("GLM: ARM instruction set") # elif(GLM_ARCH & GLM_ARCH_AVX2) # pragma message("GLM: AVX2 instruction set") # elif(GLM_ARCH & GLM_ARCH_AVX) diff --git a/readme.txt b/readme.txt index 679b01aa..7e098164 100644 --- a/readme.txt +++ b/readme.txt @@ -67,6 +67,7 @@ GLM 0.9.6.2: 2015-01-XX -------------------------------------------------------------------------------- Features: - Added display of GLM version with other GLM_MESSAGES +- Added ARM instruction set detection Fixes: - Fixed faceforward build #289 diff --git a/test/core/core_setup_message.cpp b/test/core/core_setup_message.cpp index 07d5d0b5..0955f2e1 100644 --- a/test/core/core_setup_message.cpp +++ b/test/core/core_setup_message.cpp @@ -176,6 +176,8 @@ int test_instruction_set() if(GLM_ARCH == GLM_ARCH_PURE) std::printf("GLM_ARCH_PURE "); + if(GLM_ARCH & GLM_ARCH_ARM) + std::printf("GLM_ARCH_ARM "); if(GLM_ARCH & GLM_ARCH_AVX2) std::printf("GLM_ARCH_AVX2 "); if(GLM_ARCH & GLM_ARCH_AVX)