[MPlayer-dev-eng] Improved remove-logo filter
Michael Niedermayer
michaelni at gmx.at
Wed Nov 1 02:22:11 CET 2006
Hi
On Tue, Oct 31, 2006 at 01:13:29PM -0800, Trent Piepho wrote:
> On Tue, 31 Oct 2006, Guillaume POIRIER wrote:
>
> > Hi Trent,
> >
> > Were you able to work on improving your patch?
>
> What was there to do? Change the asm to use "+" constraints
> even though it doesn't always work with gcc 2.7.2?
does gcc 2.7.2 compile mplayer at all?
[...]
> > > > > : "=m" (accumulator), "=r" (i), "=g" (j), "=r" (mask), "=r" (image)
> > > > > : "m" (accumulator), "1" (i), "2" (j), "3" (mask), "4" (image),
> > > > > "g" (logo_mask->width), "g" (stride)
> > > >
> > > > : "+m" (accumulator), "+r" (i), "+g" (j), "+r" (mask), "+r" (image)
> > > > : "g" (logo_mask->width), "g" (stride)
> > >
> > > I've read several places that you can't use "+" to indicate an input/output
> > > arguments in inline asm, it only works in machine descriptions. I think it
> > > may have changed for newer versions of gcc.
> > >
> > > I've tried it, before and gcc doesn't complain about it, but it doesn't
> > > always work. With broken constraints you will often get lucky and have
> > > everything work, and then some random change to some peice of unrelated
> > > code will have the optimizer make a choice that breaks the asm. So, it's
> > > very had to make a test case that shows it, but I had gcc not load the
> > > value into a "+r" constraint, so I decided to believe the docs and use "=r"
> > > / "0" instead.
i wish you luck, but ill bet that avoiding "+" will not save you from gcc-asm
bugs (unless the gcc devels fixed it and you use only very recent gcc)
and if you use "=something" then you should also be aware of that for example
"=r"(a)
:"r"(b)
does not prevent %0 == %1 if you want an output to not be able to use the
same register or memory location as an random input then you must use "=&..."
iam not sure if that could cause any problems with your code as i didnt look
at it, just the constraints quoted above in which "=m" (accumulator) and
"m" (accumulator) could be in the same memory location or a different one
or "=m" (accumulator) and "g" (stride) could be in the same memory location
[...]
--
Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB
In the past you could go to a library and read, borrow or copy any book
Today you'd get arrested for mere telling someone where the library is
More information about the MPlayer-dev-eng
mailing list