Ignore:
Timestamp:
Mar 21, 2018, 1:22:57 AM (14 months ago)
Author:
xwa163
Message:

Fix some GEP instructions in lz4_index_builder and lz4_block_decoder_new

File:
1 edited

Legend:

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

    r5921 r5923  
    88#include "kernels/kernel.h"
    99#include <string>
     10#include <map>
     11#include <vector>
    1012
    1113namespace llvm {
     
    2830
    2931    private:
    30         llvm::Value * generateLoadCircularInput(const std::unique_ptr<KernelBuilder> &iBuilder, std::string inputBufferName,
    31                                                          llvm::Value *offset, llvm::Type *pointerType);
    32         void generateProcessCompressedBlock(const std::unique_ptr<KernelBuilder> &iBuilder, llvm::Value* blockStart, llvm::Value* blockEnd);
     32        llvm::Value *
     33        generateLoadInt64NumberInput(const std::unique_ptr<KernelBuilder> &iBuilder, std::string inputBufferName,
     34                                     llvm::Value *globalOffset);
     35
     36        void generateProcessCompressedBlock(const std::unique_ptr<KernelBuilder> &iBuilder, llvm::Value *blockStart,
     37                                            llvm::Value *blockEnd);
    3338
    3439        llvm::Value *generateLoadSourceInputByte(const std::unique_ptr<KernelBuilder> &iBuilder, llvm::Value *offset);
    3540
    36         llvm::Value *advanceUntilNextZero(const std::unique_ptr<KernelBuilder> &iBuilder, std::string inputName, llvm::Value* startPos, llvm::Value* maxPos = nullptr);
    37         llvm::Value *advanceUntilNextOne(const std::unique_ptr<KernelBuilder> &iBuilder, std::string inputName, llvm::Value* startPos, llvm::Value* maxPos = nullptr);
    38         llvm::Value *advanceUntilNextValue(const std::unique_ptr<KernelBuilder> &iBuilder, std::string inputName, llvm::Value* startPos, bool isNextZero, llvm::Value* maxPos = nullptr);
    39         void increaseScalarField(const std::unique_ptr<KernelBuilder> &iBuilder, const std::string &fieldName, llvm::Value *value);
    40         llvm::Value* processLiteral(const std::unique_ptr<KernelBuilder> &iBuilder, llvm::Value* token, llvm::Value* tokenPos, llvm::Value* blockEnd);
    41         llvm::Value* processMatch(const std::unique_ptr<KernelBuilder> &iBuilder, llvm::Value* offsetPos, llvm::Value* token, llvm::Value* blockEnd);
     41        llvm::Value *advanceUntilNextZero(const std::unique_ptr<KernelBuilder> &iBuilder, std::string inputName,
     42                                          llvm::Value *startPos, llvm::Value *maxPos = nullptr);
     43
     44        llvm::Value *advanceUntilNextOne(const std::unique_ptr<KernelBuilder> &iBuilder, std::string inputName,
     45                                         llvm::Value *startPos, llvm::Value *maxPos = nullptr);
     46
     47        llvm::Value *advanceUntilNextValue(const std::unique_ptr<KernelBuilder> &iBuilder, std::string inputName,
     48                                           llvm::Value *startPos, bool isNextZero, llvm::Value *maxPos = nullptr);
     49
     50        void increaseScalarField(const std::unique_ptr<KernelBuilder> &iBuilder, const std::string &fieldName,
     51                                 llvm::Value *value);
     52
     53        llvm::Value *
     54        processLiteral(const std::unique_ptr<KernelBuilder> &iBuilder, llvm::Value *token, llvm::Value *tokenPos,
     55                       llvm::Value *blockEnd);
     56
     57        llvm::Value *
     58        processMatch(const std::unique_ptr<KernelBuilder> &iBuilder, llvm::Value *offsetPos, llvm::Value *token,
     59                     llvm::Value *blockEnd);
    4260
    4361
    4462        size_t getOutputBufferSize(const std::unique_ptr<KernelBuilder> &iBuilder, std::string bufferName);
     63
    4564        llvm::BasicBlock *markCircularOutputBitstream(const std::unique_ptr<KernelBuilder> &iBuilder,
    46                                                                              const std::string &bitstreamName,
    47                                                                              llvm::Value *start, llvm::Value *end, bool isOne,
    48                                                                              bool setProduced = true);
    49         void generateStoreCircularOutput(const std::unique_ptr<KernelBuilder> &iBuilder, std::string outputBufferName, llvm::Type* pointerType, llvm::Value* value);
     65                                                      const std::string &bitstreamName,
     66                                                      llvm::Value *start, llvm::Value *end, bool isOne,
     67                                                      bool setProduced = true);
    5068
    51         llvm::Value* previousE1Produced ;
     69        void generateStoreNumberOutput(const std::unique_ptr<KernelBuilder> &iBuilder,
     70                                       const std::string &outputBufferName, llvm::Type *pointerType,
     71                                       llvm::Value *value);
     72
     73        void resetPreviousProducedMap(const std::unique_ptr<KernelBuilder> &iBuilder, std::vector<std::string> outputList);
     74        std::map<std::string, llvm::Value*> previousProducedMap;
    5275    };
    5376}
Note: See TracChangeset for help on using the changeset viewer.