From d864585dc9af0c8754f3714cf92f2583ba7aaeae Mon Sep 17 00:00:00 2001 From: Guillaume Chatelet Date: Wed, 16 Jan 2019 14:02:24 +0100 Subject: [PATCH 1/2] Update macros to detect mips64 and differentiate between x86 32/64. --- include/cpu_features_macros.h | 30 ++++++++++++++++++++++-------- 1 file changed, 22 insertions(+), 8 deletions(-) diff --git a/include/cpu_features_macros.h b/include/cpu_features_macros.h index f8220e1..6dad410 100644 --- a/include/cpu_features_macros.h +++ b/include/cpu_features_macros.h @@ -19,9 +19,19 @@ // Architectures //////////////////////////////////////////////////////////////////////////////// -#if ((defined(_M_IX86) || defined(_M_X64) || defined(__i386__) || \ - defined(__x86_64__)) && \ - !defined(__pnacl__) && !defined(__CLR_VER)) +#if defined(__pnacl__) || defined(__CLR_VER) +#define CPU_FEATURES_ARCH_VM +#endif + +#if (defined(_M_IX86) || defined(__i386__)) && !defined(CPU_FEATURES_ARCH_VM) +#define CPU_FEATURES_ARCH_X86_32 +#endif + +#if (defined(_M_X64) || defined(__x86_64__)) && !defined(CPU_FEATURES_ARCH_VM) +#define CPU_FEATURES_ARCH_X86_64 +#endif + +#if defined(CPU_FEATURES_ARCH_X86_32) || defined(CPU_FEATURES_ARCH_X86_64) #define CPU_FEATURES_ARCH_X86 #endif @@ -37,7 +47,11 @@ #define CPU_FEATURES_ARCH_ANY_ARM #endif -#if defined(__mips__) +#if defined(__mips64) +#define CPU_FEATURES_ARCH_MIPS64 +#endif + +#if defined(__mips__) && !defined(__mips64) // mips64 also declares __mips__ #define CPU_FEATURES_ARCH_MIPS #endif @@ -83,10 +97,10 @@ #if defined(__cplusplus) #define CPU_FEATURES_START_CPP_NAMESPACE \ - namespace cpu_features { \ + namespace cpu_features { \ extern "C" { #define CPU_FEATURES_END_CPP_NAMESPACE \ - } \ + } \ } #else #define CPU_FEATURES_START_CPP_NAMESPACE @@ -97,8 +111,8 @@ // Compiler flags //////////////////////////////////////////////////////////////////////////////// -// Use the following to check if a feature is known to be available at compile -// time. See README.md for an example. +// Use the following to check if a feature is known to be available at +// compile time. See README.md for an example. #if defined(CPU_FEATURES_ARCH_X86) #define CPU_FEATURES_COMPILED_X86_AES defined(__AES__) #define CPU_FEATURES_COMPILED_X86_F16C defined(__F16C__) From fc7efb4c1414c5386a94fb597ac709c2176b8416 Mon Sep 17 00:00:00 2001 From: Guillaume Chatelet Date: Wed, 16 Jan 2019 14:26:18 +0100 Subject: [PATCH 2/2] Fix Mips32 and add an alias for Mips32/64. --- include/cpu_features_macros.h | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/include/cpu_features_macros.h b/include/cpu_features_macros.h index 6dad410..2227160 100644 --- a/include/cpu_features_macros.h +++ b/include/cpu_features_macros.h @@ -52,6 +52,10 @@ #endif #if defined(__mips__) && !defined(__mips64) // mips64 also declares __mips__ +#define CPU_FEATURES_ARCH_MIPS32 +#endif + +#if defined(CPU_FEATURES_ARCH_MIPS32) || defined(CPU_FEATURES_ARCH_MIPS64) #define CPU_FEATURES_ARCH_MIPS #endif