2016-10-10 3 views
8

मैंने बहुत रुचि के साथ this LWN article पढ़ा है। कार्यकारी सारांश: जीसीसी 6.x फ़ंक्शन मल्टी-वर्जनिंग नामक कुछ का समर्थन करता है जो एक ही फ़ंक्शन के कई संस्करण बनाता है, जो विभिन्न निर्देश सेट के लिए अनुकूलित है। मान लीजिए कि आपके पास AVX2 समर्थन वाला एक मशीन है और बिना किसी के। फ़ंक्शन foo() दोनों संस्करणों में मौजूद दोनों के साथ समान बाइनरी चलाने के लिए संभव है, जिनमें से एक AVX2 निर्देशों का उपयोग करता है। AVX2 निर्देशों के साथ फ़ंक्शन, हालांकि, केवल तभी कॉल किया जाता है जब सीपीयू इसका समर्थन करता है।क्या क्लैंग जीसीसी 6.x के फ़ंक्शन मल्टी-वर्जनिंग (target_clones) के समान कुछ भी प्रदान करता है?

मेरा प्रश्न है: क्या क्लैंग कुछ समान समर्थन करता है? यह दुनिया में सबसे उन्नत सुविधा की तरह प्रतीत नहीं होता है।

+1

कुछ होना चाहिए, मैंने एक्सकोड इंस्ट्रूमेंट्स प्रोफाइलर कॉल में देखा है जैसे _platform_memmove $ वैरिएंट $ हैसवेल जो संकेत देता है कि एक विकल्प होना चाहिए। दस्तावेज़ीकरण हालांकि पूरी तरह से चुप है; target_clones काम नहीं करता है, साथ ही अलग-अलग लक्ष्य विशेषताओं के साथ चिह्नित अलग-अलग फ़ंक्शंस काम नहीं करता है –

उत्तर

0

वे said कि यह लगभग तीन साल पहले विकास में है। लेकिन जाहिर है, यह अभी भी विकास में है। उन्होंने इसके बाद कभी इसका उल्लेख नहीं किया (जहां तक ​​मुझे पता है) और दस्तावेज़ीकरण इसके बारे में कुछ भी नहीं कहता है।

आप कुछ मैन्युअल प्रयासों के साथ ऐसा कर सकते हैं, हालांकि, ifunc और target गुणों का उपयोग करके।

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