FreeTensor
Loading...
Searching...
No Matches
Classes | Namespaces | Typedefs | Functions
expr.h File Reference
#include <string>
#include <vector>
#include <ast.h>
#include <type/data_type.h>
Include dependency graph for expr.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

class  freetensor::AnyExprNode
 
class  freetensor::VarNode
 
class  freetensor::LoadNode
 
class  freetensor::ConstNode
 
class  freetensor::IntConstNode
 
class  freetensor::FloatConstNode
 
class  freetensor::BoolConstNode
 
class  freetensor::BinaryExprNode
 
class  freetensor::CommutativeBinaryExprNode
 
class  freetensor::NonCommutativeBinaryExprNode
 
class  freetensor::AddNode
 
class  freetensor::SubNode
 
class  freetensor::MulNode
 
class  freetensor::RealDivNode
 
class  freetensor::FloorDivNode
 
class  freetensor::CeilDivNode
 
class  freetensor::RoundTowards0DivNode
 
class  freetensor::ModNode
 
class  freetensor::RemainderNode
 
class  freetensor::MinNode
 
class  freetensor::MaxNode
 
class  freetensor::LTNode
 
class  freetensor::LENode
 
class  freetensor::GTNode
 
class  freetensor::GENode
 
class  freetensor::EQNode
 
class  freetensor::NENode
 
class  freetensor::LAndNode
 
class  freetensor::LOrNode
 
class  freetensor::UnaryExprNode
 
class  freetensor::LNotNode
 
class  freetensor::SqrtNode
 
class  freetensor::ExpNode
 
class  freetensor::LnNode
 
class  freetensor::SquareNode
 
class  freetensor::SigmoidNode
 
class  freetensor::SinNode
 
class  freetensor::CosNode
 
class  freetensor::TanNode
 
class  freetensor::TanhNode
 
class  freetensor::AbsNode
 
class  freetensor::FloorNode
 
class  freetensor::CeilNode
 
class  freetensor::UnboundNode
 
class  freetensor::IfExprNode
 
class  freetensor::CastNode
 
class  freetensor::IntrinsicNode
 
class  freetensor::LoadAtVersionNode
 

Namespaces

namespace  freetensor
 

Typedefs

typedef Ref< AnyExprNode > freetensor::AnyExpr
 
typedef Ref< VarNode > freetensor::Var
 
typedef Ref< LoadNode > freetensor::Load
 
typedef Ref< ConstNode > freetensor::Const
 
typedef Ref< IntConstNode > freetensor::IntConst
 
typedef Ref< FloatConstNode > freetensor::FloatConst
 
typedef Ref< BoolConstNode > freetensor::BoolConst
 
typedef Ref< BinaryExprNode > freetensor::BinaryExpr
 
typedef Ref< CommutativeBinaryExprNode > freetensor::CommutativeBinaryExpr
 
typedef Ref< NonCommutativeBinaryExprNode > freetensor::NonCommutativeBinaryExpr
 
typedef Ref< AddNode > freetensor::Add
 
typedef Ref< SubNode > freetensor::Sub
 
typedef Ref< MulNode > freetensor::Mul
 
typedef Ref< RealDivNode > freetensor::RealDiv
 
typedef Ref< FloorDivNode > freetensor::FloorDiv
 
typedef Ref< CeilDivNode > freetensor::CeilDiv
 
typedef Ref< RoundTowards0DivNode > freetensor::RoundTowards0Div
 
typedef Ref< ModNode > freetensor::Mod
 
typedef Ref< RemainderNode > freetensor::Remainder
 
typedef Ref< MinNode > freetensor::Min
 
typedef Ref< MaxNode > freetensor::Max
 
typedef Ref< LTNode > freetensor::LT
 
typedef Ref< LENode > freetensor::LE
 
typedef Ref< GTNode > freetensor::GT
 
typedef Ref< GENode > freetensor::GE
 
typedef Ref< EQNode > freetensor::EQ
 
typedef Ref< NENode > freetensor::NE
 
typedef Ref< LAndNode > freetensor::LAnd
 
typedef Ref< LOrNode > freetensor::LOr
 
typedef Ref< UnaryExprNode > freetensor::UnaryExpr
 
typedef Ref< LNotNode > freetensor::LNot
 
typedef Ref< SqrtNode > freetensor::Sqrt
 
typedef Ref< ExpNode > freetensor::Exp
 
typedef Ref< LnNode > freetensor::Ln
 
typedef Ref< SquareNode > freetensor::Square
 
typedef Ref< SigmoidNode > freetensor::Sigmoid
 
typedef Ref< SinNode > freetensor::Sin
 
typedef Ref< CosNode > freetensor::Cos
 
typedef Ref< TanNode > freetensor::Tan
 
typedef Ref< TanhNode > freetensor::Tanh
 
typedef Ref< AbsNode > freetensor::Abs
 
typedef Ref< FloorNode > freetensor::Floor
 
typedef Ref< CeilNode > freetensor::Ceil
 
typedef Ref< UnboundNode > freetensor::Unbound
 
typedef Ref< IfExprNode > freetensor::IfExpr
 
typedef Ref< CastNode > freetensor::Cast
 
typedef Ref< IntrinsicNode > freetensor::Intrinsic
 
typedef Ref< LoadAtVersionNode > freetensor::LoadAtVersion
 

Functions

Expr freetensor::makeAnyExpr (std::source_location loc=std::source_location::current())
 
Expr freetensor::makeVar (const std::string &name, std::source_location loc=std::source_location::current())
 
template<class Tindices >
Expr freetensor::makeLoad (const std::string &var, Tindices &&indices, DataType loadType, std::source_location loc=std::source_location::current())
 
Expr freetensor::makeLoad (const std::string &var, const std::vector< Expr > &indices, DataType loadType, std::source_location loc=std::source_location::current())
 
Expr freetensor::makeIntConst (int64_t val, std::source_location loc=std::source_location::current())
 
Expr freetensor::makeFloatConst (double val, std::source_location loc=std::source_location::current())
 
Expr freetensor::makeBoolConst (bool val, std::source_location loc=std::source_location::current())
 
template<class T , class U >
Expr freetensor::makeAdd (T &&lhs, U &&rhs, std::source_location loc=std::source_location::current())
 
template<class T , class U >
Expr freetensor::makeSub (T &&lhs, U &&rhs, std::source_location loc=std::source_location::current())
 
template<class T , class U >
Expr freetensor::makeMul (T &&lhs, U &&rhs, std::source_location loc=std::source_location::current())
 
template<class T , class U >
Expr freetensor::makeRealDiv (T &&lhs, U &&rhs, std::source_location loc=std::source_location::current())
 
template<class T , class U >
Expr freetensor::makeFloorDiv (T &&lhs, U &&rhs, std::source_location loc=std::source_location::current())
 
template<class T , class U >
Expr freetensor::makeCeilDiv (T &&lhs, U &&rhs, std::source_location loc=std::source_location::current())
 
template<class T , class U >
Expr freetensor::makeRoundTowards0Div (T &&lhs, U &&rhs, std::source_location loc=std::source_location::current())
 
template<class T , class U >
Expr freetensor::makeMod (T &&lhs, U &&rhs, std::source_location loc=std::source_location::current())
 
template<class T , class U >
Expr freetensor::makeRemainder (T &&lhs, U &&rhs, std::source_location loc=std::source_location::current())
 
template<class T , class U >
Expr freetensor::makeMin (T &&lhs, U &&rhs, std::source_location loc=std::source_location::current())
 
template<class T , class U >
Expr freetensor::makeMax (T &&lhs, U &&rhs, std::source_location loc=std::source_location::current())
 
template<class T , class U >
Expr freetensor::makeLT (T &&lhs, U &&rhs, std::source_location loc=std::source_location::current())
 
template<class T , class U >
Expr freetensor::makeLE (T &&lhs, U &&rhs, std::source_location loc=std::source_location::current())
 
template<class T , class U >
Expr freetensor::makeGT (T &&lhs, U &&rhs, std::source_location loc=std::source_location::current())
 
template<class T , class U >
Expr freetensor::makeGE (T &&lhs, U &&rhs, std::source_location loc=std::source_location::current())
 
template<class T , class U >
Expr freetensor::makeEQ (T &&lhs, U &&rhs, std::source_location loc=std::source_location::current())
 
template<class T , class U >
Expr freetensor::makeNE (T &&lhs, U &&rhs, std::source_location loc=std::source_location::current())
 
template<class T , class U >
Expr freetensor::makeLAnd (T &&lhs, U &&rhs, std::source_location loc=std::source_location::current())
 
template<class T , class U >
Expr freetensor::makeLOr (T &&lhs, U &&rhs, std::source_location loc=std::source_location::current())
 
template<class T >
Expr freetensor::makeLNot (T &&expr, std::source_location loc=std::source_location::current())
 
template<class T >
Expr freetensor::makeSqrt (T &&expr, std::source_location loc=std::source_location::current())
 
template<class T >
Expr freetensor::makeExp (T &&expr, std::source_location loc=std::source_location::current())
 
template<class T >
Expr freetensor::makeLn (T &&expr, std::source_location loc=std::source_location::current())
 
template<class T >
Expr freetensor::makeSquare (T &&expr, std::source_location loc=std::source_location::current())
 
template<class T >
Expr freetensor::makeSigmoid (T &&expr, std::source_location loc=std::source_location::current())
 
template<class T >
Expr freetensor::makeSin (T &&expr, std::source_location loc=std::source_location::current())
 
template<class T >
Expr freetensor::makeCos (T &&expr, std::source_location loc=std::source_location::current())
 
template<class T >
Expr freetensor::makeTan (T &&expr, std::source_location loc=std::source_location::current())
 
template<class T >
Expr freetensor::makeTanh (T &&expr, std::source_location loc=std::source_location::current())
 
template<class T >
Expr freetensor::makeAbs (T &&expr, std::source_location loc=std::source_location::current())
 
template<class T >
Expr freetensor::makeFloor (T &&expr, std::source_location loc=std::source_location::current())
 
template<class T >
Expr freetensor::makeCeil (T &&expr, std::source_location loc=std::source_location::current())
 
template<class T >
Expr freetensor::makeUnbound (T &&expr, std::source_location loc=std::source_location::current())
 
template<class T , class U , class V >
Expr freetensor::makeIfExpr (T &&cond, U &&thenCase, V &&elseCase, std::source_location loc=std::source_location::current())
 
template<class T >
Expr freetensor::makeCast (T &&expr, DataType destType, std::source_location loc=std::source_location::current())
 
template<class T >
Expr freetensor::makeIntrinsic (const std::string &format, T &&params, DataType retType, bool hasSideEffect, std::source_location loc=std::source_location::current())
 
Expr freetensor::makeIntrinsic (const std::string &format, std::initializer_list< Expr > params, DataType retType, bool hasSideEffect, std::source_location loc=std::source_location::current())
 
template<class Tindices >
Expr freetensor::makeLoadAtVersion (const std::string &tapeName, Tindices &&indices, const DataType loadType, std::source_location loc=std::source_location::current())
 
Expr freetensor::makeLoadAtVersion (const std::string &tapeName, const std::vector< Expr > &indices, const DataType loadType, std::source_location loc=std::source_location::current())
 
template<class T , class U >
Expr freetensor::makeBinary (ASTNodeType nodeType, T &&lhs, U &&rhs, std::source_location loc=std::source_location::current())
 
template<class T >
Expr freetensor::makeUnary (ASTNodeType nodeType, T &&expr, std::source_location loc=std::source_location::current())