diff options
author | Alexei Podtelezhnikov <apodtele@gmail.com> | 2021-11-09 22:47:26 -0500 |
---|---|---|
committer | Alexei Podtelezhnikov <apodtele@gmail.com> | 2021-11-09 22:47:26 -0500 |
commit | 188c7d6670fc69d01495ba791bd3d5c7d10c6824 (patch) | |
tree | 51a55d770ee9a168391c566ccf2adbdfd25166e2 /include | |
parent | 05089e8a07dd18544032f7c0bb7179e7315ecbab (diff) | |
download | freetype2-188c7d6670fc69d01495ba791bd3d5c7d10c6824.tar.gz |
Additional `FT_MSB` macro definitions.
Better macros for Windoes CE and ARM in general, based on !109
from metarutaiga.
* include/freetype/internal/ftcalc.h [_MSC_VER] (FT_MSB): Updated.
Diffstat (limited to 'include')
-rw-r--r-- | include/freetype/internal/ftcalc.h | 20 |
1 files changed, 17 insertions, 3 deletions
diff --git a/include/freetype/internal/ftcalc.h b/include/freetype/internal/ftcalc.h index a0f6890f8..b28d4bfdb 100644 --- a/include/freetype/internal/ftcalc.h +++ b/include/freetype/internal/ftcalc.h @@ -372,9 +372,23 @@ FT_BEGIN_HEADER #endif -#elif defined( _MSC_VER ) && ( _MSC_VER >= 1400 ) +#elif defined( _MSC_VER ) && _MSC_VER >= 1400 -#if FT_SIZEOF_INT == 4 +#if defined( _WIN32_WCE ) + +#include <cmnintrin.h> +#pragma intrinsic( _CountLeadingZeros ) + +#define FT_MSB( x ) ( 31 - _CountLeadingZeros( x ) ) + +#elif defined( _M_ARM64 ) || defined( _M_ARM ) + +#include <intrin.h> +#pragma intrinsic( _CountLeadingZeros ) + +#define FT_MSB( x ) ( 31 - _CountLeadingZeros( x ) ) + +#elif defined( _M_IX86 ) || defined( _M_AMD64 ) || defined( _M_IA64 ) #include <intrin.h> #pragma intrinsic( _BitScanReverse ) @@ -390,7 +404,7 @@ FT_BEGIN_HEADER return (FT_Int32)where; } -#define FT_MSB( x ) ( FT_MSB_i386( x ) ) +#define FT_MSB( x ) FT_MSB_i386( x ) #endif |