From adfec0f52e689e9ff47863e7f36297a33d03dd3d Mon Sep 17 00:00:00 2001 From: Andreas Rheinhardt Date: Mon, 13 Oct 2025 13:16:22 +0200 Subject: [PATCH] avfilter/x86/vf_noise: Make line_noise_avg_mmx() match C function Signed-off-by: Andreas Rheinhardt --- libavfilter/x86/vf_noise.c | 29 ++++++++++++++++------------- 1 file changed, 16 insertions(+), 13 deletions(-) diff --git a/libavfilter/x86/vf_noise.c b/libavfilter/x86/vf_noise.c index 43387c9908..2a7646728f 100644 --- a/libavfilter/x86/vf_noise.c +++ b/libavfilter/x86/vf_noise.c @@ -33,27 +33,30 @@ static void line_noise_avg_mmx(uint8_t *dst, const uint8_t *src, __asm__ volatile( "mov %5, %%"FF_REG_a" \n\t" + "pxor %%mm4, %%mm4 \n\t" ".p2align 4 \n\t" "1: \n\t" "movq (%1, %%"FF_REG_a"), %%mm1 \n\t" "movq (%0, %%"FF_REG_a"), %%mm0 \n\t" "paddb (%2, %%"FF_REG_a"), %%mm1\n\t" "paddb (%3, %%"FF_REG_a"), %%mm1\n\t" + "movq %%mm4, %%mm5 \n\t" + "pcmpgtb %%mm0, %%mm5 \n\t" + "movq %%mm0, %%mm6 \n\t" "movq %%mm0, %%mm2 \n\t" + "punpcklbw %%mm5, %%mm0 \n\t" + "punpckhbw %%mm5, %%mm2 \n\t" + "movq %%mm4, %%mm5 \n\t" + "pcmpgtb %%mm1, %%mm5 \n\t" "movq %%mm1, %%mm3 \n\t" - "punpcklbw %%mm0, %%mm0 \n\t" - "punpckhbw %%mm2, %%mm2 \n\t" - "punpcklbw %%mm1, %%mm1 \n\t" - "punpckhbw %%mm3, %%mm3 \n\t" - "pmulhw %%mm0, %%mm1 \n\t" - "pmulhw %%mm2, %%mm3 \n\t" - "paddw %%mm1, %%mm1 \n\t" - "paddw %%mm3, %%mm3 \n\t" - "paddw %%mm0, %%mm1 \n\t" - "paddw %%mm2, %%mm3 \n\t" - "psrlw $8, %%mm1 \n\t" - "psrlw $8, %%mm3 \n\t" - "packuswb %%mm3, %%mm1 \n\t" + "punpcklbw %%mm5, %%mm1 \n\t" + "punpckhbw %%mm5, %%mm3 \n\t" + "pmullw %%mm0, %%mm1 \n\t" + "pmullw %%mm2, %%mm3 \n\t" + "psraw $7, %%mm1 \n\t" + "psraw $7, %%mm3 \n\t" + "packsswb %%mm3, %%mm1 \n\t" + "paddb %%mm6, %%mm1 \n\t" "movq %%mm1, (%4, %%"FF_REG_a") \n\t" "add $8, %%"FF_REG_a" \n\t" " js 1b \n\t"