Opis forum
dodawanie
__int64 c = b;
__m128i nChange128 = Get_m128(c,c);
{
vektor4 = _mm_loadu_si128((__m128i*)&pSource[counter]);
_mm_store_si128((__m128i*)&pDest[counter], _mm_adds_epu8(vektor4,nChange128));
}odejmowanie
__int64 c = b;
__m128i nChange128 = Get_m128(c,c);
{
vektor4 = _mm_loadu_si128((__m128i*)&pSource[counter]);
_mm_store_si128((__m128i*)&pDest[counter], _mm_subs_epu8(vektor4,nChange128));
}porównywanie wartosci
{
vektor1 = _mm_loadu_si128((__m128i*)&pSource[i]);
_mm_store_si128((__m128i*)&pDest[i],_mm_cmpeq_epi8(_mm_subs_epu8(threshold128,vektor1), zero128));
}wartosc bezwzgledna
__m128i *vektor1;
__m128i *vektor2;
__m128i *vektor3;
__m128i *vektor4;
__m128i *vektor5;
__m128i abs1;
__m128i abs2;
vektor1 = (__m128i*)&pSource[counter];
vektor2 = (__m128i*)&pSource[counter+1+nWidth];
vektor3 = (__m128i*)&pSource[counter+1];
vektor4 = (__m128i*)&pSource[counter+nWidth];
vektor5 = (__m128i*)&pDest[counter];
abs1 = _mm_or_si128(_mm_subs_epu8(_mm_loadu_si128(vektor1),_mm_loadu_si128(vektor2)), _mm_subs_epu8(_mm_loadu_si128(vektor2),_mm_loadu_si128(vektor1)));
abs2 = _mm_or_si128(_mm_subs_epu8(_mm_loadu_si128(vektor3),_mm_loadu_si128(vektor4)), _mm_subs_epu8(_mm_loadu_si128(vektor4),_mm_loadu_si128(vektor3)));
_mm_store_si128(vektor5,_mm_adds_epu8(abs1, abs2));
}Offline