У меня есть следующая функция узкого места.
typedef unsigned char byte;
void CompareArrays(const byte * p1Start, const byte * p1End, const byte * p2, byte * p3)
{
const byte b1 = 128-30;
const byte b2 = 128+30;
for (const byte * p1 = p1Start; p1 != p1End; ++p1, ++p2, ++p3) {
*p3 = (*p1 < *p2 ) ? b1 : b2;
}
}
Я хочу заменить код C ++
внутренними функциями SSE2. Я пробовал _mm_cmpgt_epi8
, но он использовал сравнение со знаком. Мне нужно сравнение без знака.
Есть ли какой-нибудь трюк (SSE, SSE2, SSSE3) для решения моей проблемы?
Примечание: Я не хочу использовать многопоточность в этом случае.