मैं मौजूदा स्पार्क बैकएंड और this tutorial के आधार पर आरआईएससी मशीन (रिस्को नामित) के लिए एक बहुत ही बुनियादी नया एलएलवीएम बैकएंड विकसित कर रहा हूं। बैकएंड पंजीकृत करने के लिए, मैंने निम्नलिखित का उपयोग किया है।नया एलएलवीएम बैकएंड कैसे पंजीकृत करें?
- RiscoTargetMachine.cpp पर
:
extern "C" void LLVMInitializeRiscoTarget() { // Register the target. RegisterTargetMachine<RiscoSimulatorTargetMachine> X(TheRiscoTarget); RegisterAsmInfo<RiscoMCAsmInfo> Y(TheRiscoTarget); }
Risco.td में:
def : Processor<"simulator", NoItineraries, [FeatureA]>; def Risco : Target { // Pull in Instruction Info: let InstructionSet = RiscoInstrInfo; }
TargetInfo/RiscoTargetInfo.cpp में:
Target llvm::TheRiscoTarget; extern "C" void LLVMInitializeRiscoTargetInfo() { RegisterTarget<> X(TheRiscoTarget, "risco", "Risco"); }
पर शीर्ष स्तर LLVM कॉन्फ़िगर स्क्रिप्ट:
# Added Risco to the TARGETS_TO_BUILD variable at line 4965 (from svn trunk): all) TARGETS_TO_BUILD="X86 Sparc PowerPC Alpha ARM Mips CellSPU PIC16 XCore MSP430 SystemZ Blackfin CBackend CppBackend MBlaze PTX Risco" ;;
निर्माण के बाद, llc -version
नया लक्ष्य नहीं दिखाती है। यहां तक कि llc -march=risco test.ll
कहता है कि यह एक अवैध लक्ष्य है। मैं क्या खो रहा हूँ?
पुनश्च: वर्तमान में, मैं LLVM/lib/लक्ष्य के अंदर एक फ़ोल्डर के रूप में नए लक्ष्य शामिल कर रहा हूँ। मैं इसे कैसे बदल सकता हूं ताकि मैं लक्ष्य को अलग से बना सकूं, और इसे llc -load
के साथ गतिशील लोड कर सकता हूं?
दुर्भाग्य से, LLVM के साथ मेरा अनुभव रहा है कि जब तक इस परियोजना के Doxygen प्रलेखन अप टू डेट है, इसके सभी ट्यूटोरियल नहीं हैं: और आप अपने लक्ष्य जारी करके LLC उपकरण को जोड़ा गया देख सकते हैं। यहां तक कि संकलन ट्यूटोरियल के माध्यम से चलने की कोशिश भी निराशाजनक है। – Zeke