Мне удалось преобразовать большую часть моего SIMD-кода в векторные расширения GCC. Однако я не нашел хорошего решения для трансляции следующим образом
__m256 areg0 = _mm256_broadcast_ss(&a[i]);
Я хочу сделать
__m256 argeg0 = a[i];
Если вы видите мой ответ в Mutiplying vector константой, используя SSE Мне удалось получить трансляции, работающие с другим регистром SIMD. Следующие работы:
__m256 x,y;
y = x + 3.14159f; // broadcast x + 3.14159
y = 3.14159f*x; // broadcast 3.14159*x
но это не сработает:
__m256 x;
x = 3.14159f; //should broadcast 3.14159 but does not work
Как я могу сделать это с помощью GCC?