SIMD-Broadcasts (SSE / AVX) mit GCC implizieren

Ich habe den größten Teil meines SIMD-Codes in die Vektorerweiterungen von GCC konvertiert. Ich habe jedoch keine gute Lösung für eine Sendung wie folgt gefunden

__m256 areg0 = _mm256_broadcast_ss(&a[i]);

Ich will das tun

__m256 argeg0 = a[i];

Wenn Sie meine Antwort auf sehenVervielfältigung des Vektors durch Konstante mit SSE Ich habe es geschafft, Sendungen mit einem anderen SIMD-Register zum Laufen zu bringen. Die folgenden Arbeiten:

__m256 x,y;
y = x + 3.14159f; // broadcast x + 3.14159
y = 3.14159f*x;  // broadcast 3.14159*x

aber das geht nicht:

 __m256 x;
 x = 3.14159f;  //should broadcast 3.14159 but does not work

Wie kann ich das mit GCC machen?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage