Уча се как да използвам инструкциите на Intel MMX и SSE във видео приложение. Имам 8-байтова дума и бих искал да добавя всичките 8 байта и да създам едно цяло число като резултат. Простият метод е серия от 7 смени и добавяния, но това е бавно. Кой е най-бързият начин да направите това? Има ли MMX или SSE инструкция за това?
Това е бавният начин да го направите
unsigned long PackedWord = whatever....
int byte1 = 0xff & (PackedWord);
int byte2 = 0xff & (PackedWord >> 8);
int byte3 = 0xff & (PackedWord >> 16);
int byte4 = 0xff & (PackedWord >> 24);
int byte5 = 0xff & (PackedWord >> 32);
int byte6 = 0xff & (PackedWord >> 40);
int byte7 = 0xff & (PackedWord >> 48);
int byte8 = 0xff & (PackedWord >> 56);
int sum = byte1 + byte2 + byte3 + byte4 + byte5 + byte6 + byte7 + byte8;
psadbw
където другият операнд е нула. - person harold   schedule 27.08.2013((PackedWord * 0x0101010101010101ULL) >> 56)
? - person FrankH.   schedule 28.08.2013