diff --git a/libmpcodecs/vf_gradfun.c b/libmpcodecs/vf_gradfun.c index 57c61d41eb..5b435744f1 100644 --- a/libmpcodecs/vf_gradfun.c +++ b/libmpcodecs/vf_gradfun.c @@ -91,7 +91,7 @@ static void blur_line_c(uint16_t *dc, uint16_t *buf, uint16_t *buf1, } } -#if HAVE_SSSE3 +#if HAVE_MMX2 static void filter_line_mmx2(uint8_t *dst, uint8_t *src, uint16_t *dc, int width, int thresh, const uint16_t *dithers) { @@ -138,7 +138,9 @@ static void filter_line_mmx2(uint8_t *dst, uint8_t *src, uint16_t *dc, :"memory" ); } +#endif +#if HAVE_SSSE3 static void filter_line_ssse3(uint8_t *dst, uint8_t *src, uint16_t *dc, int width, int thresh, const uint16_t *dithers) { @@ -184,7 +186,9 @@ static void filter_line_ssse3(uint8_t *dst, uint8_t *src, uint16_t *dc, :"memory" ); } +#endif // HAVE_SSSE3 +#if HAVE_6REGS && HAVE_SSE2 #define BLURV(load)\ intptr_t x = -2*width;\ __asm__ volatile(\ @@ -218,7 +222,6 @@ static void filter_line_ssse3(uint8_t *dst, uint8_t *src, uint16_t *dc, :"memory"\ ); -#if HAVE_6REGS static void blur_line_sse2(uint16_t *dc, uint16_t *buf, uint16_t *buf1, uint8_t *src, int sstride, int width) { @@ -228,8 +231,7 @@ static void blur_line_sse2(uint16_t *dc, uint16_t *buf, uint16_t *buf1, BLURV("movdqa"); } } -#endif // HAVE_6REGS -#endif // HAVE_SSSE3 +#endif // HAVE_6REGS && HAVE_SSE2 static void filter(struct vf_priv_s *ctx, uint8_t *dst, uint8_t *src, int width, int height, int dstride, int sstride, int r) @@ -383,13 +385,15 @@ static int vf_open(vf_instance_t *vf, char *args) vf->priv->blur_line = blur_line_c; vf->priv->filter_line = filter_line_c; -#if HAVE_SSSE3 -#if HAVE_6REGS +#if HAVE_6REGS && HAVE_SSE2 if (gCpuCaps.hasSSE2) vf->priv->blur_line = blur_line_sse2; #endif +#if HAVE_MMX2 if (gCpuCaps.hasMMX2) vf->priv->filter_line = filter_line_mmx2; +#endif +#if HAVE_SSSE3 if (gCpuCaps.hasSSSE3) vf->priv->filter_line = filter_line_ssse3; #endif