source: icGREP/icgrep-devel/icgrep/kernels/streams_merge.h @ 6184

Last change on this file since 6184 was 6184, checked in by nmedfort, 8 months ago

Initial version of PipelineKernel? + revised StreamSet? model.

File size: 1.6 KB
Line 
1/*
2 *  Copyright (c) 2017 International Characters.
3 *  This software is licensed to the public under the Open Software License 3.0.
4 */
5#ifndef STREAMSMERGE_H
6#define STREAMSMERGE_H
7
8#include "kernel.h"
9#include <vector>
10
11namespace IDISA { class IDISA_Builder; }
12
13namespace kernel {
14
15class StreamsMerge : public BlockOrientedKernel {
16public:   
17    StreamsMerge(const std::unique_ptr<kernel::KernelBuilder> & iBuilder, const std::vector<StreamSet *> & inputs, StreamSet * output);
18protected:   
19    void generateDoBlockMethod(const std::unique_ptr<kernel::KernelBuilder> & iBuilder) override;
20};
21
22class StreamsCombineKernel : public BlockOrientedKernel {
23public:
24    StreamsCombineKernel(const std::unique_ptr<kernel::KernelBuilder> & iBuilder, std::vector<unsigned> streamsNumOfSets);
25protected:
26    void generateDoBlockMethod(const std::unique_ptr<kernel::KernelBuilder> & iBuilder) override;
27private:
28    const std::vector<unsigned> mStreamsNumOfSets;
29};
30
31class StreamsSplitKernel : public BlockOrientedKernel {
32public:
33    StreamsSplitKernel(const std::unique_ptr<kernel::KernelBuilder> & iBuilder, std::vector<unsigned> streamsNumOfSets);
34protected:
35    void generateDoBlockMethod(const std::unique_ptr<kernel::KernelBuilder> & iBuilder) override;
36private:
37    const std::vector<unsigned> mStreamsNumOfSets;
38};
39
40class StreamsIntersect : public BlockOrientedKernel {
41public:
42    StreamsIntersect(const std::unique_ptr<kernel::KernelBuilder> & iBuilder, const std::vector<StreamSet *> & inputs, StreamSet * output);
43protected:
44    void generateDoBlockMethod(const std::unique_ptr<kernel::KernelBuilder> & iBuilder) override;
45};
46
47}
48   
49#endif
50
Note: See TracBrowser for help on using the repository browser.