source: icGREP/icgrep-devel/icgrep/kernels/lzparabix/LZParabixBlockDecoder.h @ 6114

Last change on this file since 6114 was 6114, checked in by xwa163, 13 months ago

Init check in for new compression format (lzparabix) related kernels and pipelines, including compressor, decoder and grep

File size: 1.1 KB
Line 
1//
2// Created by wxy325 on 2018/6/18.
3//
4
5#ifndef ICGREP_LZPARABIXBLOCKDECODER_H
6#define ICGREP_LZPARABIXBLOCKDECODER_H
7
8#include "kernels/kernel.h"
9#include <map>
10#include <vector>
11#include <string>
12
13namespace llvm {
14    class Module;
15    class Function;
16    class BasicBlock;
17    class Value;
18}
19
20namespace IDISA { class IDISA_Builder; }
21
22namespace kernel {
23
24class LZParabixBlockDecoderKernel : public SegmentOrientedKernel  {
25public:
26    LZParabixBlockDecoderKernel(const std::unique_ptr<kernel::KernelBuilder> &iBuilder, std::string&& kernelName = "LZParabixBlockDecoderKernel");
27protected:
28    void generateDoSegmentMethod(const std::unique_ptr<KernelBuilder> & b) override;
29private:
30    llvm::Value *generateLoadInput(const std::unique_ptr<KernelBuilder> &iBuilder, llvm::Value *offset);
31
32    void appendOutput(const std::unique_ptr<KernelBuilder> & iBuilder, llvm::Value *blockStart, llvm::Value *blockEnd);
33
34    void generateStoreNumberOutput(const std::unique_ptr<KernelBuilder> &iBuilder, const std::string &outputBufferName, llvm::Value *offset, llvm::Value *value);
35
36};
37
38}
39
40
41
42
43#endif //ICGREP_LZPARABIXBLOCKDECODER_H
Note: See TracBrowser for help on using the repository browser.