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