Un'operazione comune che faccio nel mio programma è ridimensionare i vettori con uno scalare (V * s, ad es. [1,2,3,4] * 2 == [2,4, 6,8]). Esiste un'istruzione SSE (o AVX) per fare ciò, a parte il primo caricamento dello scalare in ogni posizione in un vettore (ad es. _mm_set_ps (2,2,2,2)) e quindi moltiplicando?SSE (SIMD): moltiplicare il vettore per scalare
Questo è quello che faccio ora:
__m128 _scalar = _mm_set_ps(s,s,s,s);
__m128 _result = _mm_mul_ps(_vector, _scalar);
Sto cercando qualcosa di simile ...
__m128 _result = _mm_scale_ps(_vector, s);