Use MS VC++'s _BitScanReverse to calculate MSB (patch #9636).

* include/freetype/internal/ftcalc.h (FT_MSB) [_MSC_VER]: Implement
it.
This commit is contained in:
Arkady Shapkin 2018-05-12 06:16:46 +02:00 committed by Werner Lemberg
parent fb742477b2
commit 84eebf4802
2 changed files with 32 additions and 1 deletions

View File

@ -1,3 +1,10 @@
2018-05-12 Arkady Shapkin <arkady.shapkin@gmail.com>
Use MS VC++'s _BitScanReverse to calculate MSB (patch #9636).
* include/freetype/internal/ftcalc.h (FT_MSB) [_MSC_VER]: Implement
it.
2018-05-10 Alan Coopersmith <alan.coopersmith@oracle.com>
Fix DLL compilation on Solaris.

View File

@ -341,6 +341,7 @@ FT_BEGIN_HEADER
*/
#ifndef FT_CONFIG_OPTION_NO_ASSEMBLER
#if defined( __GNUC__ ) && \
( __GNUC__ > 3 || ( __GNUC__ == 3 && __GNUC_MINOR__ >= 4 ) )
@ -354,7 +355,30 @@ FT_BEGIN_HEADER
#endif
#endif /* __GNUC__ */
#elif defined( _MSC_VER )
#if FT_SIZEOF_INT == 4
#include <intrin.h>
static inline FT_Int32
FT_MSB_i386( FT_UInt32 x )
{
unsigned long where;
_BitScanReverse( &where, x );
return (FT_Int32)where;
}
#define FT_MSB( x ) ( FT_MSB_i386( x ) )
#endif
#endif
#endif /* !FT_CONFIG_OPTION_NO_ASSEMBLER */
#ifndef FT_MSB