FreeTensor
Loading...
Searching...
No Matches
Classes | Namespaces | Macros | Typedefs | Enumerations | Functions
ast.h File Reference
#include <atomic>
#include <functional>
#include <iostream>
#include <optional>
#include <source_location>
#include <string>
#include <id.h>
#include <metadata.h>
#include <ref.h>
#include <serialize/to_string.h>
#include <sub_tree.h>
#include <type/data_type.h>
Include dependency graph for ast.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

class  freetensor::ASTNode
 
class  freetensor::ExprNode
 
class  freetensor::StmtOrExprID
 
class  freetensor::StmtNode
 
struct  std::hash< freetensor::StmtOrExprID >
 

Namespaces

namespace  freetensor
 
namespace  std
 STL namespace.
 

Macros

#define DEFINE_NODE_ACCESS(name)   DEFINE_AST_PART_ACCESS(name##Node)
 
#define DEFINE_NODE_TRAIT(name)
 

Typedefs

typedef Ref< ASTNode > freetensor::AST
 
typedef Ref< StmtNode > freetensor::Stmt
 
typedef Ref< ExprNode > freetensor::Expr
 

Enumerations

enum class  freetensor::ASTNodeType : int {
  freetensor::Any , freetensor::AnyExpr , freetensor::Func , freetensor::Store ,
  freetensor::ReduceTo , freetensor::Load , freetensor::Alloc , freetensor::Free ,
  freetensor::StmtSeq , freetensor::VarDef , freetensor::For , freetensor::If ,
  freetensor::Assert , freetensor::Assume , freetensor::MatMul , freetensor::Eval ,
  freetensor::Var , freetensor::IntConst , freetensor::FloatConst , freetensor::BoolConst ,
  freetensor::Add , freetensor::Sub , freetensor::Mul , freetensor::RealDiv ,
  freetensor::FloorDiv , freetensor::CeilDiv , freetensor::RoundTowards0Div , freetensor::Mod ,
  freetensor::Remainder , freetensor::Min , freetensor::Max , freetensor::LT ,
  freetensor::LE , freetensor::GT , freetensor::GE , freetensor::EQ ,
  freetensor::NE , freetensor::LAnd , freetensor::LOr , freetensor::LNot ,
  freetensor::Sqrt , freetensor::Exp , freetensor::Ln , freetensor::Square ,
  freetensor::Sigmoid , freetensor::Sin , freetensor::Cos , freetensor::Tan ,
  freetensor::Tanh , freetensor::Abs , freetensor::Floor , freetensor::Ceil ,
  freetensor::Unbound , freetensor::IfExpr , freetensor::Cast , freetensor::Intrinsic ,
  freetensor::MarkVersion , freetensor::LoadAtVersion
}
 

Functions

std::ostream & freetensor::operator<< (std::ostream &os, ASTNodeType type)
 
Expr freetensor::deepCopy (const Expr &op)
 
Stmt freetensor::deepCopy (const Stmt &op)
 
AST freetensor::lcaAST (const AST &lhs, const AST &rhs)
 
Expr freetensor::lcaExpr (const Expr &lhs, const Expr &rhs)
 
Stmt freetensor::lcaStmt (const Stmt &lhs, const Stmt &rhs)
 
template<typename... Srcs>
requires (std::convertible_to<Srcs, Stmt> && ...)
auto freetensor::makeMetadata (const std::string &op, Srcs &&...sourceStmts)
 

Macro Definition Documentation

◆ DEFINE_NODE_ACCESS

#define DEFINE_NODE_ACCESS (   name)    DEFINE_AST_PART_ACCESS(name##Node)

◆ DEFINE_NODE_TRAIT

#define DEFINE_NODE_TRAIT (   name)
Value:
public: \
virtual ASTNodeType nodeType() const override { return ASTNodeType::name; }
#define DEFINE_NODE_ACCESS(name)
Definition: ast.h:104