Tôi muốn kết hợp hai giá trị __m128
cho một __m256
.Làm cách nào để kết hợp hai giá trị __m128 thành __m256?
Something như thế này:
__m128 a = _mm_set_ps(1, 2, 3, 4);
__m128 b = _mm_set_ps(5, 6, 7, 8);
một cái gì đó như:
__m256 c = { 1, 2, 3, 4, 5, 6, 7, 8 };
được có bất kỳ intrinsics mà tôi có thể sử dụng để làm điều này?
Một số phiên bản của Visual Studio (chắc chắn năm 2010, có thể là một số phiên bản sau này) có lỗi trong việc xử lý _mm256_castps128_ps256, vì vậy, mã này có thể gặp sự cố. Xem http://connect.microsoft.com/VisualStudio/feedback/details/653771/mm256-castps128-ps256-does-unaligned-read. Nếu bạn cần mã của bạn để làm việc trên những trình biên dịch, bạn sẽ cần phải sử dụng các giải pháp được cung cấp bởi user1584773 thay thế nó bằng một chèn. – peastman
Lưu ý rằng kết quả này trong '__m256 {4, 3, 2, 1, 8, 7, 6, 5}' thay vì '__m256 {1, 2, 3, 4, 5, 6, 7, 8}'. Tôi nghĩ rằng OP muốn sử dụng '_mm_setr_ps' thay vì' _mm_set_ps'. – plasmacel