Sun, 11 Sep 2011 13:23:36 -0400 Another shot at fixing the compiler warnings under Cygwin/MingW. SDL-1.2
Ryan C. Gordon <icculus@icculus.org> [Sun, 11 Sep 2011 13:23:36 -0400] rev 5892
Another shot at fixing the compiler warnings under Cygwin/MingW.
Sun, 11 Sep 2011 10:48:36 -0400 Patched to compile on Windows. SDL-1.2
Ryan C. Gordon <icculus@icculus.org> [Sun, 11 Sep 2011 10:48:36 -0400] rev 5891
Patched to compile on Windows.
Sun, 11 Sep 2011 04:38:50 -0400 More work on Windows build issues. SDL-1.2
Ryan C. Gordon <icculus@icculus.org> [Sun, 11 Sep 2011 04:38:50 -0400] rev 5890
More work on Windows build issues.
Sun, 11 Sep 2011 04:02:40 -0400 More work on cleaning out compiler warnings.
Ryan C. Gordon <icculus@icculus.org> [Sun, 11 Sep 2011 04:02:40 -0400] rev 5889
More work on cleaning out compiler warnings.
Sun, 11 Sep 2011 03:35:46 -0400 Fixed Win64 builds with MingW.
Ryan C. Gordon <icculus@icculus.org> [Sun, 11 Sep 2011 03:35:46 -0400] rev 5888
Fixed Win64 builds with MingW.
Sun, 11 Sep 2011 01:54:54 -0400 Some MMX fixes from Patrick Baggett.
Ryan C. Gordon <icculus@icculus.org> [Sun, 11 Sep 2011 01:54:54 -0400] rev 5887
Some MMX fixes from Patrick Baggett. Original email... Date: Sat, 10 Sep 2011 13:01:20 -0500 From: Patrick Baggett To: SDL Development List <sdl@lists.libsdl.org> Subject: Re: [SDL] SDL_memcpyMMX uses SSE instructions In SDL_blit_copy.c, the function SDL_memcpyMMX() actually use SSE instructions. It is called in this context: #ifdef __MMX__ if (SDL_HasMMX() && !((uintptr_t) src & 7) && !(srcskip & 7) && !((uintptr_t) dst & 7) && !(dstskip & 7)) { while (h--) { SDL_memcpyMMX(dst, src, w); src += srcskip; dst += dstskip; } _mm_empty(); return; } #endif This implies that the minimum CPU features are just MMX. There is a separate SDL_memcpySSE() function. The SDL_memcpyMMX() function does: #ifdef __SSE__ _mm_prefetch(src, _MM_HINT_NTA); #endif ...which tests at compile time if SSE intrinsics are available, not at run time. It generates the PREFETCHNTA instruction. It also uses _mm_stream_pi() intrinsic, which generates the MOVNTQ instruction. If you replace the "MMX" code with: __m64* d64 = (__m64*)dst; __m64* s64 = (__m64*)src; for(i= len / 64; i--;) { d64[0] = s64[0]; d64[1] = s64[1]; d64[2] = s64[2]; d64[3] = s64[3]; d64[4] = s64[4]; d64[5] = s64[5]; d64[6] = s64[6]; d64[7] = s64[7]; d64 += 8; s64 += 8; } Then MSVC generates the correct movq instructions. GCC (4.5.0) seems to think that using 2x movl is still better, but then again, GCC isn't actually that good at optimizing intrinsics as I've found. At least the code won't crash on my P2 though. :) Also, there is no requirement for MMX to be aligned to the 8th byte. I think the author assumed that SSE's 16 byte alignment requirement must retroactively mean that MMX requires 8 byte alignment. Attached is the full patch. Patrick
Sun, 11 Sep 2011 01:35:57 -0400 Fixed some compiler warnings on Cygwin. SDL-1.2
Ryan C. Gordon <icculus@icculus.org> [Sun, 11 Sep 2011 01:35:57 -0400] rev 5886
Fixed some compiler warnings on Cygwin.
Sun, 11 Sep 2011 00:40:21 -0400 Fixed another nasm warning, this one looking quite serious. SDL-1.2
Ryan C. Gordon <icculus@icculus.org> [Sun, 11 Sep 2011 00:40:21 -0400] rev 5885
Fixed another nasm warning, this one looking quite serious.
Sun, 11 Sep 2011 00:33:18 -0400 Fixed build warnings from nasm on some Hermes blitters. SDL-1.2
Ryan C. Gordon <icculus@icculus.org> [Sun, 11 Sep 2011 00:33:18 -0400] rev 5884
Fixed build warnings from nasm on some Hermes blitters.
Sat, 10 Sep 2011 23:21:19 -0400 Disabled MMX blitters on GCC. They break the build on tons of machines now. SDL-1.2
Ryan C. Gordon <icculus@icculus.org> [Sat, 10 Sep 2011 23:21:19 -0400] rev 5883
Disabled MMX blitters on GCC. They break the build on tons of machines now.
(0) -3000 -1000 -300 -100 -10 +10 +100 +300 +1000 +3000 tip