SSE (SIMD): умножение вектора на скаляр

Обычная операция, которую я выполняю в своей программе, - это масштабирование векторов скаляром (V*s, например, [1,2,3,4]*2 == [2,4,6,8]). Есть ли инструкция SSE (или AVX) для этого, кроме как сначала загрузить скаляр в каждую позицию вектора (например, _mm_set_ps(2,2,2,2,2)) и затем умножить?

Вот что я делаю сейчас:

__m128 _scalar = _mm_set_ps(s,s,s,s);
__m128 _result = _mm_mul_ps(_vector, _scalar);

Я ищу что-то вроде...

__m128 _result = _mm_scale_ps(_vector, s);
19
задан Paul R 12 January 2016 в 23:24
поделиться