Ignore:
Timestamp:
Aug 29, 2016, 1:53:08 PM (3 years ago)
Author:
lindanl
Message:

Add pipeline parallel strategy to the framework.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • icGREP/icgrep-devel/icgrep/kernels/streamset.h

    r5133 r5135  
    4747    virtual llvm::Value * getStreamSetBlockPointer(llvm::Value * bufferBasePtr, llvm::Value * blockNo) = 0;
    4848   
    49    
     49    virtual llvm::Value * getProducerPosPtr(Value * ptr);
     50
     51    virtual void setProducerPos(Value * ptr, Value * pos);
     52
     53    virtual llvm::Value * getComsumerPosPtr(Value * ptr);
     54
     55    virtual void setConsumerPos(Value * ptr, Value * pos);
     56
     57    virtual llvm::Value * hasEndOfInputPtr(Value * ptr);
     58
     59    virtual void setEndOfInput(Value * ptr);
     60
     61    virtual llvm::PointerType * getStreamSetStructPointerType();
     62
     63    virtual llvm::Value * getStreamSetStructPtr();
    5064   
    5165protected:
     
    5973    int mAddrSpace;
    6074    llvm::Value * mStreamSetBufferPtr;
     75    llvm::Value * mStreamSetStructPtr;
     76    llvm::Type * mStreamSetStructType;
    6177
    6278};   
     
    6884   
    6985    SingleBlockBuffer(IDISA::IDISA_Builder * b, StreamSetType ss_type) :
    70     StreamSetBuffer(BufferKind::BlockBuffer, b, ss_type) {}
     86    StreamSetBuffer(BufferKind::BlockBuffer, b, ss_type) {
     87        mStreamSetStructType = StructType::get(getGlobalContext(),
     88                                               std::vector<Type *>({iBuilder->getInt64Ty(),
     89                                                                    iBuilder->getInt64Ty(),
     90                                                                    iBuilder->getInt8Ty(),
     91                                                                    mStreamSetType.getStreamSetBlockType(iBuilder)}));
     92
     93    }
    7194   
    7295    size_t getBufferSize() override;
     
    83106            mBufferBlocks = 0;
    84107            mAddrSpace = AddressSpace;
     108            mStreamSetStructType = StructType::get(getGlobalContext(),
     109                                                   std::vector<Type *>({iBuilder->getInt64Ty(),
     110                                                                        iBuilder->getInt64Ty(),
     111                                                                        iBuilder->getInt8Ty(),
     112                                                                        getStreamBufferPointerType()}));
    85113        }
    86114    llvm::PointerType * getStreamBufferPointerType() override;
     
    107135                throw std::runtime_error("CircularStreamSetBuffer: number of blocks must be a power of 2!");
    108136            }
     137            mStreamSetStructType = StructType::get(getGlobalContext(),
     138                                                   std::vector<Type *>({iBuilder->getInt64Ty(),
     139                                                                        iBuilder->getInt64Ty(),
     140                                                                        iBuilder->getInt8Ty(),
     141                                                                        getStreamBufferPointerType()}));
     142 
    109143        }
    110144
Note: See TracChangeset for help on using the changeset viewer.