Class PipeExpr

Nested Relationships

Inheritance Relationships

Base Type

Class Documentation

class seq::PipeExpr : public seq::Expr

Public Functions

PipeExpr(std::vector<Expr*> stages, std::vector<bool> parallel = {})
void setParallel(unsigned which)
void resolveTypes() override

Performs type resolution on this expression and all sub-expressions/statements/etc. This is called prior to Expr::getType().

llvm::Value *codegen0(BaseFunc *base, llvm::BasicBlock *&block) override

Performs code generation for this expression.

Return

value representing expression result; possibly null if type is void

Parameters
  • base: the function containing this expression

  • block: reference to block where code should be generated; possibly modified to point to a new block where codegen should resume

types::Type *getType0() const override

Determines and returns the type of this expression.

PipeExpr *clone(Generic *ref) override

Clones this expression. ref is used internally to keep track of cloned objects, and to make sure we don’t clone certain objects twice.

Return

cloned expression

Parameters
  • ref: generic object that is being cloned

Public Static Functions

types::RecordType *getInterAlignYieldType()
types::RecordType *getInterAlignParamsType()
types::RecordType *getInterAlignSeqPairType()
llvm::Value *validateAndCodegenInterAlignParams(types::GenType::InterAlignParams &paramExprs, BaseFunc *base, llvm::BasicBlock *block)

Public Static Attributes

const unsigned SCHED_WIDTH_PREFETCH = 16
const unsigned SCHED_WIDTH_INTERALIGN = 2048
struct PipelineCodegenState

Public Functions

PipelineCodegenState(BasicBlock *block, std::queue<Expr*> stages, std::queue<bool> parallel)
PipelineCodegenState getDrainState(Value *val, types::Type *type, BasicBlock *block)

Public Members

types::Type *type
Value *val
BasicBlock *block
std::queue<Expr*> stages
std::queue<bool> parallel
bool inParallel
bool inLoop
bool nestedParallel
DrainState drain