19 #ifndef TVM_TIR_SCHEDULE_INSTRUCTION_H_ 20 #define TVM_TIR_SCHEDULE_INSTRUCTION_H_ 29 template <
typename,
typename>
46 Schedule sch,
const Array<ObjectRef>& inputs,
const Array<ObjectRef>& attrs,
116 v->Visit(
"name", &name);
117 v->Visit(
"_is_pure", &
is_pure);
127 static constexpr
const char*
_type_key =
"tir.InstructionKind";
178 v->Visit(
"kind", &kind);
179 v->Visit(
"inputs", &inputs);
180 v->Visit(
"attrs", &attrs);
181 v->Visit(
"outputs", &outputs);
184 static constexpr
const char*
_type_key =
"tir.Instruction";
212 #define TVM_INST_KIND_REGISTER_VAR_DEF \ 213 static DMLC_ATTRIBUTE_UNUSED ::tvm::tir::InstructionKindRegEntry& __make_##InstructionKind 232 #define TVM_REGISTER_INST_KIND(InstructionKindName) \ 233 TVM_STR_CONCAT(TVM_INST_KIND_REGISTER_VAR_DEF, __COUNTER__) = \ 234 ::tvm::tir::InstructionKindRegEntry::RegisterOrGet(InstructionKindName).set_name() 242 get_mutable()->name = this->
name;
247 get_mutable()->is_pure =
is_pure;
252 get_mutable()->f_apply_to_schedule = std::move(f_apply_to_schedule);
257 get_mutable()->f_as_python = std::move(f_as_python);
262 get_mutable()->f_attrs_as_json = std::move(f_attrs_as_json);
267 get_mutable()->f_attrs_from_json = std::move(f_attrs_from_json);
283 template <
typename,
typename>
284 friend class ::tvm::AttrRegistry;
291 #endif // TVM_TIR_SCHEDULE_INSTRUCTION_H_ InstructionKindRegEntry & set_attrs_from_json(FInstructionAttrsFromJSON f_attrs_from_json)
Definition: instruction.h:266
Array< ObjectRef > attrs
The attributes of the instruction. Similar to attributes of an operator, attributes of an instruction...
Definition: instruction.h:168
Managed reference to InstructionKindNode.
Definition: instruction.h:135
FInstructionApply f_apply_to_schedule
A functor that applies the instruction to a TensorIR schedule.
Definition: instruction.h:101
runtime implementation for LibTorch/TorchScript.
Definition: analyzer.h:36
InstructionKindRegEntry & set_name()
Definition: instruction.h:241
InstructionKindRegEntry & set_as_python(FInstructionAsPython f_as_python)
Definition: instruction.h:256
Managed reference to InstructionNode.
Definition: instruction.h:192
String name
The name of a kind of instructions.
Definition: instruction.h:92
base class of all object containers.
Definition: object.h:167
FInstructionAttrsFromJSON f_attrs_from_json
A functor that deserialize its attributes from JSON.
Definition: instruction.h:113
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
bool IsPostproc() const
Checks if the instruction kind is EnterPostproc.
Kind of an instruction, e.g. Split, Reorder, etc. Besides the name, every kind of instruction has its...
Definition: instruction.h:89
Array, container representing a contiguous sequence of ObjectRefs.
Definition: array.h:289
InstructionKindRegEntry & set_is_pure(bool is_pure)
Definition: instruction.h:246
InstructionKindRegEntry & set_attrs_as_json(FInstructionAttrsAsJSON f_attrs_as_json)
Definition: instruction.h:261
Reference to string objects.
Definition: string.h:98
FInstructionAttrsAsJSON f_attrs_as_json
A functor that serialize its attributes to JSON.
Definition: instruction.h:108
#define TVM_DEFINE_OBJECT_REF_METHODS(TypeName, ParentType, ObjectName)
Definition: object.h:713
TVM_DECLARE_FINAL_OBJECT_INFO(InstructionKindNode, runtime::Object)
InstructionKind kind
The kind of the instruction.
Definition: instruction.h:150
Base class of all object reference.
Definition: object.h:511
Schedule instructions each corresponds to a schedule primitive.
Definition: instruction.h:147
InstructionKindRegEntry & set_apply_to_schedule(FInstructionApply f_apply_to_schedule)
Definition: instruction.h:251
static constexpr const char * _type_key
Definition: instruction.h:127
Array< ObjectRef > inputs
The input random variables of the instruction, and the type of each element can be one of the followi...
Definition: instruction.h:162
runtime::TypedPackedFunc< Array< ObjectRef >(Schedule sch, const Array< ObjectRef > &inputs, const Array< ObjectRef > &attrs, const Optional< ObjectRef > &decision)> FInstructionApply
Type of the functor that applies the instruction to a TensorIR schedule.
Definition: instruction.h:47
Optional container that to represent to a Nullable variant of T.
Definition: optional.h:51
bool is_pure
Indicates if the instruction is pure, i.e. removing it alone doesn't mutate the schedule state...
Definition: instruction.h:99
void VisitAttrs(tvm::AttrVisitor *v)
Definition: instruction.h:177
Reflection and serialization of compiler IR/AST nodes.
FInstructionAsPython f_as_python
A functor that converts the instruction to a statement in python syntax.
Definition: instruction.h:103
An entry in the registry of InstructionKind.
Definition: instruction.h:237
void VisitAttrs(tvm::AttrVisitor *v)
Definition: instruction.h:115
Array< ObjectRef > outputs
The output random variables of the instruction, and the type of each element can be one of the follow...
Definition: instruction.h:175