मैं दो __m128
मानों को एक __m256
पर जोड़ना चाहता हूं।दो __m128 मानों को __m256 में कैसे जोड़ें?
कुछ इस तरह:
__m256 c = { 1, 2, 3, 4, 5, 6, 7, 8 };
किसी भी intrinsics है कि मैं यह करने के लिए उपयोग कर सकते हैं देखते हैं:
__m128 a = _mm_set_ps(1, 2, 3, 4);
__m128 b = _mm_set_ps(5, 6, 7, 8);
की तरह कुछ के लिए?
विजुअल स्टूडियो के कुछ संस्करण (निश्चित रूप से 2010, संभवतः कुछ बाद वाले लोगों) में _mm256_castps128_ps256 के हैंडलिंग में एक बग है, इसलिए यह कोड उन पर क्रैश होने की संभावना है। Http://connect.microsoft.com/VisualStudio/feedback/details/653771/mm256-castps128-ps256-does-unaligned-read देखें। यदि आपको उन कंपाइलरों पर काम करने के लिए अपने कोड की आवश्यकता है, तो आपको उपयोगकर्ता 1584773 द्वारा प्रदान किए गए समाधान का उपयोग करना होगा जो इसे एक सम्मिलित के साथ बदल देता है। – peastman
ध्यान दें कि इसका परिणाम '__m256 {4, 3, 2, 1, 8, 7, 6, 5}' '__m256 {1, 2, 3, 4, 5, 6, 7, 8}' के बजाय होता है। मुझे लगता है कि ओपी '_mm_set_ps' के बजाय' _mm_setr_ps' का उपयोग करना चाहता था। – plasmacel