You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tvm.apache.org by tq...@apache.org on 2026/09/24 19:02:41 UTC
(tvm-site) branch asf-site updated: deploying docs (apache/tvm@0db97a5a2cf041f7d83db34325c4901db8ee0380)
This is an automated email from the ASF dual-hosted git repository.
tqchen pushed a commit to branch asf-site
in repository https://gitbox.apache.org/repos/asf/tvm-site.git
The following commit(s) were added to refs/heads/asf-site by this push:
new 3a8e0c1192c deploying docs (apache/tvm@0db97a5a2cf041f7d83db34325c4901db8ee0380)
3a8e0c1192c is described below
commit 3a8e0c1192c905a7029cba1321679db356962a3c
Author: tvm-bot <95...@users.noreply.github.com>
AuthorDate: Thu Sep 24 19:02:26 2026 +0000
deploying docs (apache/tvm@0db97a5a2cf041f7d83db34325c4901db8ee0380)
---
.../import_model.zip | Bin 35138 -> 35138 bytes
.../dlight_gpu_scheduling.zip | Bin 26311 -> 26311 bytes
.../11c11e53c7dace51a8be968ee169ed0d/ir_module.zip | Bin 23756 -> 23756 bytes
.../tir_transformation.zip | Bin 15923 -> 15923 bytes
.../meta_schedule.zip | Bin 24239 -> 24239 bytes
.../mix_python_and_tvm_with_pymodule.zip | Bin 38907 -> 38923 bytes
.../relax_creation.zip | Bin 22429 -> 22429 bytes
.../relax_transformation.zip | Bin 11480 -> 11480 bytes
.../optimize_llm.zip | Bin 53997 -> 53997 bytes
.../bring_your_own_codegen.zip | Bin 36295 -> 36295 bytes
.../e2e_opt_model.zip | Bin 14479 -> 14479 bytes
.../quick_start.zip | Bin 16252 -> 16252 bytes
.../export_and_load_executable.zip | Bin 31408 -> 31408 bytes
.../tir_creation.zip | Bin 24580 -> 24580 bytes
.../mix_python_and_tvm_with_pymodule.py | 16 +-
.../mix_python_and_tvm_with_pymodule.ipynb | 14 +-
.../cross_compilation_and_rpc.zip | Bin 62286 -> 62286 bytes
.../customize_opt.zip | Bin 20522 -> 20522 bytes
docs/_sources/arch/tvmscript.rst | 413 +-
.../deep_dive/relax/tutorials/relax_creation.rst | 66 +-
.../relax/tutorials/relax_transformation.rst | 15 +
.../relax/tutorials/sg_execution_times.rst | 4 +-
.../tensor_ir/tutorials/sg_execution_times.rst | 8 +-
.../deep_dive/tensor_ir/tutorials/tir_creation.rst | 2 +-
.../tensor_ir/tutorials/tir_transformation.rst | 144 +-
docs/_sources/get_started/tutorials/ir_module.rst | 8 +-
.../_sources/get_started/tutorials/quick_start.rst | 4 +-
.../get_started/tutorials/sg_execution_times.rst | 6 +-
.../how_to/tutorials/cross_compilation_and_rpc.rst | 6 +-
docs/_sources/how_to/tutorials/e2e_opt_model.rst | 2 +-
.../tutorials/mix_python_and_tvm_with_pymodule.rst | 16 +-
docs/_sources/how_to/tutorials/optimize_llm.rst | 2 +-
.../how_to/tutorials/sg_execution_times.rst | 14 +-
docs/_sources/reference/api/python/relax/relax.rst | 1 +
.../reference/api/python/script/ir_builder.rst | 6 +
.../reference/api/python/script/parser.rst | 3 +
.../reference/api/python/script/script.rst | 15 +
docs/_sources/sg_execution_times.rst | 36 +-
docs/_sources/tirx/api/script.rst | 6 +-
.../tirx/tile_primitives/copy_async/dsmem.rst | 4 +-
docs/arch/tvmscript.html | 414 +-
docs/commit_hash | 2 +-
docs/deep_dive/relax/tutorials/relax_creation.html | 164 +-
.../relax/tutorials/relax_transformation.html | 15 +
.../relax/tutorials/sg_execution_times.html | 4 +-
.../tensor_ir/tutorials/sg_execution_times.html | 8 +-
.../tensor_ir/tutorials/tir_creation.html | 114 +-
.../tensor_ir/tutorials/tir_transformation.html | 176 +-
docs/genindex.html | 2394 +++-
docs/get_started/tutorials/ir_module.html | 38 +-
docs/get_started/tutorials/quick_start.html | 4 +-
docs/get_started/tutorials/sg_execution_times.html | 6 +-
docs/how_to/tutorials/bring_your_own_codegen.html | 10 +-
.../tutorials/cross_compilation_and_rpc.html | 6 +-
docs/how_to/tutorials/e2e_opt_model.html | 4 +-
.../mix_python_and_tvm_with_pymodule.html | 110 +-
docs/how_to/tutorials/optimize_llm.html | 2 +-
docs/how_to/tutorials/sg_execution_times.html | 14 +-
docs/objects.inv | Bin 23693 -> 28154 bytes
..._2tvm_2script_2ir_builder_2base_8h-example.html | 303 -
docs/reference/api/doxygen/analyzer_8h.html | 8 +-
docs/reference/api/doxygen/analyzer_8h_source.html | 182 +-
docs/reference/api/doxygen/annotated.html | 67 +-
docs/reference/api/doxygen/arg__info_8h.html | 2 +-
docs/reference/api/doxygen/arg__info_8h__incl.svg | 1877 ++--
.../reference/api/doxygen/arg__info_8h_source.html | 16 +-
docs/reference/api/doxygen/array__utils_8h.html | 2 +-
.../api/doxygen/array__utils_8h__incl.svg | 1753 +--
.../api/doxygen/array__utils_8h_source.html | 8 +-
.../api/doxygen/attr__registry__map_8h_source.html | 44 +-
.../api/doxygen/axis__group__graph_8h.html | 8 +-
.../api/doxygen/axis__group__graph_8h__incl.svg | 2048 ++--
.../api/doxygen/axis__group__graph_8h_source.html | 281 +-
docs/reference/api/doxygen/backend_8h.html | 2 +-
docs/reference/api/doxygen/backend_8h__incl.svg | 2040 ++--
docs/reference/api/doxygen/backend_8h_source.html | 5 +-
docs/reference/api/doxygen/base__expr_8h.html | 14 +-
.../api/doxygen/base__expr_8h_source.html | 234 +-
docs/reference/api/doxygen/bias__add_8h.html | 4 +-
docs/reference/api/doxygen/bias__add_8h__incl.svg | 2625 ++---
.../reference/api/doxygen/bias__add_8h_source.html | 12 +-
.../reference/api/doxygen/binding__rewrite_8h.html | 2 +-
.../api/doxygen/binding__rewrite_8h__incl.svg | 2116 ++--
.../api/doxygen/binding__rewrite_8h_source.html | 23 +-
docs/reference/api/doxygen/block__builder_8h.html | 2 +-
.../api/doxygen/block__builder_8h__incl.svg | 1632 +--
.../api/doxygen/block__builder_8h_source.html | 11 +-
docs/reference/api/doxygen/bnn_8h.html | 6 +-
docs/reference/api/doxygen/bnn_8h__incl.svg | 1851 +--
docs/reference/api/doxygen/bnn_8h_source.html | 76 +-
docs/reference/api/doxygen/bound_8h.html | 4 +-
docs/reference/api/doxygen/bound_8h_source.html | 11 +-
docs/reference/api/doxygen/broadcast_8h.html | 288 +-
docs/reference/api/doxygen/broadcast_8h__incl.svg | 1897 ++--
.../reference/api/doxygen/broadcast_8h_source.html | 46 +-
docs/reference/api/doxygen/builder_8h.html | 2 +-
docs/reference/api/doxygen/builder_8h__incl.svg | 1485 +--
docs/reference/api/doxygen/builder_8h_source.html | 22 +-
docs/reference/api/doxygen/bytecode_8h.html | 6 +-
docs/reference/api/doxygen/bytecode_8h_source.html | 56 +-
docs/reference/api/doxygen/ccl_8h__incl.svg | 1494 +--
docs/reference/api/doxygen/ccl_8h_source.html | 7 +-
docs/reference/api/doxygen/classes.html | 4 +-
.../api/doxygen/classtvm_1_1ArgumentInfoNode.html | 8 +-
.../api/doxygen/classtvm_1_1AttrRegistryMap.html | 42 +-
.../classtvm_1_1AttrRegistryMapContainerMap.html | 48 +-
.../api/doxygen/classtvm_1_1AttrsNode.html | 4 +-
.../api/doxygen/classtvm_1_1BaseFunc.html | 6 +-
.../api/doxygen/classtvm_1_1BaseFuncNode.html | 59 +-
docs/reference/api/doxygen/classtvm_1_1Call.html | 6 +-
.../api/doxygen/classtvm_1_1CallNode.html | 10 +-
.../api/doxygen/classtvm_1_1Constant.html | 6 +-
.../api/doxygen/classtvm_1_1ConstantNode.html | 14 +-
.../api/doxygen/classtvm_1_1DictAttrs.html | 73 +-
.../api/doxygen/classtvm_1_1DictAttrsNode.html | 6 +-
.../reference/api/doxygen/classtvm_1_1EnvFunc.html | 20 +-
.../api/doxygen/classtvm_1_1EnvFuncNode.html | 8 +-
docs/reference/api/doxygen/classtvm_1_1Expr.html | 18 +-
.../api/doxygen/classtvm_1_1ExprFunctor.html | 2 +-
...R_07const_01Expr_01_6_00_01Args_8_8_8_08_4.html | 408 +-
.../api/doxygen/classtvm_1_1ExprMutator.html | 315 +-
.../api/doxygen/classtvm_1_1ExprNode.html | 12 +-
.../api/doxygen/classtvm_1_1ExprVisitor.html | 295 +-
.../api/doxygen/classtvm_1_1FloatImm.html | 26 +-
.../api/doxygen/classtvm_1_1FloatImmNode.html | 18 +-
.../api/doxygen/classtvm_1_1FuncType.html | 4 +-
.../api/doxygen/classtvm_1_1FuncTypeNode.html | 12 +-
.../api/doxygen/classtvm_1_1GenericConst.html | 6 +-
.../api/doxygen/classtvm_1_1GenericConstNode.html | 14 +-
.../api/doxygen/classtvm_1_1GlobalInfoNode.html | 4 +-
.../api/doxygen/classtvm_1_1GlobalVar.html | 6 +-
.../api/doxygen/classtvm_1_1GlobalVarNode.html | 30 +-
.../api/doxygen/classtvm_1_1IRModule.html | 18 +-
.../api/doxygen/classtvm_1_1IRModuleNode.html | 139 +-
docs/reference/api/doxygen/classtvm_1_1IntImm.html | 66 +-
.../api/doxygen/classtvm_1_1IntImmNode.html | 14 +-
.../api/doxygen/classtvm_1_1ObjectFunctor.html | 19 +-
...nctor_3_01R_07NodeArg_00_01Args_8_8_8_08_4.html | 52 +-
.../api/doxygen/classtvm_1_1ObjectMutator.html | 51 +-
.../api/doxygen/classtvm_1_1ObjectVisitor.html | 34 +-
docs/reference/api/doxygen/classtvm_1_1Op.html | 30 +-
.../api/doxygen/classtvm_1_1OpAttrMap.html | 34 +-
docs/reference/api/doxygen/classtvm_1_1OpNode.html | 46 +-
.../api/doxygen/classtvm_1_1OpRegEntry.html | 64 +-
.../api/doxygen/classtvm_1_1OpaqueExpr.html | 6 +-
.../api/doxygen/classtvm_1_1OpaqueExprNode.html | 14 +-
.../api/doxygen/classtvm_1_1OpaqueType.html | 4 +-
.../api/doxygen/classtvm_1_1OpaqueTypeNode.html | 12 +-
.../api/doxygen/classtvm_1_1PointerType.html | 8 +-
.../api/doxygen/classtvm_1_1PointerTypeNode.html | 12 +-
.../api/doxygen/classtvm_1_1PrimExpr.html | 24 +-
.../classtvm_1_1PrimExprConvertibleNode.html | 8 +-
.../api/doxygen/classtvm_1_1PrimType.html | 134 +-
.../api/doxygen/classtvm_1_1PrimTypeNode.html | 16 +-
.../reference/api/doxygen/classtvm_1_1PrimVar.html | 32 +-
.../api/doxygen/classtvm_1_1PrinterConfig.html | 2 +-
.../api/doxygen/classtvm_1_1PrinterConfigNode.html | 64 +-
docs/reference/api/doxygen/classtvm_1_1Range.html | 6 +-
.../api/doxygen/classtvm_1_1RangeNode.html | 8 +-
.../api/doxygen/classtvm_1_1ScopeStack.html | 54 +-
.../api/doxygen/classtvm_1_1SequentialSpan.html | 4 +-
.../doxygen/classtvm_1_1SequentialSpanNode.html | 16 +-
docs/reference/api/doxygen/classtvm_1_1Source.html | 6 +-
.../api/doxygen/classtvm_1_1SourceMap.html | 6 +-
.../api/doxygen/classtvm_1_1SourceMapObj.html | 8 +-
.../api/doxygen/classtvm_1_1SourceName.html | 6 +-
.../api/doxygen/classtvm_1_1SourceNameNode.html | 8 +-
.../api/doxygen/classtvm_1_1SourceNode.html | 8 +-
docs/reference/api/doxygen/classtvm_1_1Span.html | 14 +-
.../api/doxygen/classtvm_1_1SpanNode.html | 24 +-
.../api/doxygen/classtvm_1_1StringImm.html | 6 +-
.../api/doxygen/classtvm_1_1StringImmNode.html | 14 +-
.../api/doxygen/classtvm_1_1StringType.html | 4 +-
.../api/doxygen/classtvm_1_1StringTypeNode.html | 12 +-
.../api/doxygen/classtvm_1_1TVMScriptPrinter.html | 8 +-
docs/reference/api/doxygen/classtvm_1_1Target.html | 34 +-
.../api/doxygen/classtvm_1_1TargetKind.html | 26 +-
.../api/doxygen/classtvm_1_1TargetKindAttrMap.html | 26 +-
.../api/doxygen/classtvm_1_1TargetKindNode.html | 36 +-
.../doxygen/classtvm_1_1TargetKindRegEntry.html | 56 +-
.../api/doxygen/classtvm_1_1TargetNode.html | 60 +-
.../api/doxygen/classtvm_1_1TargetTag.html | 28 +-
.../api/doxygen/classtvm_1_1TargetTagNode.html | 28 +-
.../api/doxygen/classtvm_1_1TargetTagRegEntry.html | 26 +-
.../api/doxygen/classtvm_1_1TensorLoad.html | 22 +-
.../api/doxygen/classtvm_1_1TensorLoadNode.html | 10 +-
.../api/doxygen/classtvm_1_1TensorRegion.html | 6 +-
.../api/doxygen/classtvm_1_1TensorRegionNode.html | 14 +-
docs/reference/api/doxygen/classtvm_1_1Tuple.html | 6 +-
.../api/doxygen/classtvm_1_1TupleGetItem.html | 10 +-
.../api/doxygen/classtvm_1_1TupleGetItemNode.html | 14 +-
.../api/doxygen/classtvm_1_1TupleNode.html | 10 +-
.../api/doxygen/classtvm_1_1TupleType.html | 8 +-
.../api/doxygen/classtvm_1_1TupleTypeNode.html | 12 +-
docs/reference/api/doxygen/classtvm_1_1Type.html | 8 +-
.../api/doxygen/classtvm_1_1TypeNode.html | 16 +-
.../api/doxygen/classtvm_1_1TypedEnvFunc.html | 2 +-
...vm_1_1TypedEnvFunc_3_01R_07Args_8_8_8_08_4.html | 48 +-
.../api/doxygen/classtvm_1_1TypedExpr.html | 26 +-
.../api/doxygen/classtvm_1_1UniqueNameSupply.html | 14 +-
.../doxygen/classtvm_1_1UniqueNameSupplyNode.html | 46 +-
docs/reference/api/doxygen/classtvm_1_1Var.html | 18 +-
.../reference/api/doxygen/classtvm_1_1VarNode.html | 22 +-
docs/reference/api/doxygen/classtvm_1_1With.html | 96 +-
.../api/doxygen/classtvm_1_1WithGroup.html | 69 +-
...asstvm_1_1instrument_1_1PassInstrumentNode.html | 40 +-
.../doxygen/classtvm_1_1ir_1_1ConfigSchema.html | 40 +-
.../api/doxygen/classtvm_1_1prim_1_1Add.html | 22 +-
.../api/doxygen/classtvm_1_1prim_1_1AddNode.html | 16 +-
.../api/doxygen/classtvm_1_1prim_1_1And.html | 22 +-
.../api/doxygen/classtvm_1_1prim_1_1AndNode.html | 10 +-
.../doxygen/classtvm_1_1prim_1_1BinaryOpNode.html | 42 +-
.../doxygen/classtvm_1_1prim_1_1BitwiseAnd.html | 22 +-
.../classtvm_1_1prim_1_1BitwiseAndNode.html | 16 +-
.../doxygen/classtvm_1_1prim_1_1BitwiseNot.html | 22 +-
.../classtvm_1_1prim_1_1BitwiseNotNode.html | 10 +-
.../api/doxygen/classtvm_1_1prim_1_1BitwiseOr.html | 22 +-
.../doxygen/classtvm_1_1prim_1_1BitwiseOrNode.html | 16 +-
.../doxygen/classtvm_1_1prim_1_1BitwiseXor.html | 22 +-
.../classtvm_1_1prim_1_1BitwiseXorNode.html | 16 +-
.../api/doxygen/classtvm_1_1prim_1_1Broadcast.html | 22 +-
.../doxygen/classtvm_1_1prim_1_1BroadcastNode.html | 10 +-
.../api/doxygen/classtvm_1_1prim_1_1Cast.html | 24 +-
.../api/doxygen/classtvm_1_1prim_1_1CastNode.html | 10 +-
.../api/doxygen/classtvm_1_1prim_1_1CmpOpNode.html | 42 +-
.../api/doxygen/classtvm_1_1prim_1_1Div.html | 22 +-
.../api/doxygen/classtvm_1_1prim_1_1DivNode.html | 16 +-
.../api/doxygen/classtvm_1_1prim_1_1EQ.html | 22 +-
.../api/doxygen/classtvm_1_1prim_1_1EQNode.html | 16 +-
.../api/doxygen/classtvm_1_1prim_1_1FloorDiv.html | 22 +-
.../doxygen/classtvm_1_1prim_1_1FloorDivNode.html | 16 +-
.../api/doxygen/classtvm_1_1prim_1_1FloorMod.html | 22 +-
.../doxygen/classtvm_1_1prim_1_1FloorModNode.html | 16 +-
.../api/doxygen/classtvm_1_1prim_1_1GE.html | 22 +-
.../api/doxygen/classtvm_1_1prim_1_1GENode.html | 16 +-
.../api/doxygen/classtvm_1_1prim_1_1GT.html | 22 +-
.../api/doxygen/classtvm_1_1prim_1_1GTNode.html | 16 +-
.../api/doxygen/classtvm_1_1prim_1_1LE.html | 22 +-
.../api/doxygen/classtvm_1_1prim_1_1LShift.html | 22 +-
.../doxygen/classtvm_1_1prim_1_1LShiftNode.html | 16 +-
.../api/doxygen/classtvm_1_1prim_1_1LT.html | 22 +-
.../api/doxygen/classtvm_1_1prim_1_1LTNode.html | 16 +-
.../api/doxygen/classtvm_1_1prim_1_1Let.html | 22 +-
.../api/doxygen/classtvm_1_1prim_1_1LetNode.html | 10 +-
.../api/doxygen/classtvm_1_1prim_1_1Max.html | 22 +-
.../api/doxygen/classtvm_1_1prim_1_1MaxNode.html | 16 +-
.../api/doxygen/classtvm_1_1prim_1_1Min.html | 22 +-
.../api/doxygen/classtvm_1_1prim_1_1MinNode.html | 16 +-
.../api/doxygen/classtvm_1_1prim_1_1Mod.html | 22 +-
.../api/doxygen/classtvm_1_1prim_1_1ModNode.html | 16 +-
.../api/doxygen/classtvm_1_1prim_1_1Mul.html | 22 +-
.../api/doxygen/classtvm_1_1prim_1_1MulNode.html | 16 +-
.../api/doxygen/classtvm_1_1prim_1_1NE.html | 22 +-
.../api/doxygen/classtvm_1_1prim_1_1NENode.html | 16 +-
.../api/doxygen/classtvm_1_1prim_1_1Not.html | 22 +-
.../api/doxygen/classtvm_1_1prim_1_1NotNode.html | 10 +-
.../api/doxygen/classtvm_1_1prim_1_1Or.html | 22 +-
.../api/doxygen/classtvm_1_1prim_1_1OrNode.html | 10 +-
.../api/doxygen/classtvm_1_1prim_1_1RShift.html | 22 +-
.../doxygen/classtvm_1_1prim_1_1RShiftNode.html | 16 +-
.../api/doxygen/classtvm_1_1prim_1_1Ramp.html | 22 +-
.../api/doxygen/classtvm_1_1prim_1_1RampNode.html | 10 +-
.../api/doxygen/classtvm_1_1prim_1_1Select.html | 22 +-
.../doxygen/classtvm_1_1prim_1_1SelectNode.html | 10 +-
.../api/doxygen/classtvm_1_1prim_1_1Shuffle.html | 32 +-
.../doxygen/classtvm_1_1prim_1_1ShuffleNode.html | 10 +-
.../api/doxygen/classtvm_1_1prim_1_1Sub.html | 22 +-
.../api/doxygen/classtvm_1_1prim_1_1SubNode.html | 16 +-
.../doxygen/classtvm_1_1relax_1_1AndPattern.html | 26 +-
.../classtvm_1_1relax_1_1AndPatternNode.html | 6 +-
.../api/doxygen/classtvm_1_1relax_1_1AnyType.html | 4 +-
.../doxygen/classtvm_1_1relax_1_1AnyTypeNode.html | 12 +-
.../doxygen/classtvm_1_1relax_1_1AttrPattern.html | 26 +-
.../classtvm_1_1relax_1_1AttrPatternNode.html | 6 +-
.../api/doxygen/classtvm_1_1relax_1_1Binding.html | 28 +-
.../classtvm_1_1relax_1_1BindingBlockNode.html | 8 +-
.../doxygen/classtvm_1_1relax_1_1BindingNode.html | 8 +-
.../doxygen/classtvm_1_1relax_1_1BlockBuilder.html | 8 +-
.../classtvm_1_1relax_1_1BlockBuilderNode.html | 98 +-
.../doxygen/classtvm_1_1relax_1_1CallPattern.html | 32 +-
.../classtvm_1_1relax_1_1CallPatternNode.html | 10 +-
.../classtvm_1_1relax_1_1ConstantPattern.html | 26 +-
.../classtvm_1_1relax_1_1ConstantPatternNode.html | 6 +-
.../classtvm_1_1relax_1_1DFConstraintNode.html | 14 +-
.../doxygen/classtvm_1_1relax_1_1DFPattern.html | 46 +-
.../classtvm_1_1relax_1_1DFPatternFunctor.html | 2 +-
...nst_01DFPattern_01_6n_00_01Args_8_8_8_08_4.html | 190 +-
.../classtvm_1_1relax_1_1DFPatternNode.html | 4 +-
.../classtvm_1_1relax_1_1DFPatternVisitor.html | 130 +-
.../classtvm_1_1relax_1_1DataTypePattern.html | 30 +-
.../classtvm_1_1relax_1_1DataTypePatternNode.html | 10 +-
.../classtvm_1_1relax_1_1DataflowBlockNode.html | 8 +-
.../classtvm_1_1relax_1_1DataflowBlockRewrite.html | 2 +-
...sstvm_1_1relax_1_1DataflowBlockRewriteNode.html | 50 +-
.../doxygen/classtvm_1_1relax_1_1DataflowVar.html | 16 +-
.../classtvm_1_1relax_1_1DataflowVarNode.html | 22 +-
.../classtvm_1_1relax_1_1DataflowVarPattern.html | 26 +-
...lasstvm_1_1relax_1_1DataflowVarPatternNode.html | 12 +-
.../classtvm_1_1relax_1_1DummyGlobalInfoNode.html | 6 +-
.../classtvm_1_1relax_1_1ExecBuilderNode.html | 74 +-
.../doxygen/classtvm_1_1relax_1_1ExprFunctor.html | 2 +-
..._07const_01Expr_01_6n_00_01Args_8_8_8_08_4.html | 420 +-
.../doxygen/classtvm_1_1relax_1_1ExprMutator.html | 510 +-
.../classtvm_1_1relax_1_1ExprMutatorBase.html | 216 +-
.../doxygen/classtvm_1_1relax_1_1ExprPattern.html | 26 +-
.../classtvm_1_1relax_1_1ExprPatternNode.html | 6 +-
.../doxygen/classtvm_1_1relax_1_1ExprVisitor.html | 480 +-
.../doxygen/classtvm_1_1relax_1_1ExternFunc.html | 6 +-
.../classtvm_1_1relax_1_1ExternFuncNode.html | 26 +-
.../classtvm_1_1relax_1_1ExternFuncPattern.html | 26 +-
...classtvm_1_1relax_1_1ExternFuncPatternNode.html | 10 +-
.../api/doxygen/classtvm_1_1relax_1_1FuncType.html | 26 +-
.../doxygen/classtvm_1_1relax_1_1FuncTypeNode.html | 20 +-
.../api/doxygen/classtvm_1_1relax_1_1Function.html | 20 +-
.../doxygen/classtvm_1_1relax_1_1FunctionNode.html | 34 +-
.../classtvm_1_1relax_1_1FunctionPattern.html | 26 +-
.../classtvm_1_1relax_1_1FunctionPatternNode.html | 6 +-
.../classtvm_1_1relax_1_1GlobalVarPattern.html | 26 +-
.../classtvm_1_1relax_1_1GlobalVarPatternNode.html | 8 +-
.../api/doxygen/classtvm_1_1relax_1_1If.html | 6 +-
.../api/doxygen/classtvm_1_1relax_1_1IfNode.html | 14 +-
.../doxygen/classtvm_1_1relax_1_1MatchCast.html | 18 +-
.../classtvm_1_1relax_1_1MatchCastNode.html | 8 +-
.../classtvm_1_1relax_1_1MatchResultNode.html | 4 +-
.../doxygen/classtvm_1_1relax_1_1NestedMsg.html | 185 +-
.../doxygen/classtvm_1_1relax_1_1NotPattern.html | 26 +-
.../classtvm_1_1relax_1_1NotPatternNode.html | 6 +-
.../doxygen/classtvm_1_1relax_1_1OrPattern.html | 26 +-
.../classtvm_1_1relax_1_1OrPatternNode.html | 6 +-
.../classtvm_1_1relax_1_1PackedFuncType.html | 4 +-
.../classtvm_1_1relax_1_1PackedFuncTypeNode.html | 12 +-
.../classtvm_1_1relax_1_1PatternContext.html | 36 +-
.../classtvm_1_1relax_1_1PatternContextNode.html | 6 +-
.../doxygen/classtvm_1_1relax_1_1PatternSeq.html | 34 +-
.../classtvm_1_1relax_1_1PatternSeqNode.html | 4 +-
.../classtvm_1_1relax_1_1PrimArrPattern.html | 28 +-
.../classtvm_1_1relax_1_1PrimArrPatternNode.html | 6 +-
...asstvm_1_1relax_1_1SameShapeConstraintNode.html | 14 +-
.../api/doxygen/classtvm_1_1relax_1_1SeqExpr.html | 6 +-
.../doxygen/classtvm_1_1relax_1_1SeqExprNode.html | 26 +-
.../doxygen/classtvm_1_1relax_1_1ShapeExpr.html | 6 +-
.../classtvm_1_1relax_1_1ShapeExprNode.html | 10 +-
.../doxygen/classtvm_1_1relax_1_1ShapePattern.html | 26 +-
.../classtvm_1_1relax_1_1ShapePatternNode.html | 6 +-
.../doxygen/classtvm_1_1relax_1_1ShapeType.html | 8 +-
.../classtvm_1_1relax_1_1ShapeTypeNode.html | 20 +-
.../doxygen/classtvm_1_1relax_1_1TensorType.html | 8 +-
.../classtvm_1_1relax_1_1TensorTypeNode.html | 26 +-
.../classtvm_1_1relax_1_1TupleGetItemPattern.html | 30 +-
...asstvm_1_1relax_1_1TupleGetItemPatternNode.html | 10 +-
.../doxygen/classtvm_1_1relax_1_1TuplePattern.html | 26 +-
.../classtvm_1_1relax_1_1TuplePatternNode.html | 6 +-
..._07const_01Type_01_6n_00_01Args_8_8_8_08_4.html | 100 +-
.../doxygen/classtvm_1_1relax_1_1TypeMutator.html | 44 +-
.../doxygen/classtvm_1_1relax_1_1TypePattern.html | 26 +-
.../classtvm_1_1relax_1_1TypePatternNode.html | 6 +-
.../doxygen/classtvm_1_1relax_1_1TypeVisitor.html | 60 +-
...classtvm_1_1relax_1_1UnorderedTuplePattern.html | 26 +-
...stvm_1_1relax_1_1UnorderedTuplePatternNode.html | 6 +-
.../api/doxygen/classtvm_1_1relax_1_1VDevice.html | 4 +-
.../doxygen/classtvm_1_1relax_1_1VDeviceNode.html | 10 +-
.../doxygen/classtvm_1_1relax_1_1VarBinding.html | 18 +-
.../classtvm_1_1relax_1_1VarBindingNode.html | 24 +-
.../doxygen/classtvm_1_1relax_1_1VarPattern.html | 26 +-
.../classtvm_1_1relax_1_1VarPatternNode.html | 14 +-
.../classtvm_1_1relax_1_1WildcardPattern.html | 26 +-
.../classtvm_1_1relax_1_1WildcardPatternNode.html | 6 +-
...tvm_1_1relax_1_1distributed_1_1DTensorType.html | 4 +-
...1_1relax_1_1distributed_1_1DTensorTypeNode.html | 12 +-
...stvm_1_1relax_1_1distributed_1_1DeviceMesh.html | 4 +-
..._1_1relax_1_1distributed_1_1DeviceMeshNode.html | 10 +-
...sstvm_1_1relax_1_1distributed_1_1Placement.html | 4 +-
...m_1_1relax_1_1distributed_1_1PlacementNode.html | 10 +-
...m_1_1relax_1_1distributed_1_1PlacementSpec.html | 10 +-
...1relax_1_1distributed_1_1PlacementSpecNode.html | 12 +-
...vm_1_1relax_1_1distributed_1_1ShardingNode.html | 14 +-
...1_1relax_1_1transform_1_1FusionPatternNode.html | 4 +-
...ax_1_1transform_1_1PatternCheckContextNode.html | 4 +-
.../doxygen/classtvm_1_1runtime_1_1DRefObj.html | 30 +-
.../doxygen/classtvm_1_1runtime_1_1DeviceAPI.html | 130 +-
.../classtvm_1_1runtime_1_1DiscoChannel.html | 24 +-
.../classtvm_1_1runtime_1_1DiscoWorker.html | 42 +-
.../doxygen/classtvm_1_1runtime_1_1Session.html | 16 +-
.../doxygen/classtvm_1_1runtime_1_1SessionObj.html | 98 +-
.../api/doxygen/classtvm_1_1runtime_1_1Tensor.html | 144 +-
.../api/doxygen/classtvm_1_1runtime_1_1Timer.html | 22 +-
.../doxygen/classtvm_1_1runtime_1_1TimerNode.html | 20 +-
...m_1_1runtime_1_1cuda__ipc_1_1CUDAIPCMemory.html | 10 +-
..._1runtime_1_1cuda__ipc_1_1CUDAIPCMemoryObj.html | 28 +-
...classtvm_1_1runtime_1_1memory_1_1Allocator.html | 64 +-
...stvm_1_1runtime_1_1memory_1_1MemoryManager.html | 16 +-
...lasstvm_1_1runtime_1_1memory_1_1StorageObj.html | 20 +-
...tvm_1_1runtime_1_1vm_1_1Instruction_1_1Arg.html | 28 +-
.../classtvm_1_1runtime_1_1vm_1_1VMClosure.html | 4 +-
.../classtvm_1_1runtime_1_1vm_1_1VMExecutable.html | 58 +-
...lasstvm_1_1runtime_1_1vm_1_1VirtualMachine.html | 48 +-
.../doxygen/classtvm_1_1s__tir_1_1Instruction.html | 8 +-
.../classtvm_1_1s__tir_1_1InstructionKind.html | 6 +-
.../classtvm_1_1s__tir_1_1InstructionKindNode.html | 28 +-
...sstvm_1_1s__tir_1_1InstructionKindRegEntry.html | 22 +-
.../classtvm_1_1s__tir_1_1InstructionNode.html | 16 +-
...stvm_1_1s__tir_1_1LinearCongruentialEngine.html | 42 +-
.../doxygen/classtvm_1_1s__tir_1_1LoopRVNode.html | 4 +-
...lasstvm_1_1s__tir_1_1MatchBufferRegionNode.html | 8 +-
.../doxygen/classtvm_1_1s__tir_1_1SBlockNode.html | 36 +-
.../classtvm_1_1s__tir_1_1SBlockRVNode.html | 4 +-
.../classtvm_1_1s__tir_1_1SBlockRealize.html | 2 +-
.../classtvm_1_1s__tir_1_1SBlockRealizeNode.html | 14 +-
.../doxygen/classtvm_1_1s__tir_1_1Schedule.html | 20 +-
.../classtvm_1_1s__tir_1_1ScheduleNode.html | 640 +-
.../classtvm_1_1s__tir_1_1ScheduleState.html | 8 +-
.../classtvm_1_1s__tir_1_1ScheduleStateNode.html | 66 +-
.../classtvm_1_1s__tir_1_1StmtExprMutator.html | 188 +-
.../classtvm_1_1s__tir_1_1StmtExprVisitor.html | 178 +-
.../doxygen/classtvm_1_1s__tir_1_1StmtFunctor.html | 2 +-
...t_01tirx_1_1Stmt_01_6_00_01Args_8_8_8_08_4.html | 36 +-
.../classtvm_1_1s__tir_1_1TensorIntrin.html | 16 +-
.../classtvm_1_1s__tir_1_1TensorIntrinNode.html | 4 +-
.../api/doxygen/classtvm_1_1s__tir_1_1Trace.html | 8 +-
.../doxygen/classtvm_1_1s__tir_1_1TraceNode.html | 54 +-
...tvm_1_1s__tir_1_1meta__schedule_1_1ArgInfo.html | 22 +-
...1_1s__tir_1_1meta__schedule_1_1ArgInfoNode.html | 8 +-
...tvm_1_1s__tir_1_1meta__schedule_1_1Builder.html | 4 +-
..._tir_1_1meta__schedule_1_1BuilderInputNode.html | 4 +-
...1_1s__tir_1_1meta__schedule_1_1BuilderNode.html | 18 +-
...tir_1_1meta__schedule_1_1BuilderResultNode.html | 4 +-
...m_1_1s__tir_1_1meta__schedule_1_1CostModel.html | 4 +-
...1s__tir_1_1meta__schedule_1_1CostModelNode.html | 38 +-
...vm_1_1s__tir_1_1meta__schedule_1_1Database.html | 44 +-
..._1s__tir_1_1meta__schedule_1_1DatabaseNode.html | 82 +-
...1s__tir_1_1meta__schedule_1_1ExtractedTask.html | 4 +-
...tir_1_1meta__schedule_1_1ExtractedTaskNode.html | 12 +-
..._tir_1_1meta__schedule_1_1FeatureExtractor.html | 18 +-
..._1_1meta__schedule_1_1FeatureExtractorNode.html | 16 +-
...__tir_1_1meta__schedule_1_1MeasureCallback.html | 20 +-
...r_1_1meta__schedule_1_1MeasureCallbackNode.html | 26 +-
..._1_1meta__schedule_1_1MeasureCandidateNode.html | 4 +-
...tvm_1_1s__tir_1_1meta__schedule_1_1Mutator.html | 54 +-
...1_1s__tir_1_1meta__schedule_1_1MutatorNode.html | 28 +-
...vm_1_1s__tir_1_1meta__schedule_1_1Postproc.html | 86 +-
..._1s__tir_1_1meta__schedule_1_1PostprocNode.html | 28 +-
...vm_1_1s__tir_1_1meta__schedule_1_1Profiler.html | 16 +-
..._1s__tir_1_1meta__schedule_1_1ProfilerNode.html | 16 +-
...1s__tir_1_1meta__schedule_1_1PyBuilderNode.html | 14 +-
...__tir_1_1meta__schedule_1_1PyCostModelNode.html | 50 +-
...s__tir_1_1meta__schedule_1_1PyDatabaseNode.html | 108 +-
..._1meta__schedule_1_1PyFeatureExtractorNode.html | 18 +-
...1_1meta__schedule_1_1PyMeasureCallbackNode.html | 28 +-
...1s__tir_1_1meta__schedule_1_1PyMutatorNode.html | 34 +-
...s__tir_1_1meta__schedule_1_1PyPostprocNode.html | 36 +-
..._1s__tir_1_1meta__schedule_1_1PyRunnerNode.html | 14 +-
...ir_1_1meta__schedule_1_1PyScheduleRuleNode.html | 36 +-
..._1_1meta__schedule_1_1PySearchStrategyNode.html | 68 +-
..._1_1meta__schedule_1_1PySpaceGeneratorNode.html | 34 +-
...r_1_1meta__schedule_1_1PyTaskSchedulerNode.html | 48 +-
...stvm_1_1s__tir_1_1meta__schedule_1_1Runner.html | 8 +-
..._1s__tir_1_1meta__schedule_1_1RunnerFuture.html | 8 +-
..._tir_1_1meta__schedule_1_1RunnerFutureNode.html | 18 +-
...__tir_1_1meta__schedule_1_1RunnerInputNode.html | 4 +-
..._1_1s__tir_1_1meta__schedule_1_1RunnerNode.html | 20 +-
..._tir_1_1meta__schedule_1_1RunnerResultNode.html | 4 +-
..._1s__tir_1_1meta__schedule_1_1ScheduleRule.html | 154 +-
..._tir_1_1meta__schedule_1_1ScheduleRuleNode.html | 30 +-
...1_1s__tir_1_1meta__schedule_1_1ScopedTimer.html | 4 +-
...s__tir_1_1meta__schedule_1_1SearchStrategy.html | 58 +-
...ir_1_1meta__schedule_1_1SearchStrategyNode.html | 48 +-
...s__tir_1_1meta__schedule_1_1SpaceGenerator.html | 32 +-
...ir_1_1meta__schedule_1_1SpaceGeneratorNode.html | 28 +-
..._1_1s__tir_1_1meta__schedule_1_1TaskRecord.html | 4 +-
...s__tir_1_1meta__schedule_1_1TaskRecordNode.html | 32 +-
...1s__tir_1_1meta__schedule_1_1TaskScheduler.html | 16 +-
...tir_1_1meta__schedule_1_1TaskSchedulerNode.html | 52 +-
..._1_1s__tir_1_1meta__schedule_1_1TensorInfo.html | 18 +-
...s__tir_1_1meta__schedule_1_1TensorInfoNode.html | 12 +-
...1_1s__tir_1_1meta__schedule_1_1TuneContext.html | 8 +-
...__tir_1_1meta__schedule_1_1TuneContextNode.html | 22 +-
..._1s__tir_1_1meta__schedule_1_1TuningRecord.html | 8 +-
..._tir_1_1meta__schedule_1_1TuningRecordNode.html | 12 +-
...vm_1_1s__tir_1_1meta__schedule_1_1Workload.html | 10 +-
..._1s__tir_1_1meta__schedule_1_1WorkloadNode.html | 10 +-
...stvm_1_1script_1_1ir__builder_1_1IRBuilder.html | 52 +-
...1_1script_1_1ir__builder_1_1IRBuilderFrame.html | 26 +-
...1ir__builder_1_1IRBuilderFrameNode-members.html | 4 +-
...cript_1_1ir__builder_1_1IRBuilderFrameNode.html | 109 +-
..._builder_1_1IRBuilderFrameNode__coll__graph.svg | 129 +-
...ilder_1_1IRBuilderFrameNode__inherit__graph.svg | 1120 +-
...__builder_1_1IRBuilderFrame__inherit__graph.svg | 204 +-
...pt_1_1ir__builder_1_1IRBuilderNode-members.html | 7 +-
..._1_1script_1_1ir__builder_1_1IRBuilderNode.html | 154 +-
..._1ir__builder_1_1IRBuilderNode__coll__graph.svg | 92 +-
...r__builder_1_1IRBuilderNode__inherit__graph.svg | 92 +-
...1script_1_1ir__builder_1_1details_1_1Namer.html | 18 +-
..._1_1details_1_1SourceSpanAccessor-members.html} | 20 +-
..._builder_1_1details_1_1SourceSpanAccessor.html} | 42 +-
...1details_1_1SourceSpanAccessor__coll__graph.svg | 28 +
...ript_1_1ir__builder_1_1ir_1_1IRModuleFrame.html | 6 +-
...builder_1_1ir_1_1IRModuleFrameNode-members.html | 4 +-
..._1_1ir__builder_1_1ir_1_1IRModuleFrameNode.html | 34 +-
...der_1_1ir_1_1IRModuleFrameNode__coll__graph.svg | 133 +-
..._1_1ir_1_1IRModuleFrameNode__inherit__graph.svg | 52 +-
...1ir__builder_1_1relax_1_1BindingBlockFrame.html | 8 +-
..._1_1relax_1_1BindingBlockFrameNode-members.html | 21 +-
..._builder_1_1relax_1_1BindingBlockFrameNode.html | 61 +-
...relax_1_1BindingBlockFrameNode__coll__graph.svg | 211 +-
...ax_1_1BindingBlockFrameNode__inherit__graph.svg | 146 +-
...cript_1_1ir__builder_1_1relax_1_1ElseFrame.html | 8 +-
..._builder_1_1relax_1_1ElseFrameNode-members.html | 6 +-
...t_1_1ir__builder_1_1relax_1_1ElseFrameNode.html | 40 +-
...lder_1_1relax_1_1ElseFrameNode__coll__graph.svg | 205 +-
...r_1_1relax_1_1ElseFrameNode__inherit__graph.svg | 52 +-
...t_1_1ir__builder_1_1relax_1_1FunctionFrame.html | 8 +-
...lder_1_1relax_1_1FunctionFrameNode-members.html | 20 +-
...1ir__builder_1_1relax_1_1FunctionFrameNode.html | 157 +-
..._1_1relax_1_1FunctionFrameNode__coll__graph.svg | 319 +-
...1relax_1_1FunctionFrameNode__inherit__graph.svg | 190 +-
...1script_1_1ir__builder_1_1relax_1_1IfFrame.html | 8 +-
...r__builder_1_1relax_1_1IfFrameNode-members.html | 4 +-
...ipt_1_1ir__builder_1_1relax_1_1IfFrameNode.html | 34 +-
...uilder_1_1relax_1_1IfFrameNode__coll__graph.svg | 241 +-
...der_1_1relax_1_1IfFrameNode__inherit__graph.svg | 52 +-
...ript_1_1ir__builder_1_1relax_1_1RelaxFrame.html | 8 +-
...builder_1_1relax_1_1RelaxFrameNode-members.html | 4 +-
..._1_1ir__builder_1_1relax_1_1RelaxFrameNode.html | 28 +-
...der_1_1relax_1_1RelaxFrameNode__coll__graph.svg | 133 +-
..._1_1relax_1_1RelaxFrameNode__inherit__graph.svg | 372 +-
...pt_1_1ir__builder_1_1relax_1_1SeqExprFrame.html | 8 +-
...ilder_1_1relax_1_1SeqExprFrameNode-members.html | 6 +-
..._1ir__builder_1_1relax_1_1SeqExprFrameNode.html | 34 +-
...r_1_1relax_1_1SeqExprFrameNode__coll__graph.svg | 161 +-
..._1relax_1_1SeqExprFrameNode__inherit__graph.svg | 262 +-
...cript_1_1ir__builder_1_1relax_1_1ThenFrame.html | 8 +-
..._builder_1_1relax_1_1ThenFrameNode-members.html | 6 +-
...t_1_1ir__builder_1_1relax_1_1ThenFrameNode.html | 36 +-
...lder_1_1relax_1_1ThenFrameNode__coll__graph.svg | 205 +-
...r_1_1relax_1_1ThenFrameNode__inherit__graph.svg | 52 +-
...uilder_1_1tirx_1_1AllocBufferFrame-members.html | 98 -
...1_1ir__builder_1_1tirx_1_1AllocBufferFrame.html | 199 -
...er_1_1tirx_1_1AllocBufferFrameNode-members.html | 100 -
...r__builder_1_1tirx_1_1AllocBufferFrameNode.html | 267 -
..._1tirx_1_1AllocBufferFrameNode__coll__graph.svg | 262 -
...irx_1_1AllocBufferFrameNode__inherit__graph.svg | 128 -
...er_1_1tirx_1_1AllocBufferFrame__coll__graph.svg | 118 -
...1_1tirx_1_1AllocBufferFrame__inherit__graph.svg | 118 -
...ript_1_1ir__builder_1_1tirx_1_1AssertFrame.html | 8 +-
...builder_1_1tirx_1_1AssertFrameNode-members.html | 6 +-
..._1_1ir__builder_1_1tirx_1_1AssertFrameNode.html | 32 +-
...der_1_1tirx_1_1AssertFrameNode__coll__graph.svg | 439 +-
..._1_1tirx_1_1AssertFrameNode__inherit__graph.svg | 52 +-
...script_1_1ir__builder_1_1tirx_1_1AttrFrame.html | 8 +-
...__builder_1_1tirx_1_1AttrFrameNode-members.html | 6 +-
...pt_1_1ir__builder_1_1tirx_1_1AttrFrameNode.html | 36 +-
...ilder_1_1tirx_1_1AttrFrameNode__coll__graph.svg | 251 +-
...er_1_1tirx_1_1AttrFrameNode__inherit__graph.svg | 52 +-
...t_1_1ir__builder_1_1tirx_1_1BlockInitFrame.html | 8 +-
...lder_1_1tirx_1_1BlockInitFrameNode-members.html | 4 +-
...1ir__builder_1_1tirx_1_1BlockInitFrameNode.html | 34 +-
..._1_1tirx_1_1BlockInitFrameNode__coll__graph.svg | 165 +-
...1tirx_1_1BlockInitFrameNode__inherit__graph.svg | 52 +-
..._1_1ir__builder_1_1tirx_1_1DeclBufferFrame.html | 8 +-
...der_1_1tirx_1_1DeclBufferFrameNode-members.html | 4 +-
...ir__builder_1_1tirx_1_1DeclBufferFrameNode.html | 36 +-
...1_1tirx_1_1DeclBufferFrameNode__coll__graph.svg | 383 +-
...tirx_1_1DeclBufferFrameNode__inherit__graph.svg | 52 +-
...script_1_1ir__builder_1_1tirx_1_1ElseFrame.html | 8 +-
...__builder_1_1tirx_1_1ElseFrameNode-members.html | 4 +-
...pt_1_1ir__builder_1_1tirx_1_1ElseFrameNode.html | 34 +-
...ilder_1_1tirx_1_1ElseFrameNode__coll__graph.svg | 165 +-
...er_1_1tirx_1_1ElseFrameNode__inherit__graph.svg | 52 +-
...1script_1_1ir__builder_1_1tirx_1_1ForFrame.html | 8 +-
...r__builder_1_1tirx_1_1ForFrameNode-members.html | 21 +-
...ipt_1_1ir__builder_1_1tirx_1_1ForFrameNode.html | 76 +-
...uilder_1_1tirx_1_1ForFrameNode__coll__graph.svg | 211 +-
...der_1_1tirx_1_1ForFrameNode__inherit__graph.svg | 146 +-
...script_1_1ir__builder_1_1tirx_1_1HintFrame.html | 8 +-
...__builder_1_1tirx_1_1HintFrameNode-members.html | 6 +-
...pt_1_1ir__builder_1_1tirx_1_1HintFrameNode.html | 32 +-
...ilder_1_1tirx_1_1HintFrameNode__coll__graph.svg | 165 +-
...er_1_1tirx_1_1HintFrameNode__inherit__graph.svg | 52 +-
..._1script_1_1ir__builder_1_1tirx_1_1IfFrame.html | 8 +-
...ir__builder_1_1tirx_1_1IfFrameNode-members.html | 4 +-
...ript_1_1ir__builder_1_1tirx_1_1IfFrameNode.html | 32 +-
...builder_1_1tirx_1_1IfFrameNode__coll__graph.svg | 353 +-
...lder_1_1tirx_1_1IfFrameNode__inherit__graph.svg | 52 +-
..._1ir__builder_1_1tirx_1_1LaunchThreadFrame.html | 8 +-
...r_1_1tirx_1_1LaunchThreadFrameNode-members.html | 6 +-
...__builder_1_1tirx_1_1LaunchThreadFrameNode.html | 32 +-
...1tirx_1_1LaunchThreadFrameNode__coll__graph.svg | 443 +-
...rx_1_1LaunchThreadFrameNode__inherit__graph.svg | 52 +-
...pt_1_1ir__builder_1_1tirx_1_1PrimFuncFrame.html | 8 +-
...ilder_1_1tirx_1_1PrimFuncFrameNode-members.html | 14 +-
..._1ir__builder_1_1tirx_1_1PrimFuncFrameNode.html | 121 +-
...r_1_1tirx_1_1PrimFuncFrameNode__coll__graph.svg | 203 +-
..._1tirx_1_1PrimFuncFrameNode__inherit__graph.svg | 150 +-
...ript_1_1ir__builder_1_1tirx_1_1SBlockFrame.html | 8 +-
...builder_1_1tirx_1_1SBlockFrameNode-members.html | 18 +-
..._1_1ir__builder_1_1tirx_1_1SBlockFrameNode.html | 40 +-
...der_1_1tirx_1_1SBlockFrameNode__coll__graph.svg | 165 +-
..._1_1tirx_1_1SBlockFrameNode__inherit__graph.svg | 52 +-
...1script_1_1ir__builder_1_1tirx_1_1TIRFrame.html | 10 +-
...r__builder_1_1tirx_1_1TIRFrameNode-members.html | 4 +-
...ipt_1_1ir__builder_1_1tirx_1_1TIRFrameNode.html | 28 +-
...uilder_1_1tirx_1_1TIRFrameNode__coll__graph.svg | 133 +-
...der_1_1tirx_1_1TIRFrameNode__inherit__graph.svg | 778 +-
...builder_1_1tirx_1_1TIRFrame__inherit__graph.svg | 258 +-
...script_1_1ir__builder_1_1tirx_1_1ThenFrame.html | 8 +-
...__builder_1_1tirx_1_1ThenFrameNode-members.html | 4 +-
...pt_1_1ir__builder_1_1tirx_1_1ThenFrameNode.html | 34 +-
...ilder_1_1tirx_1_1ThenFrameNode__coll__graph.svg | 165 +-
...er_1_1tirx_1_1ThenFrameNode__inherit__graph.svg | 52 +-
...cript_1_1ir__builder_1_1tirx_1_1WhileFrame.html | 8 +-
..._builder_1_1tirx_1_1WhileFrameNode-members.html | 4 +-
...t_1_1ir__builder_1_1tirx_1_1WhileFrameNode.html | 32 +-
...lder_1_1tirx_1_1WhileFrameNode__coll__graph.svg | 345 +-
...r_1_1tirx_1_1WhileFrameNode__inherit__graph.svg | 52 +-
...classtvm_1_1script_1_1printer_1_1AssertDoc.html | 4 +-
...stvm_1_1script_1_1printer_1_1AssertDocNode.html | 12 +-
...classtvm_1_1script_1_1printer_1_1AssignDoc.html | 4 +-
...stvm_1_1script_1_1printer_1_1AssignDocNode.html | 12 +-
...stvm_1_1script_1_1printer_1_1AttrAccessDoc.html | 6 +-
..._1_1script_1_1printer_1_1AttrAccessDocNode.html | 20 +-
.../classtvm_1_1script_1_1printer_1_1BreakDoc.html | 4 +-
...sstvm_1_1script_1_1printer_1_1BreakDocNode.html | 12 +-
.../classtvm_1_1script_1_1printer_1_1CallDoc.html | 6 +-
...asstvm_1_1script_1_1printer_1_1CallDocNode.html | 20 +-
.../classtvm_1_1script_1_1printer_1_1ClassDoc.html | 4 +-
...sstvm_1_1script_1_1printer_1_1ClassDocNode.html | 12 +-
...lasstvm_1_1script_1_1printer_1_1CommentDoc.html | 4 +-
...tvm_1_1script_1_1printer_1_1CommentDocNode.html | 12 +-
...asstvm_1_1script_1_1printer_1_1ContinueDoc.html | 4 +-
...vm_1_1script_1_1printer_1_1ContinueDocNode.html | 12 +-
.../classtvm_1_1script_1_1printer_1_1DictDoc.html | 6 +-
...asstvm_1_1script_1_1printer_1_1DictDocNode.html | 20 +-
.../classtvm_1_1script_1_1printer_1_1Doc.html | 2 +-
.../classtvm_1_1script_1_1printer_1_1DocNode.html | 12 +-
...sstvm_1_1script_1_1printer_1_1DocStringDoc.html | 6 +-
...m_1_1script_1_1printer_1_1DocStringDocNode.html | 12 +-
.../classtvm_1_1script_1_1printer_1_1ExprDoc.html | 6 +-
...asstvm_1_1script_1_1printer_1_1ExprDocNode.html | 24 +-
...asstvm_1_1script_1_1printer_1_1ExprStmtDoc.html | 4 +-
...vm_1_1script_1_1printer_1_1ExprStmtDocNode.html | 12 +-
...stvm_1_1script_1_1printer_1_1ExprStringDoc.html | 10 +-
..._1_1script_1_1printer_1_1ExprStringDocNode.html | 20 +-
.../classtvm_1_1script_1_1printer_1_1ForDoc.html | 4 +-
...lasstvm_1_1script_1_1printer_1_1ForDocNode.html | 12 +-
.../classtvm_1_1script_1_1printer_1_1Frame.html | 14 +-
...classtvm_1_1script_1_1printer_1_1FrameNode.html | 42 +-
...asstvm_1_1script_1_1printer_1_1FunctionDoc.html | 4 +-
...vm_1_1script_1_1printer_1_1FunctionDocNode.html | 12 +-
...asstvm_1_1script_1_1printer_1_1IRDocsifier.html | 12 +-
...1_1script_1_1printer_1_1IRDocsifierFunctor.html | 68 +-
...vm_1_1script_1_1printer_1_1IRDocsifierNode.html | 80 +-
.../classtvm_1_1script_1_1printer_1_1IdDoc.html | 6 +-
...classtvm_1_1script_1_1printer_1_1IdDocNode.html | 20 +-
.../classtvm_1_1script_1_1printer_1_1IfDoc.html | 4 +-
...classtvm_1_1script_1_1printer_1_1IfDocNode.html | 12 +-
.../classtvm_1_1script_1_1printer_1_1IndexDoc.html | 6 +-
...sstvm_1_1script_1_1printer_1_1IndexDocNode.html | 20 +-
...classtvm_1_1script_1_1printer_1_1LambdaDoc.html | 6 +-
...stvm_1_1script_1_1printer_1_1LambdaDocNode.html | 20 +-
.../classtvm_1_1script_1_1printer_1_1ListDoc.html | 6 +-
...asstvm_1_1script_1_1printer_1_1ListDocNode.html | 20 +-
...lasstvm_1_1script_1_1printer_1_1LiteralDoc.html | 70 +-
...tvm_1_1script_1_1printer_1_1LiteralDocNode.html | 20 +-
...classtvm_1_1script_1_1printer_1_1OpCallDoc.html | 4 +-
...stvm_1_1script_1_1printer_1_1OpCallDocNode.html | 12 +-
...sstvm_1_1script_1_1printer_1_1OperationDoc.html | 6 +-
...m_1_1script_1_1printer_1_1OperationDocNode.html | 22 +-
...classtvm_1_1script_1_1printer_1_1ReturnDoc.html | 4 +-
...stvm_1_1script_1_1printer_1_1ReturnDocNode.html | 12 +-
.../classtvm_1_1script_1_1printer_1_1ScopeDoc.html | 4 +-
...sstvm_1_1script_1_1printer_1_1ScopeDocNode.html | 12 +-
.../classtvm_1_1script_1_1printer_1_1SliceDoc.html | 2 +-
...sstvm_1_1script_1_1printer_1_1SliceDocNode.html | 10 +-
...sstvm_1_1script_1_1printer_1_1StmtBlockDoc.html | 2 +-
...m_1_1script_1_1printer_1_1StmtBlockDocNode.html | 10 +-
.../classtvm_1_1script_1_1printer_1_1StmtDoc.html | 4 +-
...asstvm_1_1script_1_1printer_1_1StmtDocNode.html | 10 +-
.../classtvm_1_1script_1_1printer_1_1TupleDoc.html | 6 +-
...sstvm_1_1script_1_1printer_1_1TupleDocNode.html | 20 +-
.../classtvm_1_1script_1_1printer_1_1WhileDoc.html | 4 +-
...sstvm_1_1script_1_1printer_1_1WhileDocNode.html | 12 +-
.../classtvm_1_1support_1_1NVTXScopedRange.html | 20 +-
.../api/doxygen/classtvm_1_1support_1_1Stream.html | 64 +-
.../api/doxygen/classtvm_1_1sym_1_1Analyzer.html | 2 +-
.../doxygen/classtvm_1_1sym_1_1AnalyzerObj.html | 90 +-
.../classtvm_1_1sym_1_1CanonicalSimplifier.html | 24 +-
.../doxygen/classtvm_1_1sym_1_1ConstIntBound.html | 14 +-
.../classtvm_1_1sym_1_1ConstIntBoundAnalyzer.html | 50 +-
.../classtvm_1_1sym_1_1ConstIntBoundNode.html | 24 +-
.../classtvm_1_1sym_1_1ConstraintContext.html | 14 +-
.../api/doxygen/classtvm_1_1sym_1_1IntSet.html | 86 +-
.../doxygen/classtvm_1_1sym_1_1IntSetAnalyzer.html | 44 +-
.../doxygen/classtvm_1_1sym_1_1IterMapExpr.html | 22 +-
.../classtvm_1_1sym_1_1IterMapExprNode.html | 10 +-
.../doxygen/classtvm_1_1sym_1_1IterMapResult.html | 2 +-
.../classtvm_1_1sym_1_1IterMapResultNode.html | 4 +-
.../doxygen/classtvm_1_1sym_1_1IterMarkNode.html | 8 +-
.../doxygen/classtvm_1_1sym_1_1IterSplitExpr.html | 20 +-
.../classtvm_1_1sym_1_1IterSplitExprNode.html | 16 +-
.../doxygen/classtvm_1_1sym_1_1IterSumExpr.html | 20 +-
.../classtvm_1_1sym_1_1IterSumExprNode.html | 16 +-
.../api/doxygen/classtvm_1_1sym_1_1ModularSet.html | 6 +-
.../classtvm_1_1sym_1_1ModularSetAnalyzer.html | 24 +-
.../doxygen/classtvm_1_1sym_1_1ModularSetNode.html | 16 +-
.../classtvm_1_1sym_1_1RewriteSimplifier.html | 58 +-
...tvm_1_1sym_1_1TransitiveComparisonAnalyzer.html | 48 +-
.../api/doxygen/classtvm_1_1sym_1_1Z3Prover.html | 82 +-
.../classtvm_1_1te_1_1BaseComputeOpNode.html | 18 +-
.../doxygen/classtvm_1_1te_1_1CommReducerNode.html | 10 +-
.../api/doxygen/classtvm_1_1te_1_1ComputeOp.html | 8 +-
.../doxygen/classtvm_1_1te_1_1ComputeOpNode.html | 22 +-
.../api/doxygen/classtvm_1_1te_1_1ExternOp.html | 8 +-
.../doxygen/classtvm_1_1te_1_1ExternOpNode.html | 22 +-
.../api/doxygen/classtvm_1_1te_1_1Operation.html | 14 +-
.../doxygen/classtvm_1_1te_1_1OperationNode.html | 28 +-
.../doxygen/classtvm_1_1te_1_1PlaceholderOp.html | 8 +-
.../classtvm_1_1te_1_1PlaceholderOpNode.html | 22 +-
.../api/doxygen/classtvm_1_1te_1_1Reduce.html | 26 +-
.../api/doxygen/classtvm_1_1te_1_1ReduceNode.html | 18 +-
.../api/doxygen/classtvm_1_1te_1_1ScanOp.html | 10 +-
.../api/doxygen/classtvm_1_1te_1_1ScanOpNode.html | 22 +-
.../api/doxygen/classtvm_1_1te_1_1Tensor.html | 44 +-
.../api/doxygen/classtvm_1_1te_1_1TensorNode.html | 28 +-
.../doxygen/classtvm_1_1te_1_1Tensor_1_1Slice.html | 8 +-
.../doxygen/classtvm_1_1tirx_1_1AllocBuffer.html | 4 +-
.../classtvm_1_1tirx_1_1AllocBufferNode.html | 14 +-
.../classtvm_1_1tirx_1_1AssertStmtNode.html | 14 +-
.../doxygen/classtvm_1_1tirx_1_1AttrStmtNode.html | 14 +-
.../api/doxygen/classtvm_1_1tirx_1_1Axis.html | 30 +-
.../doxygen/classtvm_1_1tirx_1_1AxisAttrMap.html | 22 +-
.../api/doxygen/classtvm_1_1tirx_1_1AxisNode.html | 44 +-
.../doxygen/classtvm_1_1tirx_1_1AxisRegEntry.html | 54 +-
.../api/doxygen/classtvm_1_1tirx_1_1BindNode.html | 14 +-
.../api/doxygen/classtvm_1_1tirx_1_1BreakNode.html | 14 +-
...asstvm_1_1tirx_1_1BufferAxisGraphExtractor.html | 164 +-
.../classtvm_1_1tirx_1_1BufferAxisHash.html | 6 +-
.../classtvm_1_1tirx_1_1BufferRegionType.html | 4 +-
.../classtvm_1_1tirx_1_1BufferRegionTypeNode.html | 12 +-
.../classtvm_1_1tirx_1_1BufferStoreNode.html | 18 +-
.../doxygen/classtvm_1_1tirx_1_1BufferType.html | 12 +-
.../classtvm_1_1tirx_1_1BufferTypeNode.html | 34 +-
.../api/doxygen/classtvm_1_1tirx_1_1BufferVar.html | 92 +-
.../doxygen/classtvm_1_1tirx_1_1ComposeLayout.html | 12 +-
.../classtvm_1_1tirx_1_1ComposeLayoutNode.html | 110 +-
.../doxygen/classtvm_1_1tirx_1_1ContinueNode.html | 14 +-
.../classtvm_1_1tirx_1_1DeclBufferNode.html | 14 +-
.../classtvm_1_1tirx_1_1DependencyNode.html | 4 +-
.../classtvm_1_1tirx_1_1DispatchContext.html | 6 +-
.../classtvm_1_1tirx_1_1DispatchContextNode.html | 28 +-
.../api/doxygen/classtvm_1_1tirx_1_1Evaluate.html | 4 +-
.../doxygen/classtvm_1_1tirx_1_1EvaluateNode.html | 14 +-
.../api/doxygen/classtvm_1_1tirx_1_1ExecScope.html | 4 +-
.../doxygen/classtvm_1_1tirx_1_1ExecScopeNode.html | 10 +-
.../doxygen/classtvm_1_1tirx_1_1ExprFunctor.html | 2 +-
...R_07const_01Expr_01_6_00_01Args_8_8_8_08_4.html | 404 +-
.../api/doxygen/classtvm_1_1tirx_1_1ForNode.html | 18 +-
.../classtvm_1_1tirx_1_1IfThenElseNode.html | 14 +-
.../api/doxygen/classtvm_1_1tirx_1_1IndexMap.html | 24 +-
.../doxygen/classtvm_1_1tirx_1_1IndexMapNode.html | 46 +-
.../api/doxygen/classtvm_1_1tirx_1_1IterNode.html | 8 +-
.../api/doxygen/classtvm_1_1tirx_1_1IterVar.html | 2 +-
.../doxygen/classtvm_1_1tirx_1_1IterVarNode.html | 12 +-
.../classtvm_1_1tirx_1_1LambdaExprNode.html | 12 +-
.../doxygen/classtvm_1_1tirx_1_1LayoutNode.html | 110 +-
.../api/doxygen/classtvm_1_1tirx_1_1PrimFunc.html | 6 +-
.../doxygen/classtvm_1_1tirx_1_1PrimFuncNode.html | 44 +-
.../doxygen/classtvm_1_1tirx_1_1ReturnNode.html | 14 +-
.../classtvm_1_1tirx_1_1SBijectiveLayout.html | 16 +-
.../classtvm_1_1tirx_1_1SBijectiveLayoutNode.html | 4 +-
...asstvm_1_1tirx_1_1SBlockDependenceInfoNode.html | 12 +-
.../doxygen/classtvm_1_1tirx_1_1SBlockScope.html | 4 +-
.../classtvm_1_1tirx_1_1SBlockScopeNode.html | 12 +-
.../api/doxygen/classtvm_1_1tirx_1_1SLayout.html | 108 +-
.../doxygen/classtvm_1_1tirx_1_1SLayoutAxis.html | 48 +-
.../doxygen/classtvm_1_1tirx_1_1SLayoutNode.html | 4 +-
.../classtvm_1_1tirx_1_1SRefTreeCreator.html | 164 +-
.../doxygen/classtvm_1_1tirx_1_1ScopeIdDef.html | 6 +-
.../classtvm_1_1tirx_1_1ScopeIdDefNode.html | 8 +-
.../classtvm_1_1tirx_1_1ScopeIdDefStmtNode.html | 14 +-
.../classtvm_1_1tirx_1_1ScopeIdDefVerifier.html | 12 +-
.../classtvm_1_1tirx_1_1ScopeIdResolve.html | 22 +-
.../api/doxygen/classtvm_1_1tirx_1_1SeqStmt.html | 14 +-
.../doxygen/classtvm_1_1tirx_1_1SeqStmtNode.html | 22 +-
.../classtvm_1_1tirx_1_1SeqStmt_1_1Flattener.html | 22 +-
.../classtvm_1_1tirx_1_1StmtExprMutator.html | 228 +-
.../classtvm_1_1tirx_1_1StmtExprVisitor.html | 236 +-
.../doxygen/classtvm_1_1tirx_1_1StmtFunctor.html | 2 +-
...R_07const_01Stmt_01_6_00_01Args_8_8_8_08_4.html | 198 +-
.../api/doxygen/classtvm_1_1tirx_1_1StmtNode.html | 18 +-
.../api/doxygen/classtvm_1_1tirx_1_1StmtSRef.html | 14 +-
.../doxygen/classtvm_1_1tirx_1_1StmtSRefNode.html | 28 +-
.../doxygen/classtvm_1_1tirx_1_1TensorMapType.html | 4 +-
.../classtvm_1_1tirx_1_1TensorMapTypeNode.html | 12 +-
.../classtvm_1_1tirx_1_1TileLayoutNode.html | 110 +-
.../classtvm_1_1tirx_1_1TilePrimitiveCall.html | 6 +-
.../classtvm_1_1tirx_1_1TilePrimitiveCallNode.html | 14 +-
.../api/doxygen/classtvm_1_1tirx_1_1WhileNode.html | 14 +-
.../api/doxygen/classtvm_1_1transform_1_1Pass.html | 9 +-
.../classtvm_1_1transform_1_1PassContext.html | 72 +-
.../classtvm_1_1transform_1_1PassContextNode.html | 40 +-
.../doxygen/classtvm_1_1transform_1_1PassInfo.html | 6 +-
.../classtvm_1_1transform_1_1PassInfoNode.html | 14 +-
.../doxygen/classtvm_1_1transform_1_1PassNode.html | 16 +-
.../classtvm_1_1transform_1_1Sequential.html | 16 +-
.../classtvm_1_1transform_1_1SequentialNode.html | 20 +-
docs/reference/api/doxygen/codegen_8h.html | 10 +-
docs/reference/api/doxygen/codegen_8h__incl.svg | 1213 +-
docs/reference/api/doxygen/codegen_8h_source.html | 15 +-
docs/reference/api/doxygen/config_8h.html | 2 +-
docs/reference/api/doxygen/config_8h_source.html | 23 +-
.../api/doxygen/config__schema_8h_source.html | 67 +-
docs/reference/api/doxygen/constant__utils_8h.html | 2 +-
.../api/doxygen/constant__utils_8h__incl.svg | 1785 +--
.../api/doxygen/constant__utils_8h_source.html | 40 +-
docs/reference/api/doxygen/cost__model_8h.html | 2 +-
.../reference/api/doxygen/cost__model_8h__incl.svg | 2639 ++---
.../api/doxygen/cost__model_8h_source.html | 30 +-
docs/reference/api/doxygen/create_8h.html | 2 +-
docs/reference/api/doxygen/create_8h__incl.svg | 1502 +--
docs/reference/api/doxygen/create_8h_source.html | 5 +-
docs/reference/api/doxygen/cublas_8h.html | 6 +-
docs/reference/api/doxygen/cublas_8h__incl.svg | 1813 +--
docs/reference/api/doxygen/cublas_8h_source.html | 34 +-
.../api/doxygen/cuda__ipc__memory_8h_source.html | 3 +-
docs/reference/api/doxygen/data__layout_8h.html | 2 +-
.../api/doxygen/data__layout_8h__incl.svg | 1617 +--
.../api/doxygen/data__layout_8h_source.html | 124 +-
docs/reference/api/doxygen/database_8h.html | 2 +-
docs/reference/api/doxygen/database_8h__incl.svg | 2663 ++---
docs/reference/api/doxygen/database_8h_source.html | 115 +-
.../api/doxygen/dataflow__matcher_8h.html | 10 +-
.../api/doxygen/dataflow__matcher_8h__incl.svg | 1588 +--
.../api/doxygen/dataflow__matcher_8h_source.html | 15 +-
.../api/doxygen/dataflow__pattern_8h.html | 28 +-
.../api/doxygen/dataflow__pattern_8h__incl.svg | 1566 +--
.../api/doxygen/dataflow__pattern_8h_source.html | 202 +-
.../api/doxygen/dataflow__pattern__functor_8h.html | 2 +-
.../dataflow__pattern__functor_8h__incl.svg | 1584 +--
.../dataflow__pattern__functor_8h_source.html | 71 +-
docs/reference/api/doxygen/datatype_8h.html | 2 +-
docs/reference/api/doxygen/datatype_8h__incl.svg | 1502 +--
docs/reference/api/doxygen/datatype_8h_source.html | 9 +-
docs/reference/api/doxygen/dense_8h.html | 4 +-
docs/reference/api/doxygen/dense_8h__incl.svg | 1765 +--
docs/reference/api/doxygen/dense_8h_source.html | 32 +-
.../api/doxygen/detail_2broadcast_8h.html | 2 +-
.../api/doxygen/detail_2broadcast_8h__incl.svg | 1847 +--
.../api/doxygen/detail_2broadcast_8h_source.html | 153 +-
docs/reference/api/doxygen/device__api_8h.html | 30 +-
.../api/doxygen/device__api_8h_source.html | 128 +-
docs/reference/api/doxygen/dilate_8h.html | 4 +-
docs/reference/api/doxygen/dilate_8h__incl.svg | 1785 +--
docs/reference/api/doxygen/dilate_8h_source.html | 44 +-
.../api/doxygen/disco__worker_8h_source.html | 6 +-
docs/reference/api/doxygen/distributed_8h.html | 2 +-
.../reference/api/doxygen/distributed_8h__incl.svg | 1758 +--
.../api/doxygen/distributed_8h_source.html | 3 +-
docs/reference/api/doxygen/doc_8h.html | 4 +-
docs/reference/api/doxygen/doc_8h_source.html | 121 +-
docs/reference/api/doxygen/einsum_8h.html | 6 +-
docs/reference/api/doxygen/einsum_8h__incl.svg | 1965 ++--
docs/reference/api/doxygen/einsum_8h_source.html | 8 +-
docs/reference/api/doxygen/elemwise_8h.html | 100 +-
docs/reference/api/doxygen/elemwise_8h__incl.svg | 2085 ++--
docs/reference/api/doxygen/elemwise_8h_source.html | 192 +-
.../reference/api/doxygen/env__func_8h_source.html | 45 +-
.../api/doxygen/exec__builder_8h_source.html | 26 +-
docs/reference/api/doxygen/exec__context_8h.html | 14 +-
.../api/doxygen/exec__context_8h__incl.svg | 1135 +-
.../api/doxygen/exec__context_8h_source.html | 52 +-
docs/reference/api/doxygen/exec__scope_8h.html | 12 +-
.../reference/api/doxygen/exec__scope_8h__incl.svg | 631 +-
.../api/doxygen/exec__scope_8h_source.html | 34 +-
.../api/doxygen/executable_8h_source.html | 77 +-
docs/reference/api/doxygen/extern_8h.html | 2 +-
docs/reference/api/doxygen/extern_8h__incl.svg | 1789 +--
docs/reference/api/doxygen/extern_8h_source.html | 48 +-
docs/reference/api/doxygen/extracted__task_8h.html | 2 +-
.../api/doxygen/extracted__task_8h__incl.svg | 1163 +-
.../api/doxygen/extracted__task_8h_source.html | 4 +-
.../api/doxygen/feature__extractor_8h.html | 2 +-
.../api/doxygen/feature__extractor_8h__incl.svg | 2377 ++--
.../api/doxygen/feature__extractor_8h_source.html | 22 +-
docs/reference/api/doxygen/flatten_8h.html | 4 +-
docs/reference/api/doxygen/flatten_8h__incl.svg | 1855 ++--
docs/reference/api/doxygen/flatten_8h_source.html | 36 +-
docs/reference/api/doxygen/functions_a.html | 5 +-
docs/reference/api/doxygen/functions_b.html | 5 +-
docs/reference/api/doxygen/functions_d.html | 1 +
docs/reference/api/doxygen/functions_e.html | 6 +-
docs/reference/api/doxygen/functions_f.html | 5 +-
docs/reference/api/doxygen/functions_func.html | 5 +-
docs/reference/api/doxygen/functions_func_e.html | 2 +-
docs/reference/api/doxygen/functions_func_g.html | 6 +-
docs/reference/api/doxygen/functions_func_i.html | 5 +-
docs/reference/api/doxygen/functions_func_r.html | 2 +-
docs/reference/api/doxygen/functions_func_s.html | 6 +-
docs/reference/api/doxygen/functions_func_t.html | 4 +-
docs/reference/api/doxygen/functions_func_v.html | 4 +-
docs/reference/api/doxygen/functions_g.html | 11 +-
docs/reference/api/doxygen/functions_i.html | 4 +-
docs/reference/api/doxygen/functions_k.html | 4 +-
docs/reference/api/doxygen/functions_l.html | 2 +
docs/reference/api/doxygen/functions_r.html | 6 +-
docs/reference/api/doxygen/functions_s.html | 9 +-
docs/reference/api/doxygen/functions_t.html | 8 +-
docs/reference/api/doxygen/functions_type.html | 4 +-
docs/reference/api/doxygen/functions_u.html | 2 +-
docs/reference/api/doxygen/functions_v.html | 4 +-
docs/reference/api/doxygen/functions_vars_b.html | 3 +-
docs/reference/api/doxygen/functions_vars_d.html | 1 +
docs/reference/api/doxygen/functions_vars_f.html | 1 +
docs/reference/api/doxygen/functions_vars_g.html | 1 +
docs/reference/api/doxygen/functions_vars_i.html | 1 +
docs/reference/api/doxygen/functions_vars_l.html | 2 +
docs/reference/api/doxygen/functions_vars_s.html | 1 +
docs/reference/api/doxygen/functions_vars_t.html | 1 +
docs/reference/api/doxygen/fuse_8h.html | 2 +-
docs/reference/api/doxygen/fuse_8h__incl.svg | 1753 +--
docs/reference/api/doxygen/fuse_8h_source.html | 10 +-
docs/reference/api/doxygen/group__norm_8h.html | 4 +-
.../reference/api/doxygen/group__norm_8h__incl.svg | 1777 +--
.../api/doxygen/group__norm_8h_source.html | 145 +-
docs/reference/api/doxygen/hierarchy.html | 151 +-
docs/reference/api/doxygen/image_8h.html | 2 +-
docs/reference/api/doxygen/image_8h__incl.svg | 1502 +--
docs/reference/api/doxygen/image_8h_source.html | 9 +-
docs/reference/api/doxygen/index_8h.html | 2 +-
docs/reference/api/doxygen/index_8h__incl.svg | 1502 +--
docs/reference/api/doxygen/index_8h_source.html | 5 +-
.../api/doxygen/index__map_8h_source.html | 30 +-
docs/reference/api/doxygen/inherit_graph_1.svg | 1627 ++-
docs/reference/api/doxygen/inherit_graph_10.svg | 4 +-
docs/reference/api/doxygen/inherit_graph_100.svg | 10 +-
docs/reference/api/doxygen/inherit_graph_101.svg | 35 +-
docs/reference/api/doxygen/inherit_graph_102.svg | 34 +-
docs/reference/api/doxygen/inherit_graph_103.svg | 10 +-
docs/reference/api/doxygen/inherit_graph_104.svg | 13 +-
docs/reference/api/doxygen/inherit_graph_105.svg | 13 +-
docs/reference/api/doxygen/inherit_graph_106.svg | 10 +-
docs/reference/api/doxygen/inherit_graph_107.svg | 10 +-
...inherit_graph_107.svg => inherit_graph_108.svg} | 0
docs/reference/api/doxygen/inherit_graph_11.svg | 4 +-
docs/reference/api/doxygen/inherit_graph_17.svg | 4 +-
docs/reference/api/doxygen/inherit_graph_18.svg | 4 +-
docs/reference/api/doxygen/inherit_graph_2.svg | 2431 ++--
docs/reference/api/doxygen/inherit_graph_29.svg | 4 +-
docs/reference/api/doxygen/inherit_graph_3.svg | 16 +-
docs/reference/api/doxygen/inherit_graph_30.svg | 8 +-
docs/reference/api/doxygen/inherit_graph_33.svg | 4 +-
docs/reference/api/doxygen/inherit_graph_38.svg | 4 +-
docs/reference/api/doxygen/inherit_graph_39.svg | 4 +-
docs/reference/api/doxygen/inherit_graph_4.svg | 24 +-
docs/reference/api/doxygen/inherit_graph_5.svg | 12 +-
docs/reference/api/doxygen/inherit_graph_6.svg | 32 +-
docs/reference/api/doxygen/inherit_graph_65.svg | 15 +-
docs/reference/api/doxygen/inherit_graph_66.svg | 15 +-
docs/reference/api/doxygen/inherit_graph_67.svg | 12 +-
docs/reference/api/doxygen/inherit_graph_68.svg | 12 +-
docs/reference/api/doxygen/inherit_graph_69.svg | 4 +-
docs/reference/api/doxygen/inherit_graph_70.svg | 4 +-
docs/reference/api/doxygen/inherit_graph_71.svg | 4 +-
docs/reference/api/doxygen/inherit_graph_72.svg | 4 +-
docs/reference/api/doxygen/inherit_graph_73.svg | 4 +-
docs/reference/api/doxygen/inherit_graph_74.svg | 4 +-
docs/reference/api/doxygen/inherit_graph_75.svg | 13 +-
docs/reference/api/doxygen/inherit_graph_76.svg | 10 +-
docs/reference/api/doxygen/inherit_graph_77.svg | 10 +-
docs/reference/api/doxygen/inherit_graph_78.svg | 10 +-
docs/reference/api/doxygen/inherit_graph_79.svg | 10 +-
docs/reference/api/doxygen/inherit_graph_8.svg | 4 +-
docs/reference/api/doxygen/inherit_graph_80.svg | 10 +-
docs/reference/api/doxygen/inherit_graph_81.svg | 10 +-
docs/reference/api/doxygen/inherit_graph_82.svg | 13 +-
docs/reference/api/doxygen/inherit_graph_83.svg | 13 +-
docs/reference/api/doxygen/inherit_graph_84.svg | 10 +-
docs/reference/api/doxygen/inherit_graph_85.svg | 10 +-
docs/reference/api/doxygen/inherit_graph_86.svg | 10 +-
docs/reference/api/doxygen/inherit_graph_87.svg | 10 +-
docs/reference/api/doxygen/inherit_graph_88.svg | 10 +-
docs/reference/api/doxygen/inherit_graph_89.svg | 10 +-
docs/reference/api/doxygen/inherit_graph_90.svg | 10 +-
docs/reference/api/doxygen/inherit_graph_91.svg | 10 +-
docs/reference/api/doxygen/inherit_graph_92.svg | 10 +-
docs/reference/api/doxygen/inherit_graph_93.svg | 10 +-
docs/reference/api/doxygen/inherit_graph_94.svg | 13 +-
docs/reference/api/doxygen/inherit_graph_95.svg | 13 +-
docs/reference/api/doxygen/inherit_graph_96.svg | 10 +-
docs/reference/api/doxygen/inherit_graph_97.svg | 13 +-
docs/reference/api/doxygen/inherit_graph_98.svg | 13 +-
docs/reference/api/doxygen/inherit_graph_99.svg | 13 +-
docs/reference/api/doxygen/inherits.html | 75 +-
docs/reference/api/doxygen/instance__norm_8h.html | 4 +-
.../api/doxygen/instance__norm_8h__incl.svg | 1765 +--
.../api/doxygen/instance__norm_8h_source.html | 102 +-
docs/reference/api/doxygen/instruction_8h.html | 8 +-
.../api/doxygen/instruction_8h_source.html | 14 +-
.../api/doxygen/instrument_8h_source.html | 9 +-
docs/reference/api/doxygen/int__set_8h.html | 34 +-
docs/reference/api/doxygen/int__set_8h_source.html | 59 +-
docs/reference/api/doxygen/io_8h_source.html | 21 +-
docs/reference/api/doxygen/ir_2attrs_8h.html | 12 +-
.../reference/api/doxygen/ir_2attrs_8h_source.html | 138 +-
docs/reference/api/doxygen/ir_2expr_8h.html | 14 +-
docs/reference/api/doxygen/ir_2expr_8h_source.html | 179 +-
.../api/doxygen/ir_2expr__functor_8h_source.html | 318 +-
docs/reference/api/doxygen/ir_2function_8h.html | 10 +-
.../api/doxygen/ir_2function_8h_source.html | 11 +-
.../reference/api/doxygen/ir_2global__info_8h.html | 3 +-
.../api/doxygen/ir_2global__info_8h__incl.svg | 39 +-
.../api/doxygen/ir_2global__info_8h_source.html | 48 +-
docs/reference/api/doxygen/ir_2op_8h_source.html | 97 +-
.../api/doxygen/ir_2op__attr__types_8h.html | 4 +-
.../api/doxygen/ir_2op__attr__types_8h_source.html | 24 +-
.../api/doxygen/ir_2prim_2builtin_8h.html | 12 +-
.../api/doxygen/ir_2prim_2builtin_8h_source.html | 14 +-
docs/reference/api/doxygen/ir_2prim_2expr_8h.html | 8 +-
.../api/doxygen/ir_2prim_2expr_8h_source.html | 154 +-
docs/reference/api/doxygen/ir_2prim_2op_8h.html | 304 +-
.../api/doxygen/ir_2prim_2op_8h_source.html | 151 +-
docs/reference/api/doxygen/ir_2transform_8h.html | 12 +-
.../api/doxygen/ir_2transform_8h__incl.svg | 687 +-
.../api/doxygen/ir_2transform_8h_source.html | 118 +-
docs/reference/api/doxygen/ir_2type_8h.html | 2 +-
docs/reference/api/doxygen/ir_2type_8h_source.html | 23 +-
docs/reference/api/doxygen/ir__docsifier_8h.html | 2 +-
.../api/doxygen/ir__docsifier_8h__incl.svg | 937 +-
.../api/doxygen/ir__docsifier_8h_source.html | 92 +-
.../doxygen/ir__docsifier__functor_8h_source.html | 99 +-
.../api/doxygen/iter__affine__map_8h.html | 12 +-
.../api/doxygen/iter__affine__map_8h_source.html | 61 +-
docs/reference/api/doxygen/layer__norm_8h.html | 4 +-
.../reference/api/doxygen/layer__norm_8h__incl.svg | 2777 ++---
.../api/doxygen/layer__norm_8h_source.html | 132 +-
docs/reference/api/doxygen/layout_8h.html | 12 +-
docs/reference/api/doxygen/layout_8h__incl.svg | 1057 +-
docs/reference/api/doxygen/layout_8h_source.html | 214 +-
docs/reference/api/doxygen/linear__algebra_8h.html | 2 +-
.../api/doxygen/linear__algebra_8h__incl.svg | 1502 +--
.../api/doxygen/linear__algebra_8h_source.html | 5 +-
.../api/doxygen/local__response__norm_8h.html | 4 +-
.../api/doxygen/local__response__norm_8h__incl.svg | 1765 +--
.../doxygen/local__response__norm_8h_source.html | 60 +-
docs/reference/api/doxygen/manipulate_8h.html | 2 +-
docs/reference/api/doxygen/manipulate_8h__incl.svg | 1526 +--
.../api/doxygen/manipulate_8h_source.html | 51 +-
docs/reference/api/doxygen/mapping_8h.html | 6 +-
docs/reference/api/doxygen/mapping_8h__incl.svg | 1765 +--
docs/reference/api/doxygen/mapping_8h_source.html | 14 +-
.../api/doxygen/measure__callback_8h.html | 2 +-
.../api/doxygen/measure__callback_8h__incl.svg | 3429 +++---
.../api/doxygen/measure__callback_8h_source.html | 38 +-
.../api/doxygen/measure__candidate_8h.html | 2 +-
.../api/doxygen/measure__candidate_8h__incl.svg | 2483 ++---
.../api/doxygen/measure__candidate_8h_source.html | 6 +-
.../api/doxygen/memory__manager_8h_source.html | 29 +-
docs/reference/api/doxygen/menudata.js | 3 +-
docs/reference/api/doxygen/module_8h.html | 10 +-
docs/reference/api/doxygen/module_8h__incl.svg | 549 +-
docs/reference/api/doxygen/module_8h_source.html | 59 +-
docs/reference/api/doxygen/mutator_8h.html | 2 +-
docs/reference/api/doxygen/mutator_8h__incl.svg | 2417 ++--
docs/reference/api/doxygen/mutator_8h_source.html | 36 +-
docs/reference/api/doxygen/namespacemembers.html | 3 +-
docs/reference/api/doxygen/namespacemembers_b.html | 2 +-
docs/reference/api/doxygen/namespacemembers_d.html | 8 +-
docs/reference/api/doxygen/namespacemembers_e.html | 6 +-
.../api/doxygen/namespacemembers_func.html | 3 +-
.../api/doxygen/namespacemembers_func_b.html | 2 +-
.../api/doxygen/namespacemembers_func_d.html | 4 +-
.../api/doxygen/namespacemembers_func_e.html | 8 +-
.../api/doxygen/namespacemembers_func_l.html | 6 +-
.../api/doxygen/namespacemembers_func_m.html | 2 +-
.../api/doxygen/namespacemembers_func_r.html | 3 +-
.../api/doxygen/namespacemembers_func_s.html | 2 +-
docs/reference/api/doxygen/namespacemembers_l.html | 6 +-
docs/reference/api/doxygen/namespacemembers_m.html | 2 +-
docs/reference/api/doxygen/namespacemembers_r.html | 3 +-
docs/reference/api/doxygen/namespacemembers_s.html | 2 +-
docs/reference/api/doxygen/namespaces.html | 67 +-
docs/reference/api/doxygen/namespacetvm.html | 1043 +-
.../api/doxygen/namespacetvm_1_1attr.html | 36 +-
.../api/doxygen/namespacetvm_1_1codegen.html | 28 +-
.../reference/api/doxygen/namespacetvm_1_1ffi.html | 44 +-
.../api/doxygen/namespacetvm_1_1prim.html | 234 +-
.../doxygen/namespacetvm_1_1prim_1_1builtin.html | 24 +-
.../api/doxygen/namespacetvm_1_1relax.html | 625 +-
.../api/doxygen/namespacetvm_1_1relax_1_1attr.html | 28 +-
...1_1relax_1_1backend_1_1adreno_1_1transform.html | 20 +-
.../namespacetvm_1_1relax_1_1distributed.html | 2 +-
...cetvm_1_1relax_1_1distributed_1_1transform.html | 20 +-
.../namespacetvm_1_1relax_1_1transform.html | 110 +-
.../api/doxygen/namespacetvm_1_1runtime.html | 158 +-
.../doxygen/namespacetvm_1_1runtime_1_1memory.html | 2 +-
.../doxygen/namespacetvm_1_1runtime_1_1symbol.html | 8 +-
.../api/doxygen/namespacetvm_1_1runtime_1_1vm.html | 20 +-
.../api/doxygen/namespacetvm_1_1s__tir.html | 130 +-
.../doxygen/namespacetvm_1_1s__tir_1_1attr.html | 168 +-
.../namespacetvm_1_1s__tir_1_1meta__schedule.html | 28 +-
.../namespacetvm_1_1s__tir_1_1transform.html | 54 +-
.../namespacetvm_1_1script_1_1ir__builder.html | 65 +-
...acetvm_1_1script_1_1ir__builder_1_1details.html | 3 +
...amespacetvm_1_1script_1_1ir__builder_1_1ir.html | 14 +-
...spacetvm_1_1script_1_1ir__builder_1_1relax.html | 286 +-
...espacetvm_1_1script_1_1ir__builder_1_1tirx.html | 220 +-
...m_1_1script_1_1ir__builder_1_1tirx_1_1axis.html | 10 +-
.../doxygen/namespacetvm_1_1script_1_1printer.html | 8 +-
.../reference/api/doxygen/namespacetvm_1_1sym.html | 198 +-
docs/reference/api/doxygen/namespacetvm_1_1te.html | 460 +-
.../api/doxygen/namespacetvm_1_1tirx.html | 484 +-
.../api/doxygen/namespacetvm_1_1tirx_1_1attr.html | 126 +-
.../doxygen/namespacetvm_1_1tirx_1_1builtin.html | 338 +-
.../doxygen/namespacetvm_1_1tirx_1_1callback.html | 20 +-
.../doxygen/namespacetvm_1_1tirx_1_1transform.html | 56 +-
.../api/doxygen/namespacetvm_1_1topi.html | 2002 ++--
.../doxygen/namespacetvm_1_1topi_1_1contrib.html | 20 +-
.../api/doxygen/namespacetvm_1_1topi_1_1nn.html | 336 +-
.../api/doxygen/namespacetvm_1_1topi_1_1relax.html | 10 +-
.../doxygen/namespacetvm_1_1topi_1_1vision.html | 6 +-
.../api/doxygen/namespacetvm_1_1transform.html | 24 +-
docs/reference/api/doxygen/nested__msg_8h.html | 50 +-
.../reference/api/doxygen/nested__msg_8h__incl.svg | 1526 +--
.../api/doxygen/nested__msg_8h_source.html | 303 +-
docs/reference/api/doxygen/nvtx_8h_source.html | 13 +-
.../api/doxygen/object__functor_8h_source.html | 160 +-
docs/reference/api/doxygen/operation_8h.html | 20 +-
docs/reference/api/doxygen/operation_8h__incl.svg | 1743 +--
.../reference/api/doxygen/operation_8h_source.html | 128 +-
docs/reference/api/doxygen/pad__utils_8h.html | 2 +-
docs/reference/api/doxygen/pad__utils_8h__incl.svg | 1773 +--
.../api/doxygen/pad__utils_8h_source.html | 14 +-
docs/reference/api/doxygen/pattern_8h.html | 4 +-
docs/reference/api/doxygen/pattern_8h_source.html | 5 +-
docs/reference/api/doxygen/pooling_8h.html | 34 +-
docs/reference/api/doxygen/pooling_8h__incl.svg | 2919 ++---
docs/reference/api/doxygen/pooling_8h_source.html | 668 +-
docs/reference/api/doxygen/postproc_8h.html | 2 +-
docs/reference/api/doxygen/postproc_8h__incl.svg | 2401 ++--
docs/reference/api/doxygen/postproc_8h_source.html | 50 +-
docs/reference/api/doxygen/printer_8h.html | 2 +-
docs/reference/api/doxygen/printer_8h_source.html | 7 +-
docs/reference/api/doxygen/profiler_8h.html | 2 +-
docs/reference/api/doxygen/profiler_8h__incl.svg | 1249 +--
docs/reference/api/doxygen/profiler_8h_source.html | 8 +-
docs/reference/api/doxygen/qdq_8h.html | 2 +-
docs/reference/api/doxygen/qdq_8h__incl.svg | 1502 +--
docs/reference/api/doxygen/qdq_8h_source.html | 5 +-
.../api/doxygen/random__engine_8h_source.html | 25 +-
docs/reference/api/doxygen/ravel__unravel_8h.html | 2 +-
.../api/doxygen/ravel__unravel_8h__incl.svg | 1729 +--
.../api/doxygen/ravel__unravel_8h_source.html | 24 +-
docs/reference/api/doxygen/reduction_8h.html | 46 +-
docs/reference/api/doxygen/reduction_8h__incl.svg | 2739 ++---
.../reference/api/doxygen/reduction_8h_source.html | 390 +-
docs/reference/api/doxygen/relax_2analysis_8h.html | 88 +-
.../api/doxygen/relax_2analysis_8h__incl.svg | 2070 ++--
.../api/doxygen/relax_2analysis_8h_source.html | 105 +-
.../reference/api/doxygen/relax_2attrs_2nn_8h.html | 2 +-
.../api/doxygen/relax_2attrs_2nn_8h__incl.svg | 1500 +--
.../api/doxygen/relax_2attrs_2nn_8h_source.html | 53 +-
.../reference/api/doxygen/relax_2attrs_2op_8h.html | 2 +-
.../api/doxygen/relax_2attrs_2op_8h__incl.svg | 1504 +--
.../api/doxygen/relax_2attrs_2op_8h_source.html | 19 +-
.../relax_2backend_2adreno_2transform_8h.html | 12 +-
.../relax_2backend_2adreno_2transform_8h__incl.svg | 1746 +--
...elax_2backend_2adreno_2transform_8h_source.html | 5 +-
.../relax_2distributed_2global__info_8h.html | 2 +-
.../relax_2distributed_2global__info_8h__incl.svg | 571 +-
...relax_2distributed_2global__info_8h_source.html | 11 +-
.../doxygen/relax_2distributed_2transform_8h.html | 12 +-
.../relax_2distributed_2transform_8h__incl.svg | 2062 ++--
.../relax_2distributed_2transform_8h_source.html | 9 +-
.../api/doxygen/relax_2distributed_2type_8h.html | 2 +-
.../doxygen/relax_2distributed_2type_8h__incl.svg | 1188 +-
.../relax_2distributed_2type_8h_source.html | 33 +-
docs/reference/api/doxygen/relax_2expr_8h.html | 20 +-
.../reference/api/doxygen/relax_2expr_8h__incl.svg | 1492 +--
.../api/doxygen/relax_2expr_8h_source.html | 93 +-
.../api/doxygen/relax_2expr__functor_8h.html | 2 +-
.../api/doxygen/relax_2expr__functor_8h__incl.svg | 1744 +--
.../doxygen/relax_2expr__functor_8h_source.html | 223 +-
.../api/doxygen/relax_2global__info_8h.html | 7 +-
.../api/doxygen/relax_2global__info_8h__incl.svg | 724 +-
.../api/doxygen/relax_2global__info_8h_source.html | 138 +-
.../api/doxygen/relax_2op__attr__types_8h.html | 16 +-
.../doxygen/relax_2op__attr__types_8h__incl.svg | 1708 +--
.../doxygen/relax_2op__attr__types_8h_source.html | 13 +-
.../doxygen/relax_2script_2builder_2frame_8h.html | 2 +-
.../relax_2script_2builder_2frame_8h__incl.svg | 1742 +--
.../relax_2script_2builder_2frame_8h_source.html | 475 +-
.../api/doxygen/relax_2script_2builder_2ir_8h.html | 40 +-
.../relax_2script_2builder_2ir_8h__incl.svg | 1764 +--
.../relax_2script_2builder_2ir_8h_source.html | 103 +-
.../reference/api/doxygen/relax_2transform_8h.html | 48 +-
.../api/doxygen/relax_2transform_8h__incl.svg | 2032 ++--
.../api/doxygen/relax_2transform_8h_source.html | 119 +-
docs/reference/api/doxygen/relax_2type_8h.html | 26 +-
.../reference/api/doxygen/relax_2type_8h__incl.svg | 868 +-
.../api/doxygen/relax_2type_8h_source.html | 68 +-
docs/reference/api/doxygen/relax_2utils_8h.html | 18 +-
.../api/doxygen/relax_2utils_8h__incl.svg | 1820 +--
.../api/doxygen/relax_2utils_8h_source.html | 21 +-
docs/reference/api/doxygen/reorg_8h.html | 4 +-
docs/reference/api/doxygen/reorg_8h__incl.svg | 2801 ++---
docs/reference/api/doxygen/reorg_8h_source.html | 36 +-
docs/reference/api/doxygen/rms__norm_8h.html | 4 +-
docs/reference/api/doxygen/rms__norm_8h__incl.svg | 2777 ++---
.../reference/api/doxygen/rms__norm_8h_source.html | 69 +-
docs/reference/api/doxygen/runner_8h.html | 2 +-
docs/reference/api/doxygen/runner_8h__incl.svg | 1807 +--
docs/reference/api/doxygen/runner_8h_source.html | 36 +-
.../api/doxygen/runtime_2disco_2builtin_8h.html | 26 +-
.../doxygen/runtime_2disco_2builtin_8h_source.html | 21 +-
docs/reference/api/doxygen/runtime_2tensor_8h.html | 4 +-
.../api/doxygen/runtime_2tensor_8h_source.html | 197 +-
.../reference/api/doxygen/s__tir_2analysis_8h.html | 38 +-
.../api/doxygen/s__tir_2analysis_8h__incl.svg | 2049 ++--
.../api/doxygen/s__tir_2analysis_8h_source.html | 46 +-
.../s__tir_2backend_2adreno_2transform_8h.html | 2 +-
...s__tir_2backend_2adreno_2transform_8h__incl.svg | 1969 ++--
..._tir_2backend_2adreno_2transform_8h_source.html | 6 +-
docs/reference/api/doxygen/s__tir_2stmt_8h.html | 86 +-
.../api/doxygen/s__tir_2stmt_8h__incl.svg | 1387 +--
.../api/doxygen/s__tir_2stmt_8h_source.html | 18 +-
.../api/doxygen/s__tir_2stmt__functor_8h.html | 2 +-
.../api/doxygen/s__tir_2stmt__functor_8h__incl.svg | 2057 ++--
.../doxygen/s__tir_2stmt__functor_8h_source.html | 48 +-
.../api/doxygen/s__tir_2transform_8h.html | 12 +-
.../api/doxygen/s__tir_2transform_8h__incl.svg | 1937 ++--
.../api/doxygen/s__tir_2transform_8h_source.html | 86 +-
docs/reference/api/doxygen/s__tir_2utils_8h.html | 6 +-
.../api/doxygen/s__tir_2utils_8h__incl.svg | 2287 ++--
.../api/doxygen/s__tir_2utils_8h_source.html | 31 +-
docs/reference/api/doxygen/sampling_8h.html | 2 +-
docs/reference/api/doxygen/sampling_8h__incl.svg | 1502 +--
docs/reference/api/doxygen/sampling_8h_source.html | 7 +-
.../api/doxygen/sblock__dependence__info_8h.html | 2 +-
.../doxygen/sblock__dependence__info_8h__incl.svg | 2277 ++--
.../sblock__dependence__info_8h_source.html | 18 +-
docs/reference/api/doxygen/sblock__scope_8h.html | 2 +-
.../api/doxygen/sblock__scope_8h__incl.svg | 2257 ++--
.../api/doxygen/sblock__scope_8h_source.html | 56 +-
docs/reference/api/doxygen/schedule_8h.html | 6 +-
docs/reference/api/doxygen/schedule_8h__incl.svg | 2375 ++--
docs/reference/api/doxygen/schedule_8h_source.html | 201 +-
docs/reference/api/doxygen/schedule__rule_8h.html | 2 +-
.../api/doxygen/schedule__rule_8h__incl.svg | 2417 ++--
.../api/doxygen/schedule__rule_8h_source.html | 124 +-
.../api/doxygen/scope__stack_8h_source.html | 17 +-
.../api/doxygen/script_2ir__builder_2base_8h.html | 19 +-
.../script_2ir__builder_2base_8h_source.html | 369 +-
.../doxygen/script_2ir__builder_2ir_2frame_8h.html | 2 +-
.../script_2ir__builder_2ir_2frame_8h__incl.svg | 717 +-
.../script_2ir__builder_2ir_2frame_8h_source.html | 13 +-
.../doxygen/script_2ir__builder_2ir_2ir_8h.html | 6 +-
.../script_2ir__builder_2ir_2ir_8h__incl.svg | 735 +-
.../script_2ir__builder_2ir_2ir_8h_source.html | 5 +-
docs/reference/api/doxygen/search/all_11.js | 2 +-
docs/reference/api/doxygen/search/all_13.js | 143 +-
docs/reference/api/doxygen/search/all_14.js | 410 +-
docs/reference/api/doxygen/search/all_15.js | 75 +-
docs/reference/api/doxygen/search/all_16.js | 2 +-
docs/reference/api/doxygen/search/all_17.js | 12 +-
docs/reference/api/doxygen/search/all_2.js | 295 +-
docs/reference/api/doxygen/search/all_3.js | 201 +-
docs/reference/api/doxygen/search/all_5.js | 335 +-
docs/reference/api/doxygen/search/all_6.js | 254 +-
docs/reference/api/doxygen/search/all_7.js | 68 +-
docs/reference/api/doxygen/search/all_8.js | 63 +-
docs/reference/api/doxygen/search/all_a.js | 207 +-
docs/reference/api/doxygen/search/all_c.js | 2 +-
docs/reference/api/doxygen/search/all_d.js | 98 +-
docs/reference/api/doxygen/search/all_e.js | 6 +-
docs/reference/api/doxygen/search/all_f.js | 2 +-
docs/reference/api/doxygen/search/classes_0.js | 106 +-
docs/reference/api/doxygen/search/classes_10.js | 65 +-
docs/reference/api/doxygen/search/functions_0.js | 82 +-
docs/reference/api/doxygen/search/functions_1.js | 2 +-
docs/reference/api/doxygen/search/functions_11.js | 75 +-
docs/reference/api/doxygen/search/functions_12.js | 202 +-
docs/reference/api/doxygen/search/functions_13.js | 6 +-
docs/reference/api/doxygen/search/functions_15.js | 6 +-
docs/reference/api/doxygen/search/functions_3.js | 32 +-
docs/reference/api/doxygen/search/functions_4.js | 132 +-
docs/reference/api/doxygen/search/functions_6.js | 4 +-
docs/reference/api/doxygen/search/functions_8.js | 187 +-
docs/reference/api/doxygen/search/functions_b.js | 80 +-
docs/reference/api/doxygen/search/functions_c.js | 4 +-
docs/reference/api/doxygen/search/functions_d.js | 2 +-
docs/reference/api/doxygen/search/typedefs_6.js | 8 +-
docs/reference/api/doxygen/search/variables_12.js | 73 +-
docs/reference/api/doxygen/search/variables_13.js | 5 +-
docs/reference/api/doxygen/search/variables_2.js | 41 +-
docs/reference/api/doxygen/search/variables_4.js | 85 +-
docs/reference/api/doxygen/search/variables_6.js | 5 +-
docs/reference/api/doxygen/search/variables_7.js | 7 +-
docs/reference/api/doxygen/search/variables_9.js | 15 +-
docs/reference/api/doxygen/search/variables_b.js | 16 +-
docs/reference/api/doxygen/search_8h.html | 2 +-
docs/reference/api/doxygen/search_8h__incl.svg | 1502 +--
docs/reference/api/doxygen/search_8h_source.html | 5 +-
.../reference/api/doxygen/search__strategy_8h.html | 2 +-
.../api/doxygen/search__strategy_8h__incl.svg | 2847 ++---
.../api/doxygen/search__strategy_8h_source.html | 68 +-
.../api/doxygen/serializer_8h_source.html | 138 +-
docs/reference/api/doxygen/session_8h.html | 4 +-
docs/reference/api/doxygen/session_8h_source.html | 51 +-
docs/reference/api/doxygen/softmax_8h.html | 6 +-
docs/reference/api/doxygen/softmax_8h__incl.svg | 2781 ++---
docs/reference/api/doxygen/softmax_8h_source.html | 106 +-
docs/reference/api/doxygen/sorting_8h.html | 2 +-
docs/reference/api/doxygen/sorting_8h__incl.svg | 1526 +--
docs/reference/api/doxygen/sorting_8h_source.html | 7 +-
.../api/doxygen/source__map_8h_source.html | 37 +-
.../reference/api/doxygen/space__generator_8h.html | 2 +-
.../api/doxygen/space__generator_8h__incl.svg | 2783 ++---
.../api/doxygen/space__generator_8h_source.html | 30 +-
docs/reference/api/doxygen/state_8h.html | 2 +-
docs/reference/api/doxygen/state_8h__incl.svg | 2321 ++--
docs/reference/api/doxygen/state_8h_source.html | 36 +-
docs/reference/api/doxygen/statistical_8h.html | 2 +-
.../reference/api/doxygen/statistical_8h__incl.svg | 1502 +--
.../api/doxygen/statistical_8h_source.html | 5 +-
docs/reference/api/doxygen/strided__slice_8h.html | 2 +-
.../api/doxygen/strided__slice_8h__incl.svg | 1821 +--
.../api/doxygen/strided__slice_8h_source.html | 140 +-
...ructtvm_1_1ffi_1_1TypeTraits_3_01Expr_01_4.html | 8 +-
...tvm_1_1ffi_1_1TypeTraits_3_01FloatImm_01_4.html | 6 +-
...cttvm_1_1ffi_1_1TypeTraits_3_01IntImm_01_4.html | 6 +-
...tvm_1_1ffi_1_1TypeTraits_3_01PrimExpr_01_4.html | 32 +-
...tvm_1_1ffi_1_1TypeTraits_3_01PrimType_01_4.html | 6 +-
...ttvm_1_1ffi_1_1TypeTraits_3_01PrimVar_01_4.html | 16 +-
...s_3_01TypedExpr_3_01ExpectedType_01_4_01_4.html | 22 +-
...i_1_1TypeTraits_3_01tirx_1_1BufferVar_01_4.html | 16 +-
...fi_1_1TypeTraits_3_01tvm_1_1StringImm_01_4.html | 4 +-
..._1_1ffi_1_1TypedExprWithFallbackTraitsBase.html | 22 +-
...tvm_1_1ir_1_1ConfigSchema_1_1AttrValidator.html | 2 +-
...cttvm_1_1ir_1_1ConfigSchema_1_1OptionEntry.html | 8 +-
.../structtvm_1_1prim_1_1ExprDeepEqual.html | 10 +-
.../api/doxygen/structtvm_1_1prim_1_1LENode.html | 16 +-
.../structtvm_1_1relax_1_1AdaptivePool1DAttrs.html | 10 +-
.../structtvm_1_1relax_1_1AdaptivePool2DAttrs.html | 10 +-
.../structtvm_1_1relax_1_1AdaptivePool3DAttrs.html | 10 +-
.../structtvm_1_1relax_1_1AffineGridAttrs.html | 10 +-
...elax_1_1AllClassNonMaximumSuppressionAttrs.html | 6 +-
.../structtvm_1_1relax_1_1AllGatherAttrs.html | 14 +-
.../structtvm_1_1relax_1_1AllReduceAttrs.html | 10 +-
.../structtvm_1_1relax_1_1ArgmaxArgminAttrs.html | 14 +-
.../structtvm_1_1relax_1_1ArgsortAttrs.html | 18 +-
.../doxygen/structtvm_1_1relax_1_1AstypeAttrs.html | 10 +-
.../structtvm_1_1relax_1_1AttentionAttrs.html | 6 +-
.../structtvm_1_1relax_1_1BatchNormAttrs.html | 30 +-
...eOperatorSpecificNormalizationForTVMScript.html | 2 +-
.../structtvm_1_1relax_1_1BucketizeAttrs.html | 14 +-
...ructtvm_1_1relax_1_1CallInplacePackedAttrs.html | 10 +-
.../structtvm_1_1relax_1_1CallTIRInplaceAttrs.html | 10 +-
...structtvm_1_1relax_1_1CallTIRWithGradAttrs.html | 10 +-
.../doxygen/structtvm_1_1relax_1_1ConcatAttrs.html | 10 +-
.../doxygen/structtvm_1_1relax_1_1Conv1DAttrs.html | 26 +-
...structtvm_1_1relax_1_1Conv1DTransposeAttrs.html | 30 +-
.../doxygen/structtvm_1_1relax_1_1Conv2DAttrs.html | 26 +-
...structtvm_1_1relax_1_1Conv2DTransposeAttrs.html | 30 +-
.../doxygen/structtvm_1_1relax_1_1Conv3DAttrs.html | 26 +-
...structtvm_1_1relax_1_1Conv3DTransposeAttrs.html | 30 +-
.../structtvm_1_1relax_1_1DistributionAttrs.html | 6 +-
.../structtvm_1_1relax_1_1DropoutAttrs.html | 10 +-
.../doxygen/structtvm_1_1relax_1_1EinsumAttrs.html | 6 +-
.../structtvm_1_1relax_1_1ExpandDimsAttrs.html | 10 +-
.../doxygen/structtvm_1_1relax_1_1FlipAttrs.html | 10 +-
.../structtvm_1_1relax_1_1GatherElementsAttrs.html | 10 +-
.../structtvm_1_1relax_1_1GatherNDAttrs.html | 10 +-
.../structtvm_1_1relax_1_1GetValidCountsAttrs.html | 18 +-
.../structtvm_1_1relax_1_1GridSampleAttrs.html | 10 +-
.../structtvm_1_1relax_1_1GroupNormAttrs.html | 30 +-
.../structtvm_1_1relax_1_1HintOnDeviceAttrs.html | 14 +-
.../structtvm_1_1relax_1_1IndexPutAttrs.html | 10 +-
.../doxygen/structtvm_1_1relax_1_1InitAttrs.html | 10 +-
.../structtvm_1_1relax_1_1InstanceNormAttrs.html | 26 +-
.../structtvm_1_1relax_1_1LayerNormAttrs.html | 22 +-
...structtvm_1_1relax_1_1LayoutTransformAttrs.html | 6 +-
.../structtvm_1_1relax_1_1LeakyReluAttrs.html | 10 +-
.../doxygen/structtvm_1_1relax_1_1MatmulAttrs.html | 10 +-
.../structtvm_1_1relax_1_1MeshgridAttrs.html | 6 +-
...ttvm_1_1relax_1_1MultiboxTransformLocAttrs.html | 26 +-
...vm_1_1relax_1_1MultinomialFromUniformAttrs.html | 10 +-
.../structtvm_1_1relax_1_1NLLLossAttrs.html | 10 +-
...tvm_1_1relax_1_1NonMaximumSuppressionAttrs.html | 50 +-
.../doxygen/structtvm_1_1relax_1_1OneHotAttrs.html | 14 +-
.../doxygen/structtvm_1_1relax_1_1PReluAttrs.html | 10 +-
.../doxygen/structtvm_1_1relax_1_1PadAttrs.html | 14 +-
.../doxygen/structtvm_1_1relax_1_1PairCons.html | 20 +-
.../structtvm_1_1relax_1_1PermuteDimsAttrs.html | 10 +-
.../structtvm_1_1relax_1_1PixelShuffleAttrs.html | 10 +-
.../doxygen/structtvm_1_1relax_1_1Pool1DAttrs.html | 30 +-
.../doxygen/structtvm_1_1relax_1_1Pool2DAttrs.html | 30 +-
.../doxygen/structtvm_1_1relax_1_1Pool3DAttrs.html | 30 +-
.../structtvm_1_1relax_1_1QuantizeAttrs.html | 14 +-
.../structtvm_1_1relax_1_1RMSNormAttrs.html | 14 +-
.../structtvm_1_1relax_1_1ROIAlignAttrs.html | 22 +-
.../structtvm_1_1relax_1_1ROIPoolAttrs.html | 14 +-
.../doxygen/structtvm_1_1relax_1_1RepeatAttrs.html | 14 +-
.../structtvm_1_1relax_1_1Resize2DAttrs.html | 22 +-
.../structtvm_1_1relax_1_1Resize3DAttrs.html | 22 +-
...structtvm_1_1relax_1_1ReverseSequenceAttrs.html | 14 +-
.../doxygen/structtvm_1_1relax_1_1ScanopAttrs.html | 18 +-
...ructtvm_1_1relax_1_1ScatterCollectiveAttrs.html | 14 +-
...structtvm_1_1relax_1_1ScatterElementsAttrs.html | 10 +-
.../structtvm_1_1relax_1_1ScatterNDAttrs.html | 6 +-
.../structtvm_1_1relax_1_1SliceScatterAttrs.html | 10 +-
.../structtvm_1_1relax_1_1SoftmaxAttrs.html | 10 +-
.../structtvm_1_1relax_1_1SoftplusAttrs.html | 14 +-
.../doxygen/structtvm_1_1relax_1_1SortAttrs.html | 14 +-
.../doxygen/structtvm_1_1relax_1_1SplitAttrs.html | 10 +-
.../structtvm_1_1relax_1_1SqueezeAttrs.html | 10 +-
.../doxygen/structtvm_1_1relax_1_1StackAttrs.html | 10 +-
.../structtvm_1_1relax_1_1StatisticalAttrs.html | 14 +-
.../structtvm_1_1relax_1_1StridedSliceAttrs.html | 10 +-
.../doxygen/structtvm_1_1relax_1_1TakeAttrs.html | 10 +-
.../doxygen/structtvm_1_1relax_1_1TileAttrs.html | 10 +-
.../structtvm_1_1relax_1_1ToVDeviceAttrs.html | 6 +-
.../doxygen/structtvm_1_1relax_1_1TopKAttrs.html | 22 +-
.../doxygen/structtvm_1_1relax_1_1TriluAttrs.html | 10 +-
.../structtvm_1_1relax_1_1WrapParamAttrs.html | 10 +-
...cttvm_1_1runtime_1_1ThreadLocalDiscoWorker.html | 4 +-
.../structtvm_1_1runtime_1_1memory_1_1Buffer.html | 8 +-
.../structtvm_1_1runtime_1_1vm_1_1Instruction.html | 56 +-
...vm_1_1runtime_1_1vm_1_1TensorCacheMetadata.html | 14 +-
...1_1vm_1_1TensorCacheMetadata_1_1FileRecord.html | 10 +-
...CacheMetadata_1_1FileRecord_1_1ParamRecord.html | 18 +-
.../structtvm_1_1runtime_1_1vm_1_1VMFuncInfo.html | 10 +-
.../doxygen/structtvm_1_1s__tir_1_1SBlockInfo.html | 28 +-
...1s__tir_1_1meta__schedule_1_1WorkloadEqual.html | 12 +-
..._1s__tir_1_1meta__schedule_1_1WorkloadHash.html | 6 +-
.../structtvm_1_1support_1_1Serializer.html | 8 +-
...1support_1_1Serializer_3_01DLDataType_01_4.html | 16 +-
...1_1support_1_1Serializer_3_01DLDevice_01_4.html | 16 +-
...erializer_3_01ffi_1_1Array_3_01T_01_4_01_4.html | 22 +-
...upport_1_1Serializer_3_01ffi_1_1Bytes_01_4.html | 14 +-
...izer_3_01ffi_1_1Map_3_01K_00_01V_01_4_01_4.html | 22 +-
...pport_1_1Serializer_3_01ffi_1_1String_01_4.html | 14 +-
.../api/doxygen/structtvm_1_1te_1_1TensorDom.html | 4 +-
.../doxygen/structtvm_1_1tirx_1_1ActiveSet.html | 24 +-
.../doxygen/structtvm_1_1tirx_1_1AxisRange.html | 16 +-
.../structtvm_1_1tirx_1_1CallFFIKernelAttr.html | 6 +-
.../doxygen/structtvm_1_1tirx_1_1ExecContext.html | 54 +-
...ucttvm_1_1tirx_1_1TensorMapEncodeTiledAttr.html | 34 +-
.../structtvm_1_1topi_1_1EinsumEquation.html | 18 +-
docs/reference/api/doxygen/tag_8h_source.html | 23 +-
docs/reference/api/doxygen/tags_8h.html | 32 +-
docs/reference/api/doxygen/target_8h.html | 2 +-
docs/reference/api/doxygen/target_8h_source.html | 36 +-
docs/reference/api/doxygen/target__kind_8h.html | 2 +-
.../api/doxygen/target__kind_8h_source.html | 71 +-
docs/reference/api/doxygen/task__scheduler_8h.html | 2 +-
.../api/doxygen/task__scheduler_8h__incl.svg | 3547 +++---
.../api/doxygen/task__scheduler_8h_source.html | 83 +-
docs/reference/api/doxygen/te_2tensor_8h.html | 144 +-
docs/reference/api/doxygen/te_2tensor_8h__incl.svg | 1639 +--
.../api/doxygen/te_2tensor_8h_source.html | 73 +-
.../doxygen/tensor__cache__support_8h_source.html | 24 +-
docs/reference/api/doxygen/tensor__intrin_8h.html | 2 +-
.../api/doxygen/tensor__intrin_8h__incl.svg | 1481 +--
.../api/doxygen/tensor__intrin_8h_source.html | 10 +-
docs/reference/api/doxygen/tensor__utils_8h.html | 2 +-
.../api/doxygen/tensor__utils_8h__incl.svg | 1729 +--
.../api/doxygen/tensor__utils_8h_source.html | 120 +-
docs/reference/api/doxygen/thread__bind_8h.html | 8 +-
.../api/doxygen/thread__bind_8h__incl.svg | 2415 ++--
.../api/doxygen/thread__bind_8h_source.html | 16 +-
docs/reference/api/doxygen/tile__primitive_8h.html | 72 +-
.../api/doxygen/tile__primitive_8h__incl.svg | 1425 +--
.../api/doxygen/tile__primitive_8h_source.html | 93 +-
docs/reference/api/doxygen/timer_8h.html | 2 +-
docs/reference/api/doxygen/timer_8h_source.html | 14 +-
docs/reference/api/doxygen/tir__pattern_8h.html | 6 +-
.../api/doxygen/tir__pattern_8h__incl.svg | 1485 +--
.../api/doxygen/tir__pattern_8h_source.html | 7 +-
docs/reference/api/doxygen/tirx_2analysis_8h.html | 32 +-
.../api/doxygen/tirx_2analysis_8h__incl.svg | 2065 ++--
.../api/doxygen/tirx_2analysis_8h_source.html | 46 +-
.../api/doxygen/tirx_2attrs_8h_source.html | 16 +-
docs/reference/api/doxygen/tirx_2builtin_8h.html | 162 +-
.../api/doxygen/tirx_2builtin_8h_source.html | 164 +-
docs/reference/api/doxygen/tirx_2expr_8h.html | 14 +-
docs/reference/api/doxygen/tirx_2expr_8h__incl.svg | 1089 +-
.../api/doxygen/tirx_2expr_8h_source.html | 75 +-
.../api/doxygen/tirx_2expr__functor_8h_source.html | 10 +-
docs/reference/api/doxygen/tirx_2function_8h.html | 24 +-
.../api/doxygen/tirx_2function_8h__incl.svg | 1471 +--
.../api/doxygen/tirx_2function_8h_source.html | 36 +-
docs/reference/api/doxygen/tirx_2op_8h.html | 102 +-
docs/reference/api/doxygen/tirx_2op_8h__incl.svg | 1551 +--
docs/reference/api/doxygen/tirx_2op_8h_source.html | 84 +-
.../api/doxygen/tirx_2op__attr__types_8h.html | 16 +-
.../doxygen/tirx_2op__attr__types_8h_source.html | 8 +-
.../doxygen/tirx_2script_2builder_2frame_8h.html | 6 +-
.../tirx_2script_2builder_2frame_8h__incl.svg | 1537 +--
.../tirx_2script_2builder_2frame_8h_source.html | 1226 +-
.../api/doxygen/tirx_2script_2builder_2ir_8h.html | 93 +-
.../doxygen/tirx_2script_2builder_2ir_8h__incl.svg | 2203 ++--
.../tirx_2script_2builder_2ir_8h_source.html | 512 +-
docs/reference/api/doxygen/tirx_2stmt_8h.html | 48 +-
docs/reference/api/doxygen/tirx_2stmt_8h__incl.svg | 1379 +--
.../api/doxygen/tirx_2stmt_8h_source.html | 140 +-
.../api/doxygen/tirx_2stmt__functor_8h.html | 8 +-
.../api/doxygen/tirx_2stmt__functor_8h__incl.svg | 1683 +--
.../api/doxygen/tirx_2stmt__functor_8h_source.html | 184 +-
docs/reference/api/doxygen/tirx_2transform_8h.html | 14 +-
.../api/doxygen/tirx_2transform_8h__incl.svg | 1865 ++--
.../api/doxygen/tirx_2transform_8h_source.html | 66 +-
docs/reference/api/doxygen/tirx_2type_8h.html | 4 +-
docs/reference/api/doxygen/tirx_2type_8h__incl.svg | 1049 +-
.../api/doxygen/tirx_2type_8h_source.html | 36 +-
docs/reference/api/doxygen/topi_2nn_8h.html | 28 +-
docs/reference/api/doxygen/topi_2nn_8h__incl.svg | 2815 ++---
docs/reference/api/doxygen/topi_2nn_8h_source.html | 596 +-
docs/reference/api/doxygen/topi_2transform_8h.html | 96 +-
.../api/doxygen/topi_2transform_8h__incl.svg | 2695 ++---
.../api/doxygen/topi_2transform_8h_source.html | 1828 +--
docs/reference/api/doxygen/topi_2utils_8h.html | 2 +-
.../api/doxygen/topi_2utils_8h_source.html | 12 +-
docs/reference/api/doxygen/trace_8h.html | 2 +-
docs/reference/api/doxygen/trace_8h_source.html | 28 +-
docs/reference/api/doxygen/tune__context_8h.html | 2 +-
.../api/doxygen/tune__context_8h__incl.svg | 3467 +++---
.../api/doxygen/tune__context_8h_source.html | 18 +-
docs/reference/api/doxygen/type__functor_8h.html | 2 +-
.../api/doxygen/type__functor_8h__incl.svg | 1178 +-
.../api/doxygen/type__functor_8h_source.html | 48 +-
.../doxygen/unique__name__supply_8h_source.html | 25 +-
docs/reference/api/doxygen/var_8h.html | 8 +-
docs/reference/api/doxygen/var_8h_source.html | 14 +-
.../api/doxygen/vector__expr_8h_source.html | 18 +-
docs/reference/api/doxygen/vision_8h.html | 2 +-
docs/reference/api/doxygen/vision_8h__incl.svg | 1514 +--
docs/reference/api/doxygen/vision_8h_source.html | 13 +-
docs/reference/api/doxygen/vm_8h_source.html | 27 +-
docs/reference/api/doxygen/winograd_8h.html | 2 +-
docs/reference/api/doxygen/winograd_8h__incl.svg | 2391 ++--
.../api/doxygen/with__context_8h_source.html | 50 +-
docs/reference/api/python/ir.html | 6 +-
docs/reference/api/python/relax/analysis.html | 2 +-
docs/reference/api/python/relax/relax.html | 5 +-
docs/reference/api/python/relax/transform.html | 4 +-
docs/reference/api/python/s_tir/analysis.html | 6 +-
docs/reference/api/python/s_tir/dlight.html | 2 +-
docs/reference/api/python/s_tir/schedule.html | 6 +-
docs/reference/api/python/script/ir_builder.html | 5325 ++++++++-
docs/reference/api/python/script/parser.html | 78 +-
docs/reference/api/python/script/script.html | 11116 ++++++++++++++++++-
docs/reference/api/python/topi.html | 78 +-
.../api/typedoc/classes/ArtifactCache.html | 14 +-
.../classes/ArtifactCrossOriginStorageCache.html | 12 +-
.../typedoc/classes/ArtifactIndexedDBCache.html | 16 +-
.../api/typedoc/classes/ArtifactOPFSCache.html | 14 +-
docs/reference/api/typedoc/classes/CacheState.html | 10 +-
docs/reference/api/typedoc/classes/DLDataType.html | 14 +-
docs/reference/api/typedoc/classes/DLDevice.html | 12 +-
docs/reference/api/typedoc/classes/Instance.html | 118 +-
docs/reference/api/typedoc/classes/LRUCache.html | 14 +-
.../classes/LinearCongruentialGenerator.html | 20 +-
docs/reference/api/typedoc/classes/Module.html | 16 +-
docs/reference/api/typedoc/classes/RPCServer.html | 16 +-
docs/reference/api/typedoc/classes/Scalar.html | 8 +-
docs/reference/api/typedoc/classes/TVMArray.html | 16 +-
docs/reference/api/typedoc/classes/TVMObject.html | 12 +-
docs/reference/api/typedoc/classes/Tensor.html | 36 +-
.../api/typedoc/classes/VirtualMachine.html | 10 +-
.../classes/_internal_.AsyncifyHandler.html | 14 +-
.../classes/_internal_.CachedCallStack.html | 38 +-
.../classes/_internal_.CanvasRenderManager.html | 10 +-
.../classes/_internal_.CrossOriginStorage.html | 12 +-
.../typedoc/classes/_internal_.Environment.html | 14 +-
.../api/typedoc/classes/_internal_.FFILibrary.html | 22 +-
.../api/typedoc/classes/_internal_.Memory.html | 50 +-
.../api/typedoc/classes/_internal_.OPFSStore.html | 16 +-
.../typedoc/classes/_internal_.PackedFuncCell.html | 12 +-
.../typedoc/classes/_internal_.RuntimeContext.html | 74 +-
.../typedoc/classes/_internal_.WebGPUContext.html | 30 +-
.../enums/_internal_.AsyncifyStateKind.html | 8 +-
.../typedoc/enums/_internal_.RPCServerState.html | 14 +-
docs/reference/api/typedoc/functions/assert.html | 2 +-
.../api/typedoc/functions/createArtifactCache.html | 2 +-
.../api/typedoc/functions/createPolyfillWASI.html | 2 +-
.../api/typedoc/functions/deleteTensorCache.html | 4 +-
.../api/typedoc/functions/detectGPUDevice.html | 2 +-
.../api/typedoc/functions/hasTensorInCache.html | 4 +-
.../api/typedoc/functions/instantiate.html | 2 +-
docs/reference/api/typedoc/functions/wasmPath.html | 2 +-
.../typedoc/interfaces/ArtifactCacheTemplate.html | 10 +-
.../api/typedoc/interfaces/Disposable.html | 4 +-
.../interfaces/FetchTensorCacheOptions.html | 12 +-
.../typedoc/interfaces/GPUDeviceDetectOutput.html | 8 +-
.../api/typedoc/interfaces/InitProgressReport.html | 8 +-
.../api/typedoc/interfaces/LibraryProvider.html | 6 +-
.../interfaces/TensorCacheAccessOptions.html | 10 +-
.../_internal_.CrossOriginHashDescriptor.html | 6 +-
.../_internal_.CrossOriginStorageAPI.html | 4 +-
.../_internal_.CrossOriginStorageHandle.html | 6 +-
...CrossOriginStorageRequestFileHandleOptions.html | 6 +-
.../_internal_.CrossOriginStorageWritable.html | 6 +-
.../interfaces/_internal_.FunctionInfo.html | 8 +-
.../interfaces/_internal_.OPFSDirectoryHandle.html | 8 +-
.../interfaces/_internal_.OPFSFileHandle.html | 8 +-
.../interfaces/_internal_.OPFSStorageManager.html | 4 +-
.../interfaces/_internal_.OPFSStoreRecord.html | 8 +-
.../interfaces/_internal_.OPFSStoredEntry.html | 6 +-
.../_internal_.OPFSSyncAccessHandle.html | 14 +-
.../_internal_.OPFSWritableFileStream.html | 6 +-
.../interfaces/_internal_.TensorCacheEntry.html | 14 +-
.../interfaces/_internal_.TensorShardEntry.html | 10 +-
.../api/typedoc/types/ArtifactCacheType.html | 2 +-
.../api/typedoc/types/InitProgressCallback.html | 2 +-
.../api/typedoc/types/OPFSAccessMode.html | 2 +-
docs/reference/api/typedoc/types/PackedFunc.html | 2 +-
docs/reference/api/typedoc/types/RNGState.html | 2 +-
.../typedoc/types/_internal_.AsyncPackedFunc.html | 2 +-
.../types/_internal_.FObjectConstructor.html | 2 +-
.../types/_internal_.FTVMFFIWasmSafeCallType.html | 2 +-
.../types/_internal_.FTVMWasmAllocSpace.html | 2 +-
.../types/_internal_.FTVMWasmFreeSpace.html | 2 +-
.../types/_internal_.OPFSEffectiveAccessMode.html | 2 +-
.../types/_internal_.OPFSSyncAccessHandleMode.html | 2 +-
.../api/typedoc/types/_internal_.Pointer.html | 2 +-
.../api/typedoc/types/_internal_.RequestLike.html | 2 +-
.../typedoc/types/_internal_.TVMObjectBase.html | 2 +-
docs/searchindex.js | 2 +-
docs/sg_execution_times.html | 38 +-
docs/tirx/api/cuda.html | 28 +
docs/tirx/api/execution.html | 2 +-
docs/tirx/api/layout.html | 78 +-
docs/tirx/api/script.html | 451 +-
docs/tirx/api/tile.html | 269 +-
docs/tirx/api/tile_dispatch.html | 8 +-
docs/tirx/api/tirx.html | 26 +-
docs/tirx/api/trainium.html | 6 +-
docs/tirx/tile_primitives/copy_async/dsmem.html | 4 +-
1637 files changed, 167180 insertions(+), 147605 deletions(-)
diff --git a/docs/_downloads/050dda7aeddba33e083ae36606d3270f/import_model.zip b/docs/_downloads/050dda7aeddba33e083ae36606d3270f/import_model.zip
index a9528359c23..c166ead3209 100644
Binary files a/docs/_downloads/050dda7aeddba33e083ae36606d3270f/import_model.zip and b/docs/_downloads/050dda7aeddba33e083ae36606d3270f/import_model.zip differ
diff --git a/docs/_downloads/0eec6b3ea6ba863d0ed14b037c4b83ea/dlight_gpu_scheduling.zip b/docs/_downloads/0eec6b3ea6ba863d0ed14b037c4b83ea/dlight_gpu_scheduling.zip
index 5685589dcb7..f42df269890 100644
Binary files a/docs/_downloads/0eec6b3ea6ba863d0ed14b037c4b83ea/dlight_gpu_scheduling.zip and b/docs/_downloads/0eec6b3ea6ba863d0ed14b037c4b83ea/dlight_gpu_scheduling.zip differ
diff --git a/docs/_downloads/11c11e53c7dace51a8be968ee169ed0d/ir_module.zip b/docs/_downloads/11c11e53c7dace51a8be968ee169ed0d/ir_module.zip
index d4a617f016a..390844987ff 100644
Binary files a/docs/_downloads/11c11e53c7dace51a8be968ee169ed0d/ir_module.zip and b/docs/_downloads/11c11e53c7dace51a8be968ee169ed0d/ir_module.zip differ
diff --git a/docs/_downloads/18ba0d2ee8120824175aaef66bc9c9bf/tir_transformation.zip b/docs/_downloads/18ba0d2ee8120824175aaef66bc9c9bf/tir_transformation.zip
index eaa6409ff79..409a33cbc19 100644
Binary files a/docs/_downloads/18ba0d2ee8120824175aaef66bc9c9bf/tir_transformation.zip and b/docs/_downloads/18ba0d2ee8120824175aaef66bc9c9bf/tir_transformation.zip differ
diff --git a/docs/_downloads/249a4acaa182fd00b9c381b53025777d/meta_schedule.zip b/docs/_downloads/249a4acaa182fd00b9c381b53025777d/meta_schedule.zip
index f391ce5079e..be571ed6af5 100644
Binary files a/docs/_downloads/249a4acaa182fd00b9c381b53025777d/meta_schedule.zip and b/docs/_downloads/249a4acaa182fd00b9c381b53025777d/meta_schedule.zip differ
diff --git a/docs/_downloads/373278b9f6fc686adeaa0219598fe78b/mix_python_and_tvm_with_pymodule.zip b/docs/_downloads/373278b9f6fc686adeaa0219598fe78b/mix_python_and_tvm_with_pymodule.zip
index aa6f71feb22..3ee8e10949c 100644
Binary files a/docs/_downloads/373278b9f6fc686adeaa0219598fe78b/mix_python_and_tvm_with_pymodule.zip and b/docs/_downloads/373278b9f6fc686adeaa0219598fe78b/mix_python_and_tvm_with_pymodule.zip differ
diff --git a/docs/_downloads/4753776bbe68e7c9ee4d19117973fc8b/relax_creation.zip b/docs/_downloads/4753776bbe68e7c9ee4d19117973fc8b/relax_creation.zip
index 22321f5192c..f6f3621a1cf 100644
Binary files a/docs/_downloads/4753776bbe68e7c9ee4d19117973fc8b/relax_creation.zip and b/docs/_downloads/4753776bbe68e7c9ee4d19117973fc8b/relax_creation.zip differ
diff --git a/docs/_downloads/7d201684dfa095a5ea48d98e9a2ef7ad/relax_transformation.zip b/docs/_downloads/7d201684dfa095a5ea48d98e9a2ef7ad/relax_transformation.zip
index c9164d251ef..cc9a1f140ee 100644
Binary files a/docs/_downloads/7d201684dfa095a5ea48d98e9a2ef7ad/relax_transformation.zip and b/docs/_downloads/7d201684dfa095a5ea48d98e9a2ef7ad/relax_transformation.zip differ
diff --git a/docs/_downloads/83e85f38cf16f1d926d06615fd54095c/optimize_llm.zip b/docs/_downloads/83e85f38cf16f1d926d06615fd54095c/optimize_llm.zip
index be7d478b688..ddd71391443 100644
Binary files a/docs/_downloads/83e85f38cf16f1d926d06615fd54095c/optimize_llm.zip and b/docs/_downloads/83e85f38cf16f1d926d06615fd54095c/optimize_llm.zip differ
diff --git a/docs/_downloads/8c05f1d580979a2c26428a509c07ed72/bring_your_own_codegen.zip b/docs/_downloads/8c05f1d580979a2c26428a509c07ed72/bring_your_own_codegen.zip
index 774f00a85f3..12731b4bbeb 100644
Binary files a/docs/_downloads/8c05f1d580979a2c26428a509c07ed72/bring_your_own_codegen.zip and b/docs/_downloads/8c05f1d580979a2c26428a509c07ed72/bring_your_own_codegen.zip differ
diff --git a/docs/_downloads/a7dd7652b2ad50f82d7b739ce3645799/e2e_opt_model.zip b/docs/_downloads/a7dd7652b2ad50f82d7b739ce3645799/e2e_opt_model.zip
index c7d476acbe4..bfe088e09b3 100644
Binary files a/docs/_downloads/a7dd7652b2ad50f82d7b739ce3645799/e2e_opt_model.zip and b/docs/_downloads/a7dd7652b2ad50f82d7b739ce3645799/e2e_opt_model.zip differ
diff --git a/docs/_downloads/bb7db6678496193ed0c55d3b95fa6778/quick_start.zip b/docs/_downloads/bb7db6678496193ed0c55d3b95fa6778/quick_start.zip
index a9beae88201..95700627dd3 100644
Binary files a/docs/_downloads/bb7db6678496193ed0c55d3b95fa6778/quick_start.zip and b/docs/_downloads/bb7db6678496193ed0c55d3b95fa6778/quick_start.zip differ
diff --git a/docs/_downloads/bc875d02d5382abc9ea5fb9eb2c1de2c/export_and_load_executable.zip b/docs/_downloads/bc875d02d5382abc9ea5fb9eb2c1de2c/export_and_load_executable.zip
index 8456371eb90..4ac2e167875 100644
Binary files a/docs/_downloads/bc875d02d5382abc9ea5fb9eb2c1de2c/export_and_load_executable.zip and b/docs/_downloads/bc875d02d5382abc9ea5fb9eb2c1de2c/export_and_load_executable.zip differ
diff --git a/docs/_downloads/be26483bb70b8468499a01c55e8e866c/tir_creation.zip b/docs/_downloads/be26483bb70b8468499a01c55e8e866c/tir_creation.zip
index 071903bc478..3a7f2d9bd92 100644
Binary files a/docs/_downloads/be26483bb70b8468499a01c55e8e866c/tir_creation.zip and b/docs/_downloads/be26483bb70b8468499a01c55e8e866c/tir_creation.zip differ
diff --git a/docs/_downloads/dfe78527fd2d0066cb46ed1e46ecf4aa/mix_python_and_tvm_with_pymodule.py b/docs/_downloads/dfe78527fd2d0066cb46ed1e46ecf4aa/mix_python_and_tvm_with_pymodule.py
index 9515f6874d9..bf42154bfb6 100644
--- a/docs/_downloads/dfe78527fd2d0066cb46ed1e46ecf4aa/mix_python_and_tvm_with_pymodule.py
+++ b/docs/_downloads/dfe78527fd2d0066cb46ed1e46ecf4aa/mix_python_and_tvm_with_pymodule.py
@@ -71,7 +71,7 @@ RUN_EXAMPLE = HAS_TORCH and not IS_IN_CI
######################################################################
# Step 1: Your First Hybrid Module
# ----------------------------------
-# The core idea: decorate a class with ``@I.ir_module``, inherit from ``BasePyModule``, and use
+# The core idea: decorate a class with ``@R.py_module``, inherit from ``BasePyModule``, and use
# three decorators for three kinds of functions:
#
# - ``@T.prim_func`` — low-level TIR kernel (JIT-compiled on instantiation)
@@ -83,7 +83,7 @@ RUN_EXAMPLE = HAS_TORCH and not IS_IN_CI
if RUN_EXAMPLE:
- @I.ir_module
+ @R.py_module
class MyFirstModule(BasePyModule):
@T.prim_func(s_tir=True)
def add_tir(
@@ -129,7 +129,7 @@ if RUN_EXAMPLE:
if RUN_EXAMPLE:
- @I.ir_module
+ @R.py_module
class DebugModule(BasePyModule):
@T.prim_func(s_tir=True)
def matmul_tir(var_A: T.handle, var_B: T.handle, var_C: T.handle):
@@ -207,7 +207,7 @@ if RUN_EXAMPLE:
out_np = x_np + b_np
out[:] = out_np
- @I.ir_module
+ @R.py_module
class PipelineModule(BasePyModule):
@T.prim_func(s_tir=True)
def matmul_tir(var_A: T.handle, var_B: T.handle, var_C: T.handle):
@@ -304,7 +304,7 @@ if RUN_EXAMPLE:
w = torch.randn(4, 4)
b = torch.randn(4)
- py_result_early = converted_early.pyfuncs["main"](x, w, b)
+ py_result_early = converted_early.__pyfuncs__["main"](x, w, b)
expected = F.relu(x @ w + b)
print("Before optimization:")
@@ -320,7 +320,7 @@ if RUN_EXAMPLE:
converter_late = RelaxToPyFuncConverter(optimized_mod)
converted_late = converter_late.convert(["main"])
- py_result_late = converted_late.pyfuncs["main"](x, w, b)
+ py_result_late = converted_late.__pyfuncs__["main"](x, w, b)
print("\nAfter CanonicalizeBindings pass:")
print(" Converted result:", py_result_late)
@@ -345,7 +345,7 @@ if RUN_EXAMPLE:
if RUN_EXAMPLE:
- @I.ir_module
+ @R.py_module
class HybridVMModule(BasePyModule):
@I.pyfunc
def silu(self, x):
@@ -399,7 +399,7 @@ if RUN_EXAMPLE:
if RUN_EXAMPLE:
- @I.ir_module
+ @R.py_module
class DynamicModule(BasePyModule):
@T.prim_func(s_tir=True)
def scale_tir(var_x: T.handle, var_out: T.handle):
diff --git a/docs/_downloads/ee6bb02238ab43f2b87505cc74484f6b/mix_python_and_tvm_with_pymodule.ipynb b/docs/_downloads/ee6bb02238ab43f2b87505cc74484f6b/mix_python_and_tvm_with_pymodule.ipynb
index 3e182631501..b58de6b3d83 100644
--- a/docs/_downloads/ee6bb02238ab43f2b87505cc74484f6b/mix_python_and_tvm_with_pymodule.ipynb
+++ b/docs/_downloads/ee6bb02238ab43f2b87505cc74484f6b/mix_python_and_tvm_with_pymodule.ipynb
@@ -40,7 +40,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "## Step 1: Your First Hybrid Module\nThe core idea: decorate a class with ``@I.ir_module``, inherit from ``BasePyModule``, and use\nthree decorators for three kinds of functions:\n\n- ``@T.prim_func`` \u2014 low-level TIR kernel (JIT-compiled on instantiation)\n- ``@R.function`` \u2014 high-level Relax graph (JIT-compiled on instantiation)\n- ``@I.pyfunc`` \u2014 plain Python (runs as-is, can use any Python library)\n\n``call_tir`` bridges Python and TIR: it converts PyTorch ten [...]
+ "## Step 1: Your First Hybrid Module\nThe core idea: decorate a class with ``@R.py_module``, inherit from ``BasePyModule``, and use\nthree decorators for three kinds of functions:\n\n- ``@T.prim_func`` \u2014 low-level TIR kernel (JIT-compiled on instantiation)\n- ``@R.function`` \u2014 high-level Relax graph (JIT-compiled on instantiation)\n- ``@I.pyfunc`` \u2014 plain Python (runs as-is, can use any Python library)\n\n``call_tir`` bridges Python and TIR: it converts PyTorch ten [...]
]
},
{
@@ -51,7 +51,7 @@
},
"outputs": [],
"source": [
- "if RUN_EXAMPLE:\n\n @I.ir_module\n class MyFirstModule(BasePyModule):\n @T.prim_func(s_tir=True)\n def add_tir(\n A: T.Buffer((4,), \"float32\"),\n B: T.Buffer((4,), \"float32\"),\n C: T.Buffer((4,), \"float32\"),\n ):\n for i in range(4):\n C[i] = A[i] + B[i]\n\n @I.pyfunc\n def forward(self, x, y):\n \"\"\"Takes PyTorch tensors, calls TIR, returns PyTorch tensors.\"\" [...]
+ "if RUN_EXAMPLE:\n\n @R.py_module\n class MyFirstModule(BasePyModule):\n @T.prim_func(s_tir=True)\n def add_tir(\n A: T.Buffer((4,), \"float32\"),\n B: T.Buffer((4,), \"float32\"),\n C: T.Buffer((4,), \"float32\"),\n ):\n for i in range(4):\n C[i] = A[i] + B[i]\n\n @I.pyfunc\n def forward(self, x, y):\n \"\"\"Takes PyTorch tensors, calls TIR, returns PyTorch tensors.\"\" [...]
]
},
{
@@ -69,7 +69,7 @@
},
"outputs": [],
"source": [
- "if RUN_EXAMPLE:\n\n @I.ir_module\n class DebugModule(BasePyModule):\n @T.prim_func(s_tir=True)\n def matmul_tir(var_A: T.handle, var_B: T.handle, var_C: T.handle):\n n = T.int32()\n A = T.match_buffer(var_A, (n, 4), \"float32\")\n B = T.match_buffer(var_B, (4, 3), \"float32\")\n C = T.match_buffer(var_C, (n, 3), \"float32\")\n for i, j, k in T.grid(n, 3, 4):\n with T.sblock(\"matmul\"):\n [...]
+ "if RUN_EXAMPLE:\n\n @R.py_module\n class DebugModule(BasePyModule):\n @T.prim_func(s_tir=True)\n def matmul_tir(var_A: T.handle, var_B: T.handle, var_C: T.handle):\n n = T.int32()\n A = T.match_buffer(var_A, (n, 4), \"float32\")\n B = T.match_buffer(var_B, (4, 3), \"float32\")\n C = T.match_buffer(var_C, (n, 3), \"float32\")\n for i, j, k in T.grid(n, 3, 4):\n with T.sblock(\"matmul\"):\n [...]
]
},
{
@@ -94,7 +94,7 @@
},
"outputs": [],
"source": [
- "if RUN_EXAMPLE:\n # Register a packed function (simulating an external library binding)\n @tvm.register_global_func(\"my_bias_add\", override=True)\n def my_bias_add(x, bias, out):\n \"\"\"Packed function: adds bias to each row of x.\"\"\"\n\n x_np = x.numpy()\n b_np = bias.numpy()\n out_np = x_np + b_np\n out[:] = out_np\n\n @I.ir_module\n class PipelineModule(BasePyModule):\n @T.prim_func(s_tir=True)\n def matmul_ [...]
+ "if RUN_EXAMPLE:\n # Register a packed function (simulating an external library binding)\n @tvm.register_global_func(\"my_bias_add\", override=True)\n def my_bias_add(x, bias, out):\n \"\"\"Packed function: adds bias to each row of x.\"\"\"\n\n x_np = x.numpy()\n b_np = bias.numpy()\n out_np = x_np + b_np\n out[:] = out_np\n\n @R.py_module\n class PipelineModule(BasePyModule):\n @T.prim_func(s_tir=True)\n def matmul_ [...]
]
},
{
@@ -112,7 +112,7 @@
},
"outputs": [],
"source": [
- "if RUN_EXAMPLE:\n from tvm.relax.relax_to_pyfunc_converter import RelaxToPyFuncConverter\n\n # A simple Relax module: matmul + bias + relu (a dense layer)\n @I.ir_module\n class DenseLayer:\n @T.prim_func(s_tir=True)\n def bias_add_tir(var_x: T.handle, var_b: T.handle, var_out: T.handle):\n x = T.match_buffer(var_x, (2, 4), \"float32\")\n b = T.match_buffer(var_b, (4,), \"float32\")\n out = T.match_buffer(var_out, (2, 4) [...]
+ "if RUN_EXAMPLE:\n from tvm.relax.relax_to_pyfunc_converter import RelaxToPyFuncConverter\n\n # A simple Relax module: matmul + bias + relu (a dense layer)\n @I.ir_module\n class DenseLayer:\n @T.prim_func(s_tir=True)\n def bias_add_tir(var_x: T.handle, var_b: T.handle, var_out: T.handle):\n x = T.match_buffer(var_x, (2, 4), \"float32\")\n b = T.match_buffer(var_b, (4,), \"float32\")\n out = T.match_buffer(var_out, (2, 4) [...]
]
},
{
@@ -130,7 +130,7 @@
},
"outputs": [],
"source": [
- "if RUN_EXAMPLE:\n\n @I.ir_module\n class HybridVMModule(BasePyModule):\n @I.pyfunc\n def silu(self, x):\n \"\"\"SiLU/Swish activation \u2014 using Python as fallback.\"\"\"\n return torch.sigmoid(x) * x\n\n @I.pyfunc\n def layer_norm(self, x):\n \"\"\"LayerNorm \u2014 another Python fallback.\"\"\"\n return F.layer_norm(x, x.shape[-1:])\n\n @R.function\n def main(\n x: R.Tensor [...]
+ "if RUN_EXAMPLE:\n\n @R.py_module\n class HybridVMModule(BasePyModule):\n @I.pyfunc\n def silu(self, x):\n \"\"\"SiLU/Swish activation \u2014 using Python as fallback.\"\"\"\n return torch.sigmoid(x) * x\n\n @I.pyfunc\n def layer_norm(self, x):\n \"\"\"LayerNorm \u2014 another Python fallback.\"\"\"\n return F.layer_norm(x, x.shape[-1:])\n\n @R.function\n def main(\n x: R.Tensor [...]
]
},
{
@@ -148,7 +148,7 @@
},
"outputs": [],
"source": [
- "if RUN_EXAMPLE:\n\n @I.ir_module\n class DynamicModule(BasePyModule):\n @T.prim_func(s_tir=True)\n def scale_tir(var_x: T.handle, var_out: T.handle):\n n = T.int64()\n x = T.match_buffer(var_x, (n,), \"float32\")\n out = T.match_buffer(var_out, (n,), \"float32\")\n for i in T.serial(n):\n out[i] = x[i] * T.float32(2.0)\n\n @R.function\n def add_relax(\n x: R.Tensor((\"n\",), \ [...]
+ "if RUN_EXAMPLE:\n\n @R.py_module\n class DynamicModule(BasePyModule):\n @T.prim_func(s_tir=True)\n def scale_tir(var_x: T.handle, var_out: T.handle):\n n = T.int64()\n x = T.match_buffer(var_x, (n,), \"float32\")\n out = T.match_buffer(var_out, (n,), \"float32\")\n for i in T.serial(n):\n out[i] = x[i] * T.float32(2.0)\n\n @R.function\n def add_relax(\n x: R.Tensor((\"n\",), \ [...]
]
},
{
diff --git a/docs/_downloads/f69380821f417ef2210f45503d81bded/cross_compilation_and_rpc.zip b/docs/_downloads/f69380821f417ef2210f45503d81bded/cross_compilation_and_rpc.zip
index 35f6776f42c..07ce3656001 100644
Binary files a/docs/_downloads/f69380821f417ef2210f45503d81bded/cross_compilation_and_rpc.zip and b/docs/_downloads/f69380821f417ef2210f45503d81bded/cross_compilation_and_rpc.zip differ
diff --git a/docs/_downloads/f69433a4a80715725df90d1386679956/customize_opt.zip b/docs/_downloads/f69433a4a80715725df90d1386679956/customize_opt.zip
index f7f6c4a5709..ba5075ff7fb 100644
Binary files a/docs/_downloads/f69433a4a80715725df90d1386679956/customize_opt.zip and b/docs/_downloads/f69433a4a80715725df90d1386679956/customize_opt.zip differ
diff --git a/docs/_sources/arch/tvmscript.rst b/docs/_sources/arch/tvmscript.rst
index 0dc8fc63cb7..ce3f3f86f4d 100644
--- a/docs/_sources/arch/tvmscript.rst
+++ b/docs/_sources/arch/tvmscript.rst
@@ -22,22 +22,22 @@ TVMScript
TVMScript is a Python-based domain-specific language (DSL) for writing TVM IR. It lets users
define ``IRModule``\ s — containing both Relax functions and TIR ``PrimFunc``\ s — using
-familiar Python syntax. Although TVMScript *looks* like Python, it is **not executed by the
-Python interpreter**. Instead, Python decorators extract the AST from the source code and
-transform it into TVM IR through a dedicated parser and IR builder pipeline.
+familiar Python syntax. Decorators acquire the source and its definition context. A syntax
+transpiler translates the Python AST into a Python builder program; executing that program
+constructs TVM IR. The scripted function body is therefore translated before execution.
TVMScript serves two roles in the TVM stack:
- **Authoring**: users write TIR kernels and Relax programs directly in TVMScript.
-- **Roundtrip**: every ``IRModule`` can be printed back to TVMScript via ``mod.script()`` and
- re-parsed to produce an equivalent module. This makes TVMScript the primary tool for
- inspecting, debugging, and serializing IR.
+- **Roundtrip**: ``mod.script()`` prints IR as TVMScript, which can be re-parsed with any
+ required external symbols to reconstruct equivalent IR. This supports inspection,
+ debugging, and serialization of printable IR.
Overview
--------
-The TVMScript system has three components:
+TVMScript separates source acquisition, syntax translation, IR construction, and printing:
.. code-block:: text
@@ -45,13 +45,17 @@ The TVMScript system has three components:
Python source (TVMScript)
│
- ▼ ast.parse + convert
+ ▼ Frontend: source + definition context
│
- Doc AST (mirror of Python AST)
+ Python AST
│
- ▼ Parser (dispatch by token: ir / tirx / relax)
+ ▼ Syntax transpiler + construction protocol
│
- ▼ IR Builder (frame stack)
+ Generated Python builder program
+ │
+ ▼ Frontend: recompose and execute callable
+ │
+ ▼ IR builders (frame stack + dialect policy)
│
TVM IR (IRModule, PrimFunc, relax.Function)
@@ -68,14 +72,17 @@ The TVMScript system has three components:
│
TVMScript text
-- **Parser** (Python): reads Python source, converts it to a ``Doc AST`` (a mirror of
- Python's ``ast`` module), then walks the tree using dialect-specific handlers that call
- into the IR builder.
-- **IR Builder** (Python + C++): provides a frame-stack API where each ``with`` block or
- decorator pushes a frame. When the frame exits, the constructed IR is finalized. The builder
- is shared across dialects — TIR and Relax each register their own frame types.
-- **Printer** (C++): converts TVM IR objects to a ``Doc`` tree (an intermediate representation
- of Python syntax), then formats the tree into valid TVMScript text.
+- **Frontend** (Python): captures definition context, acquires source, and composes the
+ generated callable with its lexical environment. It owns decorators, helper entry points,
+ and execution of the builder program.
+- **Syntax transpiler** (Python): rewrites Python AST nodes into calls on the selected
+ construction namespace. It preserves source scopes, evaluation order, and locations.
+- **IR builders** (Python + C++): own typed values, symbol identity, dialect policy, and
+ construction frames. Exiting a frame finalizes its IR and attaches it to its parent.
+- **Printer** (C++): converts IR to a ``Doc`` tree and formats it as Python syntax. The
+ printer's Doc tree is separate from the Python AST used for parsing.
+
+All source entry points use the canonical ``tvm.script.parser`` implementation.
Decorators
@@ -88,6 +95,12 @@ TVMScript uses three import aliases by convention:
from tvm.script import ir as I # module-level constructs
from tvm.script import tirx as T # TIR constructs
from tvm.script import relax as R # Relax constructs
+ from tvm.script.parser.entry import make_macro_decorator
+ from tvm.target import Target
+
+These are public authoring APIs. ``Target`` configures compilation targets; it remains in
+``tvm.target``. Public dialect namespaces expose decorators and source constructors, so
+scripted programs do not need direct imports from builder implementation packages.
The primary decorators are:
@@ -102,7 +115,7 @@ These can be composed:
@I.ir_module
class MyModule:
- @T.prim_func
+ @T.prim_func(s_tir=True)
def add_kernel(A: T.Buffer((128,), "float32"),
B: T.Buffer((128,), "float32"),
C: T.Buffer((128,), "float32")):
@@ -115,82 +128,228 @@ These can be composed:
def main(x: R.Tensor((128,), "float32"),
y: R.Tensor((128,), "float32")) -> R.Tensor((128,), "float32"):
with R.dataflow():
- out = R.call_tir(cls.add_kernel, (x, y),
+ out = R.call_tir(MyModule.add_kernel, (x, y),
out_ty=R.Tensor((128,), "float32"))
R.output(out)
return out
-When Python encounters ``@I.ir_module``, the decorator does **not** execute the class body.
-Instead, it calls ``tvm.script.parse()`` which extracts the source code of the class,
-builds a Doc AST, and hands it to the parser.
-
-
-Parser Architecture
--------------------
+Python creates the class before invoking ``@I.ir_module``. Function decorators inside an
+IR-module class retain method definitions for module construction. The module frontend then
+acquires the source and constructs declarations and bodies in the module's builder context.
+Standalone ``@T.prim_func`` and ``@R.function`` definitions construct their IR immediately.
-The parser lives in ``python/tvm/script/parser/``.
+A helper can construct expressions or statements in the caller's active builder frames:
-Dispatch mechanism
-~~~~~~~~~~~~~~~~~~
-
-Different IR dialects (TIR, Relax) need different handling for the same Python syntax. For
-example, ``if ... else`` inside ``@T.prim_func`` creates a TIR ``If`` branch, while the same
-syntax inside ``@R.function`` creates a Relax ``If`` node with different semantics.
-
-The parser maintains a **dispatch token** stack (``["default"]`` initially). When it encounters
-a decorated function, it inspects the decorator to determine the token — ``"tirx"`` for
-``@T.prim_func``, ``"relax"`` for ``@R.function`` — and pushes it onto the stack.
+.. code-block:: python
-Each AST node type is dispatched via a virtual table:
+ @make_macro_decorator(T)
+ def add_one(value):
+ return value + 1
-.. code-block:: text
+Unlike a function decorator, ``make_macro_decorator`` does not create an IR function for
+each helper. Its default return behavior is ordinary Python return from the generated
+helper program.
+``T.inline`` and the dialect macro decorators are supplied through the same frontend helper
+mechanism.
- ParseVTable[(token, node_type)] → handler function
- Lookup order:
- 1. (current_token, node_type) e.g. ("tirx", "For")
- 2. ("default", node_type) e.g. ("default", "For")
- 3. generic_visit fallback
+Parser Architecture
+-------------------
-Dialect-specific parsers (``parser/tirx/parser.py``, ``parser/relax/parser.py``) register
-handlers using ``@dispatch.register(token, type_name)`` decorators.
+The parser lives in ``python/tvm/script/parser/``. ``inspect_source.py`` owns source
+acquisition, the ``Source`` representation and its coordinate helpers, and definition-context
+capture. Documented functions in ``entry.py`` manage the parse sequence, callable composition
+and execution.
+The transpiler handles syntax; the builders interpret concrete values. TIRx JIT validation,
+defaults and specialization caching live in ``tvm.tirx.script.jit``; shared parser utilities
+remain independent of that policy.
+
+Syntax and construction protocol
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+A registered function decorator selects a construction namespace. The same Python syntax
+then lowers to operations supplied by that namespace: for example, unmarked ``if`` creates
+TIR control-flow frames in a primitive function and Relax control-flow frames in a Relax
+function. The transpiler emits these operations without implementing dialect IR semantics.
+
+``parser/protocol_registry.py`` owns callable syntax metadata and registration. Argument policies such
+as ``expr_str`` translate symbolic strings written directly in source expressions, while ``global_info``
+preserves a module reference for builder-side lookup. Dtype and placement strings remain
+literal. Captured or computed symbolic shapes must already contain explicit IR variables;
+the parser does not interpret expression strings found inside captured values.
+Registration keeps syntax facts in simple dictionaries keyed by canonical namespace paths.
+Known namespace aliases normalize to the registered path; ordinary captured callables,
+local aliases, methods and closures execute as Python without marker inference. The
+dictionaries retain no source functions or parse captures. Dialects own their namespace
+exports, entry points and aliases and register them with the generic parser.
+The registry selects a call's argument policy before traversal and reuses positional
+parameter names computed once at registration;
+``parser/expr_str_handling.py`` decodes annotation/expression strings and maps their
+escaped, multiline and UTF-8 source ranges. The main visitor rewrites the decoded syntax.
+
+Assignments become binding operations, standalone expressions become emission operations,
+and loops and scopes become builder contexts. An ordinary assignment passes its evaluated
+RHS and a separate ``value_span`` to ``bind_``, without first stamping the returned value.
+The binding target has its own span. TIRx preserves returned Vars, including BufferVars,
+and ordinary metadata objects; other expressions follow the dialect's binding rules.
+Construction still runs in the source context, and nested expressions retain their locations.
+Concrete binding, type checking, comparison construction, and frame finalization belong to
+the builders. Ordinary host calls and
+operator overloads execute as part of the generated Python program.
+
+Loop frames create their named variables during construction. Entering a frame returns
+the variable directly for one dimension and the variable sequence for multiple dimensions,
+so ordinary Python uses ``with T.serial(0, n) as i``. Generated scalar loops use the same
+entry form. Generated tuple, list and starred targets unpack the entered frame's stable
+``vars`` sequence, preserving explicit one-dimensional unpacking and native variable identity.
+
+Parser syntax restrictions raise ``SyntaxError`` with the original filename and source
+range. Python helper and builder exceptions propagate unchanged, preserving their identity,
+type and source-mapped traceback. Temporary parser contexts are released on both successful
+and exceptional exits.
Parse flow
~~~~~~~~~~
-The entry point is ``parse(program, extra_vars)``:
-
-1. **Source extraction**: the program's source code is extracted (from a class, function, or
- string) and converted to a Doc AST via Python's ``ast`` module.
+The public entry points include ``tvm.script.parse`` and ``tvm.script.from_source``:
+
+1. **Acquire source and context**: the frontend accepts a function, class, or source string,
+ obtains its Python AST, and retains source locations. Decorators capture the definition
+ context temporarily through ``definition_scope``; source-string callers can supply
+ external bindings through ``extra_vars``. Source inspection belongs to
+ ``parser.inspect_source``.
+2. **Prescan and translate syntax**: acquisition supplies a fresh owned AST. One
+ ``PrescanCollector`` produces read-only ``PrescanContext`` facts for reserved names,
+ scoped declarations and conditional outputs. ``IRBuilderTranspiler`` rewrites that owned
+ tree with the standard Python AST visitor, using fixed namespace metadata and registered
+ argument policies without copying or reparsing the tree. One shared name allocator
+ avoids collisions with user identifiers through rewriting and recomposition.
+3. **Compose the callable**: the private frontend helper ``_recompose_builder`` compiles
+ the generated program with the source's globals, closure bindings, and necessary
+ annotation context. Explicit temporary phase inputs connect generated helpers to
+ their source functions without rediscovering them through a generated-AST walk.
+4. **Execute construction**: the callable enters native builder frames and reconstructs
+ declarations and annotations in their required context. When forward declarations are
+ needed, it declares all signatures first. Inside each retained native function frame,
+ it defines and calls a lexical body helper without an explicit frame argument. Re-entry
+ uses the existing parameters instead of adding them again. Native frames own module
+ references, results and function-local symbols.
+5. **Validate and return IR**: generated code calls the dialect's
+ ``X.check_well_formed_`` for a completed function or the shared
+ ``I.check_well_formed_`` for a completed module. Public parsing validates by default.
+ Parsing owns execution and releases its temporary builder and captures afterward.
+
+Definition and symbol scopes
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Python lexical bindings and DSL symbolic declarations have different owners. The frontend
+captures the exact definition scope during decoration, including enclosing names used only
+in annotations that Python may omit from the function's closure. Ordinary body references
+retain their source globals and closure bindings. Unrelated callers' local variables do not
+become part of this environment.
+
+Annotations are reconstructed as builder operations within the module/function context.
+The generated program preserves their definition scope and original names, using a
+distinct compiler binding only when a source-local binding would shadow the annotation.
+One prescan-seeded name allocator serves rewriting and callable recomposition. Body
+globals and closures retain their original lookup, including a method closure whose name
+also appears as a class member. Callable recomposition and
+lexical environment setup belong to the frontend. The transpiler preserves source scopes
+through Python syntax; it does not classify each name by membership in a runtime environment
+or search caller stacks for values.
+
+DSL expression strings such as ``R.Tensor(("n", 4), "float32")`` use
+``X.resolve_type_var_("n")``, which delegates to the nearest native function frame's
+``type_var_map``. Repeated names refer to the same symbol across parameters, return
+annotations and the body. Quoted lookup does not introduce a Python name; an explicit
+symbol declaration does. A Python name in ``R.Tensor((n, 4), ...)`` follows its source
+lexical scope. Module global-info references use ``I.resolve_global_info_`` against the
+active native module frame's existing map.
+
+During rewriting, each needed source range becomes a fixed native span entry in an
+injected table. ``_S[i](value)`` attaches that location while preserving identity;
+``_S[i].ctx(lambda: helper(value))`` evaluates the callee and arguments once within
+the source context and restores it on success or failure. Entries live in
+``ir_builder.base`` and retain no AST or active caller context. Dynamic caller/definition
+provenance is composed when an entry is used. Ordinary names, Python literals, fixed
+namespace/callee lookup and structural indexing tuples need no entries. Arithmetic and
+buffer loads retain their own expression ranges.
+
+Generated hooks receive entries explicitly: ``X.for_(X.range_(3), names="i", span=_S[i])``
+and ``X.emit_(value, span=_S[j])`` own their result locations. A callable registered with
+``result_span`` promises that its complete IR effect is represented by its returned node
+or emission receipt, allowing result attachment without a construction context. Opaque
+helpers still require ``.ctx`` to locate internal effects. At an ordinary assignment boundary,
+``.ctx(..., attach_result=False)`` preserves construction context while leaving the returned
+value's attribution to ``bind_`` through its separate ``value_span``.
+The parser-owned ``parser.protocol_registry`` module defines registration APIs, metadata and
+persistent registration state. Dialects apply these policies beside concrete definitions,
+constructor creation or necessary exposure sites, without namespace scans or bulk
+registration inventories. Dialect ``parser_protocol`` modules implement construction hooks. The shared
+``ir_builder.ir.parser_protocol`` documents the detailed builder-hook contract and links
+to the registry for special syntax policies. Dialect hooks retain typed signatures and
+document only their specific behavior. For example, dialects import ``args_policy``
+from ``tvm.script.parser.protocol_registry`` to register literal argument policies.
+
+Ordinary assignments pass returned values to ``bind_``. TIRx Vars keep their exact identity,
+producer names and spans, including scope variables, block axes and explicit ``T.bind``
+results. This behavior belongs to the builder's value handling and requires no parser
+producer classification. Self-emitting builders return ``AlreadyEmitted[T]`` so
+source-location handling can annotate the emitted object without emitting it twice.
+Layout, meta_class and view results likewise follow dialect value handling for assignment
+and standalone statements. Unsupported host values still fail under the dialect's emission
+rules. Expression-facing thread APIs return native Vars; IterVar remains native metadata.
+
+Simple comparison chains such as ``0 < i < 10`` lower to
+``X.and_(X.lt_(0, i), X.lt_(i, 10))``. Only names and numeric literals, including signed
+literals, are supported in a chain. Complex chain operands fail with a source-located
+syntax error before they evaluate. Single comparisons retain general operands, and the
+explicit constexpr boundary retains Python comparison semantics.
+
+A bare loop target receives the native entry result: ``for iters in T.grid(m, n)`` binds
+the original variable sequence, while ``for i in T.serial(n)`` binds one Var. Explicit
+tuple, list and starred targets unpack the native frame's stable ``vars`` field.
+
+Function decorators pass their construction namespace and options explicitly to parsing.
+Generated ``X.function_(**options)`` creates the frame; the dialect hook owns option defaults.
+Declaration creates stable references before function bodies; generated code reads the
+native ``global_var`` or ``local_var`` field directly, without a separate reservation pass.
+There is no function-registration record or copied source-function metadata. The root
+retains ``pyfunc`` behavior and original Python callables for module assembly.
+
+Completed modules use generic root coordination over dialect-owned validation hooks.
+Each dialect checks its members and cross-function requirements against the whole module,
+including captured members. Shared GlobalInfo construction and lookup belong to ``tvm.ir``;
+existing Relax class exports and serialized type keys remain compatible.
+
+Each parse rewrites the fresh AST returned by source acquisition directly, without
+copying or reparsing it. Ordinary functions construct arguments directly and bind their
+known body parameters from ``frame.params``. Specialization setup and conditional
+parameter selection are generated only for an explicit specialization request; an empty
+mapping still requests that path, while ``None`` selects ordinary parsing.
+
+Explicit host control flow
+~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Mark compile-time Python selection with ``I.constexpr`` or the identical dialect alias:
-2. **AST walking**: the ``Parser`` (a subclass of ``doc.NodeVisitor``) walks the Doc AST.
- For each node, it looks up the handler in the dispatch table.
-
-3. **Expression evaluation**: expressions like ``T.grid(128, 128)`` are evaluated by the
- ``ExprEvaluator``, which resolves names against the variable table and the ``T.``/``R.``
- module namespaces.
-
-4. **Value binding**: assignment statements (``A = T.match_buffer(...)`` in TIR,
- ``lv = R.add(x, y)`` in Relax) go through dialect-specific ``bind_*_value()`` functions
- that register the resulting TVM objects in the parser's ``VarTable``.
-
-5. **Scoping**: the ``VarTable`` maintains a stack of frames. Entering a ``with`` block,
- ``for`` loop, or function body pushes a new frame; exiting pops it. This ensures variables
- are scoped correctly.
-
-Variable table
-~~~~~~~~~~~~~~
+.. code-block:: python
-The ``VarTable`` is the parser's symbol table:
+ if I.constexpr(enabled):
+ T.evaluate(1)
+ else:
+ T.evaluate(0)
-.. code-block:: text
+ value = T.ramp(0, 1, lanes) if T.constexpr(lanes > 1) else 0
- VarTable
- ├── frames: [VarTableFrame, ...] ← stack of scopes
- └── name2value: {str: [Any, ...]} ← name → value stack (for shadowing)
+The marker applies to the controlling value. The generated program evaluates it once and
+executes only the selected Python branch in the existing builder scope. Branch bodies and
+result expressions still translate normally. Marked ``and`` and ``or`` decisions retain
+Python short-circuiting; unmarked conditionals and logical expressions call dialect IR
+constructors. A Python boolean alone does not request compile-time branch selection.
-When a name is looked up, the most recent binding wins. When a frame is popped, all bindings
-introduced in that frame are removed.
+JIT supplies validated specialization bindings and optional-argument absence to builder
+execution. Syntax translation does not inspect those values to select a branch.
IR Builder Architecture
@@ -208,7 +367,7 @@ represents and attaches it to the parent frame.
.. code-block:: text
- IRBuilder (thread-local singleton)
+ IRBuilder (current construction context)
└── frame stack:
├── IRModuleFrame ← @I.ir_module
│ ├── PrimFuncFrame ← @T.prim_func
@@ -219,19 +378,19 @@ represents and attaches it to the parent frame.
│ └── BindingBlockFrame ← R.dataflow()
└── ...
-This design means the parser never needs to build a complete IR tree in memory — it
-constructs IR top-down by entering and exiting frames, and each frame handles its own
-finalization.
+The generated program constructs IR by entering and exiting frames. Each frame owns its
+construction policy and finalization; the syntax transpiler does not maintain an IR tree.
TIR builder
~~~~~~~~~~~
-The TIR builder (``ir_builder/tirx/ir.py``) provides functions that map directly to TVMScript
-syntax. Key categories:
+The TIR builder (``python/tvm/tirx/script/builder/``) implements the construction operations
+behind public ``T`` syntax. Builder modules also support direct programmatic construction;
+public decorators and internal frame-opening operations have distinct roles. Key categories:
**Function and block**:
-- ``T.prim_func()`` → ``PrimFuncFrame``
+- ``@T.prim_func`` selects TIR construction; its builder ``function()`` opens ``PrimFuncFrame``
- ``T.sblock(name)`` → ``SBlockFrame`` (spatial block)
- ``T.init()`` → ``BlockInitFrame`` (reduction initialization)
- ``T.reads(...)``, ``T.writes(...)`` → declare buffer access regions
@@ -257,11 +416,11 @@ syntax. Key categories:
Relax builder
~~~~~~~~~~~~~
-The Relax builder (``ir_builder/relax/ir.py``) provides:
+The Relax builder (``python/tvm/relax/script/builder/``) implements:
**Function and dataflow**:
-- ``R.function()`` → ``FunctionFrame``
+- ``@R.function`` selects Relax construction; its builder ``function()`` opens ``FunctionFrame``
- ``R.dataflow()`` → ``BindingBlockFrame``
- ``R.output(*vars)`` → expose variables from a dataflow block
@@ -270,6 +429,9 @@ The Relax builder (``ir_builder/relax/ir.py``) provides:
- ``R.emit(value)`` → emit a binding, returns a ``Var``
- ``R.emit_match_cast(value, ty)`` → emit with type assertion
+Generated standalone-statement emission uses the construction protocol's separate ``emit_``
+operation. Public ``R.emit`` retains its binding-returning imperative API.
+
**Type annotations**:
- ``R.Tensor(shape, dtype)`` — tensor type
@@ -325,17 +487,17 @@ It maintains:
Each IR dialect registers its own converters:
-- ``src/script/printer/tirx/`` — converts PrimFunc, Buffer, SBlock, loops, expressions.
-- ``src/script/printer/relax/`` — converts relax.Function, bindings, types, operators.
+- ``src/tirx/script/printer/`` — converts PrimFunc, Buffer, SBlock, loops, expressions.
+- ``src/relax/script/printer/`` — converts relax.Function, bindings, types, operators.
- ``src/script/printer/ir/`` — converts IRModule, shared types.
The final step calls ``DocToPythonScript()`` (``src/script/printer/doc_printer/python_doc_printer.cc``)
to format the Doc tree into properly indented Python text.
-Roundtrip guarantee
-~~~~~~~~~~~~~~~~~~~
+Roundtrip
+~~~~~~~~~
-For any ``IRModule`` constructed through the compiler:
+For printable IR with the required source context available:
.. code-block:: python
@@ -344,9 +506,9 @@ For any ``IRModule`` constructed through the compiler:
tvm.ir.assert_structural_equal(mod, reparsed)
This roundtrip property is relied upon by testing infrastructure and serialization workflows.
-Note that the printed text may differ from hand-written TVMScript — the printer uses canonical
-forms (e.g., explicit ``R.emit`` calls, fully qualified buffer annotations) that are not required
-in hand-written code.
+Printed text uses canonical forms and may differ from hand-written TVMScript. External
+objects or Python attachments require their corresponding context; text alone does not
+serialize arbitrary Python state.
Supported Python Syntax
@@ -364,7 +526,7 @@ and how each construct is interpreted:
- Relax
* - ``for i in range(n)``
- Serial loop nest
- - Not supported (no Relax-level ``for`` handler)
+ - No Relax IR loop construction
* - ``with T.sblock(...)``
- Spatial block scope
- N/A
@@ -372,8 +534,8 @@ and how each construct is interpreted:
- N/A
- Dataflow block
* - ``if ... else``
- - TIR ``If`` branch (PrimExpr condition) or static eval (Python bool)
- - Relax ``If`` node (plain Python ``if cond:`` syntax)
+ - TIR ``IfThenElse``; explicit ``I.constexpr`` selects a Python branch
+ - Relax ``If``; explicit ``I.constexpr`` selects a Python branch
* - ``while``
- ``T.While`` loop
- Not supported
@@ -385,9 +547,9 @@ and how each construct is interpreted:
- N/A
* - ``x: R.Tensor(...)``
- N/A
- - Struct info annotation
+ - Type annotation
* - ``return``
- - Not used
+ - Primitive return expression
- Function return value
* - ``A[i, j]``
- Buffer load
@@ -402,9 +564,9 @@ and how each construct is interpreted:
- ``T.*`` intrinsics
- ``R.*`` operators or ``call_tir`` / ``call_packed``
-**Not supported**: ``class`` definitions (except for ``@I.ir_module``), ``try/except``,
-``yield``, ``async/await``, list comprehensions, ``lambda``, ``import``, and ``global``
-statements.
+Inside scripted function bodies, unsupported statement forms include ``class``,
+``try/except``, ``import``, and ``global``. ``yield`` and ``async/await`` are also unsupported.
+Place imports and ordinary Python class definitions in the surrounding Python program.
TIR Syntax Reference
@@ -417,6 +579,8 @@ Function definition
@T.prim_func
def func_name(a: T.handle, b: T.handle):
+ m = T.int32()
+ n = T.int32()
A = T.match_buffer(a, (m, n), "float32")
B = T.match_buffer(b, (m,), "float32")
# function body
@@ -428,6 +592,8 @@ Function definition
Block and axes
~~~~~~~~~~~~~~
+Use ``@T.prim_func(s_tir=True)`` for functions with scheduled-TIR blocks and block axes.
+
.. code-block:: python
for i, j in T.grid(128, 128):
@@ -472,7 +638,7 @@ Common intrinsics
T.cast(x, "float16") # type cast
T.if_then_else(cond, true_val, false_val) # conditional expression
T.min(a, b), T.max(a, b) # min/max
- T.call_extern("func_name", *args) # external function call
+ T.call_extern("int32", "func_name", *args) # external function call
T.call_packed("func_name", *args) # packed function call
T.tvm_storage_sync("shared") # GPU memory fence
@@ -514,9 +680,9 @@ Calling TIR functions
.. code-block:: python
- out = R.call_tir(cls.my_kernel, (x, y), out_ty=R.Tensor((128,), "float32"))
+ out = R.call_tir(MyModule.my_kernel, (x, y), out_ty=R.Tensor((128,), "float32"))
-- ``cls.my_kernel`` — references a TIR ``PrimFunc`` in the same module.
+- ``MyModule.my_kernel`` — references a TIR ``PrimFunc`` in the same module.
- ``out_ty`` — the type (shape and dtype) of the output tensor.
Control flow
@@ -534,42 +700,3 @@ boolean type. Both branches are required.
else:
result = R.multiply(x, x)
return result
-
-
-Source Code Map
----------------
-
-.. list-table::
- :header-rows: 1
- :widths: 50 50
-
- * - Path
- - Contents
- * - ``python/tvm/script/parser/core/``
- - Core parser: dispatch, expression evaluator, variable table, Doc AST
- * - ``python/tvm/script/parser/tirx/``
- - TIR-specific parser handlers and value binding
- * - ``python/tvm/script/parser/relax/``
- - Relax-specific parser handlers and value binding
- * - ``python/tvm/script/parser/ir/``
- - ``@I.ir_module`` entry point and module-level parsing
- * - ``python/tvm/script/ir_builder/base.py``
- - IRBuilder base class and frame stack mechanism
- * - ``python/tvm/script/ir_builder/tirx/``
- - TIR frame types and builder functions (``T.*``)
- * - ``python/tvm/script/ir_builder/relax/``
- - Relax frame types and builder functions (``R.*``)
- * - ``python/tvm/script/ir_builder/ir/``
- - IRModule builder (``I.*``)
- * - ``src/script/printer/``
- - C++ printer: Doc tree, IRDocsifier, Python code generation
- * - ``src/script/printer/tirx/``
- - TIR-specific IR-to-Doc converters
- * - ``src/script/printer/relax/``
- - Relax-specific IR-to-Doc converters
- * - ``src/script/ir_builder/``
- - C++ backend for frame stack and IR construction
- * - ``include/tvm/script/printer/``
- - C++ headers: Doc classes, IRDocsifier, dispatch functor
- * - ``include/tvm/script/ir_builder/``
- - C++ headers: builder base, dialect-specific frame types
diff --git a/docs/_sources/deep_dive/relax/tutorials/relax_creation.rst b/docs/_sources/deep_dive/relax/tutorials/relax_creation.rst
index 9ad02e31507..31219814c15 100644
--- a/docs/_sources/deep_dive/relax/tutorials/relax_creation.rst
+++ b/docs/_sources/deep_dive/relax/tutorials/relax_creation.rst
@@ -76,6 +76,8 @@ high-level Relax operators using TVMScript.
# from typing import TypeVar
# from tvm.script import ir as I
+ # from tvm.script import tirx as T
+ # from tvm.tirx.layout import Axis
# from tvm.script import relax as R
n = TypeVar("n")
@@ -83,6 +85,7 @@ high-level Relax operators using TVMScript.
class Module:
@R.function
def forward(data: R.Tensor((n, 784), dtype="float32"), w0: R.Tensor((128, 784), dtype="float32"), b0: R.Tensor((128,), dtype="float32"), w1: R.Tensor((10, 128), dtype="float32"), b1: R.Tensor((10,), dtype="float32")) -> R.Tensor((n, 10), dtype="float32"):
+ n = T.int64()
with R.dataflow():
lv: R.Tensor((784, 128), dtype="float32") = R.permute_dims(w0, axes=None)
lv1: R.Tensor((n, 128), dtype="float32") = R.matmul(data, lv, out_dtype=None)
@@ -163,16 +166,19 @@ TensorIR functions in Relax function.
class Module:
@T.prim_func(s_tir=True)
def relu(X: T.Buffer((n, m), "float32"), Y: T.Buffer((n, m), "float32")):
+ m = T.int64()
+ n = T.int64()
# with T.sblock("root"):
for i, j in T.grid(n, m):
with T.sblock("relu"):
- vi, vj = T.axis.remap("SS", [i, j])
- T.reads(X[vi, vj])
- T.writes(Y[vi, vj])
- Y[vi, vj] = T.max(X[vi, vj], T.float32(0.0))
+ v, v_1 = T.axis.remap("SS", [i, j])
+ T.reads(X[v, v_1])
+ T.writes(Y[v, v_1])
+ Y[v, v_1] = T.max(X[v, v_1], T.float32(0.0))
@R.function
def forward(data: R.Tensor((n, 784), dtype="float32"), w0: R.Tensor((128, 784), dtype="float32"), b0: R.Tensor((128,), dtype="float32"), w1: R.Tensor((10, 128), dtype="float32"), b1: R.Tensor((10,), dtype="float32")) -> R.Tensor((n, 10), dtype="float32"):
+ n = T.int64()
cls = Module
with R.dataflow():
lv: R.Tensor((784, 128), dtype="float32") = R.permute_dims(w0, axes=None)
@@ -276,6 +282,8 @@ After we define the NNModule, we can export it to TVM IRModule via
# from typing import TypeVar
# from tvm.script import ir as I
+ # from tvm.script import tirx as T
+ # from tvm.tirx.layout import Axis
# from tvm.script import relax as R
n = TypeVar("n")
@@ -283,6 +291,7 @@ After we define the NNModule, we can export it to TVM IRModule via
class Module:
@R.function
def forward(x: R.Tensor((n, 784), dtype="float32"), fc1_weight: R.Tensor((128, 784), dtype="float32"), fc1_bias: R.Tensor((128,), dtype="float32"), fc2_weight: R.Tensor((10, 128), dtype="float32"), fc2_bias: R.Tensor((10,), dtype="float32")) -> R.Tensor((n, 10), dtype="float32"):
+ n = T.int64()
R.func_attr({"num_input": 1})
with R.dataflow():
permute_dims: R.Tensor((784, 128), dtype="float32") = R.permute_dims(fc1_weight, axes=None)
@@ -386,6 +395,7 @@ Tensor Expression(TE), TensorIR functions or other TVM packed functions.
class Module:
@T.prim_func(private=True, s_tir=True)
def relu(env_linear: T.Buffer((n, T.int64(128)), "float32"), compute: T.Buffer((n, T.int64(128)), "float32")):
+ n = T.int64()
T.func_attr({"tirx.noalias": True})
# with T.sblock("root"):
for i0, i1 in T.grid(n, T.int64(128)):
@@ -397,24 +407,28 @@ Tensor Expression(TE), TensorIR functions or other TVM packed functions.
@T.prim_func(s_tir=True)
def tir_linear(X: T.Buffer((M, K), "float32"), W: T.Buffer((N, K), "float32"), B: T.Buffer((N,), "float32"), Z: T.Buffer((M, N), "float32")):
+ K = T.int64()
+ M = T.int64()
+ N = T.int64()
# with T.sblock("root"):
for i, j, k in T.grid(M, N, K):
with T.sblock("linear"):
- vi, vj, vk = T.axis.remap("SSR", [i, j, k])
- T.reads(X[vi, vk], W[vj, vk])
- T.writes(Z[vi, vj])
+ v, v_1, v_2 = T.axis.remap("SSR", [i, j, k])
+ T.reads(X[v, v_2], W[v_1, v_2])
+ T.writes(Z[v, v_1])
with T.init():
- Z[vi, vj] = T.float32(0.0)
- Z[vi, vj] = Z[vi, vj] + X[vi, vk] * W[vj, vk]
+ Z[v, v_1] = T.float32(0.0)
+ Z[v, v_1] = Z[v, v_1] + X[v, v_2] * W[v_1, v_2]
for i, j in T.grid(M, N):
with T.sblock("add"):
- vi, vj = T.axis.remap("SS", [i, j])
- T.reads(Z[vi, vj], B[vj])
- T.writes(Z[vi, vj])
- Z[vi, vj] = Z[vi, vj] + B[vj]
+ v, v_1 = T.axis.remap("SS", [i, j])
+ T.reads(Z[v, v_1], B[v_1])
+ T.writes(Z[v, v_1])
+ Z[v, v_1] = Z[v, v_1] + B[v_1]
@R.function
def forward(x: R.Tensor((n, 784), dtype="float32"), fc1_weight: R.Tensor((128, 784), dtype="float32"), fc1_bias: R.Tensor((128,), dtype="float32"), fc2_weight: R.Tensor((10, 128), dtype="float32"), fc2_bias: R.Tensor((10,), dtype="float32")) -> R.Tensor((n, 10), dtype="float32"):
+ n = T.int64()
R.func_attr({"num_input": 1})
cls = Module
with R.dataflow():
@@ -471,6 +485,8 @@ customized pass.
# from typing import TypeVar
# from tvm.script import ir as I
+ # from tvm.script import tirx as T
+ # from tvm.tirx.layout import Axis
# from tvm.script import relax as R
v = TypeVar("v")
@@ -478,6 +494,7 @@ customized pass.
class Module:
@R.function
def forward(x: R.Tensor((v, 784), dtype="float32"), fc1_weight: R.Tensor((128, 784), dtype="float32"), fc1_bias: R.Tensor((128,), dtype="float32"), fc2_weight: R.Tensor((10, 128), dtype="float32"), fc2_bias: R.Tensor((10,), dtype="float32")) -> R.Tensor((v, 10), dtype="float32"):
+ v = T.int64()
with R.dataflow():
lv: R.Tensor((784, 128), dtype="float32") = R.permute_dims(fc1_weight, axes=None)
lv1: R.Tensor((v, 128), dtype="float32") = R.matmul(x, lv, out_dtype=None)
@@ -550,6 +567,7 @@ Relax functions, TensorIR functions and other TVM packed functions.
class Module:
@T.prim_func(private=True, s_tir=True)
def relu(lv: T.Buffer((v, T.int64(128)), "float32"), compute: T.Buffer((v, T.int64(128)), "float32")):
+ v = T.int64()
T.func_attr({"tirx.noalias": True})
# with T.sblock("root"):
for i0, i1 in T.grid(v, T.int64(128)):
@@ -561,24 +579,28 @@ Relax functions, TensorIR functions and other TVM packed functions.
@T.prim_func(s_tir=True)
def tir_linear(X: T.Buffer((M, K), "float32"), W: T.Buffer((N, K), "float32"), B: T.Buffer((N,), "float32"), Z: T.Buffer((M, N), "float32")):
+ K = T.int64()
+ M = T.int64()
+ N = T.int64()
# with T.sblock("root"):
for i, j, k in T.grid(M, N, K):
with T.sblock("linear"):
- vi, vj, vk = T.axis.remap("SSR", [i, j, k])
- T.reads(X[vi, vk], W[vj, vk])
- T.writes(Z[vi, vj])
+ v, v_1, v_2 = T.axis.remap("SSR", [i, j, k])
+ T.reads(X[v, v_2], W[v_1, v_2])
+ T.writes(Z[v, v_1])
with T.init():
- Z[vi, vj] = T.float32(0.0)
- Z[vi, vj] = Z[vi, vj] + X[vi, vk] * W[vj, vk]
+ Z[v, v_1] = T.float32(0.0)
+ Z[v, v_1] = Z[v, v_1] + X[v, v_2] * W[v_1, v_2]
for i, j in T.grid(M, N):
with T.sblock("add"):
- vi, vj = T.axis.remap("SS", [i, j])
- T.reads(Z[vi, vj], B[vj])
- T.writes(Z[vi, vj])
- Z[vi, vj] = Z[vi, vj] + B[vj]
+ v, v_1 = T.axis.remap("SS", [i, j])
+ T.reads(Z[v, v_1], B[v_1])
+ T.writes(Z[v, v_1])
+ Z[v, v_1] = Z[v, v_1] + B[v_1]
@R.function
def forward(x: R.Tensor((v, 784), dtype="float32"), fc1_weight: R.Tensor((128, 784), dtype="float32"), fc1_bias: R.Tensor((128,), dtype="float32"), fc2_weight: R.Tensor((10, 128), dtype="float32"), fc2_bias: R.Tensor((10,), dtype="float32")) -> R.Tensor((v, 10), dtype="float32"):
+ v = T.int64()
cls = Module
with R.dataflow():
lv = R.call_dps_packed("env.linear", (x, fc1_weight, fc1_bias), out_ty=R.Tensor((v, 128), dtype="float32"))
diff --git a/docs/_sources/deep_dive/relax/tutorials/relax_transformation.rst b/docs/_sources/deep_dive/relax/tutorials/relax_transformation.rst
index 38d5bfdb181..33a5b4509ca 100644
--- a/docs/_sources/deep_dive/relax/tutorials/relax_transformation.rst
+++ b/docs/_sources/deep_dive/relax/tutorials/relax_transformation.rst
@@ -68,6 +68,8 @@ the :ref:`previous section <relax-creation>`.
# from typing import TypeVar
# from tvm.script import ir as I
+ # from tvm.script import tirx as T
+ # from tvm.tirx.layout import Axis
# from tvm.script import relax as R
n = TypeVar("n")
@@ -75,6 +77,7 @@ the :ref:`previous section <relax-creation>`.
class Module:
@R.function
def forward(x: R.Tensor((n, 784), dtype="float32"), fc1_weight: R.Tensor((128, 784), dtype="float32"), fc1_bias: R.Tensor((128,), dtype="float32"), fc2_weight: R.Tensor((10, 128), dtype="float32"), fc2_bias: R.Tensor((10,), dtype="float32")) -> R.Tensor((n, 10), dtype="float32"):
+ n = T.int64()
R.func_attr({"num_input": 1})
with R.dataflow():
permute_dims: R.Tensor((784, 128), dtype="float32") = R.permute_dims(fc1_weight, axes=None)
@@ -128,6 +131,7 @@ into low-level operators.
class Module:
@T.prim_func(private=True, s_tir=True)
def add(matmul: T.Buffer((n, T.int64(128)), "float32"), fc1_bias: T.Buffer((T.int64(128),), "float32"), T_add: T.Buffer((n, T.int64(128)), "float32")):
+ n = T.int64()
T.func_attr({"tirx.noalias": True})
# with T.sblock("root"):
for ax0, ax1 in T.grid(n, T.int64(128)):
@@ -139,6 +143,7 @@ into low-level operators.
@T.prim_func(private=True, s_tir=True)
def add1(matmul1: T.Buffer((n, T.int64(10)), "float32"), fc2_bias: T.Buffer((T.int64(10),), "float32"), T_add: T.Buffer((n, T.int64(10)), "float32")):
+ n = T.int64()
T.func_attr({"tirx.noalias": True})
# with T.sblock("root"):
for ax0, ax1 in T.grid(n, T.int64(10)):
@@ -150,6 +155,7 @@ into low-level operators.
@T.prim_func(private=True, s_tir=True)
def matmul(x: T.Buffer((n, T.int64(784)), "float32"), permute_dims: T.Buffer((T.int64(784), T.int64(128)), "float32"), matmul: T.Buffer((n, T.int64(128)), "float32")):
+ n = T.int64()
T.func_attr({"tirx.noalias": True})
# with T.sblock("root"):
for i0, i1, k in T.grid(n, T.int64(128), T.int64(784)):
@@ -163,6 +169,7 @@ into low-level operators.
@T.prim_func(private=True, s_tir=True)
def matmul1(relu: T.Buffer((n, T.int64(128)), "float32"), permute_dims1: T.Buffer((T.int64(128), T.int64(10)), "float32"), matmul: T.Buffer((n, T.int64(10)), "float32")):
+ n = T.int64()
T.func_attr({"tirx.noalias": True})
# with T.sblock("root"):
for i0, i1, k in T.grid(n, T.int64(10), T.int64(128)):
@@ -176,6 +183,7 @@ into low-level operators.
@T.prim_func(private=True, s_tir=True)
def relu(add: T.Buffer((n, T.int64(128)), "float32"), compute: T.Buffer((n, T.int64(128)), "float32")):
+ n = T.int64()
T.func_attr({"tirx.noalias": True})
# with T.sblock("root"):
for i0, i1 in T.grid(n, T.int64(128)):
@@ -209,6 +217,7 @@ into low-level operators.
@R.function
def forward(x: R.Tensor((n, 784), dtype="float32"), fc1_weight: R.Tensor((128, 784), dtype="float32"), fc1_bias: R.Tensor((128,), dtype="float32"), fc2_weight: R.Tensor((10, 128), dtype="float32"), fc2_bias: R.Tensor((10,), dtype="float32")) -> R.Tensor((n, 10), dtype="float32"):
+ n = T.int64()
R.func_attr({"num_input": 1})
cls = Module
with R.dataflow():
@@ -269,6 +278,7 @@ a set of passes. We can apply them in a sequence.
class Module:
@T.prim_func(private=True, s_tir=True)
def fused_matmul1_add1(relu: T.Buffer((n, T.int64(128)), "float32"), permute_dims1: T.Buffer((T.int64(128), T.int64(10)), "float32"), fc2_bias: T.Buffer((T.int64(10),), "float32"), T_add_intermediate: T.Buffer((n, T.int64(10)), "float32")):
+ n = T.int64()
T.func_attr({"tirx.noalias": True})
# with T.sblock("root"):
matmul_intermediate = T.sblock_alloc_buffer((n, T.int64(10)))
@@ -289,6 +299,7 @@ a set of passes. We can apply them in a sequence.
@T.prim_func(private=True, s_tir=True)
def fused_matmul_add_relu(x: T.Buffer((n, T.int64(784)), "float32"), permute_dims: T.Buffer((T.int64(784), T.int64(128)), "float32"), fc1_bias: T.Buffer((T.int64(128),), "float32"), compute_intermediate: T.Buffer((n, T.int64(128)), "float32")):
+ n = T.int64()
T.func_attr({"tirx.noalias": True})
# with T.sblock("root"):
matmul_intermediate = T.sblock_alloc_buffer((n, T.int64(128)))
@@ -338,6 +349,7 @@ a set of passes. We can apply them in a sequence.
@R.function
def forward(x: R.Tensor((n, 784), dtype="float32"), fc1_weight: R.Tensor((128, 784), dtype="float32"), fc1_bias: R.Tensor((128,), dtype="float32"), fc2_weight: R.Tensor((10, 128), dtype="float32"), fc2_bias: R.Tensor((10,), dtype="float32")) -> R.Tensor((n, 10), dtype="float32"):
+ n = T.int64()
R.func_attr({"num_input": 1})
cls = Module
with R.dataflow():
@@ -429,6 +441,8 @@ Then we can write a pass to apply the mutator to the whole module.
# from typing import TypeVar
# from tvm.script import ir as I
+ # from tvm.script import tirx as T
+ # from tvm.tirx.layout import Axis
# from tvm.script import relax as R
n = TypeVar("n")
@@ -436,6 +450,7 @@ Then we can write a pass to apply the mutator to the whole module.
class Module:
@R.function
def forward(x: R.Tensor((n, 784), dtype="float32"), fc1_weight: R.Tensor((128, 784), dtype="float32"), fc1_bias: R.Tensor((128,), dtype="float32"), fc2_weight: R.Tensor((10, 128), dtype="float32"), fc2_bias: R.Tensor((10,), dtype="float32")) -> R.Tensor((n, 10), dtype="float32"):
+ n = T.int64()
R.func_attr({"num_input": 1})
with R.dataflow():
permute_dims: R.Tensor((784, 128), dtype="float32") = R.permute_dims(fc1_weight, axes=None)
diff --git a/docs/_sources/deep_dive/relax/tutorials/sg_execution_times.rst b/docs/_sources/deep_dive/relax/tutorials/sg_execution_times.rst
index eaff80f723f..b61a49c63f3 100644
--- a/docs/_sources/deep_dive/relax/tutorials/sg_execution_times.rst
+++ b/docs/_sources/deep_dive/relax/tutorials/sg_execution_times.rst
@@ -6,7 +6,7 @@
Computation times
=================
-**00:00.224** total execution time for 2 files **from deep_dive/relax/tutorials**:
+**00:00.139** total execution time for 2 files **from deep_dive/relax/tutorials**:
.. container::
@@ -33,7 +33,7 @@ Computation times
- Time
- Mem (MB)
* - :ref:`sphx_glr_deep_dive_relax_tutorials_relax_creation.py` (``relax_creation.py``)
- - 00:00.170
+ - 00:00.085
- 0.0
* - :ref:`sphx_glr_deep_dive_relax_tutorials_relax_transformation.py` (``relax_transformation.py``)
- 00:00.054
diff --git a/docs/_sources/deep_dive/tensor_ir/tutorials/sg_execution_times.rst b/docs/_sources/deep_dive/tensor_ir/tutorials/sg_execution_times.rst
index 1521ebe4b4e..edfc886ec66 100644
--- a/docs/_sources/deep_dive/tensor_ir/tutorials/sg_execution_times.rst
+++ b/docs/_sources/deep_dive/tensor_ir/tutorials/sg_execution_times.rst
@@ -6,7 +6,7 @@
Computation times
=================
-**00:00.750** total execution time for 4 files **from deep_dive/tensor_ir/tutorials**:
+**00:00.529** total execution time for 4 files **from deep_dive/tensor_ir/tutorials**:
.. container::
@@ -33,13 +33,13 @@ Computation times
- Time
- Mem (MB)
* - :ref:`sphx_glr_deep_dive_tensor_ir_tutorials_tir_transformation.py` (``tir_transformation.py``)
- - 00:00.312
+ - 00:00.259
- 0.0
* - :ref:`sphx_glr_deep_dive_tensor_ir_tutorials_tir_creation.py` (``tir_creation.py``)
- - 00:00.305
+ - 00:00.138
- 0.0
* - :ref:`sphx_glr_deep_dive_tensor_ir_tutorials_dlight_gpu_scheduling.py` (``dlight_gpu_scheduling.py``)
- - 00:00.125
+ - 00:00.124
- 0.0
* - :ref:`sphx_glr_deep_dive_tensor_ir_tutorials_meta_schedule.py` (``meta_schedule.py``)
- 00:00.008
diff --git a/docs/_sources/deep_dive/tensor_ir/tutorials/tir_creation.rst b/docs/_sources/deep_dive/tensor_ir/tutorials/tir_creation.rst
index 71e17a3e6ca..ba07aaa1938 100644
--- a/docs/_sources/deep_dive/tensor_ir/tutorials/tir_creation.rst
+++ b/docs/_sources/deep_dive/tensor_ir/tutorials/tir_creation.rst
@@ -481,7 +481,7 @@ is that we need to specify the shape of the input tensors as symbolic variables.
@I.ir_module
class Module:
@T.prim_func(s_tir=True)
- def mm_relu(A: T.Buffer(("m", "n"), "float32"), B: T.Buffer(("k", n), "float32"), C: T.Buffer((m, n), "float32")):
+ def mm_relu(A: T.Buffer(("m", "n"), "float32"), B: T.Buffer(("k", "n"), "float32"), C: T.Buffer(("m", "n"), "float32")):
m, n = T.int32(), T.int32()
k = T.int32()
T.func_attr({"tirx.noalias": True})
diff --git a/docs/_sources/deep_dive/tensor_ir/tutorials/tir_transformation.rst b/docs/_sources/deep_dive/tensor_ir/tutorials/tir_transformation.rst
index 153905e4136..fee03af1d91 100644
--- a/docs/_sources/deep_dive/tensor_ir/tutorials/tir_transformation.rst
+++ b/docs/_sources/deep_dive/tensor_ir/tutorials/tir_transformation.rst
@@ -120,7 +120,7 @@ original implementation.
Execution time summary:
mean (ms) median (ms) max (ms) min (ms) std (ms)
- 2.5420 2.5420 2.5420 2.5420 0.0000
+ 2.4822 2.4822 2.4822 2.4822 0.0000
@@ -219,23 +219,23 @@ The outcome of the transformation can be examined, as it is retained within ``sc
def main(A: T.Buffer((128, 128), "float32"), B: T.Buffer((128, 128), "float32"), C: T.Buffer((128, 128), "float32")):
T.func_attr({"tirx.noalias": True})
# with T.sblock("root"):
- Y = T.sblock_alloc_buffer((128, 128))
+ buffer = T.sblock_alloc_buffer((128, 128))
for i, j_0, j_1, k in T.grid(128, 16, 8, 128):
with T.sblock("Y"):
- vi = T.axis.spatial(128, i)
- vj = T.axis.spatial(128, j_0 * 8 + j_1)
- vk = T.axis.reduce(128, k)
- T.reads(A[vi, vk], B[vk, vj])
- T.writes(Y[vi, vj])
+ v = T.axis.spatial(128, i)
+ v_1 = T.axis.spatial(128, j_0 * 8 + j_1)
+ v_2 = T.axis.reduce(128, k)
+ T.reads(A[v, v_2], B[v_2, v_1])
+ T.writes(buffer[v, v_1])
with T.init():
- Y[vi, vj] = T.float32(0.0)
- Y[vi, vj] = Y[vi, vj] + A[vi, vk] * B[vk, vj]
+ buffer[v, v_1] = T.float32(0.0)
+ buffer[v, v_1] = buffer[v, v_1] + A[v, v_2] * B[v_2, v_1]
for i, j in T.grid(128, 128):
with T.sblock("C"):
- vi, vj = T.axis.remap("SS", [i, j])
- T.reads(Y[vi, vj])
- T.writes(C[vi, vj])
- C[vi, vj] = T.max(Y[vi, vj], T.float32(0.0))
+ v, v_1 = T.axis.remap("SS", [i, j])
+ T.reads(buffer[v, v_1])
+ T.writes(C[v, v_1])
+ C[v, v_1] = T.max(buffer[v, v_1], T.float32(0.0))
@@ -274,27 +274,27 @@ action involves reordering these two loops.
def main(A: T.Buffer((128, 128), "float32"), B: T.Buffer((128, 128), "float32"), C: T.Buffer((128, 128), "float32")):
T.func_attr({"tirx.noalias": True})
# with T.sblock("root"):
- Y = T.sblock_alloc_buffer((128, 128))
+ buffer = T.sblock_alloc_buffer((128, 128))
for i, j_0, k, j_1 in T.grid(128, 16, 128, 8):
with T.sblock("Y"):
- vi = T.axis.spatial(128, i)
- vj = T.axis.spatial(128, j_0 * 8 + j_1)
- vk = T.axis.reduce(128, k)
- T.reads(A[vi, vk], B[vk, vj])
- T.writes(Y[vi, vj])
+ v = T.axis.spatial(128, i)
+ v_1 = T.axis.spatial(128, j_0 * 8 + j_1)
+ v_2 = T.axis.reduce(128, k)
+ T.reads(A[v, v_2], B[v_2, v_1])
+ T.writes(buffer[v, v_1])
with T.init():
- Y[vi, vj] = T.float32(0.0)
- Y[vi, vj] = Y[vi, vj] + A[vi, vk] * B[vk, vj]
+ buffer[v, v_1] = T.float32(0.0)
+ buffer[v, v_1] = buffer[v, v_1] + A[v, v_2] * B[v_2, v_1]
for i, j in T.grid(128, 128):
with T.sblock("C"):
- vi, vj = T.axis.remap("SS", [i, j])
- T.reads(Y[vi, vj])
- T.writes(C[vi, vj])
- C[vi, vj] = T.max(Y[vi, vj], T.float32(0.0))
+ v, v_1 = T.axis.remap("SS", [i, j])
+ T.reads(buffer[v, v_1])
+ T.writes(C[v, v_1])
+ C[v, v_1] = T.max(buffer[v, v_1], T.float32(0.0))
Execution time summary:
mean (ms) median (ms) max (ms) min (ms) std (ms)
- 0.8672 0.8672 0.8672 0.8672 0.0000
+ 0.8644 0.8644 0.8644 0.8644 0.0000
@@ -334,25 +334,25 @@ variant. First, we employ a primitive known as **reverse_compute_at** to relocat
def main(A: T.Buffer((128, 128), "float32"), B: T.Buffer((128, 128), "float32"), C: T.Buffer((128, 128), "float32")):
T.func_attr({"tirx.noalias": True})
# with T.sblock("root"):
- Y = T.sblock_alloc_buffer((128, 128))
+ buffer = T.sblock_alloc_buffer((128, 128))
for i, j_0 in T.grid(128, 16):
for k, j_1 in T.grid(128, 8):
with T.sblock("Y"):
- vi = T.axis.spatial(128, i)
- vj = T.axis.spatial(128, j_0 * 8 + j_1)
- vk = T.axis.reduce(128, k)
- T.reads(A[vi, vk], B[vk, vj])
- T.writes(Y[vi, vj])
+ v = T.axis.spatial(128, i)
+ v_1 = T.axis.spatial(128, j_0 * 8 + j_1)
+ v_2 = T.axis.reduce(128, k)
+ T.reads(A[v, v_2], B[v_2, v_1])
+ T.writes(buffer[v, v_1])
with T.init():
- Y[vi, vj] = T.float32(0.0)
- Y[vi, vj] = Y[vi, vj] + A[vi, vk] * B[vk, vj]
+ buffer[v, v_1] = T.float32(0.0)
+ buffer[v, v_1] = buffer[v, v_1] + A[v, v_2] * B[v_2, v_1]
for ax0 in range(8):
with T.sblock("C"):
- vi = T.axis.spatial(128, i)
- vj = T.axis.spatial(128, j_0 * 8 + ax0)
- T.reads(Y[vi, vj])
- T.writes(C[vi, vj])
- C[vi, vj] = T.max(Y[vi, vj], T.float32(0.0))
+ v = T.axis.spatial(128, i)
+ v_1 = T.axis.spatial(128, j_0 * 8 + ax0)
+ T.reads(buffer[v, v_1])
+ T.writes(C[v, v_1])
+ C[v, v_1] = T.max(buffer[v, v_1], T.float32(0.0))
@@ -397,34 +397,34 @@ from the reduction update via the **decompose_reduction** primitive.
def main(A: T.Buffer((128, 128), "float32"), B: T.Buffer((128, 128), "float32"), C: T.Buffer((128, 128), "float32")):
T.func_attr({"tirx.noalias": True})
# with T.sblock("root"):
- Y = T.sblock_alloc_buffer((128, 128))
+ buffer = T.sblock_alloc_buffer((128, 128))
for i, j_0 in T.grid(128, 16):
for j_1_init in range(8):
with T.sblock("Y_init"):
- vi = T.axis.spatial(128, i)
- vj = T.axis.spatial(128, j_0 * 8 + j_1_init)
+ v = T.axis.spatial(128, i)
+ v_1 = T.axis.spatial(128, j_0 * 8 + j_1_init)
T.reads()
- T.writes(Y[vi, vj])
- Y[vi, vj] = T.float32(0.0)
+ T.writes(buffer[v, v_1])
+ buffer[v, v_1] = T.float32(0.0)
for k, j_1 in T.grid(128, 8):
with T.sblock("Y_update"):
- vi = T.axis.spatial(128, i)
- vj = T.axis.spatial(128, j_0 * 8 + j_1)
- vk = T.axis.reduce(128, k)
- T.reads(Y[vi, vj], A[vi, vk], B[vk, vj])
- T.writes(Y[vi, vj])
- Y[vi, vj] = Y[vi, vj] + A[vi, vk] * B[vk, vj]
+ v = T.axis.spatial(128, i)
+ v_1 = T.axis.spatial(128, j_0 * 8 + j_1)
+ v_2 = T.axis.reduce(128, k)
+ T.reads(buffer[v, v_1], A[v, v_2], B[v_2, v_1])
+ T.writes(buffer[v, v_1])
+ buffer[v, v_1] = buffer[v, v_1] + A[v, v_2] * B[v_2, v_1]
for ax0 in range(8):
with T.sblock("C"):
- vi = T.axis.spatial(128, i)
- vj = T.axis.spatial(128, j_0 * 8 + ax0)
- T.reads(Y[vi, vj])
- T.writes(C[vi, vj])
- C[vi, vj] = T.max(Y[vi, vj], T.float32(0.0))
+ v = T.axis.spatial(128, i)
+ v_1 = T.axis.spatial(128, j_0 * 8 + ax0)
+ T.reads(buffer[v, v_1])
+ T.writes(C[v, v_1])
+ C[v, v_1] = T.max(buffer[v, v_1], T.float32(0.0))
Execution time summary:
mean (ms) median (ms) max (ms) min (ms) std (ms)
- 0.3620 0.3620 0.3620 0.3620 0.0000
+ 0.3550 0.3550 0.3550 0.3550 0.0000
@@ -497,30 +497,30 @@ Alternatively, we can output the IRModule in conjunction with the historical tra
def main(A: T.Buffer((128, 128), "float32"), B: T.Buffer((128, 128), "float32"), C: T.Buffer((128, 128), "float32")):
T.func_attr({"tirx.noalias": True})
# with T.sblock("root"):
- Y = T.sblock_alloc_buffer((128, 128))
+ buffer = T.sblock_alloc_buffer((128, 128))
for i, j_0 in T.grid(128, 16):
for j_1_init in range(8):
with T.sblock("Y_init"):
- vi = T.axis.spatial(128, i)
- vj = T.axis.spatial(128, j_0 * 8 + j_1_init)
+ v = T.axis.spatial(128, i)
+ v_1 = T.axis.spatial(128, j_0 * 8 + j_1_init)
T.reads()
- T.writes(Y[vi, vj])
- Y[vi, vj] = T.float32(0.0)
+ T.writes(buffer[v, v_1])
+ buffer[v, v_1] = T.float32(0.0)
for k, j_1 in T.grid(128, 8):
with T.sblock("Y_update"):
- vi = T.axis.spatial(128, i)
- vj = T.axis.spatial(128, j_0 * 8 + j_1)
- vk = T.axis.reduce(128, k)
- T.reads(Y[vi, vj], A[vi, vk], B[vk, vj])
- T.writes(Y[vi, vj])
- Y[vi, vj] = Y[vi, vj] + A[vi, vk] * B[vk, vj]
+ v = T.axis.spatial(128, i)
+ v_1 = T.axis.spatial(128, j_0 * 8 + j_1)
+ v_2 = T.axis.reduce(128, k)
+ T.reads(buffer[v, v_1], A[v, v_2], B[v_2, v_1])
+ T.writes(buffer[v, v_1])
+ buffer[v, v_1] = buffer[v, v_1] + A[v, v_2] * B[v_2, v_1]
for ax0 in range(8):
with T.sblock("C"):
- vi = T.axis.spatial(128, i)
- vj = T.axis.spatial(128, j_0 * 8 + ax0)
- T.reads(Y[vi, vj])
- T.writes(C[vi, vj])
- C[vi, vj] = T.max(Y[vi, vj], T.float32(0.0))
+ v = T.axis.spatial(128, i)
+ v_1 = T.axis.spatial(128, j_0 * 8 + ax0)
+ T.reads(buffer[v, v_1])
+ T.writes(C[v, v_1])
+ C[v, v_1] = T.max(buffer[v, v_1], T.float32(0.0))
# from tvm import s_tir
def apply_trace(sch: s_tir.Schedule) -> None:
diff --git a/docs/_sources/get_started/tutorials/ir_module.rst b/docs/_sources/get_started/tutorials/ir_module.rst
index 016be3f69b9..a82a75d0118 100644
--- a/docs/_sources/get_started/tutorials/ir_module.rst
+++ b/docs/_sources/get_started/tutorials/ir_module.rst
@@ -696,8 +696,8 @@ We can deploy the IRModule on CPU by specifying the target as ``llvm``.
.. code-block:: none
- [[-0.04867184 -0.10644848 -0.006622 -0.23508126 -0.08174915 -0.15910307
- -0.06110986 -0.1265544 -0.16523652 -0.06456965]]
+ [[ 0.14976415 0.10440007 -0.25374544 0.04787368 -0.14457259 0.23096867
+ -0.10903104 0.13258487 0.10989155 0.10431907]]
@@ -763,8 +763,8 @@ Now we can compile the IRModule on GPU, the similar way as we did on CPU.
.. code-block:: none
- [[-0.04867173 -0.10644849 -0.00662203 -0.23508126 -0.08174916 -0.15910304
- -0.06110986 -0.1265544 -0.16523653 -0.06456964]]
+ [[ 0.14976428 0.10440006 -0.2537455 0.0478737 -0.14457262 0.23096868
+ -0.10903098 0.1325849 0.10989155 0.10431912]]
diff --git a/docs/_sources/get_started/tutorials/quick_start.rst b/docs/_sources/get_started/tutorials/quick_start.rst
index e6e22996309..c12df772ad1 100644
--- a/docs/_sources/get_started/tutorials/quick_start.rst
+++ b/docs/_sources/get_started/tutorials/quick_start.rst
@@ -224,8 +224,8 @@ different devices.
.. code-block:: none
- [[24602.36 25385.25 26409.281 25733.656 26600.639 26400.383 25085.46
- 25633.912 24406.707 26989.4 ]]
+ [[24821.488 25459.902 25041.283 24970.086 25014.973 24843.13 24488.145
+ 24387.871 23608.652 25637.055]]
diff --git a/docs/_sources/get_started/tutorials/sg_execution_times.rst b/docs/_sources/get_started/tutorials/sg_execution_times.rst
index e42202ef6e7..e6a69758ef0 100644
--- a/docs/_sources/get_started/tutorials/sg_execution_times.rst
+++ b/docs/_sources/get_started/tutorials/sg_execution_times.rst
@@ -6,7 +6,7 @@
Computation times
=================
-**00:05.457** total execution time for 2 files **from get_started/tutorials**:
+**00:05.499** total execution time for 2 files **from get_started/tutorials**:
.. container::
@@ -33,8 +33,8 @@ Computation times
- Time
- Mem (MB)
* - :ref:`sphx_glr_get_started_tutorials_ir_module.py` (``ir_module.py``)
- - 00:05.298
+ - 00:05.341
- 0.0
* - :ref:`sphx_glr_get_started_tutorials_quick_start.py` (``quick_start.py``)
- - 00:00.159
+ - 00:00.157
- 0.0
diff --git a/docs/_sources/how_to/tutorials/cross_compilation_and_rpc.rst b/docs/_sources/how_to/tutorials/cross_compilation_and_rpc.rst
index f6c358872d1..817deb0e38c 100644
--- a/docs/_sources/how_to/tutorials/cross_compilation_and_rpc.rst
+++ b/docs/_sources/how_to/tutorials/cross_compilation_and_rpc.rst
@@ -275,7 +275,7 @@ device and returns the measured cost. Network overhead is excluded.
.. code-block:: none
- 9.4e-08 secs/op
+ 9.2e-08 secs/op
@@ -864,8 +864,8 @@ This workflow is applicable to various deployment scenarios:
Converted PyTorch model to Relax:
- Number of parameters: 4
Using local target for demonstration
- Exported library to: /tmp/tmpxbrtny9f/model_deployed.so
- Saved parameters to: /tmp/tmpxbrtny9f/model_params.npz
+ Exported library to: /tmp/tmpeo1gb8yw/model_deployed.so
+ Saved parameters to: /tmp/tmpeo1gb8yw/model_params.npz
RPC workflow (works for any remote device):
==================================================
diff --git a/docs/_sources/how_to/tutorials/e2e_opt_model.rst b/docs/_sources/how_to/tutorials/e2e_opt_model.rst
index b64bbf3d0a8..b43ffb4b3f1 100644
--- a/docs/_sources/how_to/tutorials/e2e_opt_model.rst
+++ b/docs/_sources/how_to/tutorials/e2e_opt_model.rst
@@ -54,7 +54,7 @@ PyTorch.
.. code-block:: none
Downloading: "https://download.pytorch.org/models/resnet18-f37072fd.pth" to /workspace/.cache/torch/hub/checkpoints/resnet18-f37072fd.pth
- 0%| | 0.00/44.7M [00:00<?, ?B/s] 54%|█████▎ | 24.0M/44.7M [00:00<00:00, 251MB/s] 100%|██████████| 44.7M/44.7M [00:00<00:00, 286MB/s]
+ 0%| | 0.00/44.7M [00:00<?, ?B/s] 76%|███████▋ | 34.1M/44.7M [00:00<00:00, 357MB/s] 100%|██████████| 44.7M/44.7M [00:00<00:00, 377MB/s]
diff --git a/docs/_sources/how_to/tutorials/mix_python_and_tvm_with_pymodule.rst b/docs/_sources/how_to/tutorials/mix_python_and_tvm_with_pymodule.rst
index 498035de2ca..2a509f7bab1 100644
--- a/docs/_sources/how_to/tutorials/mix_python_and_tvm_with_pymodule.rst
+++ b/docs/_sources/how_to/tutorials/mix_python_and_tvm_with_pymodule.rst
@@ -84,7 +84,7 @@ Preparation
Step 1: Your First Hybrid Module
----------------------------------
-The core idea: decorate a class with ``@I.ir_module``, inherit from ``BasePyModule``, and use
+The core idea: decorate a class with ``@R.py_module``, inherit from ``BasePyModule``, and use
three decorators for three kinds of functions:
- ``@T.prim_func`` — low-level TIR kernel (JIT-compiled on instantiation)
@@ -101,7 +101,7 @@ three decorators for three kinds of functions:
if RUN_EXAMPLE:
- @I.ir_module
+ @R.py_module
class MyFirstModule(BasePyModule):
@T.prim_func(s_tir=True)
def add_tir(
@@ -160,7 +160,7 @@ immediately — no recompilation needed.
if RUN_EXAMPLE:
- @I.ir_module
+ @R.py_module
class DebugModule(BasePyModule):
@T.prim_func(s_tir=True)
def matmul_tir(var_A: T.handle, var_B: T.handle, var_C: T.handle):
@@ -251,7 +251,7 @@ three different calling conventions:
out_np = x_np + b_np
out[:] = out_np
- @I.ir_module
+ @R.py_module
class PipelineModule(BasePyModule):
@T.prim_func(s_tir=True)
def matmul_tir(var_A: T.handle, var_B: T.handle, var_C: T.handle):
@@ -361,7 +361,7 @@ transformed the IR), and compare the output against a PyTorch reference to catch
w = torch.randn(4, 4)
b = torch.randn(4)
- py_result_early = converted_early.pyfuncs["main"](x, w, b)
+ py_result_early = converted_early.__pyfuncs__["main"](x, w, b)
expected = F.relu(x @ w + b)
print("Before optimization:")
@@ -377,7 +377,7 @@ transformed the IR), and compare the output against a PyTorch reference to catch
converter_late = RelaxToPyFuncConverter(optimized_mod)
converted_late = converter_late.convert(["main"])
- py_result_late = converted_late.pyfuncs["main"](x, w, b)
+ py_result_late = converted_late.__pyfuncs__["main"](x, w, b)
print("\nAfter CanonicalizeBindings pass:")
print(" Converted result:", py_result_late)
@@ -415,7 +415,7 @@ in Python.
if RUN_EXAMPLE:
- @I.ir_module
+ @R.py_module
class HybridVMModule(BasePyModule):
@I.pyfunc
def silu(self, x):
@@ -482,7 +482,7 @@ tensors at call time, so the same module handles different sizes without recompi
if RUN_EXAMPLE:
- @I.ir_module
+ @R.py_module
class DynamicModule(BasePyModule):
@T.prim_func(s_tir=True)
def scale_tir(var_x: T.handle, var_out: T.handle):
diff --git a/docs/_sources/how_to/tutorials/optimize_llm.rst b/docs/_sources/how_to/tutorials/optimize_llm.rst
index 6c9736bb90d..48cdd00eb5c 100644
--- a/docs/_sources/how_to/tutorials/optimize_llm.rst
+++ b/docs/_sources/how_to/tutorials/optimize_llm.rst
@@ -464,6 +464,7 @@ For demonstration, we only show the part of the model architecture. and paramete
seq_len = TypeVar("seq_len")
@R.function
def prefill(input_embed: R.Tensor((1, seq_len, 2048), dtype="float16"), paged_kv_cache: R.Any, packed_params: R.Tuple(R.Tensor((32000, 2048), dtype="float16"), R.Tensor((2560, 2048), dtype="float16"), R.Tensor((2048, 2048), dtype="float16"), R.Tensor((11264, 2048), dtype="float16"), R.Tensor((2048, 5632), dtype="float16"), R.Tensor((2048,), dtype="float16"), R.Tensor((2048,), dtype="float16"), R.Tensor((2560, 2048), dtype="float16"), R.Tensor((2048, 2048), dtype="float16"), R.Tensor( [...]
+ seq_len = T.int64()
R.func_attr({"num_input": 2})
with R.dataflow():
model_embed_tokens_weight1: R.Tensor((32000, 2048), dtype="float16") = packed_params[0]
@@ -475,7 +476,6 @@ For demonstration, we only show the part of the model architecture. and paramete
model_layers_0_post_attention_layernorm_weight1: R.Tensor((2048,), dtype="float16") = packed_params[6]
model_layers_1_self_attn_qkv_proj_weight1: R.Tensor((2560, 2048), dtype="float16") = packed_params[7]
model_layers_1_self_attn_o_proj_weight1: R.Tensor((2048, 2048), dtype="float16") = packed_params[8]
- model_layers_1_mlp_gate_up_proj_weight1: R.Tensor((11264, 2048), dtype="float16") = packed_params[9]
...
Parameters:
diff --git a/docs/_sources/how_to/tutorials/sg_execution_times.rst b/docs/_sources/how_to/tutorials/sg_execution_times.rst
index fe95f6b55cc..552c5c3d3da 100644
--- a/docs/_sources/how_to/tutorials/sg_execution_times.rst
+++ b/docs/_sources/how_to/tutorials/sg_execution_times.rst
@@ -6,7 +6,7 @@
Computation times
=================
-**00:14.100** total execution time for 8 files **from how_to/tutorials**:
+**00:12.994** total execution time for 8 files **from how_to/tutorials**:
.. container::
@@ -33,22 +33,22 @@ Computation times
- Time
- Mem (MB)
* - :ref:`sphx_glr_how_to_tutorials_optimize_llm.py` (``optimize_llm.py``)
- - 00:09.320
+ - 00:08.282
- 0.0
* - :ref:`sphx_glr_how_to_tutorials_import_model.py` (``import_model.py``)
- - 00:03.308
+ - 00:03.326
- 0.0
* - :ref:`sphx_glr_how_to_tutorials_e2e_opt_model.py` (``e2e_opt_model.py``)
- - 00:00.658
+ - 00:00.587
- 0.0
* - :ref:`sphx_glr_how_to_tutorials_cross_compilation_and_rpc.py` (``cross_compilation_and_rpc.py``)
- - 00:00.473
+ - 00:00.476
- 0.0
* - :ref:`sphx_glr_how_to_tutorials_customize_opt.py` (``customize_opt.py``)
- - 00:00.294
+ - 00:00.292
- 0.0
* - :ref:`sphx_glr_how_to_tutorials_bring_your_own_codegen.py` (``bring_your_own_codegen.py``)
- - 00:00.040
+ - 00:00.025
- 0.0
* - :ref:`sphx_glr_how_to_tutorials_mix_python_and_tvm_with_pymodule.py` (``mix_python_and_tvm_with_pymodule.py``)
- 00:00.004
diff --git a/docs/_sources/reference/api/python/relax/relax.rst b/docs/_sources/reference/api/python/relax/relax.rst
index 28cdc5e32b9..7ae33599870 100644
--- a/docs/_sources/reference/api/python/relax/relax.rst
+++ b/docs/_sources/reference/api/python/relax/relax.rst
@@ -17,6 +17,7 @@
tvm.relax
---------
+
.. automodule:: tvm.relax
:members:
:imported-members:
diff --git a/docs/_sources/reference/api/python/script/ir_builder.rst b/docs/_sources/reference/api/python/script/ir_builder.rst
index 201090a0e4c..150d4a43de2 100644
--- a/docs/_sources/reference/api/python/script/ir_builder.rst
+++ b/docs/_sources/reference/api/python/script/ir_builder.rst
@@ -23,17 +23,23 @@ tvm.script.ir_builder
.. automodule:: tvm.script.ir_builder
:members:
:imported-members:
+ :exclude-members: Any
tvm.script.ir_builder.ir
************************
+The :class:`~tvm.script.ir_builder.IRBuilder` class is also available as
+``tvm.script.ir_builder.ir.IRBuilder``.
+
.. automodule:: tvm.script.ir_builder.ir
:members:
:imported-members:
+ :exclude-members: GenericConst, IRBuilder, Range, StringImm, StringType
tvm.script.ir_builder.relax
***************************
.. automodule:: tvm.script.ir_builder.relax
:members:
+ :exclude-members: ExternFunc, ShapeExpr, TupleGetItem, Range
tvm.script.ir_builder.relax.distributed
***************************************
diff --git a/docs/_sources/reference/api/python/script/parser.rst b/docs/_sources/reference/api/python/script/parser.rst
index 583b27b2761..716738c747c 100644
--- a/docs/_sources/reference/api/python/script/parser.rst
+++ b/docs/_sources/reference/api/python/script/parser.rst
@@ -24,6 +24,9 @@ tvm.script.parser
:members:
:imported-members:
+The language variant aliases below share the public construction namespaces documented
+in :doc:`script`. Parser entry points above use the canonical frontend.
+
tvm.script.parser.ir
********************
.. automodule:: tvm.script.parser.ir
diff --git a/docs/_sources/reference/api/python/script/script.rst b/docs/_sources/reference/api/python/script/script.rst
index 5e819bd1bba..096b4413e89 100644
--- a/docs/_sources/reference/api/python/script/script.rst
+++ b/docs/_sources/reference/api/python/script/script.rst
@@ -23,13 +23,28 @@ tvm.script
.. automodule:: tvm.script
:members:
:imported-members:
+ :exclude-members: Any
tvm.script.relax
****************
.. automodule:: tvm.script.relax
:members:
+ :exclude-members: ExternFunc, ShapeExpr, TupleGetItem, Range, function, macro
+
+.. autofunction:: tvm.script.relax.function
+
+.. autofunction:: tvm.script.relax.macro
tvm.script.tirx
***************
.. automodule:: tvm.script.tirx
:members:
+ :exclude-members: Range, meta_var, Var, Call, CommReducer, Reduce, SMEMPool, TMEMPool, FloatImm, IntImm, Cast, Add, Sub, Mul, Div, Mod, FloorDiv, FloorMod, LShift, RShift, BitwiseAnd, BitwiseOr, BitwiseXor, BitwiseNot, Min, Max, EQ, NE, LT, LE, GT, GE, And, Or, Not, Select, Ramp, Broadcast, Shuffle, CallEffectKind, IterVar, prim_func, jit, inline, macro
+
+.. autofunction:: tvm.script.tirx.prim_func
+
+.. autofunction:: tvm.script.tirx.jit
+
+.. autofunction:: tvm.script.tirx.inline
+
+.. autofunction:: tvm.script.tirx.macro
diff --git a/docs/_sources/sg_execution_times.rst b/docs/_sources/sg_execution_times.rst
index ca37807b9c5..28db313d989 100644
--- a/docs/_sources/sg_execution_times.rst
+++ b/docs/_sources/sg_execution_times.rst
@@ -6,7 +6,7 @@
Computation times
=================
-**00:20.532** total execution time for 16 files **from all galleries**:
+**00:19.161** total execution time for 16 files **from all galleries**:
.. container::
@@ -33,43 +33,43 @@ Computation times
- Time
- Mem (MB)
* - :ref:`sphx_glr_how_to_tutorials_optimize_llm.py` (``../how_to/tutorials/optimize_llm.py``)
- - 00:09.320
+ - 00:08.282
- 0.0
* - :ref:`sphx_glr_get_started_tutorials_ir_module.py` (``../get_started/tutorials/ir_module.py``)
- - 00:05.298
+ - 00:05.341
- 0.0
* - :ref:`sphx_glr_how_to_tutorials_import_model.py` (``../how_to/tutorials/import_model.py``)
- - 00:03.308
+ - 00:03.326
- 0.0
* - :ref:`sphx_glr_how_to_tutorials_e2e_opt_model.py` (``../how_to/tutorials/e2e_opt_model.py``)
- - 00:00.658
+ - 00:00.587
- 0.0
* - :ref:`sphx_glr_how_to_tutorials_cross_compilation_and_rpc.py` (``../how_to/tutorials/cross_compilation_and_rpc.py``)
- - 00:00.473
- - 0.0
- * - :ref:`sphx_glr_deep_dive_tensor_ir_tutorials_tir_transformation.py` (``../deep_dive/tensor_ir/tutorials/tir_transformation.py``)
- - 00:00.312
- - 0.0
- * - :ref:`sphx_glr_deep_dive_tensor_ir_tutorials_tir_creation.py` (``../deep_dive/tensor_ir/tutorials/tir_creation.py``)
- - 00:00.305
+ - 00:00.476
- 0.0
* - :ref:`sphx_glr_how_to_tutorials_customize_opt.py` (``../how_to/tutorials/customize_opt.py``)
- - 00:00.294
+ - 00:00.292
- 0.0
- * - :ref:`sphx_glr_deep_dive_relax_tutorials_relax_creation.py` (``../deep_dive/relax/tutorials/relax_creation.py``)
- - 00:00.170
+ * - :ref:`sphx_glr_deep_dive_tensor_ir_tutorials_tir_transformation.py` (``../deep_dive/tensor_ir/tutorials/tir_transformation.py``)
+ - 00:00.259
- 0.0
* - :ref:`sphx_glr_get_started_tutorials_quick_start.py` (``../get_started/tutorials/quick_start.py``)
- - 00:00.159
+ - 00:00.157
+ - 0.0
+ * - :ref:`sphx_glr_deep_dive_tensor_ir_tutorials_tir_creation.py` (``../deep_dive/tensor_ir/tutorials/tir_creation.py``)
+ - 00:00.138
- 0.0
* - :ref:`sphx_glr_deep_dive_tensor_ir_tutorials_dlight_gpu_scheduling.py` (``../deep_dive/tensor_ir/tutorials/dlight_gpu_scheduling.py``)
- - 00:00.125
+ - 00:00.124
+ - 0.0
+ * - :ref:`sphx_glr_deep_dive_relax_tutorials_relax_creation.py` (``../deep_dive/relax/tutorials/relax_creation.py``)
+ - 00:00.085
- 0.0
* - :ref:`sphx_glr_deep_dive_relax_tutorials_relax_transformation.py` (``../deep_dive/relax/tutorials/relax_transformation.py``)
- 00:00.054
- 0.0
* - :ref:`sphx_glr_how_to_tutorials_bring_your_own_codegen.py` (``../how_to/tutorials/bring_your_own_codegen.py``)
- - 00:00.040
+ - 00:00.025
- 0.0
* - :ref:`sphx_glr_deep_dive_tensor_ir_tutorials_meta_schedule.py` (``../deep_dive/tensor_ir/tutorials/meta_schedule.py``)
- 00:00.008
diff --git a/docs/_sources/tirx/api/script.rst b/docs/_sources/tirx/api/script.rst
index f30d5080950..8d905e11f5d 100644
--- a/docs/_sources/tirx/api/script.rst
+++ b/docs/_sources/tirx/api/script.rst
@@ -30,10 +30,10 @@ authoring layers and TIRx IR, see :ref:`tirx-programming-model`.
Parser entry points
-------------------
-.. automodule:: tvm.tirx.script.parser.entry
- :members:
+.. automodule:: tvm.script.tirx
+ :members: prim_func, jit, inline, macro
+ :undoc-members:
:no-index:
- :exclude-members: TIRInline
Core IR builder
---------------
diff --git a/docs/_sources/tirx/tile_primitives/copy_async/dsmem.rst b/docs/_sources/tirx/tile_primitives/copy_async/dsmem.rst
index 0a59fcffe91..6681573e515 100644
--- a/docs/_sources/tirx/tile_primitives/copy_async/dsmem.rst
+++ b/docs/_sources/tirx/tile_primitives/copy_async/dsmem.rst
@@ -141,12 +141,12 @@ chunk's offsets each step:
.. code-block:: python
- if not outer_extents: # one contiguous chunk
+ if Tx.constexpr(not outer_extents): # one contiguous chunk
Tx.ptx["cp.async.bulk.shared::cluster.shared::cta.mbarrier::complete_tx::bytes"](
Tx.cast(mapped[1], "uint32"), src_buf.ptr_to(src_st),
Tx.cast(chunk_bytes, "uint32"), Tx.cast(mapped[0], "uint32"))
else:
- for loop_vars in Tx.grid(*outer_extents): # one chunk per outer coord
+ for loop_vars in T.grid(*outer_extents): # one chunk per outer coord
... # re-decl src/dst views at the per-chunk offset
Tx.ptx["cp.async.bulk.shared::cluster.shared::cta.mbarrier::complete_tx::bytes"](
Tx.cast(mapped[1], "uint32"), src_ptr,
diff --git a/docs/arch/tvmscript.html b/docs/arch/tvmscript.html
index e13b83573ff..7373add58fc 100644
--- a/docs/arch/tvmscript.html
+++ b/docs/arch/tvmscript.html
@@ -633,9 +633,10 @@ document.write(`
<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#overview">Overview</a></li>
<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#decorators">Decorators</a></li>
<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#parser-architecture">Parser Architecture</a><ul class="visible nav section-nav flex-column">
-<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#dispatch-mechanism">Dispatch mechanism</a></li>
+<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#syntax-and-construction-protocol">Syntax and construction protocol</a></li>
<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#parse-flow">Parse flow</a></li>
-<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#variable-table">Variable table</a></li>
+<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#definition-and-symbol-scopes">Definition and symbol scopes</a></li>
+<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#explicit-host-control-flow">Explicit host control flow</a></li>
</ul>
</li>
<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#ir-builder-architecture">IR Builder Architecture</a><ul class="visible nav section-nav flex-column">
@@ -647,7 +648,7 @@ document.write(`
<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#printer-architecture">Printer Architecture</a><ul class="visible nav section-nav flex-column">
<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#doc-tree">Doc tree</a></li>
<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#irdocsifier">IRDocsifier</a></li>
-<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#roundtrip-guarantee">Roundtrip guarantee</a></li>
+<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#roundtrip">Roundtrip</a></li>
</ul>
</li>
<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#supported-python-syntax">Supported Python Syntax</a></li>
@@ -666,7 +667,6 @@ document.write(`
<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#control-flow">Control flow</a></li>
</ul>
</li>
-<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#source-code-map">Source Code Map</a></li>
</ul>
</nav>
</div>
@@ -682,30 +682,34 @@ document.write(`
<span id="tvmscript-arch"></span><h1>TVMScript<a class="headerlink" href="#tvmscript" title="Link to this heading">#</a></h1>
<p>TVMScript is a Python-based domain-specific language (DSL) for writing TVM IR. It lets users
define <code class="docutils literal notranslate"><span class="pre">IRModule</span></code>s — containing both Relax functions and TIR <code class="docutils literal notranslate"><span class="pre">PrimFunc</span></code>s — using
-familiar Python syntax. Although TVMScript <em>looks</em> like Python, it is <strong>not executed by the
-Python interpreter</strong>. Instead, Python decorators extract the AST from the source code and
-transform it into TVM IR through a dedicated parser and IR builder pipeline.</p>
+familiar Python syntax. Decorators acquire the source and its definition context. A syntax
+transpiler translates the Python AST into a Python builder program; executing that program
+constructs TVM IR. The scripted function body is therefore translated before execution.</p>
<p>TVMScript serves two roles in the TVM stack:</p>
<ul class="simple">
<li><p><strong>Authoring</strong>: users write TIR kernels and Relax programs directly in TVMScript.</p></li>
-<li><p><strong>Roundtrip</strong>: every <code class="docutils literal notranslate"><span class="pre">IRModule</span></code> can be printed back to TVMScript via <code class="docutils literal notranslate"><span class="pre">mod.script()</span></code> and
-re-parsed to produce an equivalent module. This makes TVMScript the primary tool for
-inspecting, debugging, and serializing IR.</p></li>
+<li><p><strong>Roundtrip</strong>: <code class="docutils literal notranslate"><span class="pre">mod.script()</span></code> prints IR as TVMScript, which can be re-parsed with any
+required external symbols to reconstruct equivalent IR. This supports inspection,
+debugging, and serialization of printable IR.</p></li>
</ul>
<section id="overview">
<h2>Overview<a class="headerlink" href="#overview" title="Link to this heading">#</a></h2>
-<p>The TVMScript system has three components:</p>
+<p>TVMScript separates source acquisition, syntax translation, IR construction, and printing:</p>
<div class="highlight-text notranslate"><div class="highlight"><pre><span></span>Parsing (Python source → TVM IR):
Python source (TVMScript)
│
- ▼ ast.parse + convert
+ ▼ Frontend: source + definition context
│
-Doc AST (mirror of Python AST)
+Python AST
│
- ▼ Parser (dispatch by token: ir / tirx / relax)
+ ▼ Syntax transpiler + construction protocol
│
- ▼ IR Builder (frame stack)
+Generated Python builder program
+ │
+ ▼ Frontend: recompose and execute callable
+ │
+ ▼ IR builders (frame stack + dialect policy)
│
TVM IR (IRModule, PrimFunc, relax.Function)
@@ -724,15 +728,17 @@ TVMScript text
</pre></div>
</div>
<ul class="simple">
-<li><p><strong>Parser</strong> (Python): reads Python source, converts it to a <code class="docutils literal notranslate"><span class="pre">Doc</span> <span class="pre">AST</span></code> (a mirror of
-Python’s <code class="docutils literal notranslate"><span class="pre">ast</span></code> module), then walks the tree using dialect-specific handlers that call
-into the IR builder.</p></li>
-<li><p><strong>IR Builder</strong> (Python + C++): provides a frame-stack API where each <code class="docutils literal notranslate"><span class="pre">with</span></code> block or
-decorator pushes a frame. When the frame exits, the constructed IR is finalized. The builder
-is shared across dialects — TIR and Relax each register their own frame types.</p></li>
-<li><p><strong>Printer</strong> (C++): converts TVM IR objects to a <code class="docutils literal notranslate"><span class="pre">Doc</span></code> tree (an intermediate representation
-of Python syntax), then formats the tree into valid TVMScript text.</p></li>
+<li><p><strong>Frontend</strong> (Python): captures definition context, acquires source, and composes the
+generated callable with its lexical environment. It owns decorators, helper entry points,
+and execution of the builder program.</p></li>
+<li><p><strong>Syntax transpiler</strong> (Python): rewrites Python AST nodes into calls on the selected
+construction namespace. It preserves source scopes, evaluation order, and locations.</p></li>
+<li><p><strong>IR builders</strong> (Python + C++): own typed values, symbol identity, dialect policy, and
+construction frames. Exiting a frame finalizes its IR and attaches it to its parent.</p></li>
+<li><p><strong>Printer</strong> (C++): converts IR to a <code class="docutils literal notranslate"><span class="pre">Doc</span></code> tree and formats it as Python syntax. The
+printer’s Doc tree is separate from the Python AST used for parsing.</p></li>
</ul>
+<p>All source entry points use the canonical <code class="docutils literal notranslate"><span class="pre">tvm.script.parser</span></code> implementation.</p>
</section>
<section id="decorators">
<h2>Decorators<a class="headerlink" href="#decorators" title="Link to this heading">#</a></h2>
@@ -740,8 +746,13 @@ of Python syntax), then formats the tree into valid TVMScript text.</p></li>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="kn">from</span><span class="w"> </span><span class="nn">tvm.script</span><span class="w"> </span><span class="kn">import</span> <span class="n">ir</span> <span class="k">as</span> <span class="n">I</span> <span class="c1"># module-level constructs</span>
<span class="kn">from</span><span class="w"> </span><span class="nn">tvm.script</span><span class="w"> </span><span class="kn">import</span> <span class="n">tirx</span> <span class="k">as</span> <span class="n">T</span> <span class="c1"># TIR constructs</span>
<span class="kn">from</span><span class="w"> </span><span class="nn">tvm.script</span><span class="w"> </span><span class="kn">import</span> <span class="n">relax</span> <span class="k">as</span> <span class="n">R</span> <span class="c1"># Relax constructs</span>
+<span class="kn">from</span><span class="w"> </span><span class="nn">tvm.script.parser.entry</span><span class="w"> </span><span class="kn">import</span> <span class="n">make_macro_decorator</span>
+<span class="kn">from</span><span class="w"> </span><span class="nn">tvm.target</span><span class="w"> </span><span class="kn">import</span> <span class="n">Target</span>
</pre></div>
</div>
+<p>These are public authoring APIs. <code class="docutils literal notranslate"><span class="pre">Target</span></code> configures compilation targets; it remains in
+<code class="docutils literal notranslate"><span class="pre">tvm.target</span></code>. Public dialect namespaces expose decorators and source constructors, so
+scripted programs do not need direct imports from builder implementation packages.</p>
<p>The primary decorators are:</p>
<ul class="simple">
<li><p><code class="docutils literal notranslate"><span class="pre">@I.ir_module</span></code>: marks a Python class as an <code class="docutils literal notranslate"><span class="pre">IRModule</span></code>. Each method inside becomes a
@@ -752,7 +763,7 @@ function in the module.</p></li>
<p>These can be composed:</p>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="nd">@I</span><span class="o">.</span><span class="n">ir_module</span>
<span class="k">class</span><span class="w"> </span><span class="nc">MyModule</span><span class="p">:</span>
- <span class="nd">@T</span><span class="o">.</span><span class="n">prim_func</span>
+ <span class="nd">@T</span><span class="o">.</span><span class="n">prim_func</span><span class="p">(</span><span class="n">s_tir</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
<span class="k">def</span><span class="w"> </span><span class="nf">add_kernel</span><span class="p">(</span><span class="n">A</span><span class="p">:</span> <span class="n">T</span><span class="o">.</span><span class="n">Buffer</span><span class="p">((</span><span class="mi">128</span><span class="p">,),</span> <span class="s2">"float32"</span><span class="p">),</span>
<span class="n">B</span><span class="p">:</span> <span class="n">T</span><span class="o">.</span><span class="n">Buffer</span><span class="p">((</span><span class="mi">128</span><span class="p">,),</span> <span class="s2">"float32"</span><span class="p">),</span>
<span class="n">C</span><span class="p">:</span> <span class="n">T</span><span class="o">.</span><span class="n">Buffer</span><span class="p">((</span><span class="mi">128</span><span class="p">,),</span> <span class="s2">"float32"</span><span class="p">)):</span>
@@ -765,68 +776,203 @@ function in the module.</p></li>
<span class="k">def</span><span class="w"> </span><span class="nf">main</span><span class="p">(</span><span class="n">x</span><span class="p">:</span> <span class="n">R</span><span class="o">.</span><span class="n">Tensor</span><span class="p">((</span><span class="mi">128</span><span class="p">,),</span> <span class="s2">"float32"</span><span class="p">),</span>
<span class="n">y</span><span class="p">:</span> <span class="n">R</span><span class="o">.</span><span class="n">Tensor</span><span class="p">((</span><span class="mi">128</span><span class="p">,),</span> <span class="s2">"float32"</span><span class="p">))</span> <span class="o">-></span> <span class="n">R</span><span class="o">.</span><span class="n">Tensor</span><span class="p">((</span><span class="mi">128</span><span class="p">,),</span> <span class="s2">&qu [...]
<span class="k">with</span> <span class="n">R</span><span class="o">.</span><span class="n">dataflow</span><span class="p">():</span>
- <span class="n">out</span> <span class="o">=</span> <span class="n">R</span><span class="o">.</span><span class="n">call_tir</span><span class="p">(</span><span class="bp">cls</span><span class="o">.</span><span class="n">add_kernel</span><span class="p">,</span> <span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">),</span>
+ <span class="n">out</span> <span class="o">=</span> <span class="n">R</span><span class="o">.</span><span class="n">call_tir</span><span class="p">(</span><span class="n">MyModule</span><span class="o">.</span><span class="n">add_kernel</span><span class="p">,</span> <span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">),</span>
<span class="n">out_ty</span><span class="o">=</span><span class="n">R</span><span class="o">.</span><span class="n">Tensor</span><span class="p">((</span><span class="mi">128</span><span class="p">,),</span> <span class="s2">"float32"</span><span class="p">))</span>
<span class="n">R</span><span class="o">.</span><span class="n">output</span><span class="p">(</span><span class="n">out</span><span class="p">)</span>
<span class="k">return</span> <span class="n">out</span>
</pre></div>
</div>
-<p>When Python encounters <code class="docutils literal notranslate"><span class="pre">@I.ir_module</span></code>, the decorator does <strong>not</strong> execute the class body.
-Instead, it calls <code class="docutils literal notranslate"><span class="pre">tvm.script.parse()</span></code> which extracts the source code of the class,
-builds a Doc AST, and hands it to the parser.</p>
+<p>Python creates the class before invoking <code class="docutils literal notranslate"><span class="pre">@I.ir_module</span></code>. Function decorators inside an
+IR-module class retain method definitions for module construction. The module frontend then
+acquires the source and constructs declarations and bodies in the module’s builder context.
+Standalone <code class="docutils literal notranslate"><span class="pre">@T.prim_func</span></code> and <code class="docutils literal notranslate"><span class="pre">@R.function</span></code> definitions construct their IR immediately.</p>
+<p>A helper can construct expressions or statements in the caller’s active builder frames:</p>
+<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="nd">@make_macro_decorator</span><span class="p">(</span><span class="n">T</span><span class="p">)</span>
+<span class="k">def</span><span class="w"> </span><span class="nf">add_one</span><span class="p">(</span><span class="n">value</span><span class="p">):</span>
+ <span class="k">return</span> <span class="n">value</span> <span class="o">+</span> <span class="mi">1</span>
+</pre></div>
+</div>
+<p>Unlike a function decorator, <code class="docutils literal notranslate"><span class="pre">make_macro_decorator</span></code> does not create an IR function for
+each helper. Its default return behavior is ordinary Python return from the generated
+helper program.
+<code class="docutils literal notranslate"><span class="pre">T.inline</span></code> and the dialect macro decorators are supplied through the same frontend helper
+mechanism.</p>
</section>
<section id="parser-architecture">
<h2>Parser Architecture<a class="headerlink" href="#parser-architecture" title="Link to this heading">#</a></h2>
-<p>The parser lives in <code class="docutils literal notranslate"><span class="pre">python/tvm/script/parser/</span></code>.</p>
-<section id="dispatch-mechanism">
-<h3>Dispatch mechanism<a class="headerlink" href="#dispatch-mechanism" title="Link to this heading">#</a></h3>
-<p>Different IR dialects (TIR, Relax) need different handling for the same Python syntax. For
-example, <code class="docutils literal notranslate"><span class="pre">if</span> <span class="pre">...</span> <span class="pre">else</span></code> inside <code class="docutils literal notranslate"><span class="pre">@T.prim_func</span></code> creates a TIR <code class="docutils literal notranslate"><span class="pre">If</span></code> branch, while the same
-syntax inside <code class="docutils literal notranslate"><span class="pre">@R.function</span></code> creates a Relax <code class="docutils literal notranslate"><span class="pre">If</span></code> node with different semantics.</p>
-<p>The parser maintains a <strong>dispatch token</strong> stack (<code class="docutils literal notranslate"><span class="pre">["default"]</span></code> initially). When it encounters
-a decorated function, it inspects the decorator to determine the token — <code class="docutils literal notranslate"><span class="pre">"tirx"</span></code> for
-<code class="docutils literal notranslate"><span class="pre">@T.prim_func</span></code>, <code class="docutils literal notranslate"><span class="pre">"relax"</span></code> for <code class="docutils literal notranslate"><span class="pre">@R.function</span></code> — and pushes it onto the stack.</p>
-<p>Each AST node type is dispatched via a virtual table:</p>
-<div class="highlight-text notranslate"><div class="highlight"><pre><span></span>ParseVTable[(token, node_type)] → handler function
-
-Lookup order:
- 1. (current_token, node_type) e.g. ("tirx", "For")
- 2. ("default", node_type) e.g. ("default", "For")
- 3. generic_visit fallback
-</pre></div>
-</div>
-<p>Dialect-specific parsers (<code class="docutils literal notranslate"><span class="pre">parser/tirx/parser.py</span></code>, <code class="docutils literal notranslate"><span class="pre">parser/relax/parser.py</span></code>) register
-handlers using <code class="docutils literal notranslate"><span class="pre">@dispatch.register(token,</span> <span class="pre">type_name)</span></code> decorators.</p>
+<p>The parser lives in <code class="docutils literal notranslate"><span class="pre">python/tvm/script/parser/</span></code>. <code class="docutils literal notranslate"><span class="pre">inspect_source.py</span></code> owns source
+acquisition, the <code class="docutils literal notranslate"><span class="pre">Source</span></code> representation and its coordinate helpers, and definition-context
+capture. Documented functions in <code class="docutils literal notranslate"><span class="pre">entry.py</span></code> manage the parse sequence, callable composition
+and execution.
+The transpiler handles syntax; the builders interpret concrete values. TIRx JIT validation,
+defaults and specialization caching live in <code class="docutils literal notranslate"><span class="pre">tvm.tirx.script.jit</span></code>; shared parser utilities
+remain independent of that policy.</p>
+<section id="syntax-and-construction-protocol">
+<h3>Syntax and construction protocol<a class="headerlink" href="#syntax-and-construction-protocol" title="Link to this heading">#</a></h3>
+<p>A registered function decorator selects a construction namespace. The same Python syntax
+then lowers to operations supplied by that namespace: for example, unmarked <code class="docutils literal notranslate"><span class="pre">if</span></code> creates
+TIR control-flow frames in a primitive function and Relax control-flow frames in a Relax
+function. The transpiler emits these operations without implementing dialect IR semantics.</p>
+<p><code class="docutils literal notranslate"><span class="pre">parser/protocol_registry.py</span></code> owns callable syntax metadata and registration. Argument policies such
+as <code class="docutils literal notranslate"><span class="pre">expr_str</span></code> translate symbolic strings written directly in source expressions, while <code class="docutils literal notranslate"><span class="pre">global_info</span></code>
+preserves a module reference for builder-side lookup. Dtype and placement strings remain
+literal. Captured or computed symbolic shapes must already contain explicit IR variables;
+the parser does not interpret expression strings found inside captured values.
+Registration keeps syntax facts in simple dictionaries keyed by canonical namespace paths.
+Known namespace aliases normalize to the registered path; ordinary captured callables,
+local aliases, methods and closures execute as Python without marker inference. The
+dictionaries retain no source functions or parse captures. Dialects own their namespace
+exports, entry points and aliases and register them with the generic parser.
+The registry selects a call’s argument policy before traversal and reuses positional
+parameter names computed once at registration;
+<code class="docutils literal notranslate"><span class="pre">parser/expr_str_handling.py</span></code> decodes annotation/expression strings and maps their
+escaped, multiline and UTF-8 source ranges. The main visitor rewrites the decoded syntax.</p>
+<p>Assignments become binding operations, standalone expressions become emission operations,
+and loops and scopes become builder contexts. An ordinary assignment passes its evaluated
+RHS and a separate <code class="docutils literal notranslate"><span class="pre">value_span</span></code> to <code class="docutils literal notranslate"><span class="pre">bind_</span></code>, without first stamping the returned value.
+The binding target has its own span. TIRx preserves returned Vars, including BufferVars,
+and ordinary metadata objects; other expressions follow the dialect’s binding rules.
+Construction still runs in the source context, and nested expressions retain their locations.
+Concrete binding, type checking, comparison construction, and frame finalization belong to
+the builders. Ordinary host calls and
+operator overloads execute as part of the generated Python program.</p>
+<p>Loop frames create their named variables during construction. Entering a frame returns
+the variable directly for one dimension and the variable sequence for multiple dimensions,
+so ordinary Python uses <code class="docutils literal notranslate"><span class="pre">with</span> <span class="pre">T.serial(0,</span> <span class="pre">n)</span> <span class="pre">as</span> <span class="pre">i</span></code>. Generated scalar loops use the same
+entry form. Generated tuple, list and starred targets unpack the entered frame’s stable
+<code class="docutils literal notranslate"><span class="pre">vars</span></code> sequence, preserving explicit one-dimensional unpacking and native variable identity.</p>
+<p>Parser syntax restrictions raise <code class="docutils literal notranslate"><span class="pre">SyntaxError</span></code> with the original filename and source
+range. Python helper and builder exceptions propagate unchanged, preserving their identity,
+type and source-mapped traceback. Temporary parser contexts are released on both successful
+and exceptional exits.</p>
</section>
<section id="parse-flow">
<h3>Parse flow<a class="headerlink" href="#parse-flow" title="Link to this heading">#</a></h3>
-<p>The entry point is <code class="docutils literal notranslate"><span class="pre">parse(program,</span> <span class="pre">extra_vars)</span></code>:</p>
+<p>The public entry points include <code class="docutils literal notranslate"><span class="pre">tvm.script.parse</span></code> and <code class="docutils literal notranslate"><span class="pre">tvm.script.from_source</span></code>:</p>
<ol class="arabic simple">
-<li><p><strong>Source extraction</strong>: the program’s source code is extracted (from a class, function, or
-string) and converted to a Doc AST via Python’s <code class="docutils literal notranslate"><span class="pre">ast</span></code> module.</p></li>
-<li><p><strong>AST walking</strong>: the <code class="docutils literal notranslate"><span class="pre">Parser</span></code> (a subclass of <code class="docutils literal notranslate"><span class="pre">doc.NodeVisitor</span></code>) walks the Doc AST.
-For each node, it looks up the handler in the dispatch table.</p></li>
-<li><p><strong>Expression evaluation</strong>: expressions like <code class="docutils literal notranslate"><span class="pre">T.grid(128,</span> <span class="pre">128)</span></code> are evaluated by the
-<code class="docutils literal notranslate"><span class="pre">ExprEvaluator</span></code>, which resolves names against the variable table and the <code class="docutils literal notranslate"><span class="pre">T.</span></code>/<code class="docutils literal notranslate"><span class="pre">R.</span></code>
-module namespaces.</p></li>
-<li><p><strong>Value binding</strong>: assignment statements (<code class="docutils literal notranslate"><span class="pre">A</span> <span class="pre">=</span> <span class="pre">T.match_buffer(...)</span></code> in TIR,
-<code class="docutils literal notranslate"><span class="pre">lv</span> <span class="pre">=</span> <span class="pre">R.add(x,</span> <span class="pre">y)</span></code> in Relax) go through dialect-specific <code class="docutils literal notranslate"><span class="pre">bind_*_value()</span></code> functions
-that register the resulting TVM objects in the parser’s <code class="docutils literal notranslate"><span class="pre">VarTable</span></code>.</p></li>
-<li><p><strong>Scoping</strong>: the <code class="docutils literal notranslate"><span class="pre">VarTable</span></code> maintains a stack of frames. Entering a <code class="docutils literal notranslate"><span class="pre">with</span></code> block,
-<code class="docutils literal notranslate"><span class="pre">for</span></code> loop, or function body pushes a new frame; exiting pops it. This ensures variables
-are scoped correctly.</p></li>
+<li><p><strong>Acquire source and context</strong>: the frontend accepts a function, class, or source string,
+obtains its Python AST, and retains source locations. Decorators capture the definition
+context temporarily through <code class="docutils literal notranslate"><span class="pre">definition_scope</span></code>; source-string callers can supply
+external bindings through <code class="docutils literal notranslate"><span class="pre">extra_vars</span></code>. Source inspection belongs to
+<code class="docutils literal notranslate"><span class="pre">parser.inspect_source</span></code>.</p></li>
+<li><p><strong>Prescan and translate syntax</strong>: acquisition supplies a fresh owned AST. One
+<code class="docutils literal notranslate"><span class="pre">PrescanCollector</span></code> produces read-only <code class="docutils literal notranslate"><span class="pre">PrescanContext</span></code> facts for reserved names,
+scoped declarations and conditional outputs. <code class="docutils literal notranslate"><span class="pre">IRBuilderTranspiler</span></code> rewrites that owned
+tree with the standard Python AST visitor, using fixed namespace metadata and registered
+argument policies without copying or reparsing the tree. One shared name allocator
+avoids collisions with user identifiers through rewriting and recomposition.</p></li>
+<li><p><strong>Compose the callable</strong>: the private frontend helper <code class="docutils literal notranslate"><span class="pre">_recompose_builder</span></code> compiles
+the generated program with the source’s globals, closure bindings, and necessary
+annotation context. Explicit temporary phase inputs connect generated helpers to
+their source functions without rediscovering them through a generated-AST walk.</p></li>
+<li><p><strong>Execute construction</strong>: the callable enters native builder frames and reconstructs
+declarations and annotations in their required context. When forward declarations are
+needed, it declares all signatures first. Inside each retained native function frame,
+it defines and calls a lexical body helper without an explicit frame argument. Re-entry
+uses the existing parameters instead of adding them again. Native frames own module
+references, results and function-local symbols.</p></li>
+<li><p><strong>Validate and return IR</strong>: generated code calls the dialect’s
+<code class="docutils literal notranslate"><span class="pre">X.check_well_formed_</span></code> for a completed function or the shared
+<code class="docutils literal notranslate"><span class="pre">I.check_well_formed_</span></code> for a completed module. Public parsing validates by default.
+Parsing owns execution and releases its temporary builder and captures afterward.</p></li>
</ol>
</section>
-<section id="variable-table">
-<h3>Variable table<a class="headerlink" href="#variable-table" title="Link to this heading">#</a></h3>
-<p>The <code class="docutils literal notranslate"><span class="pre">VarTable</span></code> is the parser’s symbol table:</p>
-<div class="highlight-text notranslate"><div class="highlight"><pre><span></span>VarTable
-├── frames: [VarTableFrame, ...] ← stack of scopes
-└── name2value: {str: [Any, ...]} ← name → value stack (for shadowing)
+<section id="definition-and-symbol-scopes">
+<h3>Definition and symbol scopes<a class="headerlink" href="#definition-and-symbol-scopes" title="Link to this heading">#</a></h3>
+<p>Python lexical bindings and DSL symbolic declarations have different owners. The frontend
+captures the exact definition scope during decoration, including enclosing names used only
+in annotations that Python may omit from the function’s closure. Ordinary body references
+retain their source globals and closure bindings. Unrelated callers’ local variables do not
+become part of this environment.</p>
+<p>Annotations are reconstructed as builder operations within the module/function context.
+The generated program preserves their definition scope and original names, using a
+distinct compiler binding only when a source-local binding would shadow the annotation.
+One prescan-seeded name allocator serves rewriting and callable recomposition. Body
+globals and closures retain their original lookup, including a method closure whose name
+also appears as a class member. Callable recomposition and
+lexical environment setup belong to the frontend. The transpiler preserves source scopes
+through Python syntax; it does not classify each name by membership in a runtime environment
+or search caller stacks for values.</p>
+<p>DSL expression strings such as <code class="docutils literal notranslate"><span class="pre">R.Tensor(("n",</span> <span class="pre">4),</span> <span class="pre">"float32")</span></code> use
+<code class="docutils literal notranslate"><span class="pre">X.resolve_type_var_("n")</span></code>, which delegates to the nearest native function frame’s
+<code class="docutils literal notranslate"><span class="pre">type_var_map</span></code>. Repeated names refer to the same symbol across parameters, return
+annotations and the body. Quoted lookup does not introduce a Python name; an explicit
+symbol declaration does. A Python name in <code class="docutils literal notranslate"><span class="pre">R.Tensor((n,</span> <span class="pre">4),</span> <span class="pre">...)</span></code> follows its source
+lexical scope. Module global-info references use <code class="docutils literal notranslate"><span class="pre">I.resolve_global_info_</span></code> against the
+active native module frame’s existing map.</p>
+<p>During rewriting, each needed source range becomes a fixed native span entry in an
+injected table. <code class="docutils literal notranslate"><span class="pre">_S[i](value)</span></code> attaches that location while preserving identity;
+<code class="docutils literal notranslate"><span class="pre">_S[i].ctx(lambda:</span> <span class="pre">helper(value))</span></code> evaluates the callee and arguments once within
+the source context and restores it on success or failure. Entries live in
+<code class="docutils literal notranslate"><span class="pre">ir_builder.base</span></code> and retain no AST or active caller context. Dynamic caller/definition
+provenance is composed when an entry is used. Ordinary names, Python literals, fixed
+namespace/callee lookup and structural indexing tuples need no entries. Arithmetic and
+buffer loads retain their own expression ranges.</p>
+<p>Generated hooks receive entries explicitly: <code class="docutils literal notranslate"><span class="pre">X.for_(X.range_(3),</span> <span class="pre">names="i",</span> <span class="pre">span=_S[i])</span></code>
+and <code class="docutils literal notranslate"><span class="pre">X.emit_(value,</span> <span class="pre">span=_S[j])</span></code> own their result locations. A callable registered with
+<code class="docutils literal notranslate"><span class="pre">result_span</span></code> promises that its complete IR effect is represented by its returned node
+or emission receipt, allowing result attachment without a construction context. Opaque
+helpers still require <code class="docutils literal notranslate"><span class="pre">.ctx</span></code> to locate internal effects. At an ordinary assignment boundary,
+<code class="docutils literal notranslate"><span class="pre">.ctx(...,</span> <span class="pre">attach_result=False)</span></code> preserves construction context while leaving the returned
+value’s attribution to <code class="docutils literal notranslate"><span class="pre">bind_</span></code> through its separate <code class="docutils literal notranslate"><span class="pre">value_span</span></code>.
+The parser-owned <code class="docutils literal notranslate"><span class="pre">parser.protocol_registry</span></code> module defines registration APIs, metadata and
+persistent registration state. Dialects apply these policies beside concrete definitions,
+constructor creation or necessary exposure sites, without namespace scans or bulk
+registration inventories. Dialect <code class="docutils literal notranslate"><span class="pre">parser_protocol</span></code> modules implement construction hooks. The shared
+<code class="docutils literal notranslate"><span class="pre">ir_builder.ir.parser_protocol</span></code> documents the detailed builder-hook contract and links
+to the registry for special syntax policies. Dialect hooks retain typed signatures and
+document only their specific behavior. For example, dialects import <code class="docutils literal notranslate"><span class="pre">args_policy</span></code>
+from <code class="docutils literal notranslate"><span class="pre">tvm.script.parser.protocol_registry</span></code> to register literal argument policies.</p>
+<p>Ordinary assignments pass returned values to <code class="docutils literal notranslate"><span class="pre">bind_</span></code>. TIRx Vars keep their exact identity,
+producer names and spans, including scope variables, block axes and explicit <code class="docutils literal notranslate"><span class="pre">T.bind</span></code>
+results. This behavior belongs to the builder’s value handling and requires no parser
+producer classification. Self-emitting builders return <code class="docutils literal notranslate"><span class="pre">AlreadyEmitted[T]</span></code> so
+source-location handling can annotate the emitted object without emitting it twice.
+Layout, meta_class and view results likewise follow dialect value handling for assignment
+and standalone statements. Unsupported host values still fail under the dialect’s emission
+rules. Expression-facing thread APIs return native Vars; IterVar remains native metadata.</p>
+<p>Simple comparison chains such as <code class="docutils literal notranslate"><span class="pre">0</span> <span class="pre"><</span> <span class="pre">i</span> <span class="pre"><</span> <span class="pre">10</span></code> lower to
+<code class="docutils literal notranslate"><span class="pre">X.and_(X.lt_(0,</span> <span class="pre">i),</span> <span class="pre">X.lt_(i,</span> <span class="pre">10))</span></code>. Only names and numeric literals, including signed
+literals, are supported in a chain. Complex chain operands fail with a source-located
+syntax error before they evaluate. Single comparisons retain general operands, and the
+explicit constexpr boundary retains Python comparison semantics.</p>
+<p>A bare loop target receives the native entry result: <code class="docutils literal notranslate"><span class="pre">for</span> <span class="pre">iters</span> <span class="pre">in</span> <span class="pre">T.grid(m,</span> <span class="pre">n)</span></code> binds
+the original variable sequence, while <code class="docutils literal notranslate"><span class="pre">for</span> <span class="pre">i</span> <span class="pre">in</span> <span class="pre">T.serial(n)</span></code> binds one Var. Explicit
+tuple, list and starred targets unpack the native frame’s stable <code class="docutils literal notranslate"><span class="pre">vars</span></code> field.</p>
+<p>Function decorators pass their construction namespace and options explicitly to parsing.
+Generated <code class="docutils literal notranslate"><span class="pre">X.function_(**options)</span></code> creates the frame; the dialect hook owns option defaults.
+Declaration creates stable references before function bodies; generated code reads the
+native <code class="docutils literal notranslate"><span class="pre">global_var</span></code> or <code class="docutils literal notranslate"><span class="pre">local_var</span></code> field directly, without a separate reservation pass.
+There is no function-registration record or copied source-function metadata. The root
+retains <code class="docutils literal notranslate"><span class="pre">pyfunc</span></code> behavior and original Python callables for module assembly.</p>
+<p>Completed modules use generic root coordination over dialect-owned validation hooks.
+Each dialect checks its members and cross-function requirements against the whole module,
+including captured members. Shared GlobalInfo construction and lookup belong to <code class="docutils literal notranslate"><span class="pre">tvm.ir</span></code>;
+existing Relax class exports and serialized type keys remain compatible.</p>
+<p>Each parse rewrites the fresh AST returned by source acquisition directly, without
+copying or reparsing it. Ordinary functions construct arguments directly and bind their
+known body parameters from <code class="docutils literal notranslate"><span class="pre">frame.params</span></code>. Specialization setup and conditional
+parameter selection are generated only for an explicit specialization request; an empty
+mapping still requests that path, while <code class="docutils literal notranslate"><span class="pre">None</span></code> selects ordinary parsing.</p>
+</section>
+<section id="explicit-host-control-flow">
+<h3>Explicit host control flow<a class="headerlink" href="#explicit-host-control-flow" title="Link to this heading">#</a></h3>
+<p>Mark compile-time Python selection with <code class="docutils literal notranslate"><span class="pre">I.constexpr</span></code> or the identical dialect alias:</p>
+<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="k">if</span> <span class="n">I</span><span class="o">.</span><span class="n">constexpr</span><span class="p">(</span><span class="n">enabled</span><span class="p">):</span>
+ <span class="n">T</span><span class="o">.</span><span class="n">evaluate</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span>
+<span class="k">else</span><span class="p">:</span>
+ <span class="n">T</span><span class="o">.</span><span class="n">evaluate</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span>
+
+<span class="n">value</span> <span class="o">=</span> <span class="n">T</span><span class="o">.</span><span class="n">ramp</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="n">lanes</span><span class="p">)</span> <span class="k">if</span> <span class="n">T</span><span class="o">.</span><span class="n">constexpr</span><span class="p">(</span><span class="n">lanes</span> <span class="o">></span> [...]
</pre></div>
</div>
-<p>When a name is looked up, the most recent binding wins. When a frame is popped, all bindings
-introduced in that frame are removed.</p>
+<p>The marker applies to the controlling value. The generated program evaluates it once and
+executes only the selected Python branch in the existing builder scope. Branch bodies and
+result expressions still translate normally. Marked <code class="docutils literal notranslate"><span class="pre">and</span></code> and <code class="docutils literal notranslate"><span class="pre">or</span></code> decisions retain
+Python short-circuiting; unmarked conditionals and logical expressions call dialect IR
+constructors. A Python boolean alone does not request compile-time branch selection.</p>
+<p>JIT supplies validated specialization bindings and optional-argument absence to builder
+execution. Syntax translation does not inspect those values to select a branch.</p>
</section>
</section>
<section id="ir-builder-architecture">
@@ -838,7 +984,7 @@ provides a frame-stack API for constructing IR incrementally.</p>
<p>The core idea: each IR scope (module, function, block, loop) is a <strong>frame</strong>. Frames are pushed
on <code class="docutils literal notranslate"><span class="pre">__enter__</span></code> and popped on <code class="docutils literal notranslate"><span class="pre">__exit__</span></code>. When a frame exits, it finalizes the IR it
represents and attaches it to the parent frame.</p>
-<div class="highlight-text notranslate"><div class="highlight"><pre><span></span>IRBuilder (thread-local singleton)
+<div class="highlight-text notranslate"><div class="highlight"><pre><span></span>IRBuilder (current construction context)
└── frame stack:
├── IRModuleFrame ← @I.ir_module
│ ├── PrimFuncFrame ← @T.prim_func
@@ -850,17 +996,17 @@ represents and attaches it to the parent frame.</p>
└── ...
</pre></div>
</div>
-<p>This design means the parser never needs to build a complete IR tree in memory — it
-constructs IR top-down by entering and exiting frames, and each frame handles its own
-finalization.</p>
+<p>The generated program constructs IR by entering and exiting frames. Each frame owns its
+construction policy and finalization; the syntax transpiler does not maintain an IR tree.</p>
</section>
<section id="tir-builder">
<h3>TIR builder<a class="headerlink" href="#tir-builder" title="Link to this heading">#</a></h3>
-<p>The TIR builder (<code class="docutils literal notranslate"><span class="pre">ir_builder/tirx/ir.py</span></code>) provides functions that map directly to TVMScript
-syntax. Key categories:</p>
+<p>The TIR builder (<code class="docutils literal notranslate"><span class="pre">python/tvm/tirx/script/builder/</span></code>) implements the construction operations
+behind public <code class="docutils literal notranslate"><span class="pre">T</span></code> syntax. Builder modules also support direct programmatic construction;
+public decorators and internal frame-opening operations have distinct roles. Key categories:</p>
<p><strong>Function and block</strong>:</p>
<ul class="simple">
-<li><p><code class="docutils literal notranslate"><span class="pre">T.prim_func()</span></code> → <code class="docutils literal notranslate"><span class="pre">PrimFuncFrame</span></code></p></li>
+<li><p><code class="docutils literal notranslate"><span class="pre">@T.prim_func</span></code> selects TIR construction; its builder <code class="docutils literal notranslate"><span class="pre">function()</span></code> opens <code class="docutils literal notranslate"><span class="pre">PrimFuncFrame</span></code></p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">T.sblock(name)</span></code> → <code class="docutils literal notranslate"><span class="pre">SBlockFrame</span></code> (spatial block)</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">T.init()</span></code> → <code class="docutils literal notranslate"><span class="pre">BlockInitFrame</span></code> (reduction initialization)</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">T.reads(...)</span></code>, <code class="docutils literal notranslate"><span class="pre">T.writes(...)</span></code> → declare buffer access regions</p></li>
@@ -886,10 +1032,10 @@ syntax. Key categories:</p>
</section>
<section id="relax-builder">
<h3>Relax builder<a class="headerlink" href="#relax-builder" title="Link to this heading">#</a></h3>
-<p>The Relax builder (<code class="docutils literal notranslate"><span class="pre">ir_builder/relax/ir.py</span></code>) provides:</p>
+<p>The Relax builder (<code class="docutils literal notranslate"><span class="pre">python/tvm/relax/script/builder/</span></code>) implements:</p>
<p><strong>Function and dataflow</strong>:</p>
<ul class="simple">
-<li><p><code class="docutils literal notranslate"><span class="pre">R.function()</span></code> → <code class="docutils literal notranslate"><span class="pre">FunctionFrame</span></code></p></li>
+<li><p><code class="docutils literal notranslate"><span class="pre">@R.function</span></code> selects Relax construction; its builder <code class="docutils literal notranslate"><span class="pre">function()</span></code> opens <code class="docutils literal notranslate"><span class="pre">FunctionFrame</span></code></p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">R.dataflow()</span></code> → <code class="docutils literal notranslate"><span class="pre">BindingBlockFrame</span></code></p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">R.output(*vars)</span></code> → expose variables from a dataflow block</p></li>
</ul>
@@ -898,6 +1044,8 @@ syntax. Key categories:</p>
<li><p><code class="docutils literal notranslate"><span class="pre">R.emit(value)</span></code> → emit a binding, returns a <code class="docutils literal notranslate"><span class="pre">Var</span></code></p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">R.emit_match_cast(value,</span> <span class="pre">ty)</span></code> → emit with type assertion</p></li>
</ul>
+<p>Generated standalone-statement emission uses the construction protocol’s separate <code class="docutils literal notranslate"><span class="pre">emit_</span></code>
+operation. Public <code class="docutils literal notranslate"><span class="pre">R.emit</span></code> retains its binding-returning imperative API.</p>
<p><strong>Type annotations</strong>:</p>
<ul class="simple">
<li><p><code class="docutils literal notranslate"><span class="pre">R.Tensor(shape,</span> <span class="pre">dtype)</span></code> — tensor type</p></li>
@@ -948,25 +1096,25 @@ It maintains:</p>
</ul>
<p>Each IR dialect registers its own converters:</p>
<ul class="simple">
-<li><p><code class="docutils literal notranslate"><span class="pre">src/script/printer/tirx/</span></code> — converts PrimFunc, Buffer, SBlock, loops, expressions.</p></li>
-<li><p><code class="docutils literal notranslate"><span class="pre">src/script/printer/relax/</span></code> — converts relax.Function, bindings, types, operators.</p></li>
+<li><p><code class="docutils literal notranslate"><span class="pre">src/tirx/script/printer/</span></code> — converts PrimFunc, Buffer, SBlock, loops, expressions.</p></li>
+<li><p><code class="docutils literal notranslate"><span class="pre">src/relax/script/printer/</span></code> — converts relax.Function, bindings, types, operators.</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">src/script/printer/ir/</span></code> — converts IRModule, shared types.</p></li>
</ul>
<p>The final step calls <code class="docutils literal notranslate"><span class="pre">DocToPythonScript()</span></code> (<code class="docutils literal notranslate"><span class="pre">src/script/printer/doc_printer/python_doc_printer.cc</span></code>)
to format the Doc tree into properly indented Python text.</p>
</section>
-<section id="roundtrip-guarantee">
-<h3>Roundtrip guarantee<a class="headerlink" href="#roundtrip-guarantee" title="Link to this heading">#</a></h3>
-<p>For any <code class="docutils literal notranslate"><span class="pre">IRModule</span></code> constructed through the compiler:</p>
+<section id="roundtrip">
+<h3>Roundtrip<a class="headerlink" href="#roundtrip" title="Link to this heading">#</a></h3>
+<p>For printable IR with the required source context available:</p>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">text</span> <span class="o">=</span> <span class="n">mod</span><span class="o">.</span><span class="n">script</span><span class="p">()</span> <span class="c1"># IR → TVMScript text</span>
<span class="n">reparsed</span> <span class="o">=</span> <span class="n">tvm</span><span class="o">.</span><span class="n">script</span><span class="o">.</span><span class="n">from_source</span><span class="p">(</span><span class="n">text</span><span class="p">)</span> <span class="c1"># text → IR</span>
<span class="n">tvm</span><span class="o">.</span><span class="n">ir</span><span class="o">.</span><span class="n">assert_structural_equal</span><span class="p">(</span><span class="n">mod</span><span class="p">,</span> <span class="n">reparsed</span><span class="p">)</span>
</pre></div>
</div>
<p>This roundtrip property is relied upon by testing infrastructure and serialization workflows.
-Note that the printed text may differ from hand-written TVMScript — the printer uses canonical
-forms (e.g., explicit <code class="docutils literal notranslate"><span class="pre">R.emit</span></code> calls, fully qualified buffer annotations) that are not required
-in hand-written code.</p>
+Printed text uses canonical forms and may differ from hand-written TVMScript. External
+objects or Python attachments require their corresponding context; text alone does not
+serialize arbitrary Python state.</p>
</section>
</section>
<section id="supported-python-syntax">
@@ -988,7 +1136,7 @@ and how each construct is interpreted:</p>
<tbody>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">for</span> <span class="pre">i</span> <span class="pre">in</span> <span class="pre">range(n)</span></code></p></td>
<td><p>Serial loop nest</p></td>
-<td><p>Not supported (no Relax-level <code class="docutils literal notranslate"><span class="pre">for</span></code> handler)</p></td>
+<td><p>No Relax IR loop construction</p></td>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">with</span> <span class="pre">T.sblock(...)</span></code></p></td>
<td><p>Spatial block scope</p></td>
@@ -999,8 +1147,8 @@ and how each construct is interpreted:</p>
<td><p>Dataflow block</p></td>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">if</span> <span class="pre">...</span> <span class="pre">else</span></code></p></td>
-<td><p>TIR <code class="docutils literal notranslate"><span class="pre">If</span></code> branch (PrimExpr condition) or static eval (Python bool)</p></td>
-<td><p>Relax <code class="docutils literal notranslate"><span class="pre">If</span></code> node (plain Python <code class="docutils literal notranslate"><span class="pre">if</span> <span class="pre">cond:</span></code> syntax)</p></td>
+<td><p>TIR <code class="docutils literal notranslate"><span class="pre">IfThenElse</span></code>; explicit <code class="docutils literal notranslate"><span class="pre">I.constexpr</span></code> selects a Python branch</p></td>
+<td><p>Relax <code class="docutils literal notranslate"><span class="pre">If</span></code>; explicit <code class="docutils literal notranslate"><span class="pre">I.constexpr</span></code> selects a Python branch</p></td>
</tr>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">while</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">T.While</span></code> loop</p></td>
@@ -1016,10 +1164,10 @@ and how each construct is interpreted:</p>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">x:</span> <span class="pre">R.Tensor(...)</span></code></p></td>
<td><p>N/A</p></td>
-<td><p>Struct info annotation</p></td>
+<td><p>Type annotation</p></td>
</tr>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">return</span></code></p></td>
-<td><p>Not used</p></td>
+<td><p>Primitive return expression</p></td>
<td><p>Function return value</p></td>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">A[i,</span> <span class="pre">j]</span></code></p></td>
@@ -1041,9 +1189,9 @@ and how each construct is interpreted:</p>
</tbody>
</table>
</div>
-<p><strong>Not supported</strong>: <code class="docutils literal notranslate"><span class="pre">class</span></code> definitions (except for <code class="docutils literal notranslate"><span class="pre">@I.ir_module</span></code>), <code class="docutils literal notranslate"><span class="pre">try/except</span></code>,
-<code class="docutils literal notranslate"><span class="pre">yield</span></code>, <code class="docutils literal notranslate"><span class="pre">async/await</span></code>, list comprehensions, <code class="docutils literal notranslate"><span class="pre">lambda</span></code>, <code class="docutils literal notranslate"><span class="pre">import</span></code>, and <code class="docutils literal notranslate"><span class="pre">global</span></code>
-statements.</p>
+<p>Inside scripted function bodies, unsupported statement forms include <code class="docutils literal notranslate"><span class="pre">class</span></code>,
+<code class="docutils literal notranslate"><span class="pre">try/except</span></code>, <code class="docutils literal notranslate"><span class="pre">import</span></code>, and <code class="docutils literal notranslate"><span class="pre">global</span></code>. <code class="docutils literal notranslate"><span class="pre">yield</span></code> and <code class="docutils literal notranslate"><span class="pre">async/await</span></code> are also unsupported.
+Place imports and ordinary Python class definitions in the surrounding Python program.</p>
</section>
<section id="tir-syntax-reference">
<h2>TIR Syntax Reference<a class="headerlink" href="#tir-syntax-reference" title="Link to this heading">#</a></h2>
@@ -1051,6 +1199,8 @@ statements.</p>
<h3>Function definition<a class="headerlink" href="#function-definition" title="Link to this heading">#</a></h3>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="nd">@T</span><span class="o">.</span><span class="n">prim_func</span>
<span class="k">def</span><span class="w"> </span><span class="nf">func_name</span><span class="p">(</span><span class="n">a</span><span class="p">:</span> <span class="n">T</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="n">b</span><span class="p">:</span> <span class="n">T</span><span class="o">.</span><span class="n">handle</span><span class="p">):</span>
+ <span class="n">m</span> <span class="o">=</span> <span class="n">T</span><span class="o">.</span><span class="n">int32</span><span class="p">()</span>
+ <span class="n">n</span> <span class="o">=</span> <span class="n">T</span><span class="o">.</span><span class="n">int32</span><span class="p">()</span>
<span class="n">A</span> <span class="o">=</span> <span class="n">T</span><span class="o">.</span><span class="n">match_buffer</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="p">(</span><span class="n">m</span><span class="p">,</span> <span class="n">n</span><span class="p">),</span> <span class="s2">"float32"</span><span class="p">)</span>
<span class="n">B</span> <span class="o">=</span> <span class="n">T</span><span class="o">.</span><span class="n">match_buffer</span><span class="p">(</span><span class="n">b</span><span class="p">,</span> <span class="p">(</span><span class="n">m</span><span class="p">,),</span> <span class="s2">"float32"</span><span class="p">)</span>
<span class="c1"># function body</span>
@@ -1064,6 +1214,7 @@ statements.</p>
</section>
<section id="block-and-axes">
<h3>Block and axes<a class="headerlink" href="#block-and-axes" title="Link to this heading">#</a></h3>
+<p>Use <code class="docutils literal notranslate"><span class="pre">@T.prim_func(s_tir=True)</span></code> for functions with scheduled-TIR blocks and block axes.</p>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">j</span> <span class="ow">in</span> <span class="n">T</span><span class="o">.</span><span class="n">grid</span><span class="p">(</span><span class="mi">128</span><span class="p">,</span> <span class="mi">128</span><span class="p">):</span>
<span class="k">with</span> <span class="n">T</span><span class="o">.</span><span class="n">sblock</span><span class="p">(</span><span class="s2">"block_name"</span><span class="p">):</span>
<span class="n">vi</span> <span class="o">=</span> <span class="n">T</span><span class="o">.</span><span class="n">axis</span><span class="o">.</span><span class="n">spatial</span><span class="p">(</span><span class="mi">128</span><span class="p">,</span> <span class="n">i</span><span class="p">)</span>
@@ -1104,7 +1255,7 @@ their iteration domain and binding to outer loop variables.</p></li>
<span class="n">T</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="s2">"float16"</span><span class="p">)</span> <span class="c1"># type cast</span>
<span class="n">T</span><span class="o">.</span><span class="n">if_then_else</span><span class="p">(</span><span class="n">cond</span><span class="p">,</span> <span class="n">true_val</span><span class="p">,</span> <span class="n">false_val</span><span class="p">)</span> <span class="c1"># conditional expression</span>
<span class="n">T</span><span class="o">.</span><span class="n">min</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="n">b</span><span class="p">),</span> <span class="n">T</span><span class="o">.</span><span class="n">max</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="n">b</span><span class="p">)</span> <span class="c1"># min/max</span>
-<span class="n">T</span><span class="o">.</span><span class="n">call_extern</span><span class="p">(</span><span class="s2">"func_name"</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">)</span> <span class="c1"># external function call</span>
+<span class="n">T</span><span class="o">.</span><span class="n">call_extern</span><span class="p">(</span><span class="s2">"int32"</span><span class="p">,</span> <span class="s2">"func_name"</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">)</span> <span class="c1"># external function call</span>
<span class="n">T</span><span class="o">.</span><span class="n">call_packed</span><span class="p">(</span><span class="s2">"func_name"</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">)</span> <span class="c1"># packed function call</span>
<span class="n">T</span><span class="o">.</span><span class="n">tvm_storage_sync</span><span class="p">(</span><span class="s2">"shared"</span><span class="p">)</span> <span class="c1"># GPU memory fence</span>
</pre></div>
@@ -1142,11 +1293,11 @@ variables to the outer scope.</p>
</section>
<section id="calling-tir-functions">
<h3>Calling TIR functions<a class="headerlink" href="#calling-tir-functions" title="Link to this heading">#</a></h3>
-<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">out</span> <span class="o">=</span> <span class="n">R</span><span class="o">.</span><span class="n">call_tir</span><span class="p">(</span><span class="bp">cls</span><span class="o">.</span><span class="n">my_kernel</span><span class="p">,</span> <span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">),</span> <span class="n">out_ty< [...]
+<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">out</span> <span class="o">=</span> <span class="n">R</span><span class="o">.</span><span class="n">call_tir</span><span class="p">(</span><span class="n">MyModule</span><span class="o">.</span><span class="n">my_kernel</span><span class="p">,</span> <span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">),</span> <span class="n">out [...]
</pre></div>
</div>
<ul class="simple">
-<li><p><code class="docutils literal notranslate"><span class="pre">cls.my_kernel</span></code> — references a TIR <code class="docutils literal notranslate"><span class="pre">PrimFunc</span></code> in the same module.</p></li>
+<li><p><code class="docutils literal notranslate"><span class="pre">MyModule.my_kernel</span></code> — references a TIR <code class="docutils literal notranslate"><span class="pre">PrimFunc</span></code> in the same module.</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">out_ty</span></code> — the type (shape and dtype) of the output tensor.</p></li>
</ul>
</section>
@@ -1165,65 +1316,6 @@ boolean type. Both branches are required.</p>
</div>
</section>
</section>
-<section id="source-code-map">
-<h2>Source Code Map<a class="headerlink" href="#source-code-map" title="Link to this heading">#</a></h2>
-<div class="pst-scrollable-table-container"><table class="table">
-<colgroup>
-<col style="width: 50.0%" />
-<col style="width: 50.0%" />
-</colgroup>
-<thead>
-<tr class="row-odd"><th class="head"><p>Path</p></th>
-<th class="head"><p>Contents</p></th>
-</tr>
-</thead>
-<tbody>
-<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">python/tvm/script/parser/core/</span></code></p></td>
-<td><p>Core parser: dispatch, expression evaluator, variable table, Doc AST</p></td>
-</tr>
-<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">python/tvm/script/parser/tirx/</span></code></p></td>
-<td><p>TIR-specific parser handlers and value binding</p></td>
-</tr>
-<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">python/tvm/script/parser/relax/</span></code></p></td>
-<td><p>Relax-specific parser handlers and value binding</p></td>
-</tr>
-<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">python/tvm/script/parser/ir/</span></code></p></td>
-<td><p><code class="docutils literal notranslate"><span class="pre">@I.ir_module</span></code> entry point and module-level parsing</p></td>
-</tr>
-<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">python/tvm/script/ir_builder/base.py</span></code></p></td>
-<td><p>IRBuilder base class and frame stack mechanism</p></td>
-</tr>
-<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">python/tvm/script/ir_builder/tirx/</span></code></p></td>
-<td><p>TIR frame types and builder functions (<code class="docutils literal notranslate"><span class="pre">T.*</span></code>)</p></td>
-</tr>
-<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">python/tvm/script/ir_builder/relax/</span></code></p></td>
-<td><p>Relax frame types and builder functions (<code class="docutils literal notranslate"><span class="pre">R.*</span></code>)</p></td>
-</tr>
-<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">python/tvm/script/ir_builder/ir/</span></code></p></td>
-<td><p>IRModule builder (<code class="docutils literal notranslate"><span class="pre">I.*</span></code>)</p></td>
-</tr>
-<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">src/script/printer/</span></code></p></td>
-<td><p>C++ printer: Doc tree, IRDocsifier, Python code generation</p></td>
-</tr>
-<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">src/script/printer/tirx/</span></code></p></td>
-<td><p>TIR-specific IR-to-Doc converters</p></td>
-</tr>
-<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">src/script/printer/relax/</span></code></p></td>
-<td><p>Relax-specific IR-to-Doc converters</p></td>
-</tr>
-<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">src/script/ir_builder/</span></code></p></td>
-<td><p>C++ backend for frame stack and IR construction</p></td>
-</tr>
-<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">include/tvm/script/printer/</span></code></p></td>
-<td><p>C++ headers: Doc classes, IRDocsifier, dispatch functor</p></td>
-</tr>
-<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">include/tvm/script/ir_builder/</span></code></p></td>
-<td><p>C++ headers: builder base, dialect-specific frame types</p></td>
-</tr>
-</tbody>
-</table>
-</div>
-</section>
</section>
@@ -1274,9 +1366,10 @@ boolean type. Both branches are required.</p>
<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#overview">Overview</a></li>
<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#decorators">Decorators</a></li>
<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#parser-architecture">Parser Architecture</a><ul class="visible nav section-nav flex-column">
-<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#dispatch-mechanism">Dispatch mechanism</a></li>
+<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#syntax-and-construction-protocol">Syntax and construction protocol</a></li>
<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#parse-flow">Parse flow</a></li>
-<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#variable-table">Variable table</a></li>
+<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#definition-and-symbol-scopes">Definition and symbol scopes</a></li>
+<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#explicit-host-control-flow">Explicit host control flow</a></li>
</ul>
</li>
<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#ir-builder-architecture">IR Builder Architecture</a><ul class="visible nav section-nav flex-column">
@@ -1288,7 +1381,7 @@ boolean type. Both branches are required.</p>
<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#printer-architecture">Printer Architecture</a><ul class="visible nav section-nav flex-column">
<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#doc-tree">Doc tree</a></li>
<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#irdocsifier">IRDocsifier</a></li>
-<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#roundtrip-guarantee">Roundtrip guarantee</a></li>
+<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#roundtrip">Roundtrip</a></li>
</ul>
</li>
<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#supported-python-syntax">Supported Python Syntax</a></li>
@@ -1307,7 +1400,6 @@ boolean type. Both branches are required.</p>
<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#control-flow">Control flow</a></li>
</ul>
</li>
-<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#source-code-map">Source Code Map</a></li>
</ul>
</nav></div>
diff --git a/docs/commit_hash b/docs/commit_hash
index eeab50b0f2e..9c8fe5a51ab 100644
--- a/docs/commit_hash
+++ b/docs/commit_hash
@@ -1 +1 @@
-e269315c90e3a061c9e1c77b370ce883b1b223f4
+0db97a5a2cf041f7d83db34325c4901db8ee0380
diff --git a/docs/deep_dive/relax/tutorials/relax_creation.html b/docs/deep_dive/relax/tutorials/relax_creation.html
index 65beb97ff77..8c3fcf3dd71 100644
--- a/docs/deep_dive/relax/tutorials/relax_creation.html
+++ b/docs/deep_dive/relax/tutorials/relax_creation.html
@@ -671,17 +671,17 @@ high-level Relax operators using TVMScript.</p>
<span class="k">class</span><span class="w"> </span><span class="nc">RelaxModule</span><span class="p">:</span>
<span class="nd">@R</span><span class="o">.</span><span class="n">function</span>
<span class="k">def</span><span class="w"> </span><span class="nf">forward</span><span class="p">(</span>
- <span class="n">data</span><span class="p">:</span> <span class="n">R</span><span class="o">.</span><span class="n">Tensor</span><span class="p">((</span><span class="s2">"n"</span><span class="p">,</span> <span class="mi">784</span><span class="p">),</span> <span class="n">dtype</span><span class="o">=</span><span class="s2">"float32"</span><span class="p">),</span>
- <span class="n">w0</span><span class="p">:</span> <span class="n">R</span><span class="o">.</span><span class="n">Tensor</span><span class="p">((</span><span class="mi">128</span><span class="p">,</span> <span class="mi">784</span><span class="p">),</span> <span class="n">dtype</span><span class="o">=</span><span class="s2">"float32"</span><span class="p">),</span>
- <span class="n">b0</span><span class="p">:</span> <span class="n">R</span><span class="o">.</span><span class="n">Tensor</span><span class="p">((</span><span class="mi">128</span><span class="p">,),</span> <span class="n">dtype</span><span class="o">=</span><span class="s2">"float32"</span><span class="p">),</span>
- <span class="n">w1</span><span class="p">:</span> <span class="n">R</span><span class="o">.</span><span class="n">Tensor</span><span class="p">((</span><span class="mi">10</span><span class="p">,</span> <span class="mi">128</span><span class="p">),</span> <span class="n">dtype</span><span class="o">=</span><span class="s2">"float32"</span><span class="p">),</span>
- <span class="n">b1</span><span class="p">:</span> <span class="n">R</span><span class="o">.</span><span class="n">Tensor</span><span class="p">((</span><span class="mi">10</span><span class="p">,),</span> <span class="n">dtype</span><span class="o">=</span><span class="s2">"float32"</span><span class="p">),</span>
- <span class="p">)</span> <span class="o">-></span> <span class="n">R</span><span class="o">.</span><span class="n">Tensor</span><span class="p">((</span><span class="s2">"n"</span><span class="p">,</span> <span class="mi">10</span><span class="p">),</span> <span class="n">dtype</span><span class="o">=</span><span class="s2">"float32"</span><span class="p">):</span>
- <span class="k">with</span> <span class="n">R</span><span class="o">.</span><span class="n">dataflow</span><span class="p">():</span>
- <a href="../../../reference/api/python/relax/relax.html#tvm.relax.DataflowVar" title="tvm.relax.DataflowVar" class="sphx-glr-backref-module-tvm-relax sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">lv0</span></a> <span class="o">=</span> <span class="n">R</span><span class="o">.</span><span class="n">matmul</span><span class="p">(</span><span class="n">data</span><span class="p">,</span> <span class="n">R</span><span class="o">.</span><span class="n" [...]
+ <span class="n">data</span><span class="p">:</span> <a href="../../../reference/api/python/script/script.html#tvm.script.relax.Tensor" title="tvm.script.relax.Tensor" class="sphx-glr-backref-module-tvm-script-relax sphx-glr-backref-type-py-function"><span class="n">R</span><span class="o">.</span><span class="n">Tensor</span></a><span class="p">((</span><span class="s2">"n"</span><span class="p">,</span> <span class="mi">784</span><span class="p">),</span> <span class=" [...]
+ <span class="n">w0</span><span class="p">:</span> <a href="../../../reference/api/python/script/script.html#tvm.script.relax.Tensor" title="tvm.script.relax.Tensor" class="sphx-glr-backref-module-tvm-script-relax sphx-glr-backref-type-py-function"><span class="n">R</span><span class="o">.</span><span class="n">Tensor</span></a><span class="p">((</span><span class="mi">128</span><span class="p">,</span> <span class="mi">784</span><span class="p">),</span> <span class="n">dtype</sp [...]
+ <span class="n">b0</span><span class="p">:</span> <a href="../../../reference/api/python/script/script.html#tvm.script.relax.Tensor" title="tvm.script.relax.Tensor" class="sphx-glr-backref-module-tvm-script-relax sphx-glr-backref-type-py-function"><span class="n">R</span><span class="o">.</span><span class="n">Tensor</span></a><span class="p">((</span><span class="mi">128</span><span class="p">,),</span> <span class="n">dtype</span><span class="o">=</span><span class="s2">"f [...]
+ <span class="n">w1</span><span class="p">:</span> <a href="../../../reference/api/python/script/script.html#tvm.script.relax.Tensor" title="tvm.script.relax.Tensor" class="sphx-glr-backref-module-tvm-script-relax sphx-glr-backref-type-py-function"><span class="n">R</span><span class="o">.</span><span class="n">Tensor</span></a><span class="p">((</span><span class="mi">10</span><span class="p">,</span> <span class="mi">128</span><span class="p">),</span> <span class="n">dtype</spa [...]
+ <span class="n">b1</span><span class="p">:</span> <a href="../../../reference/api/python/script/script.html#tvm.script.relax.Tensor" title="tvm.script.relax.Tensor" class="sphx-glr-backref-module-tvm-script-relax sphx-glr-backref-type-py-function"><span class="n">R</span><span class="o">.</span><span class="n">Tensor</span></a><span class="p">((</span><span class="mi">10</span><span class="p">,),</span> <span class="n">dtype</span><span class="o">=</span><span class="s2">"fl [...]
+ <span class="p">)</span> <span class="o">-></span> <a href="../../../reference/api/python/script/script.html#tvm.script.relax.Tensor" title="tvm.script.relax.Tensor" class="sphx-glr-backref-module-tvm-script-relax sphx-glr-backref-type-py-function"><span class="n">R</span><span class="o">.</span><span class="n">Tensor</span></a><span class="p">((</span><span class="s2">"n"</span><span class="p">,</span> <span class="mi">10</span><span class="p">),</span> <span class="n"> [...]
+ <span class="k">with</span> <a href="../../../reference/api/python/script/script.html#tvm.script.relax.dataflow" title="tvm.script.relax.dataflow" class="sphx-glr-backref-module-tvm-script-relax sphx-glr-backref-type-py-function"><span class="n">R</span><span class="o">.</span><span class="n">dataflow</span></a><span class="p">():</span>
+ <a href="../../../reference/api/python/relax/relax.html#tvm.relax.DataflowVar" title="tvm.relax.DataflowVar" class="sphx-glr-backref-module-tvm-relax sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">lv0</span></a> <span class="o">=</span> <a href="../../../reference/api/python/script/script.html#tvm.script.relax.matmul" title="tvm.script.relax.matmul" class="sphx-glr-backref-module-tvm-script-relax sphx-glr-backref-type-py-function"><span class="n">R< [...]
<a href="../../../reference/api/python/relax/relax.html#tvm.relax.DataflowVar" title="tvm.relax.DataflowVar" class="sphx-glr-backref-module-tvm-relax sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">lv1</span></a> <span class="o">=</span> <span class="n">R</span><span class="o">.</span><span class="n">nn</span><span class="o">.</span><span class="n">relu</span><span class="p">(</span><a href="../../../reference/api/python/relax/relax.html#tvm.relax.Da [...]
- <span class="n">lv2</span> <span class="o">=</span> <span class="n">R</span><span class="o">.</span><span class="n">matmul</span><span class="p">(</span><a href="../../../reference/api/python/relax/relax.html#tvm.relax.DataflowVar" title="tvm.relax.DataflowVar" class="sphx-glr-backref-module-tvm-relax sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">lv1</span></a><span class="p">,</span> <span class="n">R</span><span class="o">.</span><span class="n"> [...]
- <span class="n">R</span><span class="o">.</span><span class="n">output</span><span class="p">(</span><span class="n">lv2</span><span class="p">)</span>
+ <span class="n">lv2</span> <span class="o">=</span> <a href="../../../reference/api/python/script/script.html#tvm.script.relax.matmul" title="tvm.script.relax.matmul" class="sphx-glr-backref-module-tvm-script-relax sphx-glr-backref-type-py-function"><span class="n">R</span><span class="o">.</span><span class="n">matmul</span></a><span class="p">(</span><a href="../../../reference/api/python/relax/relax.html#tvm.relax.DataflowVar" title="tvm.relax.DataflowVar" class="sphx-glr- [...]
+ <a href="../../../reference/api/python/script/script.html#tvm.script.relax.output" title="tvm.script.relax.output" class="sphx-glr-backref-module-tvm-script-relax sphx-glr-backref-type-py-function"><span class="n">R</span><span class="o">.</span><span class="n">output</span></a><span class="p">(</span><span class="n">lv2</span><span class="p">)</span>
<span class="k">return</span> <span class="n">lv2</span>
@@ -690,6 +690,8 @@ high-level Relax operators using TVMScript.</p>
</div>
<div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span># from typing import TypeVar
# from tvm.script import ir as I
+# from tvm.script import tirx as T
+# from tvm.tirx.layout import Axis
# from tvm.script import relax as R
n = TypeVar("n")
@@ -697,6 +699,7 @@ n = TypeVar("n")
class Module:
@R.function
def forward(data: R.Tensor((n, 784), dtype="float32"), w0: R.Tensor((128, 784), dtype="float32"), b0: R.Tensor((128,), dtype="float32"), w1: R.Tensor((10, 128), dtype="float32"), b1: R.Tensor((10,), dtype="float32")) -> R.Tensor((n, 10), dtype="float32"):
+ n = T.int64()
with R.dataflow():
lv: R.Tensor((784, 128), dtype="float32") = R.permute_dims(w0, axes=None)
lv1: R.Tensor((n, 128), dtype="float32") = R.matmul(data, lv, out_dtype=None)
@@ -715,31 +718,31 @@ TensorIR functions in Relax function.</p>
<div class="highlight-Python notranslate"><div class="highlight"><pre><span></span><span class="nd">@I</span><span class="o">.</span><span class="n">ir_module</span>
<span class="k">class</span><span class="w"> </span><span class="nc">RelaxModuleWithTIR</span><span class="p">:</span>
<span class="nd">@T</span><span class="o">.</span><span class="n">prim_func</span><span class="p">(</span><span class="n">s_tir</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
- <span class="k">def</span><span class="w"> </span><span class="nf">relu</span><span class="p">(</span><a href="../../../reference/api/python/ir.html#tvm.ir.Var" title="tvm.ir.Var" class="sphx-glr-backref-module-tvm-ir sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">x</span></a><span class="p">:</span> <span class="n">T</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="n">y</span><span class="p">:</span> <span cl [...]
+ <span class="k">def</span><span class="w"> </span><span class="nf">relu</span><span class="p">(</span><a href="../../../reference/api/python/ir.html#tvm.ir.Var" title="tvm.ir.Var" class="sphx-glr-backref-module-tvm-ir sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">x</span></a><span class="p">:</span> <a href="../../../reference/api/python/script/script.html#tvm.script.tirx.handle" title="tvm.script.tirx.handle" class="sphx-glr-backref-module-tvm-script-tirx [...]
<a href="../../../reference/api/python/ir.html#tvm.ir.Var" title="tvm.ir.Var" class="sphx-glr-backref-module-tvm-ir sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">n</span></a> <span class="o">=</span> <span class="n">T</span><span class="o">.</span><span class="n">int64</span><span class="p">()</span>
<span class="n">m</span> <span class="o">=</span> <span class="n">T</span><span class="o">.</span><span class="n">int64</span><span class="p">()</span>
- <span class="n">X</span> <span class="o">=</span> <span class="n">T</span><span class="o">.</span><span class="n">match_buffer</span><span class="p">(</span><a href="../../../reference/api/python/ir.html#tvm.ir.Var" title="tvm.ir.Var" class="sphx-glr-backref-module-tvm-ir sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">x</span></a><span class="p">,</span> <span class="p">(</span><a href="../../../reference/api/python/ir.html#tvm.ir.Var" title="tvm.ir.Var [...]
- <span class="n">Y</span> <span class="o">=</span> <span class="n">T</span><span class="o">.</span><span class="n">match_buffer</span><span class="p">(</span><span class="n">y</span><span class="p">,</span> <span class="p">(</span><a href="../../../reference/api/python/ir.html#tvm.ir.Var" title="tvm.ir.Var" class="sphx-glr-backref-module-tvm-ir sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">n</span></a><span class="p">,</span> <span class="n">m</span><sp [...]
- <span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">j</span> <span class="ow">in</span> <span class="n">T</span><span class="o">.</span><span class="n">grid</span><span class="p">(</span><a href="../../../reference/api/python/ir.html#tvm.ir.Var" title="tvm.ir.Var" class="sphx-glr-backref-module-tvm-ir sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">n</span></a><span class="p">,</span> <span class="n">m</span><span [...]
- <span class="k">with</span> <span class="n">T</span><span class="o">.</span><span class="n">sblock</span><span class="p">(</span><span class="s2">"relu"</span><span class="p">):</span>
- <span class="n">vi</span><span class="p">,</span> <span class="n">vj</span> <span class="o">=</span> <span class="n">T</span><span class="o">.</span><span class="n">axis</span><span class="o">.</span><span class="n">remap</span><span class="p">(</span><span class="s2">"SS"</span><span class="p">,</span> <span class="p">[</span><span class="n">i</span><span class="p">,</span> <span class="n">j</span><span class="p">])</span>
- <span class="n">Y</span><span class="p">[</span><span class="n">vi</span><span class="p">,</span> <span class="n">vj</span><span class="p">]</span> <span class="o">=</span> <span class="n">T</span><span class="o">.</span><span class="n">max</span><span class="p">(</span><span class="n">X</span><span class="p">[</span><span class="n">vi</span><span class="p">,</span> <span class="n">vj</span><span class="p">],</span> <span class="n">T</span><span class="o">.</span><span cl [...]
+ <span class="n">X</span> <span class="o">=</span> <a href="../../../reference/api/python/script/script.html#tvm.script.tirx.match_buffer" title="tvm.script.tirx.match_buffer" class="sphx-glr-backref-module-tvm-script-tirx sphx-glr-backref-type-py-function"><span class="n">T</span><span class="o">.</span><span class="n">match_buffer</span></a><span class="p">(</span><a href="../../../reference/api/python/ir.html#tvm.ir.Var" title="tvm.ir.Var" class="sphx-glr-backref-module-tvm-ir [...]
+ <span class="n">Y</span> <span class="o">=</span> <a href="../../../reference/api/python/script/script.html#tvm.script.tirx.match_buffer" title="tvm.script.tirx.match_buffer" class="sphx-glr-backref-module-tvm-script-tirx sphx-glr-backref-type-py-function"><span class="n">T</span><span class="o">.</span><span class="n">match_buffer</span></a><span class="p">(</span><span class="n">y</span><span class="p">,</span> <span class="p">(</span><a href="../../../reference/api/python/ir.h [...]
+ <span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">j</span> <span class="ow">in</span> <a href="../../../reference/api/python/script/script.html#tvm.script.tirx.grid" title="tvm.script.tirx.grid" class="sphx-glr-backref-module-tvm-script-tirx sphx-glr-backref-type-py-function"><span class="n">T</span><span class="o">.</span><span class="n">grid</span></a><span class="p">(</span><a href="../../../reference/api/python/ir.html#tvm.ir.Var" tit [...]
+ <span class="k">with</span> <a href="../../../reference/api/python/script/script.html#tvm.script.tirx.sblock" title="tvm.script.tirx.sblock" class="sphx-glr-backref-module-tvm-script-tirx sphx-glr-backref-type-py-function"><span class="n">T</span><span class="o">.</span><span class="n">sblock</span></a><span class="p">(</span><span class="s2">"relu"</span><span class="p">):</span>
+ <span class="n">vi</span><span class="p">,</span> <span class="n">vj</span> <span class="o">=</span> <a href="../../../reference/api/python/script/script.html#tvm.script.tirx.axis.remap" title="tvm.script.tirx.axis.remap" class="sphx-glr-backref-module-tvm-script-tirx-axis sphx-glr-backref-type-py-method"><span class="n">T</span><span class="o">.</span><span class="n">axis</span><span class="o">.</span><span class="n">remap</span></a><span class="p">(</span><span class="s [...]
+ <span class="n">Y</span><span class="p">[</span><span class="n">vi</span><span class="p">,</span> <span class="n">vj</span><span class="p">]</span> <span class="o">=</span> <a href="../../../reference/api/python/script/script.html#tvm.script.tirx.max" title="tvm.script.tirx.max" class="sphx-glr-backref-module-tvm-script-tirx sphx-glr-backref-type-py-function"><span class="n">T</span><span class="o">.</span><span class="n">max</span></a><span class="p">(</span><span class= [...]
<span class="nd">@R</span><span class="o">.</span><span class="n">function</span>
<span class="k">def</span><span class="w"> </span><span class="nf">forward</span><span class="p">(</span>
- <span class="n">data</span><span class="p">:</span> <span class="n">R</span><span class="o">.</span><span class="n">Tensor</span><span class="p">((</span><span class="s2">"n"</span><span class="p">,</span> <span class="mi">784</span><span class="p">),</span> <span class="n">dtype</span><span class="o">=</span><span class="s2">"float32"</span><span class="p">),</span>
- <span class="n">w0</span><span class="p">:</span> <span class="n">R</span><span class="o">.</span><span class="n">Tensor</span><span class="p">((</span><span class="mi">128</span><span class="p">,</span> <span class="mi">784</span><span class="p">),</span> <span class="n">dtype</span><span class="o">=</span><span class="s2">"float32"</span><span class="p">),</span>
- <span class="n">b0</span><span class="p">:</span> <span class="n">R</span><span class="o">.</span><span class="n">Tensor</span><span class="p">((</span><span class="mi">128</span><span class="p">,),</span> <span class="n">dtype</span><span class="o">=</span><span class="s2">"float32"</span><span class="p">),</span>
- <span class="n">w1</span><span class="p">:</span> <span class="n">R</span><span class="o">.</span><span class="n">Tensor</span><span class="p">((</span><span class="mi">10</span><span class="p">,</span> <span class="mi">128</span><span class="p">),</span> <span class="n">dtype</span><span class="o">=</span><span class="s2">"float32"</span><span class="p">),</span>
- <span class="n">b1</span><span class="p">:</span> <span class="n">R</span><span class="o">.</span><span class="n">Tensor</span><span class="p">((</span><span class="mi">10</span><span class="p">,),</span> <span class="n">dtype</span><span class="o">=</span><span class="s2">"float32"</span><span class="p">),</span>
- <span class="p">)</span> <span class="o">-></span> <span class="n">R</span><span class="o">.</span><span class="n">Tensor</span><span class="p">((</span><span class="s2">"n"</span><span class="p">,</span> <span class="mi">10</span><span class="p">),</span> <span class="n">dtype</span><span class="o">=</span><span class="s2">"float32"</span><span class="p">):</span>
+ <span class="n">data</span><span class="p">:</span> <a href="../../../reference/api/python/script/script.html#tvm.script.relax.Tensor" title="tvm.script.relax.Tensor" class="sphx-glr-backref-module-tvm-script-relax sphx-glr-backref-type-py-function"><span class="n">R</span><span class="o">.</span><span class="n">Tensor</span></a><span class="p">((</span><span class="s2">"n"</span><span class="p">,</span> <span class="mi">784</span><span class="p">),</span> <span class=" [...]
+ <span class="n">w0</span><span class="p">:</span> <a href="../../../reference/api/python/script/script.html#tvm.script.relax.Tensor" title="tvm.script.relax.Tensor" class="sphx-glr-backref-module-tvm-script-relax sphx-glr-backref-type-py-function"><span class="n">R</span><span class="o">.</span><span class="n">Tensor</span></a><span class="p">((</span><span class="mi">128</span><span class="p">,</span> <span class="mi">784</span><span class="p">),</span> <span class="n">dtype</sp [...]
+ <span class="n">b0</span><span class="p">:</span> <a href="../../../reference/api/python/script/script.html#tvm.script.relax.Tensor" title="tvm.script.relax.Tensor" class="sphx-glr-backref-module-tvm-script-relax sphx-glr-backref-type-py-function"><span class="n">R</span><span class="o">.</span><span class="n">Tensor</span></a><span class="p">((</span><span class="mi">128</span><span class="p">,),</span> <span class="n">dtype</span><span class="o">=</span><span class="s2">"f [...]
+ <span class="n">w1</span><span class="p">:</span> <a href="../../../reference/api/python/script/script.html#tvm.script.relax.Tensor" title="tvm.script.relax.Tensor" class="sphx-glr-backref-module-tvm-script-relax sphx-glr-backref-type-py-function"><span class="n">R</span><span class="o">.</span><span class="n">Tensor</span></a><span class="p">((</span><span class="mi">10</span><span class="p">,</span> <span class="mi">128</span><span class="p">),</span> <span class="n">dtype</spa [...]
+ <span class="n">b1</span><span class="p">:</span> <a href="../../../reference/api/python/script/script.html#tvm.script.relax.Tensor" title="tvm.script.relax.Tensor" class="sphx-glr-backref-module-tvm-script-relax sphx-glr-backref-type-py-function"><span class="n">R</span><span class="o">.</span><span class="n">Tensor</span></a><span class="p">((</span><span class="mi">10</span><span class="p">,),</span> <span class="n">dtype</span><span class="o">=</span><span class="s2">"fl [...]
+ <span class="p">)</span> <span class="o">-></span> <a href="../../../reference/api/python/script/script.html#tvm.script.relax.Tensor" title="tvm.script.relax.Tensor" class="sphx-glr-backref-module-tvm-script-relax sphx-glr-backref-type-py-function"><span class="n">R</span><span class="o">.</span><span class="n">Tensor</span></a><span class="p">((</span><span class="s2">"n"</span><span class="p">,</span> <span class="mi">10</span><span class="p">),</span> <span class="n"> [...]
<a href="../../../reference/api/python/ir.html#tvm.ir.Var" title="tvm.ir.Var" class="sphx-glr-backref-module-tvm-ir sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">n</span></a> <span class="o">=</span> <span class="n">T</span><span class="o">.</span><span class="n">int64</span><span class="p">()</span>
<span class="bp">cls</span> <span class="o">=</span> <span class="n">RelaxModuleWithTIR</span>
- <span class="k">with</span> <span class="n">R</span><span class="o">.</span><span class="n">dataflow</span><span class="p">():</span>
- <a href="../../../reference/api/python/relax/relax.html#tvm.relax.DataflowVar" title="tvm.relax.DataflowVar" class="sphx-glr-backref-module-tvm-relax sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">lv0</span></a> <span class="o">=</span> <span class="n">R</span><span class="o">.</span><span class="n">matmul</span><span class="p">(</span><span class="n">data</span><span class="p">,</span> <span class="n">R</span><span class="o">.</span><span class="n" [...]
- <a href="../../../reference/api/python/relax/relax.html#tvm.relax.DataflowVar" title="tvm.relax.DataflowVar" class="sphx-glr-backref-module-tvm-relax sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">lv1</span></a> <span class="o">=</span> <span class="n">R</span><span class="o">.</span><span class="n">call_tir</span><span class="p">(</span><span class="bp">cls</span><span class="o">.</span><span class="n">relu</span><span class="p">,</span> <a href=". [...]
- <span class="n">lv2</span> <span class="o">=</span> <span class="n">R</span><span class="o">.</span><span class="n">matmul</span><span class="p">(</span><a href="../../../reference/api/python/relax/relax.html#tvm.relax.DataflowVar" title="tvm.relax.DataflowVar" class="sphx-glr-backref-module-tvm-relax sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">lv1</span></a><span class="p">,</span> <span class="n">R</span><span class="o">.</span><span class="n"> [...]
- <span class="n">R</span><span class="o">.</span><span class="n">output</span><span class="p">(</span><span class="n">lv2</span><span class="p">)</span>
+ <span class="k">with</span> <a href="../../../reference/api/python/script/script.html#tvm.script.relax.dataflow" title="tvm.script.relax.dataflow" class="sphx-glr-backref-module-tvm-script-relax sphx-glr-backref-type-py-function"><span class="n">R</span><span class="o">.</span><span class="n">dataflow</span></a><span class="p">():</span>
+ <a href="../../../reference/api/python/relax/relax.html#tvm.relax.DataflowVar" title="tvm.relax.DataflowVar" class="sphx-glr-backref-module-tvm-relax sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">lv0</span></a> <span class="o">=</span> <a href="../../../reference/api/python/script/script.html#tvm.script.relax.matmul" title="tvm.script.relax.matmul" class="sphx-glr-backref-module-tvm-script-relax sphx-glr-backref-type-py-function"><span class="n">R< [...]
+ <a href="../../../reference/api/python/relax/relax.html#tvm.relax.DataflowVar" title="tvm.relax.DataflowVar" class="sphx-glr-backref-module-tvm-relax sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">lv1</span></a> <span class="o">=</span> <a href="../../../reference/api/python/script/script.html#tvm.script.relax.call_tir" title="tvm.script.relax.call_tir" class="sphx-glr-backref-module-tvm-script-relax sphx-glr-backref-type-py-function"><span class="n [...]
+ <span class="n">lv2</span> <span class="o">=</span> <a href="../../../reference/api/python/script/script.html#tvm.script.relax.matmul" title="tvm.script.relax.matmul" class="sphx-glr-backref-module-tvm-script-relax sphx-glr-backref-type-py-function"><span class="n">R</span><span class="o">.</span><span class="n">matmul</span></a><span class="p">(</span><a href="../../../reference/api/python/relax/relax.html#tvm.relax.DataflowVar" title="tvm.relax.DataflowVar" class="sphx-glr- [...]
+ <a href="../../../reference/api/python/script/script.html#tvm.script.relax.output" title="tvm.script.relax.output" class="sphx-glr-backref-module-tvm-script-relax sphx-glr-backref-type-py-function"><span class="n">R</span><span class="o">.</span><span class="n">output</span></a><span class="p">(</span><span class="n">lv2</span><span class="p">)</span>
<span class="k">return</span> <span class="n">lv2</span>
@@ -758,16 +761,19 @@ n = TypeVar("n")
class Module:
@T.prim_func(s_tir=True)
def relu(X: T.Buffer((n, m), "float32"), Y: T.Buffer((n, m), "float32")):
+ m = T.int64()
+ n = T.int64()
# with T.sblock("root"):
for i, j in T.grid(n, m):
with T.sblock("relu"):
- vi, vj = T.axis.remap("SS", [i, j])
- T.reads(X[vi, vj])
- T.writes(Y[vi, vj])
- Y[vi, vj] = T.max(X[vi, vj], T.float32(0.0))
+ v, v_1 = T.axis.remap("SS", [i, j])
+ T.reads(X[v, v_1])
+ T.writes(Y[v, v_1])
+ Y[v, v_1] = T.max(X[v, v_1], T.float32(0.0))
@R.function
def forward(data: R.Tensor((n, 784), dtype="float32"), w0: R.Tensor((128, 784), dtype="float32"), b0: R.Tensor((128,), dtype="float32"), w1: R.Tensor((10, 128), dtype="float32"), b1: R.Tensor((10,), dtype="float32")) -> R.Tensor((n, 10), dtype="float32"):
+ n = T.int64()
cls = Module
with R.dataflow():
lv: R.Tensor((784, 128), dtype="float32") = R.permute_dims(w0, axes=None)
@@ -787,15 +793,15 @@ class Module:
TVMScript code. This is because we print the IRModule in a standard
format, while we support syntax sugar for the input</p>
<p>For example, we can combine multiple operators into a single line, as</p>
-<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><a href="../../../reference/api/python/relax/relax.html#tvm.relax.DataflowVar" title="tvm.relax.DataflowVar" class="sphx-glr-backref-module-tvm-relax sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">lv0</span></a> <span class="o">=</span> <span class="n">R</span><span class="o">.</span><span class="n">matmul</span><span class="p">(</span><span class="n">data</span><span class="p">, [...]
+<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><a href="../../../reference/api/python/relax/relax.html#tvm.relax.DataflowVar" title="tvm.relax.DataflowVar" class="sphx-glr-backref-module-tvm-relax sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">lv0</span></a> <span class="o">=</span> <a href="../../../reference/api/python/script/script.html#tvm.script.relax.matmul" title="tvm.script.relax.matmul" class="sphx-glr-backref-module [...]
</pre></div>
</div>
<p>However, the normalized expression requires only one operation in one
binding. So the printed output is different from the written TVMScript code,
as</p>
-<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">lv</span><span class="p">:</span> <span class="n">R</span><span class="o">.</span><span class="n">Tensor</span><span class="p">((</span><span class="mi">784</span><span class="p">,</span> <span class="mi">128</span><span class="p">),</span> <span class="n">dtype</span><span class="o">=</span><span class="s2">"float32"</span><span class="p">)</span> <span class="o">=</span> <span c [...]
-<a href="../../../reference/api/python/relax/relax.html#tvm.relax.DataflowVar" title="tvm.relax.DataflowVar" class="sphx-glr-backref-module-tvm-relax sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">lv1</span></a><span class="p">:</span> <span class="n">R</span><span class="o">.</span><span class="n">Tensor</span><span class="p">((</span><a href="../../../reference/api/python/ir.html#tvm.ir.Var" title="tvm.ir.Var" class="sphx-glr-backref-module-tvm-ir sphx-glr-ba [...]
-<a href="../../../reference/api/python/relax/relax.html#tvm.relax.DataflowVar" title="tvm.relax.DataflowVar" class="sphx-glr-backref-module-tvm-relax sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">lv0</span></a><span class="p">:</span> <span class="n">R</span><span class="o">.</span><span class="n">Tensor</span><span class="p">((</span><a href="../../../reference/api/python/ir.html#tvm.ir.Var" title="tvm.ir.Var" class="sphx-glr-backref-module-tvm-ir sphx-glr-ba [...]
+<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">lv</span><span class="p">:</span> <a href="../../../reference/api/python/script/script.html#tvm.script.relax.Tensor" title="tvm.script.relax.Tensor" class="sphx-glr-backref-module-tvm-script-relax sphx-glr-backref-type-py-function"><span class="n">R</span><span class="o">.</span><span class="n">Tensor</span></a><span class="p">((</span><span class="mi">784</span><span class="p">,</span> <sp [...]
+<a href="../../../reference/api/python/relax/relax.html#tvm.relax.DataflowVar" title="tvm.relax.DataflowVar" class="sphx-glr-backref-module-tvm-relax sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">lv1</span></a><span class="p">:</span> <a href="../../../reference/api/python/script/script.html#tvm.script.relax.Tensor" title="tvm.script.relax.Tensor" class="sphx-glr-backref-module-tvm-script-relax sphx-glr-backref-type-py-function"><span class="n">R</span><span c [...]
+<a href="../../../reference/api/python/relax/relax.html#tvm.relax.DataflowVar" title="tvm.relax.DataflowVar" class="sphx-glr-backref-module-tvm-relax sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">lv0</span></a><span class="p">:</span> <a href="../../../reference/api/python/script/script.html#tvm.script.relax.Tensor" title="tvm.script.relax.Tensor" class="sphx-glr-backref-module-tvm-script-relax sphx-glr-backref-type-py-function"><span class="n">R</span><span c [...]
</pre></div>
</div>
</div>
@@ -831,6 +837,8 @@ Relax NNModule API.</p>
</div>
<div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span># from typing import TypeVar
# from tvm.script import ir as I
+# from tvm.script import tirx as T
+# from tvm.tirx.layout import Axis
# from tvm.script import relax as R
n = TypeVar("n")
@@ -838,6 +846,7 @@ n = TypeVar("n")
class Module:
@R.function
def forward(x: R.Tensor((n, 784), dtype="float32"), fc1_weight: R.Tensor((128, 784), dtype="float32"), fc1_bias: R.Tensor((128,), dtype="float32"), fc2_weight: R.Tensor((10, 128), dtype="float32"), fc2_bias: R.Tensor((10,), dtype="float32")) -> R.Tensor((n, 10), dtype="float32"):
+ n = T.int64()
R.func_attr({"num_input": 1})
with R.dataflow():
permute_dims: R.Tensor((784, 128), dtype="float32") = R.permute_dims(fc1_weight, axes=None)
@@ -855,23 +864,23 @@ class Module:
<p>We can also insert customized function calls into the NNModule, such as
Tensor Expression(TE), TensorIR functions or other TVM packed functions.</p>
<div class="highlight-Python notranslate"><div class="highlight"><pre><span></span><span class="nd">@T</span><span class="o">.</span><span class="n">prim_func</span><span class="p">(</span><span class="n">s_tir</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
-<span class="k">def</span><span class="w"> </span><span class="nf">tir_linear</span><span class="p">(</span><a href="../../../reference/api/python/ir.html#tvm.ir.Var" title="tvm.ir.Var" class="sphx-glr-backref-module-tvm-ir sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">x</span></a><span class="p">:</span> <span class="n">T</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="n">w</span><span class="p">:</span> <span [...]
+<span class="k">def</span><span class="w"> </span><span class="nf">tir_linear</span><span class="p">(</span><a href="../../../reference/api/python/ir.html#tvm.ir.Var" title="tvm.ir.Var" class="sphx-glr-backref-module-tvm-ir sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">x</span></a><span class="p">:</span> <a href="../../../reference/api/python/script/script.html#tvm.script.tirx.handle" title="tvm.script.tirx.handle" class="sphx-glr-backref-module-tvm-script-ti [...]
<span class="n">M</span> <span class="o">=</span> <span class="n">T</span><span class="o">.</span><span class="n">int64</span><span class="p">()</span>
<span class="n">N</span> <span class="o">=</span> <span class="n">T</span><span class="o">.</span><span class="n">int64</span><span class="p">()</span>
<span class="n">K</span> <span class="o">=</span> <span class="n">T</span><span class="o">.</span><span class="n">int64</span><span class="p">()</span>
- <span class="n">X</span> <span class="o">=</span> <span class="n">T</span><span class="o">.</span><span class="n">match_buffer</span><span class="p">(</span><a href="../../../reference/api/python/ir.html#tvm.ir.Var" title="tvm.ir.Var" class="sphx-glr-backref-module-tvm-ir sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">x</span></a><span class="p">,</span> <span class="p">(</span><span class="n">M</span><span class="p">,</span> <span class="n">K</span><span c [...]
- <span class="n">W</span> <span class="o">=</span> <span class="n">T</span><span class="o">.</span><span class="n">match_buffer</span><span class="p">(</span><span class="n">w</span><span class="p">,</span> <span class="p">(</span><span class="n">N</span><span class="p">,</span> <span class="n">K</span><span class="p">),</span> <span class="s2">"float32"</span><span class="p">)</span>
- <span class="n">B</span> <span class="o">=</span> <span class="n">T</span><span class="o">.</span><span class="n">match_buffer</span><span class="p">(</span><span class="n">b</span><span class="p">,</span> <span class="p">(</span><span class="n">N</span><span class="p">,),</span> <span class="s2">"float32"</span><span class="p">)</span>
- <span class="n">Z</span> <span class="o">=</span> <span class="n">T</span><span class="o">.</span><span class="n">match_buffer</span><span class="p">(</span><span class="n">z</span><span class="p">,</span> <span class="p">(</span><span class="n">M</span><span class="p">,</span> <span class="n">N</span><span class="p">),</span> <span class="s2">"float32"</span><span class="p">)</span>
- <span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">j</span><span class="p">,</span> <span class="n">k</span> <span class="ow">in</span> <span class="n">T</span><span class="o">.</span><span class="n">grid</span><span class="p">(</span><span class="n">M</span><span class="p">,</span> <span class="n">N</span><span class="p">,</span> <span class="n">K</span><span class="p">):</span>
- <span class="k">with</span> <span class="n">T</span><span class="o">.</span><span class="n">sblock</span><span class="p">(</span><span class="s2">"linear"</span><span class="p">):</span>
- <span class="n">vi</span><span class="p">,</span> <span class="n">vj</span><span class="p">,</span> <span class="n">vk</span> <span class="o">=</span> <span class="n">T</span><span class="o">.</span><span class="n">axis</span><span class="o">.</span><span class="n">remap</span><span class="p">(</span><span class="s2">"SSR"</span><span class="p">,</span> <span class="p">[</span><span class="n">i</span><span class="p">,</span> <span class="n">j</span><span class="p">, [...]
- <span class="k">with</span> <span class="n">T</span><span class="o">.</span><span class="n">init</span><span class="p">():</span>
+ <span class="n">X</span> <span class="o">=</span> <a href="../../../reference/api/python/script/script.html#tvm.script.tirx.match_buffer" title="tvm.script.tirx.match_buffer" class="sphx-glr-backref-module-tvm-script-tirx sphx-glr-backref-type-py-function"><span class="n">T</span><span class="o">.</span><span class="n">match_buffer</span></a><span class="p">(</span><a href="../../../reference/api/python/ir.html#tvm.ir.Var" title="tvm.ir.Var" class="sphx-glr-backref-module-tvm-ir sphx [...]
+ <span class="n">W</span> <span class="o">=</span> <a href="../../../reference/api/python/script/script.html#tvm.script.tirx.match_buffer" title="tvm.script.tirx.match_buffer" class="sphx-glr-backref-module-tvm-script-tirx sphx-glr-backref-type-py-function"><span class="n">T</span><span class="o">.</span><span class="n">match_buffer</span></a><span class="p">(</span><span class="n">w</span><span class="p">,</span> <span class="p">(</span><span class="n">N</span><span class="p">,</span [...]
+ <span class="n">B</span> <span class="o">=</span> <a href="../../../reference/api/python/script/script.html#tvm.script.tirx.match_buffer" title="tvm.script.tirx.match_buffer" class="sphx-glr-backref-module-tvm-script-tirx sphx-glr-backref-type-py-function"><span class="n">T</span><span class="o">.</span><span class="n">match_buffer</span></a><span class="p">(</span><span class="n">b</span><span class="p">,</span> <span class="p">(</span><span class="n">N</span><span class="p">,),</sp [...]
+ <span class="n">Z</span> <span class="o">=</span> <a href="../../../reference/api/python/script/script.html#tvm.script.tirx.match_buffer" title="tvm.script.tirx.match_buffer" class="sphx-glr-backref-module-tvm-script-tirx sphx-glr-backref-type-py-function"><span class="n">T</span><span class="o">.</span><span class="n">match_buffer</span></a><span class="p">(</span><span class="n">z</span><span class="p">,</span> <span class="p">(</span><span class="n">M</span><span class="p">,</span [...]
+ <span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">j</span><span class="p">,</span> <span class="n">k</span> <span class="ow">in</span> <a href="../../../reference/api/python/script/script.html#tvm.script.tirx.grid" title="tvm.script.tirx.grid" class="sphx-glr-backref-module-tvm-script-tirx sphx-glr-backref-type-py-function"><span class="n">T</span><span class="o">.</span><span class="n">grid</span></a><span class="p">(</span><span class="n">M [...]
+ <span class="k">with</span> <a href="../../../reference/api/python/script/script.html#tvm.script.tirx.sblock" title="tvm.script.tirx.sblock" class="sphx-glr-backref-module-tvm-script-tirx sphx-glr-backref-type-py-function"><span class="n">T</span><span class="o">.</span><span class="n">sblock</span></a><span class="p">(</span><span class="s2">"linear"</span><span class="p">):</span>
+ <span class="n">vi</span><span class="p">,</span> <span class="n">vj</span><span class="p">,</span> <span class="n">vk</span> <span class="o">=</span> <a href="../../../reference/api/python/script/script.html#tvm.script.tirx.axis.remap" title="tvm.script.tirx.axis.remap" class="sphx-glr-backref-module-tvm-script-tirx-axis sphx-glr-backref-type-py-method"><span class="n">T</span><span class="o">.</span><span class="n">axis</span><span class="o">.</span><span class="n">remap</s [...]
+ <span class="k">with</span> <a href="../../../reference/api/python/script/script.html#tvm.script.tirx.init" title="tvm.script.tirx.init" class="sphx-glr-backref-module-tvm-script-tirx sphx-glr-backref-type-py-function"><span class="n">T</span><span class="o">.</span><span class="n">init</span></a><span class="p">():</span>
<span class="n">Z</span><span class="p">[</span><span class="n">vi</span><span class="p">,</span> <span class="n">vj</span><span class="p">]</span> <span class="o">=</span> <span class="mi">0</span>
<span class="n">Z</span><span class="p">[</span><span class="n">vi</span><span class="p">,</span> <span class="n">vj</span><span class="p">]</span> <span class="o">=</span> <span class="n">Z</span><span class="p">[</span><span class="n">vi</span><span class="p">,</span> <span class="n">vj</span><span class="p">]</span> <span class="o">+</span> <span class="n">X</span><span class="p">[</span><span class="n">vi</span><span class="p">,</span> <span class="n">vk</span><span class [...]
- <span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">j</span> <span class="ow">in</span> <span class="n">T</span><span class="o">.</span><span class="n">grid</span><span class="p">(</span><span class="n">M</span><span class="p">,</span> <span class="n">N</span><span class="p">):</span>
- <span class="k">with</span> <span class="n">T</span><span class="o">.</span><span class="n">sblock</span><span class="p">(</span><span class="s2">"add"</span><span class="p">):</span>
- <span class="n">vi</span><span class="p">,</span> <span class="n">vj</span> <span class="o">=</span> <span class="n">T</span><span class="o">.</span><span class="n">axis</span><span class="o">.</span><span class="n">remap</span><span class="p">(</span><span class="s2">"SS"</span><span class="p">,</span> <span class="p">[</span><span class="n">i</span><span class="p">,</span> <span class="n">j</span><span class="p">])</span>
+ <span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">j</span> <span class="ow">in</span> <a href="../../../reference/api/python/script/script.html#tvm.script.tirx.grid" title="tvm.script.tirx.grid" class="sphx-glr-backref-module-tvm-script-tirx sphx-glr-backref-type-py-function"><span class="n">T</span><span class="o">.</span><span class="n">grid</span></a><span class="p">(</span><span class="n">M</span><span class="p">,</span> <span class="n">N [...]
+ <span class="k">with</span> <a href="../../../reference/api/python/script/script.html#tvm.script.tirx.sblock" title="tvm.script.tirx.sblock" class="sphx-glr-backref-module-tvm-script-tirx sphx-glr-backref-type-py-function"><span class="n">T</span><span class="o">.</span><span class="n">sblock</span></a><span class="p">(</span><span class="s2">"add"</span><span class="p">):</span>
+ <span class="n">vi</span><span class="p">,</span> <span class="n">vj</span> <span class="o">=</span> <a href="../../../reference/api/python/script/script.html#tvm.script.tirx.axis.remap" title="tvm.script.tirx.axis.remap" class="sphx-glr-backref-module-tvm-script-tirx-axis sphx-glr-backref-type-py-method"><span class="n">T</span><span class="o">.</span><span class="n">axis</span><span class="o">.</span><span class="n">remap</span></a><span class="p">(</span><span class="s2">& [...]
<span class="n">Z</span><span class="p">[</span><span class="n">vi</span><span class="p">,</span> <span class="n">vj</span><span class="p">]</span> <span class="o">=</span> <span class="n">Z</span><span class="p">[</span><span class="n">vi</span><span class="p">,</span> <span class="n">vj</span><span class="p">]</span> <span class="o">+</span> <span class="n">B</span><span class="p">[</span><span class="n">vj</span><span class="p">]</span>
@@ -921,6 +930,7 @@ N = TypeVar("N")
class Module:
@T.prim_func(private=True, s_tir=True)
def relu(env_linear: T.Buffer((n, T.int64(128)), "float32"), compute: T.Buffer((n, T.int64(128)), "float32")):
+ n = T.int64()
T.func_attr({"tirx.noalias": True})
# with T.sblock("root"):
for i0, i1 in T.grid(n, T.int64(128)):
@@ -932,24 +942,28 @@ class Module:
@T.prim_func(s_tir=True)
def tir_linear(X: T.Buffer((M, K), "float32"), W: T.Buffer((N, K), "float32"), B: T.Buffer((N,), "float32"), Z: T.Buffer((M, N), "float32")):
+ K = T.int64()
+ M = T.int64()
+ N = T.int64()
# with T.sblock("root"):
for i, j, k in T.grid(M, N, K):
with T.sblock("linear"):
- vi, vj, vk = T.axis.remap("SSR", [i, j, k])
- T.reads(X[vi, vk], W[vj, vk])
- T.writes(Z[vi, vj])
+ v, v_1, v_2 = T.axis.remap("SSR", [i, j, k])
+ T.reads(X[v, v_2], W[v_1, v_2])
+ T.writes(Z[v, v_1])
with T.init():
- Z[vi, vj] = T.float32(0.0)
- Z[vi, vj] = Z[vi, vj] + X[vi, vk] * W[vj, vk]
+ Z[v, v_1] = T.float32(0.0)
+ Z[v, v_1] = Z[v, v_1] + X[v, v_2] * W[v_1, v_2]
for i, j in T.grid(M, N):
with T.sblock("add"):
- vi, vj = T.axis.remap("SS", [i, j])
- T.reads(Z[vi, vj], B[vj])
- T.writes(Z[vi, vj])
- Z[vi, vj] = Z[vi, vj] + B[vj]
+ v, v_1 = T.axis.remap("SS", [i, j])
+ T.reads(Z[v, v_1], B[v_1])
+ T.writes(Z[v, v_1])
+ Z[v, v_1] = Z[v, v_1] + B[v_1]
@R.function
def forward(x: R.Tensor((n, 784), dtype="float32"), fc1_weight: R.Tensor((128, 784), dtype="float32"), fc1_bias: R.Tensor((128,), dtype="float32"), fc2_weight: R.Tensor((10, 128), dtype="float32"), fc2_bias: R.Tensor((10,), dtype="float32")) -> R.Tensor((n, 10), dtype="float32"):
+ n = T.int64()
R.func_attr({"num_input": 1})
cls = Module
with R.dataflow():
@@ -970,11 +984,11 @@ low-level and widely used in TVM’s internal logic, e.g writing a
customized pass.</p>
<div class="highlight-Python notranslate"><div class="highlight"><pre><span></span><span class="n">bb</span> <span class="o">=</span> <span class="n">relax</span><span class="o">.</span><span class="n">BlockBuilder</span><span class="p">()</span>
<a href="../../../reference/api/python/ir.html#tvm.ir.Var" title="tvm.ir.Var" class="sphx-glr-backref-module-tvm-ir sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">n</span></a> <span class="o">=</span> <span class="n">T</span><span class="o">.</span><span class="n">int64</span><span class="p">()</span>
-<a href="../../../reference/api/python/ir.html#tvm.ir.Var" title="tvm.ir.Var" class="sphx-glr-backref-module-tvm-ir sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">x</span></a> <span class="o">=</span> <a href="../../../reference/api/python/ir.html#tvm.ir.Var" title="tvm.ir.Var" class="sphx-glr-backref-module-tvm-ir sphx-glr-backref-type-py-class"><span class="n">relax</span><span class="o">.</span><span class="n">Var</span></a><span class="p">(</span><span clas [...]
-<a href="../../../reference/api/python/ir.html#tvm.ir.Var" title="tvm.ir.Var" class="sphx-glr-backref-module-tvm-ir sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">fc1_weight</span></a> <span class="o">=</span> <a href="../../../reference/api/python/ir.html#tvm.ir.Var" title="tvm.ir.Var" class="sphx-glr-backref-module-tvm-ir sphx-glr-backref-type-py-class"><span class="n">relax</span><span class="o">.</span><span class="n">Var</span></a><span class="p">(</span>< [...]
-<a href="../../../reference/api/python/ir.html#tvm.ir.Var" title="tvm.ir.Var" class="sphx-glr-backref-module-tvm-ir sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">fc1_bias</span></a> <span class="o">=</span> <a href="../../../reference/api/python/ir.html#tvm.ir.Var" title="tvm.ir.Var" class="sphx-glr-backref-module-tvm-ir sphx-glr-backref-type-py-class"><span class="n">relax</span><span class="o">.</span><span class="n">Var</span></a><span class="p">(</span><sp [...]
-<a href="../../../reference/api/python/ir.html#tvm.ir.Var" title="tvm.ir.Var" class="sphx-glr-backref-module-tvm-ir sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">fc2_weight</span></a> <span class="o">=</span> <a href="../../../reference/api/python/ir.html#tvm.ir.Var" title="tvm.ir.Var" class="sphx-glr-backref-module-tvm-ir sphx-glr-backref-type-py-class"><span class="n">relax</span><span class="o">.</span><span class="n">Var</span></a><span class="p">(</span>< [...]
-<a href="../../../reference/api/python/ir.html#tvm.ir.Var" title="tvm.ir.Var" class="sphx-glr-backref-module-tvm-ir sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">fc2_bias</span></a> <span class="o">=</span> <a href="../../../reference/api/python/ir.html#tvm.ir.Var" title="tvm.ir.Var" class="sphx-glr-backref-module-tvm-ir sphx-glr-backref-type-py-class"><span class="n">relax</span><span class="o">.</span><span class="n">Var</span></a><span class="p">(</span><sp [...]
+<a href="../../../reference/api/python/ir.html#tvm.ir.Var" title="tvm.ir.Var" class="sphx-glr-backref-module-tvm-ir sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">x</span></a> <span class="o">=</span> <a href="../../../reference/api/python/ir.html#tvm.ir.Var" title="tvm.ir.Var" class="sphx-glr-backref-module-tvm-ir sphx-glr-backref-type-py-class"><span class="n">relax</span><span class="o">.</span><span class="n">Var</span></a><span class="p">(</span><span clas [...]
+<a href="../../../reference/api/python/ir.html#tvm.ir.Var" title="tvm.ir.Var" class="sphx-glr-backref-module-tvm-ir sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">fc1_weight</span></a> <span class="o">=</span> <a href="../../../reference/api/python/ir.html#tvm.ir.Var" title="tvm.ir.Var" class="sphx-glr-backref-module-tvm-ir sphx-glr-backref-type-py-class"><span class="n">relax</span><span class="o">.</span><span class="n">Var</span></a><span class="p">(</span>< [...]
+<a href="../../../reference/api/python/ir.html#tvm.ir.Var" title="tvm.ir.Var" class="sphx-glr-backref-module-tvm-ir sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">fc1_bias</span></a> <span class="o">=</span> <a href="../../../reference/api/python/ir.html#tvm.ir.Var" title="tvm.ir.Var" class="sphx-glr-backref-module-tvm-ir sphx-glr-backref-type-py-class"><span class="n">relax</span><span class="o">.</span><span class="n">Var</span></a><span class="p">(</span><sp [...]
+<a href="../../../reference/api/python/ir.html#tvm.ir.Var" title="tvm.ir.Var" class="sphx-glr-backref-module-tvm-ir sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">fc2_weight</span></a> <span class="o">=</span> <a href="../../../reference/api/python/ir.html#tvm.ir.Var" title="tvm.ir.Var" class="sphx-glr-backref-module-tvm-ir sphx-glr-backref-type-py-class"><span class="n">relax</span><span class="o">.</span><span class="n">Var</span></a><span class="p">(</span>< [...]
+<a href="../../../reference/api/python/ir.html#tvm.ir.Var" title="tvm.ir.Var" class="sphx-glr-backref-module-tvm-ir sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">fc2_bias</span></a> <span class="o">=</span> <a href="../../../reference/api/python/ir.html#tvm.ir.Var" title="tvm.ir.Var" class="sphx-glr-backref-module-tvm-ir sphx-glr-backref-type-py-class"><span class="n">relax</span><span class="o">.</span><span class="n">Var</span></a><span class="p">(</span><sp [...]
<span class="k">with</span> <span class="n">bb</span><span class="o">.</span><span class="n">function</span><span class="p">(</span><span class="s2">"forward"</span><span class="p">,</span> <span class="p">[</span><a href="../../../reference/api/python/ir.html#tvm.ir.Var" title="tvm.ir.Var" class="sphx-glr-backref-module-tvm-ir sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">x</span></a><span class="p">,</span> <a href="../../../reference/api/python/ir [...]
<span class="k">with</span> <span class="n">bb</span><span class="o">.</span><span class="n">dataflow</span><span class="p">():</span>
<a href="../../../reference/api/python/relax/relax.html#tvm.relax.DataflowVar" title="tvm.relax.DataflowVar" class="sphx-glr-backref-module-tvm-relax sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">lv0</span></a> <span class="o">=</span> <span class="n">bb</span><span class="o">.</span><span class="n">emit</span><span class="p">(</span><a href="../../../reference/api/python/relax/op.html#tvm.relax.op.matmul" title="tvm.relax.op.matmul" class="sphx-glr-ba [...]
@@ -989,6 +1003,8 @@ customized pass.</p>
</div>
<div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span># from typing import TypeVar
# from tvm.script import ir as I
+# from tvm.script import tirx as T
+# from tvm.tirx.layout import Axis
# from tvm.script import relax as R
v = TypeVar("v")
@@ -996,6 +1012,7 @@ v = TypeVar("v")
class Module:
@R.function
def forward(x: R.Tensor((v, 784), dtype="float32"), fc1_weight: R.Tensor((128, 784), dtype="float32"), fc1_bias: R.Tensor((128,), dtype="float32"), fc2_weight: R.Tensor((10, 128), dtype="float32"), fc2_bias: R.Tensor((10,), dtype="float32")) -> R.Tensor((v, 10), dtype="float32"):
+ v = T.int64()
with R.dataflow():
lv: R.Tensor((784, 128), dtype="float32") = R.permute_dims(fc1_weight, axes=None)
lv1: R.Tensor((v, 128), dtype="float32") = R.matmul(x, lv, out_dtype=None)
@@ -1050,6 +1067,7 @@ N = TypeVar("N")
class Module:
@T.prim_func(private=True, s_tir=True)
def relu(lv: T.Buffer((v, T.int64(128)), "float32"), compute: T.Buffer((v, T.int64(128)), "float32")):
+ v = T.int64()
T.func_attr({"tirx.noalias": True})
# with T.sblock("root"):
for i0, i1 in T.grid(v, T.int64(128)):
@@ -1061,24 +1079,28 @@ class Module:
@T.prim_func(s_tir=True)
def tir_linear(X: T.Buffer((M, K), "float32"), W: T.Buffer((N, K), "float32"), B: T.Buffer((N,), "float32"), Z: T.Buffer((M, N), "float32")):
+ K = T.int64()
+ M = T.int64()
+ N = T.int64()
# with T.sblock("root"):
for i, j, k in T.grid(M, N, K):
with T.sblock("linear"):
- vi, vj, vk = T.axis.remap("SSR", [i, j, k])
- T.reads(X[vi, vk], W[vj, vk])
- T.writes(Z[vi, vj])
+ v, v_1, v_2 = T.axis.remap("SSR", [i, j, k])
+ T.reads(X[v, v_2], W[v_1, v_2])
+ T.writes(Z[v, v_1])
with T.init():
- Z[vi, vj] = T.float32(0.0)
- Z[vi, vj] = Z[vi, vj] + X[vi, vk] * W[vj, vk]
+ Z[v, v_1] = T.float32(0.0)
+ Z[v, v_1] = Z[v, v_1] + X[v, v_2] * W[v_1, v_2]
for i, j in T.grid(M, N):
with T.sblock("add"):
- vi, vj = T.axis.remap("SS", [i, j])
- T.reads(Z[vi, vj], B[vj])
- T.writes(Z[vi, vj])
- Z[vi, vj] = Z[vi, vj] + B[vj]
+ v, v_1 = T.axis.remap("SS", [i, j])
+ T.reads(Z[v, v_1], B[v_1])
+ T.writes(Z[v, v_1])
+ Z[v, v_1] = Z[v, v_1] + B[v_1]
@R.function
def forward(x: R.Tensor((v, 784), dtype="float32"), fc1_weight: R.Tensor((128, 784), dtype="float32"), fc1_bias: R.Tensor((128,), dtype="float32"), fc2_weight: R.Tensor((10, 128), dtype="float32"), fc2_bias: R.Tensor((10,), dtype="float32")) -> R.Tensor((v, 10), dtype="float32"):
+ v = T.int64()
cls = Module
with R.dataflow():
lv = R.call_dps_packed("env.linear", (x, fc1_weight, fc1_bias), out_ty=R.Tensor((v, 128), dtype="float32"))
diff --git a/docs/deep_dive/relax/tutorials/relax_transformation.html b/docs/deep_dive/relax/tutorials/relax_transformation.html
index 58a8c7f2cb7..6d4cf4fb9e4 100644
--- a/docs/deep_dive/relax/tutorials/relax_transformation.html
+++ b/docs/deep_dive/relax/tutorials/relax_transformation.html
@@ -682,6 +682,8 @@ the <a class="reference internal" href="relax_creation.html#relax-creation"><spa
</div>
<div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span># from typing import TypeVar
# from tvm.script import ir as I
+# from tvm.script import tirx as T
+# from tvm.tirx.layout import Axis
# from tvm.script import relax as R
n = TypeVar("n")
@@ -689,6 +691,7 @@ n = TypeVar("n")
class Module:
@R.function
def forward(x: R.Tensor((n, 784), dtype="float32"), fc1_weight: R.Tensor((128, 784), dtype="float32"), fc1_bias: R.Tensor((128,), dtype="float32"), fc2_weight: R.Tensor((10, 128), dtype="float32"), fc2_bias: R.Tensor((10,), dtype="float32")) -> R.Tensor((n, 10), dtype="float32"):
+ n = T.int64()
R.func_attr({"num_input": 1})
with R.dataflow():
permute_dims: R.Tensor((784, 128), dtype="float32") = R.permute_dims(fc1_weight, axes=None)
@@ -724,6 +727,7 @@ n = TypeVar("n")
class Module:
@T.prim_func(private=True, s_tir=True)
def add(matmul: T.Buffer((n, T.int64(128)), "float32"), fc1_bias: T.Buffer((T.int64(128),), "float32"), T_add: T.Buffer((n, T.int64(128)), "float32")):
+ n = T.int64()
T.func_attr({"tirx.noalias": True})
# with T.sblock("root"):
for ax0, ax1 in T.grid(n, T.int64(128)):
@@ -735,6 +739,7 @@ class Module:
@T.prim_func(private=True, s_tir=True)
def add1(matmul1: T.Buffer((n, T.int64(10)), "float32"), fc2_bias: T.Buffer((T.int64(10),), "float32"), T_add: T.Buffer((n, T.int64(10)), "float32")):
+ n = T.int64()
T.func_attr({"tirx.noalias": True})
# with T.sblock("root"):
for ax0, ax1 in T.grid(n, T.int64(10)):
@@ -746,6 +751,7 @@ class Module:
@T.prim_func(private=True, s_tir=True)
def matmul(x: T.Buffer((n, T.int64(784)), "float32"), permute_dims: T.Buffer((T.int64(784), T.int64(128)), "float32"), matmul: T.Buffer((n, T.int64(128)), "float32")):
+ n = T.int64()
T.func_attr({"tirx.noalias": True})
# with T.sblock("root"):
for i0, i1, k in T.grid(n, T.int64(128), T.int64(784)):
@@ -759,6 +765,7 @@ class Module:
@T.prim_func(private=True, s_tir=True)
def matmul1(relu: T.Buffer((n, T.int64(128)), "float32"), permute_dims1: T.Buffer((T.int64(128), T.int64(10)), "float32"), matmul: T.Buffer((n, T.int64(10)), "float32")):
+ n = T.int64()
T.func_attr({"tirx.noalias": True})
# with T.sblock("root"):
for i0, i1, k in T.grid(n, T.int64(10), T.int64(128)):
@@ -772,6 +779,7 @@ class Module:
@T.prim_func(private=True, s_tir=True)
def relu(add: T.Buffer((n, T.int64(128)), "float32"), compute: T.Buffer((n, T.int64(128)), "float32")):
+ n = T.int64()
T.func_attr({"tirx.noalias": True})
# with T.sblock("root"):
for i0, i1 in T.grid(n, T.int64(128)):
@@ -805,6 +813,7 @@ class Module:
@R.function
def forward(x: R.Tensor((n, 784), dtype="float32"), fc1_weight: R.Tensor((128, 784), dtype="float32"), fc1_bias: R.Tensor((128,), dtype="float32"), fc2_weight: R.Tensor((10, 128), dtype="float32"), fc2_bias: R.Tensor((10,), dtype="float32")) -> R.Tensor((n, 10), dtype="float32"):
+ n = T.int64()
R.func_attr({"num_input": 1})
cls = Module
with R.dataflow():
@@ -846,6 +855,7 @@ n = TypeVar("n")
class Module:
@T.prim_func(private=True, s_tir=True)
def fused_matmul1_add1(relu: T.Buffer((n, T.int64(128)), "float32"), permute_dims1: T.Buffer((T.int64(128), T.int64(10)), "float32"), fc2_bias: T.Buffer((T.int64(10),), "float32"), T_add_intermediate: T.Buffer((n, T.int64(10)), "float32")):
+ n = T.int64()
T.func_attr({"tirx.noalias": True})
# with T.sblock("root"):
matmul_intermediate = T.sblock_alloc_buffer((n, T.int64(10)))
@@ -866,6 +876,7 @@ class Module:
@T.prim_func(private=True, s_tir=True)
def fused_matmul_add_relu(x: T.Buffer((n, T.int64(784)), "float32"), permute_dims: T.Buffer((T.int64(784), T.int64(128)), "float32"), fc1_bias: T.Buffer((T.int64(128),), "float32"), compute_intermediate: T.Buffer((n, T.int64(128)), "float32")):
+ n = T.int64()
T.func_attr({"tirx.noalias": True})
# with T.sblock("root"):
matmul_intermediate = T.sblock_alloc_buffer((n, T.int64(128)))
@@ -915,6 +926,7 @@ class Module:
@R.function
def forward(x: R.Tensor((n, 784), dtype="float32"), fc1_weight: R.Tensor((128, 784), dtype="float32"), fc1_bias: R.Tensor((128,), dtype="float32"), fc2_weight: R.Tensor((10, 128), dtype="float32"), fc2_bias: R.Tensor((10,), dtype="float32")) -> R.Tensor((n, 10), dtype="float32"):
+ n = T.int64()
R.func_attr({"num_input": 1})
cls = Module
with R.dataflow():
@@ -970,6 +982,8 @@ operator to <code class="docutils literal notranslate"><span class="pre">gelu</s
</div>
<div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span># from typing import TypeVar
# from tvm.script import ir as I
+# from tvm.script import tirx as T
+# from tvm.tirx.layout import Axis
# from tvm.script import relax as R
n = TypeVar("n")
@@ -977,6 +991,7 @@ n = TypeVar("n")
class Module:
@R.function
def forward(x: R.Tensor((n, 784), dtype="float32"), fc1_weight: R.Tensor((128, 784), dtype="float32"), fc1_bias: R.Tensor((128,), dtype="float32"), fc2_weight: R.Tensor((10, 128), dtype="float32"), fc2_bias: R.Tensor((10,), dtype="float32")) -> R.Tensor((n, 10), dtype="float32"):
+ n = T.int64()
R.func_attr({"num_input": 1})
with R.dataflow():
permute_dims: R.Tensor((784, 128), dtype="float32") = R.permute_dims(fc1_weight, axes=None)
diff --git a/docs/deep_dive/relax/tutorials/sg_execution_times.html b/docs/deep_dive/relax/tutorials/sg_execution_times.html
index 2a56dfa36e8..796135c9c10 100644
--- a/docs/deep_dive/relax/tutorials/sg_execution_times.html
+++ b/docs/deep_dive/relax/tutorials/sg_execution_times.html
@@ -634,7 +634,7 @@ document.write(`
<section id="computation-times">
<span id="sphx-glr-deep-dive-relax-tutorials-sg-execution-times"></span><h1>Computation times<a class="headerlink" href="#computation-times" title="Link to this heading">#</a></h1>
-<p><strong>00:00.224</strong> total execution time for 2 files <strong>from deep_dive/relax/tutorials</strong>:</p>
+<p><strong>00:00.139</strong> total execution time for 2 files <strong>from deep_dive/relax/tutorials</strong>:</p>
<div class="docutils container">
<style scoped>
<link href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/5.3.0/css/bootstrap.min.css" rel="stylesheet" />
@@ -656,7 +656,7 @@ $(document).ready( function () {
</thead>
<tbody>
<tr class="row-even"><td><p><a class="reference internal" href="relax_creation.html#sphx-glr-deep-dive-relax-tutorials-relax-creation-py"><span class="std std-ref">Relax Creation</span></a> (<code class="docutils literal notranslate"><span class="pre">relax_creation.py</span></code>)</p></td>
-<td><p>00:00.170</p></td>
+<td><p>00:00.085</p></td>
<td><p>0.0</p></td>
</tr>
<tr class="row-odd"><td><p><a class="reference internal" href="relax_transformation.html#sphx-glr-deep-dive-relax-tutorials-relax-transformation-py"><span class="std std-ref">Transformation</span></a> (<code class="docutils literal notranslate"><span class="pre">relax_transformation.py</span></code>)</p></td>
diff --git a/docs/deep_dive/tensor_ir/tutorials/sg_execution_times.html b/docs/deep_dive/tensor_ir/tutorials/sg_execution_times.html
index 82f3dbb1b0e..2a9f9dec12f 100644
--- a/docs/deep_dive/tensor_ir/tutorials/sg_execution_times.html
+++ b/docs/deep_dive/tensor_ir/tutorials/sg_execution_times.html
@@ -634,7 +634,7 @@ document.write(`
<section id="computation-times">
<span id="sphx-glr-deep-dive-tensor-ir-tutorials-sg-execution-times"></span><h1>Computation times<a class="headerlink" href="#computation-times" title="Link to this heading">#</a></h1>
-<p><strong>00:00.750</strong> total execution time for 4 files <strong>from deep_dive/tensor_ir/tutorials</strong>:</p>
+<p><strong>00:00.529</strong> total execution time for 4 files <strong>from deep_dive/tensor_ir/tutorials</strong>:</p>
<div class="docutils container">
<style scoped>
<link href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/5.3.0/css/bootstrap.min.css" rel="stylesheet" />
@@ -656,15 +656,15 @@ $(document).ready( function () {
</thead>
<tbody>
<tr class="row-even"><td><p><a class="reference internal" href="tir_transformation.html#sphx-glr-deep-dive-tensor-ir-tutorials-tir-transformation-py"><span class="std std-ref">Transformation</span></a> (<code class="docutils literal notranslate"><span class="pre">tir_transformation.py</span></code>)</p></td>
-<td><p>00:00.312</p></td>
+<td><p>00:00.259</p></td>
<td><p>0.0</p></td>
</tr>
<tr class="row-odd"><td><p><a class="reference internal" href="tir_creation.html#sphx-glr-deep-dive-tensor-ir-tutorials-tir-creation-py"><span class="std std-ref">TensorIR Creation</span></a> (<code class="docutils literal notranslate"><span class="pre">tir_creation.py</span></code>)</p></td>
-<td><p>00:00.305</p></td>
+<td><p>00:00.138</p></td>
<td><p>0.0</p></td>
</tr>
<tr class="row-even"><td><p><a class="reference internal" href="dlight_gpu_scheduling.html#sphx-glr-deep-dive-tensor-ir-tutorials-dlight-gpu-scheduling-py"><span class="std std-ref">DLight: Rule-Based GPU Scheduling</span></a> (<code class="docutils literal notranslate"><span class="pre">dlight_gpu_scheduling.py</span></code>)</p></td>
-<td><p>00:00.125</p></td>
+<td><p>00:00.124</p></td>
<td><p>0.0</p></td>
</tr>
<tr class="row-odd"><td><p><a class="reference internal" href="meta_schedule.html#sphx-glr-deep-dive-tensor-ir-tutorials-meta-schedule-py"><span class="std std-ref">MetaSchedule: Search-Based Auto-Tuning</span></a> (<code class="docutils literal notranslate"><span class="pre">meta_schedule.py</span></code>)</p></td>
diff --git a/docs/deep_dive/tensor_ir/tutorials/tir_creation.html b/docs/deep_dive/tensor_ir/tutorials/tir_creation.html
index 0fe9132b327..02aa67e5902 100644
--- a/docs/deep_dive/tensor_ir/tutorials/tir_creation.html
+++ b/docs/deep_dive/tensor_ir/tutorials/tir_creation.html
@@ -696,31 +696,31 @@ format of the ir_module and in TVMScript:</p>
<span class="k">class</span><span class="w"> </span><span class="nc">MyModule</span><span class="p">:</span>
<span class="nd">@T</span><span class="o">.</span><span class="n">prim_func</span><span class="p">(</span><span class="n">s_tir</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
<span class="k">def</span><span class="w"> </span><span class="nf">mm_relu</span><span class="p">(</span>
- <a href="../../../reference/api/python/te.html#tvm.te.Tensor" title="tvm.te.Tensor" class="sphx-glr-backref-module-tvm-te sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">A</span></a><span class="p">:</span> <span class="n">T</span><span class="o">.</span><span class="n">Buffer</span><span class="p">((</span><span class="mi">128</span><span class="p">,</span> <span class="mi">128</span><span class="p">),</span> <span class="s2">"float32"</span>< [...]
- <a href="../../../reference/api/python/te.html#tvm.te.Tensor" title="tvm.te.Tensor" class="sphx-glr-backref-module-tvm-te sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">B</span></a><span class="p">:</span> <span class="n">T</span><span class="o">.</span><span class="n">Buffer</span><span class="p">((</span><span class="mi">128</span><span class="p">,</span> <span class="mi">128</span><span class="p">),</span> <span class="s2">"float32"</span>< [...]
- <a href="../../../reference/api/python/te.html#tvm.te.Tensor" title="tvm.te.Tensor" class="sphx-glr-backref-module-tvm-te sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">C</span></a><span class="p">:</span> <span class="n">T</span><span class="o">.</span><span class="n">Buffer</span><span class="p">((</span><span class="mi">128</span><span class="p">,</span> <span class="mi">128</span><span class="p">),</span> <span class="s2">"float32"</span>< [...]
+ <a href="../../../reference/api/python/te.html#tvm.te.Tensor" title="tvm.te.Tensor" class="sphx-glr-backref-module-tvm-te sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">A</span></a><span class="p">:</span> <a href="../../../tirx/api/tirx.html#tvm.tirx.Buffer" title="tvm.tirx.Buffer" class="sphx-glr-backref-module-tvm-tirx sphx-glr-backref-type-py-attribute"><span class="n">T</span><span class="o">.</span><span class="n">Buffer</span></a><span class="p"> [...]
+ <a href="../../../reference/api/python/te.html#tvm.te.Tensor" title="tvm.te.Tensor" class="sphx-glr-backref-module-tvm-te sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">B</span></a><span class="p">:</span> <a href="../../../tirx/api/tirx.html#tvm.tirx.Buffer" title="tvm.tirx.Buffer" class="sphx-glr-backref-module-tvm-tirx sphx-glr-backref-type-py-attribute"><span class="n">T</span><span class="o">.</span><span class="n">Buffer</span></a><span class="p"> [...]
+ <a href="../../../reference/api/python/te.html#tvm.te.Tensor" title="tvm.te.Tensor" class="sphx-glr-backref-module-tvm-te sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">C</span></a><span class="p">:</span> <a href="../../../tirx/api/tirx.html#tvm.tirx.Buffer" title="tvm.tirx.Buffer" class="sphx-glr-backref-module-tvm-tirx sphx-glr-backref-type-py-attribute"><span class="n">T</span><span class="o">.</span><span class="n">Buffer</span></a><span class="p"> [...]
<span class="p">):</span>
- <a href="../../../reference/api/python/te.html#tvm.te.Tensor" title="tvm.te.Tensor" class="sphx-glr-backref-module-tvm-te sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">Y</span></a> <span class="o">=</span> <span class="n">T</span><span class="o">.</span><span class="n">alloc_buffer</span><span class="p">((</span><span class="mi">128</span><span class="p">,</span> <span class="mi">128</span><span class="p">),</span> <a href="https://docs.python.org/3/bu [...]
+ <a href="../../../reference/api/python/te.html#tvm.te.Tensor" title="tvm.te.Tensor" class="sphx-glr-backref-module-tvm-te sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">Y</span></a> <span class="o">=</span> <a href="../../../reference/api/python/script/script.html#tvm.script.tirx.alloc_buffer" title="tvm.script.tirx.alloc_buffer" class="sphx-glr-backref-module-tvm-script-tirx sphx-glr-backref-type-py-function"><span class="n">T</span><span class="o">.</ [...]
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">128</span><span class="p">):</span>
<span class="k">for</span> <span class="n">j</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">128</span><span class="p">):</span>
<span class="k">for</span> <a href="../../../tirx/api/tirx.html#tvm.tirx.IterVar" title="tvm.tirx.IterVar" class="sphx-glr-backref-module-tvm-tirx sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">k</span></a> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">128</span><span class="p">):</span>
- <span class="k">with</span> <span class="n">T</span><span class="o">.</span><span class="n">sblock</span><span class="p">(</span><span class="s2">"Y"</span><span class="p">):</span>
- <span class="n">vi</span> <span class="o">=</span> <span class="n">T</span><span class="o">.</span><span class="n">axis</span><span class="o">.</span><span class="n">spatial</span><span class="p">(</span><span class="mi">128</span><span class="p">,</span> <span class="n">i</span><span class="p">)</span>
- <span class="n">vj</span> <span class="o">=</span> <span class="n">T</span><span class="o">.</span><span class="n">axis</span><span class="o">.</span><span class="n">spatial</span><span class="p">(</span><span class="mi">128</span><span class="p">,</span> <span class="n">j</span><span class="p">)</span>
- <span class="n">vk</span> <span class="o">=</span> <span class="n">T</span><span class="o">.</span><span class="n">axis</span><span class="o">.</span><span class="n">reduce</span><span class="p">(</span><span class="mi">128</span><span class="p">,</span> <a href="../../../tirx/api/tirx.html#tvm.tirx.IterVar" title="tvm.tirx.IterVar" class="sphx-glr-backref-module-tvm-tirx sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">k</span></a><span c [...]
- <span class="n">T</span><span class="o">.</span><span class="n">reads</span><span class="p">(</span><a href="../../../reference/api/python/te.html#tvm.te.Tensor" title="tvm.te.Tensor" class="sphx-glr-backref-module-tvm-te sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">A</span></a><span class="p">[</span><span class="n">vi</span><span class="p">,</span> <span class="n">vk</span><span class="p">],</span> <a href="../../../reference/api/pyt [...]
- <span class="n">T</span><span class="o">.</span><span class="n">writes</span><span class="p">(</span><a href="../../../reference/api/python/te.html#tvm.te.Tensor" title="tvm.te.Tensor" class="sphx-glr-backref-module-tvm-te sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">Y</span></a><span class="p">[</span><span class="n">vi</span><span class="p">,</span> <span class="n">vj</span><span class="p">])</span>
- <span class="k">with</span> <span class="n">T</span><span class="o">.</span><span class="n">init</span><span class="p">():</span>
+ <span class="k">with</span> <a href="../../../reference/api/python/script/script.html#tvm.script.tirx.sblock" title="tvm.script.tirx.sblock" class="sphx-glr-backref-module-tvm-script-tirx sphx-glr-backref-type-py-function"><span class="n">T</span><span class="o">.</span><span class="n">sblock</span></a><span class="p">(</span><span class="s2">"Y"</span><span class="p">):</span>
+ <span class="n">vi</span> <span class="o">=</span> <a href="../../../reference/api/python/script/script.html#tvm.script.tirx.axis.spatial" title="tvm.script.tirx.axis.spatial" class="sphx-glr-backref-module-tvm-script-tirx-axis sphx-glr-backref-type-py-method"><span class="n">T</span><span class="o">.</span><span class="n">axis</span><span class="o">.</span><span class="n">spatial</span></a><span class="p">(</span><span class="mi">128</span><span class="p">,</span [...]
+ <span class="n">vj</span> <span class="o">=</span> <a href="../../../reference/api/python/script/script.html#tvm.script.tirx.axis.spatial" title="tvm.script.tirx.axis.spatial" class="sphx-glr-backref-module-tvm-script-tirx-axis sphx-glr-backref-type-py-method"><span class="n">T</span><span class="o">.</span><span class="n">axis</span><span class="o">.</span><span class="n">spatial</span></a><span class="p">(</span><span class="mi">128</span><span class="p">,</span [...]
+ <span class="n">vk</span> <span class="o">=</span> <a href="../../../reference/api/python/script/script.html#tvm.script.tirx.axis.reduce" title="tvm.script.tirx.axis.reduce" class="sphx-glr-backref-module-tvm-script-tirx-axis sphx-glr-backref-type-py-method"><span class="n">T</span><span class="o">.</span><span class="n">axis</span><span class="o">.</span><span class="n">reduce</span></a><span class="p">(</span><span class="mi">128</span><span class="p">,</span> < [...]
+ <a href="../../../reference/api/python/script/script.html#tvm.script.tirx.reads" title="tvm.script.tirx.reads" class="sphx-glr-backref-module-tvm-script-tirx sphx-glr-backref-type-py-function"><span class="n">T</span><span class="o">.</span><span class="n">reads</span></a><span class="p">(</span><a href="../../../reference/api/python/te.html#tvm.te.Tensor" title="tvm.te.Tensor" class="sphx-glr-backref-module-tvm-te sphx-glr-backref-type-py-class sphx-glr-backref-i [...]
+ <a href="../../../reference/api/python/script/script.html#tvm.script.tirx.writes" title="tvm.script.tirx.writes" class="sphx-glr-backref-module-tvm-script-tirx sphx-glr-backref-type-py-function"><span class="n">T</span><span class="o">.</span><span class="n">writes</span></a><span class="p">(</span><a href="../../../reference/api/python/te.html#tvm.te.Tensor" title="tvm.te.Tensor" class="sphx-glr-backref-module-tvm-te sphx-glr-backref-type-py-class sphx-glr-backre [...]
+ <span class="k">with</span> <a href="../../../reference/api/python/script/script.html#tvm.script.tirx.init" title="tvm.script.tirx.init" class="sphx-glr-backref-module-tvm-script-tirx sphx-glr-backref-type-py-function"><span class="n">T</span><span class="o">.</span><span class="n">init</span></a><span class="p">():</span>
<a href="../../../reference/api/python/te.html#tvm.te.Tensor" title="tvm.te.Tensor" class="sphx-glr-backref-module-tvm-te sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">Y</span></a><span class="p">[</span><span class="n">vi</span><span class="p">,</span> <span class="n">vj</span><span class="p">]</span> <span class="o">=</span> <span class="n">T</span><span class="o">.</span><span class="n">float32</span><span class="p">(</span><span [...]
<a href="../../../reference/api/python/te.html#tvm.te.Tensor" title="tvm.te.Tensor" class="sphx-glr-backref-module-tvm-te sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">Y</span></a><span class="p">[</span><span class="n">vi</span><span class="p">,</span> <span class="n">vj</span><span class="p">]</span> <span class="o">=</span> <a href="../../../reference/api/python/te.html#tvm.te.Tensor" title="tvm.te.Tensor" class="sphx-glr-backref-mod [...]
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">128</span><span class="p">):</span>
<span class="k">for</span> <span class="n">j</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">128</span><span class="p">):</span>
- <span class="k">with</span> <span class="n">T</span><span class="o">.</span><span class="n">sblock</span><span class="p">(</span><span class="s2">"C"</span><span class="p">):</span>
- <span class="n">vi</span> <span class="o">=</span> <span class="n">T</span><span class="o">.</span><span class="n">axis</span><span class="o">.</span><span class="n">spatial</span><span class="p">(</span><span class="mi">128</span><span class="p">,</span> <span class="n">i</span><span class="p">)</span>
- <span class="n">vj</span> <span class="o">=</span> <span class="n">T</span><span class="o">.</span><span class="n">axis</span><span class="o">.</span><span class="n">spatial</span><span class="p">(</span><span class="mi">128</span><span class="p">,</span> <span class="n">j</span><span class="p">)</span>
- <span class="n">T</span><span class="o">.</span><span class="n">reads</span><span class="p">(</span><a href="../../../reference/api/python/te.html#tvm.te.Tensor" title="tvm.te.Tensor" class="sphx-glr-backref-module-tvm-te sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">Y</span></a><span class="p">[</span><span class="n">vi</span><span class="p">,</span> <span class="n">vj</span><span class="p">])</span>
- <span class="n">T</span><span class="o">.</span><span class="n">writes</span><span class="p">(</span><a href="../../../reference/api/python/te.html#tvm.te.Tensor" title="tvm.te.Tensor" class="sphx-glr-backref-module-tvm-te sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">C</span></a><span class="p">[</span><span class="n">vi</span><span class="p">,</span> <span class="n">vj</span><span class="p">])</span>
- <a href="../../../reference/api/python/te.html#tvm.te.Tensor" title="tvm.te.Tensor" class="sphx-glr-backref-module-tvm-te sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">C</span></a><span class="p">[</span><span class="n">vi</span><span class="p">,</span> <span class="n">vj</span><span class="p">]</span> <span class="o">=</span> <span class="n">T</span><span class="o">.</span><span class="n">max</span><span class="p">(</span><a href="../../.. [...]
+ <span class="k">with</span> <a href="../../../reference/api/python/script/script.html#tvm.script.tirx.sblock" title="tvm.script.tirx.sblock" class="sphx-glr-backref-module-tvm-script-tirx sphx-glr-backref-type-py-function"><span class="n">T</span><span class="o">.</span><span class="n">sblock</span></a><span class="p">(</span><span class="s2">"C"</span><span class="p">):</span>
+ <span class="n">vi</span> <span class="o">=</span> <a href="../../../reference/api/python/script/script.html#tvm.script.tirx.axis.spatial" title="tvm.script.tirx.axis.spatial" class="sphx-glr-backref-module-tvm-script-tirx-axis sphx-glr-backref-type-py-method"><span class="n">T</span><span class="o">.</span><span class="n">axis</span><span class="o">.</span><span class="n">spatial</span></a><span class="p">(</span><span class="mi">128</span><span class="p">,</span> <s [...]
+ <span class="n">vj</span> <span class="o">=</span> <a href="../../../reference/api/python/script/script.html#tvm.script.tirx.axis.spatial" title="tvm.script.tirx.axis.spatial" class="sphx-glr-backref-module-tvm-script-tirx-axis sphx-glr-backref-type-py-method"><span class="n">T</span><span class="o">.</span><span class="n">axis</span><span class="o">.</span><span class="n">spatial</span></a><span class="p">(</span><span class="mi">128</span><span class="p">,</span> <s [...]
+ <a href="../../../reference/api/python/script/script.html#tvm.script.tirx.reads" title="tvm.script.tirx.reads" class="sphx-glr-backref-module-tvm-script-tirx sphx-glr-backref-type-py-function"><span class="n">T</span><span class="o">.</span><span class="n">reads</span></a><span class="p">(</span><a href="../../../reference/api/python/te.html#tvm.te.Tensor" title="tvm.te.Tensor" class="sphx-glr-backref-module-tvm-te sphx-glr-backref-type-py-class sphx-glr-backref-insta [...]
+ <a href="../../../reference/api/python/script/script.html#tvm.script.tirx.writes" title="tvm.script.tirx.writes" class="sphx-glr-backref-module-tvm-script-tirx sphx-glr-backref-type-py-function"><span class="n">T</span><span class="o">.</span><span class="n">writes</span></a><span class="p">(</span><a href="../../../reference/api/python/te.html#tvm.te.Tensor" title="tvm.te.Tensor" class="sphx-glr-backref-module-tvm-te sphx-glr-backref-type-py-class sphx-glr-backref-in [...]
+ <a href="../../../reference/api/python/te.html#tvm.te.Tensor" title="tvm.te.Tensor" class="sphx-glr-backref-module-tvm-te sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">C</span></a><span class="p">[</span><span class="n">vi</span><span class="p">,</span> <span class="n">vj</span><span class="p">]</span> <span class="o">=</span> <a href="../../../reference/api/python/script/script.html#tvm.script.tirx.max" title="tvm.script.tirx.max" class="s [...]
</pre></div>
</div>
</section>
@@ -738,21 +738,21 @@ be inferred from the block body;</p></li>
<span class="k">class</span><span class="w"> </span><span class="nc">ConciseModule</span><span class="p">:</span>
<span class="nd">@T</span><span class="o">.</span><span class="n">prim_func</span><span class="p">(</span><span class="n">s_tir</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
<span class="k">def</span><span class="w"> </span><span class="nf">mm_relu</span><span class="p">(</span>
- <a href="../../../reference/api/python/te.html#tvm.te.Tensor" title="tvm.te.Tensor" class="sphx-glr-backref-module-tvm-te sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">A</span></a><span class="p">:</span> <span class="n">T</span><span class="o">.</span><span class="n">Buffer</span><span class="p">((</span><span class="mi">128</span><span class="p">,</span> <span class="mi">128</span><span class="p">),</span> <span class="s2">"float32"</span>< [...]
- <a href="../../../reference/api/python/te.html#tvm.te.Tensor" title="tvm.te.Tensor" class="sphx-glr-backref-module-tvm-te sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">B</span></a><span class="p">:</span> <span class="n">T</span><span class="o">.</span><span class="n">Buffer</span><span class="p">((</span><span class="mi">128</span><span class="p">,</span> <span class="mi">128</span><span class="p">),</span> <span class="s2">"float32"</span>< [...]
- <a href="../../../reference/api/python/te.html#tvm.te.Tensor" title="tvm.te.Tensor" class="sphx-glr-backref-module-tvm-te sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">C</span></a><span class="p">:</span> <span class="n">T</span><span class="o">.</span><span class="n">Buffer</span><span class="p">((</span><span class="mi">128</span><span class="p">,</span> <span class="mi">128</span><span class="p">),</span> <span class="s2">"float32"</span>< [...]
+ <a href="../../../reference/api/python/te.html#tvm.te.Tensor" title="tvm.te.Tensor" class="sphx-glr-backref-module-tvm-te sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">A</span></a><span class="p">:</span> <a href="../../../tirx/api/tirx.html#tvm.tirx.Buffer" title="tvm.tirx.Buffer" class="sphx-glr-backref-module-tvm-tirx sphx-glr-backref-type-py-attribute"><span class="n">T</span><span class="o">.</span><span class="n">Buffer</span></a><span class="p"> [...]
+ <a href="../../../reference/api/python/te.html#tvm.te.Tensor" title="tvm.te.Tensor" class="sphx-glr-backref-module-tvm-te sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">B</span></a><span class="p">:</span> <a href="../../../tirx/api/tirx.html#tvm.tirx.Buffer" title="tvm.tirx.Buffer" class="sphx-glr-backref-module-tvm-tirx sphx-glr-backref-type-py-attribute"><span class="n">T</span><span class="o">.</span><span class="n">Buffer</span></a><span class="p"> [...]
+ <a href="../../../reference/api/python/te.html#tvm.te.Tensor" title="tvm.te.Tensor" class="sphx-glr-backref-module-tvm-te sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">C</span></a><span class="p">:</span> <a href="../../../tirx/api/tirx.html#tvm.tirx.Buffer" title="tvm.tirx.Buffer" class="sphx-glr-backref-module-tvm-tirx sphx-glr-backref-type-py-attribute"><span class="n">T</span><span class="o">.</span><span class="n">Buffer</span></a><span class="p"> [...]
<span class="p">):</span>
- <a href="../../../reference/api/python/te.html#tvm.te.Tensor" title="tvm.te.Tensor" class="sphx-glr-backref-module-tvm-te sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">Y</span></a> <span class="o">=</span> <span class="n">T</span><span class="o">.</span><span class="n">alloc_buffer</span><span class="p">((</span><span class="mi">128</span><span class="p">,</span> <span class="mi">128</span><span class="p">),</span> <a href="https://docs.python.org/3/bu [...]
- <span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">j</span><span class="p">,</span> <a href="../../../tirx/api/tirx.html#tvm.tirx.IterVar" title="tvm.tirx.IterVar" class="sphx-glr-backref-module-tvm-tirx sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">k</span></a> <span class="ow">in</span> <span class="n">T</span><span class="o">.</span><span class="n">grid</span><span class="p">(</span><span class="mi">128</span [...]
- <span class="k">with</span> <span class="n">T</span><span class="o">.</span><span class="n">sblock</span><span class="p">(</span><span class="s2">"Y"</span><span class="p">):</span>
- <span class="n">vi</span><span class="p">,</span> <span class="n">vj</span><span class="p">,</span> <span class="n">vk</span> <span class="o">=</span> <span class="n">T</span><span class="o">.</span><span class="n">axis</span><span class="o">.</span><span class="n">remap</span><span class="p">(</span><span class="s2">"SSR"</span><span class="p">,</span> <span class="p">[</span><span class="n">i</span><span class="p">,</span> <span class="n">j</span><span class=" [...]
- <span class="k">with</span> <span class="n">T</span><span class="o">.</span><span class="n">init</span><span class="p">():</span>
+ <a href="../../../reference/api/python/te.html#tvm.te.Tensor" title="tvm.te.Tensor" class="sphx-glr-backref-module-tvm-te sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">Y</span></a> <span class="o">=</span> <a href="../../../reference/api/python/script/script.html#tvm.script.tirx.alloc_buffer" title="tvm.script.tirx.alloc_buffer" class="sphx-glr-backref-module-tvm-script-tirx sphx-glr-backref-type-py-function"><span class="n">T</span><span class="o">.</ [...]
+ <span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">j</span><span class="p">,</span> <a href="../../../tirx/api/tirx.html#tvm.tirx.IterVar" title="tvm.tirx.IterVar" class="sphx-glr-backref-module-tvm-tirx sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">k</span></a> <span class="ow">in</span> <a href="../../../reference/api/python/script/script.html#tvm.script.tirx.grid" title="tvm.script.tirx.grid" class="sphx-glr- [...]
+ <span class="k">with</span> <a href="../../../reference/api/python/script/script.html#tvm.script.tirx.sblock" title="tvm.script.tirx.sblock" class="sphx-glr-backref-module-tvm-script-tirx sphx-glr-backref-type-py-function"><span class="n">T</span><span class="o">.</span><span class="n">sblock</span></a><span class="p">(</span><span class="s2">"Y"</span><span class="p">):</span>
+ <span class="n">vi</span><span class="p">,</span> <span class="n">vj</span><span class="p">,</span> <span class="n">vk</span> <span class="o">=</span> <a href="../../../reference/api/python/script/script.html#tvm.script.tirx.axis.remap" title="tvm.script.tirx.axis.remap" class="sphx-glr-backref-module-tvm-script-tirx-axis sphx-glr-backref-type-py-method"><span class="n">T</span><span class="o">.</span><span class="n">axis</span><span class="o">.</span><span class="n">rema [...]
+ <span class="k">with</span> <a href="../../../reference/api/python/script/script.html#tvm.script.tirx.init" title="tvm.script.tirx.init" class="sphx-glr-backref-module-tvm-script-tirx sphx-glr-backref-type-py-function"><span class="n">T</span><span class="o">.</span><span class="n">init</span></a><span class="p">():</span>
<a href="../../../reference/api/python/te.html#tvm.te.Tensor" title="tvm.te.Tensor" class="sphx-glr-backref-module-tvm-te sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">Y</span></a><span class="p">[</span><span class="n">vi</span><span class="p">,</span> <span class="n">vj</span><span class="p">]</span> <span class="o">=</span> <span class="n">T</span><span class="o">.</span><span class="n">float32</span><span class="p">(</span><span class=" [...]
<a href="../../../reference/api/python/te.html#tvm.te.Tensor" title="tvm.te.Tensor" class="sphx-glr-backref-module-tvm-te sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">Y</span></a><span class="p">[</span><span class="n">vi</span><span class="p">,</span> <span class="n">vj</span><span class="p">]</span> <span class="o">=</span> <a href="../../../reference/api/python/te.html#tvm.te.Tensor" title="tvm.te.Tensor" class="sphx-glr-backref-module-tvm- [...]
- <span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">j</span> <span class="ow">in</span> <span class="n">T</span><span class="o">.</span><span class="n">grid</span><span class="p">(</span><span class="mi">128</span><span class="p">,</span> <span class="mi">128</span><span class="p">):</span>
- <span class="k">with</span> <span class="n">T</span><span class="o">.</span><span class="n">sblock</span><span class="p">(</span><span class="s2">"C"</span><span class="p">):</span>
- <span class="n">vi</span><span class="p">,</span> <span class="n">vj</span> <span class="o">=</span> <span class="n">T</span><span class="o">.</span><span class="n">axis</span><span class="o">.</span><span class="n">remap</span><span class="p">(</span><span class="s2">"SS"</span><span class="p">,</span> <span class="p">[</span><span class="n">i</span><span class="p">,</span> <span class="n">j</span><span class="p">])</span>
- <a href="../../../reference/api/python/te.html#tvm.te.Tensor" title="tvm.te.Tensor" class="sphx-glr-backref-module-tvm-te sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">C</span></a><span class="p">[</span><span class="n">vi</span><span class="p">,</span> <span class="n">vj</span><span class="p">]</span> <span class="o">=</span> <span class="n">T</span><span class="o">.</span><span class="n">max</span><span class="p">(</span><a href="../../../ref [...]
+ <span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">j</span> <span class="ow">in</span> <a href="../../../reference/api/python/script/script.html#tvm.script.tirx.grid" title="tvm.script.tirx.grid" class="sphx-glr-backref-module-tvm-script-tirx sphx-glr-backref-type-py-function"><span class="n">T</span><span class="o">.</span><span class="n">grid</span></a><span class="p">(</span><span class="mi">128</span><span class="p">,</span> <span clas [...]
+ <span class="k">with</span> <a href="../../../reference/api/python/script/script.html#tvm.script.tirx.sblock" title="tvm.script.tirx.sblock" class="sphx-glr-backref-module-tvm-script-tirx sphx-glr-backref-type-py-function"><span class="n">T</span><span class="o">.</span><span class="n">sblock</span></a><span class="p">(</span><span class="s2">"C"</span><span class="p">):</span>
+ <span class="n">vi</span><span class="p">,</span> <span class="n">vj</span> <span class="o">=</span> <a href="../../../reference/api/python/script/script.html#tvm.script.tirx.axis.remap" title="tvm.script.tirx.axis.remap" class="sphx-glr-backref-module-tvm-script-tirx-axis sphx-glr-backref-type-py-method"><span class="n">T</span><span class="o">.</span><span class="n">axis</span><span class="o">.</span><span class="n">remap</span></a><span class="p">(</span><span class="s [...]
+ <a href="../../../reference/api/python/te.html#tvm.te.Tensor" title="tvm.te.Tensor" class="sphx-glr-backref-module-tvm-te sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">C</span></a><span class="p">[</span><span class="n">vi</span><span class="p">,</span> <span class="n">vj</span><span class="p">]</span> <span class="o">=</span> <a href="../../../reference/api/python/script/script.html#tvm.script.tirx.max" title="tvm.script.tirx.max" class="sphx- [...]
</pre></div>
</div>
<p>We can use the following code to verify that the two modules are equivalent:</p>
@@ -778,21 +778,21 @@ be used to ascertain the shape and data type of a TensorIR.</p>
<span class="k">class</span><span class="w"> </span><span class="nc">ConciseModuleFromPython</span><span class="p">:</span>
<span class="nd">@T</span><span class="o">.</span><span class="n">prim_func</span><span class="p">(</span><span class="n">s_tir</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
<span class="k">def</span><span class="w"> </span><span class="nf">mm_relu</span><span class="p">(</span>
- <a href="../../../reference/api/python/te.html#tvm.te.Tensor" title="tvm.te.Tensor" class="sphx-glr-backref-module-tvm-te sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">A</span></a><span class="p">:</span> <span class="n">T</span><span class="o">.</span><span class="n">Buffer</span><span class="p">((</span><a href="../../../reference/api/python/ir.html#tvm.ir.Var" title="tvm.ir.Var" class="sphx-glr-backref-module-tvm-ir sphx-glr-backref-type-py-class sp [...]
- <a href="../../../reference/api/python/te.html#tvm.te.Tensor" title="tvm.te.Tensor" class="sphx-glr-backref-module-tvm-te sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">B</span></a><span class="p">:</span> <span class="n">T</span><span class="o">.</span><span class="n">Buffer</span><span class="p">((</span><a href="../../../reference/api/python/ir.html#tvm.ir.Var" title="tvm.ir.Var" class="sphx-glr-backref-module-tvm-ir sphx-glr-backref-type-py-class sp [...]
- <a href="../../../reference/api/python/te.html#tvm.te.Tensor" title="tvm.te.Tensor" class="sphx-glr-backref-module-tvm-te sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">C</span></a><span class="p">:</span> <span class="n">T</span><span class="o">.</span><span class="n">Buffer</span><span class="p">((</span><a href="../../../reference/api/python/ir.html#tvm.ir.Var" title="tvm.ir.Var" class="sphx-glr-backref-module-tvm-ir sphx-glr-backref-type-py-class sp [...]
+ <a href="../../../reference/api/python/te.html#tvm.te.Tensor" title="tvm.te.Tensor" class="sphx-glr-backref-module-tvm-te sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">A</span></a><span class="p">:</span> <a href="../../../tirx/api/tirx.html#tvm.tirx.Buffer" title="tvm.tirx.Buffer" class="sphx-glr-backref-module-tvm-tirx sphx-glr-backref-type-py-attribute"><span class="n">T</span><span class="o">.</span><span class="n">Buffer</span></a><span class="p"> [...]
+ <a href="../../../reference/api/python/te.html#tvm.te.Tensor" title="tvm.te.Tensor" class="sphx-glr-backref-module-tvm-te sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">B</span></a><span class="p">:</span> <a href="../../../tirx/api/tirx.html#tvm.tirx.Buffer" title="tvm.tirx.Buffer" class="sphx-glr-backref-module-tvm-tirx sphx-glr-backref-type-py-attribute"><span class="n">T</span><span class="o">.</span><span class="n">Buffer</span></a><span class="p"> [...]
+ <a href="../../../reference/api/python/te.html#tvm.te.Tensor" title="tvm.te.Tensor" class="sphx-glr-backref-module-tvm-te sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">C</span></a><span class="p">:</span> <a href="../../../tirx/api/tirx.html#tvm.tirx.Buffer" title="tvm.tirx.Buffer" class="sphx-glr-backref-module-tvm-tirx sphx-glr-backref-type-py-attribute"><span class="n">T</span><span class="o">.</span><span class="n">Buffer</span></a><span class="p"> [...]
<span class="p">):</span>
- <a href="../../../reference/api/python/te.html#tvm.te.Tensor" title="tvm.te.Tensor" class="sphx-glr-backref-module-tvm-te sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">Y</span></a> <span class="o">=</span> <span class="n">T</span><span class="o">.</span><span class="n">alloc_buffer</span><span class="p">((</span><a href="../../../reference/api/python/ir.html#tvm.ir.Var" title="tvm.ir.Var" class="sphx-glr-backref-module-tvm-ir sphx-glr-backref-type-py-c [...]
- <span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">j</span><span class="p">,</span> <a href="../../../tirx/api/tirx.html#tvm.tirx.IterVar" title="tvm.tirx.IterVar" class="sphx-glr-backref-module-tvm-tirx sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">k</span></a> <span class="ow">in</span> <span class="n">T</span><span class="o">.</span><span class="n">grid</span><span class="p">(</span><a href="../../../referenc [...]
- <span class="k">with</span> <span class="n">T</span><span class="o">.</span><span class="n">sblock</span><span class="p">(</span><span class="s2">"Y"</span><span class="p">):</span>
- <span class="n">vi</span><span class="p">,</span> <span class="n">vj</span><span class="p">,</span> <span class="n">vk</span> <span class="o">=</span> <span class="n">T</span><span class="o">.</span><span class="n">axis</span><span class="o">.</span><span class="n">remap</span><span class="p">(</span><span class="s2">"SSR"</span><span class="p">,</span> <span class="p">[</span><span class="n">i</span><span class="p">,</span> <span class="n">j</span><span class=" [...]
- <span class="k">with</span> <span class="n">T</span><span class="o">.</span><span class="n">init</span><span class="p">():</span>
- <a href="../../../reference/api/python/te.html#tvm.te.Tensor" title="tvm.te.Tensor" class="sphx-glr-backref-module-tvm-te sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">Y</span></a><span class="p">[</span><span class="n">vi</span><span class="p">,</span> <span class="n">vj</span><span class="p">]</span> <span class="o">=</span> <span class="n">T</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span><span class="n"> [...]
+ <a href="../../../reference/api/python/te.html#tvm.te.Tensor" title="tvm.te.Tensor" class="sphx-glr-backref-module-tvm-te sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">Y</span></a> <span class="o">=</span> <a href="../../../reference/api/python/script/script.html#tvm.script.tirx.alloc_buffer" title="tvm.script.tirx.alloc_buffer" class="sphx-glr-backref-module-tvm-script-tirx sphx-glr-backref-type-py-function"><span class="n">T</span><span class="o">.</ [...]
+ <span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">j</span><span class="p">,</span> <a href="../../../tirx/api/tirx.html#tvm.tirx.IterVar" title="tvm.tirx.IterVar" class="sphx-glr-backref-module-tvm-tirx sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">k</span></a> <span class="ow">in</span> <a href="../../../reference/api/python/script/script.html#tvm.script.tirx.grid" title="tvm.script.tirx.grid" class="sphx-glr- [...]
+ <span class="k">with</span> <a href="../../../reference/api/python/script/script.html#tvm.script.tirx.sblock" title="tvm.script.tirx.sblock" class="sphx-glr-backref-module-tvm-script-tirx sphx-glr-backref-type-py-function"><span class="n">T</span><span class="o">.</span><span class="n">sblock</span></a><span class="p">(</span><span class="s2">"Y"</span><span class="p">):</span>
+ <span class="n">vi</span><span class="p">,</span> <span class="n">vj</span><span class="p">,</span> <span class="n">vk</span> <span class="o">=</span> <a href="../../../reference/api/python/script/script.html#tvm.script.tirx.axis.remap" title="tvm.script.tirx.axis.remap" class="sphx-glr-backref-module-tvm-script-tirx-axis sphx-glr-backref-type-py-method"><span class="n">T</span><span class="o">.</span><span class="n">axis</span><span class="o">.</span><span class="n">rema [...]
+ <span class="k">with</span> <a href="../../../reference/api/python/script/script.html#tvm.script.tirx.init" title="tvm.script.tirx.init" class="sphx-glr-backref-module-tvm-script-tirx sphx-glr-backref-type-py-function"><span class="n">T</span><span class="o">.</span><span class="n">init</span></a><span class="p">():</span>
+ <a href="../../../reference/api/python/te.html#tvm.te.Tensor" title="tvm.te.Tensor" class="sphx-glr-backref-module-tvm-te sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">Y</span></a><span class="p">[</span><span class="n">vi</span><span class="p">,</span> <span class="n">vj</span><span class="p">]</span> <span class="o">=</span> <a href="../../../reference/api/python/script/script.html#tvm.script.tirx.cast" title="tvm.script.tirx.cast" class= [...]
<a href="../../../reference/api/python/te.html#tvm.te.Tensor" title="tvm.te.Tensor" class="sphx-glr-backref-module-tvm-te sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">Y</span></a><span class="p">[</span><span class="n">vi</span><span class="p">,</span> <span class="n">vj</span><span class="p">]</span> <span class="o">=</span> <a href="../../../reference/api/python/te.html#tvm.te.Tensor" title="tvm.te.Tensor" class="sphx-glr-backref-module-tvm- [...]
- <span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">j</span> <span class="ow">in</span> <span class="n">T</span><span class="o">.</span><span class="n">grid</span><span class="p">(</span><a href="../../../reference/api/python/ir.html#tvm.ir.Var" title="tvm.ir.Var" class="sphx-glr-backref-module-tvm-ir sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">M</span></a><span class="p">,</span> <a href="../../../reference/ap [...]
- <span class="k">with</span> <span class="n">T</span><span class="o">.</span><span class="n">sblock</span><span class="p">(</span><span class="s2">"C"</span><span class="p">):</span>
- <span class="n">vi</span><span class="p">,</span> <span class="n">vj</span> <span class="o">=</span> <span class="n">T</span><span class="o">.</span><span class="n">axis</span><span class="o">.</span><span class="n">remap</span><span class="p">(</span><span class="s2">"SS"</span><span class="p">,</span> <span class="p">[</span><span class="n">i</span><span class="p">,</span> <span class="n">j</span><span class="p">])</span>
- <a href="../../../reference/api/python/te.html#tvm.te.Tensor" title="tvm.te.Tensor" class="sphx-glr-backref-module-tvm-te sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">C</span></a><span class="p">[</span><span class="n">vi</span><span class="p">,</span> <span class="n">vj</span><span class="p">]</span> <span class="o">=</span> <span class="n">T</span><span class="o">.</span><span class="n">max</span><span class="p">(</span><a href="../../../ref [...]
+ <span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">j</span> <span class="ow">in</span> <a href="../../../reference/api/python/script/script.html#tvm.script.tirx.grid" title="tvm.script.tirx.grid" class="sphx-glr-backref-module-tvm-script-tirx sphx-glr-backref-type-py-function"><span class="n">T</span><span class="o">.</span><span class="n">grid</span></a><span class="p">(</span><a href="../../../reference/api/python/ir.html#tvm.ir.Var" tit [...]
+ <span class="k">with</span> <a href="../../../reference/api/python/script/script.html#tvm.script.tirx.sblock" title="tvm.script.tirx.sblock" class="sphx-glr-backref-module-tvm-script-tirx sphx-glr-backref-type-py-function"><span class="n">T</span><span class="o">.</span><span class="n">sblock</span></a><span class="p">(</span><span class="s2">"C"</span><span class="p">):</span>
+ <span class="n">vi</span><span class="p">,</span> <span class="n">vj</span> <span class="o">=</span> <a href="../../../reference/api/python/script/script.html#tvm.script.tirx.axis.remap" title="tvm.script.tirx.axis.remap" class="sphx-glr-backref-module-tvm-script-tirx-axis sphx-glr-backref-type-py-method"><span class="n">T</span><span class="o">.</span><span class="n">axis</span><span class="o">.</span><span class="n">remap</span></a><span class="p">(</span><span class="s [...]
+ <a href="../../../reference/api/python/te.html#tvm.te.Tensor" title="tvm.te.Tensor" class="sphx-glr-backref-module-tvm-te sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">C</span></a><span class="p">[</span><span class="n">vi</span><span class="p">,</span> <span class="n">vj</span><span class="p">]</span> <span class="o">=</span> <a href="../../../reference/api/python/script/script.html#tvm.script.tirx.max" title="tvm.script.tirx.max" class="sphx- [...]
</pre></div>
</div>
<p>Check the equivalence:</p>
@@ -811,27 +811,27 @@ be used to ascertain the shape and data type of a TensorIR.</p>
<div class="highlight-Python notranslate"><div class="highlight"><pre><span></span><span class="nd">@I</span><span class="o">.</span><span class="n">ir_module</span>
<span class="k">class</span><span class="w"> </span><span class="nc">DynamicShapeModule</span><span class="p">:</span>
<span class="nd">@T</span><span class="o">.</span><span class="n">prim_func</span><span class="p">(</span><span class="n">s_tir</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
- <span class="k">def</span><span class="w"> </span><span class="nf">mm_relu</span><span class="p">(</span><span class="n">a</span><span class="p">:</span> <span class="n">T</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="n">b</span><span class="p">:</span> <span class="n">T</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="n">c</span><span class="p">:</span> <span class="n">T</span><span cl [...]
+ <span class="k">def</span><span class="w"> </span><span class="nf">mm_relu</span><span class="p">(</span><span class="n">a</span><span class="p">:</span> <a href="../../../reference/api/python/script/script.html#tvm.script.tirx.handle" title="tvm.script.tirx.handle" class="sphx-glr-backref-module-tvm-script-tirx sphx-glr-backref-type-py-function"><span class="n">T</span><span class="o">.</span><span class="n">handle</span></a><span class="p">,</span> <span class="n">b</span><span cla [...]
<span class="c1"># Dynamic shape definition</span>
<a href="../../../reference/api/python/ir.html#tvm.ir.Var" title="tvm.ir.Var" class="sphx-glr-backref-module-tvm-ir sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">M</span></a> <span class="o">=</span> <span class="n">T</span><span class="o">.</span><span class="n">int32</span><span class="p">()</span>
<a href="../../../reference/api/python/ir.html#tvm.ir.Var" title="tvm.ir.Var" class="sphx-glr-backref-module-tvm-ir sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">N</span></a> <span class="o">=</span> <span class="n">T</span><span class="o">.</span><span class="n">int32</span><span class="p">()</span>
<a href="../../../reference/api/python/ir.html#tvm.ir.Var" title="tvm.ir.Var" class="sphx-glr-backref-module-tvm-ir sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">K</span></a> <span class="o">=</span> <span class="n">T</span><span class="o">.</span><span class="n">int32</span><span class="p">()</span>
<span class="c1"># Bind the input buffers with the dynamic shapes</span>
- <a href="../../../reference/api/python/te.html#tvm.te.Tensor" title="tvm.te.Tensor" class="sphx-glr-backref-module-tvm-te sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">A</span></a> <span class="o">=</span> <span class="n">T</span><span class="o">.</span><span class="n">match_buffer</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="p">[</span><a href="../../../reference/api/python/ir.html#tvm.ir.Var" title="tvm. [...]
- <a href="../../../reference/api/python/te.html#tvm.te.Tensor" title="tvm.te.Tensor" class="sphx-glr-backref-module-tvm-te sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">B</span></a> <span class="o">=</span> <span class="n">T</span><span class="o">.</span><span class="n">match_buffer</span><span class="p">(</span><span class="n">b</span><span class="p">,</span> <span class="p">[</span><a href="../../../reference/api/python/ir.html#tvm.ir.Var" title="tvm. [...]
- <a href="../../../reference/api/python/te.html#tvm.te.Tensor" title="tvm.te.Tensor" class="sphx-glr-backref-module-tvm-te sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">C</span></a> <span class="o">=</span> <span class="n">T</span><span class="o">.</span><span class="n">match_buffer</span><span class="p">(</span><span class="n">c</span><span class="p">,</span> <span class="p">[</span><a href="../../../reference/api/python/ir.html#tvm.ir.Var" title="tvm. [...]
- <a href="../../../reference/api/python/te.html#tvm.te.Tensor" title="tvm.te.Tensor" class="sphx-glr-backref-module-tvm-te sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">Y</span></a> <span class="o">=</span> <span class="n">T</span><span class="o">.</span><span class="n">alloc_buffer</span><span class="p">((</span><a href="../../../reference/api/python/ir.html#tvm.ir.Var" title="tvm.ir.Var" class="sphx-glr-backref-module-tvm-ir sphx-glr-backref-type-py-c [...]
- <span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">j</span><span class="p">,</span> <a href="../../../tirx/api/tirx.html#tvm.tirx.IterVar" title="tvm.tirx.IterVar" class="sphx-glr-backref-module-tvm-tirx sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">k</span></a> <span class="ow">in</span> <span class="n">T</span><span class="o">.</span><span class="n">grid</span><span class="p">(</span><a href="../../../referenc [...]
- <span class="k">with</span> <span class="n">T</span><span class="o">.</span><span class="n">sblock</span><span class="p">(</span><span class="s2">"Y"</span><span class="p">):</span>
- <span class="n">vi</span><span class="p">,</span> <span class="n">vj</span><span class="p">,</span> <span class="n">vk</span> <span class="o">=</span> <span class="n">T</span><span class="o">.</span><span class="n">axis</span><span class="o">.</span><span class="n">remap</span><span class="p">(</span><span class="s2">"SSR"</span><span class="p">,</span> <span class="p">[</span><span class="n">i</span><span class="p">,</span> <span class="n">j</span><span class=" [...]
- <span class="k">with</span> <span class="n">T</span><span class="o">.</span><span class="n">init</span><span class="p">():</span>
- <a href="../../../reference/api/python/te.html#tvm.te.Tensor" title="tvm.te.Tensor" class="sphx-glr-backref-module-tvm-te sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">Y</span></a><span class="p">[</span><span class="n">vi</span><span class="p">,</span> <span class="n">vj</span><span class="p">]</span> <span class="o">=</span> <span class="n">T</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span><span class="n"> [...]
+ <a href="../../../reference/api/python/te.html#tvm.te.Tensor" title="tvm.te.Tensor" class="sphx-glr-backref-module-tvm-te sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">A</span></a> <span class="o">=</span> <a href="../../../reference/api/python/script/script.html#tvm.script.tirx.match_buffer" title="tvm.script.tirx.match_buffer" class="sphx-glr-backref-module-tvm-script-tirx sphx-glr-backref-type-py-function"><span class="n">T</span><span class="o">.</ [...]
+ <a href="../../../reference/api/python/te.html#tvm.te.Tensor" title="tvm.te.Tensor" class="sphx-glr-backref-module-tvm-te sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">B</span></a> <span class="o">=</span> <a href="../../../reference/api/python/script/script.html#tvm.script.tirx.match_buffer" title="tvm.script.tirx.match_buffer" class="sphx-glr-backref-module-tvm-script-tirx sphx-glr-backref-type-py-function"><span class="n">T</span><span class="o">.</ [...]
+ <a href="../../../reference/api/python/te.html#tvm.te.Tensor" title="tvm.te.Tensor" class="sphx-glr-backref-module-tvm-te sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">C</span></a> <span class="o">=</span> <a href="../../../reference/api/python/script/script.html#tvm.script.tirx.match_buffer" title="tvm.script.tirx.match_buffer" class="sphx-glr-backref-module-tvm-script-tirx sphx-glr-backref-type-py-function"><span class="n">T</span><span class="o">.</ [...]
+ <a href="../../../reference/api/python/te.html#tvm.te.Tensor" title="tvm.te.Tensor" class="sphx-glr-backref-module-tvm-te sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">Y</span></a> <span class="o">=</span> <a href="../../../reference/api/python/script/script.html#tvm.script.tirx.alloc_buffer" title="tvm.script.tirx.alloc_buffer" class="sphx-glr-backref-module-tvm-script-tirx sphx-glr-backref-type-py-function"><span class="n">T</span><span class="o">.</ [...]
+ <span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">j</span><span class="p">,</span> <a href="../../../tirx/api/tirx.html#tvm.tirx.IterVar" title="tvm.tirx.IterVar" class="sphx-glr-backref-module-tvm-tirx sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">k</span></a> <span class="ow">in</span> <a href="../../../reference/api/python/script/script.html#tvm.script.tirx.grid" title="tvm.script.tirx.grid" class="sphx-glr- [...]
+ <span class="k">with</span> <a href="../../../reference/api/python/script/script.html#tvm.script.tirx.sblock" title="tvm.script.tirx.sblock" class="sphx-glr-backref-module-tvm-script-tirx sphx-glr-backref-type-py-function"><span class="n">T</span><span class="o">.</span><span class="n">sblock</span></a><span class="p">(</span><span class="s2">"Y"</span><span class="p">):</span>
+ <span class="n">vi</span><span class="p">,</span> <span class="n">vj</span><span class="p">,</span> <span class="n">vk</span> <span class="o">=</span> <a href="../../../reference/api/python/script/script.html#tvm.script.tirx.axis.remap" title="tvm.script.tirx.axis.remap" class="sphx-glr-backref-module-tvm-script-tirx-axis sphx-glr-backref-type-py-method"><span class="n">T</span><span class="o">.</span><span class="n">axis</span><span class="o">.</span><span class="n">rema [...]
+ <span class="k">with</span> <a href="../../../reference/api/python/script/script.html#tvm.script.tirx.init" title="tvm.script.tirx.init" class="sphx-glr-backref-module-tvm-script-tirx sphx-glr-backref-type-py-function"><span class="n">T</span><span class="o">.</span><span class="n">init</span></a><span class="p">():</span>
+ <a href="../../../reference/api/python/te.html#tvm.te.Tensor" title="tvm.te.Tensor" class="sphx-glr-backref-module-tvm-te sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">Y</span></a><span class="p">[</span><span class="n">vi</span><span class="p">,</span> <span class="n">vj</span><span class="p">]</span> <span class="o">=</span> <a href="../../../reference/api/python/script/script.html#tvm.script.tirx.cast" title="tvm.script.tirx.cast" class= [...]
<a href="../../../reference/api/python/te.html#tvm.te.Tensor" title="tvm.te.Tensor" class="sphx-glr-backref-module-tvm-te sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">Y</span></a><span class="p">[</span><span class="n">vi</span><span class="p">,</span> <span class="n">vj</span><span class="p">]</span> <span class="o">=</span> <a href="../../../reference/api/python/te.html#tvm.te.Tensor" title="tvm.te.Tensor" class="sphx-glr-backref-module-tvm- [...]
- <span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">j</span> <span class="ow">in</span> <span class="n">T</span><span class="o">.</span><span class="n">grid</span><span class="p">(</span><a href="../../../reference/api/python/ir.html#tvm.ir.Var" title="tvm.ir.Var" class="sphx-glr-backref-module-tvm-ir sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">M</span></a><span class="p">,</span> <a href="../../../reference/ap [...]
- <span class="k">with</span> <span class="n">T</span><span class="o">.</span><span class="n">sblock</span><span class="p">(</span><span class="s2">"C"</span><span class="p">):</span>
- <span class="n">vi</span><span class="p">,</span> <span class="n">vj</span> <span class="o">=</span> <span class="n">T</span><span class="o">.</span><span class="n">axis</span><span class="o">.</span><span class="n">remap</span><span class="p">(</span><span class="s2">"SS"</span><span class="p">,</span> <span class="p">[</span><span class="n">i</span><span class="p">,</span> <span class="n">j</span><span class="p">])</span>
- <a href="../../../reference/api/python/te.html#tvm.te.Tensor" title="tvm.te.Tensor" class="sphx-glr-backref-module-tvm-te sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">C</span></a><span class="p">[</span><span class="n">vi</span><span class="p">,</span> <span class="n">vj</span><span class="p">]</span> <span class="o">=</span> <span class="n">T</span><span class="o">.</span><span class="n">max</span><span class="p">(</span><a href="../../../ref [...]
+ <span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">j</span> <span class="ow">in</span> <a href="../../../reference/api/python/script/script.html#tvm.script.tirx.grid" title="tvm.script.tirx.grid" class="sphx-glr-backref-module-tvm-script-tirx sphx-glr-backref-type-py-function"><span class="n">T</span><span class="o">.</span><span class="n">grid</span></a><span class="p">(</span><a href="../../../reference/api/python/ir.html#tvm.ir.Var" tit [...]
+ <span class="k">with</span> <a href="../../../reference/api/python/script/script.html#tvm.script.tirx.sblock" title="tvm.script.tirx.sblock" class="sphx-glr-backref-module-tvm-script-tirx sphx-glr-backref-type-py-function"><span class="n">T</span><span class="o">.</span><span class="n">sblock</span></a><span class="p">(</span><span class="s2">"C"</span><span class="p">):</span>
+ <span class="n">vi</span><span class="p">,</span> <span class="n">vj</span> <span class="o">=</span> <a href="../../../reference/api/python/script/script.html#tvm.script.tirx.axis.remap" title="tvm.script.tirx.axis.remap" class="sphx-glr-backref-module-tvm-script-tirx-axis sphx-glr-backref-type-py-method"><span class="n">T</span><span class="o">.</span><span class="n">axis</span><span class="o">.</span><span class="n">remap</span></a><span class="p">(</span><span class="s [...]
+ <a href="../../../reference/api/python/te.html#tvm.te.Tensor" title="tvm.te.Tensor" class="sphx-glr-backref-module-tvm-te sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">C</span></a><span class="p">[</span><span class="n">vi</span><span class="p">,</span> <span class="n">vj</span><span class="p">]</span> <span class="o">=</span> <a href="../../../reference/api/python/script/script.html#tvm.script.tirx.max" title="tvm.script.tirx.max" class="sphx- [...]
</pre></div>
</div>
<p>Now let’s check the runtime dynamic shape inference:</p>
@@ -960,7 +960,7 @@ is that we need to specify the shape of the input tensors as symbolic variables.
@I.ir_module
class Module:
@T.prim_func(s_tir=True)
- def mm_relu(A: T.Buffer(("m", "n"), "float32"), B: T.Buffer(("k", n), "float32"), C: T.Buffer((m, n), "float32")):
+ def mm_relu(A: T.Buffer(("m", "n"), "float32"), B: T.Buffer(("k", "n"), "float32"), C: T.Buffer(("m", "n"), "float32")):
m, n = T.int32(), T.int32()
k = T.int32()
T.func_attr({"tirx.noalias": True})
diff --git a/docs/deep_dive/tensor_ir/tutorials/tir_transformation.html b/docs/deep_dive/tensor_ir/tutorials/tir_transformation.html
index 6f9bfd392f8..be5223c85f3 100644
--- a/docs/deep_dive/tensor_ir/tutorials/tir_transformation.html
+++ b/docs/deep_dive/tensor_ir/tutorials/tir_transformation.html
@@ -672,25 +672,25 @@ rather than delving into optimization techniques.</p>
<span class="k">class</span><span class="w"> </span><span class="nc">MyModule</span><span class="p">:</span>
<span class="nd">@T</span><span class="o">.</span><span class="n">prim_func</span><span class="p">(</span><span class="n">s_tir</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
<span class="k">def</span><span class="w"> </span><span class="nf">main</span><span class="p">(</span>
- <span class="n">A</span><span class="p">:</span> <span class="n">T</span><span class="o">.</span><span class="n">Buffer</span><span class="p">((</span><span class="mi">128</span><span class="p">,</span> <span class="mi">128</span><span class="p">),</span> <span class="s2">"float32"</span><span class="p">),</span>
- <span class="n">B</span><span class="p">:</span> <span class="n">T</span><span class="o">.</span><span class="n">Buffer</span><span class="p">((</span><span class="mi">128</span><span class="p">,</span> <span class="mi">128</span><span class="p">),</span> <span class="s2">"float32"</span><span class="p">),</span>
- <span class="n">C</span><span class="p">:</span> <span class="n">T</span><span class="o">.</span><span class="n">Buffer</span><span class="p">((</span><span class="mi">128</span><span class="p">,</span> <span class="mi">128</span><span class="p">),</span> <span class="s2">"float32"</span><span class="p">),</span>
+ <span class="n">A</span><span class="p">:</span> <a href="../../../tirx/api/tirx.html#tvm.tirx.Buffer" title="tvm.tirx.Buffer" class="sphx-glr-backref-module-tvm-tirx sphx-glr-backref-type-py-attribute"><span class="n">T</span><span class="o">.</span><span class="n">Buffer</span></a><span class="p">((</span><span class="mi">128</span><span class="p">,</span> <span class="mi">128</span><span class="p">),</span> <span class="s2">"float32"</span><span class="p">),</span>
+ <span class="n">B</span><span class="p">:</span> <a href="../../../tirx/api/tirx.html#tvm.tirx.Buffer" title="tvm.tirx.Buffer" class="sphx-glr-backref-module-tvm-tirx sphx-glr-backref-type-py-attribute"><span class="n">T</span><span class="o">.</span><span class="n">Buffer</span></a><span class="p">((</span><span class="mi">128</span><span class="p">,</span> <span class="mi">128</span><span class="p">),</span> <span class="s2">"float32"</span><span class="p">),</span>
+ <span class="n">C</span><span class="p">:</span> <a href="../../../tirx/api/tirx.html#tvm.tirx.Buffer" title="tvm.tirx.Buffer" class="sphx-glr-backref-module-tvm-tirx sphx-glr-backref-type-py-attribute"><span class="n">T</span><span class="o">.</span><span class="n">Buffer</span></a><span class="p">((</span><span class="mi">128</span><span class="p">,</span> <span class="mi">128</span><span class="p">),</span> <span class="s2">"float32"</span><span class="p">),</span>
<span class="p">):</span>
- <span class="n">T</span><span class="o">.</span><span class="n">func_attr</span><span class="p">({</span><span class="s2">"tirx.noalias"</span><span class="p">:</span> <span class="kc">True</span><span class="p">})</span>
- <span class="k">with</span> <span class="n">T</span><span class="o">.</span><span class="n">sblock</span><span class="p">(</span><span class="s2">"root"</span><span class="p">):</span>
- <span class="n">T</span><span class="o">.</span><span class="n">reads</span><span class="p">()</span>
- <span class="n">T</span><span class="o">.</span><span class="n">writes</span><span class="p">()</span>
- <span class="n">Y</span> <span class="o">=</span> <span class="n">T</span><span class="o">.</span><span class="n">sblock_alloc_buffer</span><span class="p">((</span><span class="mi">128</span><span class="p">,</span> <span class="mi">128</span><span class="p">))</span>
- <span class="k">for</span> <a href="../../../reference/api/python/s_tir/schedule.html#tvm.s_tir.schedule.LoopRV" title="tvm.s_tir.schedule.LoopRV" class="sphx-glr-backref-module-tvm-s_tir-schedule sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">i</span></a><span class="p">,</span> <a href="../../../reference/api/python/s_tir/schedule.html#tvm.s_tir.schedule.LoopRV" title="tvm.s_tir.schedule.LoopRV" class="sphx-glr-backref-module-tvm-s_tir-schedule sp [...]
- <span class="k">with</span> <span class="n">T</span><span class="o">.</span><span class="n">sblock</span><span class="p">(</span><span class="s2">"Y"</span><span class="p">):</span>
- <span class="n">vi</span><span class="p">,</span> <span class="n">vj</span><span class="p">,</span> <span class="n">vk</span> <span class="o">=</span> <span class="n">T</span><span class="o">.</span><span class="n">axis</span><span class="o">.</span><span class="n">remap</span><span class="p">(</span><span class="s2">"SSR"</span><span class="p">,</span> <span class="p">[</span><a href="../../../reference/api/python/s_tir/schedule.html#tvm.s_tir.schedule.Loop [...]
- <span class="k">with</span> <span class="n">T</span><span class="o">.</span><span class="n">init</span><span class="p">():</span>
+ <a href="../../../reference/api/python/script/script.html#tvm.script.tirx.func_attr" title="tvm.script.tirx.func_attr" class="sphx-glr-backref-module-tvm-script-tirx sphx-glr-backref-type-py-function"><span class="n">T</span><span class="o">.</span><span class="n">func_attr</span></a><span class="p">({</span><span class="s2">"tirx.noalias"</span><span class="p">:</span> <span class="kc">True</span><span class="p">})</span>
+ <span class="k">with</span> <a href="../../../reference/api/python/script/script.html#tvm.script.tirx.sblock" title="tvm.script.tirx.sblock" class="sphx-glr-backref-module-tvm-script-tirx sphx-glr-backref-type-py-function"><span class="n">T</span><span class="o">.</span><span class="n">sblock</span></a><span class="p">(</span><span class="s2">"root"</span><span class="p">):</span>
+ <a href="../../../reference/api/python/script/script.html#tvm.script.tirx.reads" title="tvm.script.tirx.reads" class="sphx-glr-backref-module-tvm-script-tirx sphx-glr-backref-type-py-function"><span class="n">T</span><span class="o">.</span><span class="n">reads</span></a><span class="p">()</span>
+ <a href="../../../reference/api/python/script/script.html#tvm.script.tirx.writes" title="tvm.script.tirx.writes" class="sphx-glr-backref-module-tvm-script-tirx sphx-glr-backref-type-py-function"><span class="n">T</span><span class="o">.</span><span class="n">writes</span></a><span class="p">()</span>
+ <span class="n">Y</span> <span class="o">=</span> <a href="../../../reference/api/python/script/script.html#tvm.script.tirx.sblock_alloc_buffer" title="tvm.script.tirx.sblock_alloc_buffer" class="sphx-glr-backref-module-tvm-script-tirx sphx-glr-backref-type-py-function"><span class="n">T</span><span class="o">.</span><span class="n">sblock_alloc_buffer</span></a><span class="p">((</span><span class="mi">128</span><span class="p">,</span> <span class="mi">128</span><span class [...]
+ <span class="k">for</span> <a href="../../../reference/api/python/s_tir/schedule.html#tvm.s_tir.schedule.LoopRV" title="tvm.s_tir.schedule.LoopRV" class="sphx-glr-backref-module-tvm-s_tir-schedule sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">i</span></a><span class="p">,</span> <a href="../../../reference/api/python/s_tir/schedule.html#tvm.s_tir.schedule.LoopRV" title="tvm.s_tir.schedule.LoopRV" class="sphx-glr-backref-module-tvm-s_tir-schedule sp [...]
+ <span class="k">with</span> <a href="../../../reference/api/python/script/script.html#tvm.script.tirx.sblock" title="tvm.script.tirx.sblock" class="sphx-glr-backref-module-tvm-script-tirx sphx-glr-backref-type-py-function"><span class="n">T</span><span class="o">.</span><span class="n">sblock</span></a><span class="p">(</span><span class="s2">"Y"</span><span class="p">):</span>
+ <span class="n">vi</span><span class="p">,</span> <span class="n">vj</span><span class="p">,</span> <span class="n">vk</span> <span class="o">=</span> <a href="../../../reference/api/python/script/script.html#tvm.script.tirx.axis.remap" title="tvm.script.tirx.axis.remap" class="sphx-glr-backref-module-tvm-script-tirx-axis sphx-glr-backref-type-py-method"><span class="n">T</span><span class="o">.</span><span class="n">axis</span><span class="o">.</span><span class="n"> [...]
+ <span class="k">with</span> <a href="../../../reference/api/python/script/script.html#tvm.script.tirx.init" title="tvm.script.tirx.init" class="sphx-glr-backref-module-tvm-script-tirx sphx-glr-backref-type-py-function"><span class="n">T</span><span class="o">.</span><span class="n">init</span></a><span class="p">():</span>
<span class="n">Y</span><span class="p">[</span><span class="n">vi</span><span class="p">,</span> <span class="n">vj</span><span class="p">]</span> <span class="o">=</span> <span class="n">T</span><span class="o">.</span><span class="n">float32</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span>
<span class="n">Y</span><span class="p">[</span><span class="n">vi</span><span class="p">,</span> <span class="n">vj</span><span class="p">]</span> <span class="o">=</span> <span class="n">Y</span><span class="p">[</span><span class="n">vi</span><span class="p">,</span> <span class="n">vj</span><span class="p">]</span> <span class="o">+</span> <span class="n">A</span><span class="p">[</span><span class="n">vi</span><span class="p">,</span> <span class="n">vk</span><sp [...]
- <span class="k">for</span> <a href="../../../reference/api/python/s_tir/schedule.html#tvm.s_tir.schedule.LoopRV" title="tvm.s_tir.schedule.LoopRV" class="sphx-glr-backref-module-tvm-s_tir-schedule sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">i</span></a><span class="p">,</span> <a href="../../../reference/api/python/s_tir/schedule.html#tvm.s_tir.schedule.LoopRV" title="tvm.s_tir.schedule.LoopRV" class="sphx-glr-backref-module-tvm-s_tir-schedule sp [...]
- <span class="k">with</span> <span class="n">T</span><span class="o">.</span><span class="n">sblock</span><span class="p">(</span><span class="s2">"C"</span><span class="p">):</span>
- <span class="n">vi</span><span class="p">,</span> <span class="n">vj</span> <span class="o">=</span> <span class="n">T</span><span class="o">.</span><span class="n">axis</span><span class="o">.</span><span class="n">remap</span><span class="p">(</span><span class="s2">"SS"</span><span class="p">,</span> <span class="p">[</span><a href="../../../reference/api/python/s_tir/schedule.html#tvm.s_tir.schedule.LoopRV" title="tvm.s_tir.schedule.LoopRV" class="sphx-g [...]
- <span class="n">C</span><span class="p">[</span><span class="n">vi</span><span class="p">,</span> <span class="n">vj</span><span class="p">]</span> <span class="o">=</span> <span class="n">T</span><span class="o">.</span><span class="n">max</span><span class="p">(</span><span class="n">Y</span><span class="p">[</span><span class="n">vi</span><span class="p">,</span> <span class="n">vj</span><span class="p">],</span> <span class="n">T</span><span class="o">.</span><spa [...]
+ <span class="k">for</span> <a href="../../../reference/api/python/s_tir/schedule.html#tvm.s_tir.schedule.LoopRV" title="tvm.s_tir.schedule.LoopRV" class="sphx-glr-backref-module-tvm-s_tir-schedule sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">i</span></a><span class="p">,</span> <a href="../../../reference/api/python/s_tir/schedule.html#tvm.s_tir.schedule.LoopRV" title="tvm.s_tir.schedule.LoopRV" class="sphx-glr-backref-module-tvm-s_tir-schedule sp [...]
+ <span class="k">with</span> <a href="../../../reference/api/python/script/script.html#tvm.script.tirx.sblock" title="tvm.script.tirx.sblock" class="sphx-glr-backref-module-tvm-script-tirx sphx-glr-backref-type-py-function"><span class="n">T</span><span class="o">.</span><span class="n">sblock</span></a><span class="p">(</span><span class="s2">"C"</span><span class="p">):</span>
+ <span class="n">vi</span><span class="p">,</span> <span class="n">vj</span> <span class="o">=</span> <a href="../../../reference/api/python/script/script.html#tvm.script.tirx.axis.remap" title="tvm.script.tirx.axis.remap" class="sphx-glr-backref-module-tvm-script-tirx-axis sphx-glr-backref-type-py-method"><span class="n">T</span><span class="o">.</span><span class="n">axis</span><span class="o">.</span><span class="n">remap</span></a><span class="p">(</span><span clas [...]
+ <span class="n">C</span><span class="p">[</span><span class="n">vi</span><span class="p">,</span> <span class="n">vj</span><span class="p">]</span> <span class="o">=</span> <a href="../../../reference/api/python/script/script.html#tvm.script.tirx.max" title="tvm.script.tirx.max" class="sphx-glr-backref-module-tvm-script-tirx sphx-glr-backref-type-py-function"><span class="n">T</span><span class="o">.</span><span class="n">max</span></a><span class="p">(</span><span cl [...]
</pre></div>
</div>
<p>Before we transform the function, let’s first evaluate the performance of the
@@ -721,7 +721,7 @@ original implementation.</p>
</div>
<div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>Execution time summary:
mean (ms) median (ms) max (ms) min (ms) std (ms)
- 2.5420 2.5420 2.5420 2.5420 0.0000
+ 2.4822 2.4822 2.4822 2.4822 0.0000
</pre></div>
</div>
<section id="initialization-schedule">
@@ -762,23 +762,23 @@ class Module:
def main(A: T.Buffer((128, 128), "float32"), B: T.Buffer((128, 128), "float32"), C: T.Buffer((128, 128), "float32")):
T.func_attr({"tirx.noalias": True})
# with T.sblock("root"):
- Y = T.sblock_alloc_buffer((128, 128))
+ buffer = T.sblock_alloc_buffer((128, 128))
for i, j_0, j_1, k in T.grid(128, 16, 8, 128):
with T.sblock("Y"):
- vi = T.axis.spatial(128, i)
- vj = T.axis.spatial(128, j_0 * 8 + j_1)
- vk = T.axis.reduce(128, k)
- T.reads(A[vi, vk], B[vk, vj])
- T.writes(Y[vi, vj])
+ v = T.axis.spatial(128, i)
+ v_1 = T.axis.spatial(128, j_0 * 8 + j_1)
+ v_2 = T.axis.reduce(128, k)
+ T.reads(A[v, v_2], B[v_2, v_1])
+ T.writes(buffer[v, v_1])
with T.init():
- Y[vi, vj] = T.float32(0.0)
- Y[vi, vj] = Y[vi, vj] + A[vi, vk] * B[vk, vj]
+ buffer[v, v_1] = T.float32(0.0)
+ buffer[v, v_1] = buffer[v, v_1] + A[v, v_2] * B[v_2, v_1]
for i, j in T.grid(128, 128):
with T.sblock("C"):
- vi, vj = T.axis.remap("SS", [i, j])
- T.reads(Y[vi, vj])
- T.writes(C[vi, vj])
- C[vi, vj] = T.max(Y[vi, vj], T.float32(0.0))
+ v, v_1 = T.axis.remap("SS", [i, j])
+ T.reads(buffer[v, v_1])
+ T.writes(C[v, v_1])
+ C[v, v_1] = T.max(buffer[v, v_1], T.float32(0.0))
</pre></div>
</div>
<p>Following the initial transformation phase, two supplementary loops, <code class="docutils literal notranslate"><span class="pre">j_0</span></code> and <code class="docutils literal notranslate"><span class="pre">j_1</span></code>,
@@ -799,27 +799,27 @@ class Module:
def main(A: T.Buffer((128, 128), "float32"), B: T.Buffer((128, 128), "float32"), C: T.Buffer((128, 128), "float32")):
T.func_attr({"tirx.noalias": True})
# with T.sblock("root"):
- Y = T.sblock_alloc_buffer((128, 128))
+ buffer = T.sblock_alloc_buffer((128, 128))
for i, j_0, k, j_1 in T.grid(128, 16, 128, 8):
with T.sblock("Y"):
- vi = T.axis.spatial(128, i)
- vj = T.axis.spatial(128, j_0 * 8 + j_1)
- vk = T.axis.reduce(128, k)
- T.reads(A[vi, vk], B[vk, vj])
- T.writes(Y[vi, vj])
+ v = T.axis.spatial(128, i)
+ v_1 = T.axis.spatial(128, j_0 * 8 + j_1)
+ v_2 = T.axis.reduce(128, k)
+ T.reads(A[v, v_2], B[v_2, v_1])
+ T.writes(buffer[v, v_1])
with T.init():
- Y[vi, vj] = T.float32(0.0)
- Y[vi, vj] = Y[vi, vj] + A[vi, vk] * B[vk, vj]
+ buffer[v, v_1] = T.float32(0.0)
+ buffer[v, v_1] = buffer[v, v_1] + A[v, v_2] * B[v_2, v_1]
for i, j in T.grid(128, 128):
with T.sblock("C"):
- vi, vj = T.axis.remap("SS", [i, j])
- T.reads(Y[vi, vj])
- T.writes(C[vi, vj])
- C[vi, vj] = T.max(Y[vi, vj], T.float32(0.0))
+ v, v_1 = T.axis.remap("SS", [i, j])
+ T.reads(buffer[v, v_1])
+ T.writes(C[v, v_1])
+ C[v, v_1] = T.max(buffer[v, v_1], T.float32(0.0))
Execution time summary:
mean (ms) median (ms) max (ms) min (ms) std (ms)
- 0.8672 0.8672 0.8672 0.8672 0.0000
+ 0.8644 0.8644 0.8644 0.8644 0.0000
</pre></div>
</div>
</section>
@@ -843,25 +843,25 @@ class Module:
def main(A: T.Buffer((128, 128), "float32"), B: T.Buffer((128, 128), "float32"), C: T.Buffer((128, 128), "float32")):
T.func_attr({"tirx.noalias": True})
# with T.sblock("root"):
- Y = T.sblock_alloc_buffer((128, 128))
+ buffer = T.sblock_alloc_buffer((128, 128))
for i, j_0 in T.grid(128, 16):
for k, j_1 in T.grid(128, 8):
with T.sblock("Y"):
- vi = T.axis.spatial(128, i)
- vj = T.axis.spatial(128, j_0 * 8 + j_1)
- vk = T.axis.reduce(128, k)
- T.reads(A[vi, vk], B[vk, vj])
- T.writes(Y[vi, vj])
+ v = T.axis.spatial(128, i)
+ v_1 = T.axis.spatial(128, j_0 * 8 + j_1)
+ v_2 = T.axis.reduce(128, k)
+ T.reads(A[v, v_2], B[v_2, v_1])
+ T.writes(buffer[v, v_1])
with T.init():
- Y[vi, vj] = T.float32(0.0)
- Y[vi, vj] = Y[vi, vj] + A[vi, vk] * B[vk, vj]
+ buffer[v, v_1] = T.float32(0.0)
+ buffer[v, v_1] = buffer[v, v_1] + A[v, v_2] * B[v_2, v_1]
for ax0 in range(8):
with T.sblock("C"):
- vi = T.axis.spatial(128, i)
- vj = T.axis.spatial(128, j_0 * 8 + ax0)
- T.reads(Y[vi, vj])
- T.writes(C[vi, vj])
- C[vi, vj] = T.max(Y[vi, vj], T.float32(0.0))
+ v = T.axis.spatial(128, i)
+ v_1 = T.axis.spatial(128, j_0 * 8 + ax0)
+ T.reads(buffer[v, v_1])
+ T.writes(C[v, v_1])
+ C[v, v_1] = T.max(buffer[v, v_1], T.float32(0.0))
</pre></div>
</div>
</section>
@@ -888,34 +888,34 @@ class Module:
def main(A: T.Buffer((128, 128), "float32"), B: T.Buffer((128, 128), "float32"), C: T.Buffer((128, 128), "float32")):
T.func_attr({"tirx.noalias": True})
# with T.sblock("root"):
- Y = T.sblock_alloc_buffer((128, 128))
+ buffer = T.sblock_alloc_buffer((128, 128))
for i, j_0 in T.grid(128, 16):
for j_1_init in range(8):
with T.sblock("Y_init"):
- vi = T.axis.spatial(128, i)
- vj = T.axis.spatial(128, j_0 * 8 + j_1_init)
+ v = T.axis.spatial(128, i)
+ v_1 = T.axis.spatial(128, j_0 * 8 + j_1_init)
T.reads()
- T.writes(Y[vi, vj])
- Y[vi, vj] = T.float32(0.0)
+ T.writes(buffer[v, v_1])
+ buffer[v, v_1] = T.float32(0.0)
for k, j_1 in T.grid(128, 8):
with T.sblock("Y_update"):
- vi = T.axis.spatial(128, i)
- vj = T.axis.spatial(128, j_0 * 8 + j_1)
- vk = T.axis.reduce(128, k)
- T.reads(Y[vi, vj], A[vi, vk], B[vk, vj])
- T.writes(Y[vi, vj])
- Y[vi, vj] = Y[vi, vj] + A[vi, vk] * B[vk, vj]
+ v = T.axis.spatial(128, i)
+ v_1 = T.axis.spatial(128, j_0 * 8 + j_1)
+ v_2 = T.axis.reduce(128, k)
+ T.reads(buffer[v, v_1], A[v, v_2], B[v_2, v_1])
+ T.writes(buffer[v, v_1])
+ buffer[v, v_1] = buffer[v, v_1] + A[v, v_2] * B[v_2, v_1]
for ax0 in range(8):
with T.sblock("C"):
- vi = T.axis.spatial(128, i)
- vj = T.axis.spatial(128, j_0 * 8 + ax0)
- T.reads(Y[vi, vj])
- T.writes(C[vi, vj])
- C[vi, vj] = T.max(Y[vi, vj], T.float32(0.0))
+ v = T.axis.spatial(128, i)
+ v_1 = T.axis.spatial(128, j_0 * 8 + ax0)
+ T.reads(buffer[v, v_1])
+ T.writes(C[v, v_1])
+ C[v, v_1] = T.max(buffer[v, v_1], T.float32(0.0))
Execution time summary:
mean (ms) median (ms) max (ms) min (ms) std (ms)
- 0.3620 0.3620 0.3620 0.3620 0.0000
+ 0.3550 0.3550 0.3550 0.3550 0.0000
</pre></div>
</div>
</section>
@@ -954,30 +954,30 @@ class Module:
def main(A: T.Buffer((128, 128), "float32"), B: T.Buffer((128, 128), "float32"), C: T.Buffer((128, 128), "float32")):
T.func_attr({"tirx.noalias": True})
# with T.sblock("root"):
- Y = T.sblock_alloc_buffer((128, 128))
+ buffer = T.sblock_alloc_buffer((128, 128))
for i, j_0 in T.grid(128, 16):
for j_1_init in range(8):
with T.sblock("Y_init"):
- vi = T.axis.spatial(128, i)
- vj = T.axis.spatial(128, j_0 * 8 + j_1_init)
+ v = T.axis.spatial(128, i)
+ v_1 = T.axis.spatial(128, j_0 * 8 + j_1_init)
T.reads()
- T.writes(Y[vi, vj])
- Y[vi, vj] = T.float32(0.0)
+ T.writes(buffer[v, v_1])
+ buffer[v, v_1] = T.float32(0.0)
for k, j_1 in T.grid(128, 8):
with T.sblock("Y_update"):
- vi = T.axis.spatial(128, i)
- vj = T.axis.spatial(128, j_0 * 8 + j_1)
- vk = T.axis.reduce(128, k)
- T.reads(Y[vi, vj], A[vi, vk], B[vk, vj])
- T.writes(Y[vi, vj])
- Y[vi, vj] = Y[vi, vj] + A[vi, vk] * B[vk, vj]
+ v = T.axis.spatial(128, i)
+ v_1 = T.axis.spatial(128, j_0 * 8 + j_1)
+ v_2 = T.axis.reduce(128, k)
+ T.reads(buffer[v, v_1], A[v, v_2], B[v_2, v_1])
+ T.writes(buffer[v, v_1])
+ buffer[v, v_1] = buffer[v, v_1] + A[v, v_2] * B[v_2, v_1]
for ax0 in range(8):
with T.sblock("C"):
- vi = T.axis.spatial(128, i)
- vj = T.axis.spatial(128, j_0 * 8 + ax0)
- T.reads(Y[vi, vj])
- T.writes(C[vi, vj])
- C[vi, vj] = T.max(Y[vi, vj], T.float32(0.0))
+ v = T.axis.spatial(128, i)
+ v_1 = T.axis.spatial(128, j_0 * 8 + ax0)
+ T.reads(buffer[v, v_1])
+ T.writes(C[v, v_1])
+ C[v, v_1] = T.max(buffer[v, v_1], T.float32(0.0))
# from tvm import s_tir
def apply_trace(sch: s_tir.Schedule) -> None:
diff --git a/docs/genindex.html b/docs/genindex.html
index 894f7eb1816..94b37685f89 100644
--- a/docs/genindex.html
+++ b/docs/genindex.html
@@ -593,6 +593,12 @@ document.write(`
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.abs">abs() (in module tvm.relax.op)</a>
<ul>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.abs">(in module tvm.script.ir_builder.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.abs">(in module tvm.script.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.abs">(in module tvm.script.tirx)</a>
+</li>
<li><a href="reference/api/python/te.html#tvm.te.abs">(in module tvm.te)</a>
</li>
<li><a href="tirx/api/tirx.html#tvm.tirx.abs">(in module tvm.tirx)</a>
@@ -607,6 +613,12 @@ document.write(`
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.acos">acos() (in module tvm.relax.op)</a>
<ul>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.acos">(in module tvm.script.ir_builder.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.acos">(in module tvm.script.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.acos">(in module tvm.script.tirx)</a>
+</li>
<li><a href="reference/api/python/te.html#tvm.te.acos">(in module tvm.te)</a>
</li>
<li><a href="tirx/api/tirx.html#tvm.tirx.acos">(in module tvm.tirx)</a>
@@ -615,6 +627,12 @@ document.write(`
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.acosh">acosh() (in module tvm.relax.op)</a>
<ul>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.acosh">(in module tvm.script.ir_builder.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.acosh">(in module tvm.script.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.acosh">(in module tvm.script.tirx)</a>
+</li>
<li><a href="reference/api/python/te.html#tvm.te.acosh">(in module tvm.te)</a>
</li>
<li><a href="tirx/api/tirx.html#tvm.tirx.acosh">(in module tvm.tirx)</a>
@@ -647,6 +665,10 @@ document.write(`
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.add">add() (in module tvm.relax.op)</a>
<ul>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.add">(in module tvm.script.ir_builder.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.add">(in module tvm.script.relax)</a>
+</li>
<li><a href="reference/api/python/topi.html#tvm.topi.nn.add">(in module tvm.topi.nn)</a>
</li>
<li><a href="reference/api/python/relax/relax.html#tvm.relax.DataflowBlockRewrite.add">(tvm.relax.DataflowBlockRewrite method)</a>
@@ -657,13 +679,19 @@ document.write(`
<li><a href="reference/api/python/relax/block_builder.html#tvm.relax.block_builder.BlockBuilder.add_func">add_func() (tvm.relax.block_builder.BlockBuilder method)</a>
</li>
<li><a href="reference/api/python/relax/relax.html#tvm.relax.BasePyModule.add_python_function">add_python_function() (tvm.relax.BasePyModule method)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.add_to_parent">add_to_parent() (in module tvm.script.tirx)</a>
</li>
<li><a href="reference/api/python/s_tir/schedule.html#tvm.s_tir.schedule.Schedule.add_unit_loop">add_unit_loop() (tvm.s_tir.schedule.Schedule method)</a>
</li>
<li><a href="tirx/api/ptx.html#tvm.backend.cuda.ptx.PTXNamespace.addr">addr() (tvm.backend.cuda.ptx.PTXNamespace static method)</a>
</li>
- <li><a href="tirx/api/tirx.html#tvm.tirx.address_of">address_of() (in module tvm.tirx)</a>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.address_of">address_of() (in module tvm.script.tirx)</a>
+
+ <ul>
+ <li><a href="tirx/api/tirx.html#tvm.tirx.address_of">(in module tvm.tirx)</a>
</li>
+ </ul></li>
<li><a href="reference/api/python/relax/transform.html#tvm.relax.transform.AdjustMatmulOrder">AdjustMatmulOrder() (in module tvm.relax.transform)</a>
</li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.image.affine_grid">affine_grid() (in module tvm.relax.op.image)</a>
@@ -709,8 +737,18 @@ document.write(`
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.op_attrs.AllGatherAttrs">AllGatherAttrs (class in tvm.relax.op.op_attrs)</a>
</li>
<li><a href="tirx/api/cuda.html#TMEMPool.alloc">alloc() (TMEMPool method)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.alloc_buffer">alloc_buffer() (in module tvm.script.tirx)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.alloc_cast_frag">alloc_cast_frag() (in module tvm.script.tirx)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.alloc_local">alloc_local() (in module tvm.script.tirx)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.alloc_scalar">alloc_scalar() (in module tvm.script.tirx)</a>
</li>
<li><a href="tirx/api/cuda.html#tvm.backend.cuda.lang.TMEMPool.alloc_sf">alloc_sf() (tvm.backend.cuda.lang.TMEMPool method)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.alloc_shared">alloc_shared() (in module tvm.script.tirx)</a>
</li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.memory.alloc_storage">alloc_storage() (in module tvm.relax.op.memory)</a>
@@ -718,8 +756,12 @@ document.write(`
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.vm.alloc_storage">(in module tvm.relax.op.vm)</a>
</li>
</ul></li>
- <li><a href="tirx/api/script.html#tvm.tirx.script.builder.ir.alloc_tcgen05_ldst_frag">alloc_tcgen05_ldst_frag() (in module tvm.tirx.script.builder.ir)</a>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.alloc_tcgen05_ldst_frag">alloc_tcgen05_ldst_frag() (in module tvm.script.tirx)</a>
+
+ <ul>
+ <li><a href="tirx/api/script.html#tvm.tirx.script.builder.ir.alloc_tcgen05_ldst_frag">(in module tvm.tirx.script.builder.ir)</a>
</li>
+ </ul></li>
<li><a href="tirx/api/cuda.html#tvm.backend.cuda.lang.TMEMPool.alloc_tcgen05_mma_A">alloc_tcgen05_mma_A() (tvm.backend.cuda.lang.TMEMPool method)</a>
</li>
<li><a href="tirx/api/cuda.html#tvm.backend.cuda.lang.SMEMPool.alloc_tcgen05_mma_AB">alloc_tcgen05_mma_AB() (tvm.backend.cuda.lang.SMEMPool method)</a>
@@ -753,6 +795,8 @@ document.write(`
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.op_attrs.AllReduceAttrs">AllReduceAttrs (class in tvm.relax.op.op_attrs)</a>
</li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.op_attrs.LeakyReluAttrs.alpha">alpha (tvm.relax.op.op_attrs.LeakyReluAttrs property)</a>
+</li>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.AlreadyEmitted">AlreadyEmitted (class in tvm.script.ir_builder)</a>
</li>
<li><a href="reference/api/python/relax/transform.html#tvm.relax.transform.AlterOpImpl">AlterOpImpl() (in module tvm.relax.transform)</a>
</li>
@@ -760,6 +804,14 @@ document.write(`
</li>
<li><a href="tirx/api/tirx.html#tvm.tirx.And">And (class in tvm.tirx)</a>
</li>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.and_">and_() (in module tvm.script.ir_builder.relax)</a>
+
+ <ul>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.and_">(in module tvm.script.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.and_">(in module tvm.script.tirx)</a>
+</li>
+ </ul></li>
<li><a href="reference/api/python/s_tir/schedule.html#tvm.s_tir.schedule.Schedule.annotate">annotate() (tvm.s_tir.schedule.Schedule method)</a>
</li>
<li><a href="reference/api/python/s_tir/schedule.html#tvm.s_tir.schedule.Schedule.annotate_buffer_access">annotate_buffer_access() (tvm.s_tir.schedule.Schedule method)</a>
@@ -770,12 +822,28 @@ document.write(`
</li>
<li><a href="reference/api/python/relax/transform.html#tvm.relax.transform.AnnotateTIROpPattern">AnnotateTIROpPattern() (in module tvm.relax.transform)</a>
</li>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.ir.annotation_value_">annotation_value_() (in module tvm.script.ir_builder.ir)</a>
+</li>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.Any">Any() (in module tvm.script.ir_builder.relax)</a>
+
+ <ul>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.Any">(in module tvm.script.relax)</a>
+</li>
+ </ul></li>
<li><a href="reference/api/python/te.html#tvm.te.any">any() (in module tvm.te)</a>
<ul>
<li><a href="tirx/api/tirx.html#tvm.tirx.any">(in module tvm.tirx)</a>
</li>
</ul></li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.anylist_getitem">anylist_getitem() (in module tvm.script.tirx)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.anylist_resetitem">anylist_resetitem() (in module tvm.script.tirx)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.anylist_setitem_call_cpacked">anylist_setitem_call_cpacked() (in module tvm.script.tirx)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.anylist_setitem_call_packed">anylist_setitem_call_packed() (in module tvm.script.tirx)</a>
+</li>
<li><a href="reference/api/python/relax/relax.html#tvm.relax.AnyType">AnyType (class in tvm.relax)</a>
</li>
<li><a href="reference/api/python/s_tir/schedule.html#tvm.s_tir.schedule.Trace.append">append() (tvm.s_tir.schedule.Trace method)</a>
@@ -796,32 +864,68 @@ document.write(`
<li><a href="reference/api/python/meta_schedule.html#tvm.s_tir.meta_schedule.Postproc.apply">(tvm.s_tir.meta_schedule.Postproc method)</a>
</li>
<li><a href="reference/api/python/meta_schedule.html#tvm.s_tir.meta_schedule.ScheduleRule.apply">(tvm.s_tir.meta_schedule.ScheduleRule method)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.Layout.apply">(tvm.script.tirx.Layout method)</a>
</li>
<li><a href="tirx/api/tirx.html#tvm.tirx.LambdaExpr.apply">(tvm.tirx.LambdaExpr method)</a>
</li>
</ul></li>
- </ul></td>
- <td style="width: 33%; vertical-align: top;"><ul>
<li><a href="tirx/api/transform.html#tvm.tirx.transform.StmtSimplifyConfig.apply_constraints_to_boolean_branches">apply_constraints_to_boolean_branches (tvm.tirx.transform.StmtSimplifyConfig property)</a>
</li>
<li><a href="reference/api/python/s_tir/schedule.html#tvm.s_tir.schedule.Trace.apply_json_to_schedule">apply_json_to_schedule() (tvm.s_tir.schedule.Trace static method)</a>
</li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.op_attrs.MultiboxTransformLocAttrs.apply_softmax">apply_softmax (tvm.relax.op.op_attrs.MultiboxTransformLocAttrs property)</a>
</li>
+ </ul></td>
+ <td style="width: 33%; vertical-align: top;"><ul>
<li><a href="reference/api/python/s_tir/schedule.html#tvm.s_tir.schedule.Trace.apply_to_schedule">apply_to_schedule() (tvm.s_tir.schedule.Trace method)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.Layout.apply_to_shape">apply_to_shape() (tvm.script.tirx.Layout method)</a>
</li>
<li><a href="reference/api/python/s_tir/dlight.html#tvm.s_tir.dlight.ApplyDefaultSchedule">ApplyDefaultSchedule (class in tvm.s_tir.dlight)</a>
</li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.arange">arange() (in module tvm.relax.op)</a>
+
+ <ul>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.arange">(in module tvm.script.ir_builder.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.arange">(in module tvm.script.relax)</a>
+</li>
+ </ul></li>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.arg">arg() (in module tvm.script.ir_builder.relax)</a>
+
+ <ul>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.arg">(in module tvm.script.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.arg">(in module tvm.script.tirx)</a>
</li>
+ </ul></li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.argmax">argmax() (in module tvm.relax.op)</a>
+
+ <ul>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.argmax">(in module tvm.script.ir_builder.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.argmax">(in module tvm.script.relax)</a>
</li>
+ </ul></li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.op_attrs.ArgmaxArgminAttrs">ArgmaxArgminAttrs (class in tvm.relax.op.op_attrs)</a>
</li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.argmin">argmin() (in module tvm.relax.op)</a>
+
+ <ul>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.argmin">(in module tvm.script.ir_builder.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.argmin">(in module tvm.script.relax)</a>
</li>
+ </ul></li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.argsort">argsort() (in module tvm.relax.op)</a>
+
+ <ul>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.argsort">(in module tvm.script.ir_builder.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.argsort">(in module tvm.script.relax)</a>
</li>
+ </ul></li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.op_attrs.ArgsortAttrs">ArgsortAttrs (class in tvm.relax.op.op_attrs)</a>
</li>
<li><a href="reference/api/python/ir.html#tvm.ir.Array">Array (class in tvm.ir)</a>
@@ -835,10 +939,18 @@ document.write(`
</li>
</ul></li>
<li><a href="reference/api/python/relax/relax.html#tvm.relax.VMExecutable.as_text">as_text() (tvm.relax.VMExecutable method)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.LetAnnotation.as_var">as_var() (tvm.script.tirx.LetAnnotation method)</a>
</li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.asin">asin() (in module tvm.relax.op)</a>
<ul>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.asin">(in module tvm.script.ir_builder.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.asin">(in module tvm.script.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.asin">(in module tvm.script.tirx)</a>
+</li>
<li><a href="reference/api/python/te.html#tvm.te.asin">(in module tvm.te)</a>
</li>
<li><a href="tirx/api/tirx.html#tvm.tirx.asin">(in module tvm.tirx)</a>
@@ -847,6 +959,12 @@ document.write(`
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.asinh">asinh() (in module tvm.relax.op)</a>
<ul>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.asinh">(in module tvm.script.ir_builder.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.asinh">(in module tvm.script.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.asinh">(in module tvm.script.tirx)</a>
+</li>
<li><a href="reference/api/python/te.html#tvm.te.asinh">(in module tvm.te)</a>
</li>
<li><a href="tirx/api/tirx.html#tvm.tirx.asinh">(in module tvm.tirx)</a>
@@ -854,10 +972,26 @@ document.write(`
</ul></li>
<li><a href="reference/api/python/te.html#tvm.te.TensorSlice.asobject">asobject() (tvm.te.TensorSlice method)</a>
</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.Assert">Assert() (in module tvm.script.tirx)</a>
+</li>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.assert_">assert_() (in module tvm.script.ir_builder.relax)</a>
+
+ <ul>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.assert_">(in module tvm.script.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.assert_">(in module tvm.script.tirx)</a>
+</li>
+ </ul></li>
<li><a href="reference/api/python/testing.html#tvm.testing.assert_allclose">assert_allclose() (in module tvm.testing)</a>
</li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.assert_op">assert_op() (in module tvm.relax.op)</a>
+
+ <ul>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.assert_op">(in module tvm.script.ir_builder.relax)</a>
</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.assert_op">(in module tvm.script.relax)</a>
+</li>
+ </ul></li>
<li><a href="reference/api/python/testing.html#tvm.testing.assert_prim_expr_equal">assert_prim_expr_equal() (in module tvm.testing)</a>
</li>
<li><a href="reference/api/python/s_tir/analysis.html#tvm.s_tir.analysis.assert_pure_function">assert_pure_function() (in module tvm.s_tir.analysis)</a>
@@ -866,17 +1000,35 @@ document.write(`
</li>
<li><a href="tirx/api/tirx.html#tvm.tirx.AssertStmt">AssertStmt (class in tvm.tirx)</a>
</li>
- <li><a href="tirx/api/tirx.html#tvm.tirx.assume">assume() (in module tvm.tirx)</a>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.assume">assume() (in module tvm.script.tirx)</a>
+
+ <ul>
+ <li><a href="tirx/api/tirx.html#tvm.tirx.assume">(in module tvm.tirx)</a>
</li>
+ </ul></li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.op_attrs.StridedSliceAttrs.assume_inbound">assume_inbound (tvm.relax.op.op_attrs.StridedSliceAttrs property)</a>
</li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.astype">astype() (in module tvm.relax.op)</a>
+
+ <ul>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.astype">(in module tvm.script.ir_builder.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.astype">(in module tvm.script.relax)</a>
</li>
+ </ul></li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.op_attrs.AstypeAttrs">AstypeAttrs (class in tvm.relax.op.op_attrs)</a>
+</li>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.ir.at_">at_() (in module tvm.script.ir_builder.ir)</a>
</li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.atan">atan() (in module tvm.relax.op)</a>
<ul>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.atan">(in module tvm.script.ir_builder.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.atan">(in module tvm.script.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.atan">(in module tvm.script.tirx)</a>
+</li>
<li><a href="reference/api/python/te.html#tvm.te.atan">(in module tvm.te)</a>
</li>
<li><a href="tirx/api/tirx.html#tvm.tirx.atan">(in module tvm.tirx)</a>
@@ -885,12 +1037,24 @@ document.write(`
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.atan2">atan2() (in module tvm.relax.op)</a>
<ul>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.atan2">(in module tvm.script.ir_builder.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.atan2">(in module tvm.script.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.atan2">(in module tvm.script.tirx)</a>
+</li>
<li><a href="tirx/api/tirx.html#tvm.tirx.atan2">(in module tvm.tirx)</a>
</li>
</ul></li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.atanh">atanh() (in module tvm.relax.op)</a>
<ul>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.atanh">(in module tvm.script.ir_builder.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.atanh">(in module tvm.script.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.atanh">(in module tvm.script.tirx)</a>
+</li>
<li><a href="reference/api/python/te.html#tvm.te.atanh">(in module tvm.te)</a>
</li>
<li><a href="tirx/api/tirx.html#tvm.tirx.atanh">(in module tvm.tirx)</a>
@@ -911,6 +1075,8 @@ document.write(`
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.nn.attention_var_len">attention_var_len() (in module tvm.relax.op.nn)</a>
</li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.op_attrs.AttentionAttrs">AttentionAttrs (class in tvm.relax.op.op_attrs)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.attr">attr() (in module tvm.script.tirx)</a>
</li>
<li><a href="reference/api/python/ir.html#tvm.ir.Attrs">Attrs (class in tvm.ir)</a>
</li>
@@ -948,9 +1114,11 @@ document.write(`
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.op_attrs.RMSNormAttrs.axes">(tvm.relax.op.op_attrs.RMSNormAttrs property)</a>
</li>
</ul></li>
- <li><a href="reference/api/python/relax/op.html#tvm.relax.op.op_attrs.ArgmaxArgminAttrs.axis">axis (tvm.relax.op.op_attrs.ArgmaxArgminAttrs property)</a>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.axis">axis (class in tvm.script.tirx)</a>
<ul>
+ <li><a href="reference/api/python/relax/op.html#tvm.relax.op.op_attrs.ArgmaxArgminAttrs.axis">(tvm.relax.op.op_attrs.ArgmaxArgminAttrs property)</a>
+</li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.op_attrs.ArgsortAttrs.axis">(tvm.relax.op.op_attrs.ArgsortAttrs property)</a>
</li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.op_attrs.BatchNormAttrs.axis">(tvm.relax.op.op_attrs.BatchNormAttrs property)</a>
@@ -1062,10 +1230,22 @@ document.write(`
<li><a href="tirx/api/transform.html#tvm.tirx.transform.HoistedLetBindings.Bind">(tvm.tirx.transform.HoistedLetBindings attribute)</a>
</li>
</ul></li>
- <li><a href="reference/api/python/s_tir/schedule.html#tvm.s_tir.schedule.Schedule.bind">bind() (tvm.s_tir.schedule.Schedule method)</a>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.Bind">Bind() (in module tvm.script.tirx)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.bind">bind() (in module tvm.script.tirx)</a>
<ul>
+ <li><a href="reference/api/python/s_tir/schedule.html#tvm.s_tir.schedule.Schedule.bind">(tvm.s_tir.schedule.Schedule method)</a>
+</li>
<li><a href="reference/api/python/sym.html#tvm.sym.Analyzer.bind">(tvm.sym.Analyzer method)</a>
+</li>
+ </ul></li>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.bind_">bind_() (in module tvm.script.ir_builder.relax)</a>
+
+ <ul>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.bind_">(in module tvm.script.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.bind_">(in module tvm.script.tirx)</a>
</li>
</ul></li>
<li><a href="reference/api/python/relax/relax.html#tvm.relax.Function.bind_params">bind_params() (tvm.relax.Function method)</a>
@@ -1088,31 +1268,55 @@ document.write(`
</li>
<li><a href="reference/api/python/topi.html#tvm.topi.nn.bitserial_conv2d_nhwc">bitserial_conv2d_nhwc() (in module tvm.topi.nn)</a>
</li>
- </ul></td>
- <td style="width: 33%; vertical-align: top;"><ul>
<li><a href="reference/api/python/topi.html#tvm.topi.nn.bitserial_dense">bitserial_dense() (in module tvm.topi.nn)</a>
</li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.bitwise_and">bitwise_and() (in module tvm.relax.op)</a>
<ul>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.bitwise_and">(in module tvm.script.ir_builder.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.bitwise_and">(in module tvm.script.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.bitwise_and">(in module tvm.script.tirx)</a>
+</li>
<li><a href="tirx/api/tirx.html#tvm.tirx.bitwise_and">(in module tvm.tirx)</a>
</li>
</ul></li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.bitwise_not">bitwise_not() (in module tvm.relax.op)</a>
<ul>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.bitwise_not">(in module tvm.script.ir_builder.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.bitwise_not">(in module tvm.script.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.bitwise_not">(in module tvm.script.tirx)</a>
+</li>
<li><a href="tirx/api/tirx.html#tvm.tirx.bitwise_not">(in module tvm.tirx)</a>
</li>
</ul></li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.bitwise_or">bitwise_or() (in module tvm.relax.op)</a>
<ul>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.bitwise_or">(in module tvm.script.ir_builder.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.bitwise_or">(in module tvm.script.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.bitwise_or">(in module tvm.script.tirx)</a>
+</li>
<li><a href="tirx/api/tirx.html#tvm.tirx.bitwise_or">(in module tvm.tirx)</a>
</li>
</ul></li>
+ </ul></td>
+ <td style="width: 33%; vertical-align: top;"><ul>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.bitwise_xor">bitwise_xor() (in module tvm.relax.op)</a>
<ul>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.bitwise_xor">(in module tvm.script.ir_builder.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.bitwise_xor">(in module tvm.script.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.bitwise_xor">(in module tvm.script.tirx)</a>
+</li>
<li><a href="tirx/api/tirx.html#tvm.tirx.bitwise_xor">(in module tvm.tirx)</a>
</li>
</ul></li>
@@ -1123,10 +1327,16 @@ document.write(`
<li><a href="tirx/api/tirx.html#tvm.tirx.BitwiseOr">BitwiseOr (class in tvm.tirx)</a>
</li>
<li><a href="tirx/api/tirx.html#tvm.tirx.BitwiseXor">BitwiseXor (class in tvm.tirx)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.block_name_suffix_context">block_name_suffix_context() (in module tvm.script.tirx)</a>
</li>
<li><a href="reference/api/python/relax/block_builder.html#tvm.relax.block_builder.BlockBuilder">BlockBuilder (class in tvm.relax.block_builder)</a>
</li>
<li><a href="reference/api/python/s_tir/schedule.html#tvm.s_tir.schedule.Schedule.blockize">blockize() (tvm.s_tir.schedule.Schedule method)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.bool">bool() (in module tvm.script.tirx)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.boolean">boolean() (in module tvm.script.tirx)</a>
</li>
<li><a href="tirx/api/transform.html#tvm.tirx.transform.HoistedConditionals.BooleanExpression">BooleanExpression (tvm.tirx.transform.HoistedConditionals attribute)</a>
</li>
@@ -1134,12 +1344,32 @@ document.write(`
</li>
<li><a href="tirx/api/tirx.html#tvm.tirx.Break">Break (class in tvm.tirx)</a>
</li>
- <li><a href="tirx/api/tirx.html#tvm.tirx.break_loop">break_loop() (in module tvm.tirx)</a>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.Break">Break() (in module tvm.script.tirx)</a>
+</li>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.break_">break_() (in module tvm.script.ir_builder.relax)</a>
+
+ <ul>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.break_">(in module tvm.script.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.break_">(in module tvm.script.tirx)</a>
+</li>
+ </ul></li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.break_loop">break_loop() (in module tvm.script.tirx)</a>
+
+ <ul>
+ <li><a href="tirx/api/tirx.html#tvm.tirx.break_loop">(in module tvm.tirx)</a>
</li>
+ </ul></li>
<li><a href="tirx/api/tirx.html#tvm.tirx.Broadcast">Broadcast (class in tvm.tirx)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.broadcast">broadcast (in module tvm.script.tirx)</a>
</li>
<li><a href="reference/api/python/runtime/disco.html#tvm.runtime.disco.Session.broadcast">broadcast() (tvm.runtime.disco.Session method)</a>
+
+ <ul>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.Layout.broadcast">(tvm.script.tirx.Layout method)</a>
</li>
+ </ul></li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.ccl.broadcast_from_worker0">broadcast_from_worker0() (in module tvm.relax.op.ccl)</a>
<ul>
@@ -1147,19 +1377,45 @@ document.write(`
</li>
</ul></li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.broadcast_to">broadcast_to() (in module tvm.relax.op)</a>
+
+ <ul>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.broadcast_to">(in module tvm.script.ir_builder.relax)</a>
</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.broadcast_to">(in module tvm.script.relax)</a>
+</li>
+ </ul></li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.bucketize">bucketize() (in module tvm.relax.op)</a>
+
+ <ul>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.bucketize">(in module tvm.script.ir_builder.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.bucketize">(in module tvm.script.relax)</a>
+</li>
+ </ul></li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.Buffer">Buffer (class in tvm.script.tirx)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.buffer">buffer (in module tvm.script.tirx)</a>
</li>
<li><a href="tirx/api/tirx.html#tvm.tirx.Buffer">Buffer (in module tvm.tirx)</a>
</li>
<li><a href="tirx/api/tirx.html#tvm.tirx.buffer_data">buffer_data() (in module tvm.tirx)</a>
</li>
<li><a href="tirx/api/tirx.html#tvm.tirx.buffer_data_pointer_type">buffer_data_pointer_type() (in module tvm.tirx)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.buffer_proxy">buffer_proxy() (in module tvm.script.tirx)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.buffer_store">buffer_store() (in module tvm.script.tirx)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.buffer_var">buffer_var() (in module tvm.script.tirx)</a>
</li>
<li><a href="tirx/api/tirx.html#tvm.tirx.BufferAccessKind">BufferAccessKind (class in tvm.tirx)</a>
</li>
- <li><a href="tirx/api/tirx.html#tvm.tirx.BufferLoad">BufferLoad() (in module tvm.tirx)</a>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.BufferLoad">BufferLoad() (in module tvm.script.tirx)</a>
+
+ <ul>
+ <li><a href="tirx/api/tirx.html#tvm.tirx.BufferLoad">(in module tvm.tirx)</a>
</li>
+ </ul></li>
<li><a href="tirx/api/tirx.html#tvm.tirx.BufferRegion">BufferRegion() (in module tvm.tirx)</a>
</li>
<li><a href="tirx/api/tirx.html#tvm.tirx.BufferRegionType">BufferRegionType (class in tvm.tirx)</a>
@@ -1207,50 +1463,126 @@ document.write(`
<li><a href="reference/api/python/ir.html#tvm.ir.Call">Call (class in tvm.ir)</a>
</li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.call_builtin_with_ctx">call_builtin_with_ctx() (in module tvm.relax.op)</a>
+
+ <ul>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.call_builtin_with_ctx">(in module tvm.script.ir_builder.relax)</a>
</li>
- <li><a href="tirx/api/tirx.html#tvm.tirx.call_cpacked">call_cpacked() (in module tvm.tirx)</a>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.call_builtin_with_ctx">(in module tvm.script.relax)</a>
+</li>
+ </ul></li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.call_cpacked">call_cpacked() (in module tvm.script.tirx)</a>
+
+ <ul>
+ <li><a href="tirx/api/tirx.html#tvm.tirx.call_cpacked">(in module tvm.tirx)</a>
</li>
- <li><a href="tirx/api/tirx.html#tvm.tirx.call_cpacked_lowered">call_cpacked_lowered() (in module tvm.tirx)</a>
+ </ul></li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.call_cpacked_lowered">call_cpacked_lowered() (in module tvm.script.tirx)</a>
+
+ <ul>
+ <li><a href="tirx/api/tirx.html#tvm.tirx.call_cpacked_lowered">(in module tvm.tirx)</a>
</li>
+ </ul></li>
<li><a href="reference/api/python/relax/relax.html#tvm.relax.call_dps_packed">call_dps_packed() (in module tvm.relax)</a>
<ul>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.call_dps_packed">(in module tvm.relax.op)</a>
+</li>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.call_dps_packed">(in module tvm.script.ir_builder.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.call_dps_packed">(in module tvm.script.relax)</a>
</li>
<li><a href="reference/api/python/relax/relax.html#tvm.relax.BasePyModule.call_dps_packed">(tvm.relax.BasePyModule method)</a>
</li>
</ul></li>
- <li><a href="tirx/api/tirx.html#tvm.tirx.call_extern">call_extern() (in module tvm.tirx)</a>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.call_extern">call_extern() (in module tvm.script.tirx)</a>
+
+ <ul>
+ <li><a href="tirx/api/tirx.html#tvm.tirx.call_extern">(in module tvm.tirx)</a>
+</li>
+ </ul></li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.call_ffi_kernel">call_ffi_kernel() (in module tvm.script.tirx)</a>
+
+ <ul>
+ <li><a href="tirx/api/tirx.html#tvm.tirx.call_ffi_kernel">(in module tvm.tirx)</a>
+</li>
+ </ul></li>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.call_global_var_">call_global_var_() (in module tvm.script.ir_builder.relax)</a>
+
+ <ul>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.call_global_var_">(in module tvm.script.relax)</a>
</li>
- <li><a href="tirx/api/tirx.html#tvm.tirx.call_ffi_kernel">call_ffi_kernel() (in module tvm.tirx)</a>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.call_global_var_">(in module tvm.script.tirx)</a>
</li>
+ </ul></li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.call_inplace_packed">call_inplace_packed() (in module tvm.relax.op)</a>
+
+ <ul>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.call_inplace_packed">(in module tvm.script.ir_builder.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.call_inplace_packed">(in module tvm.script.relax)</a>
+</li>
+ </ul></li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.call_intrin">call_intrin() (in module tvm.script.tirx)</a>
+
+ <ul>
+ <li><a href="tirx/api/tirx.html#tvm.tirx.call_intrin">(in module tvm.tirx)</a>
</li>
- <li><a href="tirx/api/tirx.html#tvm.tirx.call_intrin">call_intrin() (in module tvm.tirx)</a>
+ </ul></li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.call_kernel">call_kernel() (in module tvm.script.tirx)</a>
</li>
- <li><a href="tirx/api/tirx.html#tvm.tirx.call_llvm_intrin">call_llvm_intrin() (in module tvm.tirx)</a>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.call_llvm_intrin">call_llvm_intrin() (in module tvm.script.tirx)</a>
+
+ <ul>
+ <li><a href="tirx/api/tirx.html#tvm.tirx.call_llvm_intrin">(in module tvm.tirx)</a>
</li>
- <li><a href="tirx/api/tirx.html#tvm.tirx.call_llvm_pure_intrin">call_llvm_pure_intrin() (in module tvm.tirx)</a>
+ </ul></li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.call_llvm_pure_intrin">call_llvm_pure_intrin() (in module tvm.script.tirx)</a>
+
+ <ul>
+ <li><a href="tirx/api/tirx.html#tvm.tirx.call_llvm_pure_intrin">(in module tvm.tirx)</a>
</li>
- <li><a href="tirx/api/tirx.html#tvm.tirx.call_packed">call_packed() (in module tvm.tirx)</a>
+ </ul></li>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.call_packed">call_packed() (in module tvm.script.ir_builder.relax)</a>
<ul>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.call_packed">(in module tvm.script.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.call_packed">(in module tvm.script.tirx)</a>
+</li>
+ <li><a href="tirx/api/tirx.html#tvm.tirx.call_packed">(in module tvm.tirx)</a>
+</li>
<li><a href="reference/api/python/runtime/disco.html#tvm.runtime.disco.Session.call_packed">(tvm.runtime.disco.Session method)</a>
</li>
</ul></li>
- <li><a href="tirx/api/tirx.html#tvm.tirx.call_packed_lowered">call_packed_lowered() (in module tvm.tirx)</a>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.call_packed_lowered">call_packed_lowered() (in module tvm.script.tirx)</a>
+
+ <ul>
+ <li><a href="tirx/api/tirx.html#tvm.tirx.call_packed_lowered">(in module tvm.tirx)</a>
</li>
- <li><a href="tirx/api/tirx.html#tvm.tirx.call_pure_extern">call_pure_extern() (in module tvm.tirx)</a>
+ </ul></li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.call_pure_extern">call_pure_extern() (in module tvm.script.tirx)</a>
+
+ <ul>
+ <li><a href="tirx/api/tirx.html#tvm.tirx.call_pure_extern">(in module tvm.tirx)</a>
</li>
+ </ul></li>
<li><a href="reference/api/python/relax/relax.html#tvm.relax.call_pure_packed">call_pure_packed() (in module tvm.relax)</a>
<ul>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.call_pure_packed">(in module tvm.relax.op)</a>
+</li>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.call_pure_packed">(in module tvm.script.ir_builder.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.call_pure_packed">(in module tvm.script.relax)</a>
</li>
</ul></li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.call_py_func">call_py_func() (in module tvm.relax.op)</a>
<ul>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.call_py_func">(in module tvm.script.ir_builder.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.call_py_func">(in module tvm.script.relax)</a>
+</li>
<li><a href="reference/api/python/relax/relax.html#tvm.relax.BasePyModule.call_py_func">(tvm.relax.BasePyModule method)</a>
</li>
</ul></li>
@@ -1262,6 +1594,10 @@ document.write(`
<ul>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.call_tir">(in module tvm.relax.op)</a>
+</li>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.call_tir">(in module tvm.script.ir_builder.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.call_tir">(in module tvm.script.relax)</a>
</li>
<li><a href="reference/api/python/relax/relax.html#tvm.relax.BasePyModule.call_tir">(tvm.relax.BasePyModule method)</a>
</li>
@@ -1272,6 +1608,10 @@ document.write(`
<ul>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.call_tir_inplace">(in module tvm.relax.op)</a>
+</li>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.call_tir_inplace">(in module tvm.script.ir_builder.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.call_tir_inplace">(in module tvm.script.relax)</a>
</li>
</ul></li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.distributed.call_tir_local_view">call_tir_local_view() (in module tvm.relax.op.distributed)</a>
@@ -1280,6 +1620,16 @@ document.write(`
<ul>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.call_tir_with_grad">(in module tvm.relax.op)</a>
+</li>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.call_tir_with_grad">(in module tvm.script.ir_builder.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.call_tir_with_grad">(in module tvm.script.relax)</a>
+</li>
+ </ul></li>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.Callable">Callable() (in module tvm.script.ir_builder.relax)</a>
+
+ <ul>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.Callable">(in module tvm.script.relax)</a>
</li>
</ul></li>
<li><a href="tirx/api/tirx.html#tvm.tirx.CallEffectKind">CallEffectKind (class in tvm.tirx)</a>
@@ -1305,16 +1655,26 @@ document.write(`
<li><a href="reference/api/python/sym.html#tvm.sym.Analyzer.can_prove_equal">can_prove_equal() (tvm.sym.Analyzer method)</a>
</li>
<li><a href="reference/api/python/sym.html#tvm.sym.Analyzer.canonical_simplify">canonical_simplify() (tvm.sym.Analyzer method)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.Layout.canonicalize">canonicalize() (tvm.script.tirx.Layout method)</a>
</li>
<li><a href="reference/api/python/relax/transform.html#tvm.relax.transform.CanonicalizeBindings">CanonicalizeBindings() (in module tvm.relax.transform)</a>
</li>
<li><a href="tirx/api/tirx.html#tvm.tirx.Cast">Cast (class in tvm.tirx)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.cast">cast() (in module tvm.script.tirx)</a>
</li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.op_attrs.AttentionAttrs.causal_mask">causal_mask (tvm.relax.op.op_attrs.AttentionAttrs property)</a>
</li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.ceil">ceil() (in module tvm.relax.op)</a>
<ul>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.ceil">(in module tvm.script.ir_builder.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.ceil">(in module tvm.script.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.ceil">(in module tvm.script.tirx)</a>
+</li>
<li><a href="reference/api/python/te.html#tvm.te.ceil">(in module tvm.te)</a>
</li>
<li><a href="tirx/api/tirx.html#tvm.tirx.ceil">(in module tvm.tirx)</a>
@@ -1328,8 +1688,12 @@ document.write(`
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.op_attrs.Pool3DAttrs.ceil_mode">(tvm.relax.op.op_attrs.Pool3DAttrs property)</a>
</li>
</ul></li>
- <li><a href="tirx/api/tirx.html#tvm.tirx.ceildiv">ceildiv() (in module tvm.tirx)</a>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.ceildiv">ceildiv() (in module tvm.script.tirx)</a>
+
+ <ul>
+ <li><a href="tirx/api/tirx.html#tvm.tirx.ceildiv">(in module tvm.tirx)</a>
</li>
+ </ul></li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.op_attrs.BatchNormAttrs.center">center (tvm.relax.op.op_attrs.BatchNormAttrs property)</a>
<ul>
@@ -1352,6 +1716,16 @@ document.write(`
</li>
<li><a href="reference/api/python/relax/analysis.html#tvm.relax.analysis.check_well_formed">check_well_formed() (in module tvm.relax.analysis)</a>
</li>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.ir.check_well_formed_">check_well_formed_() (in module tvm.script.ir_builder.ir)</a>
+
+ <ul>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.check_well_formed_">(in module tvm.script.ir_builder.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.check_well_formed_">(in module tvm.script.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.check_well_formed_">(in module tvm.script.tirx)</a>
+</li>
+ </ul></li>
<li><a href="reference/api/python/testing.html#tvm.testing.Path.chmod">chmod() (tvm.testing.Path method)</a>
</li>
<li><a href="reference/api/python/ir.html#tvm.ir.Var.chunk">chunk() (tvm.ir.Var method)</a>
@@ -1363,7 +1737,13 @@ document.write(`
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.op_attrs.MultiboxTransformLocAttrs.clip">clip (tvm.relax.op.op_attrs.MultiboxTransformLocAttrs property)</a>
</li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.clip">clip() (in module tvm.relax.op)</a>
+
+ <ul>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.clip">(in module tvm.script.ir_builder.relax)</a>
</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.clip">(in module tvm.script.relax)</a>
+</li>
+ </ul></li>
<li><a href="reference/api/python/meta_schedule.html#tvm.s_tir.meta_schedule.Mutator.clone">clone() (tvm.s_tir.meta_schedule.Mutator method)</a>
<ul>
@@ -1386,19 +1766,39 @@ document.write(`
<li><a href="reference/api/python/rpc.html#tvm.rpc.TrackerSession.close">(tvm.rpc.TrackerSession method)</a>
</li>
</ul></li>
- <li><a href="tirx/api/tirx.html#tvm.tirx.clz">clz() (in module tvm.tirx)</a>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.cluster_id">cluster_id() (in module tvm.script.tirx)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.clz">clz() (in module tvm.script.tirx)</a>
+
+ <ul>
+ <li><a href="tirx/api/tirx.html#tvm.tirx.clz">(in module tvm.tirx)</a>
</li>
+ </ul></li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.collapse_sum_like">collapse_sum_like() (in module tvm.relax.op)</a>
+
+ <ul>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.collapse_sum_like">(in module tvm.script.ir_builder.relax)</a>
</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.collapse_sum_like">(in module tvm.script.relax)</a>
+</li>
+ </ul></li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.collapse_sum_to">collapse_sum_to() (in module tvm.relax.op)</a>
+
+ <ul>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.collapse_sum_to">(in module tvm.script.ir_builder.relax)</a>
</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.collapse_sum_to">(in module tvm.script.relax)</a>
+</li>
+ </ul></li>
<li><a href="reference/api/python/relax/analysis.html#tvm.relax.analysis.collect_non_negative_expressions">collect_non_negative_expressions() (in module tvm.relax.analysis)</a>
</li>
<li><a href="reference/api/python/relax/transform.html#tvm.relax.transform.CombineParallelMatmul">CombineParallelMatmul() (in module tvm.relax.transform)</a>
</li>
- <li><a href="reference/api/python/te.html#tvm.te.comm_reducer">comm_reducer() (in module tvm.te)</a>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.comm_reducer">comm_reducer() (in module tvm.script.tirx)</a>
<ul>
+ <li><a href="reference/api/python/te.html#tvm.te.comm_reducer">(in module tvm.te)</a>
+</li>
<li><a href="tirx/api/tirx.html#tvm.tirx.comm_reducer">(in module tvm.tirx)</a>
</li>
</ul></li>
@@ -1425,6 +1825,8 @@ document.write(`
<li><a href="reference/api/python/support.html#tvm.support.nvcc.compile_cuda">compile_cuda() (in module tvm.support.nvcc)</a>
</li>
<li><a href="reference/api/python/support.html#tvm.support.xcode.compile_metal">compile_metal() (in module tvm.support.xcode)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.ComposeLayout">ComposeLayout (class in tvm.script.tirx)</a>
</li>
<li><a href="reference/api/python/relax/analysis.html#tvm.relax.analysis.computable_at_compile_time">computable_at_compile_time() (in module tvm.relax.analysis)</a>
</li>
@@ -1439,18 +1841,30 @@ document.write(`
<li><a href="reference/api/python/relax/transform.html#tvm.relax.transform.ComputePrimValue">ComputePrimValue() (in module tvm.relax.transform)</a>
</li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.concat">concat() (in module tvm.relax.op)</a>
+
+ <ul>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.concat">(in module tvm.script.ir_builder.relax)</a>
</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.concat">(in module tvm.script.relax)</a>
+</li>
+ </ul></li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.op_attrs.ConcatAttrs">ConcatAttrs (class in tvm.relax.op.op_attrs)</a>
</li>
<li><a href="reference/api/python/topi.html#tvm.topi.nn.concatenate">concatenate() (in module tvm.topi.nn)</a>
</li>
<li><a href="reference/api/python/rpc.html#tvm.rpc.connect">connect() (in module tvm.rpc)</a>
</li>
+ </ul></td>
+ <td style="width: 33%; vertical-align: top;"><ul>
<li><a href="reference/api/python/rpc.html#tvm.rpc.connect_tracker">connect_tracker() (in module tvm.rpc)</a>
</li>
<li><a href="reference/api/python/relax/relax.html#tvm.relax.const">const() (in module tvm.relax)</a>
<ul>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.const">(in module tvm.script.ir_builder.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.const">(in module tvm.script.relax)</a>
+</li>
<li><a href="reference/api/python/te.html#tvm.te.const">(in module tvm.te)</a>
</li>
</ul></li>
@@ -1460,6 +1874,14 @@ document.write(`
</li>
<li><a href="reference/api/python/ir.html#tvm.ir.Constant">Constant (class in tvm.ir)</a>
</li>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.ir.constexpr">constexpr() (in module tvm.script.ir_builder.ir)</a>
+
+ <ul>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.constexpr">(in module tvm.script.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.constexpr">(in module tvm.script.tirx)</a>
+</li>
+ </ul></li>
<li><a href="reference/api/python/sym.html#tvm.sym.ConstIntBound">ConstIntBound (class in tvm.sym)</a>
</li>
<li><a href="reference/api/python/sym.html#tvm.sym.Analyzer.constraint_scope">constraint_scope() (tvm.sym.Analyzer method)</a>
@@ -1470,8 +1892,22 @@ document.write(`
</li>
<li><a href="tirx/api/tirx.html#tvm.tirx.Continue">Continue (class in tvm.tirx)</a>
</li>
- <li><a href="tirx/api/tirx.html#tvm.tirx.continue_loop">continue_loop() (in module tvm.tirx)</a>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.Continue">Continue() (in module tvm.script.tirx)</a>
+</li>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.continue_">continue_() (in module tvm.script.ir_builder.relax)</a>
+
+ <ul>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.continue_">(in module tvm.script.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.continue_">(in module tvm.script.tirx)</a>
</li>
+ </ul></li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.continue_loop">continue_loop() (in module tvm.script.tirx)</a>
+
+ <ul>
+ <li><a href="tirx/api/tirx.html#tvm.tirx.continue_loop">(in module tvm.tirx)</a>
+</li>
+ </ul></li>
<li><a href="reference/api/python/topi.html#tvm.topi.nn.conv">conv() (in module tvm.topi.nn)</a>
</li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.nn.conv1d">conv1d() (in module tvm.relax.op.nn)</a>
@@ -1480,8 +1916,6 @@ document.write(`
<li><a href="reference/api/python/topi.html#tvm.topi.nn.conv1d">(in module tvm.topi.nn)</a>
</li>
</ul></li>
- </ul></td>
- <td style="width: 33%; vertical-align: top;"><ul>
<li><a href="reference/api/python/topi.html#tvm.topi.nn.conv1d_ncw">conv1d_ncw() (in module tvm.topi.nn)</a>
</li>
<li><a href="reference/api/python/topi.html#tvm.topi.testing.conv1d_ncw_python">conv1d_ncw_python() (in module tvm.topi.testing)</a>
@@ -1622,8 +2056,12 @@ document.write(`
</li>
<li><a href="reference/api/python/runtime/disco.html#tvm.runtime.disco.Session.copy_to_worker_0">copy_to_worker_0() (tvm.runtime.disco.Session method)</a>
</li>
- <li><a href="tirx/api/tirx.html#tvm.tirx.copysign">copysign() (in module tvm.tirx)</a>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.copysign">copysign() (in module tvm.script.tirx)</a>
+
+ <ul>
+ <li><a href="tirx/api/tirx.html#tvm.tirx.copysign">(in module tvm.tirx)</a>
</li>
+ </ul></li>
<li><a href="reference/api/python/contrib.html#tvm.contrib.coreml_runtime.CoreMLModule">CoreMLModule (class in tvm.contrib.coreml_runtime)</a>
</li>
<li><a href="reference/api/python/topi.html#tvm.topi.nn.correlation_nchw">correlation_nchw() (in module tvm.topi.nn)</a>
@@ -1633,6 +2071,12 @@ document.write(`
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.cos">cos() (in module tvm.relax.op)</a>
<ul>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.cos">(in module tvm.script.ir_builder.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.cos">(in module tvm.script.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.cos">(in module tvm.script.tirx)</a>
+</li>
<li><a href="reference/api/python/te.html#tvm.te.cos">(in module tvm.te)</a>
</li>
<li><a href="tirx/api/tirx.html#tvm.tirx.cos">(in module tvm.tirx)</a>
@@ -1641,6 +2085,12 @@ document.write(`
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.cosh">cosh() (in module tvm.relax.op)</a>
<ul>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.cosh">(in module tvm.script.ir_builder.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.cosh">(in module tvm.script.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.cosh">(in module tvm.script.tirx)</a>
+</li>
<li><a href="reference/api/python/te.html#tvm.te.cosh">(in module tvm.te)</a>
</li>
<li><a href="tirx/api/tirx.html#tvm.tirx.cosh">(in module tvm.tirx)</a>
@@ -1658,8 +2108,14 @@ document.write(`
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.op_attrs.Pool3DAttrs.count_include_pad">(tvm.relax.op.op_attrs.Pool3DAttrs property)</a>
</li>
</ul></li>
- <li><a href="reference/api/python/rpc.html#tvm.rpc.RPCSession.cpu">cpu() (tvm.rpc.RPCSession method)</a>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.cpu">cpu() (in module tvm.script.ir_builder.relax)</a>
+
+ <ul>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.cpu">(in module tvm.script.relax)</a>
+</li>
+ <li><a href="reference/api/python/rpc.html#tvm.rpc.RPCSession.cpu">(tvm.rpc.RPCSession method)</a>
</li>
+ </ul></li>
<li><a href="reference/api/python/contrib.html#tvm.contrib.coreml_runtime.create">create() (in module tvm.contrib.coreml_runtime)</a>
<ul>
@@ -1723,17 +2179,41 @@ document.write(`
<li><a href="reference/api/python/support.html#tvm.support.cc.cross_compiler">cross_compiler() (in module tvm.support.cc)</a>
</li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.nn.cross_entropy_with_logits">cross_entropy_with_logits() (in module tvm.relax.op.nn)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.cta_id">cta_id() (in module tvm.script.tirx)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.cta_id_in_cluster">cta_id_in_cluster() (in module tvm.script.tirx)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.cta_id_in_pair">cta_id_in_pair() (in module tvm.script.tirx)</a>
</li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.op_attrs.Resize2DAttrs.cubic_alpha">cubic_alpha (tvm.relax.op.op_attrs.Resize2DAttrs property)</a>
</li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.op_attrs.Resize2DAttrs.cubic_exclude">cubic_exclude (tvm.relax.op.op_attrs.Resize2DAttrs property)</a>
</li>
- <li><a href="reference/api/python/rpc.html#tvm.rpc.RPCSession.cuda">cuda() (tvm.rpc.RPCSession method)</a>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.cuda">cuda() (in module tvm.script.ir_builder.relax)</a>
+
+ <ul>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.cuda">(in module tvm.script.relax)</a>
+</li>
+ <li><a href="reference/api/python/rpc.html#tvm.rpc.RPCSession.cuda">(tvm.rpc.RPCSession method)</a>
</li>
+ </ul></li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.cumprod">cumprod() (in module tvm.relax.op)</a>
+
+ <ul>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.cumprod">(in module tvm.script.ir_builder.relax)</a>
</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.cumprod">(in module tvm.script.relax)</a>
+</li>
+ </ul></li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.cumsum">cumsum() (in module tvm.relax.op)</a>
+
+ <ul>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.cumsum">(in module tvm.script.ir_builder.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.cumsum">(in module tvm.script.relax)</a>
</li>
+ </ul></li>
<li><a href="reference/api/python/transform.html#tvm.ir.transform.PassContext.current">current() (tvm.ir.transform.PassContext static method)</a>
<ul>
@@ -1774,8 +2254,14 @@ document.write(`
</ul></li>
<li><a href="reference/api/python/meta_schedule.html#tvm.s_tir.meta_schedule.Database">Database (class in tvm.s_tir.meta_schedule)</a>
</li>
- <li><a href="reference/api/python/relax/block_builder.html#tvm.relax.block_builder.BlockBuilder.dataflow">dataflow() (tvm.relax.block_builder.BlockBuilder method)</a>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.dataflow">dataflow() (in module tvm.script.ir_builder.relax)</a>
+
+ <ul>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.dataflow">(in module tvm.script.relax)</a>
</li>
+ <li><a href="reference/api/python/relax/block_builder.html#tvm.relax.block_builder.BlockBuilder.dataflow">(tvm.relax.block_builder.BlockBuilder method)</a>
+</li>
+ </ul></li>
<li><a href="reference/api/python/relax/relax.html#tvm.relax.DataflowBlock">DataflowBlock (class in tvm.relax)</a>
</li>
<li><a href="reference/api/python/relax/transform.html#tvm.relax.transform.dataflowblock_pass">dataflowblock_pass() (in module tvm.relax.transform)</a>
@@ -1797,8 +2283,20 @@ document.write(`
<li><a href="reference/api/python/runtime/disco.html#tvm.runtime.disco.DRef.debug_get_from_remote">debug_get_from_remote() (tvm.runtime.disco.DRef method)</a>
</li>
<li><a href="reference/api/python/s_tir/schedule.html#tvm.s_tir.schedule.Trace.decisions">decisions (tvm.s_tir.schedule.Trace attribute)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.decl_buffer">decl_buffer() (in module tvm.script.tirx)</a>
</li>
<li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.ir.decl_function">decl_function() (in module tvm.script.ir_builder.ir)</a>
+</li>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.decl_mutable_cell_">decl_mutable_cell_() (in module tvm.script.ir_builder.relax)</a>
+
+ <ul>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.decl_mutable_cell_">(in module tvm.script.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.decl_mutable_cell_">(in module tvm.script.tirx)</a>
+</li>
+ </ul></li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.decl_scalar">decl_scalar() (in module tvm.script.tirx)</a>
</li>
<li><a href="reference/api/python/topi.html#tvm.topi.nn.declaration_conv2d_transpose_impl">declaration_conv2d_transpose_impl() (in module tvm.topi.nn)</a>
</li>
@@ -1869,7 +2367,13 @@ document.write(`
<li><a href="reference/api/python/topi.html#tvm.topi.testing.depthwise_conv2d_python_nhwc">depthwise_conv2d_python_nhwc() (in module tvm.topi.testing)</a>
</li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.dequantize">dequantize() (in module tvm.relax.op)</a>
+
+ <ul>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.dequantize">(in module tvm.script.ir_builder.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.dequantize">(in module tvm.script.relax)</a>
</li>
+ </ul></li>
<li><a href="reference/api/python/relax/analysis.html#tvm.relax.analysis.derive_call_ret_type">derive_call_ret_type() (in module tvm.relax.analysis)</a>
</li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.op_attrs.ArgsortAttrs.descending">descending (tvm.relax.op.op_attrs.ArgsortAttrs property)</a>
@@ -1888,18 +2392,32 @@ document.write(`
</li>
<li><a href="reference/api/python/sym.html#tvm.sym.detect_iter_map">detect_iter_map() (in module tvm.sym)</a>
</li>
- </ul></td>
- <td style="width: 33%; vertical-align: top;"><ul>
<li><a href="reference/api/python/sym.html#tvm.sym.detect_linear_equation">detect_linear_equation() (in module tvm.sym)</a>
</li>
<li><a href="reference/api/python/relax/analysis.html#tvm.relax.analysis.detect_recursion">detect_recursion() (in module tvm.relax.analysis)</a>
</li>
- <li><a href="reference/api/python/rpc.html#tvm.rpc.RPCSession.device">device() (tvm.rpc.RPCSession method)</a>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.device">device() (in module tvm.script.ir_builder.relax)</a>
+
+ <ul>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.device">(in module tvm.script.relax)</a>
+</li>
+ <li><a href="reference/api/python/rpc.html#tvm.rpc.RPCSession.device">(tvm.rpc.RPCSession method)</a>
</li>
+ </ul></li>
+ </ul></td>
+ <td style="width: 33%; vertical-align: top;"><ul>
<li><a href="reference/api/python/testing.html#tvm.testing.device_enabled">device_enabled() (in module tvm.testing)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.device_entry">device_entry() (in module tvm.script.tirx)</a>
</li>
<li><a href="reference/api/python/relax/distributed.html#tvm.relax.distributed.device_mesh">device_mesh() (in module tvm.relax.distributed)</a>
+
+ <ul>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.device_mesh">(in module tvm.script.ir_builder.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.device_mesh">(in module tvm.script.relax)</a>
</li>
+ </ul></li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.op_attrs.HintOnDeviceAttrs.device_type">device_type (tvm.relax.op.op_attrs.HintOnDeviceAttrs property)</a>
</li>
<li><a href="reference/api/python/relax/distributed.html#tvm.relax.distributed.DeviceMesh">DeviceMesh (class in tvm.relax.distributed)</a>
@@ -1939,6 +2457,8 @@ document.write(`
<li><a href="reference/api/python/topi.html#tvm.topi.nn.Workload.dilation_h">dilation_h (tvm.topi.nn.Workload attribute)</a>
</li>
<li><a href="reference/api/python/topi.html#tvm.topi.nn.Workload.dilation_w">dilation_w (tvm.topi.nn.Workload attribute)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.Layout.direct_sum">direct_sum() (tvm.script.tirx.Layout method)</a>
</li>
<li><a href="reference/api/python/support.html#tvm.support.utils.DirectoryCreatedPastAtExit">DirectoryCreatedPastAtExit</a>
</li>
@@ -1955,7 +2475,13 @@ document.write(`
</li>
</ul></li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.divide">divide() (in module tvm.relax.op)</a>
+
+ <ul>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.divide">(in module tvm.script.ir_builder.relax)</a>
</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.divide">(in module tvm.script.relax)</a>
+</li>
+ </ul></li>
<li><a href="reference/api/python/runtime/disco.html#tvm.runtime.disco.DModule">DModule (class in tvm.runtime.disco)</a>
</li>
<li><a href="reference/api/python/contrib.html#tvm.contrib.dnnl.dnnl_conv2d">dnnl_conv2d() (in module tvm.contrib.dnnl)</a>
@@ -1976,8 +2502,12 @@ document.write(`
</li>
<li><a href="reference/api/python/contrib.html#tvm.contrib.download.download_testdata">download_testdata() (in module tvm.contrib.download)</a>
</li>
- <li><a href="tirx/api/tirx.html#tvm.tirx.dp4a">dp4a() (in module tvm.tirx)</a>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.dp4a">dp4a() (in module tvm.script.tirx)</a>
+
+ <ul>
+ <li><a href="tirx/api/tirx.html#tvm.tirx.dp4a">(in module tvm.tirx)</a>
</li>
+ </ul></li>
<li><a href="reference/api/python/runtime/disco.html#tvm.runtime.disco.DPackedFunc">DPackedFunc (class in tvm.runtime.disco)</a>
</li>
<li><a href="reference/api/python/runtime/disco.html#tvm.runtime.disco.DRef">DRef (class in tvm.runtime.disco)</a>
@@ -1988,6 +2518,12 @@ document.write(`
</li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.op_attrs.ToVDeviceAttrs.dst_vdevice">dst_vdevice (tvm.relax.op.op_attrs.ToVDeviceAttrs property)</a>
</li>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.DTensor">DTensor() (in module tvm.script.ir_builder.relax)</a>
+
+ <ul>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.DTensor">(in module tvm.script.relax)</a>
+</li>
+ </ul></li>
<li><a href="reference/api/python/relax/distributed.html#tvm.relax.distributed.DTensorType">DTensorType (class in tvm.relax.distributed)</a>
</li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.op_attrs.ArgsortAttrs.dtype">dtype (tvm.relax.op.op_attrs.ArgsortAttrs property)</a>
@@ -2010,8 +2546,20 @@ document.write(`
<li><a href="reference/api/python/te.html#tvm.te.TensorSlice.dtype">(tvm.te.TensorSlice property)</a>
</li>
</ul></li>
- <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.ir.dummy_global_info">dummy_global_info() (in module tvm.script.ir_builder.ir)</a>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.dtype">dtype() (in module tvm.script.ir_builder.relax)</a>
+
+ <ul>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.dtype">(in module tvm.script.relax)</a>
+</li>
+ </ul></li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.DtypeConstructor">DtypeConstructor (class in tvm.script.tirx)</a>
+</li>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.dummy_global_info">dummy_global_info() (in module tvm.script.ir_builder.relax)</a>
+
+ <ul>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.dummy_global_info">(in module tvm.script.relax)</a>
</li>
+ </ul></li>
<li><a href="reference/api/python/relax/relax.html#tvm.relax.DummyGlobalInfo">DummyGlobalInfo (class in tvm.relax)</a>
</li>
<li><a href="reference/api/python/meta_schedule.html#tvm.s_tir.meta_schedule.Database.dump_pruned">dump_pruned() (tvm.s_tir.meta_schedule.Database method)</a>
@@ -2021,7 +2569,13 @@ document.write(`
<li><a href="reference/api/python/instrument.html#tvm.ir.instrument.DumpIR">DumpIR (class in tvm.ir.instrument)</a>
</li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.dynamic_strided_slice">dynamic_strided_slice() (in module tvm.relax.op)</a>
+
+ <ul>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.dynamic_strided_slice">(in module tvm.script.ir_builder.relax)</a>
</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.dynamic_strided_slice">(in module tvm.script.relax)</a>
+</li>
+ </ul></li>
<li><a href="reference/api/python/relax/frontend.html#tvm.relax.frontend.torch.dynamo_capture_subgraphs">dynamo_capture_subgraphs() (in module tvm.relax.frontend.torch)</a>
</li>
</ul></td>
@@ -2031,15 +2585,53 @@ document.write(`
<table style="width: 100%" class="indextable genindextable"><tr>
<td style="width: 33%; vertical-align: top;"><ul>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.einsum">einsum() (in module tvm.relax.op)</a>
+
+ <ul>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.einsum">(in module tvm.script.ir_builder.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.einsum">(in module tvm.script.relax)</a>
</li>
+ </ul></li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.op_attrs.EinsumAttrs">EinsumAttrs (class in tvm.relax.op.op_attrs)</a>
</li>
<li><a href="reference/api/python/ir.html#tvm.ir.Var.elem_offset_of">elem_offset_of() (tvm.ir.Var method)</a>
</li>
<li><a href="reference/api/python/relax/transform.html#tvm.relax.transform.EliminateCommonSubexpr">EliminateCommonSubexpr() (in module tvm.relax.transform)</a>
</li>
- <li><a href="reference/api/python/relax/block_builder.html#tvm.relax.block_builder.BlockBuilder.emit">emit() (tvm.relax.block_builder.BlockBuilder method)</a>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.Else">Else() (in module tvm.script.ir_builder.relax)</a>
+
+ <ul>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.Else">(in module tvm.script.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.Else">(in module tvm.script.tirx)</a>
+</li>
+ </ul></li>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.else_">else_() (in module tvm.script.ir_builder.relax)</a>
+
+ <ul>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.else_">(in module tvm.script.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.else_">(in module tvm.script.tirx)</a>
+</li>
+ </ul></li>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.emit">emit() (in module tvm.script.ir_builder.relax)</a>
+
+ <ul>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.emit">(in module tvm.script.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.emit">(in module tvm.script.tirx)</a>
+</li>
+ <li><a href="reference/api/python/relax/block_builder.html#tvm.relax.block_builder.BlockBuilder.emit">(tvm.relax.block_builder.BlockBuilder method)</a>
</li>
+ </ul></li>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.emit_">emit_() (in module tvm.script.ir_builder.relax)</a>
+
+ <ul>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.emit_">(in module tvm.script.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.emit_">(in module tvm.script.tirx)</a>
+</li>
+ </ul></li>
<li><a href="reference/api/python/relax/relax.html#tvm.relax.ExecBuilder.emit_call">emit_call() (tvm.relax.ExecBuilder method)</a>
</li>
<li><a href="reference/api/python/relax/block_builder.html#tvm.relax.block_builder.BlockBuilder.emit_func_output">emit_func_output() (tvm.relax.block_builder.BlockBuilder method)</a>
@@ -2048,14 +2640,44 @@ document.write(`
</li>
<li><a href="reference/api/python/relax/relax.html#tvm.relax.ExecBuilder.emit_if">emit_if() (tvm.relax.ExecBuilder method)</a>
</li>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.emit_match_cast">emit_match_cast() (in module tvm.script.ir_builder.relax)</a>
+
+ <ul>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.emit_match_cast">(in module tvm.script.relax)</a>
+</li>
+ </ul></li>
<li><a href="reference/api/python/relax/block_builder.html#tvm.relax.block_builder.BlockBuilder.emit_normalized">emit_normalized() (tvm.relax.block_builder.BlockBuilder method)</a>
</li>
<li><a href="reference/api/python/relax/block_builder.html#tvm.relax.block_builder.BlockBuilder.emit_output">emit_output() (tvm.relax.block_builder.BlockBuilder method)</a>
</li>
<li><a href="reference/api/python/relax/relax.html#tvm.relax.ExecBuilder.emit_ret">emit_ret() (tvm.relax.ExecBuilder method)</a>
</li>
- <li><a href="reference/api/python/relax/block_builder.html#tvm.relax.block_builder.BlockBuilder.emit_te">emit_te() (tvm.relax.block_builder.BlockBuilder method)</a>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.emit_te">emit_te() (in module tvm.script.ir_builder.relax)</a>
+
+ <ul>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.emit_te">(in module tvm.script.relax)</a>
+</li>
+ <li><a href="reference/api/python/relax/block_builder.html#tvm.relax.block_builder.BlockBuilder.emit_te">(tvm.relax.block_builder.BlockBuilder method)</a>
+</li>
+ </ul></li>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.emit_var_binding">emit_var_binding() (in module tvm.script.ir_builder.relax)</a>
+
+ <ul>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.emit_var_binding">(in module tvm.script.relax)</a>
+</li>
+ </ul></li>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.emit_with_ty">emit_with_ty() (in module tvm.script.ir_builder.relax)</a>
+
+ <ul>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.emit_with_ty">(in module tvm.script.relax)</a>
+</li>
+ </ul></li>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.emit_with_type">emit_with_type() (in module tvm.script.ir_builder.relax)</a>
+
+ <ul>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.emit_with_type">(in module tvm.script.relax)</a>
</li>
+ </ul></li>
<li><a href="reference/api/python/runtime/disco.html#tvm.runtime.disco.Session.empty">empty() (tvm.runtime.disco.Session method)</a>
</li>
<li><a href="reference/api/python/s_tir/tensor_intrin.html#tvm.s_tir.tensor_intrin.enabled">enabled() (in module tvm.s_tir.tensor_intrin)</a>
@@ -2066,8 +2688,12 @@ document.write(`
</li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.grad.end_checkpoint">end_checkpoint() (in module tvm.relax.op.grad)</a>
</li>
- <li><a href="tirx/api/tirx.html#tvm.tirx.end_profile_intrinsic">end_profile_intrinsic() (in module tvm.tirx)</a>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.end_profile_intrinsic">end_profile_intrinsic() (in module tvm.script.tirx)</a>
+
+ <ul>
+ <li><a href="tirx/api/tirx.html#tvm.tirx.end_profile_intrinsic">(in module tvm.tirx)</a>
</li>
+ </ul></li>
<li><a href="reference/api/python/relax/block_builder.html#tvm.relax.block_builder.BlockBuilder.end_scope">end_scope() (tvm.relax.block_builder.BlockBuilder method)</a>
</li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.memory.ensure_zero_offset">ensure_zero_offset() (in module tvm.relax.op.memory)</a>
@@ -2075,6 +2701,8 @@ document.write(`
<li><a href="reference/api/python/instrument.html#tvm.ir.instrument.PassInstrument.enter_pass_ctx">enter_pass_ctx() (tvm.ir.instrument.PassInstrument method)</a>
</li>
<li><a href="reference/api/python/s_tir/schedule.html#tvm.s_tir.schedule.Schedule.enter_postproc">enter_postproc() (tvm.s_tir.schedule.Schedule method)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.env_thread">env_thread() (in module tvm.script.tirx)</a>
</li>
<li><a href="reference/api/python/ir.html#tvm.ir.EnvFunc">EnvFunc (class in tvm.ir)</a>
</li>
@@ -2092,8 +2720,22 @@ document.write(`
</ul></li>
<li><a href="tirx/api/tirx.html#tvm.tirx.EQ">EQ (class in tvm.tirx)</a>
</li>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.eq_">eq_() (in module tvm.script.ir_builder.relax)</a>
+
+ <ul>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.eq_">(in module tvm.script.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.eq_">(in module tvm.script.tirx)</a>
+</li>
+ </ul></li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.equal">equal() (in module tvm.relax.op)</a>
+
+ <ul>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.equal">(in module tvm.script.ir_builder.relax)</a>
</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.equal">(in module tvm.script.relax)</a>
+</li>
+ </ul></li>
<li><a href="reference/api/python/topi.html#tvm.topi.nn.equal_const_int">equal_const_int() (in module tvm.topi.nn)</a>
</li>
<li><a href="reference/api/python/relax/analysis.html#tvm.relax.analysis.erase_to_well_defined">erase_to_well_defined() (in module tvm.relax.analysis)</a>
@@ -2101,11 +2743,19 @@ document.write(`
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.erf">erf() (in module tvm.relax.op)</a>
<ul>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.erf">(in module tvm.script.ir_builder.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.erf">(in module tvm.script.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.erf">(in module tvm.script.tirx)</a>
+</li>
<li><a href="reference/api/python/te.html#tvm.te.erf">(in module tvm.te)</a>
</li>
<li><a href="tirx/api/tirx.html#tvm.tirx.erf">(in module tvm.tirx)</a>
</li>
</ul></li>
+ </ul></td>
+ <td style="width: 33%; vertical-align: top;"><ul>
<li><a href="reference/api/python/relax/analysis.html#tvm.relax.analysis.estimate_memory_usage">estimate_memory_usage() (in module tvm.relax.analysis)</a>
</li>
<li><a href="reference/api/python/sym.html#tvm.sym.estimate_region_lower_bound">estimate_region_lower_bound() (in module tvm.sym)</a>
@@ -2118,15 +2768,23 @@ document.write(`
</li>
<li><a href="tirx/api/tirx.html#tvm.tirx.Evaluate">Evaluate (class in tvm.tirx)</a>
</li>
- </ul></td>
- <td style="width: 33%; vertical-align: top;"><ul>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.evaluate">evaluate() (in module tvm.script.tirx)</a>
+</li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.ewise_fma">ewise_fma() (in module tvm.relax.op)</a>
+
+ <ul>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.ewise_fma">(in module tvm.script.ir_builder.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.ewise_fma">(in module tvm.script.relax)</a>
</li>
+ </ul></li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.op_attrs.ScanopAttrs.exclusive">exclusive (tvm.relax.op.op_attrs.ScanopAttrs property)</a>
</li>
<li><a href="reference/api/python/contrib.html#tvm.contrib.hexagon.ContainerSession.exec">exec() (tvm.contrib.hexagon.ContainerSession method)</a>
</li>
<li><a href="reference/api/python/relax/relax.html#tvm.relax.ExecBuilder">ExecBuilder (class in tvm.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.ExecScope">ExecScope (class in tvm.script.tirx)</a>
</li>
<li><a href="reference/api/python/contrib.html#tvm.contrib.cudnn.exists">exists() (in module tvm.contrib.cudnn)</a>
@@ -2139,17 +2797,37 @@ document.write(`
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.exp">exp() (in module tvm.relax.op)</a>
<ul>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.exp">(in module tvm.script.ir_builder.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.exp">(in module tvm.script.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.exp">(in module tvm.script.tirx)</a>
+</li>
<li><a href="reference/api/python/te.html#tvm.te.exp">(in module tvm.te)</a>
</li>
<li><a href="tirx/api/tirx.html#tvm.tirx.exp">(in module tvm.tirx)</a>
</li>
</ul></li>
- <li><a href="tirx/api/tirx.html#tvm.tirx.exp10">exp10() (in module tvm.tirx)</a>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.exp10">exp10() (in module tvm.script.tirx)</a>
+
+ <ul>
+ <li><a href="tirx/api/tirx.html#tvm.tirx.exp10">(in module tvm.tirx)</a>
</li>
- <li><a href="tirx/api/tirx.html#tvm.tirx.exp2">exp2() (in module tvm.tirx)</a>
+ </ul></li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.exp2">exp2() (in module tvm.script.tirx)</a>
+
+ <ul>
+ <li><a href="tirx/api/tirx.html#tvm.tirx.exp2">(in module tvm.tirx)</a>
</li>
+ </ul></li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.expand_dims">expand_dims() (in module tvm.relax.op)</a>
+
+ <ul>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.expand_dims">(in module tvm.script.ir_builder.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.expand_dims">(in module tvm.script.relax)</a>
</li>
+ </ul></li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.op_attrs.ExpandDimsAttrs">ExpandDimsAttrs (class in tvm.relax.op.op_attrs)</a>
</li>
<li><a href="reference/api/python/relax/transform.html#tvm.relax.transform.ExpandMatmulOfSum">ExpandMatmulOfSum() (in module tvm.relax.transform)</a>
@@ -2188,8 +2866,14 @@ document.write(`
</li>
<li><a href="reference/api/python/ir.html#tvm.ir.ExprWithOp">ExprWithOp (class in tvm.ir)</a>
</li>
- <li><a href="reference/api/python/rpc.html#tvm.rpc.RPCSession.ext_dev">ext_dev() (tvm.rpc.RPCSession method)</a>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.ext_dev">ext_dev() (in module tvm.script.ir_builder.relax)</a>
+
+ <ul>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.ext_dev">(in module tvm.script.relax)</a>
</li>
+ <li><a href="reference/api/python/rpc.html#tvm.rpc.RPCSession.ext_dev">(tvm.rpc.RPCSession method)</a>
+</li>
+ </ul></li>
<li><a href="reference/api/python/sym.html#tvm.sym.Extension">Extension (class in tvm.sym)</a>
</li>
<li><a href="reference/api/python/relax/relax.html#tvm.relax.extern">extern() (in module tvm.relax)</a>
@@ -2211,9 +2895,21 @@ document.write(`
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.op_attrs.Resize2DAttrs.extrapolation_value">extrapolation_value (tvm.relax.op.op_attrs.Resize2DAttrs property)</a>
</li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.eye">eye() (in module tvm.relax.op)</a>
+
+ <ul>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.eye">(in module tvm.script.ir_builder.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.eye">(in module tvm.script.relax)</a>
</li>
+ </ul></li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.eye_like">eye_like() (in module tvm.relax.op)</a>
+
+ <ul>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.eye_like">(in module tvm.script.ir_builder.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.eye_like">(in module tvm.script.relax)</a>
</li>
+ </ul></li>
</ul></td>
</tr></table>
@@ -2221,6 +2917,8 @@ document.write(`
<table style="width: 100%" class="indextable genindextable"><tr>
<td style="width: 33%; vertical-align: top;"><ul>
<li><a href="reference/api/python/relax/relax.html#tvm.relax.ExecBuilder.f">f() (tvm.relax.ExecBuilder method)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.fabs">fabs() (in module tvm.script.tirx)</a>
</li>
<li><a href="reference/api/python/topi.html#tvm.topi.nn.fast_softmax">fast_softmax() (in module tvm.topi.nn)</a>
</li>
@@ -2233,6 +2931,8 @@ document.write(`
<li><a href="reference/api/python/support.html#tvm.support.utils.FileLock">FileLock (class in tvm.support.utils)</a>
</li>
<li><a href="reference/api/python/support.html#tvm.support.utils.filelock">filelock() (in module tvm.support.utils)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.filter">filter() (in module tvm.script.tirx)</a>
</li>
<li><a href="tirx/api/transform.html#tvm.tirx.transform.Filter">Filter() (in module tvm.tirx.transform)</a>
</li>
@@ -2263,13 +2963,23 @@ document.write(`
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.flatten">flatten() (in module tvm.relax.op)</a>
<ul>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.flatten">(in module tvm.script.ir_builder.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.flatten">(in module tvm.script.relax)</a>
+</li>
<li><a href="reference/api/python/topi.html#tvm.topi.nn.flatten">(in module tvm.topi.nn)</a>
</li>
</ul></li>
<li><a href="tirx/api/transform.html#tvm.tirx.transform.FlattenBuffer">FlattenBuffer() (in module tvm.tirx.transform)</a>
</li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.flip">flip() (in module tvm.relax.op)</a>
+
+ <ul>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.flip">(in module tvm.script.ir_builder.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.flip">(in module tvm.script.relax)</a>
</li>
+ </ul></li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.op_attrs.FlipAttrs">FlipAttrs (class in tvm.relax.op.op_attrs)</a>
</li>
<li><a href="tirx/api/tirx.html#tvm.tirx.FloatImm">FloatImm (class in tvm.tirx)</a>
@@ -2277,45 +2987,87 @@ document.write(`
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.floor">floor() (in module tvm.relax.op)</a>
<ul>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.floor">(in module tvm.script.ir_builder.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.floor">(in module tvm.script.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.floor">(in module tvm.script.tirx)</a>
+</li>
<li><a href="reference/api/python/te.html#tvm.te.floor">(in module tvm.te)</a>
</li>
<li><a href="tirx/api/tirx.html#tvm.tirx.floor">(in module tvm.tirx)</a>
</li>
</ul></li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.floor_divide">floor_divide() (in module tvm.relax.op)</a>
+
+ <ul>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.floor_divide">(in module tvm.script.ir_builder.relax)</a>
</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.floor_divide">(in module tvm.script.relax)</a>
+</li>
+ </ul></li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.floor_mod">floor_mod() (in module tvm.relax.op)</a>
+
+ <ul>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.floor_mod">(in module tvm.script.ir_builder.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.floor_mod">(in module tvm.script.relax)</a>
</li>
+ </ul></li>
<li><a href="tirx/api/tirx.html#tvm.tirx.FloorDiv">FloorDiv (class in tvm.tirx)</a>
</li>
- <li><a href="reference/api/python/te.html#tvm.te.floordiv">floordiv() (in module tvm.te)</a>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.floordiv">floordiv() (in module tvm.script.tirx)</a>
<ul>
+ <li><a href="reference/api/python/te.html#tvm.te.floordiv">(in module tvm.te)</a>
+</li>
<li><a href="tirx/api/tirx.html#tvm.tirx.floordiv">(in module tvm.tirx)</a>
</li>
</ul></li>
<li><a href="tirx/api/tirx.html#tvm.tirx.FloorMod">FloorMod (class in tvm.tirx)</a>
</li>
- <li><a href="reference/api/python/te.html#tvm.te.floormod">floormod() (in module tvm.te)</a>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.floormod">floormod() (in module tvm.script.tirx)</a>
<ul>
+ <li><a href="reference/api/python/te.html#tvm.te.floormod">(in module tvm.te)</a>
+</li>
<li><a href="tirx/api/tirx.html#tvm.tirx.floormod">(in module tvm.tirx)</a>
</li>
</ul></li>
- <li><a href="reference/api/python/te.html#tvm.te.fmod">fmod() (in module tvm.te)</a>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.fma">fma() (in module tvm.script.tirx)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.fmod">fmod() (in module tvm.script.tirx)</a>
<ul>
+ <li><a href="reference/api/python/te.html#tvm.te.fmod">(in module tvm.te)</a>
+</li>
<li><a href="tirx/api/tirx.html#tvm.tirx.fmod">(in module tvm.tirx)</a>
</li>
</ul></li>
<li><a href="reference/api/python/relax/transform.html#tvm.relax.transform.FoldBatchnormToConv2D">FoldBatchnormToConv2D (class in tvm.relax.transform)</a>
</li>
- </ul></td>
- <td style="width: 33%; vertical-align: top;"><ul>
<li><a href="reference/api/python/relax/transform.html#tvm.relax.transform.FoldConstant">FoldConstant() (in module tvm.relax.transform)</a>
</li>
<li><a href="tirx/api/tirx.html#tvm.tirx.For">For (class in tvm.tirx)</a>
</li>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.For">For() (in module tvm.script.ir_builder.relax)</a>
+
+ <ul>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.For">(in module tvm.script.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.For">(in module tvm.script.tirx)</a>
+</li>
+ </ul></li>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.for_">for_() (in module tvm.script.ir_builder.relax)</a>
+
+ <ul>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.for_">(in module tvm.script.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.for_">(in module tvm.script.tirx)</a>
+</li>
+ </ul></li>
+ </ul></td>
+ <td style="width: 33%; vertical-align: top;"><ul>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.op_attrs.NonMaximumSuppressionAttrs.force_suppress">force_suppress (tvm.relax.op.op_attrs.NonMaximumSuppressionAttrs property)</a>
</li>
<li><a href="tirx/api/transform.html#tvm.tirx.transform.ForceNarrowIndexToInt32">ForceNarrowIndexToInt32() (in module tvm.tirx.transform)</a>
@@ -2327,6 +3079,8 @@ document.write(`
<li><a href="tirx/api/transform.html#tvm.tirx.transform.FP8ComputeLegalize">FP8ComputeLegalize() (in module tvm.tirx.transform)</a>
</li>
<li><a href="tirx/api/transform.html#tvm.tirx.transform.FP8StorageLegalize">FP8StorageLegalize() (in module tvm.tirx.transform)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.frame_scope">frame_scope() (in module tvm.script.tirx)</a>
</li>
<li><a href="reference/api/python/relax/analysis.html#tvm.relax.analysis.free_symbolic_vars">free_symbolic_vars() (in module tvm.relax.analysis)</a>
</li>
@@ -2343,6 +3097,8 @@ document.write(`
<li><a href="tirx/api/tirx.html#tvm.tirx.IndexMap.from_func">from_func() (tvm.tirx.IndexMap static method)</a>
</li>
<li><a href="reference/api/python/relax/frontend.html#tvm.relax.frontend.torch.from_fx">from_fx() (in module tvm.relax.frontend.torch)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.TileLayout.from_iters">from_iters() (tvm.script.tirx.TileLayout static method)</a>
</li>
<li><a href="reference/api/python/ir.html#tvm.ir.Range.from_min_extent">from_min_extent() (tvm.ir.Range static method)</a>
</li>
@@ -2355,19 +3111,81 @@ document.write(`
<li><a href="reference/api/python/relax/frontend.html#tvm.relax.frontend.tflite.from_tflite">from_tflite() (in module tvm.relax.frontend.tflite)</a>
</li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.full">full() (in module tvm.relax.op)</a>
+
+ <ul>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.full">(in module tvm.script.ir_builder.relax)</a>
</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.full">(in module tvm.script.relax)</a>
+</li>
+ </ul></li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.full_like">full_like() (in module tvm.relax.op)</a>
+
+ <ul>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.full_like">(in module tvm.script.ir_builder.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.full_like">(in module tvm.script.relax)</a>
</li>
+ </ul></li>
<li><a href="reference/api/python/contrib.html#tvm.contrib.nnpack.fully_connected_inference">fully_connected_inference() (in module tvm.contrib.nnpack)</a>
</li>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.func_attr">func_attr() (in module tvm.script.ir_builder.relax)</a>
+
+ <ul>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.func_attr">(in module tvm.script.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.func_attr">(in module tvm.script.tirx)</a>
+</li>
+ </ul></li>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.func_name">func_name() (in module tvm.script.ir_builder.relax)</a>
+
+ <ul>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.func_name">(in module tvm.script.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.func_name">(in module tvm.script.tirx)</a>
+</li>
+ </ul></li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.func_ret">func_ret() (in module tvm.script.tirx)</a>
+</li>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.func_ret_ty">func_ret_ty() (in module tvm.script.ir_builder.relax)</a>
+
+ <ul>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.func_ret_ty">(in module tvm.script.relax)</a>
+</li>
+ </ul></li>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.func_ret_type">func_ret_type() (in module tvm.script.ir_builder.relax)</a>
+
+ <ul>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.func_ret_type">(in module tvm.script.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.func_ret_type">(in module tvm.script.tirx)</a>
+</li>
+ </ul></li>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.func_ret_value">func_ret_value() (in module tvm.script.ir_builder.relax)</a>
+
+ <ul>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.func_ret_value">(in module tvm.script.relax)</a>
+</li>
+ </ul></li>
<li><a href="reference/api/python/s_tir/schedule.html#tvm.s_tir.schedule.Schedule.func_working_on">func_working_on (tvm.s_tir.schedule.Schedule property)</a>
</li>
<li><a href="reference/api/python/relax/relax.html#tvm.relax.Function">Function (class in tvm.relax)</a>
</li>
- <li><a href="reference/api/python/relax/block_builder.html#tvm.relax.block_builder.BlockBuilder.function">function() (tvm.relax.block_builder.BlockBuilder method)</a>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.function">function() (in module tvm.script.ir_builder.relax)</a>
<ul>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.function">(in module tvm.script.relax)</a>
+</li>
+ <li><a href="reference/api/python/relax/block_builder.html#tvm.relax.block_builder.BlockBuilder.function">(tvm.relax.block_builder.BlockBuilder method)</a>
+</li>
<li><a href="reference/api/python/relax/relax.html#tvm.relax.ExecBuilder.function">(tvm.relax.ExecBuilder method)</a>
+</li>
+ </ul></li>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.function_">function_() (in module tvm.script.ir_builder.relax)</a>
+
+ <ul>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.function_">(in module tvm.script.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.function_">(in module tvm.script.tirx)</a>
</li>
</ul></li>
<li><a href="reference/api/python/relax/transform.html#tvm.relax.transform.function_pass">function_pass() (in module tvm.relax.transform)</a>
@@ -2401,9 +3219,21 @@ document.write(`
<table style="width: 100%" class="indextable genindextable"><tr>
<td style="width: 33%; vertical-align: top;"><ul>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.gather_elements">gather_elements() (in module tvm.relax.op)</a>
+
+ <ul>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.gather_elements">(in module tvm.script.ir_builder.relax)</a>
</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.gather_elements">(in module tvm.script.relax)</a>
+</li>
+ </ul></li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.gather_nd">gather_nd() (in module tvm.relax.op)</a>
+
+ <ul>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.gather_nd">(in module tvm.script.ir_builder.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.gather_nd">(in module tvm.script.relax)</a>
</li>
+ </ul></li>
<li><a href="reference/api/python/topi.html#tvm.topi.testing.gather_nd_python">gather_nd_python() (in module tvm.topi.testing)</a>
</li>
<li><a href="reference/api/python/topi.html#tvm.topi.testing.gather_python">gather_python() (in module tvm.topi.testing)</a>
@@ -2416,6 +3246,14 @@ document.write(`
</li>
<li><a href="tirx/api/tirx.html#tvm.tirx.GE">GE (class in tvm.tirx)</a>
</li>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.ge_">ge_() (in module tvm.script.ir_builder.relax)</a>
+
+ <ul>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.ge_">(in module tvm.script.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.ge_">(in module tvm.script.tirx)</a>
+</li>
+ </ul></li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.nn.gelu">gelu() (in module tvm.relax.op.nn)</a>
</li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.nn.gelu_tanh">gelu_tanh() (in module tvm.relax.op.nn)</a>
@@ -2470,8 +3308,12 @@ document.write(`
</li>
<li><a href="reference/api/python/topi.html#tvm.topi.image.get_3d_pixel">get_3d_pixel() (in module tvm.topi.image)</a>
</li>
- <li><a href="tirx/api/tirx.html#tvm.tirx.get_active_lane_mask">get_active_lane_mask() (in module tvm.tirx)</a>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.get_active_lane_mask">get_active_lane_mask() (in module tvm.script.tirx)</a>
+
+ <ul>
+ <li><a href="tirx/api/tirx.html#tvm.tirx.get_active_lane_mask">(in module tvm.tirx)</a>
</li>
+ </ul></li>
<li><a href="reference/api/python/meta_schedule.html#tvm.s_tir.meta_schedule.Database.get_all_tuning_records">get_all_tuning_records() (tvm.s_tir.meta_schedule.Database method)</a>
</li>
<li><a href="reference/api/python/ir.html#tvm.ir.IRModule.get_attr">get_attr() (tvm.ir.IRModule method)</a>
@@ -2575,6 +3417,8 @@ document.write(`
<li><a href="reference/api/python/s_tir/analysis.html#tvm.s_tir.analysis.get_sblock_read_write_region">get_sblock_read_write_region() (in module tvm.s_tir.analysis)</a>
</li>
<li><a href="reference/api/python/s_tir/schedule.html#tvm.s_tir.schedule.ScheduleState.get_sblock_scope">get_sblock_scope() (tvm.s_tir.schedule.ScheduleState method)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.TileLayout.get_scope">get_scope() (tvm.script.tirx.TileLayout method)</a>
</li>
<li><a href="reference/api/python/relax/relax.html#tvm.relax.get_shape_of">get_shape_of() (in module tvm.relax)</a>
</li>
@@ -2629,8 +3473,22 @@ document.write(`
<li><a href="reference/api/python/relax/transform.html#tvm.relax.transform.Gradient">Gradient() (in module tvm.relax.transform)</a>
</li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.greater">greater() (in module tvm.relax.op)</a>
+
+ <ul>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.greater">(in module tvm.script.ir_builder.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.greater">(in module tvm.script.relax)</a>
</li>
+ </ul></li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.greater_equal">greater_equal() (in module tvm.relax.op)</a>
+
+ <ul>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.greater_equal">(in module tvm.script.ir_builder.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.greater_equal">(in module tvm.script.relax)</a>
+</li>
+ </ul></li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.grid">grid() (in module tvm.script.tirx)</a>
</li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.image.grid_sample">grid_sample() (in module tvm.relax.op.image)</a>
@@ -2640,8 +3498,12 @@ document.write(`
</ul></li>
<li><a href="reference/api/python/topi.html#tvm.topi.testing.grid_sample_python">grid_sample_python() (in module tvm.topi.testing)</a>
</li>
- <li><a href="reference/api/python/testing.html#tvm.testing.Path.group">group() (tvm.testing.Path method)</a>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.TileLayout.group">group() (tvm.script.tirx.TileLayout method)</a>
+
+ <ul>
+ <li><a href="reference/api/python/testing.html#tvm.testing.Path.group">(tvm.testing.Path method)</a>
</li>
+ </ul></li>
<li><a href="reference/api/python/topi.html#tvm.topi.nn.group_conv1d_ncw">group_conv1d_ncw() (in module tvm.topi.nn)</a>
</li>
<li><a href="reference/api/python/topi.html#tvm.topi.testing.group_conv1d_ncw_python">group_conv1d_ncw_python() (in module tvm.topi.testing)</a>
@@ -2659,6 +3521,8 @@ document.write(`
<li><a href="reference/api/python/topi.html#tvm.topi.nn.group_conv2d_transpose_nchw">group_conv2d_transpose_nchw() (in module tvm.topi.nn)</a>
</li>
<li><a href="reference/api/python/topi.html#tvm.topi.nn.group_conv3d_transpose_ncdhw">group_conv3d_transpose_ncdhw() (in module tvm.topi.nn)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.TileLayout.group_many">group_many() (tvm.script.tirx.TileLayout method)</a>
</li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.nn.group_norm">group_norm() (in module tvm.relax.op.nn)</a>
@@ -2688,6 +3552,14 @@ document.write(`
</ul></li>
<li><a href="tirx/api/tirx.html#tvm.tirx.GT">GT (class in tvm.tirx)</a>
</li>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.gt_">gt_() (in module tvm.script.ir_builder.relax)</a>
+
+ <ul>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.gt_">(in module tvm.script.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.gt_">(in module tvm.script.tirx)</a>
+</li>
+ </ul></li>
</ul></td>
</tr></table>
@@ -2695,9 +3567,21 @@ document.write(`
<table style="width: 100%" class="indextable genindextable"><tr>
<td style="width: 33%; vertical-align: top;"><ul>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.hamming_window">hamming_window() (in module tvm.relax.op)</a>
+
+ <ul>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.hamming_window">(in module tvm.script.ir_builder.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.hamming_window">(in module tvm.script.relax)</a>
+</li>
+ </ul></li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.handle">handle() (in module tvm.script.tirx)</a>
</li>
- <li><a href="tirx/api/tirx.html#tvm.tirx.handle_add_byte_offset">handle_add_byte_offset() (in module tvm.tirx)</a>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.handle_add_byte_offset">handle_add_byte_offset() (in module tvm.script.tirx)</a>
+
+ <ul>
+ <li><a href="tirx/api/tirx.html#tvm.tirx.handle_add_byte_offset">(in module tvm.tirx)</a>
</li>
+ </ul></li>
<li><a href="reference/api/python/testing.html#tvm.testing.Path.hardlink_to">hardlink_to() (tvm.testing.Path method)</a>
</li>
<li><a href="reference/api/python/ir.html#tvm.ir.Op.has_attr">has_attr() (tvm.ir.Op method)</a>
@@ -2717,17 +3601,31 @@ document.write(`
<li><a href="reference/api/python/support.html#tvm.support.rocm.have_matrixcore">have_matrixcore() (in module tvm.support.rocm)</a>
</li>
<li><a href="reference/api/python/support.html#tvm.support.nvcc.have_tensorcore">have_tensorcore() (in module tvm.support.nvcc)</a>
+</li>
+ <li><a href="reference/api/python/topi.html#tvm.topi.nn.Workload.height">height (tvm.topi.nn.Workload attribute)</a>
</li>
</ul></td>
<td style="width: 33%; vertical-align: top;"><ul>
- <li><a href="reference/api/python/topi.html#tvm.topi.nn.Workload.height">height (tvm.topi.nn.Workload attribute)</a>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.hexagon">hexagon() (in module tvm.script.ir_builder.relax)</a>
+
+ <ul>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.hexagon">(in module tvm.script.relax)</a>
</li>
- <li><a href="reference/api/python/rpc.html#tvm.rpc.RPCSession.hexagon">hexagon() (tvm.rpc.RPCSession method)</a>
+ <li><a href="reference/api/python/rpc.html#tvm.rpc.RPCSession.hexagon">(tvm.rpc.RPCSession method)</a>
</li>
+ </ul></li>
<li><a href="reference/api/python/contrib.html#tvm.contrib.hexagon.hexagon_clang_plus">hexagon_clang_plus() (in module tvm.contrib.hexagon)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.hint">hint() (in module tvm.script.tirx)</a>
</li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.hint_on_device">hint_on_device() (in module tvm.relax.op)</a>
+
+ <ul>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.hint_on_device">(in module tvm.script.ir_builder.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.hint_on_device">(in module tvm.script.relax)</a>
</li>
+ </ul></li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.op_attrs.HintOnDeviceAttrs">HintOnDeviceAttrs (class in tvm.relax.op.op_attrs)</a>
</li>
<li><a href="tirx/api/transform.html#tvm.tirx.transform.HoistExpressionConfig.hoisted_conditionals">hoisted_conditionals (tvm.tirx.transform.HoistExpressionConfig property)</a>
@@ -2744,8 +3642,12 @@ document.write(`
</li>
<li><a href="reference/api/python/testing.html#tvm.testing.Path.home">home() (tvm.testing.Path class method)</a>
</li>
- <li><a href="tirx/api/tirx.html#tvm.tirx.hypot">hypot() (in module tvm.tirx)</a>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.hypot">hypot() (in module tvm.script.tirx)</a>
+
+ <ul>
+ <li><a href="tirx/api/tirx.html#tvm.tirx.hypot">(in module tvm.tirx)</a>
</li>
+ </ul></li>
</ul></td>
</tr></table>
@@ -2762,10 +3664,36 @@ document.write(`
</li>
<li><a href="reference/api/python/relax/relax.html#tvm.relax.If">If (class in tvm.relax)</a>
</li>
- <li><a href="reference/api/python/te.html#tvm.te.if_then_else">if_then_else() (in module tvm.te)</a>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.If">If() (in module tvm.script.ir_builder.relax)</a>
<ul>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.If">(in module tvm.script.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.If">(in module tvm.script.tirx)</a>
+</li>
+ </ul></li>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.if_">if_() (in module tvm.script.ir_builder.relax)</a>
+
+ <ul>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.if_">(in module tvm.script.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.if_">(in module tvm.script.tirx)</a>
+</li>
+ </ul></li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.if_then_else">if_then_else() (in module tvm.script.tirx)</a>
+
+ <ul>
+ <li><a href="reference/api/python/te.html#tvm.te.if_then_else">(in module tvm.te)</a>
+</li>
<li><a href="tirx/api/tirx.html#tvm.tirx.if_then_else">(in module tvm.tirx)</a>
+</li>
+ </ul></li>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.if_then_else_">if_then_else_() (in module tvm.script.ir_builder.relax)</a>
+
+ <ul>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.if_then_else_">(in module tvm.script.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.if_then_else_">(in module tvm.script.tirx)</a>
</li>
</ul></li>
<li><a href="tirx/api/transform.html#tvm.tirx.transform.HoistedConditionals.IfElseExpr">IfElseExpr (tvm.tirx.transform.HoistedConditionals attribute)</a>
@@ -2776,8 +3704,12 @@ document.write(`
</li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.op_attrs.NLLLossAttrs.ignore_index">ignore_index (tvm.relax.op.op_attrs.NLLLossAttrs property)</a>
</li>
- <li><a href="tirx/api/tirx.html#tvm.tirx.ignore_loop_partition">ignore_loop_partition() (in module tvm.tirx)</a>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.ignore_loop_partition">ignore_loop_partition() (in module tvm.script.tirx)</a>
+
+ <ul>
+ <li><a href="tirx/api/tirx.html#tvm.tirx.ignore_loop_partition">(in module tvm.tirx)</a>
</li>
+ </ul></li>
<li><a href="tirx/api/transform.html#tvm.tirx.transform.RemoveNoOpConfig.ignore_profiler_call">ignore_profiler_call (tvm.tirx.transform.RemoveNoOpConfig property)</a>
</li>
<li><a href="reference/api/python/relax/relax.html#tvm.relax.ExecBuilder.imm">imm() (tvm.relax.ExecBuilder method)</a>
@@ -2799,11 +3731,25 @@ document.write(`
<li><a href="reference/api/python/topi.html#tvm.topi.nn.Sequence.index">index() (tvm.topi.nn.Sequence method)</a>
</li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.op_attrs.LayoutTransformAttrs.index_map">index_map (tvm.relax.op.op_attrs.LayoutTransformAttrs property)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.index_map">index_map() (in module tvm.script.tirx)</a>
</li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.index_put">index_put() (in module tvm.relax.op)</a>
+
+ <ul>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.index_put">(in module tvm.script.ir_builder.relax)</a>
</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.index_put">(in module tvm.script.relax)</a>
+</li>
+ </ul></li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.index_tensor">index_tensor() (in module tvm.relax.op)</a>
+
+ <ul>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.index_tensor">(in module tvm.script.ir_builder.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.index_tensor">(in module tvm.script.relax)</a>
</li>
+ </ul></li>
<li><a href="reference/api/python/te.html#tvm.te.indexdiv">indexdiv() (in module tvm.te)</a>
<ul>
@@ -2826,15 +3772,27 @@ document.write(`
</li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.op_attrs.SplitAttrs.indices_or_sections">indices_or_sections (tvm.relax.op.op_attrs.SplitAttrs property)</a>
</li>
- <li><a href="tirx/api/tirx.html#tvm.tirx.infinity">infinity() (in module tvm.tirx)</a>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.infinity">infinity() (in module tvm.script.tirx)</a>
+
+ <ul>
+ <li><a href="tirx/api/tirx.html#tvm.tirx.infinity">(in module tvm.tirx)</a>
</li>
+ </ul></li>
<li><a href="reference/api/python/transform.html#tvm.ir.transform.Pass.info">info (tvm.ir.transform.Pass property)</a>
</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.init">init() (in module tvm.script.tirx)</a>
+
+ <ul>
+ <li><a href="tirx/api/cuda.html#tvm.backend.cuda.lang.FlashAttentionLPTScheduler.init">(tvm.backend.cuda.lang.FlashAttentionLPTScheduler method)</a>
+</li>
+ </ul></li>
<li><a href="reference/api/python/runtime/disco.html#tvm.runtime.disco.Session.init_ccl">init_ccl() (tvm.runtime.disco.Session method)</a>
</li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.op_attrs.InitAttrs">InitAttrs (class in tvm.relax.op.op_attrs)</a>
</li>
<li><a href="reference/api/python/s_tir/backend.html#tvm.s_tir.backend.adreno.transform.InjectTextureAlloc">InjectTextureAlloc() (in module tvm.s_tir.backend.adreno.transform)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.inline">inline() (in module tvm.script.tirx)</a>
</li>
<li><a href="reference/api/python/s_tir/schedule.html#tvm.s_tir.schedule.StmtSRef.inline_mark">inline_mark() (tvm.s_tir.schedule.StmtSRef static method)</a>
</li>
@@ -2883,13 +3841,23 @@ document.write(`
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.invoke_closure">invoke_closure() (in module tvm.relax.op)</a>
<ul>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.invoke_closure">(in module tvm.script.ir_builder.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.invoke_closure">(in module tvm.script.relax)</a>
+</li>
<li><a href="reference/api/python/relax/relax.html#tvm.relax.VirtualMachine.invoke_closure">(tvm.relax.VirtualMachine method)</a>
</li>
<li><a href="reference/api/python/runtime/vm.html#tvm.runtime.vm.VirtualMachine.invoke_closure">(tvm.runtime.vm.VirtualMachine method)</a>
</li>
</ul></li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.invoke_pure_closure">invoke_pure_closure() (in module tvm.relax.op)</a>
+
+ <ul>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.invoke_pure_closure">(in module tvm.script.ir_builder.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.invoke_pure_closure">(in module tvm.script.relax)</a>
</li>
+ </ul></li>
<li><a href="reference/api/python/relax/relax.html#tvm.relax.VirtualMachine.invoke_stateful">invoke_stateful() (tvm.relax.VirtualMachine method)</a>
<ul>
@@ -2906,8 +3874,6 @@ document.write(`
<ul>
<li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.ir.ir_module">(in module tvm.script.ir_builder.ir)</a>
-</li>
- <li><a href="reference/api/python/script/parser.html#tvm.script.parser.ir_module">(in module tvm.script.parser)</a>
</li>
</ul></li>
<li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.IRBuilder">IRBuilder (class in tvm.script.ir_builder)</a>
@@ -2935,6 +3901,10 @@ document.write(`
<li><a href="reference/api/python/s_tir/dlight.html#tvm.s_tir.dlight.SBlockInfo.is_data_pad">is_data_pad() (tvm.s_tir.dlight.SBlockInfo method)</a>
</li>
<li><a href="reference/api/python/testing.html#tvm.testing.Path.is_dir">is_dir() (tvm.testing.Path method)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.Layout.is_direct_sum_left">is_direct_sum_left() (tvm.script.tirx.Layout method)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.Layout.is_direct_sum_right">is_direct_sum_right() (tvm.script.tirx.Layout method)</a>
</li>
<li><a href="reference/api/python/s_tir/dlight.html#tvm.s_tir.dlight.SBlockInfo.is_elementwise">is_elementwise() (tvm.s_tir.dlight.SBlockInfo method)</a>
</li>
@@ -2983,16 +3953,44 @@ document.write(`
<li><a href="reference/api/python/testing.html#tvm.testing.Path.is_socket">is_socket() (tvm.testing.Path method)</a>
</li>
<li><a href="reference/api/python/support.html#tvm.support.utils.is_source_path">is_source_path() (in module tvm.support.utils)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.Layout.is_swizzle">is_swizzle() (tvm.script.tirx.Layout method)</a>
</li>
<li><a href="reference/api/python/testing.html#tvm.testing.Path.is_symlink">is_symlink() (tvm.testing.Path method)</a>
</li>
<li><a href="reference/api/python/s_tir/dlight.html#tvm.s_tir.dlight.ScheduleRule.is_target_available">is_target_available() (tvm.s_tir.dlight.ScheduleRule method)</a>
</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.Layout.is_tile_inner">is_tile_inner() (tvm.script.tirx.Layout method)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.Layout.is_tile_outer">is_tile_outer() (tvm.script.tirx.Layout method)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.Layout.is_trainium">is_trainium() (tvm.script.tirx.Layout method)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.Layout.is_trivial">is_trivial() (tvm.script.tirx.Layout method)</a>
+
+ <ul>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.TileLayout.is_trivial">(tvm.script.tirx.TileLayout method)</a>
+</li>
+ </ul></li>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.is_type_var">is_type_var() (in module tvm.script.ir_builder.relax)</a>
+
+ <ul>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.is_type_var">(in module tvm.script.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.is_type_var">(in module tvm.script.tirx)</a>
+</li>
+ </ul></li>
<li><a href="reference/api/python/sym.html#tvm.sym.Analyzer.is_z3_enabled">is_z3_enabled (tvm.sym.Analyzer property)</a>
</li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.isfinite">isfinite() (in module tvm.relax.op)</a>
<ul>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.isfinite">(in module tvm.script.ir_builder.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.isfinite">(in module tvm.script.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.isfinite">(in module tvm.script.tirx)</a>
+</li>
<li><a href="reference/api/python/te.html#tvm.te.isfinite">(in module tvm.te)</a>
</li>
<li><a href="tirx/api/tirx.html#tvm.tirx.isfinite">(in module tvm.tirx)</a>
@@ -3001,6 +3999,12 @@ document.write(`
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.isinf">isinf() (in module tvm.relax.op)</a>
<ul>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.isinf">(in module tvm.script.ir_builder.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.isinf">(in module tvm.script.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.isinf">(in module tvm.script.tirx)</a>
+</li>
<li><a href="reference/api/python/te.html#tvm.te.isinf">(in module tvm.te)</a>
</li>
<li><a href="tirx/api/tirx.html#tvm.tirx.isinf">(in module tvm.tirx)</a>
@@ -3009,20 +4013,34 @@ document.write(`
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.isnan">isnan() (in module tvm.relax.op)</a>
<ul>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.isnan">(in module tvm.script.ir_builder.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.isnan">(in module tvm.script.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.isnan">(in module tvm.script.tirx)</a>
+</li>
<li><a href="reference/api/python/te.html#tvm.te.isnan">(in module tvm.te)</a>
</li>
<li><a href="tirx/api/tirx.html#tvm.tirx.isnan">(in module tvm.tirx)</a>
</li>
</ul></li>
- <li><a href="tirx/api/tirx.html#tvm.tirx.isnullptr">isnullptr() (in module tvm.tirx)</a>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.isnullptr">isnullptr() (in module tvm.script.tirx)</a>
+
+ <ul>
+ <li><a href="tirx/api/tirx.html#tvm.tirx.isnullptr">(in module tvm.tirx)</a>
</li>
+ </ul></li>
<li><a href="reference/api/python/ir.html#tvm.ir.DictAttrs.items">items() (tvm.ir.DictAttrs method)</a>
<ul>
<li><a href="reference/api/python/ir.html#tvm.ir.Map.items">(tvm.ir.Map method)</a>
</li>
</ul></li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.Iter">Iter (class in tvm.script.tirx)</a>
+</li>
<li><a href="reference/api/python/sym.html#tvm.sym.iter_map_simplify">iter_map_simplify() (in module tvm.sym)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.iter_var">iter_var() (in module tvm.script.tirx)</a>
</li>
<li><a href="reference/api/python/testing.html#tvm.testing.Path.iterdir">iterdir() (tvm.testing.Path method)</a>
</li>
@@ -3044,10 +4062,12 @@ document.write(`
<h2 id="J">J</h2>
<table style="width: 100%" class="indextable genindextable"><tr>
<td style="width: 33%; vertical-align: top;"><ul>
- <li><a href="reference/api/python/support.html#tvm.support.popen_pool.PopenWorker.join">join() (tvm.support.popen_pool.PopenWorker method)</a>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.jit">jit() (in module tvm.script.tirx)</a>
</li>
</ul></td>
<td style="width: 33%; vertical-align: top;"><ul>
+ <li><a href="reference/api/python/support.html#tvm.support.popen_pool.PopenWorker.join">join() (tvm.support.popen_pool.PopenWorker method)</a>
+</li>
<li><a href="reference/api/python/meta_schedule.html#tvm.s_tir.meta_schedule.TaskScheduler.join_running_task">join_running_task() (tvm.s_tir.meta_schedule.TaskScheduler method)</a>
</li>
</ul></td>
@@ -3121,8 +4141,12 @@ document.write(`
<li><a href="tirx/api/tirx.html#tvm.tirx.LambdaExpr">LambdaExpr (class in tvm.tirx)</a>
</li>
<li><a href="reference/api/python/relax/transform.html#tvm.relax.transform.LambdaLift">LambdaLift() (in module tvm.relax.transform)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.lane_id">lane_id() (in module tvm.script.tirx)</a>
</li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.op_attrs.TopKAttrs.largest">largest (tvm.relax.op.op_attrs.TopKAttrs property)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.launch_thread">launch_thread() (in module tvm.script.tirx)</a>
</li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.nn.layer_norm">layer_norm() (in module tvm.relax.op.nn)</a>
@@ -3133,6 +4157,8 @@ document.write(`
<li><a href="reference/api/python/topi.html#tvm.topi.testing.layer_norm_python">layer_norm_python() (in module tvm.topi.testing)</a>
</li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.op_attrs.LayerNormAttrs">LayerNormAttrs (class in tvm.relax.op.op_attrs)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.Layout">Layout (class in tvm.script.tirx)</a>
</li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.op_attrs.AdaptivePool1DAttrs.layout">layout (tvm.relax.op.op_attrs.AdaptivePool1DAttrs property)</a>
@@ -3155,7 +4181,13 @@ document.write(`
</li>
</ul></li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.layout_transform">layout_transform() (in module tvm.relax.op)</a>
+
+ <ul>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.layout_transform">(in module tvm.script.ir_builder.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.layout_transform">(in module tvm.script.relax)</a>
</li>
+ </ul></li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.op_attrs.LayoutTransformAttrs">LayoutTransformAttrs (class in tvm.relax.op.op_attrs)</a>
</li>
<li><a href="reference/api/python/relax/transform.html#tvm.relax.transform.LazyGetInput">LazyGetInput() (in module tvm.relax.transform)</a>
@@ -3166,10 +4198,22 @@ document.write(`
</li>
<li><a href="reference/api/python/testing.html#tvm.testing.Path.lchmod">lchmod() (tvm.testing.Path method)</a>
</li>
- <li><a href="tirx/api/tirx.html#tvm.tirx.ldexp">ldexp() (in module tvm.tirx)</a>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.ldexp">ldexp() (in module tvm.script.tirx)</a>
+
+ <ul>
+ <li><a href="tirx/api/tirx.html#tvm.tirx.ldexp">(in module tvm.tirx)</a>
</li>
+ </ul></li>
<li><a href="tirx/api/tirx.html#tvm.tirx.LE">LE (class in tvm.tirx)</a>
</li>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.le_">le_() (in module tvm.script.ir_builder.relax)</a>
+
+ <ul>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.le_">(in module tvm.script.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.le_">(in module tvm.script.tirx)</a>
+</li>
+ </ul></li>
<li><a href="reference/api/python/topi.html#tvm.topi.nn.leaky_relu">leaky_relu() (in module tvm.topi.nn)</a>
</li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.nn.leakyrelu">leakyrelu() (in module tvm.relax.op.nn)</a>
@@ -3177,17 +4221,41 @@ document.write(`
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.op_attrs.LeakyReluAttrs">LeakyReluAttrs (class in tvm.relax.op.op_attrs)</a>
</li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.left_shift">left_shift() (in module tvm.relax.op)</a>
+
+ <ul>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.left_shift">(in module tvm.script.ir_builder.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.left_shift">(in module tvm.script.relax)</a>
</li>
+ </ul></li>
<li><a href="reference/api/python/relax/transform.html#tvm.relax.transform.LegalizeOps">LegalizeOps() (in module tvm.relax.transform)</a>
</li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.less">less() (in module tvm.relax.op)</a>
+
+ <ul>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.less">(in module tvm.script.ir_builder.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.less">(in module tvm.script.relax)</a>
</li>
+ </ul></li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.less_equal">less_equal() (in module tvm.relax.op)</a>
+
+ <ul>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.less_equal">(in module tvm.script.ir_builder.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.less_equal">(in module tvm.script.relax)</a>
</li>
+ </ul></li>
<li><a href="tirx/api/tirx.html#tvm.tirx.Let">Let (class in tvm.tirx)</a>
</li>
- <li><a href="tirx/api/script.html#tvm.tirx.script.builder.ir.LetAnnotation">LetAnnotation (class in tvm.tirx.script.builder.ir)</a>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.Let">Let() (in module tvm.script.tirx)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.LetAnnotation">LetAnnotation (class in tvm.script.tirx)</a>
+
+ <ul>
+ <li><a href="tirx/api/script.html#tvm.tirx.script.builder.ir.LetAnnotation">(class in tvm.tirx.script.builder.ir)</a>
</li>
+ </ul></li>
<li><a href="tirx/api/transform.html#tvm.tirx.transform.HoistedLetBindings.LetExpr">LetExpr (tvm.tirx.transform.HoistedLetBindings attribute)</a>
</li>
<li><a href="tirx/api/tirx.html#tvm.tirx.LetStmt">LetStmt (in module tvm.tirx)</a>
@@ -3196,10 +4264,20 @@ document.write(`
</li>
<li><a href="reference/api/python/relax/transform.html#tvm.relax.transform.LiftTransformParams">LiftTransformParams() (in module tvm.relax.transform)</a>
</li>
- <li><a href="tirx/api/tirx.html#tvm.tirx.likely">likely() (in module tvm.tirx)</a>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.likely">likely() (in module tvm.script.tirx)</a>
+
+ <ul>
+ <li><a href="tirx/api/tirx.html#tvm.tirx.likely">(in module tvm.tirx)</a>
</li>
+ </ul></li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.linear">linear() (in module tvm.relax.op)</a>
+
+ <ul>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.linear">(in module tvm.script.ir_builder.relax)</a>
</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.linear">(in module tvm.script.relax)</a>
+</li>
+ </ul></li>
<li><a href="reference/api/python/contrib.html#tvm.contrib.hexagon.link_shared_macos">link_shared_macos() (in module tvm.contrib.hexagon)</a>
</li>
<li><a href="reference/api/python/testing.html#tvm.testing.Path.link_to">link_to() (tvm.testing.Path method)</a>
@@ -3224,14 +4302,16 @@ document.write(`
<li><a href="reference/api/python/support.html#tvm.support.utils.TempDirectory.listdir">(tvm.support.utils.TempDirectory method)</a>
</li>
</ul></li>
- </ul></td>
- <td style="width: 33%; vertical-align: top;"><ul>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.llvm_lookup_intrinsic_id">llvm_lookup_intrinsic_id() (in module tvm.script.tirx)</a>
+</li>
<li><a href="reference/api/python/meta_schedule.html#tvm.s_tir.meta_schedule.CostModel.load">load() (tvm.s_tir.meta_schedule.CostModel method)</a>
</li>
<li><a href="reference/api/python/ir.html#tvm.ir.load_json">load_json() (in module tvm.ir)</a>
</li>
<li><a href="reference/api/python/rpc.html#tvm.rpc.RPCSession.load_module">load_module() (tvm.rpc.RPCSession method)</a>
</li>
+ </ul></td>
+ <td style="width: 33%; vertical-align: top;"><ul>
<li><a href="reference/api/python/relax/training.html#tvm.relax.training.Trainer.load_params">load_params() (tvm.relax.training.Trainer method)</a>
</li>
<li><a href="reference/api/python/relax/training.html#tvm.relax.training.Trainer.load_states">load_states() (tvm.relax.training.Trainer method)</a>
@@ -3243,33 +4323,57 @@ document.write(`
<li><a href="reference/api/python/ir.html#tvm.ir.Var.local">local() (tvm.ir.Var method)</a>
</li>
<li><a href="reference/api/python/testing.html#tvm.testing.local_run">local_run() (in module tvm.testing)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.local_scalar">local_scalar() (in module tvm.script.tirx)</a>
</li>
<li><a href="reference/api/python/rpc.html#tvm.rpc.LocalSession">LocalSession (class in tvm.rpc)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.LocalVectorAnnotation">LocalVectorAnnotation (class in tvm.script.tirx)</a>
</li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.log">log() (in module tvm.relax.op)</a>
<ul>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.log">(in module tvm.script.ir_builder.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.log">(in module tvm.script.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.log">(in module tvm.script.tirx)</a>
+</li>
<li><a href="reference/api/python/te.html#tvm.te.log">(in module tvm.te)</a>
</li>
<li><a href="tirx/api/tirx.html#tvm.tirx.log">(in module tvm.tirx)</a>
</li>
</ul></li>
- <li><a href="reference/api/python/te.html#tvm.te.log10">log10() (in module tvm.te)</a>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.log10">log10() (in module tvm.script.tirx)</a>
<ul>
+ <li><a href="reference/api/python/te.html#tvm.te.log10">(in module tvm.te)</a>
+</li>
<li><a href="tirx/api/tirx.html#tvm.tirx.log10">(in module tvm.tirx)</a>
</li>
</ul></li>
- <li><a href="tirx/api/tirx.html#tvm.tirx.log1p">log1p() (in module tvm.tirx)</a>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.log1p">log1p() (in module tvm.script.tirx)</a>
+
+ <ul>
+ <li><a href="tirx/api/tirx.html#tvm.tirx.log1p">(in module tvm.tirx)</a>
</li>
- <li><a href="reference/api/python/te.html#tvm.te.log2">log2() (in module tvm.te)</a>
+ </ul></li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.log2">log2() (in module tvm.script.tirx)</a>
<ul>
+ <li><a href="reference/api/python/te.html#tvm.te.log2">(in module tvm.te)</a>
+</li>
<li><a href="tirx/api/tirx.html#tvm.tirx.log2">(in module tvm.tirx)</a>
</li>
</ul></li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.log_add_exp">log_add_exp() (in module tvm.relax.op)</a>
+
+ <ul>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.log_add_exp">(in module tvm.script.ir_builder.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.log_add_exp">(in module tvm.script.relax)</a>
</li>
+ </ul></li>
<li><a href="reference/api/python/contrib.html#tvm.contrib.cudnn.log_softmax">log_softmax() (in module tvm.contrib.cudnn)</a>
<ul>
@@ -3287,13 +4391,43 @@ document.write(`
</li>
</ul></li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.logical_and">logical_and() (in module tvm.relax.op)</a>
+
+ <ul>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.logical_and">(in module tvm.script.ir_builder.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.logical_and">(in module tvm.script.relax)</a>
</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.logical_and">(in module tvm.script.tirx)</a>
+</li>
+ </ul></li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.logical_not">logical_not() (in module tvm.relax.op)</a>
+
+ <ul>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.logical_not">(in module tvm.script.ir_builder.relax)</a>
</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.logical_not">(in module tvm.script.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.logical_not">(in module tvm.script.tirx)</a>
+</li>
+ </ul></li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.logical_or">logical_or() (in module tvm.relax.op)</a>
+
+ <ul>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.logical_or">(in module tvm.script.ir_builder.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.logical_or">(in module tvm.script.relax)</a>
</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.logical_or">(in module tvm.script.tirx)</a>
+</li>
+ </ul></li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.logical_xor">logical_xor() (in module tvm.relax.op)</a>
+
+ <ul>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.logical_xor">(in module tvm.script.ir_builder.relax)</a>
</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.logical_xor">(in module tvm.script.relax)</a>
+</li>
+ </ul></li>
<li><a href="reference/api/python/relax/block_builder.html#tvm.relax.block_builder.BlockBuilder.lookup_binding">lookup_binding() (tvm.relax.block_builder.BlockBuilder method)</a>
<ul>
@@ -3302,10 +4436,18 @@ document.write(`
</ul></li>
<li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.ir.lookup_name">lookup_name() (in module tvm.script.ir_builder.ir)</a>
</li>
- <li><a href="tirx/api/tirx.html#tvm.tirx.lookup_param">lookup_param() (in module tvm.tirx)</a>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.lookup_param">lookup_param() (in module tvm.script.tirx)</a>
+
+ <ul>
+ <li><a href="tirx/api/tirx.html#tvm.tirx.lookup_param">(in module tvm.tirx)</a>
</li>
- <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.ir.lookup_vdevice">lookup_vdevice() (in module tvm.script.ir_builder.ir)</a>
+ </ul></li>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.lookup_vdevice">lookup_vdevice() (in module tvm.script.ir_builder.relax)</a>
+
+ <ul>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.lookup_vdevice">(in module tvm.script.relax)</a>
</li>
+ </ul></li>
<li><a href="reference/api/python/s_tir/schedule.html#tvm.s_tir.schedule.Schedule.loop_partition">loop_partition() (tvm.s_tir.schedule.Schedule method)</a>
</li>
<li><a href="reference/api/python/s_tir/schedule.html#tvm.s_tir.schedule.LoopRV">LoopRV (class in tvm.s_tir.schedule)</a>
@@ -3340,14 +4482,34 @@ document.write(`
</li>
<li><a href="tirx/api/tirx.html#tvm.tirx.LT">LT (class in tvm.tirx)</a>
</li>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.lt_">lt_() (in module tvm.script.ir_builder.relax)</a>
+
+ <ul>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.lt_">(in module tvm.script.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.lt_">(in module tvm.script.tirx)</a>
+</li>
+ </ul></li>
</ul></td>
</tr></table>
<h2 id="M">M</h2>
<table style="width: 100%" class="indextable genindextable"><tr>
<td style="width: 33%; vertical-align: top;"><ul>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.macro">macro() (in module tvm.script.relax)</a>
+
+ <ul>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.macro">(in module tvm.script.tirx)</a>
+</li>
+ </ul></li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.make_closure">make_closure() (in module tvm.relax.op)</a>
+
+ <ul>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.make_closure">(in module tvm.script.ir_builder.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.make_closure">(in module tvm.script.relax)</a>
</li>
+ </ul></li>
<li><a href="tirx/api/cuda.html#tvm.backend.cuda.lang.SmemDescriptor.make_lo_uniform">make_lo_uniform() (tvm.backend.cuda.lang.SmemDescriptor method)</a>
</li>
<li><a href="reference/api/python/ir.html#tvm.ir.make_node">make_node() (in module tvm.ir)</a>
@@ -3368,10 +4530,24 @@ document.write(`
</li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.masked_fill">masked_fill() (in module tvm.relax.op)</a>
</li>
- <li><a href="tirx/api/script.html#tvm.tirx.script.builder.ir.match_buffer">match_buffer() (in module tvm.tirx.script.builder.ir)</a>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.masked_load">masked_load() (in module tvm.script.tirx)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.masked_store">masked_store() (in module tvm.script.tirx)</a>
</li>
- <li><a href="reference/api/python/relax/block_builder.html#tvm.relax.block_builder.BlockBuilder.match_cast">match_cast() (tvm.relax.block_builder.BlockBuilder method)</a>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.match_buffer">match_buffer() (in module tvm.script.tirx)</a>
+
+ <ul>
+ <li><a href="tirx/api/script.html#tvm.tirx.script.builder.ir.match_buffer">(in module tvm.tirx.script.builder.ir)</a>
+</li>
+ </ul></li>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.match_cast">match_cast() (in module tvm.script.ir_builder.relax)</a>
+
+ <ul>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.match_cast">(in module tvm.script.relax)</a>
</li>
+ <li><a href="reference/api/python/relax/block_builder.html#tvm.relax.block_builder.BlockBuilder.match_cast">(tvm.relax.block_builder.BlockBuilder method)</a>
+</li>
+ </ul></li>
<li><a href="reference/api/python/relax/relax.html#tvm.relax.MatchCast">MatchCast (class in tvm.relax)</a>
</li>
<li><a href="reference/api/python/ir.html#tvm.ir.PrimType.matches_code">matches_code() (tvm.ir.PrimType method)</a>
@@ -3392,6 +4568,10 @@ document.write(`
<li><a href="reference/api/python/contrib.html#tvm.contrib.mkl.matmul">(in module tvm.contrib.mkl)</a>
</li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.matmul">(in module tvm.relax.op)</a>
+</li>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.matmul">(in module tvm.script.ir_builder.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.matmul">(in module tvm.script.relax)</a>
</li>
<li><a href="reference/api/python/topi.html#tvm.topi.nn.matmul">(in module tvm.topi.nn)</a>
</li>
@@ -3407,6 +4587,12 @@ document.write(`
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.max">max() (in module tvm.relax.op)</a>
<ul>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.max">(in module tvm.script.ir_builder.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.max">(in module tvm.script.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.max">(in module tvm.script.tirx)</a>
+</li>
<li><a href="reference/api/python/te.html#tvm.te.max">(in module tvm.te)</a>
</li>
<li><a href="tirx/api/tirx.html#tvm.tirx.max">(in module tvm.tirx)</a>
@@ -3424,24 +4610,44 @@ document.write(`
</li>
<li><a href="tirx/api/transform.html#tvm.tirx.transform.RemoveNoOpConfig.max_simplification_steps">max_simplification_steps (tvm.tirx.transform.RemoveNoOpConfig property)</a>
</li>
- <li><a href="reference/api/python/te.html#tvm.te.max_value">max_value() (in module tvm.te)</a>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.max_value">max_value() (in module tvm.script.tirx)</a>
<ul>
+ <li><a href="reference/api/python/te.html#tvm.te.max_value">(in module tvm.te)</a>
+</li>
<li><a href="tirx/api/tirx.html#tvm.tirx.max_value">(in module tvm.tirx)</a>
</li>
</ul></li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.maximum">maximum() (in module tvm.relax.op)</a>
+
+ <ul>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.maximum">(in module tvm.script.ir_builder.relax)</a>
</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.maximum">(in module tvm.script.relax)</a>
+</li>
+ </ul></li>
<li><a href="tirx/api/cuda.html#tvm.backend.cuda.lang.MBarrier">MBarrier (class in tvm.backend.cuda.lang)</a>
</li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.mean">mean() (in module tvm.relax.op)</a>
+
+ <ul>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.mean">(in module tvm.script.ir_builder.relax)</a>
</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.mean">(in module tvm.script.relax)</a>
+</li>
+ </ul></li>
<li><a href="reference/api/python/meta_schedule.html#tvm.s_tir.meta_schedule.MeasureCallback">MeasureCallback (class in tvm.s_tir.meta_schedule)</a>
</li>
<li><a href="reference/api/python/meta_schedule.html#tvm.s_tir.meta_schedule.MeasureCandidate">MeasureCandidate (class in tvm.s_tir.meta_schedule)</a>
</li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.median">median() (in module tvm.relax.op)</a>
+
+ <ul>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.median">(in module tvm.script.ir_builder.relax)</a>
</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.median">(in module tvm.script.relax)</a>
+</li>
+ </ul></li>
<li><a href="reference/api/python/contrib.html#tvm.contrib.pickle_memoize.memoize">memoize() (in module tvm.contrib.pickle_memoize)</a>
</li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.op_attrs.HintOnDeviceAttrs.memory_scope">memory_scope (tvm.relax.op.op_attrs.HintOnDeviceAttrs property)</a>
@@ -3451,13 +4657,27 @@ document.write(`
<li><a href="reference/api/python/relax/transform.html#tvm.relax.transform.MergeCompositeFunctions">MergeCompositeFunctions() (in module tvm.relax.transform)</a>
</li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.meshgrid">meshgrid() (in module tvm.relax.op)</a>
+
+ <ul>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.meshgrid">(in module tvm.script.ir_builder.relax)</a>
</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.meshgrid">(in module tvm.script.relax)</a>
+</li>
+ </ul></li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.op_attrs.MeshgridAttrs">MeshgridAttrs (class in tvm.relax.op.op_attrs)</a>
</li>
- <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.ir.meta_var">meta_var (class in tvm.script.ir_builder.ir)</a>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.meta_class">meta_class() (in module tvm.script.tirx)</a>
+</li>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.ir.meta_var">meta_var() (in module tvm.script.ir_builder.ir)</a>
+</li>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.metal">metal() (in module tvm.script.ir_builder.relax)</a>
+
+ <ul>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.metal">(in module tvm.script.relax)</a>
</li>
- <li><a href="reference/api/python/rpc.html#tvm.rpc.RPCSession.metal">metal() (tvm.rpc.RPCSession method)</a>
+ <li><a href="reference/api/python/rpc.html#tvm.rpc.RPCSession.metal">(tvm.rpc.RPCSession method)</a>
</li>
+ </ul></li>
<li><a href="reference/api/python/relax/transform.html#tvm.relax.transform.MetaScheduleApplyDatabase">MetaScheduleApplyDatabase() (in module tvm.relax.transform)</a>
</li>
<li><a href="reference/api/python/relax/transform.html#tvm.relax.transform.MetaScheduleTuneIRMod">MetaScheduleTuneIRMod() (in module tvm.relax.transform)</a>
@@ -3471,19 +4691,33 @@ document.write(`
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.min">min() (in module tvm.relax.op)</a>
<ul>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.min">(in module tvm.script.ir_builder.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.min">(in module tvm.script.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.min">(in module tvm.script.tirx)</a>
+</li>
<li><a href="reference/api/python/te.html#tvm.te.min">(in module tvm.te)</a>
</li>
<li><a href="tirx/api/tirx.html#tvm.tirx.min">(in module tvm.tirx)</a>
</li>
</ul></li>
- <li><a href="reference/api/python/te.html#tvm.te.min_value">min_value() (in module tvm.te)</a>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.min_value">min_value() (in module tvm.script.tirx)</a>
<ul>
+ <li><a href="reference/api/python/te.html#tvm.te.min_value">(in module tvm.te)</a>
+</li>
<li><a href="tirx/api/tirx.html#tvm.tirx.min_value">(in module tvm.tirx)</a>
</li>
</ul></li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.minimum">minimum() (in module tvm.relax.op)</a>
+
+ <ul>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.minimum">(in module tvm.script.ir_builder.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.minimum">(in module tvm.script.relax)</a>
</li>
+ </ul></li>
<li><a href="reference/api/python/topi.html#tvm.topi.nn.mirror_pad">mirror_pad() (in module tvm.topi.nn)</a>
</li>
<li><a href="reference/api/python/ir.html#tvm.ir.Type.Missing">Missing() (tvm.ir.Type static method)</a>
@@ -3497,7 +4731,13 @@ document.write(`
<li><a href="reference/api/python/s_tir/schedule.html#tvm.s_tir.schedule.Schedule.mod">mod (tvm.s_tir.schedule.Schedule property)</a>
</li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.mod">mod() (in module tvm.relax.op)</a>
+
+ <ul>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.mod">(in module tvm.script.ir_builder.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.mod">(in module tvm.script.relax)</a>
</li>
+ </ul></li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.op_attrs.ROIAlignAttrs.mode">mode (tvm.relax.op.op_attrs.ROIAlignAttrs property)</a>
<ul>
@@ -3720,6 +4960,8 @@ document.write(`
<li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.ir.module_get_attr">module_get_attr() (in module tvm.script.ir_builder.ir)</a>
</li>
<li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.ir.module_global_infos">module_global_infos() (in module tvm.script.ir_builder.ir)</a>
+</li>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.ir.module_member_">module_member_() (in module tvm.script.ir_builder.ir)</a>
</li>
<li><a href="reference/api/python/transform.html#tvm.ir.transform.module_pass">module_pass() (in module tvm.ir.transform)</a>
</li>
@@ -3740,11 +4982,23 @@ document.write(`
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.op_attrs.MultiboxTransformLocAttrs">MultiboxTransformLocAttrs (class in tvm.relax.op.op_attrs)</a>
</li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.multinomial_from_uniform">multinomial_from_uniform() (in module tvm.relax.op)</a>
+
+ <ul>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.multinomial_from_uniform">(in module tvm.script.ir_builder.relax)</a>
</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.multinomial_from_uniform">(in module tvm.script.relax)</a>
+</li>
+ </ul></li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.op_attrs.MultinomialFromUniformAttrs">MultinomialFromUniformAttrs (class in tvm.relax.op.op_attrs)</a>
</li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.multiply">multiply() (in module tvm.relax.op)</a>
+
+ <ul>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.multiply">(in module tvm.script.ir_builder.relax)</a>
</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.multiply">(in module tvm.script.relax)</a>
+</li>
+ </ul></li>
<li><a href="reference/api/python/relax/relax.html#tvm.relax.DataflowBlockRewrite.mutate_irmodule">mutate_irmodule() (tvm.relax.DataflowBlockRewrite method)</a>
</li>
<li><a href="reference/api/python/relax/relax.html#tvm.relax.DataflowBlockRewrite.mutated_dfb">mutated_dfb() (tvm.relax.DataflowBlockRewrite method)</a>
@@ -3760,7 +5014,11 @@ document.write(`
<table style="width: 100%" class="indextable genindextable"><tr>
<td style="width: 33%; vertical-align: top;"><ul>
<li><a href="reference/api/python/s_tir/schedule.html#tvm.s_tir.schedule.InstructionKind.name">name (tvm.s_tir.schedule.InstructionKind attribute)</a>
+
+ <ul>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.ExecScope.name">(tvm.script.tirx.ExecScope property)</a>
</li>
+ </ul></li>
<li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.IRBuilder.name">name() (tvm.script.ir_builder.IRBuilder static method)</a>
</li>
<li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.IRBuilder.name_many">name_many() (tvm.script.ir_builder.IRBuilder static method)</a>
@@ -3779,14 +5037,30 @@ document.write(`
</li>
<li><a href="tirx/api/tirx.html#tvm.tirx.NE">NE (class in tvm.tirx)</a>
</li>
- <li><a href="reference/api/python/te.html#tvm.te.nearbyint">nearbyint() (in module tvm.te)</a>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.ne_">ne_() (in module tvm.script.ir_builder.relax)</a>
+
+ <ul>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.ne_">(in module tvm.script.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.ne_">(in module tvm.script.tirx)</a>
+</li>
+ </ul></li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.nearbyint">nearbyint() (in module tvm.script.tirx)</a>
<ul>
+ <li><a href="reference/api/python/te.html#tvm.te.nearbyint">(in module tvm.te)</a>
+</li>
<li><a href="tirx/api/tirx.html#tvm.tirx.nearbyint">(in module tvm.tirx)</a>
</li>
</ul></li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.negative">negative() (in module tvm.relax.op)</a>
+
+ <ul>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.negative">(in module tvm.script.ir_builder.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.negative">(in module tvm.script.relax)</a>
</li>
+ </ul></li>
<li><a href="tirx/api/transform.html#tvm.tirx.transform.HoistedConditionals.Never">Never (tvm.tirx.transform.HoistedConditionals attribute)</a>
<ul>
@@ -3795,8 +5069,14 @@ document.write(`
</ul></li>
<li><a href="reference/api/python/meta_schedule.html#tvm.s_tir.meta_schedule.TaskScheduler.next_task_id">next_task_id() (tvm.s_tir.meta_schedule.TaskScheduler method)</a>
</li>
- <li><a href="tirx/api/tirx.html#tvm.tirx.nextafter">nextafter() (in module tvm.tirx)</a>
+ <li><a href="tirx/api/cuda.html#tvm.backend.cuda.lang.FlashAttentionLPTScheduler.next_tile">next_tile() (tvm.backend.cuda.lang.FlashAttentionLPTScheduler method)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.nextafter">nextafter() (in module tvm.script.tirx)</a>
+
+ <ul>
+ <li><a href="tirx/api/tirx.html#tvm.tirx.nextafter">(in module tvm.tirx)</a>
</li>
+ </ul></li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.nn.nll_loss">nll_loss() (in module tvm.relax.op.nn)</a>
<ul>
@@ -3828,7 +5108,13 @@ document.write(`
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.op_attrs.NonMaximumSuppressionAttrs">NonMaximumSuppressionAttrs (class in tvm.relax.op.op_attrs)</a>
</li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.nonzero">nonzero() (in module tvm.relax.op)</a>
+
+ <ul>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.nonzero">(in module tvm.script.ir_builder.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.nonzero">(in module tvm.script.relax)</a>
</li>
+ </ul></li>
<li><a href="reference/api/python/contrib.html#tvm.contrib.random.normal">normal() (in module tvm.contrib.random)</a>
</li>
<li><a href="reference/api/python/relax/transform.html#tvm.relax.transform.Normalize">Normalize() (in module tvm.relax.transform)</a>
@@ -3847,8 +5133,22 @@ document.write(`
</li>
<li><a href="tirx/api/tirx.html#tvm.tirx.Not">Not (class in tvm.tirx)</a>
</li>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.not_">not_() (in module tvm.script.ir_builder.relax)</a>
+
+ <ul>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.not_">(in module tvm.script.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.not_">(in module tvm.script.tirx)</a>
+</li>
+ </ul></li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.not_equal">not_equal() (in module tvm.relax.op)</a>
+
+ <ul>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.not_equal">(in module tvm.script.ir_builder.relax)</a>
</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.not_equal">(in module tvm.script.relax)</a>
+</li>
+ </ul></li>
<li><a href="reference/api/python/meta_schedule.html#tvm.s_tir.meta_schedule.SearchStrategy.notify_runner_results">notify_runner_results() (tvm.s_tir.meta_schedule.SearchStrategy method)</a>
<ul>
@@ -3858,7 +5158,13 @@ document.write(`
<li><a href="reference/api/python/testing.html#tvm.testing.np_dtype_from_str">np_dtype_from_str() (in module tvm.testing)</a>
</li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.null_value">null_value() (in module tvm.relax.op)</a>
+
+ <ul>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.null_value">(in module tvm.script.ir_builder.relax)</a>
</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.null_value">(in module tvm.script.relax)</a>
+</li>
+ </ul></li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.op_attrs.GroupNormAttrs.num_groups">num_groups (tvm.relax.op.op_attrs.GroupNormAttrs property)</a>
</li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.op_attrs.AllGatherAttrs.num_workers">num_workers (tvm.relax.op.op_attrs.AllGatherAttrs property)</a>
@@ -3875,6 +5181,12 @@ document.write(`
<h2 id="O">O</h2>
<table style="width: 100%" class="indextable genindextable"><tr>
<td style="width: 33%; vertical-align: top;"><ul>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.Object">Object() (in module tvm.script.ir_builder.relax)</a>
+
+ <ul>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.Object">(in module tvm.script.relax)</a>
+</li>
+ </ul></li>
<li><a href="reference/api/python/relax/relax.html#tvm.relax.ObjectType">ObjectType (in module tvm.relax)</a>
</li>
<li><a href="reference/api/python/ir.html#tvm.ir.Var.offset_of">offset_of() (tvm.ir.Var method)</a>
@@ -3882,15 +5194,31 @@ document.write(`
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.one_hot">one_hot() (in module tvm.relax.op)</a>
<ul>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.one_hot">(in module tvm.script.ir_builder.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.one_hot">(in module tvm.script.relax)</a>
+</li>
<li><a href="reference/api/python/topi.html#tvm.topi.testing.one_hot">(in module tvm.topi.testing)</a>
</li>
</ul></li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.op_attrs.OneHotAttrs">OneHotAttrs (class in tvm.relax.op.op_attrs)</a>
</li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.ones">ones() (in module tvm.relax.op)</a>
+
+ <ul>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.ones">(in module tvm.script.ir_builder.relax)</a>
</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.ones">(in module tvm.script.relax)</a>
+</li>
+ </ul></li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.ones_like">ones_like() (in module tvm.relax.op)</a>
+
+ <ul>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.ones_like">(in module tvm.script.ir_builder.relax)</a>
</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.ones_like">(in module tvm.script.relax)</a>
+</li>
+ </ul></li>
<li><a href="reference/api/python/s_tir/analysis.html#tvm.s_tir.analysis.OOBChecker">OOBChecker() (in module tvm.s_tir.analysis)</a>
</li>
<li><a href="reference/api/python/ir.html#tvm.ir.Op">Op (class in tvm.ir)</a>
@@ -3898,6 +5226,8 @@ document.write(`
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.op_attrs.AllReduceAttrs.op_type">op_type (tvm.relax.op.op_attrs.AllReduceAttrs property)</a>
</li>
<li><a href="reference/api/python/s_tir/schedule.html#tvm.s_tir.schedule.DepKind.OPAQUE">OPAQUE (tvm.s_tir.schedule.DepKind attribute)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.axis.opaque">opaque() (tvm.script.tirx.axis static method)</a>
</li>
<li><a href="reference/api/python/ir.html#tvm.ir.OpaqueExpr">OpaqueExpr (class in tvm.ir)</a>
</li>
@@ -3911,11 +5241,19 @@ document.write(`
</li>
<li><a href="reference/api/python/testing.html#tvm.testing.Path.open">open() (tvm.testing.Path method)</a>
</li>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.opencl">opencl() (in module tvm.script.ir_builder.relax)</a>
+
+ <ul>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.opencl">(in module tvm.script.relax)</a>
+</li>
+ </ul></li>
<li><a href="reference/api/python/error.html#tvm.error.OpError">OpError</a>
</li>
<li><a href="reference/api/python/error.html#tvm.error.OpNotImplemented">OpNotImplemented</a>
</li>
<li><a href="reference/api/python/relax/transform.html#tvm.relax.transform.OptimizeLayoutTransform">OptimizeLayoutTransform (class in tvm.relax.transform)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.Optional">Optional (in module tvm.script.tirx)</a>
</li>
<li><a href="reference/api/python/target.html#tvm.target.TargetKind.options">options (tvm.target.TargetKind property)</a>
</li>
@@ -3923,6 +5261,16 @@ document.write(`
</li>
<li><a href="tirx/api/tirx.html#tvm.tirx.Or">Or (class in tvm.tirx)</a>
</li>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.or_">or_() (in module tvm.script.ir_builder.relax)</a>
+
+ <ul>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.or_">(in module tvm.script.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.or_">(in module tvm.script.tirx)</a>
+</li>
+ </ul></li>
+ </ul></td>
+ <td style="width: 33%; vertical-align: top;"><ul>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.op_attrs.Conv1DAttrs.out_dtype">out_dtype (tvm.relax.op.op_attrs.Conv1DAttrs property)</a>
<ul>
@@ -3944,9 +5292,7 @@ document.write(`
</li>
<li><a href="reference/api/python/topi.html#tvm.topi.nn.Workload.out_dtype">(tvm.topi.nn.Workload attribute)</a>
</li>
- </ul></li>
- </ul></td>
- <td style="width: 33%; vertical-align: top;"><ul>
+ </ul></li>
<li><a href="reference/api/python/topi.html#tvm.topi.nn.Workload.out_filter">out_filter (tvm.topi.nn.Workload attribute)</a>
</li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.op_attrs.AdaptivePool1DAttrs.out_layout">out_layout (tvm.relax.op.op_attrs.AdaptivePool1DAttrs property)</a>
@@ -3976,7 +5322,19 @@ document.write(`
</li>
</ul></li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.outer">outer() (in module tvm.relax.op)</a>
+
+ <ul>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.outer">(in module tvm.script.ir_builder.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.outer">(in module tvm.script.relax)</a>
+</li>
+ </ul></li>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.output">output() (in module tvm.script.ir_builder.relax)</a>
+
+ <ul>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.output">(in module tvm.script.relax)</a>
</li>
+ </ul></li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.op_attrs.AllClassNonMaximumSuppressionAttrs.output_format">output_format (tvm.relax.op.op_attrs.AllClassNonMaximumSuppressionAttrs property)</a>
</li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.op_attrs.Conv1DTransposeAttrs.output_padding">output_padding (tvm.relax.op.op_attrs.Conv1DTransposeAttrs property)</a>
@@ -4007,6 +5365,8 @@ document.write(`
<h2 id="P">P</h2>
<table style="width: 100%" class="indextable genindextable"><tr>
<td style="width: 33%; vertical-align: top;"><ul>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.Layout.pack">pack() (tvm.script.tirx.Layout method)</a>
+</li>
<li><a href="reference/api/python/contrib.html#tvm.contrib.hexagon.pack_imports">pack_imports() (in module tvm.contrib.hexagon)</a>
</li>
<li><a href="reference/api/python/relax/relax.html#tvm.relax.PackedFuncType">PackedFuncType (class in tvm.relax)</a>
@@ -4061,13 +5421,15 @@ document.write(`
</li>
<li><a href="reference/api/python/topi.html#tvm.topi.nn.Workload.padt">padt (tvm.topi.nn.Workload attribute)</a>
</li>
- <li><a href="reference/api/python/s_tir/schedule.html#tvm.s_tir.schedule.Schedule.parallel">parallel() (tvm.s_tir.schedule.Schedule method)</a>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.parallel">parallel() (in module tvm.script.tirx)</a>
+
+ <ul>
+ <li><a href="reference/api/python/s_tir/schedule.html#tvm.s_tir.schedule.Schedule.parallel">(tvm.s_tir.schedule.Schedule method)</a>
</li>
+ </ul></li>
<li><a href="reference/api/python/testing.html#tvm.testing.parameter">parameter() (in module tvm.testing)</a>
</li>
<li><a href="reference/api/python/s_tir/schedule.html#tvm.s_tir.schedule.StmtSRef.parent">parent (tvm.s_tir.schedule.StmtSRef property)</a>
-</li>
- <li><a href="reference/api/python/script/parser.html#tvm.script.parser.parse">parse() (in module tvm.script.parser)</a>
</li>
<li><a href="reference/api/python/support.html#tvm.support.nvcc.parse_compute_version">parse_compute_version() (in module tvm.support.nvcc)</a>
@@ -4096,9 +5458,19 @@ document.write(`
<li><a href="reference/api/python/contrib.html#tvm.contrib.tvmjs.TensorCacheShardingManager.pending_nbytes">pending_nbytes (tvm.contrib.tvmjs.TensorCacheShardingManager property)</a>
</li>
<li><a href="reference/api/python/ir.html#tvm.ir.Var.permute">permute() (tvm.ir.Var method)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.TileLayout.permute_by_groups">permute_by_groups() (tvm.script.tirx.TileLayout method)</a>
</li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.permute_dims">permute_dims() (in module tvm.relax.op)</a>
+
+ <ul>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.permute_dims">(in module tvm.script.ir_builder.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.permute_dims">(in module tvm.script.relax)</a>
</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.TileLayout.permute_dims">(tvm.script.tirx.TileLayout method)</a>
+</li>
+ </ul></li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.op_attrs.PermuteDimsAttrs">PermuteDimsAttrs (class in tvm.relax.op.op_attrs)</a>
</li>
<li><a href="tirx/api/cuda.html#tvm.backend.cuda.lang.Pipeline">Pipeline (class in tvm.backend.cuda.lang)</a>
@@ -4123,8 +5495,6 @@ document.write(`
</li>
<li><a href="reference/api/python/topi.html#tvm.topi.nn.pool1d">pool1d() (in module tvm.topi.nn)</a>
</li>
- </ul></td>
- <td style="width: 33%; vertical-align: top;"><ul>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.op_attrs.Pool1DAttrs">Pool1DAttrs (class in tvm.relax.op.op_attrs)</a>
</li>
<li><a href="reference/api/python/topi.html#tvm.topi.nn.pool2d">pool2d() (in module tvm.topi.nn)</a>
@@ -4137,6 +5507,8 @@ document.write(`
</li>
<li><a href="reference/api/python/topi.html#tvm.topi.nn.pool_grad">pool_grad() (in module tvm.topi.nn)</a>
</li>
+ </ul></td>
+ <td style="width: 33%; vertical-align: top;"><ul>
<li><a href="reference/api/python/topi.html#tvm.topi.testing.pool_grad_nchw">pool_grad_nchw() (in module tvm.topi.testing)</a>
</li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.op_attrs.Pool1DAttrs.pool_size">pool_size (tvm.relax.op.op_attrs.Pool1DAttrs property)</a>
@@ -4157,9 +5529,11 @@ document.write(`
</li>
<li><a href="reference/api/python/s_tir/schedule.html#tvm.s_tir.schedule.Trace.pop">pop() (tvm.s_tir.schedule.Trace method)</a>
</li>
- <li><a href="reference/api/python/te.html#tvm.te.popcount">popcount() (in module tvm.te)</a>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.popcount">popcount() (in module tvm.script.tirx)</a>
<ul>
+ <li><a href="reference/api/python/te.html#tvm.te.popcount">(in module tvm.te)</a>
+</li>
<li><a href="tirx/api/tirx.html#tvm.tirx.popcount">(in module tvm.tirx)</a>
</li>
</ul></li>
@@ -4179,11 +5553,19 @@ document.write(`
</ul></li>
<li><a href="reference/api/python/meta_schedule.html#tvm.s_tir.meta_schedule.Postproc">Postproc (class in tvm.s_tir.meta_schedule)</a>
</li>
- <li><a href="tirx/api/tirx.html#tvm.tirx.pow">pow() (in module tvm.tirx)</a>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.pow">pow() (in module tvm.script.tirx)</a>
+
+ <ul>
+ <li><a href="tirx/api/tirx.html#tvm.tirx.pow">(in module tvm.tirx)</a>
</li>
+ </ul></li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.power">power() (in module tvm.relax.op)</a>
<ul>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.power">(in module tvm.script.ir_builder.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.power">(in module tvm.script.relax)</a>
+</li>
<li><a href="reference/api/python/te.html#tvm.te.power">(in module tvm.te)</a>
</li>
<li><a href="tirx/api/tirx.html#tvm.tirx.power">(in module tvm.tirx)</a>
@@ -4212,11 +5594,19 @@ document.write(`
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.op_attrs.PReluAttrs">PReluAttrs (class in tvm.relax.op.op_attrs)</a>
</li>
<li><a href="reference/api/python/sym.html#tvm.sym.PresburgerSet">PresburgerSet (class in tvm.sym)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.prim_func">prim_func() (in module tvm.script.tirx)</a>
</li>
<li><a href="tirx/api/transform.html#tvm.tirx.transform.prim_func_pass">prim_func_pass() (in module tvm.tirx.transform)</a>
</li>
<li><a href="reference/api/python/relax/relax.html#tvm.relax.prim_value">prim_value() (in module tvm.relax)</a>
+
+ <ul>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.prim_value">(in module tvm.script.ir_builder.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.prim_value">(in module tvm.script.relax)</a>
</li>
+ </ul></li>
<li><a href="tirx/api/tirx.html#tvm.tirx.PrimFunc">PrimFunc (class in tvm.tirx)</a>
</li>
<li><a href="tirx/api/transform.html#tvm.tirx.transform.PrimFuncPass">PrimFuncPass (class in tvm.tirx.transform)</a>
@@ -4224,6 +5614,14 @@ document.write(`
<li><a href="reference/api/python/ir.html#tvm.ir.PrimType">PrimType (class in tvm.ir)</a>
</li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.print">print() (in module tvm.relax.op)</a>
+
+ <ul>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.print">(in module tvm.script.ir_builder.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.print">(in module tvm.script.relax)</a>
+</li>
+ </ul></li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.print_buffer">print_buffer() (in module tvm.script.tirx)</a>
</li>
<li><a href="reference/api/python/meta_schedule.html#tvm.s_tir.meta_schedule.TaskScheduler.print_tuning_statistics">print_tuning_statistics() (tvm.s_tir.meta_schedule.TaskScheduler method)</a>
</li>
@@ -4236,16 +5634,32 @@ document.write(`
<li><a href="reference/api/python/runtime/disco.html#tvm.runtime.disco.ProcessSession">ProcessSession (class in tvm.runtime.disco)</a>
</li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.prod">prod() (in module tvm.relax.op)</a>
+
+ <ul>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.prod">(in module tvm.script.ir_builder.relax)</a>
</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.prod">(in module tvm.script.relax)</a>
+</li>
+ </ul></li>
<li><a href="reference/api/python/meta_schedule.html#tvm.s_tir.meta_schedule.Profiler">Profiler (class in tvm.s_tir.meta_schedule)</a>
</li>
<li><a href="reference/api/python/sym.html#tvm.sym.ProofStrength">ProofStrength (class in tvm.sym)</a>
</li>
- <li><a href="tirx/api/tirx.html#tvm.tirx.ptr_byte_offset">ptr_byte_offset() (in module tvm.tirx)</a>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.Ptr">Ptr() (in module tvm.script.tirx)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.ptr">ptr() (in module tvm.script.tirx)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.ptr_byte_offset">ptr_byte_offset() (in module tvm.script.tirx)</a>
+
+ <ul>
+ <li><a href="tirx/api/tirx.html#tvm.tirx.ptr_byte_offset">(in module tvm.tirx)</a>
</li>
+ </ul></li>
<li><a href="reference/api/python/ir.html#tvm.ir.Var.ptr_to">ptr_to() (tvm.ir.Var method)</a>
</li>
<li><a href="tirx/api/ptx.html#tvm.backend.cuda.ptx.PTXNamespace">PTXNamespace (class in tvm.backend.cuda.ptx)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.py_module">py_module() (in module tvm.script.relax)</a>
</li>
<li><a href="reference/api/python/relax/relax.html#tvm.relax.PyExprMutator">PyExprMutator (class in tvm.relax)</a>
</li>
@@ -4257,16 +5671,30 @@ document.write(`
<h2 id="Q">Q</h2>
<table style="width: 100%" class="indextable genindextable"><tr>
<td style="width: 33%; vertical-align: top;"><ul>
- <li><a href="tirx/api/tirx.html#tvm.tirx.q_multiply_shift">q_multiply_shift() (in module tvm.tirx)</a>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.q_multiply_shift">q_multiply_shift() (in module tvm.script.tirx)</a>
+
+ <ul>
+ <li><a href="tirx/api/tirx.html#tvm.tirx.q_multiply_shift">(in module tvm.tirx)</a>
</li>
- <li><a href="tirx/api/tirx.html#tvm.tirx.q_multiply_shift_per_axis">q_multiply_shift_per_axis() (in module tvm.tirx)</a>
+ </ul></li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.q_multiply_shift_per_axis">q_multiply_shift_per_axis() (in module tvm.script.tirx)</a>
+
+ <ul>
+ <li><a href="tirx/api/tirx.html#tvm.tirx.q_multiply_shift_per_axis">(in module tvm.tirx)</a>
</li>
+ </ul></li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.quantize">quantize() (in module tvm.relax.op)</a>
+
+ <ul>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.quantize">(in module tvm.script.ir_builder.relax)</a>
</li>
- <li><a href="reference/api/python/relax/op.html#tvm.relax.op.op_attrs.QuantizeAttrs">QuantizeAttrs (class in tvm.relax.op.op_attrs)</a>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.quantize">(in module tvm.script.relax)</a>
</li>
+ </ul></li>
</ul></td>
<td style="width: 33%; vertical-align: top;"><ul>
+ <li><a href="reference/api/python/relax/op.html#tvm.relax.op.op_attrs.QuantizeAttrs">QuantizeAttrs (class in tvm.relax.op.op_attrs)</a>
+</li>
<li><a href="reference/api/python/meta_schedule.html#tvm.s_tir.meta_schedule.Database.query">query() (tvm.s_tir.meta_schedule.Database method)</a>
</li>
<li><a href="reference/api/python/meta_schedule.html#tvm.s_tir.meta_schedule.Database.query_ir_module">query_ir_module() (tvm.s_tir.meta_schedule.Database method)</a>
@@ -4282,13 +5710,23 @@ document.write(`
<table style="width: 100%" class="indextable genindextable"><tr>
<td style="width: 33%; vertical-align: top;"><ul>
<li><a href="reference/api/python/relax/relax.html#tvm.relax.ExecBuilder.r">r() (tvm.relax.ExecBuilder method)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.axis.R">R() (tvm.script.tirx.axis static method)</a>
</li>
<li><a href="tirx/api/tirx.html#tvm.tirx.Ramp">Ramp (class in tvm.tirx)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.ramp">ramp (in module tvm.script.tirx)</a>
</li>
<li><a href="reference/api/python/contrib.html#tvm.contrib.random.randint">randint() (in module tvm.contrib.random)</a>
</li>
<li><a href="reference/api/python/ir.html#tvm.ir.Range">Range (class in tvm.ir)</a>
</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.range_">range_() (in module tvm.script.relax)</a>
+
+ <ul>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.range_">(in module tvm.script.tirx)</a>
+</li>
+ </ul></li>
<li><a href="tirx/api/cuda.html#tvm.backend.cuda.lang.RankAwareGroupMajorTileScheduler">RankAwareGroupMajorTileScheduler (class in tvm.backend.cuda.lang)</a>
</li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.op_attrs.DropoutAttrs.rate">rate (tvm.relax.op.op_attrs.DropoutAttrs property)</a>
@@ -4300,6 +5738,8 @@ document.write(`
<li><a href="reference/api/python/testing.html#tvm.testing.Path.read_text">read_text() (tvm.testing.Path method)</a>
</li>
<li><a href="reference/api/python/testing.html#tvm.testing.Path.readlink">readlink() (tvm.testing.Path method)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.reads">reads() (in module tvm.script.tirx)</a>
</li>
<li><a href="reference/api/python/relax/transform.html#tvm.relax.transform.RealizeVDevice">RealizeVDevice() (in module tvm.relax.transform)</a>
</li>
@@ -4314,7 +5754,11 @@ document.write(`
<li><a href="reference/api/python/te.html#tvm.te.Reduce">Reduce (class in tvm.te)</a>
</li>
<li><a href="reference/api/python/topi.html#tvm.topi.nn.reduce">reduce() (in module tvm.topi.nn)</a>
+
+ <ul>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.axis.reduce">(tvm.script.tirx.axis static method)</a>
</li>
+ </ul></li>
<li><a href="reference/api/python/te.html#tvm.te.reduce_axis">reduce_axis() (in module tvm.te)</a>
</li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.op_attrs.NLLLossAttrs.reduction">reduction (tvm.relax.op.op_attrs.NLLLossAttrs property)</a>
@@ -4340,10 +5784,18 @@ document.write(`
<li><a href="tirx/api/tirx.html#tvm.tirx.register_intrin_lowering">register_intrin_lowering() (in module tvm.tirx)</a>
</li>
<li><a href="reference/api/python/contrib.html#tvm.contrib.hexagon.register_linker">register_linker() (in module tvm.contrib.hexagon)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.register_module_validator">register_module_validator() (in module tvm.script)</a>
+</li>
+ <li><a href="reference/api/python/script/parser.html#tvm.script.parser.register_namespace">register_namespace() (in module tvm.script.parser)</a>
+</li>
+ <li><a href="reference/api/python/script/parser.html#tvm.script.parser.register_namespace_initializer">register_namespace_initializer() (in module tvm.script.parser)</a>
</li>
<li><a href="reference/api/python/ir.html#tvm.ir.register_op_attr">register_op_attr() (in module tvm.ir)</a>
</li>
<li><a href="reference/api/python/relax/relax.html#tvm.relax.register_pipeline">register_pipeline() (in module tvm.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.register_script_namespace">register_script_namespace() (in module tvm.script.tirx)</a>
</li>
<li><a href="tirx/api/ptx.html#tvm.backend.cuda.ptx.register_table">register_table() (in module tvm.backend.cuda.ptx)</a>
</li>
@@ -4359,8 +5811,12 @@ document.write(`
</li>
<li><a href="reference/api/python/s_tir/schedule.html#tvm.s_tir.schedule.Schedule.reindex_cache_write">reindex_cache_write() (tvm.s_tir.schedule.Schedule method)</a>
</li>
- <li><a href="tirx/api/tirx.html#tvm.tirx.reinterpret">reinterpret() (in module tvm.tirx)</a>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.reinterpret">reinterpret() (in module tvm.script.tirx)</a>
+
+ <ul>
+ <li><a href="tirx/api/tirx.html#tvm.tirx.reinterpret">(in module tvm.tirx)</a>
</li>
+ </ul></li>
<li><a href="reference/api/python/relax/frontend.html#tvm.relax.frontend.torch.relax_dynamo">relax_dynamo() (in module tvm.relax.frontend.torch)</a>
</li>
<li><a href="reference/api/python/support.html#tvm.support.utils.FileLock.release">release() (tvm.support.utils.FileLock method)</a>
@@ -4374,6 +5830,8 @@ document.write(`
</li>
</ul></li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.nn.relu6">relu6() (in module tvm.relax.op.nn)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.axis.remap">remap() (tvm.script.tirx.axis static method)</a>
</li>
<li><a href="tirx/api/cuda.html#tvm.backend.cuda.lang.MBarrier.remote_view">remote_view() (tvm.backend.cuda.lang.MBarrier method)</a>
</li>
@@ -4422,7 +5880,13 @@ document.write(`
<li><a href="reference/api/python/topi.html#tvm.topi.testing.reorg_python">reorg_python() (in module tvm.topi.testing)</a>
</li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.repeat">repeat() (in module tvm.relax.op)</a>
+
+ <ul>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.repeat">(in module tvm.script.ir_builder.relax)</a>
</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.repeat">(in module tvm.script.relax)</a>
+</li>
+ </ul></li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.op_attrs.RepeatAttrs">RepeatAttrs (class in tvm.relax.op.op_attrs)</a>
</li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.op_attrs.RepeatAttrs.repeats">repeats (tvm.relax.op.op_attrs.RepeatAttrs property)</a>
@@ -4439,8 +5903,6 @@ document.write(`
<li><a href="tirx/api/tirx.html#tvm.tirx.TilePrimitiveCall.replace">(tvm.tirx.TilePrimitiveCall method)</a>
</li>
</ul></li>
- </ul></td>
- <td style="width: 33%; vertical-align: top;"><ul>
<li><a href="reference/api/python/relax/relax.html#tvm.relax.DataflowBlockRewrite.replace_all_uses">replace_all_uses() (tvm.relax.DataflowBlockRewrite method)</a>
</li>
<li><a href="reference/api/python/relax/distributed.html#tvm.relax.distributed.PlacementSpec.replica">replica() (tvm.relax.distributed.PlacementSpec static method)</a>
@@ -4449,14 +5911,24 @@ document.write(`
</li>
<li><a href="reference/api/python/rpc.html#tvm.rpc.TrackerSession.request">request() (tvm.rpc.TrackerSession method)</a>
</li>
+ </ul></td>
+ <td style="width: 33%; vertical-align: top;"><ul>
<li><a href="reference/api/python/rpc.html#tvm.rpc.TrackerSession.request_and_run">request_and_run() (tvm.rpc.TrackerSession method)</a>
+</li>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.ir.require_defined">require_defined() (in module tvm.script.ir_builder.ir)</a>
</li>
<li><a href="tirx/api/transform.html#tvm.tirx.transform.HoistedLetBindings.RequiredByConditional">RequiredByConditional (tvm.tirx.transform.HoistedLetBindings attribute)</a>
</li>
<li><a href="reference/api/python/ir.html#tvm.ir.Op.reset_attr">reset_attr() (tvm.ir.Op method)</a>
</li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.reshape">reshape() (in module tvm.relax.op)</a>
+
+ <ul>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.reshape">(in module tvm.script.ir_builder.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.reshape">(in module tvm.script.relax)</a>
</li>
+ </ul></li>
<li><a href="reference/api/python/topi.html#tvm.topi.image.resize1d">resize1d() (in module tvm.topi.image)</a>
</li>
<li><a href="reference/api/python/topi.html#tvm.topi.testing.resize1d_python">resize1d_python() (in module tvm.topi.testing)</a>
@@ -4481,10 +5953,36 @@ document.write(`
</li>
<li><a href="reference/api/python/testing.html#tvm.testing.Path.resolve">resolve() (tvm.testing.Path method)</a>
</li>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.resolve_global_info_">resolve_global_info_() (in module tvm.script.ir_builder.relax)</a>
+
+ <ul>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.resolve_global_info_">(in module tvm.script.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.resolve_global_info_">(in module tvm.script.tirx)</a>
+</li>
+ </ul></li>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.resolve_type_var_">resolve_type_var_() (in module tvm.script.ir_builder.relax)</a>
+
+ <ul>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.resolve_type_var_">(in module tvm.script.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.resolve_type_var_">(in module tvm.script.tirx)</a>
+</li>
+ </ul></li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.op_attrs.TopKAttrs.ret_type">ret_type (tvm.relax.op.op_attrs.TopKAttrs property)</a>
</li>
<li><a href="tirx/api/tirx.html#tvm.tirx.Return">Return (class in tvm.tirx)</a>
</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.Return">Return() (in module tvm.script.tirx)</a>
+</li>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.return_">return_() (in module tvm.script.ir_builder.relax)</a>
+
+ <ul>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.return_">(in module tvm.script.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.return_">(in module tvm.script.tirx)</a>
+</li>
+ </ul></li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.op_attrs.NonMaximumSuppressionAttrs.return_indices">return_indices (tvm.relax.op.op_attrs.NonMaximumSuppressionAttrs property)</a>
</li>
<li><a href="reference/api/python/s_tir/schedule.html#tvm.s_tir.schedule.Schedule.reverse_compute_at">reverse_compute_at() (tvm.s_tir.schedule.Schedule method)</a>
@@ -4492,7 +5990,13 @@ document.write(`
<li><a href="reference/api/python/s_tir/schedule.html#tvm.s_tir.schedule.Schedule.reverse_compute_inline">reverse_compute_inline() (tvm.s_tir.schedule.Schedule method)</a>
</li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.reverse_sequence">reverse_sequence() (in module tvm.relax.op)</a>
+
+ <ul>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.reverse_sequence">(in module tvm.script.ir_builder.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.reverse_sequence">(in module tvm.script.relax)</a>
</li>
+ </ul></li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.op_attrs.ReverseSequenceAttrs">ReverseSequenceAttrs (class in tvm.relax.op.op_attrs)</a>
</li>
<li><a href="reference/api/python/sym.html#tvm.sym.Analyzer.rewrite_simplify">rewrite_simplify() (tvm.sym.Analyzer method)</a>
@@ -4501,12 +6005,24 @@ document.write(`
</li>
<li><a href="reference/api/python/relax/transform.html#tvm.relax.transform.RewriteDataflowReshape">RewriteDataflowReshape() (in module tvm.relax.transform)</a>
</li>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.rewriter">rewriter() (in module tvm.script.ir_builder.relax)</a>
+
+ <ul>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.rewriter">(in module tvm.script.relax)</a>
+</li>
+ </ul></li>
<li><a href="reference/api/python/s_tir/schedule.html#tvm.s_tir.schedule.Schedule.rfactor">rfactor() (tvm.s_tir.schedule.Schedule method)</a>
</li>
<li><a href="reference/api/python/testing.html#tvm.testing.Path.rglob">rglob() (tvm.testing.Path method)</a>
</li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.right_shift">right_shift() (in module tvm.relax.op)</a>
+
+ <ul>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.right_shift">(in module tvm.script.ir_builder.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.right_shift">(in module tvm.script.relax)</a>
</li>
+ </ul></li>
<li><a href="reference/api/python/testing.html#tvm.testing.Path.rmdir">rmdir() (tvm.testing.Path method)</a>
</li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.nn.rms_norm">rms_norm() (in module tvm.relax.op.nn)</a>
@@ -4519,8 +6035,14 @@ document.write(`
</li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.op_attrs.RMSNormAttrs">RMSNormAttrs (class in tvm.relax.op.op_attrs)</a>
</li>
- <li><a href="reference/api/python/rpc.html#tvm.rpc.RPCSession.rocm">rocm() (tvm.rpc.RPCSession method)</a>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.rocm">rocm() (in module tvm.script.ir_builder.relax)</a>
+
+ <ul>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.rocm">(in module tvm.script.relax)</a>
+</li>
+ <li><a href="reference/api/python/rpc.html#tvm.rpc.RPCSession.rocm">(tvm.rpc.RPCSession method)</a>
</li>
+ </ul></li>
<li><a href="reference/api/python/support.html#tvm.support.rocm.rocm_link">rocm_link() (in module tvm.support.rocm)</a>
</li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.op_attrs.Resize2DAttrs.roi">roi (tvm.relax.op.op_attrs.Resize2DAttrs property)</a>
@@ -4554,6 +6076,12 @@ document.write(`
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.round">round() (in module tvm.relax.op)</a>
<ul>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.round">(in module tvm.script.ir_builder.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.round">(in module tvm.script.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.round">(in module tvm.script.tirx)</a>
+</li>
<li><a href="reference/api/python/te.html#tvm.te.round">(in module tvm.te)</a>
</li>
<li><a href="tirx/api/tirx.html#tvm.tirx.round">(in module tvm.tirx)</a>
@@ -4574,6 +6102,12 @@ document.write(`
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.rsqrt">rsqrt() (in module tvm.relax.op)</a>
<ul>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.rsqrt">(in module tvm.script.ir_builder.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.rsqrt">(in module tvm.script.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.rsqrt">(in module tvm.script.tirx)</a>
+</li>
<li><a href="reference/api/python/te.html#tvm.te.rsqrt">(in module tvm.te)</a>
</li>
<li><a href="tirx/api/tirx.html#tvm.tirx.rsqrt">(in module tvm.tirx)</a>
@@ -4597,6 +6131,8 @@ document.write(`
<h2 id="S">S</h2>
<table style="width: 100%" class="indextable genindextable"><tr>
<td style="width: 33%; vertical-align: top;"><ul>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.axis.S">S() (tvm.script.tirx.axis static method)</a>
+</li>
<li><a href="reference/api/python/ir.html#tvm.ir.GlobalInfo.same_as">same_as() (tvm.ir.GlobalInfo method)</a>
<ul>
@@ -4624,12 +6160,20 @@ document.write(`
</li>
</ul></li>
<li><a href="reference/api/python/ir.html#tvm.ir.save_json">save_json() (in module tvm.ir)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.sblock">sblock() (in module tvm.script.tirx)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.sblock_alloc_buffer">sblock_alloc_buffer() (in module tvm.script.tirx)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.sblock_attr">sblock_attr() (in module tvm.script.tirx)</a>
</li>
<li><a href="reference/api/python/s_tir/dlight.html#tvm.s_tir.dlight.SBlockInfo">SBlockInfo (class in tvm.s_tir.dlight)</a>
</li>
<li><a href="reference/api/python/s_tir/schedule.html#tvm.s_tir.schedule.SBlockRV">SBlockRV (class in tvm.s_tir.schedule)</a>
</li>
<li><a href="reference/api/python/s_tir/schedule.html#tvm.s_tir.schedule.SBlockScope">SBlockScope (class in tvm.s_tir.schedule)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.scalar_wrapper">scalar_wrapper (class in tvm.script.tirx)</a>
</li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.op_attrs.AttentionAttrs.scale">scale (tvm.relax.op.op_attrs.AttentionAttrs property)</a>
@@ -4650,7 +6194,11 @@ document.write(`
<li><a href="reference/api/python/topi.html#tvm.topi.nn.scale_shift_nhwc">scale_shift_nhwc() (in module tvm.topi.nn)</a>
</li>
<li><a href="reference/api/python/te.html#tvm.te.scan">scan() (in module tvm.te)</a>
+
+ <ul>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.axis.scan">(tvm.script.tirx.axis static method)</a>
</li>
+ </ul></li>
<li><a href="reference/api/python/te.html#tvm.te.ScanOp">ScanOp (class in tvm.te)</a>
</li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.op_attrs.ScanopAttrs">ScanopAttrs (class in tvm.relax.op.op_attrs)</a>
@@ -4658,7 +6206,13 @@ document.write(`
<li><a href="reference/api/python/runtime/disco.html#tvm.runtime.disco.Session.scatter">scatter() (tvm.runtime.disco.Session method)</a>
</li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.scatter_elements">scatter_elements() (in module tvm.relax.op)</a>
+
+ <ul>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.scatter_elements">(in module tvm.script.ir_builder.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.scatter_elements">(in module tvm.script.relax)</a>
</li>
+ </ul></li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.ccl.scatter_from_worker0">scatter_from_worker0() (in module tvm.relax.op.ccl)</a>
<ul>
@@ -4666,7 +6220,13 @@ document.write(`
</li>
</ul></li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.scatter_nd">scatter_nd() (in module tvm.relax.op)</a>
+
+ <ul>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.scatter_nd">(in module tvm.script.ir_builder.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.scatter_nd">(in module tvm.script.relax)</a>
</li>
+ </ul></li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.op_attrs.ScatterCollectiveAttrs">ScatterCollectiveAttrs (class in tvm.relax.op.op_attrs)</a>
</li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.op_attrs.ScatterElementsAttrs">ScatterElementsAttrs (class in tvm.relax.op.op_attrs)</a>
@@ -4688,8 +6248,12 @@ document.write(`
<li><a href="reference/api/python/s_tir/schedule.html#tvm.s_tir.schedule.ScheduleState">ScheduleState (class in tvm.s_tir.schedule)</a>
</li>
<li><a href="reference/api/python/ir.html#tvm.ir.Var.scope">scope() (tvm.ir.Var method)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.scope_id">scope_id() (in module tvm.script.tirx)</a>
</li>
<li><a href="tirx/api/tile_dispatch.html#ScopedOp">ScopedOp (built-in class)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.ScopeIdDef">ScopeIdDef (class in tvm.script.tirx)</a>
</li>
<li><a href="tirx/api/tirx.html#tvm.tirx.ScopeIdDefStmt">ScopeIdDefStmt (class in tvm.tirx)</a>
</li>
@@ -4716,15 +6280,33 @@ document.write(`
<li><a href="reference/api/python/s_tir/schedule.html#tvm.s_tir.schedule.Schedule.seed">seed() (tvm.s_tir.schedule.Schedule method)</a>
</li>
<li><a href="tirx/api/tirx.html#tvm.tirx.Select">Select (class in tvm.tirx)</a>
+</li>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.select">select() (in module tvm.script.ir_builder.relax)</a>
+
+ <ul>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.select">(in module tvm.script.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.select">(in module tvm.script.tirx)</a>
+</li>
+ </ul></li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.selector">selector() (in module tvm.script.tirx)</a>
</li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.nn.selu">selu() (in module tvm.relax.op.nn)</a>
</li>
<li><a href="reference/api/python/support.html#tvm.support.popen_pool.PopenWorker.send">send() (tvm.support.popen_pool.PopenWorker method)</a>
</li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.op_attrs.ReverseSequenceAttrs.seq_axis">seq_axis (tvm.relax.op.op_attrs.ReverseSequenceAttrs property)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.seq_scope">seq_scope() (in module tvm.script.tirx)</a>
</li>
<li><a href="reference/api/python/relax/relax.html#tvm.relax.SeqExpr">SeqExpr (class in tvm.relax)</a>
</li>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.SeqExpr">SeqExpr() (in module tvm.script.ir_builder.relax)</a>
+
+ <ul>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.SeqExpr">(in module tvm.script.relax)</a>
+</li>
+ </ul></li>
<li><a href="tirx/api/tirx.html#tvm.tirx.SeqStmt">SeqStmt (class in tvm.tirx)</a>
</li>
<li><a href="reference/api/python/topi.html#tvm.topi.nn.Sequence">Sequence (class in tvm.topi.nn)</a>
@@ -4734,6 +6316,8 @@ document.write(`
<li><a href="reference/api/python/transform.html#tvm.ir.transform.Sequential">Sequential (class in tvm.ir.transform)</a>
</li>
<li><a href="reference/api/python/ir.html#tvm.ir.SequentialSpan">SequentialSpan (class in tvm.ir)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.serial">serial() (in module tvm.script.tirx)</a>
</li>
<li><a href="reference/api/python/rpc.html#tvm.rpc.Server">Server (class in tvm.rpc)</a>
</li>
@@ -4759,6 +6343,14 @@ document.write(`
</li>
<li><a href="reference/api/python/sym.html#tvm.sym.Analyzer.set_maximum_rewrite_steps">set_maximum_rewrite_steps() (tvm.sym.Analyzer method)</a>
</li>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.set_mutable_cell_">set_mutable_cell_() (in module tvm.script.ir_builder.relax)</a>
+
+ <ul>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.set_mutable_cell_">(in module tvm.script.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.set_mutable_cell_">(in module tvm.script.tirx)</a>
+</li>
+ </ul></li>
<li><a href="reference/api/python/ir.html#tvm.ir.Op.set_num_inputs">set_num_inputs() (tvm.ir.Op method)</a>
</li>
<li><a href="reference/api/python/s_tir/schedule.html#tvm.s_tir.schedule.Schedule.set_scope">set_scope() (tvm.s_tir.schedule.Schedule method)</a>
@@ -4771,22 +6363,68 @@ document.write(`
</li>
<li><a href="reference/api/python/sym.html#tvm.sym.Analyzer.set_z3_timeout_ms">set_z3_timeout_ms() (tvm.sym.Analyzer method)</a>
</li>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.setattr_">setattr_() (in module tvm.script.ir_builder.relax)</a>
+
+ <ul>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.setattr_">(in module tvm.script.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.setattr_">(in module tvm.script.tirx)</a>
+</li>
+ </ul></li>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.setitem_">setitem_() (in module tvm.script.ir_builder.relax)</a>
+
+ <ul>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.setitem_">(in module tvm.script.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.setitem_">(in module tvm.script.tirx)</a>
+</li>
+ </ul></li>
<li><a href="reference/api/python/relax/training.html#tvm.relax.training.SetupTrainer">SetupTrainer (class in tvm.relax.training)</a>
+</li>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.Shape">Shape() (in module tvm.script.ir_builder.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.shape">shape() (in module tvm.script.ir_builder.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.Shape">Shape() (in module tvm.script.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.shape">shape() (in module tvm.script.relax)</a>
</li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.shape_of">shape_of() (in module tvm.relax.op)</a>
+
+ <ul>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.shape_of">(in module tvm.script.ir_builder.relax)</a>
</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.shape_of">(in module tvm.script.relax)</a>
+</li>
+ </ul></li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.shape_to_tensor">shape_to_tensor() (in module tvm.relax.op)</a>
+
+ <ul>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.shape_to_tensor">(in module tvm.script.ir_builder.relax)</a>
</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.shape_to_tensor">(in module tvm.script.relax)</a>
+</li>
+ </ul></li>
<li><a href="reference/api/python/relax/relax.html#tvm.relax.ShapeExpr">ShapeExpr (class in tvm.relax)</a>
</li>
<li><a href="reference/api/python/relax/relax.html#tvm.relax.ShapeType">ShapeType (class in tvm.relax)</a>
</li>
<li><a href="reference/api/python/relax/distributed.html#tvm.relax.distributed.PlacementSpec.sharding">sharding() (tvm.relax.distributed.PlacementSpec static method)</a>
</li>
- <li><a href="tirx/api/tirx.html#tvm.tirx.shift_left">shift_left() (in module tvm.tirx)</a>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.shared_scalar">shared_scalar() (in module tvm.script.tirx)</a>
</li>
- <li><a href="tirx/api/tirx.html#tvm.tirx.shift_right">shift_right() (in module tvm.tirx)</a>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.shift_left">shift_left() (in module tvm.script.tirx)</a>
+
+ <ul>
+ <li><a href="tirx/api/tirx.html#tvm.tirx.shift_left">(in module tvm.tirx)</a>
+</li>
+ </ul></li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.shift_right">shift_right() (in module tvm.script.tirx)</a>
+
+ <ul>
+ <li><a href="tirx/api/tirx.html#tvm.tirx.shift_right">(in module tvm.tirx)</a>
</li>
+ </ul></li>
<li><a href="reference/api/python/instrument.html#tvm.ir.instrument.PassInstrument.should_run">should_run() (tvm.ir.instrument.PassInstrument method)</a>
</li>
<li><a href="reference/api/python/relax/relax.html#tvm.relax.BasePyModule.show">show() (tvm.relax.BasePyModule method)</a>
@@ -4808,13 +6446,25 @@ document.write(`
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.sigmoid">sigmoid() (in module tvm.relax.op)</a>
<ul>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.sigmoid">(in module tvm.script.ir_builder.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.sigmoid">(in module tvm.script.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.sigmoid">(in module tvm.script.tirx)</a>
+</li>
<li><a href="reference/api/python/te.html#tvm.te.sigmoid">(in module tvm.te)</a>
</li>
<li><a href="tirx/api/tirx.html#tvm.tirx.sigmoid">(in module tvm.tirx)</a>
</li>
</ul></li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.sign">sign() (in module tvm.relax.op)</a>
+
+ <ul>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.sign">(in module tvm.script.ir_builder.relax)</a>
</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.sign">(in module tvm.script.relax)</a>
+</li>
+ </ul></li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.nn.silu">silu() (in module tvm.relax.op.nn)</a>
</li>
<li><a href="reference/api/python/s_tir/schedule.html#tvm.s_tir.schedule.Trace.simplified">simplified() (tvm.s_tir.schedule.Trace method)</a>
@@ -4827,15 +6477,21 @@ document.write(`
<li><a href="reference/api/python/sym.html#tvm.sym.Analyzer.simplify">(tvm.sym.Analyzer method)</a>
</li>
</ul></li>
+ </ul></td>
+ <td style="width: 33%; vertical-align: top;"><ul>
<li><a href="reference/api/python/topi.html#tvm.topi.nn.simulated_dequantize">simulated_dequantize() (in module tvm.topi.nn)</a>
</li>
<li><a href="reference/api/python/topi.html#tvm.topi.nn.simulated_quantize">simulated_quantize() (in module tvm.topi.nn)</a>
</li>
- </ul></td>
- <td style="width: 33%; vertical-align: top;"><ul>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.sin">sin() (in module tvm.relax.op)</a>
<ul>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.sin">(in module tvm.script.ir_builder.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.sin">(in module tvm.script.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.sin">(in module tvm.script.tirx)</a>
+</li>
<li><a href="reference/api/python/te.html#tvm.te.sin">(in module tvm.te)</a>
</li>
<li><a href="tirx/api/tirx.html#tvm.tirx.sin">(in module tvm.tirx)</a>
@@ -4846,20 +6502,44 @@ document.write(`
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.sinh">sinh() (in module tvm.relax.op)</a>
<ul>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.sinh">(in module tvm.script.ir_builder.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.sinh">(in module tvm.script.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.sinh">(in module tvm.script.tirx)</a>
+</li>
<li><a href="reference/api/python/te.html#tvm.te.sinh">(in module tvm.te)</a>
</li>
<li><a href="tirx/api/tirx.html#tvm.tirx.sinh">(in module tvm.tirx)</a>
</li>
</ul></li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.size">size() (in module tvm.relax.op)</a>
+
+ <ul>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.size">(in module tvm.script.ir_builder.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.size">(in module tvm.script.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.Layout.size">(tvm.script.tirx.Layout method)</a>
</li>
+ </ul></li>
<li><a href="tirx/api/transform.html#tvm.tirx.transform.SkipAssert">SkipAssert() (in module tvm.tirx.transform)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.Layout.slice">slice() (tvm.script.tirx.Layout method)</a>
</li>
<li><a href="reference/api/python/topi.html#tvm.topi.testing.slice_axis_python">slice_axis_python() (in module tvm.topi.testing)</a>
</li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.slice_scatter">slice_scatter() (in module tvm.relax.op)</a>
+
+ <ul>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.slice_scatter">(in module tvm.script.ir_builder.relax)</a>
</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.slice_scatter">(in module tvm.script.relax)</a>
+</li>
+ </ul></li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.op_attrs.SliceScatterAttrs">SliceScatterAttrs (class in tvm.relax.op.op_attrs)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.smem">smem() (in module tvm.script.tirx)</a>
</li>
<li><a href="tirx/api/cuda.html#tvm.backend.cuda.lang.SmemDescriptor">SmemDescriptor (class in tvm.backend.cuda.lang)</a>
</li>
@@ -4892,7 +6572,13 @@ document.write(`
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.op_attrs.SoftplusAttrs">SoftplusAttrs (class in tvm.relax.op.op_attrs)</a>
</li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.sort">sort() (in module tvm.relax.op)</a>
+
+ <ul>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.sort">(in module tvm.script.ir_builder.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.sort">(in module tvm.script.relax)</a>
</li>
+ </ul></li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.op_attrs.SortAttrs">SortAttrs (class in tvm.relax.op.op_attrs)</a>
</li>
<li><a href="reference/api/python/ir.html#tvm.ir.SourceName">SourceName (class in tvm.ir)</a>
@@ -4908,6 +6594,10 @@ document.write(`
<li><a href="reference/api/python/meta_schedule.html#tvm.s_tir.meta_schedule.SpaceGenerator">SpaceGenerator (class in tvm.s_tir.meta_schedule)</a>
</li>
<li><a href="reference/api/python/ir.html#tvm.ir.Span">Span (class in tvm.ir)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.Layout.span">span() (tvm.script.tirx.Layout method)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.axis.spatial">spatial() (tvm.script.tirx.axis static method)</a>
</li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.op_attrs.ROIAlignAttrs.spatial_scale">spatial_scale (tvm.relax.op.op_attrs.ROIAlignAttrs property)</a>
@@ -4922,6 +6612,10 @@ document.write(`
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.split">split() (in module tvm.relax.op)</a>
<ul>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.split">(in module tvm.script.ir_builder.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.split">(in module tvm.script.relax)</a>
+</li>
<li><a href="reference/api/python/s_tir/schedule.html#tvm.s_tir.schedule.Schedule.split">(tvm.s_tir.schedule.Schedule method)</a>
</li>
</ul></li>
@@ -4936,25 +6630,53 @@ document.write(`
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.sqrt">sqrt() (in module tvm.relax.op)</a>
<ul>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.sqrt">(in module tvm.script.ir_builder.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.sqrt">(in module tvm.script.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.sqrt">(in module tvm.script.tirx)</a>
+</li>
<li><a href="reference/api/python/te.html#tvm.te.sqrt">(in module tvm.te)</a>
</li>
<li><a href="tirx/api/tirx.html#tvm.tirx.sqrt">(in module tvm.tirx)</a>
</li>
</ul></li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.square">square() (in module tvm.relax.op)</a>
+
+ <ul>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.square">(in module tvm.script.ir_builder.relax)</a>
</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.square">(in module tvm.script.relax)</a>
+</li>
+ </ul></li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.squeeze">squeeze() (in module tvm.relax.op)</a>
+
+ <ul>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.squeeze">(in module tvm.script.ir_builder.relax)</a>
</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.squeeze">(in module tvm.script.relax)</a>
+</li>
+ </ul></li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.op_attrs.SqueezeAttrs">SqueezeAttrs (class in tvm.relax.op.op_attrs)</a>
</li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.stack">stack() (in module tvm.relax.op)</a>
+
+ <ul>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.stack">(in module tvm.script.ir_builder.relax)</a>
</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.stack">(in module tvm.script.relax)</a>
+</li>
+ </ul></li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.op_attrs.StackAttrs">StackAttrs (class in tvm.relax.op.op_attrs)</a>
</li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.grad.start_checkpoint">start_checkpoint() (in module tvm.relax.op.grad)</a>
</li>
- <li><a href="tirx/api/tirx.html#tvm.tirx.start_profile_intrinsic">start_profile_intrinsic() (in module tvm.tirx)</a>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.start_profile_intrinsic">start_profile_intrinsic() (in module tvm.script.tirx)</a>
+
+ <ul>
+ <li><a href="tirx/api/tirx.html#tvm.tirx.start_profile_intrinsic">(in module tvm.tirx)</a>
</li>
+ </ul></li>
<li><a href="reference/api/python/testing.html#tvm.testing.Path.stat">stat() (tvm.testing.Path method)</a>
</li>
<li><a href="reference/api/python/s_tir/schedule.html#tvm.s_tir.schedule.Schedule.state">state (tvm.s_tir.schedule.Schedule property)</a>
@@ -4968,7 +6690,13 @@ document.write(`
<li><a href="reference/api/python/support.html#tvm.support.popen_pool.StatusKind">StatusKind (class in tvm.support.popen_pool)</a>
</li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.std">std() (in module tvm.relax.op)</a>
+
+ <ul>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.std">(in module tvm.script.ir_builder.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.std">(in module tvm.script.relax)</a>
</li>
+ </ul></li>
<li><a href="tirx/api/tirx.html#tvm.tirx.Stmt">Stmt (class in tvm.tirx)</a>
</li>
<li><a href="reference/api/python/s_tir/schedule.html#tvm.s_tir.schedule.StmtSRef.stmt">stmt (tvm.s_tir.schedule.StmtSRef property)</a>
@@ -4984,11 +6712,23 @@ document.write(`
<li><a href="reference/api/python/s_tir/schedule.html#tvm.s_tir.schedule.StmtSRef">StmtSRef (class in tvm.s_tir.schedule)</a>
</li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.builtin.stop_lift_params">stop_lift_params() (in module tvm.relax.op.builtin)</a>
+
+ <ul>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.stop_lift_params">(in module tvm.script.ir_builder.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.stop_lift_params">(in module tvm.script.relax)</a>
</li>
+ </ul></li>
<li><a href="reference/api/python/s_tir/schedule.html#tvm.s_tir.schedule.Schedule.storage_align">storage_align() (tvm.s_tir.schedule.Schedule method)</a>
</li>
<li><a href="tirx/api/transform.html#tvm.tirx.transform.StorageRewrite">StorageRewrite() (in module tvm.tirx.transform)</a>
</li>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.str">str() (in module tvm.script.ir_builder.relax)</a>
+
+ <ul>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.str">(in module tvm.script.relax)</a>
+</li>
+ </ul></li>
<li><a href="reference/api/python/topi.html#tvm.topi.nn.Workload.stride_h">stride_h (tvm.topi.nn.Workload attribute)</a>
</li>
<li><a href="reference/api/python/topi.html#tvm.topi.nn.Workload.stride_w">stride_w (tvm.topi.nn.Workload attribute)</a>
@@ -4998,6 +6738,10 @@ document.write(`
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.strided_slice">strided_slice() (in module tvm.relax.op)</a>
<ul>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.strided_slice">(in module tvm.script.ir_builder.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.strided_slice">(in module tvm.script.relax)</a>
+</li>
<li><a href="reference/api/python/topi.html#tvm.topi.nn.strided_slice">(in module tvm.topi.nn)</a>
</li>
</ul></li>
@@ -5042,12 +6786,22 @@ document.write(`
<li><a href="reference/api/python/sym.html#tvm.sym.subspace_divide">subspace_divide() (in module tvm.sym)</a>
</li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.subtract">subtract() (in module tvm.relax.op)</a>
+
+ <ul>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.subtract">(in module tvm.script.ir_builder.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.subtract">(in module tvm.script.relax)</a>
</li>
+ </ul></li>
<li><a href="reference/api/python/relax/analysis.html#tvm.relax.analysis.suggest_layout_transforms">suggest_layout_transforms() (in module tvm.relax.analysis)</a>
</li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.sum">sum() (in module tvm.relax.op)</a>
<ul>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.sum">(in module tvm.script.ir_builder.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.sum">(in module tvm.script.relax)</a>
+</li>
<li><a href="reference/api/python/te.html#tvm.te.sum">(in module tvm.te)</a>
</li>
<li><a href="tirx/api/tirx.html#tvm.tirx.sum">(in module tvm.tirx)</a>
@@ -5074,7 +6828,13 @@ document.write(`
<li><a href="reference/api/python/te.html#tvm.te.tag_scope">tag_scope() (in module tvm.te)</a>
</li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.take">take() (in module tvm.relax.op)</a>
+
+ <ul>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.take">(in module tvm.script.ir_builder.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.take">(in module tvm.script.relax)</a>
</li>
+ </ul></li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.grad.take_backward">take_backward() (in module tvm.relax.op.grad)</a>
</li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.op_attrs.TakeAttrs">TakeAttrs (class in tvm.relax.op.op_attrs)</a>
@@ -5082,6 +6842,12 @@ document.write(`
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.tan">tan() (in module tvm.relax.op)</a>
<ul>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.tan">(in module tvm.script.ir_builder.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.tan">(in module tvm.script.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.tan">(in module tvm.script.tirx)</a>
+</li>
<li><a href="reference/api/python/te.html#tvm.te.tan">(in module tvm.te)</a>
</li>
<li><a href="tirx/api/tirx.html#tvm.tirx.tan">(in module tvm.tirx)</a>
@@ -5090,6 +6856,12 @@ document.write(`
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.tanh">tanh() (in module tvm.relax.op)</a>
<ul>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.tanh">(in module tvm.script.ir_builder.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.tanh">(in module tvm.script.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.tanh">(in module tvm.script.tirx)</a>
+</li>
<li><a href="reference/api/python/te.html#tvm.te.tanh">(in module tvm.te)</a>
</li>
<li><a href="tirx/api/tirx.html#tvm.tirx.tanh">(in module tvm.tirx)</a>
@@ -5098,6 +6870,8 @@ document.write(`
<li><a href="reference/api/python/support.html#tvm.support.tar.tar">tar() (in module tvm.support.tar)</a>
</li>
<li><a href="reference/api/python/target.html#tvm.target.Target">Target (class in tvm.target)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.target">target() (in module tvm.script.tirx)</a>
</li>
<li><a href="reference/api/python/target.html#tvm.target.Target.target_or_current">target_or_current() (tvm.target.Target static method)</a>
</li>
@@ -5117,16 +6891,34 @@ document.write(`
</li>
<li><a href="reference/api/python/te.html#tvm.te.Tensor">Tensor (class in tvm.te)</a>
</li>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.Tensor">Tensor() (in module tvm.script.ir_builder.relax)</a>
+
+ <ul>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.Tensor">(in module tvm.script.relax)</a>
+</li>
+ </ul></li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.tensor_to_shape">tensor_to_shape() (in module tvm.relax.op)</a>
+
+ <ul>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.tensor_to_shape">(in module tvm.script.ir_builder.relax)</a>
</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.tensor_to_shape">(in module tvm.script.relax)</a>
+</li>
+ </ul></li>
<li><a href="reference/api/python/contrib.html#tvm.contrib.tvmjs.TensorCacheShardingManager">TensorCacheShardingManager (class in tvm.contrib.tvmjs)</a>
</li>
<li><a href="reference/api/python/s_tir/schedule.html#tvm.s_tir.schedule.Schedule.tensorize">tensorize() (tvm.s_tir.schedule.Schedule method)</a>
</li>
<li><a href="reference/api/python/ir.html#tvm.ir.TensorLoad">TensorLoad (class in tvm.ir)</a>
</li>
- <li><a href="tirx/api/tirx.html#tvm.tirx.tensormap_encode_tiled">tensormap_encode_tiled() (in module tvm.tirx)</a>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.TensorMap">TensorMap() (in module tvm.script.tirx)</a>
</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.tensormap_encode_tiled">tensormap_encode_tiled() (in module tvm.script.tirx)</a>
+
+ <ul>
+ <li><a href="tirx/api/tirx.html#tvm.tirx.tensormap_encode_tiled">(in module tvm.tirx)</a>
+</li>
+ </ul></li>
<li><a href="tirx/api/tirx.html#tvm.tirx.TensorMapEncodeTiledAttr">TensorMapEncodeTiledAttr (class in tvm.tirx)</a>
</li>
<li><a href="tirx/api/tirx.html#tvm.tirx.TensorMapType">TensorMapType (class in tvm.tirx)</a>
@@ -5151,7 +6943,31 @@ document.write(`
</li>
<li><a href="reference/api/python/s_tir/backend.html#tvm.s_tir.backend.adreno.transform.TextureFlatten">TextureFlatten() (in module tvm.s_tir.backend.adreno.transform)</a>
</li>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.Then">Then() (in module tvm.script.ir_builder.relax)</a>
+
+ <ul>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.Then">(in module tvm.script.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.Then">(in module tvm.script.tirx)</a>
+</li>
+ </ul></li>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.then_">then_() (in module tvm.script.ir_builder.relax)</a>
+
+ <ul>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.then_">(in module tvm.script.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.then_">(in module tvm.script.tirx)</a>
+</li>
+ </ul></li>
<li><a href="reference/api/python/te.html#tvm.te.thread_axis">thread_axis() (in module tvm.te)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.thread_binding">thread_binding() (in module tvm.script.tirx)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.thread_id">thread_id() (in module tvm.script.tirx)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.thread_id_in_wg">thread_id_in_wg() (in module tvm.script.tirx)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.thread_return">thread_return() (in module tvm.script.tirx)</a>
</li>
<li><a href="reference/api/python/runtime/disco.html#tvm.runtime.disco.ThreadedSession">ThreadedSession (class in tvm.runtime.disco)</a>
</li>
@@ -5164,10 +6980,20 @@ document.write(`
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.tile">tile() (in module tvm.relax.op)</a>
<ul>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.tile">(in module tvm.script.ir_builder.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.tile">(in module tvm.script.relax)</a>
+</li>
<li><a href="reference/api/python/ir.html#tvm.ir.Var.tile">(tvm.ir.Var method)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.Layout.tile">(tvm.script.tirx.Layout method)</a>
</li>
</ul></li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.Layout.tile_to">tile_to() (tvm.script.tirx.Layout method)</a>
+</li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.op_attrs.TileAttrs">TileAttrs (class in tvm.relax.op.op_attrs)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.TileLayout">TileLayout (class in tvm.script.tirx)</a>
</li>
<li><a href="tirx/api/tirx.html#tvm.tirx.TilePrimitiveCall">TilePrimitiveCall (class in tvm.tirx)</a>
</li>
@@ -5184,13 +7010,23 @@ document.write(`
<li><a href="reference/api/python/relax/analysis.html#tvm.relax.analysis.tir_vars_in_type">tir_vars_in_type() (in module tvm.relax.analysis)</a>
</li>
<li><a href="tirx/api/cuda.html#tvm.backend.cuda.lang.TMABar">TMABar (class in tvm.backend.cuda.lang)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.tmem">tmem() (in module tvm.script.tirx)</a>
</li>
<li><a href="tirx/api/cuda.html#tvm.backend.cuda.lang.TMEMPool">TMEMPool (class in tvm.backend.cuda.lang)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.TileLayout.to_psum">to_psum() (tvm.script.tirx.TileLayout method)</a>
</li>
<li><a href="reference/api/python/contrib.html#tvm.contrib.dlpack.to_pytorch_func">to_pytorch_func() (in module tvm.contrib.dlpack)</a>
</li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.to_vdevice">to_vdevice() (in module tvm.relax.op)</a>
+
+ <ul>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.to_vdevice">(in module tvm.script.ir_builder.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.to_vdevice">(in module tvm.script.relax)</a>
</li>
+ </ul></li>
<li><a href="reference/api/python/relax/transform.html#tvm.relax.transform.ToMixedPrecision">ToMixedPrecision() (in module tvm.relax.transform)</a>
</li>
<li><a href="reference/api/python/relax/transform.html#tvm.relax.transform.ToNonDataflow">ToNonDataflow() (in module tvm.relax.transform)</a>
@@ -5200,7 +7036,13 @@ document.write(`
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.op_attrs.NonMaximumSuppressionAttrs.top_k">top_k (tvm.relax.op.op_attrs.NonMaximumSuppressionAttrs property)</a>
</li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.topk">topk() (in module tvm.relax.op)</a>
+
+ <ul>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.topk">(in module tvm.script.ir_builder.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.topk">(in module tvm.script.relax)</a>
</li>
+ </ul></li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.op_attrs.TopKAttrs">TopKAttrs (class in tvm.relax.op.op_attrs)</a>
</li>
<li><a href="reference/api/python/relax/transform.html#tvm.relax.transform.TopologicalSort">TopologicalSort() (in module tvm.relax.transform)</a>
@@ -5226,6 +7068,8 @@ document.write(`
<li><a href="reference/api/python/relax/training.html#tvm.relax.training.Trainer">Trainer (class in tvm.relax.training)</a>
</li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.op_attrs.BatchNormAttrs.training">training (tvm.relax.op.op_attrs.BatchNormAttrs property)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.TileLayout.trainium">trainium() (tvm.script.tirx.TileLayout class method)</a>
</li>
<li><a href="reference/api/python/s_tir/schedule.html#tvm.s_tir.schedule.Schedule.transform_block_layout">transform_block_layout() (tvm.s_tir.schedule.Schedule method)</a>
</li>
@@ -5234,28 +7078,50 @@ document.write(`
<li><a href="tirx/api/transform.html#tvm.tirx.transform.StmtSimplifyConfig.transitively_prove_inequalities">transitively_prove_inequalities (tvm.tirx.transform.StmtSimplifyConfig property)</a>
</li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.tril">tril() (in module tvm.relax.op)</a>
+
+ <ul>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.tril">(in module tvm.script.ir_builder.relax)</a>
</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.tril">(in module tvm.script.relax)</a>
+</li>
+ </ul></li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.op_attrs.TriluAttrs">TriluAttrs (class in tvm.relax.op.op_attrs)</a>
</li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.triu">triu() (in module tvm.relax.op)</a>
+
+ <ul>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.triu">(in module tvm.script.ir_builder.relax)</a>
</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.triu">(in module tvm.script.relax)</a>
+</li>
+ </ul></li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.trunc">trunc() (in module tvm.relax.op)</a>
<ul>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.trunc">(in module tvm.script.ir_builder.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.trunc">(in module tvm.script.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.trunc">(in module tvm.script.tirx)</a>
+</li>
<li><a href="reference/api/python/te.html#tvm.te.trunc">(in module tvm.te)</a>
</li>
<li><a href="tirx/api/tirx.html#tvm.tirx.trunc">(in module tvm.tirx)</a>
</li>
</ul></li>
- <li><a href="reference/api/python/te.html#tvm.te.truncdiv">truncdiv() (in module tvm.te)</a>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.truncdiv">truncdiv() (in module tvm.script.tirx)</a>
<ul>
+ <li><a href="reference/api/python/te.html#tvm.te.truncdiv">(in module tvm.te)</a>
+</li>
<li><a href="tirx/api/tirx.html#tvm.tirx.truncdiv">(in module tvm.tirx)</a>
</li>
</ul></li>
- <li><a href="reference/api/python/te.html#tvm.te.truncmod">truncmod() (in module tvm.te)</a>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.truncmod">truncmod() (in module tvm.script.tirx)</a>
<ul>
+ <li><a href="reference/api/python/te.html#tvm.te.truncmod">(in module tvm.te)</a>
+</li>
<li><a href="tirx/api/tirx.html#tvm.tirx.truncmod">(in module tvm.tirx)</a>
</li>
</ul></li>
@@ -5274,6 +7140,16 @@ document.write(`
<li><a href="reference/api/python/meta_schedule.html#tvm.s_tir.meta_schedule.TuneContext">TuneContext (class in tvm.s_tir.meta_schedule)</a>
</li>
<li><a href="reference/api/python/ir.html#tvm.ir.Tuple">Tuple (class in tvm.ir)</a>
+</li>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.Tuple">Tuple() (in module tvm.script.ir_builder.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.tuple">tuple() (in module tvm.script.ir_builder.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.Tuple">Tuple() (in module tvm.script.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.tuple">tuple() (in module tvm.script.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.Tuple">Tuple() (in module tvm.script.tirx)</a>
</li>
<li><a href="reference/api/python/ir.html#tvm.ir.TupleGetItem">TupleGetItem (class in tvm.ir)</a>
</li>
@@ -5465,6 +7341,8 @@ document.write(`
<li><a href="reference/api/python/relax/relax.html#module-tvm.relax">module</a>
</li>
</ul></li>
+ </ul></td>
+ <td style="width: 33%; vertical-align: top;"><ul>
<li>
tvm.relax.analysis
@@ -5493,8 +7371,6 @@ document.write(`
<li><a href="reference/api/python/relax/distributed.html#module-tvm.relax.distributed">module</a>
</li>
</ul></li>
- </ul></td>
- <td style="width: 33%; vertical-align: top;"><ul>
<li>
tvm.relax.dpl
@@ -5978,46 +7854,148 @@ document.write(`
<li><a href="reference/api/python/topi.html#module-tvm.topi.testing">module</a>
</li>
</ul></li>
- <li><a href="tirx/api/tirx.html#tvm.tirx.tvm_access_ptr">tvm_access_ptr() (in module tvm.tirx)</a>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.tvm_access_ptr">tvm_access_ptr() (in module tvm.script.tirx)</a>
+
+ <ul>
+ <li><a href="tirx/api/tirx.html#tvm.tirx.tvm_access_ptr">(in module tvm.tirx)</a>
+</li>
+ </ul></li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.tvm_bmma_sync">tvm_bmma_sync() (in module tvm.script.tirx)</a>
+
+ <ul>
+ <li><a href="tirx/api/tirx.html#tvm.tirx.tvm_bmma_sync">(in module tvm.tirx)</a>
+</li>
+ </ul></li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.tvm_call_cpacked">tvm_call_cpacked() (in module tvm.script.tirx)</a>
</li>
- <li><a href="tirx/api/tirx.html#tvm.tirx.tvm_bmma_sync">tvm_bmma_sync() (in module tvm.tirx)</a>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.tvm_call_cpacked_lowered">tvm_call_cpacked_lowered() (in module tvm.script.tirx)</a>
</li>
- <li><a href="tirx/api/tirx.html#tvm.tirx.tvm_fill_fragment">tvm_fill_fragment() (in module tvm.tirx)</a>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.tvm_call_packed">tvm_call_packed() (in module tvm.script.tirx)</a>
</li>
- <li><a href="tirx/api/tirx.html#tvm.tirx.tvm_load_matrix_sync">tvm_load_matrix_sync() (in module tvm.tirx)</a>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.tvm_call_packed_lowered">tvm_call_packed_lowered() (in module tvm.script.tirx)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.tvm_fill_fragment">tvm_fill_fragment() (in module tvm.script.tirx)</a>
+
+ <ul>
+ <li><a href="tirx/api/tirx.html#tvm.tirx.tvm_fill_fragment">(in module tvm.tirx)</a>
+</li>
+ </ul></li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.tvm_global_barrier_kinit">tvm_global_barrier_kinit() (in module tvm.script.tirx)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.tvm_kernel_replace_point">tvm_kernel_replace_point() (in module tvm.script.tirx)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.tvm_load_matrix_sync">tvm_load_matrix_sync() (in module tvm.script.tirx)</a>
+
+ <ul>
+ <li><a href="tirx/api/tirx.html#tvm.tirx.tvm_load_matrix_sync">(in module tvm.tirx)</a>
+</li>
+ </ul></li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.tvm_mma_sync">tvm_mma_sync() (in module tvm.script.tirx)</a>
+
+ <ul>
+ <li><a href="tirx/api/tirx.html#tvm.tirx.tvm_mma_sync">(in module tvm.tirx)</a>
+</li>
+ </ul></li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.tvm_stack_alloca">tvm_stack_alloca() (in module tvm.script.tirx)</a>
+
+ <ul>
+ <li><a href="tirx/api/tirx.html#tvm.tirx.tvm_stack_alloca">(in module tvm.tirx)</a>
+</li>
+ </ul></li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.tvm_stack_make_array">tvm_stack_make_array() (in module tvm.script.tirx)</a>
+
+ <ul>
+ <li><a href="tirx/api/tirx.html#tvm.tirx.tvm_stack_make_array">(in module tvm.tirx)</a>
+</li>
+ </ul></li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.tvm_stack_make_shape">tvm_stack_make_shape() (in module tvm.script.tirx)</a>
+
+ <ul>
+ <li><a href="tirx/api/tirx.html#tvm.tirx.tvm_stack_make_shape">(in module tvm.tirx)</a>
+</li>
+ </ul></li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.tvm_storage_sync">tvm_storage_sync() (in module tvm.script.tirx)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.tvm_store_matrix_sync">tvm_store_matrix_sync() (in module tvm.script.tirx)</a>
+
+ <ul>
+ <li><a href="tirx/api/tirx.html#tvm.tirx.tvm_store_matrix_sync">(in module tvm.tirx)</a>
+</li>
+ </ul></li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.tvm_struct_get">tvm_struct_get() (in module tvm.script.tirx)</a>
+
+ <ul>
+ <li><a href="tirx/api/tirx.html#tvm.tirx.tvm_struct_get">(in module tvm.tirx)</a>
</li>
- <li><a href="tirx/api/tirx.html#tvm.tirx.tvm_mma_sync">tvm_mma_sync() (in module tvm.tirx)</a>
+ </ul></li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.tvm_struct_set">tvm_struct_set() (in module tvm.script.tirx)</a>
+
+ <ul>
+ <li><a href="tirx/api/tirx.html#tvm.tirx.tvm_struct_set">(in module tvm.tirx)</a>
</li>
- <li><a href="tirx/api/tirx.html#tvm.tirx.tvm_stack_alloca">tvm_stack_alloca() (in module tvm.tirx)</a>
+ </ul></li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.tvm_thread_allreduce">tvm_thread_allreduce() (in module tvm.script.tirx)</a>
+
+ <ul>
+ <li><a href="tirx/api/tirx.html#tvm.tirx.tvm_thread_allreduce">(in module tvm.tirx)</a>
</li>
- <li><a href="tirx/api/tirx.html#tvm.tirx.tvm_stack_make_array">tvm_stack_make_array() (in module tvm.tirx)</a>
+ </ul></li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.tvm_thread_invariant">tvm_thread_invariant() (in module tvm.script.tirx)</a>
</li>
- <li><a href="tirx/api/tirx.html#tvm.tirx.tvm_stack_make_shape">tvm_stack_make_shape() (in module tvm.tirx)</a>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.tvm_throw_last_error">tvm_throw_last_error() (in module tvm.script.tirx)</a>
+
+ <ul>
+ <li><a href="tirx/api/tirx.html#tvm.tirx.tvm_throw_last_error">(in module tvm.tirx)</a>
</li>
- <li><a href="tirx/api/tirx.html#tvm.tirx.tvm_store_matrix_sync">tvm_store_matrix_sync() (in module tvm.tirx)</a>
+ </ul></li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.tvm_tuple">tvm_tuple() (in module tvm.script.tirx)</a>
+
+ <ul>
+ <li><a href="tirx/api/tirx.html#tvm.tirx.tvm_tuple">(in module tvm.tirx)</a>
</li>
- <li><a href="tirx/api/tirx.html#tvm.tirx.tvm_struct_get">tvm_struct_get() (in module tvm.tirx)</a>
+ </ul></li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.tvm_warp_activemask">tvm_warp_activemask() (in module tvm.script.tirx)</a>
</li>
- <li><a href="tirx/api/tirx.html#tvm.tirx.tvm_struct_set">tvm_struct_set() (in module tvm.tirx)</a>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.tvm_warp_shuffle">tvm_warp_shuffle() (in module tvm.script.tirx)</a>
</li>
- <li><a href="tirx/api/tirx.html#tvm.tirx.tvm_thread_allreduce">tvm_thread_allreduce() (in module tvm.tirx)</a>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.tvm_warp_shuffle_down">tvm_warp_shuffle_down() (in module tvm.script.tirx)</a>
</li>
- <li><a href="tirx/api/tirx.html#tvm.tirx.tvm_throw_last_error">tvm_throw_last_error() (in module tvm.tirx)</a>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.tvm_warp_shuffle_up">tvm_warp_shuffle_up() (in module tvm.script.tirx)</a>
</li>
- <li><a href="tirx/api/tirx.html#tvm.tirx.tvm_tuple">tvm_tuple() (in module tvm.tirx)</a>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.tvm_warp_shuffle_xor">tvm_warp_shuffle_xor() (in module tvm.script.tirx)</a>
</li>
- <li><a href="tirx/api/tirx.html#tvm.tirx.TVMBackendAllocWorkspace">TVMBackendAllocWorkspace() (in module tvm.tirx)</a>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.TVMBackendAllocWorkspace">TVMBackendAllocWorkspace() (in module tvm.script.tirx)</a>
+
+ <ul>
+ <li><a href="tirx/api/tirx.html#tvm.tirx.TVMBackendAllocWorkspace">(in module tvm.tirx)</a>
</li>
- <li><a href="tirx/api/tirx.html#tvm.tirx.TVMBackendFreeWorkspace">TVMBackendFreeWorkspace() (in module tvm.tirx)</a>
+ </ul></li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.TVMBackendFreeWorkspace">TVMBackendFreeWorkspace() (in module tvm.script.tirx)</a>
+
+ <ul>
+ <li><a href="tirx/api/tirx.html#tvm.tirx.TVMBackendFreeWorkspace">(in module tvm.tirx)</a>
</li>
+ </ul></li>
<li><a href="reference/api/python/ir.html#tvm.ir.Type">Type (class in tvm.ir)</a>
</li>
- <li><a href="tirx/api/tirx.html#tvm.tirx.type_annotation">type_annotation() (in module tvm.tirx)</a>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.type_annotation">type_annotation() (in module tvm.script.tirx)</a>
+
+ <ul>
+ <li><a href="tirx/api/tirx.html#tvm.tirx.type_annotation">(in module tvm.tirx)</a>
</li>
+ </ul></li>
<li><a href="reference/api/python/relax/analysis.html#tvm.relax.analysis.type_base_check">type_base_check() (in module tvm.relax.analysis)</a>
</li>
<li><a href="reference/api/python/relax/analysis.html#tvm.relax.analysis.type_lca">type_lca() (in module tvm.relax.analysis)</a>
</li>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.type_var">type_var() (in module tvm.script.ir_builder.relax)</a>
+
+ <ul>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.type_var">(in module tvm.script.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.type_var">(in module tvm.script.tirx)</a>
+</li>
+ </ul></li>
</ul></td>
</tr></table>
@@ -6028,34 +8006,58 @@ document.write(`
</li>
<li><a href="reference/api/python/s_tir/schedule.html#tvm.s_tir.schedule.Schedule.unannotate">unannotate() (tvm.s_tir.schedule.Schedule method)</a>
</li>
- <li><a href="tirx/api/tirx.html#tvm.tirx.undef">undef() (in module tvm.tirx)</a>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.undef">undef() (in module tvm.script.tirx)</a>
+
+ <ul>
+ <li><a href="tirx/api/tirx.html#tvm.tirx.undef">(in module tvm.tirx)</a>
</li>
+ </ul></li>
<li><a href="tirx/api/analysis.html#tvm.tirx.analysis.analysis.undefined_vars">undefined_vars() (in module tvm.tirx.analysis.analysis)</a>
</li>
<li><a href="reference/api/python/contrib.html#tvm.contrib.random.uniform">uniform() (in module tvm.contrib.random)</a>
</li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.unique">unique() (in module tvm.relax.op)</a>
+
+ <ul>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.unique">(in module tvm.script.ir_builder.relax)</a>
</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.unique">(in module tvm.script.relax)</a>
+</li>
+ </ul></li>
<li><a href="reference/api/python/testing.html#tvm.testing.Path.unlink">unlink() (tvm.testing.Path method)</a>
</li>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.unpack">unpack() (in module tvm.script.ir_builder.relax)</a>
+
+ <ul>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.unpack">(in module tvm.script.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.unpack">(in module tvm.script.tirx)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.Layout.unpack">(tvm.script.tirx.Layout method)</a>
+</li>
+ </ul></li>
<li><a href="reference/api/python/topi.html#tvm.topi.nn.unpack_NCHWc_to_nchw">unpack_NCHWc_to_nchw() (in module tvm.topi.nn)</a>
</li>
- <li><a href="reference/api/python/s_tir/schedule.html#tvm.s_tir.schedule.Schedule.unroll">unroll() (tvm.s_tir.schedule.Schedule method)</a>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.unroll">unroll() (in module tvm.script.tirx)</a>
+
+ <ul>
+ <li><a href="reference/api/python/s_tir/schedule.html#tvm.s_tir.schedule.Schedule.unroll">(tvm.s_tir.schedule.Schedule method)</a>
</li>
+ </ul></li>
<li><a href="tirx/api/transform.html#tvm.tirx.transform.UnrollLoopConfig.unroll_local_access">unroll_local_access (tvm.tirx.transform.UnrollLoopConfig property)</a>
</li>
<li><a href="tirx/api/transform.html#tvm.tirx.transform.UnrollLoop">UnrollLoop() (in module tvm.tirx.transform)</a>
</li>
<li><a href="tirx/api/transform.html#tvm.tirx.transform.UnrollLoopConfig">UnrollLoopConfig (class in tvm.tirx.transform)</a>
</li>
+ </ul></td>
+ <td style="width: 33%; vertical-align: top;"><ul>
<li><a href="reference/api/python/s_tir/schedule.html#tvm.s_tir.schedule.Schedule.unsafe_hide_buffer_access">unsafe_hide_buffer_access() (tvm.s_tir.schedule.Schedule method)</a>
</li>
<li><a href="reference/api/python/s_tir/schedule.html#tvm.s_tir.schedule.Schedule.unsafe_set_dtype">unsafe_set_dtype() (tvm.s_tir.schedule.Schedule method)</a>
</li>
<li><a href="reference/api/python/support.html#tvm.support.tar.untar">untar() (in module tvm.support.tar)</a>
</li>
- </ul></td>
- <td style="width: 33%; vertical-align: top;"><ul>
<li><a href="reference/api/python/ir.html#tvm.ir.IRModule.update">update() (tvm.ir.IRModule method)</a>
<ul>
@@ -6066,6 +8068,8 @@ document.write(`
<li><a href="reference/api/python/sym.html#tvm.sym.Analyzer.update">(tvm.sym.Analyzer method)</a>
</li>
</ul></li>
+ <li><a href="tirx/api/cuda.html#tvm.backend.cuda.lang.FlashAttentionLPTScheduler.update_current_m_n_idx">update_current_m_n_idx() (tvm.backend.cuda.lang.FlashAttentionLPTScheduler method)</a>
+</li>
<li><a href="reference/api/python/ir.html#tvm.ir.IRModule.update_func">update_func() (tvm.ir.IRModule method)</a>
<ul>
@@ -6104,30 +8108,58 @@ document.write(`
</li>
<li><a href="reference/api/python/ir.html#tvm.ir.Var">Var (class in tvm.ir)</a>
</li>
- <li><a href="reference/api/python/te.html#tvm.te.var">var() (in module tvm.te)</a>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.var">var() (in module tvm.script.tirx)</a>
+
+ <ul>
+ <li><a href="reference/api/python/te.html#tvm.te.var">(in module tvm.te)</a>
</li>
+ </ul></li>
<li><a href="reference/api/python/relax/relax.html#tvm.relax.VarBinding">VarBinding (class in tvm.relax)</a>
</li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.variance">variance() (in module tvm.relax.op)</a>
+
+ <ul>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.variance">(in module tvm.script.ir_builder.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.variance">(in module tvm.script.relax)</a>
</li>
+ </ul></li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.op_attrs.MultiboxTransformLocAttrs.variances">variances (tvm.relax.op.op_attrs.MultiboxTransformLocAttrs property)</a>
</li>
<li><a href="reference/api/python/relax/relax.html#tvm.relax.VDevice">VDevice (class in tvm.relax)</a>
</li>
- <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.ir.vdevice">vdevice() (in module tvm.script.ir_builder.ir)</a>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.vdevice">vdevice() (in module tvm.script.ir_builder.relax)</a>
+
+ <ul>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.vdevice">(in module tvm.script.relax)</a>
</li>
+ </ul></li>
<li><a href="reference/api/python/sym.html#tvm.sym.IntSet.vector">vector() (tvm.sym.IntSet static method)</a>
</li>
- <li><a href="tirx/api/tirx.html#tvm.tirx.vectorcombine">vectorcombine() (in module tvm.tirx)</a>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.vectorcombine">vectorcombine() (in module tvm.script.tirx)</a>
+
+ <ul>
+ <li><a href="tirx/api/tirx.html#tvm.tirx.vectorcombine">(in module tvm.tirx)</a>
</li>
- <li><a href="tirx/api/tirx.html#tvm.tirx.vectorhigh">vectorhigh() (in module tvm.tirx)</a>
+ </ul></li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.vectorhigh">vectorhigh() (in module tvm.script.tirx)</a>
+
+ <ul>
+ <li><a href="tirx/api/tirx.html#tvm.tirx.vectorhigh">(in module tvm.tirx)</a>
</li>
+ </ul></li>
<li><a href="reference/api/python/s_tir/schedule.html#tvm.s_tir.schedule.Schedule.vectorize">vectorize() (tvm.s_tir.schedule.Schedule method)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.vectorized">vectorized() (in module tvm.script.tirx)</a>
</li>
<li><a href="tirx/api/transform.html#tvm.tirx.transform.VectorizeLoop">VectorizeLoop() (in module tvm.tirx.transform)</a>
</li>
- <li><a href="tirx/api/tirx.html#tvm.tirx.vectorlow">vectorlow() (in module tvm.tirx)</a>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.vectorlow">vectorlow() (in module tvm.script.tirx)</a>
+
+ <ul>
+ <li><a href="tirx/api/tirx.html#tvm.tirx.vectorlow">(in module tvm.tirx)</a>
</li>
+ </ul></li>
<li><a href="reference/api/python/s_tir/schedule.html#tvm.s_tir.schedule.ScheduleDebugMask.VERIFY_CACHED_FLAGS">VERIFY_CACHED_FLAGS (tvm.s_tir.schedule.ScheduleDebugMask attribute)</a>
</li>
<li><a href="reference/api/python/s_tir/analysis.html#tvm.s_tir.analysis.verify_gpu_code">verify_gpu_code() (in module tvm.s_tir.analysis)</a>
@@ -6144,6 +8176,8 @@ document.write(`
<ul>
<li><a href="tirx/api/analysis.html#tvm.tirx.analysis.analysis.verify_well_formed">(in module tvm.tirx.analysis.analysis)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.Layout.verify_well_formed">(tvm.script.tirx.Layout method)</a>
</li>
</ul></li>
<li><a href="tirx/api/transform.html#tvm.tirx.transform.VerifyMemory">VerifyMemory() (in module tvm.tirx.transform)</a>
@@ -6210,14 +8244,14 @@ document.write(`
<li><a href="reference/api/python/relax/relax.html#tvm.relax.PyExprVisitor.visit_expr">(tvm.relax.PyExprVisitor method)</a>
</li>
</ul></li>
+ </ul></td>
+ <td style="width: 33%; vertical-align: top;"><ul>
<li><a href="reference/api/python/relax/relax.html#tvm.relax.PyExprMutator.visit_expr_fallback_">visit_expr_fallback_() (tvm.relax.PyExprMutator method)</a>
<ul>
<li><a href="reference/api/python/relax/relax.html#tvm.relax.PyExprVisitor.visit_expr_fallback_">(tvm.relax.PyExprVisitor method)</a>
</li>
</ul></li>
- </ul></td>
- <td style="width: 33%; vertical-align: top;"><ul>
<li><a href="reference/api/python/relax/relax.html#tvm.relax.PyExprMutator.visit_expr_post_order">visit_expr_post_order() (tvm.relax.PyExprMutator method)</a>
</li>
<li><a href="reference/api/python/relax/relax.html#tvm.relax.PyExprMutator.visit_extern_func_">visit_extern_func_() (tvm.relax.PyExprMutator method)</a>
@@ -6338,12 +8372,30 @@ document.write(`
</ul></li>
<li><a href="reference/api/python/relax/transform.html#tvm.relax.transform.VMShapeLower">VMShapeLower() (in module tvm.relax.transform)</a>
</li>
- <li><a href="tirx/api/tirx.html#tvm.tirx.vscale">vscale() (in module tvm.tirx)</a>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.void">void() (in module tvm.script.tirx)</a>
+</li>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.vpi">vpi() (in module tvm.script.ir_builder.relax)</a>
+
+ <ul>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.vpi">(in module tvm.script.relax)</a>
+</li>
+ </ul></li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.vscale">vscale() (in module tvm.script.tirx)</a>
+
+ <ul>
+ <li><a href="tirx/api/tirx.html#tvm.tirx.vscale">(in module tvm.tirx)</a>
</li>
+ </ul></li>
<li><a href="reference/api/python/ir.html#tvm.ir.Var.vstore">vstore() (tvm.ir.Var method)</a>
</li>
- <li><a href="reference/api/python/rpc.html#tvm.rpc.RPCSession.vulkan">vulkan() (tvm.rpc.RPCSession method)</a>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.vulkan">vulkan() (in module tvm.script.ir_builder.relax)</a>
+
+ <ul>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.vulkan">(in module tvm.script.relax)</a>
+</li>
+ <li><a href="reference/api/python/rpc.html#tvm.rpc.RPCSession.vulkan">(tvm.rpc.RPCSession method)</a>
</li>
+ </ul></li>
</ul></td>
</tr></table>
@@ -6351,6 +8403,12 @@ document.write(`
<table style="width: 100%" class="indextable genindextable"><tr>
<td style="width: 33%; vertical-align: top;"><ul>
<li><a href="reference/api/python/s_tir/schedule.html#tvm.s_tir.schedule.DepKind.WAR">WAR (tvm.s_tir.schedule.DepKind attribute)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.warp_id">warp_id() (in module tvm.script.tirx)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.warp_id_in_wg">warp_id_in_wg() (in module tvm.script.tirx)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.warpgroup_id">warpgroup_id() (in module tvm.script.tirx)</a>
</li>
<li><a href="tirx/api/cuda.html#tvm.backend.cuda.lang.WarpgroupRole">WarpgroupRole (class in tvm.backend.cuda.lang)</a>
</li>
@@ -6358,23 +8416,53 @@ document.write(`
</li>
<li><a href="reference/api/python/s_tir/schedule.html#tvm.s_tir.schedule.DepKind.WAW">WAW (tvm.s_tir.schedule.DepKind attribute)</a>
</li>
- <li><a href="reference/api/python/rpc.html#tvm.rpc.RPCSession.webgpu">webgpu() (tvm.rpc.RPCSession method)</a>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.webgpu">webgpu() (in module tvm.script.ir_builder.relax)</a>
+
+ <ul>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.webgpu">(in module tvm.script.relax)</a>
+</li>
+ <li><a href="reference/api/python/rpc.html#tvm.rpc.RPCSession.webgpu">(tvm.rpc.RPCSession method)</a>
</li>
+ </ul></li>
<li><a href="reference/api/python/relax/analysis.html#tvm.relax.analysis.well_formed">well_formed() (in module tvm.relax.analysis)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.wg_reg_tile">wg_reg_tile() (in module tvm.script.tirx)</a>
</li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.where">where() (in module tvm.relax.op)</a>
+
+ <ul>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.where">(in module tvm.script.ir_builder.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.where">(in module tvm.script.relax)</a>
</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.where">(in module tvm.script.tirx)</a>
+</li>
+ </ul></li>
<li><a href="reference/api/python/support.html#tvm.support.utils.which">which() (in module tvm.support.utils)</a>
</li>
<li><a href="tirx/api/tirx.html#tvm.tirx.While">While (class in tvm.tirx)</a>
</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.While">While() (in module tvm.script.tirx)</a>
+</li>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.while_">while_() (in module tvm.script.ir_builder.relax)</a>
+
+ <ul>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.while_">(in module tvm.script.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.while_">(in module tvm.script.tirx)</a>
+</li>
+ </ul></li>
<li><a href="reference/api/python/topi.html#tvm.topi.nn.Workload.width">width (tvm.topi.nn.Workload attribute)</a>
</li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.op_attrs.AttentionAttrs.window_size">window_size (tvm.relax.op.op_attrs.AttentionAttrs property)</a>
</li>
+ </ul></td>
+ <td style="width: 33%; vertical-align: top;"><ul>
<li><a href="reference/api/python/topi.html#tvm.topi.nn.winograd_transform_matrices">winograd_transform_matrices() (in module tvm.topi.nn)</a>
</li>
<li><a href="reference/api/python/ir.html#tvm.ir.Var.with_allocated_addr">with_allocated_addr() (tvm.ir.Var method)</a>
+</li>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.ir.with_at_group_">with_at_group_() (in module tvm.script.ir_builder.ir)</a>
</li>
<li><a href="reference/api/python/ir.html#tvm.ir.BaseFunc.with_attr">with_attr() (tvm.ir.BaseFunc method)</a>
@@ -6388,8 +8476,6 @@ document.write(`
<li><a href="reference/api/python/ir.html#tvm.ir.IRModule.with_attrs">(tvm.ir.IRModule method)</a>
</li>
</ul></li>
- </ul></td>
- <td style="width: 33%; vertical-align: top;"><ul>
<li><a href="tirx/api/tirx.html#tvm.tirx.PrimFunc.with_body">with_body() (tvm.tirx.PrimFunc method)</a>
</li>
<li><a href="reference/api/python/s_tir/schedule.html#tvm.s_tir.schedule.Trace.with_decision">with_decision() (tvm.s_tir.schedule.Trace method)</a>
@@ -6415,12 +8501,20 @@ document.write(`
<li><a href="reference/api/python/topi.html#tvm.topi.nn.Workload">Workload (class in tvm.topi.nn)</a>
</li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.wrap_param">wrap_param() (in module tvm.relax.op)</a>
+
+ <ul>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.wrap_param">(in module tvm.script.ir_builder.relax)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.wrap_param">(in module tvm.script.relax)</a>
</li>
+ </ul></li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.op_attrs.WrapParamAttrs">WrapParamAttrs (class in tvm.relax.op.op_attrs)</a>
</li>
<li><a href="reference/api/python/testing.html#tvm.testing.Path.write_bytes">write_bytes() (tvm.testing.Path method)</a>
</li>
<li><a href="reference/api/python/testing.html#tvm.testing.Path.write_text">write_text() (tvm.testing.Path method)</a>
+</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.tirx.writes">writes() (in module tvm.script.tirx)</a>
</li>
</ul></td>
</tr></table>
@@ -6444,14 +8538,26 @@ document.write(`
</li>
<li><a href="reference/api/python/relax/training.html#tvm.relax.training.Trainer.zero_init_params">zero_init_params() (tvm.relax.training.Trainer method)</a>
</li>
- </ul></td>
- <td style="width: 33%; vertical-align: top;"><ul>
<li><a href="reference/api/python/relax/training.html#tvm.relax.training.Trainer.zero_init_states">zero_init_states() (tvm.relax.training.Trainer method)</a>
</li>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.zeros">zeros() (in module tvm.relax.op)</a>
+
+ <ul>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.zeros">(in module tvm.script.ir_builder.relax)</a>
</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.zeros">(in module tvm.script.relax)</a>
+</li>
+ </ul></li>
+ </ul></td>
+ <td style="width: 33%; vertical-align: top;"><ul>
<li><a href="reference/api/python/relax/op.html#tvm.relax.op.zeros_like">zeros_like() (in module tvm.relax.op)</a>
+
+ <ul>
+ <li><a href="reference/api/python/script/ir_builder.html#tvm.script.ir_builder.relax.zeros_like">(in module tvm.script.ir_builder.relax)</a>
</li>
+ <li><a href="reference/api/python/script/script.html#tvm.script.relax.zeros_like">(in module tvm.script.relax)</a>
+</li>
+ </ul></li>
</ul></td>
</tr></table>
diff --git a/docs/get_started/tutorials/ir_module.html b/docs/get_started/tutorials/ir_module.html
index a5945ce0643..1ffd04893b5 100644
--- a/docs/get_started/tutorials/ir_module.html
+++ b/docs/get_started/tutorials/ir_module.html
@@ -811,23 +811,23 @@ parse the TVMScript to obtain an IRModule.</p>
<span class="k">class</span><span class="w"> </span><span class="nc">TVMScriptModule</span><span class="p">:</span>
<span class="nd">@R</span><span class="o">.</span><span class="n">function</span>
<span class="k">def</span><span class="w"> </span><span class="nf">main</span><span class="p">(</span>
- <span class="n">x</span><span class="p">:</span> <span class="n">R</span><span class="o">.</span><span class="n">Tensor</span><span class="p">((</span><span class="mi">1</span><span class="p">,</span> <span class="mi">784</span><span class="p">),</span> <span class="n">dtype</span><span class="o">=</span><span class="s2">"float32"</span><span class="p">),</span>
- <span class="n">fc1_weight</span><span class="p">:</span> <span class="n">R</span><span class="o">.</span><span class="n">Tensor</span><span class="p">((</span><span class="mi">256</span><span class="p">,</span> <span class="mi">784</span><span class="p">),</span> <span class="n">dtype</span><span class="o">=</span><span class="s2">"float32"</span><span class="p">),</span>
- <span class="n">fc1_bias</span><span class="p">:</span> <span class="n">R</span><span class="o">.</span><span class="n">Tensor</span><span class="p">((</span><span class="mi">256</span><span class="p">,),</span> <span class="n">dtype</span><span class="o">=</span><span class="s2">"float32"</span><span class="p">),</span>
- <span class="n">fc2_weight</span><span class="p">:</span> <span class="n">R</span><span class="o">.</span><span class="n">Tensor</span><span class="p">((</span><span class="mi">10</span><span class="p">,</span> <span class="mi">256</span><span class="p">),</span> <span class="n">dtype</span><span class="o">=</span><span class="s2">"float32"</span><span class="p">),</span>
- <span class="n">fc2_bias</span><span class="p">:</span> <span class="n">R</span><span class="o">.</span><span class="n">Tensor</span><span class="p">((</span><span class="mi">10</span><span class="p">,),</span> <span class="n">dtype</span><span class="o">=</span><span class="s2">"float32"</span><span class="p">),</span>
- <span class="p">)</span> <span class="o">-></span> <span class="n">R</span><span class="o">.</span><span class="n">Tensor</span><span class="p">((</span><span class="mi">1</span><span class="p">,</span> <span class="mi">10</span><span class="p">),</span> <span class="n">dtype</span><span class="o">=</span><span class="s2">"float32"</span><span class="p">):</span>
- <span class="n">R</span><span class="o">.</span><span class="n">func_attr</span><span class="p">({</span><span class="s2">"num_input"</span><span class="p">:</span> <span class="mi">1</span><span class="p">})</span>
- <span class="k">with</span> <span class="n">R</span><span class="o">.</span><span class="n">dataflow</span><span class="p">():</span>
- <span class="n">permute_dims</span> <span class="o">=</span> <span class="n">R</span><span class="o">.</span><span class="n">permute_dims</span><span class="p">(</span><span class="n">fc1_weight</span><span class="p">,</span> <span class="n">axes</span><span class="o">=</span><span class="kc">None</span><span class="p">)</span>
- <span class="n">matmul</span> <span class="o">=</span> <span class="n">R</span><span class="o">.</span><span class="n">matmul</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">permute_dims</span><span class="p">,</span> <span class="n">out_dtype</span><span class="o">=</span><span class="kc">None</span><span class="p">)</span>
- <span class="n">add</span> <span class="o">=</span> <span class="n">R</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">matmul</span><span class="p">,</span> <span class="n">fc1_bias</span><span class="p">)</span>
+ <span class="n">x</span><span class="p">:</span> <a href="../../reference/api/python/script/script.html#tvm.script.relax.Tensor" title="tvm.script.relax.Tensor" class="sphx-glr-backref-module-tvm-script-relax sphx-glr-backref-type-py-function"><span class="n">R</span><span class="o">.</span><span class="n">Tensor</span></a><span class="p">((</span><span class="mi">1</span><span class="p">,</span> <span class="mi">784</span><span class="p">),</span> <span class="n">dtype</span><sp [...]
+ <span class="n">fc1_weight</span><span class="p">:</span> <a href="../../reference/api/python/script/script.html#tvm.script.relax.Tensor" title="tvm.script.relax.Tensor" class="sphx-glr-backref-module-tvm-script-relax sphx-glr-backref-type-py-function"><span class="n">R</span><span class="o">.</span><span class="n">Tensor</span></a><span class="p">((</span><span class="mi">256</span><span class="p">,</span> <span class="mi">784</span><span class="p">),</span> <span class="n">dtyp [...]
+ <span class="n">fc1_bias</span><span class="p">:</span> <a href="../../reference/api/python/script/script.html#tvm.script.relax.Tensor" title="tvm.script.relax.Tensor" class="sphx-glr-backref-module-tvm-script-relax sphx-glr-backref-type-py-function"><span class="n">R</span><span class="o">.</span><span class="n">Tensor</span></a><span class="p">((</span><span class="mi">256</span><span class="p">,),</span> <span class="n">dtype</span><span class="o">=</span><span class="s2">&quo [...]
+ <span class="n">fc2_weight</span><span class="p">:</span> <a href="../../reference/api/python/script/script.html#tvm.script.relax.Tensor" title="tvm.script.relax.Tensor" class="sphx-glr-backref-module-tvm-script-relax sphx-glr-backref-type-py-function"><span class="n">R</span><span class="o">.</span><span class="n">Tensor</span></a><span class="p">((</span><span class="mi">10</span><span class="p">,</span> <span class="mi">256</span><span class="p">),</span> <span class="n">dtype [...]
+ <span class="n">fc2_bias</span><span class="p">:</span> <a href="../../reference/api/python/script/script.html#tvm.script.relax.Tensor" title="tvm.script.relax.Tensor" class="sphx-glr-backref-module-tvm-script-relax sphx-glr-backref-type-py-function"><span class="n">R</span><span class="o">.</span><span class="n">Tensor</span></a><span class="p">((</span><span class="mi">10</span><span class="p">,),</span> <span class="n">dtype</span><span class="o">=</span><span class="s2">" [...]
+ <span class="p">)</span> <span class="o">-></span> <a href="../../reference/api/python/script/script.html#tvm.script.relax.Tensor" title="tvm.script.relax.Tensor" class="sphx-glr-backref-module-tvm-script-relax sphx-glr-backref-type-py-function"><span class="n">R</span><span class="o">.</span><span class="n">Tensor</span></a><span class="p">((</span><span class="mi">1</span><span class="p">,</span> <span class="mi">10</span><span class="p">),</span> <span class="n">dtype</span><sp [...]
+ <a href="../../reference/api/python/script/script.html#tvm.script.relax.func_attr" title="tvm.script.relax.func_attr" class="sphx-glr-backref-module-tvm-script-relax sphx-glr-backref-type-py-function"><span class="n">R</span><span class="o">.</span><span class="n">func_attr</span></a><span class="p">({</span><span class="s2">"num_input"</span><span class="p">:</span> <span class="mi">1</span><span class="p">})</span>
+ <span class="k">with</span> <a href="../../reference/api/python/script/script.html#tvm.script.relax.dataflow" title="tvm.script.relax.dataflow" class="sphx-glr-backref-module-tvm-script-relax sphx-glr-backref-type-py-function"><span class="n">R</span><span class="o">.</span><span class="n">dataflow</span></a><span class="p">():</span>
+ <span class="n">permute_dims</span> <span class="o">=</span> <a href="../../reference/api/python/script/script.html#tvm.script.relax.permute_dims" title="tvm.script.relax.permute_dims" class="sphx-glr-backref-module-tvm-script-relax sphx-glr-backref-type-py-function"><span class="n">R</span><span class="o">.</span><span class="n">permute_dims</span></a><span class="p">(</span><span class="n">fc1_weight</span><span class="p">,</span> <span class="n">axes</span><span class="o"> [...]
+ <span class="n">matmul</span> <span class="o">=</span> <a href="../../reference/api/python/script/script.html#tvm.script.relax.matmul" title="tvm.script.relax.matmul" class="sphx-glr-backref-module-tvm-script-relax sphx-glr-backref-type-py-function"><span class="n">R</span><span class="o">.</span><span class="n">matmul</span></a><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">permute_dims</span><span class="p">,</span> <span class="n"> [...]
+ <span class="n">add</span> <span class="o">=</span> <a href="../../reference/api/python/script/script.html#tvm.script.relax.add" title="tvm.script.relax.add" class="sphx-glr-backref-module-tvm-script-relax sphx-glr-backref-type-py-function"><span class="n">R</span><span class="o">.</span><span class="n">add</span></a><span class="p">(</span><span class="n">matmul</span><span class="p">,</span> <span class="n">fc1_bias</span><span class="p">)</span>
<span class="n">relu</span> <span class="o">=</span> <span class="n">R</span><span class="o">.</span><span class="n">nn</span><span class="o">.</span><span class="n">relu</span><span class="p">(</span><span class="n">add</span><span class="p">)</span>
- <span class="n">permute_dims1</span> <span class="o">=</span> <span class="n">R</span><span class="o">.</span><span class="n">permute_dims</span><span class="p">(</span><span class="n">fc2_weight</span><span class="p">,</span> <span class="n">axes</span><span class="o">=</span><span class="kc">None</span><span class="p">)</span>
- <span class="n">matmul1</span> <span class="o">=</span> <span class="n">R</span><span class="o">.</span><span class="n">matmul</span><span class="p">(</span><span class="n">relu</span><span class="p">,</span> <span class="n">permute_dims1</span><span class="p">,</span> <span class="n">out_dtype</span><span class="o">=</span><span class="kc">None</span><span class="p">)</span>
- <span class="n">add1</span> <span class="o">=</span> <span class="n">R</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">matmul1</span><span class="p">,</span> <span class="n">fc2_bias</span><span class="p">)</span>
+ <span class="n">permute_dims1</span> <span class="o">=</span> <a href="../../reference/api/python/script/script.html#tvm.script.relax.permute_dims" title="tvm.script.relax.permute_dims" class="sphx-glr-backref-module-tvm-script-relax sphx-glr-backref-type-py-function"><span class="n">R</span><span class="o">.</span><span class="n">permute_dims</span></a><span class="p">(</span><span class="n">fc2_weight</span><span class="p">,</span> <span class="n">axes</span><span class="o" [...]
+ <span class="n">matmul1</span> <span class="o">=</span> <a href="../../reference/api/python/script/script.html#tvm.script.relax.matmul" title="tvm.script.relax.matmul" class="sphx-glr-backref-module-tvm-script-relax sphx-glr-backref-type-py-function"><span class="n">R</span><span class="o">.</span><span class="n">matmul</span></a><span class="p">(</span><span class="n">relu</span><span class="p">,</span> <span class="n">permute_dims1</span><span class="p">,</span> <span class [...]
+ <span class="n">add1</span> <span class="o">=</span> <a href="../../reference/api/python/script/script.html#tvm.script.relax.add" title="tvm.script.relax.add" class="sphx-glr-backref-module-tvm-script-relax sphx-glr-backref-type-py-function"><span class="n">R</span><span class="o">.</span><span class="n">add</span></a><span class="p">(</span><span class="n">matmul1</span><span class="p">,</span> <span class="n">fc2_bias</span><span class="p">)</span>
<a href="../../reference/api/python/ir.html#tvm.ir.GlobalVar" title="tvm.ir.GlobalVar" class="sphx-glr-backref-module-tvm-ir sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">gv</span></a> <span class="o">=</span> <span class="n">add1</span>
- <span class="n">R</span><span class="o">.</span><span class="n">output</span><span class="p">(</span><a href="../../reference/api/python/ir.html#tvm.ir.GlobalVar" title="tvm.ir.GlobalVar" class="sphx-glr-backref-module-tvm-ir sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">gv</span></a><span class="p">)</span>
+ <a href="../../reference/api/python/script/script.html#tvm.script.relax.output" title="tvm.script.relax.output" class="sphx-glr-backref-module-tvm-script-relax sphx-glr-backref-type-py-function"><span class="n">R</span><span class="o">.</span><span class="n">output</span></a><span class="p">(</span><a href="../../reference/api/python/ir.html#tvm.ir.GlobalVar" title="tvm.ir.GlobalVar" class="sphx-glr-backref-module-tvm-ir sphx-glr-backref-type-py-class sphx-glr-backref-instanc [...]
<span class="k">return</span> <a href="../../reference/api/python/ir.html#tvm.ir.GlobalVar" title="tvm.ir.GlobalVar" class="sphx-glr-backref-module-tvm-ir sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">gv</span></a>
@@ -1161,8 +1161,8 @@ backends.</p>
<span class="nb">print</span><span class="p">(</span><span class="n">cpu_out</span><span class="p">)</span>
</pre></div>
</div>
-<div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>[[-0.04867184 -0.10644848 -0.006622 -0.23508126 -0.08174915 -0.15910307
- -0.06110986 -0.1265544 -0.16523652 -0.06456965]]
+<div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>[[ 0.14976415 0.10440007 -0.25374544 0.04787368 -0.14457259 0.23096867
+ -0.10903104 0.13258487 0.10989155 0.10431907]]
</pre></div>
</div>
</section>
@@ -1196,8 +1196,8 @@ the details of <code class="docutils literal notranslate"><span class="pre">DLig
<span class="k">assert</span> <span class="n">np</span><span class="o">.</span><span class="n">allclose</span><span class="p">(</span><span class="n">cpu_out</span><span class="p">,</span> <span class="n">gpu_out</span><span class="p">,</span> <span class="n">atol</span><span class="o">=</span><span class="mf">1e-3</span><span class="p">)</span>
</pre></div>
</div>
-<div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>[[-0.04867173 -0.10644849 -0.00662203 -0.23508126 -0.08174916 -0.15910304
- -0.06110986 -0.1265544 -0.16523653 -0.06456964]]
+<div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>[[ 0.14976428 0.10440006 -0.2537455 0.0478737 -0.14457262 0.23096868
+ -0.10903098 0.1325849 0.10989155 0.10431912]]
</pre></div>
</div>
</section>
diff --git a/docs/get_started/tutorials/quick_start.html b/docs/get_started/tutorials/quick_start.html
index 1d0e1ffa33f..0adcd699d38 100644
--- a/docs/get_started/tutorials/quick_start.html
+++ b/docs/get_started/tutorials/quick_start.html
@@ -802,8 +802,8 @@ different devices.</p>
<span class="nb">print</span><span class="p">(</span><span class="n">vm</span><span class="p">[</span><span class="s2">"forward"</span><span class="p">](</span><span class="n">tvm_data</span><span class="p">,</span> <span class="o">*</span><a href="https://docs.python.org/3/builtins/stdtypes.html#list" title="builtins.list" class="sphx-glr-backref-module-builtins sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">params</span></a><span class="p">)</span>< [...]
</pre></div>
</div>
-<div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>[[24602.36 25385.25 26409.281 25733.656 26600.639 26400.383 25085.46
- 25633.912 24406.707 26989.4 ]]
+<div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>[[24821.488 25459.902 25041.283 24970.086 25014.973 24843.13 24488.145
+ 24387.871 23608.652 25637.055]]
</pre></div>
</div>
<p>Our goal is to bring machine learning to the application with any language of interest,
diff --git a/docs/get_started/tutorials/sg_execution_times.html b/docs/get_started/tutorials/sg_execution_times.html
index 1919b530312..96cd36eb690 100644
--- a/docs/get_started/tutorials/sg_execution_times.html
+++ b/docs/get_started/tutorials/sg_execution_times.html
@@ -634,7 +634,7 @@ document.write(`
<section id="computation-times">
<span id="sphx-glr-get-started-tutorials-sg-execution-times"></span><h1>Computation times<a class="headerlink" href="#computation-times" title="Link to this heading">#</a></h1>
-<p><strong>00:05.457</strong> total execution time for 2 files <strong>from get_started/tutorials</strong>:</p>
+<p><strong>00:05.499</strong> total execution time for 2 files <strong>from get_started/tutorials</strong>:</p>
<div class="docutils container">
<style scoped>
<link href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/5.3.0/css/bootstrap.min.css" rel="stylesheet" />
@@ -656,11 +656,11 @@ $(document).ready( function () {
</thead>
<tbody>
<tr class="row-even"><td><p><a class="reference internal" href="ir_module.html#sphx-glr-get-started-tutorials-ir-module-py"><span class="std std-ref">IRModule</span></a> (<code class="docutils literal notranslate"><span class="pre">ir_module.py</span></code>)</p></td>
-<td><p>00:05.298</p></td>
+<td><p>00:05.341</p></td>
<td><p>0.0</p></td>
</tr>
<tr class="row-odd"><td><p><a class="reference internal" href="quick_start.html#sphx-glr-get-started-tutorials-quick-start-py"><span class="std std-ref">Quick Start</span></a> (<code class="docutils literal notranslate"><span class="pre">quick_start.py</span></code>)</p></td>
-<td><p>00:00.159</p></td>
+<td><p>00:00.157</p></td>
<td><p>0.0</p></td>
</tr>
</tbody>
diff --git a/docs/how_to/tutorials/bring_your_own_codegen.html b/docs/how_to/tutorials/bring_your_own_codegen.html
index 07398ceab78..40b8ded214f 100644
--- a/docs/how_to/tutorials/bring_your_own_codegen.html
+++ b/docs/how_to/tutorials/bring_your_own_codegen.html
@@ -737,13 +737,13 @@ backends.</p>
<span class="k">class</span><span class="w"> </span><span class="nc">ConvReLU</span><span class="p">:</span>
<span class="nd">@R</span><span class="o">.</span><span class="n">function</span>
<span class="k">def</span><span class="w"> </span><span class="nf">main</span><span class="p">(</span>
- <span class="n">data</span><span class="p">:</span> <span class="n">R</span><span class="o">.</span><span class="n">Tensor</span><span class="p">((</span><span class="mi">1</span><span class="p">,</span> <span class="mi">3</span><span class="p">,</span> <span class="mi">32</span><span class="p">,</span> <span class="mi">32</span><span class="p">),</span> <span class="s2">"float32"</span><span class="p">),</span>
- <span class="n">weight</span><span class="p">:</span> <span class="n">R</span><span class="o">.</span><span class="n">Tensor</span><span class="p">((</span><span class="mi">16</span><span class="p">,</span> <span class="mi">3</span><span class="p">,</span> <span class="mi">3</span><span class="p">,</span> <span class="mi">3</span><span class="p">),</span> <span class="s2">"float32"</span><span class="p">),</span>
- <span class="p">)</span> <span class="o">-></span> <span class="n">R</span><span class="o">.</span><span class="n">Tensor</span><span class="p">((</span><span class="mi">1</span><span class="p">,</span> <span class="mi">16</span><span class="p">,</span> <span class="mi">30</span><span class="p">,</span> <span class="mi">30</span><span class="p">),</span> <span class="s2">"float32"</span><span class="p">):</span>
- <span class="k">with</span> <span class="n">R</span><span class="o">.</span><span class="n">dataflow</span><span class="p">():</span>
+ <span class="n">data</span><span class="p">:</span> <a href="../../reference/api/python/script/script.html#tvm.script.relax.Tensor" title="tvm.script.relax.Tensor" class="sphx-glr-backref-module-tvm-script-relax sphx-glr-backref-type-py-function"><span class="n">R</span><span class="o">.</span><span class="n">Tensor</span></a><span class="p">((</span><span class="mi">1</span><span class="p">,</span> <span class="mi">3</span><span class="p">,</span> <span class="mi">32</span><span [...]
+ <span class="n">weight</span><span class="p">:</span> <a href="../../reference/api/python/script/script.html#tvm.script.relax.Tensor" title="tvm.script.relax.Tensor" class="sphx-glr-backref-module-tvm-script-relax sphx-glr-backref-type-py-function"><span class="n">R</span><span class="o">.</span><span class="n">Tensor</span></a><span class="p">((</span><span class="mi">16</span><span class="p">,</span> <span class="mi">3</span><span class="p">,</span> <span class="mi">3</span><sp [...]
+ <span class="p">)</span> <span class="o">-></span> <a href="../../reference/api/python/script/script.html#tvm.script.relax.Tensor" title="tvm.script.relax.Tensor" class="sphx-glr-backref-module-tvm-script-relax sphx-glr-backref-type-py-function"><span class="n">R</span><span class="o">.</span><span class="n">Tensor</span></a><span class="p">((</span><span class="mi">1</span><span class="p">,</span> <span class="mi">16</span><span class="p">,</span> <span class="mi">30</span><span [...]
+ <span class="k">with</span> <a href="../../reference/api/python/script/script.html#tvm.script.relax.dataflow" title="tvm.script.relax.dataflow" class="sphx-glr-backref-module-tvm-script-relax sphx-glr-backref-type-py-function"><span class="n">R</span><span class="o">.</span><span class="n">dataflow</span></a><span class="p">():</span>
<span class="n">conv</span> <span class="o">=</span> <a href="../../reference/api/python/relax/op.html#tvm.relax.op.nn.conv2d" title="tvm.relax.op.nn.conv2d" class="sphx-glr-backref-module-tvm-relax-op-nn sphx-glr-backref-type-py-function"><span class="n">relax</span><span class="o">.</span><span class="n">op</span><span class="o">.</span><span class="n">nn</span><span class="o">.</span><span class="n">conv2d</span></a><span class="p">(</span><span class="n">data</span><span [...]
<span class="n">out</span> <span class="o">=</span> <a href="../../reference/api/python/relax/op.html#tvm.relax.op.nn.relu" title="tvm.relax.op.nn.relu" class="sphx-glr-backref-module-tvm-relax-op-nn sphx-glr-backref-type-py-function"><span class="n">relax</span><span class="o">.</span><span class="n">op</span><span class="o">.</span><span class="n">nn</span><span class="o">.</span><span class="n">relu</span></a><span class="p">(</span><span class="n">conv</span><span class=" [...]
- <span class="n">R</span><span class="o">.</span><span class="n">output</span><span class="p">(</span><span class="n">out</span><span class="p">)</span>
+ <a href="../../reference/api/python/script/script.html#tvm.script.relax.output" title="tvm.script.relax.output" class="sphx-glr-backref-module-tvm-script-relax sphx-glr-backref-type-py-function"><span class="n">R</span><span class="o">.</span><span class="n">output</span></a><span class="p">(</span><span class="n">out</span><span class="p">)</span>
<span class="k">return</span> <span class="n">out</span>
</pre></div>
</div>
diff --git a/docs/how_to/tutorials/cross_compilation_and_rpc.html b/docs/how_to/tutorials/cross_compilation_and_rpc.html
index e71fe0e4d58..e3f07dafb6d 100644
--- a/docs/how_to/tutorials/cross_compilation_and_rpc.html
+++ b/docs/how_to/tutorials/cross_compilation_and_rpc.html
@@ -833,7 +833,7 @@ device and returns the measured cost. Network overhead is excluded.</p>
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">cost</span><span class="si">:</span><span class="s2">g</span><span class="si">}</span><span class="s2"> secs/op"</span><span class="p">)</span>
</pre></div>
</div>
-<div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>9.4e-08 secs/op
+<div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>9.2e-08 secs/op
</pre></div>
</div>
</section>
@@ -1362,8 +1362,8 @@ for ONNX models. Simply replace <code class="docutils literal notranslate"><span
Converted PyTorch model to Relax:
- Number of parameters: 4
Using local target for demonstration
-Exported library to: /tmp/tmpxbrtny9f/model_deployed.so
-Saved parameters to: /tmp/tmpxbrtny9f/model_params.npz
+Exported library to: /tmp/tmpeo1gb8yw/model_deployed.so
+Saved parameters to: /tmp/tmpeo1gb8yw/model_params.npz
RPC workflow (works for any remote device):
==================================================
diff --git a/docs/how_to/tutorials/e2e_opt_model.html b/docs/how_to/tutorials/e2e_opt_model.html
index b9a48c3832e..d23427c47c7 100644
--- a/docs/how_to/tutorials/e2e_opt_model.html
+++ b/docs/how_to/tutorials/e2e_opt_model.html
@@ -674,8 +674,8 @@ PyTorch.</p>
<div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>Downloading: "https://download.pytorch.org/models/resnet18-f37072fd.pth" to /workspace/.cache/torch/hub/checkpoints/resnet18-f37072fd.pth
0%| | 0.00/44.7M [00:00<?, ?B/s]
- 54%|█████▎ | 24.0M/44.7M [00:00<00:00, 251MB/s]
-100%|██████████| 44.7M/44.7M [00:00<00:00, 286MB/s]
+ 76%|███████▋ | 34.1M/44.7M [00:00<00:00, 357MB/s]
+100%|██████████| 44.7M/44.7M [00:00<00:00, 377MB/s]
</pre></div>
</div>
</section>
diff --git a/docs/how_to/tutorials/mix_python_and_tvm_with_pymodule.html b/docs/how_to/tutorials/mix_python_and_tvm_with_pymodule.html
index 499ff879929..9c7862572a4 100644
--- a/docs/how_to/tutorials/mix_python_and_tvm_with_pymodule.html
+++ b/docs/how_to/tutorials/mix_python_and_tvm_with_pymodule.html
@@ -710,7 +710,7 @@ express in TIR or Relax.</p></li>
</section>
<section id="step-1-your-first-hybrid-module">
<h2><a class="toc-backref" href="#id2" role="doc-backlink">Step 1: Your First Hybrid Module</a><a class="headerlink" href="#step-1-your-first-hybrid-module" title="Link to this heading">#</a></h2>
-<p>The core idea: decorate a class with <code class="docutils literal notranslate"><span class="pre">@I.ir_module</span></code>, inherit from <code class="docutils literal notranslate"><span class="pre">BasePyModule</span></code>, and use
+<p>The core idea: decorate a class with <code class="docutils literal notranslate"><span class="pre">@R.py_module</span></code>, inherit from <code class="docutils literal notranslate"><span class="pre">BasePyModule</span></code>, and use
three decorators for three kinds of functions:</p>
<ul class="simple">
<li><p><code class="docutils literal notranslate"><span class="pre">@T.prim_func</span></code> — low-level TIR kernel (JIT-compiled on instantiation)</p></li>
@@ -721,13 +721,13 @@ three decorators for three kinds of functions:</p>
(zero-copy), allocates the output buffer, calls the compiled kernel, and converts back.</p>
<div class="highlight-Python notranslate"><div class="highlight"><pre><span></span><span class="k">if</span> <a href="https://docs.python.org/3/builtins/functions.html#bool" title="builtins.bool" class="sphx-glr-backref-module-builtins sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">RUN_EXAMPLE</span></a><span class="p">:</span>
- <span class="nd">@I</span><span class="o">.</span><span class="n">ir_module</span>
+ <span class="nd">@R</span><span class="o">.</span><span class="n">py_module</span>
<span class="k">class</span><span class="w"> </span><span class="nc">MyFirstModule</span><span class="p">(</span><a href="../../reference/api/python/relax/relax.html#tvm.relax.BasePyModule" title="tvm.relax.BasePyModule" class="sphx-glr-backref-module-tvm-relax sphx-glr-backref-type-py-class"><span class="n">BasePyModule</span></a><span class="p">):</span>
<span class="nd">@T</span><span class="o">.</span><span class="n">prim_func</span><span class="p">(</span><span class="n">s_tir</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
<span class="k">def</span><span class="w"> </span><span class="nf">add_tir</span><span class="p">(</span>
- <span class="n">A</span><span class="p">:</span> <span class="n">T</span><span class="o">.</span><span class="n">Buffer</span><span class="p">((</span><span class="mi">4</span><span class="p">,),</span> <span class="s2">"float32"</span><span class="p">),</span>
- <span class="n">B</span><span class="p">:</span> <span class="n">T</span><span class="o">.</span><span class="n">Buffer</span><span class="p">((</span><span class="mi">4</span><span class="p">,),</span> <span class="s2">"float32"</span><span class="p">),</span>
- <span class="n">C</span><span class="p">:</span> <span class="n">T</span><span class="o">.</span><span class="n">Buffer</span><span class="p">((</span><span class="mi">4</span><span class="p">,),</span> <span class="s2">"float32"</span><span class="p">),</span>
+ <span class="n">A</span><span class="p">:</span> <a href="../../tirx/api/tirx.html#tvm.tirx.Buffer" title="tvm.tirx.Buffer" class="sphx-glr-backref-module-tvm-tirx sphx-glr-backref-type-py-attribute"><span class="n">T</span><span class="o">.</span><span class="n">Buffer</span></a><span class="p">((</span><span class="mi">4</span><span class="p">,),</span> <span class="s2">"float32"</span><span class="p">),</span>
+ <span class="n">B</span><span class="p">:</span> <a href="../../tirx/api/tirx.html#tvm.tirx.Buffer" title="tvm.tirx.Buffer" class="sphx-glr-backref-module-tvm-tirx sphx-glr-backref-type-py-attribute"><span class="n">T</span><span class="o">.</span><span class="n">Buffer</span></a><span class="p">((</span><span class="mi">4</span><span class="p">,),</span> <span class="s2">"float32"</span><span class="p">),</span>
+ <span class="n">C</span><span class="p">:</span> <a href="../../tirx/api/tirx.html#tvm.tirx.Buffer" title="tvm.tirx.Buffer" class="sphx-glr-backref-module-tvm-tirx sphx-glr-backref-type-py-attribute"><span class="n">T</span><span class="o">.</span><span class="n">Buffer</span></a><span class="p">((</span><span class="mi">4</span><span class="p">,),</span> <span class="s2">"float32"</span><span class="p">),</span>
<span class="p">):</span>
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">4</span><span class="p">):</span>
<span class="n">C</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">=</span> <span class="n">A</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">+</span> <span class="n">B</span><span class="p">[</span><span class="n">i</span><span class="p">]</span>
@@ -737,7 +737,7 @@ three decorators for three kinds of functions:</p>
<span class="w"> </span><span class="sd">"""Takes PyTorch tensors, calls TIR, returns PyTorch tensors."""</span>
<span class="n">x_tvm</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_convert_pytorch_to_tvm</span><span class="p">(</span><span class="n">x</span><span class="p">)</span>
<span class="n">y_tvm</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_convert_pytorch_to_tvm</span><span class="p">(</span><span class="n">y</span><span class="p">)</span>
- <span class="n">result</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">call_tir</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">add_tir</span><span class="p">,</span> <span class="p">[</span><span class="n">x_tvm</span><span class="p">,</span> <span class="n">y_tvm</span><span class="p">],</span> <span class="n">out_ty</span><span class="o">=</span><span class="n">R</span><sp [...]
+ <span class="n">result</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">call_tir</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">add_tir</span><span class="p">,</span> <span class="p">[</span><span class="n">x_tvm</span><span class="p">,</span> <span class="n">y_tvm</span><span class="p">],</span> <span class="n">out_ty</span><span class="o">=</span><a href="../../reference/ap [...]
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_convert_tvm_to_pytorch</span><span class="p">(</span><span class="n">result</span><span class="p">)</span>
<span class="c1"># TIR functions are JIT-compiled at instantiation</span>
@@ -766,18 +766,18 @@ is as simple as adding a <code class="docutils literal notranslate"><span class=
immediately — no recompilation needed.</p>
<div class="highlight-Python notranslate"><div class="highlight"><pre><span></span><span class="k">if</span> <a href="https://docs.python.org/3/builtins/functions.html#bool" title="builtins.bool" class="sphx-glr-backref-module-builtins sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">RUN_EXAMPLE</span></a><span class="p">:</span>
- <span class="nd">@I</span><span class="o">.</span><span class="n">ir_module</span>
+ <span class="nd">@R</span><span class="o">.</span><span class="n">py_module</span>
<span class="k">class</span><span class="w"> </span><span class="nc">DebugModule</span><span class="p">(</span><a href="../../reference/api/python/relax/relax.html#tvm.relax.BasePyModule" title="tvm.relax.BasePyModule" class="sphx-glr-backref-module-tvm-relax sphx-glr-backref-type-py-class"><span class="n">BasePyModule</span></a><span class="p">):</span>
<span class="nd">@T</span><span class="o">.</span><span class="n">prim_func</span><span class="p">(</span><span class="n">s_tir</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
- <span class="k">def</span><span class="w"> </span><span class="nf">matmul_tir</span><span class="p">(</span><span class="n">var_A</span><span class="p">:</span> <span class="n">T</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="n">var_B</span><span class="p">:</span> <span class="n">T</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="n">var_C</span><span class="p">:</span> <span class=" [...]
+ <span class="k">def</span><span class="w"> </span><span class="nf">matmul_tir</span><span class="p">(</span><span class="n">var_A</span><span class="p">:</span> <a href="../../reference/api/python/script/script.html#tvm.script.tirx.handle" title="tvm.script.tirx.handle" class="sphx-glr-backref-module-tvm-script-tirx sphx-glr-backref-type-py-function"><span class="n">T</span><span class="o">.</span><span class="n">handle</span></a><span class="p">,</span> <span class="n">var_B</sp [...]
<span class="n">n</span> <span class="o">=</span> <span class="n">T</span><span class="o">.</span><span class="n">int32</span><span class="p">()</span>
- <span class="n">A</span> <span class="o">=</span> <span class="n">T</span><span class="o">.</span><span class="n">match_buffer</span><span class="p">(</span><span class="n">var_A</span><span class="p">,</span> <span class="p">(</span><span class="n">n</span><span class="p">,</span> <span class="mi">4</span><span class="p">),</span> <span class="s2">"float32"</span><span class="p">)</span>
- <span class="n">B</span> <span class="o">=</span> <span class="n">T</span><span class="o">.</span><span class="n">match_buffer</span><span class="p">(</span><span class="n">var_B</span><span class="p">,</span> <span class="p">(</span><span class="mi">4</span><span class="p">,</span> <span class="mi">3</span><span class="p">),</span> <span class="s2">"float32"</span><span class="p">)</span>
- <span class="n">C</span> <span class="o">=</span> <span class="n">T</span><span class="o">.</span><span class="n">match_buffer</span><span class="p">(</span><span class="n">var_C</span><span class="p">,</span> <span class="p">(</span><span class="n">n</span><span class="p">,</span> <span class="mi">3</span><span class="p">),</span> <span class="s2">"float32"</span><span class="p">)</span>
- <span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">j</span><span class="p">,</span> <span class="n">k</span> <span class="ow">in</span> <span class="n">T</span><span class="o">.</span><span class="n">grid</span><span class="p">(</span><span class="n">n</span><span class="p">,</span> <span class="mi">3</span><span class="p">,</span> <span class="mi">4</span><span class="p">):</span>
- <span class="k">with</span> <span class="n">T</span><span class="o">.</span><span class="n">sblock</span><span class="p">(</span><span class="s2">"matmul"</span><span class="p">):</span>
- <span class="n">vi</span><span class="p">,</span> <span class="n">vj</span><span class="p">,</span> <span class="n">vk</span> <span class="o">=</span> <span class="n">T</span><span class="o">.</span><span class="n">axis</span><span class="o">.</span><span class="n">remap</span><span class="p">(</span><span class="s2">"SSR"</span><span class="p">,</span> <span class="p">[</span><span class="n">i</span><span class="p">,</span> <span class="n">j</span><span cla [...]
- <span class="k">with</span> <span class="n">T</span><span class="o">.</span><span class="n">init</span><span class="p">():</span>
+ <span class="n">A</span> <span class="o">=</span> <a href="../../reference/api/python/script/script.html#tvm.script.tirx.match_buffer" title="tvm.script.tirx.match_buffer" class="sphx-glr-backref-module-tvm-script-tirx sphx-glr-backref-type-py-function"><span class="n">T</span><span class="o">.</span><span class="n">match_buffer</span></a><span class="p">(</span><span class="n">var_A</span><span class="p">,</span> <span class="p">(</span><span class="n">n</span><span class="p [...]
+ <span class="n">B</span> <span class="o">=</span> <a href="../../reference/api/python/script/script.html#tvm.script.tirx.match_buffer" title="tvm.script.tirx.match_buffer" class="sphx-glr-backref-module-tvm-script-tirx sphx-glr-backref-type-py-function"><span class="n">T</span><span class="o">.</span><span class="n">match_buffer</span></a><span class="p">(</span><span class="n">var_B</span><span class="p">,</span> <span class="p">(</span><span class="mi">4</span><span class=" [...]
+ <span class="n">C</span> <span class="o">=</span> <a href="../../reference/api/python/script/script.html#tvm.script.tirx.match_buffer" title="tvm.script.tirx.match_buffer" class="sphx-glr-backref-module-tvm-script-tirx sphx-glr-backref-type-py-function"><span class="n">T</span><span class="o">.</span><span class="n">match_buffer</span></a><span class="p">(</span><span class="n">var_C</span><span class="p">,</span> <span class="p">(</span><span class="n">n</span><span class="p [...]
+ <span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">j</span><span class="p">,</span> <span class="n">k</span> <span class="ow">in</span> <a href="../../reference/api/python/script/script.html#tvm.script.tirx.grid" title="tvm.script.tirx.grid" class="sphx-glr-backref-module-tvm-script-tirx sphx-glr-backref-type-py-function"><span class="n">T</span><span class="o">.</span><span class="n">grid</span></a><span class="p">(</span><span class= [...]
+ <span class="k">with</span> <a href="../../reference/api/python/script/script.html#tvm.script.tirx.sblock" title="tvm.script.tirx.sblock" class="sphx-glr-backref-module-tvm-script-tirx sphx-glr-backref-type-py-function"><span class="n">T</span><span class="o">.</span><span class="n">sblock</span></a><span class="p">(</span><span class="s2">"matmul"</span><span class="p">):</span>
+ <span class="n">vi</span><span class="p">,</span> <span class="n">vj</span><span class="p">,</span> <span class="n">vk</span> <span class="o">=</span> <a href="../../reference/api/python/script/script.html#tvm.script.tirx.axis.remap" title="tvm.script.tirx.axis.remap" class="sphx-glr-backref-module-tvm-script-tirx-axis sphx-glr-backref-type-py-method"><span class="n">T</span><span class="o">.</span><span class="n">axis</span><span class="o">.</span><span class="n">rem [...]
+ <span class="k">with</span> <a href="../../reference/api/python/script/script.html#tvm.script.tirx.init" title="tvm.script.tirx.init" class="sphx-glr-backref-module-tvm-script-tirx sphx-glr-backref-type-py-function"><span class="n">T</span><span class="o">.</span><span class="n">init</span></a><span class="p">():</span>
<span class="n">C</span><span class="p">[</span><span class="n">vi</span><span class="p">,</span> <span class="n">vj</span><span class="p">]</span> <span class="o">=</span> <span class="n">T</span><span class="o">.</span><span class="n">float32</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span>
<span class="n">C</span><span class="p">[</span><span class="n">vi</span><span class="p">,</span> <span class="n">vj</span><span class="p">]</span> <span class="o">=</span> <span class="n">C</span><span class="p">[</span><span class="n">vi</span><span class="p">,</span> <span class="n">vj</span><span class="p">]</span> <span class="o">+</span> <span class="n">A</span><span class="p">[</span><span class="n">vi</span><span class="p">,</span> <span class="n">vk</span><sp [...]
@@ -792,7 +792,7 @@ immediately — no recompilation needed.</p>
<span class="n">out</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">call_tir</span><span class="p">(</span>
<span class="bp">self</span><span class="o">.</span><span class="n">matmul_tir</span><span class="p">,</span>
<span class="p">[</span><span class="n">x_tvm</span><span class="p">,</span> <span class="n">w_tvm</span><span class="p">],</span>
- <span class="n">out_ty</span><span class="o">=</span><span class="n">R</span><span class="o">.</span><span class="n">Tensor</span><span class="p">((</span><span class="n">x</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="mi">3</span><span class="p">),</span> <span class="s2">"float32"</span><span class="p">),</span>
+ <span class="n">out_ty</span><span class="o">=</span><a href="../../reference/api/python/script/script.html#tvm.script.relax.Tensor" title="tvm.script.relax.Tensor" class="sphx-glr-backref-module-tvm-script-relax sphx-glr-backref-type-py-function"><span class="n">R</span><span class="o">.</span><span class="n">Tensor</span></a><span class="p">((</span><span class="n">x</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="mi">0</sp [...]
<span class="p">)</span>
<span class="n">logits</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_convert_tvm_to_pytorch</span><span class="p">(</span><span class="n">out</span><span class="p">)</span>
@@ -841,17 +841,17 @@ three different calling conventions:</p>
<span class="n">out_np</span> <span class="o">=</span> <span class="n">x_np</span> <span class="o">+</span> <span class="n">b_np</span>
<span class="n">out</span><span class="p">[:]</span> <span class="o">=</span> <span class="n">out_np</span>
- <span class="nd">@I</span><span class="o">.</span><span class="n">ir_module</span>
+ <span class="nd">@R</span><span class="o">.</span><span class="n">py_module</span>
<span class="k">class</span><span class="w"> </span><span class="nc">PipelineModule</span><span class="p">(</span><a href="../../reference/api/python/relax/relax.html#tvm.relax.BasePyModule" title="tvm.relax.BasePyModule" class="sphx-glr-backref-module-tvm-relax sphx-glr-backref-type-py-class"><span class="n">BasePyModule</span></a><span class="p">):</span>
<span class="nd">@T</span><span class="o">.</span><span class="n">prim_func</span><span class="p">(</span><span class="n">s_tir</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
- <span class="k">def</span><span class="w"> </span><span class="nf">matmul_tir</span><span class="p">(</span><span class="n">var_A</span><span class="p">:</span> <span class="n">T</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="n">var_B</span><span class="p">:</span> <span class="n">T</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="n">var_C</span><span class="p">:</span> <span class=" [...]
- <span class="n">A</span> <span class="o">=</span> <span class="n">T</span><span class="o">.</span><span class="n">match_buffer</span><span class="p">(</span><span class="n">var_A</span><span class="p">,</span> <span class="p">(</span><span class="mi">2</span><span class="p">,</span> <span class="mi">4</span><span class="p">),</span> <span class="s2">"float32"</span><span class="p">)</span>
- <span class="n">B</span> <span class="o">=</span> <span class="n">T</span><span class="o">.</span><span class="n">match_buffer</span><span class="p">(</span><span class="n">var_B</span><span class="p">,</span> <span class="p">(</span><span class="mi">4</span><span class="p">,</span> <span class="mi">3</span><span class="p">),</span> <span class="s2">"float32"</span><span class="p">)</span>
- <span class="n">C</span> <span class="o">=</span> <span class="n">T</span><span class="o">.</span><span class="n">match_buffer</span><span class="p">(</span><span class="n">var_C</span><span class="p">,</span> <span class="p">(</span><span class="mi">2</span><span class="p">,</span> <span class="mi">3</span><span class="p">),</span> <span class="s2">"float32"</span><span class="p">)</span>
- <span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">j</span><span class="p">,</span> <span class="n">k</span> <span class="ow">in</span> <span class="n">T</span><span class="o">.</span><span class="n">grid</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span> <span class="mi">3</span><span class="p">,</span> <span class="mi">4</span><span class="p">):</span>
- <span class="k">with</span> <span class="n">T</span><span class="o">.</span><span class="n">sblock</span><span class="p">(</span><span class="s2">"matmul"</span><span class="p">):</span>
- <span class="n">vi</span><span class="p">,</span> <span class="n">vj</span><span class="p">,</span> <span class="n">vk</span> <span class="o">=</span> <span class="n">T</span><span class="o">.</span><span class="n">axis</span><span class="o">.</span><span class="n">remap</span><span class="p">(</span><span class="s2">"SSR"</span><span class="p">,</span> <span class="p">[</span><span class="n">i</span><span class="p">,</span> <span class="n">j</span><span cla [...]
- <span class="k">with</span> <span class="n">T</span><span class="o">.</span><span class="n">init</span><span class="p">():</span>
+ <span class="k">def</span><span class="w"> </span><span class="nf">matmul_tir</span><span class="p">(</span><span class="n">var_A</span><span class="p">:</span> <a href="../../reference/api/python/script/script.html#tvm.script.tirx.handle" title="tvm.script.tirx.handle" class="sphx-glr-backref-module-tvm-script-tirx sphx-glr-backref-type-py-function"><span class="n">T</span><span class="o">.</span><span class="n">handle</span></a><span class="p">,</span> <span class="n">var_B</sp [...]
+ <span class="n">A</span> <span class="o">=</span> <a href="../../reference/api/python/script/script.html#tvm.script.tirx.match_buffer" title="tvm.script.tirx.match_buffer" class="sphx-glr-backref-module-tvm-script-tirx sphx-glr-backref-type-py-function"><span class="n">T</span><span class="o">.</span><span class="n">match_buffer</span></a><span class="p">(</span><span class="n">var_A</span><span class="p">,</span> <span class="p">(</span><span class="mi">2</span><span class=" [...]
+ <span class="n">B</span> <span class="o">=</span> <a href="../../reference/api/python/script/script.html#tvm.script.tirx.match_buffer" title="tvm.script.tirx.match_buffer" class="sphx-glr-backref-module-tvm-script-tirx sphx-glr-backref-type-py-function"><span class="n">T</span><span class="o">.</span><span class="n">match_buffer</span></a><span class="p">(</span><span class="n">var_B</span><span class="p">,</span> <span class="p">(</span><span class="mi">4</span><span class=" [...]
+ <span class="n">C</span> <span class="o">=</span> <a href="../../reference/api/python/script/script.html#tvm.script.tirx.match_buffer" title="tvm.script.tirx.match_buffer" class="sphx-glr-backref-module-tvm-script-tirx sphx-glr-backref-type-py-function"><span class="n">T</span><span class="o">.</span><span class="n">match_buffer</span></a><span class="p">(</span><span class="n">var_C</span><span class="p">,</span> <span class="p">(</span><span class="mi">2</span><span class=" [...]
+ <span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">j</span><span class="p">,</span> <span class="n">k</span> <span class="ow">in</span> <a href="../../reference/api/python/script/script.html#tvm.script.tirx.grid" title="tvm.script.tirx.grid" class="sphx-glr-backref-module-tvm-script-tirx sphx-glr-backref-type-py-function"><span class="n">T</span><span class="o">.</span><span class="n">grid</span></a><span class="p">(</span><span class= [...]
+ <span class="k">with</span> <a href="../../reference/api/python/script/script.html#tvm.script.tirx.sblock" title="tvm.script.tirx.sblock" class="sphx-glr-backref-module-tvm-script-tirx sphx-glr-backref-type-py-function"><span class="n">T</span><span class="o">.</span><span class="n">sblock</span></a><span class="p">(</span><span class="s2">"matmul"</span><span class="p">):</span>
+ <span class="n">vi</span><span class="p">,</span> <span class="n">vj</span><span class="p">,</span> <span class="n">vk</span> <span class="o">=</span> <a href="../../reference/api/python/script/script.html#tvm.script.tirx.axis.remap" title="tvm.script.tirx.axis.remap" class="sphx-glr-backref-module-tvm-script-tirx-axis sphx-glr-backref-type-py-method"><span class="n">T</span><span class="o">.</span><span class="n">axis</span><span class="o">.</span><span class="n">rem [...]
+ <span class="k">with</span> <a href="../../reference/api/python/script/script.html#tvm.script.tirx.init" title="tvm.script.tirx.init" class="sphx-glr-backref-module-tvm-script-tirx sphx-glr-backref-type-py-function"><span class="n">T</span><span class="o">.</span><span class="n">init</span></a><span class="p">():</span>
<span class="n">C</span><span class="p">[</span><span class="n">vi</span><span class="p">,</span> <span class="n">vj</span><span class="p">]</span> <span class="o">=</span> <span class="n">T</span><span class="o">.</span><span class="n">float32</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span>
<span class="n">C</span><span class="p">[</span><span class="n">vi</span><span class="p">,</span> <span class="n">vj</span><span class="p">]</span> <span class="o">=</span> <span class="n">C</span><span class="p">[</span><span class="n">vi</span><span class="p">,</span> <span class="n">vj</span><span class="p">]</span> <span class="o">+</span> <span class="n">A</span><span class="p">[</span><span class="n">vi</span><span class="p">,</span> <span class="n">vk</span><sp [...]
@@ -863,7 +863,7 @@ three different calling conventions:</p>
<span class="n">h</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">call_tir</span><span class="p">(</span>
<span class="bp">self</span><span class="o">.</span><span class="n">matmul_tir</span><span class="p">,</span>
<span class="p">[</span><span class="n">x_tvm</span><span class="p">,</span> <span class="n">w_tvm</span><span class="p">],</span>
- <span class="n">out_ty</span><span class="o">=</span><span class="n">R</span><span class="o">.</span><span class="n">Tensor</span><span class="p">((</span><span class="mi">2</span><span class="p">,</span> <span class="mi">3</span><span class="p">),</span> <span class="s2">"float32"</span><span class="p">),</span>
+ <span class="n">out_ty</span><span class="o">=</span><a href="../../reference/api/python/script/script.html#tvm.script.relax.Tensor" title="tvm.script.relax.Tensor" class="sphx-glr-backref-module-tvm-script-relax sphx-glr-backref-type-py-function"><span class="n">R</span><span class="o">.</span><span class="n">Tensor</span></a><span class="p">((</span><span class="mi">2</span><span class="p">,</span> <span class="mi">3</span><span class="p">),</span> <span class="s2">&quo [...]
<span class="p">)</span>
<span class="n">h_pt</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_convert_tvm_to_pytorch</span><span class="p">(</span><span class="n">h</span><span class="p">)</span>
@@ -871,7 +871,7 @@ three different calling conventions:</p>
<span class="n">h_biased</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">call_dps_packed</span><span class="p">(</span>
<span class="s2">"my_bias_add"</span><span class="p">,</span>
<span class="p">[</span><span class="n">h_pt</span><span class="p">,</span> <span class="n">bias</span><span class="p">],</span>
- <span class="n">out_ty</span><span class="o">=</span><span class="n">R</span><span class="o">.</span><span class="n">Tensor</span><span class="p">((</span><span class="mi">2</span><span class="p">,</span> <span class="mi">3</span><span class="p">),</span> <span class="s2">"float32"</span><span class="p">),</span>
+ <span class="n">out_ty</span><span class="o">=</span><a href="../../reference/api/python/script/script.html#tvm.script.relax.Tensor" title="tvm.script.relax.Tensor" class="sphx-glr-backref-module-tvm-script-relax sphx-glr-backref-type-py-function"><span class="n">R</span><span class="o">.</span><span class="n">Tensor</span></a><span class="p">((</span><span class="mi">2</span><span class="p">,</span> <span class="mi">3</span><span class="p">),</span> <span class="s2">&quo [...]
<span class="p">)</span>
<span class="c1"># 3. Python/PyTorch activation</span>
@@ -906,25 +906,25 @@ transformed the IR), and compare the output against a PyTorch reference to catch
<span class="nd">@I</span><span class="o">.</span><span class="n">ir_module</span>
<span class="k">class</span><span class="w"> </span><span class="nc">DenseLayer</span><span class="p">:</span>
<span class="nd">@T</span><span class="o">.</span><span class="n">prim_func</span><span class="p">(</span><span class="n">s_tir</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
- <span class="k">def</span><span class="w"> </span><span class="nf">bias_add_tir</span><span class="p">(</span><span class="n">var_x</span><span class="p">:</span> <span class="n">T</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="n">var_b</span><span class="p">:</span> <span class="n">T</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="n">var_out</span><span class="p">:</span> <span cla [...]
- <span class="n">x</span> <span class="o">=</span> <span class="n">T</span><span class="o">.</span><span class="n">match_buffer</span><span class="p">(</span><span class="n">var_x</span><span class="p">,</span> <span class="p">(</span><span class="mi">2</span><span class="p">,</span> <span class="mi">4</span><span class="p">),</span> <span class="s2">"float32"</span><span class="p">)</span>
- <span class="n">b</span> <span class="o">=</span> <span class="n">T</span><span class="o">.</span><span class="n">match_buffer</span><span class="p">(</span><span class="n">var_b</span><span class="p">,</span> <span class="p">(</span><span class="mi">4</span><span class="p">,),</span> <span class="s2">"float32"</span><span class="p">)</span>
- <span class="n">out</span> <span class="o">=</span> <span class="n">T</span><span class="o">.</span><span class="n">match_buffer</span><span class="p">(</span><span class="n">var_out</span><span class="p">,</span> <span class="p">(</span><span class="mi">2</span><span class="p">,</span> <span class="mi">4</span><span class="p">),</span> <span class="s2">"float32"</span><span class="p">)</span>
- <span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">j</span> <span class="ow">in</span> <span class="n">T</span><span class="o">.</span><span class="n">grid</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span> <span class="mi">4</span><span class="p">):</span>
+ <span class="k">def</span><span class="w"> </span><span class="nf">bias_add_tir</span><span class="p">(</span><span class="n">var_x</span><span class="p">:</span> <a href="../../reference/api/python/script/script.html#tvm.script.tirx.handle" title="tvm.script.tirx.handle" class="sphx-glr-backref-module-tvm-script-tirx sphx-glr-backref-type-py-function"><span class="n">T</span><span class="o">.</span><span class="n">handle</span></a><span class="p">,</span> <span class="n">var_b</ [...]
+ <span class="n">x</span> <span class="o">=</span> <a href="../../reference/api/python/script/script.html#tvm.script.tirx.match_buffer" title="tvm.script.tirx.match_buffer" class="sphx-glr-backref-module-tvm-script-tirx sphx-glr-backref-type-py-function"><span class="n">T</span><span class="o">.</span><span class="n">match_buffer</span></a><span class="p">(</span><span class="n">var_x</span><span class="p">,</span> <span class="p">(</span><span class="mi">2</span><span class=" [...]
+ <span class="n">b</span> <span class="o">=</span> <a href="../../reference/api/python/script/script.html#tvm.script.tirx.match_buffer" title="tvm.script.tirx.match_buffer" class="sphx-glr-backref-module-tvm-script-tirx sphx-glr-backref-type-py-function"><span class="n">T</span><span class="o">.</span><span class="n">match_buffer</span></a><span class="p">(</span><span class="n">var_b</span><span class="p">,</span> <span class="p">(</span><span class="mi">4</span><span class=" [...]
+ <span class="n">out</span> <span class="o">=</span> <a href="../../reference/api/python/script/script.html#tvm.script.tirx.match_buffer" title="tvm.script.tirx.match_buffer" class="sphx-glr-backref-module-tvm-script-tirx sphx-glr-backref-type-py-function"><span class="n">T</span><span class="o">.</span><span class="n">match_buffer</span></a><span class="p">(</span><span class="n">var_out</span><span class="p">,</span> <span class="p">(</span><span class="mi">2</span><span cla [...]
+ <span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">j</span> <span class="ow">in</span> <a href="../../reference/api/python/script/script.html#tvm.script.tirx.grid" title="tvm.script.tirx.grid" class="sphx-glr-backref-module-tvm-script-tirx sphx-glr-backref-type-py-function"><span class="n">T</span><span class="o">.</span><span class="n">grid</span></a><span class="p">(</span><span class="mi">2</span><span class="p">,</span> <span class [...]
<span class="n">out</span><span class="p">[</span><span class="n">i</span><span class="p">,</span> <span class="n">j</span><span class="p">]</span> <span class="o">=</span> <span class="n">x</span><span class="p">[</span><span class="n">i</span><span class="p">,</span> <span class="n">j</span><span class="p">]</span> <span class="o">+</span> <span class="n">b</span><span class="p">[</span><span class="n">j</span><span class="p">]</span>
<span class="nd">@R</span><span class="o">.</span><span class="n">function</span>
<span class="k">def</span><span class="w"> </span><span class="nf">main</span><span class="p">(</span>
- <span class="n">x</span><span class="p">:</span> <span class="n">R</span><span class="o">.</span><span class="n">Tensor</span><span class="p">((</span><span class="mi">2</span><span class="p">,</span> <span class="mi">4</span><span class="p">),</span> <span class="s2">"float32"</span><span class="p">),</span>
- <span class="n">w</span><span class="p">:</span> <span class="n">R</span><span class="o">.</span><span class="n">Tensor</span><span class="p">((</span><span class="mi">4</span><span class="p">,</span> <span class="mi">4</span><span class="p">),</span> <span class="s2">"float32"</span><span class="p">),</span>
- <span class="n">b</span><span class="p">:</span> <span class="n">R</span><span class="o">.</span><span class="n">Tensor</span><span class="p">((</span><span class="mi">4</span><span class="p">,),</span> <span class="s2">"float32"</span><span class="p">),</span>
- <span class="p">)</span> <span class="o">-></span> <span class="n">R</span><span class="o">.</span><span class="n">Tensor</span><span class="p">((</span><span class="mi">2</span><span class="p">,</span> <span class="mi">4</span><span class="p">),</span> <span class="s2">"float32"</span><span class="p">):</span>
- <span class="n">h</span> <span class="o">=</span> <span class="n">R</span><span class="o">.</span><span class="n">matmul</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">w</span><span class="p">)</span>
+ <span class="n">x</span><span class="p">:</span> <a href="../../reference/api/python/script/script.html#tvm.script.relax.Tensor" title="tvm.script.relax.Tensor" class="sphx-glr-backref-module-tvm-script-relax sphx-glr-backref-type-py-function"><span class="n">R</span><span class="o">.</span><span class="n">Tensor</span></a><span class="p">((</span><span class="mi">2</span><span class="p">,</span> <span class="mi">4</span><span class="p">),</span> <span class="s2">"float3 [...]
+ <span class="n">w</span><span class="p">:</span> <a href="../../reference/api/python/script/script.html#tvm.script.relax.Tensor" title="tvm.script.relax.Tensor" class="sphx-glr-backref-module-tvm-script-relax sphx-glr-backref-type-py-function"><span class="n">R</span><span class="o">.</span><span class="n">Tensor</span></a><span class="p">((</span><span class="mi">4</span><span class="p">,</span> <span class="mi">4</span><span class="p">),</span> <span class="s2">"float3 [...]
+ <span class="n">b</span><span class="p">:</span> <a href="../../reference/api/python/script/script.html#tvm.script.relax.Tensor" title="tvm.script.relax.Tensor" class="sphx-glr-backref-module-tvm-script-relax sphx-glr-backref-type-py-function"><span class="n">R</span><span class="o">.</span><span class="n">Tensor</span></a><span class="p">((</span><span class="mi">4</span><span class="p">,),</span> <span class="s2">"float32"</span><span class="p">),</span>
+ <span class="p">)</span> <span class="o">-></span> <a href="../../reference/api/python/script/script.html#tvm.script.relax.Tensor" title="tvm.script.relax.Tensor" class="sphx-glr-backref-module-tvm-script-relax sphx-glr-backref-type-py-function"><span class="n">R</span><span class="o">.</span><span class="n">Tensor</span></a><span class="p">((</span><span class="mi">2</span><span class="p">,</span> <span class="mi">4</span><span class="p">),</span> <span class="s2">"float [...]
+ <span class="n">h</span> <span class="o">=</span> <a href="../../reference/api/python/script/script.html#tvm.script.relax.matmul" title="tvm.script.relax.matmul" class="sphx-glr-backref-module-tvm-script-relax sphx-glr-backref-type-py-function"><span class="n">R</span><span class="o">.</span><span class="n">matmul</span></a><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">w</span><span class="p">)</span>
<span class="bp">cls</span> <span class="o">=</span> <span class="n">DenseLayer</span>
- <span class="n">h_bias</span> <span class="o">=</span> <span class="n">R</span><span class="o">.</span><span class="n">call_tir</span><span class="p">(</span>
+ <span class="n">h_bias</span> <span class="o">=</span> <a href="../../reference/api/python/script/script.html#tvm.script.relax.call_tir" title="tvm.script.relax.call_tir" class="sphx-glr-backref-module-tvm-script-relax sphx-glr-backref-type-py-function"><span class="n">R</span><span class="o">.</span><span class="n">call_tir</span></a><span class="p">(</span>
<span class="bp">cls</span><span class="o">.</span><span class="n">bias_add_tir</span><span class="p">,</span>
<span class="p">(</span><span class="n">h</span><span class="p">,</span> <span class="n">b</span><span class="p">),</span>
- <span class="n">out_ty</span><span class="o">=</span><span class="n">R</span><span class="o">.</span><span class="n">Tensor</span><span class="p">((</span><span class="mi">2</span><span class="p">,</span> <span class="mi">4</span><span class="p">),</span> <span class="s2">"float32"</span><span class="p">),</span>
+ <span class="n">out_ty</span><span class="o">=</span><a href="../../reference/api/python/script/script.html#tvm.script.relax.Tensor" title="tvm.script.relax.Tensor" class="sphx-glr-backref-module-tvm-script-relax sphx-glr-backref-type-py-function"><span class="n">R</span><span class="o">.</span><span class="n">Tensor</span></a><span class="p">((</span><span class="mi">2</span><span class="p">,</span> <span class="mi">4</span><span class="p">),</span> <span class="s2">&quo [...]
<span class="p">)</span>
<span class="k">return</span> <span class="n">R</span><span class="o">.</span><span class="n">nn</span><span class="o">.</span><span class="n">relu</span><span class="p">(</span><span class="n">h_bias</span><span class="p">)</span>
@@ -936,7 +936,7 @@ transformed the IR), and compare the output against a PyTorch reference to catch
<span class="n">w</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">randn</span><span class="p">(</span><span class="mi">4</span><span class="p">,</span> <span class="mi">4</span><span class="p">)</span>
<span class="n">b</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">randn</span><span class="p">(</span><span class="mi">4</span><span class="p">)</span>
- <span class="n">py_result_early</span> <span class="o">=</span> <span class="n">converted_early</span><span class="o">.</span><span class="n">pyfuncs</span><span class="p">[</span><span class="s2">"main"</span><span class="p">](</span><span class="n">x</span><span class="p">,</span> <span class="n">w</span><span class="p">,</span> <span class="n">b</span><span class="p">)</span>
+ <span class="n">py_result_early</span> <span class="o">=</span> <span class="n">converted_early</span><span class="o">.</span><span class="n">__pyfuncs__</span><span class="p">[</span><span class="s2">"main"</span><span class="p">](</span><span class="n">x</span><span class="p">,</span> <span class="n">w</span><span class="p">,</span> <span class="n">b</span><span class="p">)</span>
<span class="n">expected</span> <span class="o">=</span> <span class="n">F</span><span class="o">.</span><span class="n">relu</span><span class="p">(</span><span class="n">x</span> <span class="o">@</span> <span class="n">w</span> <span class="o">+</span> <span class="n">b</span><span class="p">)</span>
<span class="nb">print</span><span class="p">(</span><span class="s2">"Before optimization:"</span><span class="p">)</span>
@@ -952,7 +952,7 @@ transformed the IR), and compare the output against a PyTorch reference to catch
<span class="n">converter_late</span> <span class="o">=</span> <span class="n">RelaxToPyFuncConverter</span><span class="p">(</span><span class="n">optimized_mod</span><span class="p">)</span>
<span class="n">converted_late</span> <span class="o">=</span> <span class="n">converter_late</span><span class="o">.</span><span class="n">convert</span><span class="p">([</span><span class="s2">"main"</span><span class="p">])</span>
- <span class="n">py_result_late</span> <span class="o">=</span> <span class="n">converted_late</span><span class="o">.</span><span class="n">pyfuncs</span><span class="p">[</span><span class="s2">"main"</span><span class="p">](</span><span class="n">x</span><span class="p">,</span> <span class="n">w</span><span class="p">,</span> <span class="n">b</span><span class="p">)</span>
+ <span class="n">py_result_late</span> <span class="o">=</span> <span class="n">converted_late</span><span class="o">.</span><span class="n">__pyfuncs__</span><span class="p">[</span><span class="s2">"main"</span><span class="p">](</span><span class="n">x</span><span class="p">,</span> <span class="n">w</span><span class="p">,</span> <span class="n">b</span><span class="p">)</span>
<span class="nb">print</span><span class="p">(</span><span class="s2">"</span><span class="se">\n</span><span class="s2">After CanonicalizeBindings pass:"</span><span class="p">)</span>
<span class="nb">print</span><span class="p">(</span><span class="s2">" Converted result:"</span><span class="p">,</span> <span class="n">py_result_late</span><span class="p">)</span>
@@ -974,7 +974,7 @@ that is complex to implement in TIR. Compile everything else, and let that one o
... 684616 lines suppressed ...