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

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

Encode BitStream? directly in LZParabix compressed file

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.