[MPlayer-dev-eng] [PATCH] vf_bmovl2, complete and documented

Michael Niedermayer michaelni at gmx.at
Wed Jan 14 13:19:12 CET 2004


Hi

On Wednesday 14 January 2004 04:10, Jason Tackaberry wrote:
> Hi Michael,
>
> On Tue, 2004-01-13 at 22:04, Michael Niedermayer wrote:
> > anything which changes must be on the output or clobber list, or u must
> > be sure the compiler is too dumb to mess with it (mmx registers for
> > example can be ignored)
>
> I am only clobbering eax, and have specified it on the clobber list.
> Have I missed something?
yes
               "movq %%mm0, %0\n\t"
                            ^^
               "emms\n\t"
       :: "m" (dst[0]), "m" (src[0]), "m" (alpha[0]), "m" (d[0]), 
          "m" (layer_alpha_array[0]), "m" (round[0]), "m" (layer_alpha) : 
"%eax");

>
> > else (for example on the stack to save some registers accessing it), gcc
> > doesnt do this as its way too dumb, its also not entirely clear if this
> > would be alowed at all, as there is AFAIK no authorative doc which
> > clearly defines this ...
>
> I'm by no means an expert (or barely competent) when it comes to gcc
> assembler.  What would your recommendation be?
cast the stuff to the right type before using it
"m"(((uint64_t*)dst)[0]) instead of "m"(dst[0])

[...]
-- 
Michael
level[i]= get_vlc(); i+=get_vlc();		(violates patent EP0266049)
median(mv[y-1][x], mv[y][x-1], mv[y+1][x+1]);	(violates patent #5,905,535)
buf[i]= qp - buf[i-1];				(violates patent #?)
for more examples, see http://mplayerhq.hu/~michael/patent.html
stop it, see http://petition.eurolinux.org & http://petition.ffii.org/eubsa/en




More information about the MPlayer-dev-eng mailing list