source: icGREP/icgrep-devel/icgrep/kernels/lz4/lz4_extract_e_m0.h @ 5905

Last change on this file since 5905 was 5864, checked in by xwa163, 19 months ago

Add LZ4D extract deposit related kernel, target and test cases

File size: 1.2 KB
Line 
1//
2// Created by wxy325 on 2017/7/7.
3//
4
5#ifndef ICGREP_LZ4_EXTRACT_E1_M0_H
6#define ICGREP_LZ4_EXTRACT_E1_M0_H
7
8#include <kernels/sequential_kernel.h>
9#include "../kernel.h"
10
11namespace llvm {
12    class Module;
13    class Function;
14    class BasicBlock;
15    class Value;
16}
17
18namespace IDISA { class IDISA_Builder; }
19
20namespace kernel {
21    class LZ4ExtractEM0Kernel : public SequentialKernel {
22    public:
23        LZ4ExtractEM0Kernel(const std::unique_ptr<kernel::KernelBuilder> & iBuilder, const std::map<std::string, size_t>& inputIndexMap);
24
25    protected:
26        virtual void generateDoSequentialSegmentMethod(const std::unique_ptr<KernelBuilder> &iBuilder);
27    private:
28        inline void generateIncreaseBlockDataIndex(const std::unique_ptr<kernel::KernelBuilder> & iBuilder);
29        inline void generateRecordUncompressedBlock(const std::unique_ptr<kernel::KernelBuilder> & iBuilder);
30
31        llvm::BasicBlock* generateHandleCompressedBlock(const std::unique_ptr<kernel::KernelBuilder> & iBuilder);
32
33        inline llvm::Value* loadCurrentBlockData(const std::unique_ptr<kernel::KernelBuilder> & iBuilder, const std::string& name);
34    };
35}
36
37
38#endif //ICGREP_LZ4_EXTRACT_E1_M0_H
Note: See TracBrowser for help on using the repository browser.