मैं एमएस विजुअल स्टूडियो में एसएसई 2 निर्देश सेट के साथ काम कर रहा हूं। मैं 16-बिट डेटा के साथ कुछ गणना करने के लिए इसका उपयोग कर रहा हूं।एक 128-बिट निरंतर कुशलता से परिभाषित करने के लिए कैसे?
मान लीजिए मेरे पास एसएसई रजिस्टर में 8 मान लोड हैं। मैं उन सभी को एक स्थिर (उदा। 42
) जोड़ना चाहता हूं। यहां बताया गया है कि मैं अपने कोड को कैसे देखना चाहूंगा।
__m128i values; // 8 values, 16 bits each
const __m128i my_const_42 = ???; // What should i write here?
values = _mm_add_epi16(values, my_const_2); // Add 42 to the 8 values
अब, मैं निरंतर परिभाषित कैसे कर सकता हूं? निम्नलिखित दो तरीके काम करते हैं, लेकिन एक अक्षम है, और दूसरा बदसूरत है।
my_const_42 = _mm_set_epi16(42, 42, 42, 42, 42, 42, 42, 42)
- संकलक "बनाने" के 8 आदेशों उत्पन्न निरंतरmy_const_42 = {42, 0, 42, 0, 42, 0, 42, 0, 42, 0, 42, 0, 42, 0, 42, 0}
- समझने के लिए क्या चल रहा है मुश्किल; बदलकर42
बदलना-42
छोटा नहीं है
128-बिट निरंतर अधिक आसानी से व्यक्त करने का कोई तरीका है?
शायद दूसरी विधि के लिए मैक्रो का उपयोग करना ठीक है – valdo