void sse_mul_float(float* a, float* b, int N)
{
int nb_iters = N/4;
__m128* l = (__m128*)a;
__m128* r = (__m128*)b;
for (int i = 0; i < nb_iters; ++i, ++l, ++r)
_mm_store_ps(l, _mm_mul_ps (l, r));
}
Я хотел бы умножать элементы одного массива поплавка с другим, и я хотел бы сохранить результаты в первом массивеКак объединить два массива с плавающей точкой, используя sse?
Я получаю эту ошибку: не может преобразовать «__m128 * {ака __vector (4) с плавающей точкой *}»на '__m128 {ака __vector (4) флоат}' для аргумента '1' до '__m128 _mm_mul_ps (__ M128, __m128)'
я могу преобразовать' поплавка * 'к' float', добавив '*' перед именем. Используйте '* l' и' * r'. –
также: 'N/4' на самом деле не очень приятный, используйте' N/sizeof (float) ' –
Вы имеете в виду следующее: _mm_store_ps (l, _mm_mul_ps (* l, * r)); ? –