diff --git a/include/libhat/Defines.hpp b/include/libhat/Defines.hpp index af57b4c..2eaee0c 100644 --- a/include/libhat/Defines.hpp +++ b/include/libhat/Defines.hpp @@ -1,12 +1,13 @@ #pragma once // Detect CPU Architecture -#if defined(_M_X64) || defined(__amd64__) || defined(_M_IX86) || defined(__i386__) +#if defined(_M_X64) || defined(__amd64__) + #define LIBHAT_X86_64 +#elif defined(_M_IX86) || defined(__i386__) #define LIBHAT_X86 - #if defined(_M_X64) || defined(__amd64__) - #define LIBHAT_X86_64 - #endif -#elif defined(_M_ARM64) || defined(__aarch64__) || defined(_M_ARM) || defined(__arm__) +#elif defined(_M_ARM64) || defined(__aarch64__) + #define LIBHAT_AARCH64 +#elif defined(_M_ARM) || defined(__arm__) #define LIBHAT_ARM #else #error Unsupported Architecture @@ -15,22 +16,24 @@ // Detect Operating System #if defined(_WIN32) #define LIBHAT_WINDOWS -#elif defined(__unix__) || defined(__unix) || defined(__APPLE__) || defined(__MACH__) +#elif defined(linux) || defined(__linux__) || defined(__linux) #define LIBHAT_UNIX + #define LIBHAT_LINUX +#elif defined(__APPLE__) && defined(__MACH__) + #define LIBHAT_UNIX + #define LIBHAT_MAC #else #error Unsupported Operating System #endif // Macros wrapping intrinsics -#ifdef LIBHAT_X86 - #ifdef LIBHAT_X86_64 - #define LIBHAT_TZCNT64(num) _tzcnt_u64(num) - #define LIBHAT_BLSR64(num) _blsr_u64(num) - #else - #include - #define LIBHAT_TZCNT64(num) std::countl_zero(num) - #define LIBHAT_BLSR64(num) num & (num - 1) - #endif +#if defined(LIBHAT_X86_64) + #define LIBHAT_TZCNT64(num) _tzcnt_u64(num) + #define LIBHAT_BLSR64(num) _blsr_u64(num) +#elif defined(LIBHAT_X86) + #include + #define LIBHAT_TZCNT64(num) std::countl_zero(num) + #define LIBHAT_BLSR64(num) num & (num - 1) #endif #ifdef _MSC_VER diff --git a/include/libhat/System.hpp b/include/libhat/System.hpp index f14c4b8..a643cec 100644 --- a/include/libhat/System.hpp +++ b/include/libhat/System.hpp @@ -16,7 +16,7 @@ namespace hat { }; } -#if defined(LIBHAT_X86) +#if defined(LIBHAT_X86) || defined(LIBHAT_X86_64) namespace hat { struct system_info_x86 : hat::system_info { diff --git a/src/Scanner.cpp b/src/Scanner.cpp index c2fc035..7534d2e 100644 --- a/src/Scanner.cpp +++ b/src/Scanner.cpp @@ -60,7 +60,7 @@ namespace hat::detail { } void scan_context::auto_resolve_scanner() { -#if defined(LIBHAT_X86) +#if defined(LIBHAT_X86) || defined(LIBHAT_X86_64) const auto& ext = get_system().extensions; if (ext.bmi) { #if defined(LIBHAT_X86_64) && !defined(LIBHAT_DISABLE_AVX512) diff --git a/src/arch/x86/AVX2.cpp b/src/arch/x86/AVX2.cpp index 7236279..1606e65 100644 --- a/src/arch/x86/AVX2.cpp +++ b/src/arch/x86/AVX2.cpp @@ -1,6 +1,6 @@ #include -#ifdef LIBHAT_X86 +#if defined(LIBHAT_X86) || defined(LIBHAT_X86_64) #include diff --git a/src/arch/x86/SSE.cpp b/src/arch/x86/SSE.cpp index 11d08ec..df387f6 100644 --- a/src/arch/x86/SSE.cpp +++ b/src/arch/x86/SSE.cpp @@ -1,6 +1,6 @@ #include -#if defined(LIBHAT_X86) && !defined(LIBHAT_DISABLE_SSE) +#if (defined(LIBHAT_X86) || defined(LIBHAT_X86_64)) && !defined(LIBHAT_DISABLE_SSE) #include diff --git a/src/arch/x86/System.cpp b/src/arch/x86/System.cpp index 2f74ee7..6720135 100644 --- a/src/arch/x86/System.cpp +++ b/src/arch/x86/System.cpp @@ -1,5 +1,5 @@ #include -#ifdef LIBHAT_X86 +#if defined(LIBHAT_X86) || defined(LIBHAT_X86_64) #include