52 return this->external_prefix_;
55 virtual const std::string
language()
const = 0;
60 const std::string& name,
const types::IType& type,
bool use_initializer =
false,
bool use_alignment =
false
77 virtual std::string
comment(
const std::string& text) = 0;
79 virtual std::string
assignment(
const std::string& lhs,
const std::string& rhs) = 0;
85 virtual std::string
copy_bytes(
const std::string& dst,
const std::string& src,
const std::string& size) = 0;
104 virtual std::string
size_of(
const std::string& expr) = 0;
Array type representation for c-style arrays.
virtual std::string copy_bytes(const std::string &dst, const std::string &src, const std::string &size)=0
virtual ~LanguageExtension()=default
sdfg::Function & function_
Definition language_extension.h:41
virtual std::string local_declaration(const std::string &name, const types::IType &type, const std::string &init="")=0
Declares a local, initialized if init is non-empty. Empty if the language needs no declaration.
virtual std::string type_cast(const std::string &name, const types::IType &type)=0
std::string external_prefix_
Definition language_extension.h:42
virtual std::string break_statement()=0
virtual std::string address_of(const std::string &expr)=0
virtual std::string continue_statement()=0
virtual std::string declaration(const std::string &name, const types::IType &type, bool use_initializer=false, bool use_alignment=false)=0
virtual std::string expression(const symbolic::Expression expr)=0
LanguageExtension(sdfg::Function &function, const std::string &external_prefix)
Definition language_extension.h:45
virtual std::string tasklet(const data_flow::Tasklet &tasklet)=0
virtual const std::string language() const =0
virtual std::string size_of(const std::string &expr)=0
virtual std::string dereference(const std::string &expr)=0
virtual std::string assignment(const std::string &lhs, const std::string &rhs)=0
virtual Body begin_while(PrettyPrinter &stream)=0
An unconditional loop, left only through break or return.
virtual Body begin_branch(PrettyPrinter &stream, size_t index, size_t count, const symbolic::Condition &condition)=0
Branch index of count branches of a conditional, guarded by condition.
virtual std::string subset(const types::IType &type, const data_flow::Subset &subset)=0
virtual std::string primitive_type(const types::PrimitiveType prim_type)=0
virtual std::string null_literal()=0
virtual Body begin_for(PrettyPrinter &stream, const structured_control_flow::StructuredLoop &loop, const LoopHints &hints)=0
virtual void deallocation(PrettyPrinter &stream, const std::string &container, const types::IType &type)=0
Emits the release of a container the function owns, if its storage requires one.
virtual std::string zero(const types::PrimitiveType prim_type)=0
virtual Body begin_scope(PrettyPrinter &stream)=0
virtual std::string access_node(const data_flow::AccessNode &node)=0
virtual std::string comment(const std::string &text)=0
const std::string & external_prefix() const
Definition language_extension.h:51
virtual std::string reinterpret_cast_expr(const std::string &expr, const std::string &type)=0
virtual std::string return_statement(const std::string &value)=0
virtual void end(PrettyPrinter &stream, const Body &body)=0
Node representing access to a data container in the dataflow graph.
Definition access_node.h:84
Simple computational operation in the dataflow graph.
Definition tasklet.h:348
Base class for structured loop constructs.
Definition structured_loop.h:244
Abstract base interface for all types in the sdfglib type system.
Definition type.h:625
SymEngine::RCP< const SymEngine::Basic > Expression
Reference-counted pointer to a symbolic expression (SymEngine Basic).
Definition symbolic.h:83
SymEngine::RCP< const SymEngine::Boolean > Condition
Reference-counted pointer to a boolean condition expression.
Definition symbolic.h:86
Library node definitions for calling functions beyond simple instructions.
Edges in the dataflow graph representing data movement.
Definition argument_registry.h:10
symbolic::MultiExpression Subset
Type alias for a subset specification (array of symbolic expressions).
Definition memlet.h:103
Definition language_extension.h:18
PrimitiveType
Enumeration of all primitive data types supported by sdfglib.
Definition type.h:35
Pointer type representation.
Scalar (primitive) type representation.
An open region of emitted code, closed by LanguageExtension::end.
Definition language_extension.h:31
Kind kind
Definition language_extension.h:35
size_t content_mark
Definition language_extension.h:36
Kind
Block: the body of a control-flow construct. Scope: a lexical scope that only isolates local names.
Definition language_extension.h:33
@ Scope
Definition language_extension.h:33
@ Block
Definition language_extension.h:33
Loop properties a language may be able to express (e.g. clang loop pragmas in C).
Definition language_extension.h:25
bool no_vectorize
Definition language_extension.h:27
bool unroll
Definition language_extension.h:26
Structure and record type representations.
Symbolic system for integer-based symbol analysis.
Simple computational operations in the dataflow graph.
Core type system definitions for sdfglib.