source: icGREP/icgrep-devel/icgrep/kernels/lz4/untwist_kernel.h @ 6145

Last change on this file since 6145 was 6145, checked in by xwa163, 3 months ago
  1. LZ4 Grep: complete utf8 character classes for multiplexing pipeline
  2. Implement multiple streams version of S2P and P2S
File size: 1.0 KB
Line 
1
2
3#ifndef ICGREP_UNTWIST_KERNEL_H
4#define ICGREP_UNTWIST_KERNEL_H
5
6#include <kernels/kernel.h>
7
8namespace IDISA { class IDISA_Builder; }
9namespace llvm { class Value; }
10
11namespace kernel {
12
13    class UntwistByPEXTKernel final : public BlockOrientedKernel{
14    public:
15        UntwistByPEXTKernel(const std::unique_ptr<kernel::KernelBuilder> & b, unsigned numberOfOutputStream, unsigned twistWidth);
16    protected:
17        const size_t mNumberOfOutputStream;
18        const size_t mTwistWidth;
19        void generateDoBlockMethod(const std::unique_ptr<KernelBuilder> & b) override;
20    };
21
22    class UntwistMultipleByPEXTKernel final : public BlockOrientedKernel{
23    public:
24        UntwistMultipleByPEXTKernel(const std::unique_ptr<kernel::KernelBuilder> & b, std::vector<unsigned> numberOfOutputStreams, unsigned twistWidth);
25    protected:
26        const std::vector<unsigned> mNumberOfOutputStreams;
27        const size_t mTwistWidth;
28        void generateDoBlockMethod(const std::unique_ptr<KernelBuilder> & b) override;
29    };
30}
31
32
33#endif //ICGREP_UNTWIST_KERNEL_H
Note: See TracBrowser for help on using the repository browser.