[gst-devel] Compilation troubles
Wim Taymans
wim.taymans at tvd.be
Sun Jun 4 22:37:51 CEST 2000
Richard Boulton wrote:
>
> On Sun, Jun 04, 2000 at 10:02:13PM +0200, Wim Taymans wrote:
> > Do the same errors appear in video.c in the mpeg_play element? It has
> > a similar type of mmx asm.
>
> plugins/mpeg1/mpeg_play/video.c compiles perfectly: not even a warning.
>
> > > /tmp/ccwG7VeD.s: Assembler messages:
> > > /tmp/ccwG7VeD.s:3087: Error: suffix or operands invalid for `pand'
> > > /tmp/ccwG7VeD.s:3098: Error: suffix or operands invalid for `pand'
> > > /tmp/ccwG7VeD.s:3138: Error: suffix or operands invalid for `pand'
> > > /tmp/ccwG7VeD.s:3149: Error: suffix or operands invalid for `pand'
> > > /tmp/ccwG7VeD.s:3185: Error: suffix or operands invalid for `pand'
> > > /tmp/ccwG7VeD.s:3196: Error: suffix or operands invalid for `pand'
> >
> > any chance you could send me a copy of that /tmp file? a few lines
> > around 3087 should be enough to see what happens.
>
> Here: lines 3070 to 3125...
>
> I notice that all these lines have pand instructions which have %eax as
> the first argument (though I have little x86 assembly knowledge, so I
> have no idea if that is significant).
That is the problem. It is illegal asm. You compiler has loaded the
content of the memory space into eax and decided to use eax as the source for
the pand, which is illegal.
do you have an idea how we can force the compiler into something like :
pand MMX_MASK_1 at GOTOFF(%ebx), %mm5
>
> -----BEGIN CODE-----
> jne .L378
> #APP
> pxor %mm7, %mm7
> pxor %mm6, %mm6
> #NO_APP
> cmpl %ebp,%eax
> jge .L373
> movl MMX_MASK_1 at GOTOFF(%ebx),%eax
> movl 4+MMX_MASK_1 at GOTOFF(%ebx),%edx
This is wrong!!
> testl $1,%ebp
> je .L375
> #APP
> movq (%ecx), %mm0
> movq %mm0, %mm5
> movq 1(%ecx), %mm2
> movq MMX_MASK_2 at GOTOFF(%ebx), %mm4
> por %mm2, %mm5
> pand %eax, %mm5
This is illegal and wrong !
> pand %mm4, %mm0
> pand %mm4, %mm2
> psrlq $1, %mm0
> psrlq $1, %mm2
> paddusb %mm2, %mm0
> paddusb %mm5, %mm0
> movq 8(%ecx), %mm3
> movq %mm3, %mm1
> movq 9(%ecx), %mm2
> por %mm2, %mm1
> pand %eax, %mm1
> pand %mm4, %mm3
> pand %mm4, %mm2
> psrlq $1, %mm3
> psrlq $1, %mm2
> paddusb %mm2, %mm3
> paddusb %mm1, %mm3
> movq (%esi), %mm1
> movq %mm0, %mm2
> psubusb %mm1, %mm0
> psubusb %mm2, %mm1
> movq 8(%esi), %mm4
> por %mm1, %mm0
> movq %mm3, %mm5
> movq %mm0, %mm1
> psubusb %mm4, %mm3
> punpcklbw %mm6, %mm0
> psubusb %mm5, %mm4
> por %mm4, %mm3
> punpckhbw %mm6, %mm1
> movq %mm3, %mm4
> punpcklbw %mm6, %mm3
> paddw %mm0, %mm7
> paddw %mm1, %mm7
> punpckhbw %mm6, %mm4
> paddw %mm3, %mm7
> paddw %mm4, %mm7
> #NO_APP
> -----END CODE-----
>
> > The pandn instruction is worse, it is broken on my compiler. :-(
> :(
>
> It may also be worth you knowing that I can't get the CVS version of
> gst/gsttrace.c to work: I'm compiling using the hack below, as previously
> suggested here. I don't know whether this has the same functionality as
> what's there at the moment: if so, perhaps it should be committed?
>
> #define rdtscll(result) \
> __asm__ __volatile__("rdtsc" : "=A" (result) : /* No inputs */ )
>
It should be OK. It is not really used for the moment.
Wim
> --
> Richard
>
> _______________________________________________
> gstreamer-devel mailing list
> gstreamer-devel at lists.sourceforge.net
> http://lists.sourceforge.net/mailman/listinfo/gstreamer-devel
--
It did not occur to me that my being with two men continuously would
interest anyone or arouse anyone's misgivings. I asked for an invitation
for Heinrich too, as often as it seemed possible, when Paulus and I were
invited to a social gathering. I felt the set of rules others lived by
was irrelevant. My childhood attitude -- every attempt to adjust is
hopeless and you might just as well follow your own attitudes -- must have
carried me.
-- Hannah Tillich, "From Time to Time"
More information about the gstreamer-devel
mailing list