Opis forum
uzupelnianie
_mm_set1_pi8
dodawanie:
__m64* vektor1;
__m64* vektor2;
for(int counter=0; counter<nNumberOfPixels; counter+=8)
{
vektor1 = (__m64*)&pSource[counter];
vektor2 = (__m64*)&pDest[counter];
*vektor2 =_mm_adds_pu8(*vektor1,nChange64);
}
_mm_empty();odejmowanie
__m64* vektor1;
__m64* vektor2;
{
vektor1 = (__m64*)&pSource[counter];
vektor2 = (__m64*)&pDest[counter];
*vektor2 =_mm_subs_pu8(*vektor1,nChange64);
}porownywanie wartosci
__m64* vektor1;
__m64* vektor2;
{
vektor1 = (__m64*)&pSource[counter];
vektor2 = (__m64*)&pDest[counter];
*vektor2 = _mm_cmpeq_pi8(_mm_subs_pu8(threshold64,*vektor1), zero64);
}
_mm_empty();liczenie wartosci bezwzglednej
vektor1 = (__m64*)&pSource[counter];
vektor2 = (__m64*)&pSource[counter+1+nWidth];
vektor3 = (__m64*)&pSource[counter+1];
vektor4 = (__m64*)&pSource[counter+nWidth];
vektor5 = (__m64*)&pDest[counter];
abs1 = _mm_or_si64(_mm_subs_pu8(*vektor1,*vektor2), _mm_subs_pu8(*vektor2,*vektor1));
abs2 = _mm_or_si64(_mm_subs_pu8(*vektor3,*vektor4), _mm_subs_pu8(*vektor4,*vektor3));
*vektor5 = _mm_adds_pu8(abs1, abs2);
}
_mm_empty();Offline