mirror of
https://github.com/libsdl-org/SDL.git
synced 2026-02-13 15:23:34 +00:00
stb_image: use SDL_TARGETING("sse2") macro for supporting intrinsics on 386
This commit is contained in:
committed by
Anonymous Maarten
parent
0457891d50
commit
ac4f852a6a
@@ -772,7 +772,7 @@ typedef unsigned char validate_uint32[sizeof(stbi__uint32)==4 ? 1 : -1];
|
||||
// exposed in GCC/Clang is, sadly, not really suited for one-file libs.
|
||||
// New behavior: if compiled with -msse2, we use SSE2 without any
|
||||
// detection; if not, we don't use it at all.
|
||||
#define STBI_NO_SIMD
|
||||
// #define STBI_NO_SIMD /* Changed by SDL: use SDL_TARGETING("sse2") */
|
||||
#endif
|
||||
|
||||
#if defined(__MINGW32__) && defined(STBI__X86_TARGET) && !defined(STBI_MINGW_ENABLE_SSE2) && !defined(STBI_NO_SIMD)
|
||||
@@ -2690,7 +2690,7 @@ static void stbi__idct_block(stbi_uc *out, int out_stride, short data[64])
|
||||
// sse2 integer IDCT. not the fastest possible implementation but it
|
||||
// produces bit-identical results to the generic C version so it's
|
||||
// fully "transparent".
|
||||
static void stbi__idct_simd(stbi_uc *out, int out_stride, short data[64])
|
||||
static void SDL_TARGETING("sse2") stbi__idct_simd(stbi_uc *out, int out_stride, short data[64]) /* Changed by SDL: SDL_TARGETING("sse2") */
|
||||
{
|
||||
// This is constructed to match our regular (generic) integer IDCT exactly.
|
||||
__m128i row0, row1, row2, row3, row4, row5, row6, row7;
|
||||
@@ -3690,7 +3690,12 @@ static stbi_uc *stbi__resample_row_hv_2(stbi_uc *out, stbi_uc *in_near, stbi_uc
|
||||
}
|
||||
|
||||
#if defined(STBI_SSE2) || defined(STBI_NEON)
|
||||
static stbi_uc *stbi__resample_row_hv_2_simd(stbi_uc *out, stbi_uc *in_near, stbi_uc *in_far, int w, int hs)
|
||||
#ifdef STBI_SSE2 /* Added by SDL */
|
||||
#define TARGETING_SSE2 SDL_TARGETING("sse2") /* Added by SDL */
|
||||
#else
|
||||
#define TARGETING_SSE2
|
||||
#endif /* Added by SDL */
|
||||
static stbi_uc *TARGETING_SSE2 stbi__resample_row_hv_2_simd(stbi_uc *out, stbi_uc *in_near, stbi_uc *in_far, int w, int hs) /* Changed by SDL: TARGETING_SSE2 */
|
||||
{
|
||||
// need to generate 2x2 samples for every one in input
|
||||
int i=0,t0,t1;
|
||||
@@ -3846,7 +3851,7 @@ static void stbi__YCbCr_to_RGB_row(stbi_uc *out, const stbi_uc *y, const stbi_uc
|
||||
}
|
||||
|
||||
#if defined(STBI_SSE2) || defined(STBI_NEON)
|
||||
static void stbi__YCbCr_to_RGB_simd(stbi_uc *out, stbi_uc const *y, stbi_uc const *pcb, stbi_uc const *pcr, int count, int step)
|
||||
static void TARGETING_SSE2 stbi__YCbCr_to_RGB_simd(stbi_uc *out, stbi_uc const *y, stbi_uc const *pcb, stbi_uc const *pcr, int count, int step) /* Changed by SDL: TARGETING_SSE2 */
|
||||
{
|
||||
int i = 0;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user