[Mplayer-cvslog] CVS: main/postproc rgb2rgb_template.c,1.54,1.55

Nick Kurshev nickols_k at mail.ru
Mon Jul 1 10:41:56 CEST 2002


Hello, Michael!

On Mon, 1 Jul 2002 10:25:36 +0200 you wrote:

> Hi
> 
> On Monday 01 July 2002 09:06, Nick Kurshev wrote:
> [...]
> > > --- rgb2rgb_template.c	29 Jun 2002 21:26:15 -0000	1.54
> > > +++ rgb2rgb_template.c	29 Jun 2002 21:43:28 -0000	1.55
> > > @@ -256,13 +256,13 @@
> > >    register const uint8_t* s=src;
> > >    register uint8_t* d=dst;
> > >    register const uint8_t *end;
> > > -  uint8_t *mm_end;
> > > +  const uint8_t *mm_end;
> > >    end = s + src_size;
> > >  #ifdef HAVE_MMX
> > >    __asm __volatile(PREFETCH"	%0"::"m"(*s));
> > >    __asm __volatile("movq	%0, %%mm7"::"m"(mask15rg));
> > >    __asm __volatile("movq	%0, %%mm6"::"m"(mask15b));
> > > -  mm_end = (uint8_t*)((((unsigned long)end)/16)*16);
> > > +  mm_end = end - 15;
> >
> > IMHO it would be better to use something like this:
> > mm_end = end & ~15
> thats identical to what it was before and it overwrites upto 15 bytes at the 
> end of the array, just make cs_test && ./cs_test mmx if u dont believe me
> 
> > else your code allow integer computing anyway (even if size of data is
> > 256-byte aligned). This code should prevent only accessing of last part of
> > data which can't be fitted into MMX registers and can cause segfault due
> > array's index out of range [snip]
> if src_size is a multiple of 16 than only mmx will be used ...
> 
Well:
256 & ~15 = 256
256 - 15 = 241
thus in your case we always have 15 bytes for integer computations.
> [...]
> 
> Michael
> _______________________________________________
> Mplayer-cvslog mailing list
> Mplayer-cvslog at mplayerhq.hu
> http://mplayerhq.hu/mailman/listinfo/mplayer-cvslog
> 


Best regards! Nick
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: not available
URL: <http://lists.mplayerhq.hu/pipermail/mplayer-cvslog/attachments/20020701/0d7dbf29/attachment.pgp>


More information about the MPlayer-cvslog mailing list