- Prtogramowanie c/ C++ http://www.programowanie.pun.pl/index.php - przyklad http://www.programowanie.pun.pl/viewforum.php?id=5 - SSE2 http://www.programowanie.pun.pl/viewtopic.php?id=7 |
bronek - 2012-01-03 20:35:36 |
dodawanie Kod:__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 Kod:__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 Kod:{ vektor1 = _mm_loadu_si128((__m128i*)&pSource[i]); _mm_store_si128((__m128i*)&pDest[i],_mm_cmpeq_epi8(_mm_subs_epu8(threshold128,vektor1), zero128)); } wartosc bezwzgledna Kod:__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)); } |