[MEncoder-users] pullup filter segfaults on amd64
Reimar Döffinger
Reimar.Doeffinger at stud.uni-karlsruhe.de
Mon Nov 13 16:07:47 CET 2006
Hello,
On Wed, Nov 08, 2006 at 12:18:06PM +0100, Fredrik Eriksson wrote:
> Using the pullup filter on my amd64 3500+ causes mencoder to segfault
> (and mplayer crashes as well). The bug is present in the latest svn
> (r20775) and has been there at least since the beginning of the month
> (svn from the 2:nd has the bug, and earlier revisions doesn't even
> compile). There is no problem on my x86 machine...
Try attached patch.
-------------- next part --------------
Index: libmpcodecs/pullup.c
===================================================================
--- libmpcodecs/pullup.c (revision 20869)
+++ libmpcodecs/pullup.c (working copy)
@@ -5,6 +5,7 @@
#include <string.h>
#include "pullup.h"
#include "config.h"
+#include "cpudetect.h"
@@ -20,11 +21,11 @@
"1: \n\t"
- "movq (%%esi), %%mm0 \n\t"
- "movq (%%esi), %%mm2 \n\t"
- "addl %%eax, %%esi \n\t"
- "movq (%%edi), %%mm1 \n\t"
- "addl %%eax, %%edi \n\t"
+ "movq (%%"REG_S"), %%mm0 \n\t"
+ "movq (%%"REG_S"), %%mm2 \n\t"
+ "add %%"REG_a", %%"REG_S" \n\t"
+ "movq (%%"REG_D"), %%mm1 \n\t"
+ "add %%"REG_a", %%"REG_D" \n\t"
"psubusb %%mm1, %%mm2 \n\t"
"psubusb %%mm0, %%mm1 \n\t"
"movq %%mm2, %%mm0 \n\t"
@@ -64,14 +65,14 @@
"movl $4, %%ecx \n\t"
"pxor %%mm6, %%mm6 \n\t"
"pxor %%mm7, %%mm7 \n\t"
- "subl %%eax, %%edi \n\t"
+ "sub %%"REG_a", %%"REG_D" \n\t"
"2: \n\t"
- "movq (%%esi), %%mm0 \n\t"
- "movq (%%edi), %%mm1 \n\t"
+ "movq (%%"REG_D"), %%mm0 \n\t"
+ "movq (%%"REG_D"), %%mm1 \n\t"
"punpcklbw %%mm7, %%mm0 \n\t"
- "movq (%%edi,%%eax), %%mm2 \n\t"
+ "movq (%%"REG_D",%%"REG_a"), %%mm2 \n\t"
"punpcklbw %%mm7, %%mm1 \n\t"
"punpcklbw %%mm7, %%mm2 \n\t"
"paddw %%mm0, %%mm0 \n\t"
@@ -82,10 +83,10 @@
"paddw %%mm0, %%mm6 \n\t"
"paddw %%mm1, %%mm6 \n\t"
- "movq (%%esi), %%mm0 \n\t"
- "movq (%%edi), %%mm1 \n\t"
+ "movq (%%"REG_S"), %%mm0 \n\t"
+ "movq (%%"REG_D"), %%mm1 \n\t"
"punpckhbw %%mm7, %%mm0 \n\t"
- "movq (%%edi,%%eax), %%mm2 \n\t"
+ "movq (%%"REG_D",%%"REG_a"), %%mm2 \n\t"
"punpckhbw %%mm7, %%mm1 \n\t"
"punpckhbw %%mm7, %%mm2 \n\t"
"paddw %%mm0, %%mm0 \n\t"
@@ -96,10 +97,10 @@
"paddw %%mm0, %%mm6 \n\t"
"paddw %%mm1, %%mm6 \n\t"
- "movq (%%edi,%%eax), %%mm0 \n\t"
- "movq (%%esi), %%mm1 \n\t"
+ "movq (%%"REG_D",%%"REG_a"), %%mm0 \n\t"
+ "movq (%%"REG_S"), %%mm1 \n\t"
"punpcklbw %%mm7, %%mm0 \n\t"
- "movq (%%esi,%%eax), %%mm2 \n\t"
+ "movq (%%"REG_S",%%"REG_a"), %%mm2 \n\t"
"punpcklbw %%mm7, %%mm1 \n\t"
"punpcklbw %%mm7, %%mm2 \n\t"
"paddw %%mm0, %%mm0 \n\t"
@@ -110,10 +111,10 @@
"paddw %%mm0, %%mm6 \n\t"
"paddw %%mm1, %%mm6 \n\t"
- "movq (%%edi,%%eax), %%mm0 \n\t"
- "movq (%%esi), %%mm1 \n\t"
+ "movq (%%"REG_D",%%"REG_a"), %%mm0 \n\t"
+ "movq (%%"REG_S"), %%mm1 \n\t"
"punpckhbw %%mm7, %%mm0 \n\t"
- "movq (%%esi,%%eax), %%mm2 \n\t"
+ "movq (%%"REG_S",%%"REG_a"), %%mm2 \n\t"
"punpckhbw %%mm7, %%mm1 \n\t"
"punpckhbw %%mm7, %%mm2 \n\t"
"paddw %%mm0, %%mm0 \n\t"
@@ -124,8 +125,8 @@
"paddw %%mm0, %%mm6 \n\t"
"paddw %%mm1, %%mm6 \n\t"
- "addl %%eax, %%esi \n\t"
- "addl %%eax, %%edi \n\t"
+ "add %%"REG_a", %%"REG_S" \n\t"
+ "add %%"REG_a", %%"REG_D" \n\t"
"decl %%ecx \n\t"
"jnz 2b \n\t"
@@ -156,10 +157,10 @@
"1: \n\t"
- "movq (%%esi), %%mm0 \n\t"
- "movq (%%esi), %%mm2 \n\t"
- "movq (%%esi,%%eax), %%mm1 \n\t"
- "addl %%eax, %%esi \n\t"
+ "movq (%%"REG_S"), %%mm0 \n\t"
+ "movq (%%"REG_S"), %%mm2 \n\t"
+ "movq (%%"REG_S",%%"REG_a"), %%mm1 \n\t"
+ "add %%"REG_a", %%"REG_S" \n\t"
"psubusb %%mm1, %%mm2 \n\t"
"psubusb %%mm0, %%mm1 \n\t"
"movq %%mm2, %%mm0 \n\t"
More information about the MEncoder-users
mailing list