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

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

Fix lz4 related GEP instructions and TODO

File size: 1.2 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        inline llvm::Value* loadInt64NumberInput(const std::unique_ptr<KernelBuilder> &iBuilder, std::string bufferName, llvm::Value* offset);
26    };
27}
28
29
30#endif //ICGREP_LZ4_NUMBERS_TO_BITSTREAM_KERNEL2_H
Note: See TracBrowser for help on using the repository browser.