|
- Prtogramowanie c/ C++ http://www.programowanie.pun.pl/index.php - przyklad http://www.programowanie.pun.pl/viewforum.php?id=5 - MMX http://www.programowanie.pun.pl/viewtopic.php?id=6 |
| bronek - 2012-01-03 21:27:05 |
uzupelnianie Kod:_mm_set1_pi8 dodawanie: Kod:__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 Kod:__m64* vektor1;
__m64* vektor2;
{
vektor1 = (__m64*)&pSource[counter];
vektor2 = (__m64*)&pDest[counter];
*vektor2 =_mm_subs_pu8(*vektor1,nChange64);
}porownywanie wartosci Kod:__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 Kod: 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(); |