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