Ignore:
Timestamp:
Dec 16, 2016, 4:16:28 PM (3 years ago)
Author:
nmedfort
Message:

Rewrite of the CarryManager? to support non-carry-collapsing loops.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • icGREP/icgrep-devel/icgrep/pablo/pablo_compiler.h

    r5217 r5227  
    1212#include <vector>
    1313#include <unordered_map>
    14 #include <pablo/carry_manager.h>
    1514#include <pablo/pablo_kernel.h>
    1615#include <llvm/ADT/Twine.h>
     
    3635class PabloAST;
    3736class PabloBlock;
    38 class PabloFunction;
    3937class String;
    4038class Var;
     
    4341class If;
    4442class While;
     43class CarryManager;
     44class Extract;
    4545
    4646class PabloCompiler {
     47    friend class CarryManager;
     48
    4749    using IntSet = boost::container::flat_set<unsigned>;
    4850    using MarkerMap = std::unordered_map<const PabloAST *, Value *>;
     51
    4952public:
    5053    PabloCompiler(PabloKernel * kernel);
    51     Type * initializeKernelData();
     54    ~PabloCompiler();
     55    void initializeKernelData();
    5256    void compile(Value * const self, Function * doBlockFunction);
    5357
    5458private:
    55 
    56     void verifyParameter(const Var * var, const Value * param);
    5759
    5860    void Examine();
     
    6365    void compileIf(const If * ifStmt);
    6466    void compileWhile(const While * whileStmt);
     67
    6568    Value * compileExpression(const PabloAST * expr, const bool ensureLoaded = true) const;
    66     void GenerateKernel(PabloFunction * const function);
    6769
    68     MarkerMap                           mMarkerMap;
    69     IntSet                              mInputStreamOffset;
    70     IDISA::IDISA_Builder *              iBuilder;
    71     Type* const                         mBitBlockType;
     70private:
    7271
    73     std::unique_ptr<CarryManager>       mCarryManager;
     72    IDISA::IDISA_Builder *  iBuilder;
     73    CarryManager *          mCarryManager;
     74    PabloKernel *           mKernel;
     75    Value *                 mSelf;
     76    Function *              mFunction;
     77    MarkerMap               mMarkerMap;
     78    IntSet                  mInputStreamOffset;
    7479
    75     PabloKernel * const                 mKernel;
    76     Value *                             mSelf;
    77 
    78     unsigned                            mWhileDepth;
    79     unsigned                            mIfDepth;
    80 
    81     llvm::Function *                    mFunction;
    82 
    83     unsigned                            mMaxWhileDepth;
    8480};
    8581
Note: See TracChangeset for help on using the changeset viewer.