Ignore:
Timestamp:
Apr 4, 2017, 12:09:16 PM (2 years ago)
Author:
cameron
Message:

ParabixDriver/ObjectCache? separate compilation and linking: initial check-in with wc

File:
1 edited

Legend:

Unmodified
Added
Removed
  • icGREP/icgrep-devel/icgrep/toolchain.h

    r5373 r5391  
    11/*
    2  *  Copyright (c) 2015 International Characters.
     2 *  Copyright (c) 2017 International Characters.
    33 *  This software is licensed to the public under the Open Software License 3.0.
    44 *  icgrep is a trademark of International Characters.
     
    99#include <string>
    1010#include <IR_Gen/idisa_builder.h>
     11#include <object_cache.h>
    1112
    1213namespace llvm { class ExecutionEngine; }
     
    1516namespace IDISA { class IDISA_Builder; }
    1617namespace kernel { class KernelBuilder; }
     18namespace parabix { class StreamSetBuffer; }
    1719
    1820namespace codegen {
     
    5860void generatePipeline(IDISA::IDISA_Builder * iBuilder, const std::vector<kernel::KernelBuilder *> & kernels);
    5961
     62
     63class ParabixDriver {
     64public:
     65    ParabixDriver(IDISA::IDISA_Builder * iBuilder);
     66   
     67    IDISA::IDISA_Builder * getIDISA_Builder() {return iBuilder;}
     68   
     69    void JITcompileMain ();
     70   
     71    void addKernelCall(kernel::KernelBuilder & kb, const std::vector<parabix::StreamSetBuffer *> & inputs, const std::vector<parabix::StreamSetBuffer *> & outputs);
     72   
     73    void generatePipelineIR();
     74   
     75    void linkAndFinalize();
     76   
     77    void * getPointerToMain();
     78
     79   
     80private:
     81    llvm::Module * mMainModule;
     82    IDISA::IDISA_Builder * iBuilder;
     83    std::unique_ptr<ParabixObjectCache> mCache;
     84    //std::unique_ptr<llvm::ExecutionEngine> mEngine;
     85    llvm::ExecutionEngine * mEngine;
     86    std::vector<kernel::KernelBuilder *> mKernelList;
     87};
    6088#endif
Note: See TracChangeset for help on using the changeset viewer.