2011-05-16 7 views
6

मुझे लगता है कि मुझे अपने प्रश्न का उत्तर मिला। वीएफपी के लिए एक "एफएमएक्स" निर्देश है जो एनईओएन/वीएफपी रजिस्टरों पर स्केलर गणना करने वाली चाल कर सकता है।गैर वेक्टर कार्यों के साथ एनईओएन असेंबली मिश्रण


मैं बहुत नियोन या एआरएम प्रोग्रामिंग करने के लिए नया हूँ ...

मैं नियोन रजिस्टरों में एक ऊपरी त्रिकोणीय मैट्रिक्स लोड और एकीकृत (जमा) के लिए एकल परिशुद्धता का उपयोग कर एक सदिश के बाहरी उत्पाद चाहते हैं । बुनियादी विचार ए + = एक्स '* एक्स है जहां ए ऊपरी त्रिभुज मैट्रिक्स है। कुछ ऑपरेशन क्वाड या डबल रजिस्टरों पर एनईओएन निर्देश "vmla.f32" का उपयोग कर संचालन को सदिश करके किया जा सकता है। हालांकि, कभी-कभी मुझे केवल एक ही परिशुद्धता रजिस्टर 1 पर काम करने की आवश्यकता होती है, यानी 2 या 4 एकल परिशुद्धता रजिस्टरों पर नहीं। नीचे दिए गए उदाहरण (काम नहीं करता है) में, मैं लाइन

// A[8-14] += A[1]*x[1-7] 
"mla s16, s16, d0[1]\n\t" 

मैं एक ही सटीक कार्रवाई करने के लिए नियोन रजिस्टरों का उपयोग करना चाहते में दिलचस्पी रखता हूँ।

कोड स्निपेट:

__asm__ volatile (
    //load x into registers 
    "vldmia %0, {d0-d3}\n\t" 
    // load A into registers 
    "vldmia %1, {d4-d12}\n\t" 
    "vldmia %1, {d13-d21}\n\t" 
    // A[0-7] += x[0]*x[0-7] 
    "vmla.f32 q2, q2, d0[0]\n\t" 
    "vmla.f32 q3, q3, d0[0]\n\t" 
    // A[8-14] += A[1]*x[1-7] 
    "mla s16, s16, d0[1]\n\t" 
    // output 
    : 
    // input 
    : "r"(A), "r"(x) 
    // registers 
    : "q0", "q1", "q2", "q3", "q4", "q5", "q6", "q7", "q8", "q9", "q10" 
    ); 
+0

आप वास्तव में नियोन से उस तरह VFP निर्देश पर स्विच करना चाहते करने के लिए जा नहीं कर रहे हैं पोस्ट कर सकते हैं। कॉरटेक्स-ए 8 और कॉर्टेक्स-ए 9 दोनों ने आईफोन की हालिया पीढ़ियों में उपयोग किया है (जो आपने पहले पोस्ट किया है) इस तरह के परिचालनों के बीच एक लंबी हिचकी का सामना कर रहा है। आप अपनी गणना के अंतिम भाग के लिए वेक्टर ऑप करने से भी बेहतर हो सकते हैं। – ohmantics

उत्तर

1

तो मुझे लगता है आप के बारे में एक अदिश साथ एक सदिश गुणा पूछ रहे हैं?

मैं नीयन रजिस्टर के सभी लेनों में स्केलर लोड करने के लिए "vdup" का उपयोग करता हूं और फिर गुणा करता हूं।

आप आप मैं कोशिश करते हैं और अधिक मदद कर सकता है ऐसा करने के लिए कोशिश कर रहे हैं क्या की एक सादे सी संस्करण ...

संबंधित मुद्दे