25 #ifndef TVM_TIR_EXPR_H_ 26 #define TVM_TIR_EXPR_H_ 43 #include <unordered_map> 59 v->Visit(
"dtype", &
dtype);
60 v->Visit(
"value", &value);
61 v->Visit(
"span", &
span);
70 static constexpr
const char*
_type_key =
"tir.StringImm";
95 v->Visit(
"dtype", &
dtype);
96 v->Visit(
"value", &value);
97 v->Visit(
"span", &
span);
128 template <
typename T>
137 v->Visit(
"dtype", &(this->
dtype));
140 v->Visit(
"span", &
span);
250 static constexpr
const char*
_type_key =
"tir.FloorDiv";
267 static constexpr
const char*
_type_key =
"tir.FloorMod";
319 template <
typename T>
328 v->Visit(
"dtype", &(this->
dtype));
331 v->Visit(
"span", &
span);
458 v->Visit(
"dtype", &(this->
dtype));
461 v->Visit(
"span", &
span);
498 v->Visit(
"dtype", &
dtype);
501 v->Visit(
"span", &
span);
536 v->Visit(
"dtype", &
dtype);
538 v->Visit(
"span", &
span);
582 v->Visit(
"dtype", &
dtype);
583 v->Visit(
"condition", &condition);
584 v->Visit(
"true_value", &true_value);
585 v->Visit(
"false_value", &false_value);
586 v->Visit(
"span", &
span);
596 hash_reduce(condition);
597 hash_reduce(true_value);
598 hash_reduce(false_value);
635 v->Visit(
"dtype", &(this->
dtype));
636 v->Visit(
"buffer", &buffer);
637 v->Visit(
"indices", &indices);
638 v->Visit(
"span", &
span);
649 hash_reduce(indices);
652 static constexpr
const char*
_type_key =
"tir.BufferLoad";
665 void LegalizeDType();
667 friend class CustomDatatypesLowerer;
668 friend class VectorTypeRewriter;
669 friend class Vectorizer;
700 v->Visit(
"dtype", &(this->
dtype));
701 v->Visit(
"producer", &producer);
702 v->Visit(
"indices", &indices);
703 v->Visit(
"span", &
span);
713 hash_reduce(producer);
714 hash_reduce(indices);
717 static constexpr
const char*
_type_key =
"tir.ProducerLoad";
752 v->Visit(
"dtype", &
dtype);
753 v->Visit(
"base", &base);
754 v->Visit(
"stride", &stride);
755 v->Visit(
"lanes", &lanes);
756 v->Visit(
"span", &
span);
795 v->Visit(
"dtype", &
dtype);
796 v->Visit(
"value", &value);
797 v->Visit(
"lanes", &lanes);
798 v->Visit(
"span", &
span);
811 static constexpr
const char*
_type_key =
"tir.Broadcast";
839 v->Visit(
"dtype", &
dtype);
840 v->Visit(
"var", &var);
841 v->Visit(
"value", &value);
842 v->Visit(
"body", &body);
843 v->Visit(
"span", &
span);
889 v->Visit(
"dtype", &
dtype);
891 v->Visit(
"args", &args);
892 v->Visit(
"span", &
span);
933 v->Visit(
"dtype", &
dtype);
934 v->Visit(
"vectors", &vectors);
935 v->Visit(
"indices", &indices);
936 v->Visit(
"span", &
span);
946 hash_reduce(vectors);
947 hash_reduce(indices);
996 v->Visit(
"lhs", &lhs);
997 v->Visit(
"rhs", &rhs);
998 v->Visit(
"result", &result);
999 v->Visit(
"identity_element", &identity_element);
1000 v->Visit(
"span", &span);
1011 hash_reduce(result);
1012 hash_reduce(identity_element);
1053 v->Visit(
"dtype", &
dtype);
1054 v->Visit(
"combiner", &combiner);
1055 v->Visit(
"source", &source);
1056 v->Visit(
"init", &init);
1057 v->Visit(
"axis", &axis);
1058 v->Visit(
"condition", &condition);
1059 v->Visit(
"value_index", &value_index);
1060 v->Visit(
"span", &
span);
1074 hash_reduce(combiner);
1075 hash_reduce(source);
1077 hash_reduce(condition);
1078 hash_reduce(value_index);
1102 v->Visit(
"dtype", &
dtype);
1103 v->Visit(
"span", &
span);
1142 template <
typename K,
typename V>
1144 std::unordered_map<K, V>
ret;
1145 for (
auto kv : dmap) {
1146 ret[kv.first] = kv.second;
1157 #endif // TVM_TIR_EXPR_H_ Managed reference to MulNode.
Definition: expr.h:200
tvm::Span Span
Definition: base.h:65
Let binding. Bind var to value then evaluate body.
Definition: expr.h:829
void VisitAttrs(AttrVisitor *v)
Definition: expr.h:457
void VisitAttrs(AttrVisitor *v)
Definition: expr.h:1101
void SHashReduce(SHashReducer hash_reduce) const
Definition: expr.h:1110
bool DefEqual(const ObjectRef &lhs, const ObjectRef &rhs)
Reduce condition to comparison of two definitions, where free vars can be mapped. ...
void SHashReduce(SHashReducer hash_reduce) const
Definition: expr.h:338
Managed reference to CommReducerNode.
Definition: expr.h:1025
PrimExpr body
The result expression.
Definition: expr.h:836
Managed reference to CastNode.
Definition: expr.h:117
Var var
The variable.
Definition: expr.h:832
PrimExpr b
The right operand.
Definition: expr.h:134
void VisitAttrs(AttrVisitor *v)
Definition: expr.h:751
Definitions and helper macros for IR/AST nodes.
PrimExpr b
The right operand.
Definition: expr.h:495
Managed reference to ReduceNode.
Definition: expr.h:1089
Runtime String container types.
void VisitAttrs(AttrVisitor *v)
Definition: expr.h:838
void SHashReduce(SHashReducer hash_reduce) const
Definition: expr.h:899
void SHashReduce(SHashReducer hash_reduce) const
Definition: expr.h:594
Array< Var > rhs
The right argument of reducer.
Definition: expr.h:978
A Reducer class to reduce the structural equality result of two objects.
Definition: structural_equal.h:124
PrimExpr a
The left operand.
Definition: expr.h:323
static constexpr const char * _type_key
Definition: expr.h:70
void SHashReduce(SHashReducer hash_reduce) const
Definition: expr.h:711
static constexpr const bool _type_has_method_shash_reduce
Definition: expr.h:59
Managed reference to LTNode.
Definition: expr.h:391
PrimExpr a
The left operand.
Definition: expr.h:132
runtime implementation for LibTorch/TorchScript.
Definition: analyzer.h:36
void VisitAttrs(AttrVisitor *v)
Definition: expr.h:699
A Reducer class to reduce the structural hash value.
Definition: structural_hash.h:110
PrimExpr value
The value to be binded.
Definition: expr.h:834
Array< PrimExpr > init
The init operand.
Definition: expr.h:1041
void SHashReduce(SHashReducer hash_reduce) const
Definition: expr.h:764
String constants, only used in asserts.
Definition: expr.h:53
PrimExpr equal(PrimExpr a, PrimExpr b, Span span=Span())
equal
PrimExpr condition
Predicate on the reduction Only add the body to reduction if condition is true.
Definition: expr.h:1048
SizeVar ToSizeVar() const
Convert to SizeVar.
Definition: expr.h:1116
a named variable in TIR
Definition: var.h:88
void VisitAttrs(AttrVisitor *v)
Definition: expr.h:58
Constant floating point literals in the program.
Definition: expr.h:538
Iteration Variable, represents an iteration over an integer interval.
Definition: var.h:308
PrimExpr true_value
value to be returned when condition is true.
Definition: expr.h:577
Managed reference to MinNode.
Definition: expr.h:291
PrimExpr b
The right operand.
Definition: expr.h:455
Definition: loop_state.h:456
void SHashReduce(SHashReducer hash_reduce) const
Definition: expr.h:646
a * b
Definition: expr.h:191
Managed reference to GTNode.
Definition: expr.h:425
bool SEqualReduce(const CallNode *other, SEqualReducer equal) const
Definition: expr.h:895
Managed reference to CallNode.
Definition: expr.h:913
Managed reference to GENode.
Definition: expr.h:442
Array< PrimExpr > identity_element
The identity element of reducer, which leaves other elements unchanged when combined with it...
Definition: expr.h:986
int lanes
The number of lanes.
Definition: expr.h:792
void VisitAttrs(AttrVisitor *v)
Definition: expr.h:995
void VisitAttrs(AttrVisitor *v)
Definition: expr.h:327
void VisitAttrs(AttrVisitor *v)
Definition: expr.h:932
bool SEqualReduce(const T *other, SEqualReducer equal) const
Definition: expr.h:143
base class of all object containers.
Definition: object.h:167
Any shape.
Definition: expr.h:1099
Span span
Span that points to the original source code. Reserved debug information.
Definition: expr.h:993
bool SEqualReduce(const LetNode *other, SEqualReducer equal) const
Definition: expr.h:846
Shuffle instruction. vec = concat(vectors) result = (vec[indices[0]], vec[indices[1]] ...
Definition: expr.h:925
void SHashReduce(SHashReducer hash_reduce) const
Definition: expr.h:104
std::unordered_map< K, V > as_unordered_map(const Map< K, V > &dmap)
Definition: expr.h:1143
Managed reference to FloorModNode.
Definition: expr.h:274
a + b
Definition: expr.h:157
Managed reference to LENode.
Definition: expr.h:408
bool SEqualReduce(const OrNode *other, SEqualReducer equal) const
Definition: expr.h:504
Constant integer literals in the program.
Definition: expr.h:491
PrimExpr base
The base value.
Definition: expr.h:745
void VisitAttrs(AttrVisitor *v)
Definition: expr.h:1052
Var ToVar() const
Convert to var.
Definition: expr.h:1113
PrimExpr a
The input operand.
Definition: expr.h:533
a || b
Definition: expr.h:490
Runtime Array container types.
tvm::tir::Any Any
Definition: type.h:45
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
void VisitAttrs(AttrVisitor *v)
Definition: expr.h:497
bool SEqualReduce(const SelectNode *other, SEqualReducer equal) const
Definition: expr.h:589
Array< PrimExpr > vectors
the input vectors.
Definition: expr.h:928
void SHashReduce(SHashReducer hash_reduce) const
Definition: expr.h:68
void VisitAttrs(AttrVisitor *v)
Definition: expr.h:888
Managed reference to AnyNode.
Definition: expr.h:1126
Definition: source_map.h:120
Managed reference to DivNode.
Definition: expr.h:220
void SHashReduce(SHashReducer hash_reduce) const
Definition: expr.h:147
Managed reference to NENode.
Definition: expr.h:374
Span span
Span that points to the original source code. Reserved debug information.
Definition: expr.h:55
PrimExpr stride
The stride of each step.
Definition: expr.h:747
Managed reference to BroadcastNode.
Definition: expr.h:819
Runtime primitive data type.
Definition: data_type.h:41
bool SEqualReduce(const CommReducerNode *other, SEqualReducer equal) const
Definition: expr.h:1003
Managed reference to ModNode.
Definition: expr.h:240
Base template to implement comparison ops.
Definition: expr.h:320
CommReducer combiner
The commutative combiner.
Definition: expr.h:1037
Array< PrimExpr > source
The source operand.
Definition: expr.h:1039
bool SEqualReduce(const NotNode *other, SEqualReducer equal) const
Definition: expr.h:541
PrimExpr a
The left operand.
Definition: expr.h:453
void VisitAttrs(AttrVisitor *v)
Definition: expr.h:535
Array, container representing a contiguous sequence of ObjectRefs.
Definition: array.h:289
ObjectRef hash functor.
Definition: object.h:624
PrimExpr b
The right operand.
Definition: expr.h:325
static constexpr const bool _type_has_method_sequal_reduce
Definition: expr.h:58
bool SEqualReduce(const T *other, SEqualReducer equal) const
Definition: expr.h:334
Managed reference to AddNode.
Definition: expr.h:166
void SHashReduce(SHashReducer hash_reduce) const
Definition: expr.h:545
bool SEqualReduce(const ProducerLoadNode *other, SEqualReducer equal) const
Definition: expr.h:706
Managed reference to LetNode.
Definition: expr.h:866
Create a vector where all the elements are value.
Definition: expr.h:787
PrimExpr value
Original data type.
Definition: expr.h:92
A commutative reducer node to represent a commutative binary operator with identity element...
Definition: expr.h:973
Array< PrimExpr > indices
The indices of each element.
Definition: expr.h:930
Managed reference to OrNode.
Definition: expr.h:522
a > b
Definition: expr.h:416
tvm::IntImmNode IntImmNode
Definition: expr.h:49
int value_index
the index of this reduce node
Definition: expr.h:1050
Cast value from one data type to another.
Definition: expr.h:89
void SHashReduce(SHashReducer hash_reduce) const
Definition: expr.h:1008
Reference to string objects.
Definition: string.h:98
Managed reference to RelayExprNode.
Definition: expr.h:433
bool SEqualReduce(const ShuffleNode *other, SEqualReducer equal) const
Definition: expr.h:939
TVM_DECLARE_FINAL_OBJECT_INFO(StringImmNode, PrimExprNode)
Managed reference to MaxNode.
Definition: expr.h:308
bool SEqualReduce(const CastNode *other, SEqualReducer equal) const
Definition: expr.h:100
#define TVM_DEFINE_OBJECT_REF_METHODS(TypeName, ParentType, ObjectName)
Definition: object.h:713
bool SEqualReduce(const BroadcastNode *other, SEqualReducer equal) const
Definition: expr.h:801
Array< Var > lhs
The left argument of reducer.
Definition: expr.h:976
Managed reference to FloorDivNode.
Definition: expr.h:257
void VisitAttrs(AttrVisitor *v)
Definition: expr.h:94
tvm::FloatImmNode FloatImmNode
Definition: expr.h:50
Array< PrimExpr > indices
The location arguments.
Definition: expr.h:697
void VisitAttrs(AttrVisitor *v)
Definition: expr.h:634
RelayExpr op
The operator(function) being invoked.
Definition: expr.h:884
bool SEqualReduce(const RampNode *other, SEqualReducer equal) const
Definition: expr.h:759
Var var(std::string name_hint, DataType t=DataType::Int(32))
Construct a new Var expression.
Defines the Functor data structures.
Managed reference to SubNode.
Definition: expr.h:183
Base class of all object reference.
Definition: object.h:511
#define TVM_DEFINE_OBJECT_REF_COW_METHOD(ObjectName)
Define CopyOnWrite function in an ObjectRef.
Definition: object.h:785
!a
Definition: expr.h:530
a named variable represents a tensor index size
Definition: var.h:144
max(a, b)
Definition: expr.h:299
Managed reference to DataProducerNode.
Definition: buffer.h:293
bool SEqualReduce(const AndNode *other, SEqualReducer equal) const
Definition: expr.h:464
void SHashReduce(SHashReducer hash_reduce) const
Definition: expr.h:851
Buffer is a symbolic n-darray structure. It is a composition of primitive symbolic types...
Definition: buffer.h:160
bool SEqualReduce(const AnyNode *other, SEqualReducer equal) const
Definition: expr.h:1106
Array< IterVar > axis
The reduction axis.
Definition: expr.h:1043
Symbolic n-dimensional array, to represent a memory buffer.
String value
The constant value content.
Definition: expr.h:56
PrimExpr false_value
value to be returned when condition is false.
Definition: expr.h:579
Managed reference to SelectNode.
Definition: expr.h:609
Managed reference to RampNode.
Definition: expr.h:779
Array< PrimExpr > indices
The indices location to be loaded.
Definition: expr.h:632
void VisitAttrs(AttrVisitor *v)
Definition: expr.h:581
Managed reference to ProducerLoadNode.
Definition: expr.h:725
Construct a vector with lanes elements where its i-th element equals base + i * stride. This is useful to construct a index for a continuous vector load.
Definition: expr.h:742
void VisitAttrs(AttrVisitor *v)
Definition: expr.h:136
Array< PrimExpr > result
The result of reducer.
Definition: expr.h:980
void SHashReduce(SHashReducer hash_reduce) const
Definition: expr.h:508
DataType dtype
The runtime data type of the primitive expression.
Definition: expr.h:101
void SHashReduce(SHashReducer hash_reduce) const
Definition: expr.h:1071
min(a, b)
Definition: expr.h:282
Map container of NodeRef->NodeRef in DSL graph. Map implements copy on write semantics, which means map is mutable but copy will happen when array is referenced in more than two places.
Definition: map.h:1271
PrimExpr ret(PrimExpr value, Span span=Span())
Return the value.
The remainder of the floordiv.
Definition: expr.h:265
Managed reference to AndNode.
Definition: expr.h:482
Runtime Map container types.
a == b
Definition: expr.h:348
a && b
Definition: expr.h:450
DataProducer producer
The buffer producer.
Definition: expr.h:695
Base template to implement binary ops.
Definition: expr.h:129
Managed reference to ShuffleNode.
Definition: expr.h:958
Managed reference to NotNode.
Definition: expr.h:558
a < b
Definition: expr.h:382
Load value from the high dimension buffer.
Definition: expr.h:627
bool SEqualReduce(const ReduceNode *other, SEqualReducer equal) const
Definition: expr.h:1063
void SHashReduce(SHashReducer hash_reduce) const
Definition: expr.h:468
bool SEqualReduce(const BufferLoadNode *other, SEqualReducer equal) const
Definition: expr.h:641
PrimExpr value
The base value.
Definition: expr.h:790
a % b in the C semnatics.
Definition: expr.h:231
Reference to PrimExprNode.
Definition: expr.h:114
void SHashReduce(SHashReducer hash_reduce) const
Definition: expr.h:944
PrimExpr a
The left operand.
Definition: expr.h:493
Floor division, floor(a/b)
Definition: expr.h:248
a - b
Definition: expr.h:174
Array< PrimExpr > args
The arguments.
Definition: expr.h:887
Call node.
Definition: expr.h:876
Managed reference to StringImmNode.
Definition: expr.h:78
Buffer buffer
The buffer variable.
Definition: expr.h:630
return true_value if condition is true, otherwise return false_value.
Definition: expr.h:572
Reduction operator operator.
Definition: expr.h:1034
Var Reduce(Range dom, PrimExpr binding, DataType dtype=DataType::Int(32))
The reduced block axis defining function.
#define TVM_DEFINE_NOTNULLABLE_OBJECT_REF_METHODS(TypeName, ParentType, ObjectName)
Definition: object.h:728
a / b in the C semnatics.
Definition: expr.h:211
a <= b
Definition: expr.h:399
Managed reference to EQNode.
Definition: expr.h:357
Load value from the result produced by the producer.
Definition: expr.h:692
void SHashReduce(SHashReducer hash_reduce) const
Definition: expr.h:805
bool SEqualReduce(const StringImmNode *other, SEqualReducer equal) const
Definition: expr.h:64
Array< T > Concat(Array< T > lhs, const Array< T > &rhs)
Concat two Arrays.
Definition: array.h:889
a != b
Definition: expr.h:365
Managed reference to BufferLoadNode.
Definition: expr.h:676
static DataType Int(int bits, int lanes=1)
Construct an int type.
Definition: data_type.h:164
void DefHash(const ObjectRef &key) const
Push hash of key to the current sequence of hash values.
Definition: structural_hash.h:187
Base node of all primitive expressions.
Definition: expr.h:85
int lanes
Total number of lanes.
Definition: expr.h:749
a >= b
Definition: expr.h:433
void VisitAttrs(AttrVisitor *v)
Definition: expr.h:794
PrimExpr condition
The condition.
Definition: expr.h:575