Chciałbym połączyć dwie wartości __m128
z jedną __m256
.Jak połączyć dwie wartości __m128 do __m256?
coś takiego:
__m128 a = _mm_set_ps(1, 2, 3, 4);
__m128 b = _mm_set_ps(5, 6, 7, 8);
aby coś takiego:
__m256 c = { 1, 2, 3, 4, 5, 6, 7, 8 };
są jakieś intrinsics że mogę użyć, aby to zrobić?
Niektóre wersje Visual Studio (zdecydowanie w 2010 r., Być może także niektóre później) mają błąd w obsłudze _mm256_castps128_ps256, więc ten kod prawdopodobnie ulegnie awarii. Zobacz http://connect.microsoft.com/VisualStudio/feedback/details/653771/mm256-castps128-ps256-does-unaligned-read. Jeśli potrzebujesz kodu do pracy z tymi kompilatorami, będziesz musiał użyć rozwiązania dostarczonego przez user1584773, które zastąpi je wstawką. – peastman
Należy zauważyć, że powoduje to '__m256 {4, 3, 2, 1, 8, 7, 6, 5}' zamiast '__m256 {1, 2, 3, 4, 5, 6, 7, 8}'. Myślę, że OP chciał użyć '_mm_setr_ps' zamiast' _mm_set_ps'. – plasmacel