Ignore:
Timestamp:
Mar 7, 2016, 3:37:30 PM (3 years ago)
Author:
nmedfort
Message:

Initial modifications to Pablo Compiler and Kernel Builder to support circular buffers for Lookahead.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • icGREP/icgrep-devel/icgrep/IDISA/idisa_builder.h

    r4957 r4959  
    4343    Constant * simd_lomask(unsigned fw);
    4444       
     45    LoadInst * CreateBlockAlignedLoad(Value * const ptr);
     46    LoadInst * CreateBlockAlignedLoad(Value * const ptr, Value * const index);
     47    LoadInst * CreateBlockAlignedLoad(Value * const ptr, std::initializer_list<Value *> indicies);
     48    void CreateBlockAlignedStore(Value * const value, Value * const ptr);
     49    void CreateBlockAlignedStore(Value * const value, Value * const ptr, Value * const index);
     50    void CreateBlockAlignedStore(Value * const value, Value * const ptr, std::initializer_list<Value *> indicies);
     51
    4552    virtual Value * simd_add(unsigned fw, Value * a, Value * b);
    4653    virtual Value * simd_sub(unsigned fw, Value * a, Value * b);
     
    98105};
    99106
     107inline LoadInst * IDISA_Builder::CreateBlockAlignedLoad(Value * const ptr) {
     108    return CreateAlignedLoad(ptr, mBitBlockWidth / 8);
     109}
     110
     111inline LoadInst * IDISA_Builder::CreateBlockAlignedLoad(Value * const ptr, Value * const index) {
     112    return CreateBlockAlignedLoad(CreateGEP(ptr, index));
     113}
     114
     115inline LoadInst * IDISA_Builder::CreateBlockAlignedLoad(Value * const ptr, std::initializer_list<Value *> indicies) {
     116    return CreateBlockAlignedLoad(CreateGEP(ptr, indicies));
     117}
     118
     119inline void IDISA_Builder::CreateBlockAlignedStore(Value * const value, Value * const ptr) {
     120    CreateAlignedStore(value, ptr, mBitBlockWidth / 8);
     121}
     122
     123inline void IDISA_Builder::CreateBlockAlignedStore(Value * const value, Value * const ptr, Value * const index) {
     124    CreateBlockAlignedStore(value, CreateGEP(ptr, index));
     125}
     126
     127inline void IDISA_Builder::CreateBlockAlignedStore(Value * const value, Value * const ptr, std::initializer_list<Value *> indicies) {
     128    CreateBlockAlignedStore(value, CreateGEP(ptr, indicies));
     129}
     130
    100131}
    101132#endif // IDISA_BUILDER_H
Note: See TracChangeset for help on using the changeset viewer.