86/SIMD विधानसभा में, मैं एक ग्राफिक छवि मैं बदलने की आवश्यकता के चार 32 बिट पिक्सल के साथ एक XMM रजिस्टर आबादी है। हालांकि, पिक्सल 10 बिट पैक आरजीबी प्रारूप में हैं, इसलिए वे इस रूप में 32 बिट में मौजूद है:किसी अन्य के द्वारा एक XMM रजिस्टर गुणा करने की आवश्यकता है, लेकिन थोड़ा नकाबपोश मूल्य के साथ
[ red ][ green ][ blue ][]
RRRRRRRRRRGGGGGGGGGGBBBBBBBBBB00
पिछले दो बिट्स गद्दी बिट्स कर रहे हैं और अप्रयुक्त हैं।
मैं एक और मूल्य से इन पिक्सल गुणा करने की आवश्यकता है, लेकिन मूल्य, यह केवल कहते हैं कि प्रभावित करता है इसलिए नकाबपोश किए जाने की आवश्यकता लाल पिक्सेल। यह मान निरंतर है, इसलिए इसे हार्ड-कोड किया जा सकता है। मान लें कि मान 0.1234 है। मैं इसे उचित मास्किंग के साथ एक और एक्सएमएम रजिस्टर में कैसे रखूंगा ताकि यह प्रत्येक 32 बिट सेगमेंट के लाल हिस्से को प्रभावित कर सके?
रेखांकन इलस्ट्रेटेड, मैं कुछ इस तरह करना चाहते हैं:
XMM0 (first 32 bit segment):
[ 0.1234 ][ 1.0 ][ 1.0 ][]
*
XMM1 (first 32 bit segment):
RRRRRRRRRRGGGGGGGGGGBBBBBBBBBB00
परिणाम XMM0 और XMM1 के उत्पाद जा रहा है
। बेशक, इस 32 बिट सेगमेंट को पूरे एक्सएमएम रजिस्टर में डुप्लिकेट किया जाएगा, मैंने अभी पहले 32 बिट्स निर्दिष्ट किए हैं ताकि आपको विचार मिल सके।
घसीटना, अच्छा नहीं है। हालांकि मैं बाकी के बारे में सहमत हूं, एक शिफ्ट-और-गुणा-शिफ्ट-या (और) चीज करना शायद सबसे अच्छा तरीका है (यदि कोई अच्छा तरीका है)। – Damon
@ डैमन: मेरा मतलब था कि सभी आर, जी और बी बिट्स (स्थानांतरित, अन्य बिट्स से घिरे हुए) को 16- या 32-बिट संरेखण में प्राप्त करने के लिए पहले पास के रूप में 'पीएसएचयूएफबी' का मतलब था, फिर मास्किंग और स्थानांतरण का उपयोग करना । आप जो करने जा रहे हैं उसके आधार पर आप 'पीएसएचयूएफबी' के रूप में वर्णन कर सकते हैं, 'पांडा' को असंबंधित बिट्स को मास्क करने के लिए, और फिर सीधे 'सीवीटीपीआईपीएस'। शिफ्ट के कारण, कुछ मूल्यों को स्थानांतरित किया जाएगा (उदाहरण के लिए लाल हमेशा नीचे हरे रंग के 6 बिट होते हैं, मास्क किए जाते हैं, इसलिए यह 64.0 * आर) है लेकिन आप गुणा में रूपांतरण को सेंक कर सकते हैं (यानी '0.1234/64.0') ** या ** इसे फिर से पैकिंग के लिए इस तरह से स्केल कर दें। –
आह मैं देखता हूं।यद्यपि यह संभवत: ऐसा कुछ नहीं है जो मैं करता हूं क्योंकि यह एसएसएसई 3 पर निर्भरता बनाता है, जो कि अच्छी तरह से समर्थित नहीं है, कुछ ऐसा करने के लिए जो एक साधारण शिफ्ट शायद ही करता है (अगर मुझे सही समझा जाता है, तो ओपी केवल एक चैनल चाहता है, इसलिए यह आर के मामले में 22 द्वारा शिफ्ट, छोटा होना चाहिए)। दूसरी तरफ, यदि कोई तीनों चैनल चाहता है, तो 'पीएसएचआईएफबी' जाकर एक बड़ा फायदा हो सकता है। – Damon