[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