का उपयोग कर 128-बिट रोटेशन मैं नियॉन इंट्रिनिक्स का उपयोग करके अपना कोड अनुकूलित करने की कोशिश कर रहा हूं। मेरे पास 128-बिट सरणी (8 प्रत्येक uint16_t
) पर 24-बिट रोटेशन है।एआरएम नियॉन इंट्रिनिक्स
यहाँ मेरी ग कोड है:
uint16_t rotated[8];
uint16_t temp[8];
uint16_t j;
for(j = 0; j < 8; j++)
{
//Rotation <<< 24 over 128 bits (x << shift) | (x >> (16 - shift)
rotated[j] = ((temp[(j+1) % 8] << 8) & 0xffff) | ((temp[(j+2) % 8] >> 8) & 0x00ff);
}
मैं जीसीसी प्रलेखन Neon Intrinsics के बारे में जांच की है और यह वेक्टर रोटेशन के लिए निर्देश नहीं है। इसके अलावा, मैंने vshlq_n_u16(temp, 8)
का उपयोग करके ऐसा करने का प्रयास किया है, लेकिन uint16_t
शब्द के बाहर स्थानांतरित सभी बिट्स खो गए हैं।
नियॉन इंट्रिनिक्स का उपयोग करके इसे कैसे प्राप्त किया जाए? वैसे जीसीसी नियॉन इंट्रिनिक्स के बारे में एक बेहतर दस्तावेज है?
'armcc' में' __ror' आंतरिक – ouah
'आरओआर' एआरएम निर्देश के साथ इनलाइन असेंबली का उपयोग करने के बारे में क्या है? – ouah
मैं असेंबली से बचना पसंद करता हूं। जिस तरह से मैं जीसीसी का उपयोग कर रहा हूं तो कोई armcc नहीं! – Kami