[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