pike.git / src / modules / Image / layer_oper.h

version» Context lines:

pike.git/src/modules/Image/layer_oper.h:9: Inside #if undefined(L_LOGIC) and #if defined(LAYER_DUAL)
   {   #ifdef LAYER_DUAL    MEMCPY(d,s,sizeof(rgb_group)*len);    MEMCPY(da,sa,sizeof(rgb_group)*len);   #endif    return;    }    else if (alpha==1.0)    {    if (!la) /* no layer alpha => full opaque */ +  { + #ifdef L_MMX_OPER + #ifdef TRY_USE_MMX +  extern int try_use_mmx; +  if(try_use_mmx) +  { +  int num=sizeof(rgb_group) * len; +  unsigned char *source=(char *)s; +  unsigned char *dest=(char *)d; +  unsigned char *sourcel=(char *)l; +  +  while (num-->0 && (7&(int)dest)) +  { +  *dest=L_TRUNC(L_OPER(*source,*sourcel)); +  source++; +  sourcel++; +  dest++; +  } +  +  +  while(num > 16) +  { +  moveq_m2r(*source, mm0); +  moveq_m2r(source[8], mm1); +  L_MMX_OPER(*sourcel, mm0); +  L_MMX_OPER(sourcel[8], mm1); /* paddusb_m2r */ +  moveq_r2m(mm0,*dest); +  moveq_r2m(mm1,dest[8]); +  source+=16; +  sourcel+=16; +  dest+=16; +  } +  if (num > 8) +  { +  movq_m2r(*source, mm0); +  L_MMX_OPER(*sourcel, mm0); +  movq_r2m(mm0,*dest); +  source+=8; +  sourcel+=8; +  dest+=8; +  num-=8; +  } +  emms(); +  while (num-->0) +  { +  *dest=L_TRUNC(L_OPER(*source,*sourcel)); +  source++; +  sourcel++; +  dest++; +  } +  } +  else + #endif + #endif    while (len--)    {    d->r=L_TRUNC(L_OPER(s->r,l->r));    d->g=L_TRUNC(L_OPER(s->g,l->g));    d->b=L_TRUNC(L_OPER(s->b,l->b));    *da=white;    l++; s++; sa++; da++; d++;    } -  +  }    else    while (len--)    {    if (la->r==COLORMAX && la->g==COLORMAX && la->b==COLORMAX)    {    d->r=L_TRUNC(L_OPER(s->r,l->r));    d->g=L_TRUNC(L_OPER(s->g,l->g));    d->b=L_TRUNC(L_OPER(s->b,l->b));   #ifdef L_USE_SA    *da=*sa;