mirror of
https://github.com/libsdl-org/SDL.git
synced 2026-05-31 14:29:14 +08:00
SDL_blit_copy: Don't call potentially FPU using SDL_memcpy in SDL_memcpyMMX
This commit is contained in:
committed by
Anonymous Maarten
parent
37c9329db2
commit
9ada9daf51
@@ -508,16 +508,13 @@ if(USE_INTELCC)
|
|||||||
# warning #39: division by zero
|
# warning #39: division by zero
|
||||||
# warning #239: floating point underflow
|
# warning #239: floating point underflow
|
||||||
# warning #264: floating-point value does not fit in required floating-point type
|
# warning #264: floating-point value does not fit in required floating-point type
|
||||||
# warning #13203: No EMMS instruction before call to function
|
|
||||||
set_property(SOURCE "${SDL3_SOURCE_DIR}/src/libm/e_exp.c" APPEND_STRING PROPERTY COMPILE_FLAGS " -wd239 -wd264")
|
set_property(SOURCE "${SDL3_SOURCE_DIR}/src/libm/e_exp.c" APPEND_STRING PROPERTY COMPILE_FLAGS " -wd239 -wd264")
|
||||||
set_property(SOURCE "${SDL3_SOURCE_DIR}/src/libm/e_log.c" APPEND_STRING PROPERTY COMPILE_FLAGS " -wd39")
|
set_property(SOURCE "${SDL3_SOURCE_DIR}/src/libm/e_log.c" APPEND_STRING PROPERTY COMPILE_FLAGS " -wd39")
|
||||||
set_property(SOURCE "${SDL3_SOURCE_DIR}/src/libm/e_log10.c" APPEND_STRING PROPERTY COMPILE_FLAGS " -wd39")
|
set_property(SOURCE "${SDL3_SOURCE_DIR}/src/libm/e_log10.c" APPEND_STRING PROPERTY COMPILE_FLAGS " -wd39")
|
||||||
set_property(SOURCE "${SDL3_SOURCE_DIR}/src/video/SDL_blit_copy.c" APPEND_STRING PROPERTY COMPILE_FLAGS " -wd13203")
|
|
||||||
set_property(SOURCE
|
set_property(SOURCE
|
||||||
"${SDL3_SOURCE_DIR}/src/libm/e_exp.c"
|
"${SDL3_SOURCE_DIR}/src/libm/e_exp.c"
|
||||||
"${SDL3_SOURCE_DIR}/src/libm/e_log.c"
|
"${SDL3_SOURCE_DIR}/src/libm/e_log.c"
|
||||||
"${SDL3_SOURCE_DIR}/src/libm/e_log10.c"
|
"${SDL3_SOURCE_DIR}/src/libm/e_log10.c"
|
||||||
"${SDL3_SOURCE_DIR}/src/libm/SDL_blit_copy.c"
|
|
||||||
PROPERTY SKIP_PRECOMPILE_HEADERS 1)
|
PROPERTY SKIP_PRECOMPILE_HEADERS 1)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
|||||||
@@ -56,7 +56,7 @@ static SDL_INLINE void SDL_TARGETING("sse") SDL_memcpySSE(Uint8 *dst, const Uint
|
|||||||
#endif
|
#endif
|
||||||
static SDL_INLINE void SDL_TARGETING("mmx") SDL_memcpyMMX(Uint8 *dst, const Uint8 *src, int len)
|
static SDL_INLINE void SDL_TARGETING("mmx") SDL_memcpyMMX(Uint8 *dst, const Uint8 *src, int len)
|
||||||
{
|
{
|
||||||
const int remain = (len & 63);
|
int remain = len & 63;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
__m64 *d64 = (__m64 *)dst;
|
__m64 *d64 = (__m64 *)dst;
|
||||||
@@ -78,7 +78,11 @@ static SDL_INLINE void SDL_TARGETING("mmx") SDL_memcpyMMX(Uint8 *dst, const Uint
|
|||||||
|
|
||||||
if (remain) {
|
if (remain) {
|
||||||
const int skip = len - remain;
|
const int skip = len - remain;
|
||||||
SDL_memcpy(dst + skip, src + skip, remain);
|
dst += skip;
|
||||||
|
src += skip;
|
||||||
|
while (remain--) {
|
||||||
|
*dst++ = *src++;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user