Changeset 5917


Ignore:
Timestamp:
Mar 19, 2018, 9:10:23 AM (11 months ago)
Author:
cameron
Message:

CPU driver progress

Location:
icGREP/icgrep-devel/icgrep/toolchain
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • icGREP/icgrep-devel/icgrep/toolchain/cpudriver.cpp

    r5915 r5917  
    4040#include <llvm/ExecutionEngine/Orc/IRTransformLayer.h>
    4141#include <llvm/ExecutionEngine/Orc/LambdaResolver.h>
     42#if LLVM_VERSION_INTEGER < LLVM_VERSION_CODE(5, 0, 0)
    4243#include <llvm/ExecutionEngine/Orc/ObjectLinkingLayer.h>
     44#else
     45#include <llvm/ExecutionEngine/Orc/RTDyldObjectLinkingLayer.h>
     46#endif
    4347#include <llvm/ExecutionEngine/Orc/GlobalMappingLayer.h>
    4448#endif
     
    6973    InitializeNativeTargetAsmParser();
    7074    llvm::sys::DynamicLibrary::LoadLibraryPermanently(nullptr);
    71 
    7275    preparePassManager();
    7376   
     
    122125        }
    123126#ifdef ORCJIT
     127#if LLVM_VERSION_INTEGER < LLVM_VERSION_CODE(5, 0, 0)
    124128        mCompileLayer->setObjectCache(mCache);
     129#else
     130        mCompileLayer->getCompiler().setObjectCache(mCache);
     131#endif
    125132#else
    126133        mEngine->setObjectCache(mCache);
     
    215222        f = Function::Create(type, Function::ExternalLinkage, name, mod);
    216223#ifdef ORCJIT
    217         mCompileLayer->setObjectCache(mCache);
    218224#else
    219225        mEngine->updateGlobalMapping(f, functionPtr);
     
    286292    auto Resolver = llvm::orc::createLambdaResolver(
    287293            [&](const std::string &Name) {
    288                                                         if (auto Sym = mCompileLayer->findSymbol(Name, false)) {
     294                auto Sym = mCompileLayer->findSymbol(Name, false);
    289295#if LLVM_VERSION_INTEGER <= LLVM_VERSION_CODE(3, 9, 1)
    290                                                             return Sym.toRuntimeDyldSymbol();
    291 #else
    292                                                             return Sym;
    293 #endif
    294                                                         }
     296                if (Sym) return Sym.toRuntimeDyldSymbol();
     297                return RuntimeDyld::SymbolInfo(nullptr);
     298#else
     299                if (Sym) return Sym;
     300                return JITSymbol(nullptr);
     301#endif
     302            },
     303            [&](const std::string &Name) {
     304                auto SymAddr = RTDyldMemoryManager::getSymbolAddressInProcess(Name);
     305                if (!SymAddr) SymAddr = RTDyldMemoryManager::getSymbolAddressInProcess(iBuilder->getMangledName(Name));
    295306#if LLVM_VERSION_INTEGER <= LLVM_VERSION_CODE(3, 9, 1)
    296                                                         return RuntimeDyld::SymbolInfo(nullptr);
    297 #else
    298                                                         return JITSymbol(nullptr);
    299 #endif
    300                                                     },
    301                                                     [](const std::string &Name) {
    302                                                         if (auto SymAddr =
    303                                                             RTDyldMemoryManager::getSymbolAddressInProcess(Name)) {
    304 #if LLVM_VERSION_INTEGER <= LLVM_VERSION_CODE(3, 9, 1)
    305                                                             return RuntimeDyld::SymbolInfo(SymAddr, JITSymbolFlags::Exported);
    306 #else
    307                                                             return JITSymbol(SymAddr, JITSymbolFlags::Exported);
    308 #endif
    309                                                         }
    310 #if LLVM_VERSION_INTEGER <= LLVM_VERSION_CODE(3, 9, 1)
    311                                                         return RuntimeDyld::SymbolInfo(nullptr);
    312 #else
    313                                                         return JITSymbol(nullptr);
    314 #endif                                                       
    315                                                     });
     307                if (SymAddr) return RuntimeDyld::SymbolInfo(SymAddr, JITSymbolFlags::Exported);
     308                return RuntimeDyld::SymbolInfo(nullptr);
     309#else
     310                if (SymAddr) return JITSymbol(SymAddr, JITSymbolFlags::Exported);
     311                return JITSymbol(nullptr);
     312#endif
     313            });
    316314#endif
    317315   
     
    360358    return mEngine->getPointerToNamedFunction("Main");
    361359#else
    362     std::string MangledName;
    363     raw_string_ostream MangledNameStream(MangledName);
    364     llvm::Mangler::getNameWithPrefix(MangledNameStream, "Main", mTarget->createDataLayout());
    365     //errs() << "Mangled main: " << MangledNameStream.str() << "\n";
    366     auto MainSym = mCompileLayer->findSymbol(MangledNameStream.str(), false);
    367    
     360    auto MainSym = mCompileLayer->findSymbol(iBuilder->getMangledName("Main"), false);
    368361    assert (MainSym && "Main not found");
    369362   
  • icGREP/icgrep-devel/icgrep/toolchain/cpudriver.h

    r5915 r5917  
    1313#ifdef ORCJIT
    1414#include <llvm/ExecutionEngine/Orc/CompileUtils.h>
     15#if LLVM_VERSION_INTEGER <= LLVM_VERSION_CODE(5, 0, 0)
    1516#include <llvm/ExecutionEngine/Orc/ObjectLinkingLayer.h>
     17#else
     18#include <llvm/ExecutionEngine/Orc/RTDyldObjectLinkingLayer.h>
     19#endif
    1620#include <llvm/ExecutionEngine/Orc/IRCompileLayer.h>
    1721#include <llvm/ExecutionEngine/Orc/IRTransformLayer.h>
    18 typedef llvm::orc::IRCompileLayer<llvm::orc::ObjectLinkingLayer<>> CompileLayerT;
     22
     23#if LLVM_VERSION_INTEGER <= LLVM_VERSION_CODE(5, 0, 0)
     24typedef llvm::orc::ObjectLinkingLayer<> ObjectLayerT;
     25typedef llvm::orc::IRCompileLayer<ObjectLayerT> CompileLayerT;
     26#else
     27typedef llvm::orc::RTDyldObjectLinkingLayer ObjectLayerT;
     28typedef llvm::orc::IRCompileLayer<ObjectLayerT, llvm::orc::SimpleCompiler> CompileLayerT;
     29#endif
     30
    1931using OptimizeFnT = std::function<std::unique_ptr<llvm::Module>(std::unique_ptr<llvm::Module>)>;
    2032typedef llvm::orc::IRTransformLayer<CompileLayerT, OptimizeFnT> OptimizeLayerT;
     
    5264
    5365#ifdef ORCJIT
    54     llvm::orc::ObjectLinkingLayer<> mObjectLayer;
     66    ObjectLayerT mObjectLayer;
    5567    std::unique_ptr<CompileLayerT> mCompileLayer;
    5668   
Note: See TracChangeset for help on using the changeset viewer.