avfilter/x86/vf_noise: Make line_noise_avg_mmx() match C function

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
This commit is contained in:
Andreas Rheinhardt
2025-10-13 13:16:22 +02:00
parent 214b52df43
commit adfec0f52e

View File

@@ -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"