Ignore:
Timestamp:
Jan 29, 2017, 4:40:32 PM (2 years ago)
Author:
nmedfort
Message:

More changes towards simplifying the KernelBuilder?

File:
1 edited

Legend:

Unmodified
Added
Removed
  • icGREP/icgrep-devel/icgrep/kernels/kernel.h

    r5286 r5287  
    8686    void setTerminationSignal(llvm::Value * self) const;
    8787
     88    llvm::Value * createDoSegmentCall(const std::vector<llvm::Value *> & args) const;
     89
     90    llvm::Value * createGetAccumulatorCall(llvm::Value * self, const std::string & accumName) const;
     91
    8892protected:
    8993
     
    196200};
    197201
     202class SegmentOrientedKernel : public KernelBuilder {
     203protected:
     204
     205    SegmentOrientedKernel(IDISA::IDISA_Builder * builder,
     206                          std::string && kernelName,
     207                          std::vector<Binding> && stream_inputs,
     208                          std::vector<Binding> && stream_outputs,
     209                          std::vector<Binding> && scalar_parameters,
     210                          std::vector<Binding> && scalar_outputs,
     211                          std::vector<Binding> && internal_scalars);
     212
     213    virtual ~SegmentOrientedKernel() { }
     214
     215};
     216
    198217class BlockOrientedKernel : public KernelBuilder {
    199218protected:
     
    202221    // doBlock calls.
    203222    virtual void generateDoBlockMethod(llvm::Function * function, llvm::Value * self, llvm::Value * blockNo) const = 0;
     223
     224    virtual void addAdditionalKernelDeclarations(llvm::Module * module, llvm::PointerType * selfType) const;
    204225
    205226    // Each kernel builder subtypre must also specify the logic for processing the
     
    234255};
    235256
    236 class SegmentOrientedKernel : public KernelBuilder {
    237 protected:
    238 
    239     SegmentOrientedKernel(IDISA::IDISA_Builder * builder,
    240                           std::string && kernelName,
    241                           std::vector<Binding> && stream_inputs,
    242                           std::vector<Binding> && stream_outputs,
    243                           std::vector<Binding> && scalar_parameters,
    244                           std::vector<Binding> && scalar_outputs,
    245                           std::vector<Binding> && internal_scalars);
    246 
    247     virtual ~SegmentOrientedKernel() { }
    248 };
    249 
    250 
    251257
    252258}
Note: See TracChangeset for help on using the changeset viewer.