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?