[smooth] Detect SSE2 with MSVC for x86
MSVC does not set `__SSE2__`. Instead one must check whether `_M_IX86_FP` is defined and greater than or equal to 2. * src/smooth/ftgrays.c (FT_SSE2): New macro. Use it where appropriate.
This commit is contained in:
parent
3785393d1a
commit
a842a0984b
|
@ -999,10 +999,17 @@ typedef ptrdiff_t FT_PtrDist;
|
||||||
*
|
*
|
||||||
* For other cases, using binary splits is actually slightly faster.
|
* For other cases, using binary splits is actually slightly faster.
|
||||||
*/
|
*/
|
||||||
#if defined( __SSE2__ ) || \
|
#if defined( __SSE2__ ) || \
|
||||||
defined( __x86_64__ ) || \
|
defined( __x86_64__ ) || \
|
||||||
|
defined( _M_AMD64 ) || \
|
||||||
|
( defined( _M_IX86_FP ) && _M_IX86_FP >= 2 )
|
||||||
|
# define FT_SSE2 1
|
||||||
|
#else
|
||||||
|
# define FT_SSE2 0
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if FT_SSE2 || \
|
||||||
defined( __aarch64__ ) || \
|
defined( __aarch64__ ) || \
|
||||||
defined( _M_AMD64 ) || \
|
|
||||||
defined( _M_ARM64 )
|
defined( _M_ARM64 )
|
||||||
# define BEZIER_USE_DDA 1
|
# define BEZIER_USE_DDA 1
|
||||||
#else
|
#else
|
||||||
|
@ -1022,7 +1029,7 @@ typedef ptrdiff_t FT_PtrDist;
|
||||||
|
|
||||||
#if BEZIER_USE_DDA
|
#if BEZIER_USE_DDA
|
||||||
|
|
||||||
#ifdef __SSE2__
|
#if FT_SSE2
|
||||||
# include <emmintrin.h>
|
# include <emmintrin.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -1135,7 +1142,7 @@ typedef ptrdiff_t FT_PtrDist;
|
||||||
* = (B << (33 - N)) + (A << (32 - 2*N))
|
* = (B << (33 - N)) + (A << (32 - 2*N))
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifdef __SSE2__
|
#if FT_SSE2
|
||||||
/* Experience shows that for small shift values, */
|
/* Experience shows that for small shift values, */
|
||||||
/* SSE2 is actually slower. */
|
/* SSE2 is actually slower. */
|
||||||
if ( shift > 2 )
|
if ( shift > 2 )
|
||||||
|
@ -1192,7 +1199,7 @@ typedef ptrdiff_t FT_PtrDist;
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
#endif /* __SSE2__ */
|
#endif /* FT_SSE2 */
|
||||||
|
|
||||||
rx = LEFT_SHIFT( ax, 33 - 2 * shift );
|
rx = LEFT_SHIFT( ax, 33 - 2 * shift );
|
||||||
ry = LEFT_SHIFT( ay, 33 - 2 * shift );
|
ry = LEFT_SHIFT( ay, 33 - 2 * shift );
|
||||||
|
|
Loading…
Reference in New Issue