Me gustaría combinar dos valores __m128
en uno __m256
.¿Cómo combinar dos valores __m128 en __m256?
Algo como esto:
__m128 a = _mm_set_ps(1, 2, 3, 4);
__m128 b = _mm_set_ps(5, 6, 7, 8);
a algo como:
__m256 c = { 1, 2, 3, 4, 5, 6, 7, 8 };
¿existen características intrínsecas que puedo utilizar para hacer esto?
Algunas versiones de Visual Studio (definitivamente 2010, posiblemente algunas más tarde también) tienen un error en el manejo de _mm256_castps128_ps256, por lo que es probable que este código se cuelgue en ellas. Consulte http://connect.microsoft.com/VisualStudio/feedback/details/653771/mm256-castps128-ps256-does-unaligned-read. Si necesita que su código funcione en esos compiladores, deberá usar la solución provista por el usuario1584773 que lo reemplaza con un inserto. – peastman
Tenga en cuenta que esto da como resultado '__m256 {4, 3, 2, 1, 8, 7, 6, 5}' en lugar de '__m256 {1, 2, 3, 4, 5, 6, 7, 8}'. Creo que el OP quería usar '_mm_setr_ps' en lugar de' _mm_set_ps'. – plasmacel