source: icGREP/icgrep-devel/icgrep/kernels/lz4/lz4_numbers_to_bitstream_kernel.h @ 5885

Last change on this file since 5885 was 5885, checked in by xwa163, 16 months ago

Implement lz4_numbers_to_bitstream_kernel in new kernel infrastructure, fix bug of extract and deposit processes of lz4_ext_dep in large data.

File size: 1.1 KB
Line 
1
2#ifndef ICGREP_LZ4_NUMBERS_TO_BITSTREAM_KERNEL2_H
3#define ICGREP_LZ4_NUMBERS_TO_BITSTREAM_KERNEL2_H
4#include "kernels/kernel.h"
5
6namespace llvm {
7    class Module;
8    class Function;
9    class BasicBlock;
10    class Value;
11}
12
13namespace IDISA { class IDISA_Builder; }
14
15namespace kernel {
16class LZ4NumbersToBitstreamKernel final : public MultiBlockKernel {
17    public:
18        LZ4NumbersToBitstreamKernel(std::string kernelName, const std::unique_ptr<kernel::KernelBuilder> &iBuilder);
19    protected:
20        void generateMultiBlockLogic(const std::unique_ptr<KernelBuilder> &iBuilder, llvm::Value * const numOfStrides) override;
21    private:
22        inline size_t getAnyBufferSize(const std::unique_ptr<KernelBuilder> &iBuilder, std::string bufferName);
23        llvm::Value* setIntVectorBitOne(const std::unique_ptr<KernelBuilder> &iBuilder, llvm::Value* intVec, llvm::Value* pos, llvm::Value* isSet);
24        inline llvm::Value* intVecGT(const std::unique_ptr<KernelBuilder> &iBuilder, llvm::Value* intVec1, llvm::Value* intVec2);
25    };
26}
27
28
29#endif //ICGREP_LZ4_NUMBERS_TO_BITSTREAM_KERNEL2_H
Note: See TracBrowser for help on using the repository browser.