Ketchuup69
@Ketchuup69

Как написать такое при помощи AVX?

Как написать такое при помощи AVX?
Если элемент массива не входит в заданный диапазон, то присвоить ему значение 0.


Как бы я написал на C++:
if (item < min || item > max)
{
   item = 0;
}


item, min, max имеют тип std::uint16_t.
Я использую 256-битные векторы (__m256i).
  • Вопрос задан
  • 57 просмотров
Пригласить эксперта
Ответы на вопрос 1
wataru
@wataru
Разработчик на С++, экс-олимпиадник.
Каким-нибудь _mm256_cmpgt_epi16 два раза можно получить для каждого числа 0xFFFF, если оно входит в интервал и 0 иначе. Потом каким-нибудь _mm256_and_si256 можно занулить те числа, которые не попали. Возможно, придется делать and 2 раза.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы