From 552cbd69fae522c9fa31c21d2868bb17c86cb89c Mon Sep 17 00:00:00 2001 From: Themaister Date: Fri, 7 Sep 2012 11:14:07 +0200 Subject: [PATCH] Fix scaler build on 32-bit. --- gfx/scaler/scaler_int.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/gfx/scaler/scaler_int.c b/gfx/scaler/scaler_int.c index 2fc3a6ffc1..098efcf5b0 100644 --- a/gfx/scaler/scaler_int.c +++ b/gfx/scaler/scaler_int.c @@ -185,7 +185,19 @@ void scaler_argb8888_horiz(const struct scaler_ctx *ctx, const void *input_, int } res = _mm_adds_epi16(_mm_srli_si128(res, 8), res); + +#ifdef __x86_64__ output[w] = _mm_cvtsi128_si64(res); +#else // 32-bit doesn't have si64. Do it in two steps. + union + { + uint32_t *u32; + uint64_t *u64; + } u; + u.u64 = output + w; + u.u32[0] = _mm_cvtsi128_si32(res); + u.u32[1] = _mm_cvtsi128_si32(_mm_srli_si128(res, 4)); +#endif } } }