[Mplayer-cvslog] CVS: main/libmpcodecs vf_ilpack.c,1.2,1.3

Michael Niedermayer michaelni at gmx.at
Mon Dec 15 15:29:20 CET 2003


Hi

On Monday 15 December 2003 14:43, Michael Niedermayer wrote:
> Hi
>
> On Monday 15 December 2003 14:37, D Richard Felker III wrote:
> > On Mon, Dec 15, 2003 at 09:11:14AM +0100, Michael Niedermayer wrote:
> > > Hi
> > >
> > > On Monday 15 December 2003 05:07, Richard Felker CVS wrote:
> > > > Update of /cvsroot/mplayer/main/libmpcodecs
> > > > In directory mail:/var/tmp.root/cvs-serv10112/libmpcodecs
> > > >
> > > > Modified Files:
> > > > 	vf_ilpack.c
> > > > Log Message:
> > > > mmx optimizations
> > >
> > > [...]
> > >
> > > > +		"punpcklbw %%mm0, %%mm1 \n\t"
> > > > +		"punpckhbw %%mm0, %%mm2 \n\t"
> > >
> > > [...]
> > >
> > > > +		"movq %%mm4, %%mm3 \n\t"
> > > > +		"movq %%mm6, %%mm5 \n\t"
> > > > +		"punpcklwd %%mm0, %%mm3 \n\t"
> > > > +		"punpckhwd %%mm0, %%mm4 \n\t"
> > > > +		"punpcklwd %%mm0, %%mm5 \n\t"
> > > > +		"punpckhwd %%mm0, %%mm6 \n\t"
> > > > +		"pslld $8, %%mm3 \n\t"
> > > > +		"pslld $8, %%mm4 \n\t"
> > > > +		"pslld $24, %%mm5 \n\t"
> > > > +		"pslld $24, %%mm6 \n\t"
> > > > +
> > > > +		"por %%mm3, %%mm1 \n\t"
> > > > +		"por %%mm4, %%mm2 \n\t"
> > > > +		"por %%mm5, %%mm1 \n\t"
> > > > +		"por %%mm6, %%mm2 \n\t"
> > >
> > > hmm, why not
> > >
> > > packuswb %%mm4, %%mm4
> > > packuswb %%mm6, %%mm6
> > > punpcklbw %%mm6, %%mm4
> > > punpcklbw %%mm4, %%mm0
> > > punpckhbw %%mm4, %%mm1
> >
> > Feel free to make it faster if you can. I'm no mmx god. I intended mm0
> > to stay all-zero for the entire loop so it doesn't have to be
> > reloaded, but reloading it with 0's probably takes less time than your
> > optims save.
>
> oops s/mm1/mm2/ s/mm0/mm1/ :)
>
> yes ill commit it myself after -vo md5 testing
done

btw, ur asm code is wrong (it has undefined behavior)

+               "addl $16, %%esi \n\t"
+               "addl $8, %%eax \n\t"
+               "addl $8, %%ebx \n\t"
[...]
+               "addl $32, %%edi \n\t"
+               
+               "decl %%ecx \n\t"
[...]
+               : 
+               : "S" (y), "D" (dst), "a" (u), "b" (v), "d" (&us), "c" (w/16)
+               : "memory"
+               );

this modifies read only operands

[...]
-- 
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-cvslog mailing list