19 #ifndef TVM_SCRIPT_PRINTER_DOC_H_ 20 #define TVM_SCRIPT_PRINTER_DOC_H_ 55 static constexpr
const char*
_type_key =
"script.printer.Doc";
72 virtual ~
Doc() =
default;
124 static constexpr
const char*
_type_key =
"script.printer.ExprDoc";
166 v->Visit(
"comment", &comment);
169 static constexpr
const char*
_type_key =
"script.printer.StmtDoc";
199 v->Visit(
"stmts", &stmts);
202 static constexpr
const char*
_type_key =
"script.printer.StmtBlockDoc";
240 v->Visit(
"value", &value);
243 static constexpr
const char*
_type_key =
"script.printer.LiteralDoc";
355 v->Visit(
"name", &name);
358 static constexpr
const char*
_type_key =
"script.printer.IdDoc";
392 v->Visit(
"value", &value);
393 v->Visit(
"name", &name);
396 static constexpr
const char*
_type_key =
"script.printer.AttrAccessDoc";
436 v->Visit(
"value", &value);
437 v->Visit(
"indices", &indices);
440 static constexpr
const char*
_type_key =
"script.printer.IndexDoc";
483 v->Visit(
"callee", &callee);
484 v->Visit(
"args", &args);
485 v->Visit(
"kwargs_keys", &kwargs_keys);
486 v->Visit(
"kwargs_values", &kwargs_values);
489 static constexpr
const char*
_type_key =
"script.printer.CallDoc";
567 v->Visit(
"kind", &kind);
568 v->Visit(
"operands", &operands);
571 static constexpr
const char*
_type_key =
"script.printer.OperationDoc";
608 v->Visit(
"args", &args);
609 v->Visit(
"body", &body);
612 static constexpr
const char*
_type_key =
"script.printer.LambdaDoc";
644 v->Visit(
"elements", &elements);
647 static constexpr
const char*
_type_key =
"script.printer.TupleDoc";
682 v->Visit(
"elements", &elements);
685 static constexpr
const char*
_type_key =
"script.printer.ListDoc";
727 v->Visit(
"keys", &keys);
728 v->Visit(
"values", &values);
731 static constexpr
const char*
_type_key =
"script.printer.DictDoc";
773 v->Visit(
"start", &start);
774 v->Visit(
"stop", &stop);
775 v->Visit(
"step", &step);
778 static constexpr
const char*
_type_key =
"script.printer.SliceDoc";
819 v->Visit(
"lhs", &lhs);
820 v->Visit(
"rhs", &rhs);
821 v->Visit(
"annotation", &annotation);
824 static constexpr
const char*
_type_key =
"script.printer.AssignDoc";
861 v->Visit(
"predicate", &predicate);
862 v->Visit(
"then_branch", &then_branch);
863 v->Visit(
"else_branch", &else_branch);
866 static constexpr
const char*
_type_key =
"script.printer.IfDoc";
901 v->Visit(
"predicate", &predicate);
902 v->Visit(
"body", &body);
905 static constexpr
const char*
_type_key =
"script.printer.WhileDoc";
945 v->Visit(
"lhs", &lhs);
946 v->Visit(
"rhs", &rhs);
947 v->Visit(
"body", &body);
950 static constexpr
const char*
_type_key =
"script.printer.ForDoc";
992 v->Visit(
"lhs", &lhs);
993 v->Visit(
"rhs", &rhs);
994 v->Visit(
"body", &body);
997 static constexpr
const char*
_type_key =
"script.printer.ScopeDoc";
1038 v->Visit(
"expr", &expr);
1041 static constexpr
const char*
_type_key =
"script.printer.ExprStmtDoc";
1074 v->Visit(
"test", &test);
1075 v->Visit(
"msg", &msg);
1078 static constexpr
const char*
_type_key =
"script.printer.AssertDoc";
1110 v->Visit(
"value", &value);
1113 static constexpr
const char*
_type_key =
"script.printer.ReturnDoc";
1158 v->Visit(
"name", &name);
1159 v->Visit(
"args", &args);
1160 v->Visit(
"decorators", &decorators);
1161 v->Visit(
"return_type", &return_type);
1162 v->Visit(
"body", &body);
1165 static constexpr
const char*
_type_key =
"script.printer.FunctionDoc";
1205 v->Visit(
"name", &name);
1206 v->Visit(
"decorators", &decorators);
1207 v->Visit(
"body", &body);
1210 static constexpr
const char*
_type_key =
"script.printer.ClassDoc";
1235 #endif // TVM_SCRIPT_PRINTER_DOC_H_ void VisitAttrs(AttrVisitor *v)
Definition: doc.h:1108
Array< IdDoc > args
The arguments of this anonymous function.
Definition: doc.h:602
IdDoc(std::nullptr_t)
Definition: doc.h:374
Array< AssignDoc > args
The arguments of function.
Definition: doc.h:1148
static LiteralDoc Int(const TracedBasicValue< int > &v)
Create a LiteralDoc to represent integer.
Definition: doc.h:291
Reference type of IfDocNode.
Definition: doc.h:875
void VisitAttrs(AttrVisitor *v)
Definition: doc.h:164
Array< StmtDoc > body
The body of class.
Definition: doc.h:1201
Traced wrapper for regular (non-container) TVM objects.
Definition: traced_object.h:39
Doc that represents dictionary literal.
Definition: doc.h:713
Optional< ExprDoc > step
The step of slice.
Definition: doc.h:769
void VisitAttrs(AttrVisitor *v)
Definition: doc.h:1203
Array< ExprDoc > elements
Elements of tuple.
Definition: doc.h:640
Doc that represents assign statement.
Definition: doc.h:804
Reference type of IdDocNode.
Definition: doc.h:367
Definitions and helper macros for IR/AST nodes.
The container doc that holds a list of StmtDoc.
Definition: doc.h:192
Reference type of StmtDocNode.
Definition: doc.h:178
const T & Get() const
Access the wrapped value.
Definition: traced_object.h:442
Array< ExprDoc > elements
Elements of list.
Definition: doc.h:678
Array< ExprDoc > operands
Operands of this expression.
Definition: doc.h:563
static LiteralDoc Boolean(const TracedBasicValue< bool > &v)
Create a LiteralDoc to represent boolean.
Definition: doc.h:306
void VisitAttrs(AttrVisitor *v)
Definition: doc.h:238
Array< ExprDoc > decorators
Decorators of function.
Definition: doc.h:1150
static constexpr const char * _type_key
Definition: doc.h:55
virtual ~DocNode()=default
ObjectPtr< ArrayNode > make_object()
Definition: array.h:844
Array< StmtDoc > body
The body of function.
Definition: doc.h:1154
runtime implementation for LibTorch/TorchScript.
Definition: analyzer.h:36
Doc that represents literal value.
Definition: doc.h:225
Reference type of ForDocNode.
Definition: doc.h:959
Reference type of DocNode.
Definition: doc.h:67
ObjectRef value
the internal representation of the literal value.
Definition: doc.h:236
void VisitAttrs(AttrVisitor *v)
Definition: doc.h:680
The base class of expression doc.
Definition: doc.h:83
Doc that represents for statement.
Definition: doc.h:934
The base class of statement doc.
Definition: doc.h:152
Reference type of WhileDocNode.
Definition: doc.h:914
Doc that represents an expression as statement.
Definition: doc.h:1031
Doc that represents special scopes.
Definition: doc.h:981
Reference type of ScopeDocNode.
Definition: doc.h:1006
void VisitAttrs(AttrVisitor *v)
Definition: doc.h:817
void VisitAttrs(AttrVisitor *v)
Definition: doc.h:353
Reference type of AttrAccessDocNode.
Definition: doc.h:405
Reference type of ClassDocNode.
Definition: doc.h:1219
void VisitAttrs(AttrVisitor *v)
Definition: doc.h:565
void VisitAttrs(AttrVisitor *v)
Definition: doc.h:1036
void VisitAttrs(AttrVisitor *v)
Definition: doc.h:725
const RefT & Get() const
Access the wrapped object.
Definition: traced_object.h:115
Optional< ExprDoc > rhs
The right hand side of the assignment.
Definition: doc.h:813
base class of all object containers.
Definition: object.h:167
Reference type of OperationDocNode.
Definition: doc.h:580
Array< StmtDoc > body
The body of the scope doc.
Definition: doc.h:988
static LiteralDoc Float(double v)
Create a LiteralDoc to represent float.
Definition: doc.h:314
String name
The attribute to be accessed.
Definition: doc.h:388
Array< Doc > indices
The indices to access.
Definition: doc.h:432
static LiteralDoc None()
Create a LiteralDoc to represent None/null/empty value.
Definition: doc.h:261
void VisitAttrs(AttrVisitor *v)
Definition: doc.h:390
Managed reference class to FloatImmNode.
Definition: expr.h:564
void VisitAttrs(AttrVisitor *v)
Definition: doc.h:122
Doc that represents function definition.
Definition: doc.h:1137
Visitor class to get the attributes of an AST/IR node. The content is going to be called for each fie...
Definition: reflection.h:52
AttrFrame Attr(ObjectRef node, String attr_key, PrimExpr value)
Create an attribute.
Reference type of LiteralDocNode.
Definition: doc.h:252
Array< StmtDoc > else_branch
The else branch of the if-then-else statement.
Definition: doc.h:857
Array< ExprDoc > kwargs_values
The values of keyword arguments.
Definition: doc.h:479
void VisitAttrs(AttrVisitor *v)
Definition: doc.h:53
The base class of all Doc.
Definition: doc.h:42
Floor division.
Definition: analyzer.h:59
Doc that represents assert statement.
Definition: doc.h:1065
Reference type of DictDocNode.
Definition: doc.h:740
static LiteralDoc Str(const String &v)
Create a LiteralDoc to represent string.
Definition: doc.h:330
Doc that represents operation.
Definition: doc.h:520
static DataType Float(int bits, int lanes=1)
Construct an float type.
Definition: data_type.h:168
Array, container representing a contiguous sequence of ObjectRefs.
Definition: array.h:289
void VisitAttrs(AttrVisitor *v)
Definition: doc.h:990
Managed reference class to IntImmNode.
Definition: expr.h:518
Reference type of CallDocNode.
Definition: doc.h:498
void VisitAttrs(AttrVisitor *v)
Definition: doc.h:606
static LiteralDoc None(ObjectPath object_path)
Create a LiteralDoc to represent None/null/empty value.
Definition: doc.h:267
Optional< ExprDoc > start
The start of slice.
Definition: doc.h:765
Reference to string objects.
Definition: string.h:97
Array< ObjectPath > source_paths
The list of object paths of the source IR node.
Definition: doc.h:51
void VisitAttrs(AttrVisitor *v)
Definition: doc.h:1156
void VisitAttrs(AttrVisitor *v)
Definition: doc.h:899
TVM_DECLARE_BASE_OBJECT_INFO(DocNode, Object)
const ObjectPath & GetPath() const
Get the path of the wrapped object.
Definition: traced_object.h:157
DictDoc()
Create an empty dictionary.
Definition: doc.h:745
Array< ExprDoc > args
The positional arguments.
Definition: doc.h:470
Doc that represents anonymous function.
Definition: doc.h:599
void VisitAttrs(AttrVisitor *v)
Definition: doc.h:481
void VisitAttrs(AttrVisitor *v)
Definition: doc.h:771
Doc that represent if-then-else statement.
Definition: doc.h:850
Array< StmtDoc > body
The body of the while statement.
Definition: doc.h:897
void VisitAttrs(AttrVisitor *v)
Definition: doc.h:1072
void VisitAttrs(AttrVisitor *v)
Definition: doc.h:859
Reference type of IndexDocNode.
Definition: doc.h:449
Reference type of ExprStmtDocNode.
Definition: doc.h:1050
Kind kind
The kind of operation (operator)
Definition: doc.h:561
Reference type of SliceDocNode.
Definition: doc.h:787
Base class of all object reference.
Definition: object.h:511
void VisitAttrs(AttrVisitor *v)
Definition: doc.h:197
Reference type of ListDocNode.
Definition: doc.h:694
Doc that represents function call.
Definition: doc.h:465
Kind
Definition: doc.h:522
Reference type of AssertDocNode.
Definition: doc.h:1087
static LiteralDoc Int(int v)
Create a LiteralDoc to represent integer.
Definition: doc.h:275
#define TVM_DECLARE_FINAL_OBJECT_INFO(TypeName, ParentType)
helper macro to declare type information in a final class.
Definition: object.h:671
String name
The name of the identifier.
Definition: doc.h:351
Doc that represents identifier.
Definition: doc.h:348
void VisitAttrs(AttrVisitor *v)
Definition: doc.h:642
static DataType Bool(int lanes=1)
Construct a bool type.
Definition: data_type.h:181
Definition: object_path.h:122
ListDoc()
Create an empty ListDoc.
Definition: doc.h:699
static LiteralDoc Boolean(bool v)
Create a LiteralDoc to represent boolean.
Definition: doc.h:298
static LiteralDoc Int(const TracedObject< IntImm > &v)
Create a LiteralDoc to represent integer.
Definition: doc.h:283
Array< StmtDoc > stmts
The list of statements.
Definition: doc.h:195
static LiteralDoc Str(const TracedObject< String > &v)
Create a LiteralDoc to represent string.
Definition: doc.h:338
const ObjectPath & GetPath() const
Get the path of the wrapped value.
Definition: traced_object.h:447
Optional container that to represent to a Nullable variant of T.
Definition: optional.h:51
Doc that represents class definition.
Definition: doc.h:1194
Reference type of ReturnDocNode.
Definition: doc.h:1122
Doc that represents index access on another expression.
Definition: doc.h:421
Array< ExprDoc > keys
keys of dictionary
Definition: doc.h:716
Reference type of ExprDocNode.
Definition: doc.h:133
Array< ExprDoc > values
Values of dictionary.
Definition: doc.h:723
Reference type of StmtBlockDocNode.
Definition: doc.h:210
Array< StmtDoc > then_branch
The then branch of the if-then-else statement.
Definition: doc.h:855
Array< StmtDoc > body
The body of the for statement.
Definition: doc.h:941
Traced wrapper for basic values (i.e. non-TVM objects)
Definition: traced_object.h:47
Doc that represents while statement.
Definition: doc.h:892
Array< String > kwargs_keys
The keys of keyword arguments.
Definition: doc.h:472
constexpr runtime::NullOptType NullOpt
Definition: optional.h:160
Doc that represents return statement.
Definition: doc.h:1103
Reference type of FunctionDocNode.
Definition: doc.h:1174
Array< ExprDoc > decorators
Decorators of class.
Definition: doc.h:1199
TupleDoc()
Create an empty TupleDoc.
Definition: doc.h:661
Optional< ExprDoc > annotation
The type annotation of this assignment.
Definition: doc.h:815
void VisitAttrs(AttrVisitor *v)
Definition: doc.h:434
#define TVM_DEFINE_NOTNULLABLE_OBJECT_REF_METHODS(TypeName, ParentType, ObjectName)
Definition: object.h:728
Doc that represents slice in Index expression.
Definition: doc.h:762
Reference type of AssignDocNode.
Definition: doc.h:833
Reference type of LambdaDocNode.
Definition: doc.h:621
static LiteralDoc Float(const TracedObject< FloatImm > &v)
Create a LiteralDoc to represent float.
Definition: doc.h:322
Doc that represents list literal.
Definition: doc.h:675
void VisitAttrs(AttrVisitor *v)
Definition: doc.h:943
Doc that represents attribute access on another expression.
Definition: doc.h:383
Doc that represents tuple literal.
Definition: doc.h:637
static DataType Int(int bits, int lanes=1)
Construct an int type.
Definition: data_type.h:154
Reference type of TupleDocNode.
Definition: doc.h:656
Optional< ExprDoc > stop
The exclusive end of slice.
Definition: doc.h:767