26 #ifndef TVM_TIR_INDEX_MAP_H_
27 #define TVM_TIR_INDEX_MAP_H_
29 #include <tvm/ffi/container/array.h>
106 ffi::Array<PrimExpr>
MapIndices(
const ffi::Array<PrimExpr>& indices,
154 const std::function<ffi::Optional<ffi::String>(
const Var&
var)>& f_name_map =
nullptr)
const;
158 refl::ObjectDef<IndexMapNode>()
160 refl::AttachFieldFlag::SEqHashDef())
163 refl::AttachFieldFlag::SEqHashIgnore());
178 IndexMap(ffi::Array<Var> initial_indices, ffi::Array<PrimExpr> final_indices,
179 ffi::Optional<IndexMap> inverse_index_map = std::nullopt);
188 static IndexMap FromFunc(
int ndim, ffi::TypedFunction<ffi::Array<PrimExpr>(ffi::Array<Var>)> func,
189 ffi::Optional<IndexMap> inverse_index_map = std::nullopt);
210 const std::function<ffi::Optional<ffi::String>(
const Var&
var)>& f_name_map =
nullptr)
const;
233 std::function<ffi::Optional<PrimExpr>(
const Var&
var)> f_subst);
Analyzer that contains bunch of sub-analyzers.
Definition: analyzer.h:634
Managed Tensor. The array is backed by reference counted blocks.
Definition: tensor.h:54
Defines a mapping between two representations of indices into a buffer.
Definition: index_map.h:53
static constexpr TVMFFISEqHashKind _type_s_eq_hash_kind
Definition: index_map.h:166
ffi::Array< PrimExpr > MapShape(const ffi::Array< PrimExpr > &shape, arith::Analyzer *analyzer) const
Map a buffer shape to the output space.
ffi::Array< Range > MapRanges(const ffi::Array< Range > &ranges, arith::Analyzer *analyzer) const
Map a memory range to the output space.
IndexMapNode()
Default constructor.
Definition: index_map.h:92
ffi::Array< PrimExpr > MapIndices(const ffi::Array< PrimExpr > &indices, arith::Analyzer *analyzer) const
Map indices to the output space.
ffi::String ToPythonString(const std::function< ffi::Optional< ffi::String >(const Var &var)> &f_name_map=nullptr) const
Convert to string representation in Python.
runtime::Tensor MapTensor(runtime::Tensor arr_src) const
ffi::Optional< ObjectRef > inverse_index_map
The inverse index map.
Definition: index_map.h:84
static void RegisterReflection()
Definition: index_map.h:156
ffi::Array< Var > initial_indices
Variables representing the indices prior to remapping.
Definition: index_map.h:60
ffi::Array< PrimExpr > final_indices
Expressions defining the indices after remapping.
Definition: index_map.h:72
TVM_FFI_DECLARE_OBJECT_INFO_FINAL("tirx.IndexMap", IndexMapNode, Object)
Definition: index_map.h:170
TVM_FFI_DEFINE_OBJECT_REF_METHODS_NULLABLE(IndexMap, ObjectRef, IndexMapNode)
IndexMap(ffi::Array< Var > initial_indices, ffi::Array< PrimExpr > final_indices, ffi::Optional< IndexMap > inverse_index_map=std::nullopt)
The constructor.
std::pair< IndexMap, PrimExpr > NonSurjectiveInverse(ffi::Array< Range > initial_ranges, arith::Analyzer *analyzer) const
Generate the inverse mapping.
static IndexMap FromFunc(int ndim, ffi::TypedFunction< ffi::Array< PrimExpr >(ffi::Array< Var >)> func, ffi::Optional< IndexMap > inverse_index_map=std::nullopt)
Create an index map from a packed function.
IndexMap Inverse(ffi::Array< Range > initial_ranges, arith::Analyzer *analyzer) const
Generate the inverse mapping.
IndexMap RenameVariables(const std::function< ffi::Optional< ffi::String >(const Var &var)> &f_name_map=nullptr) const
Rename the variables in the index map and ensure the names are unique.
a named variable in TIR
Definition: var.h:76
Definition: repr_printer.h:91
Var var(std::string name_hint, DataType t=DataType::Int(32))
Construct a new Var expression.
IndexMap Substitute(const IndexMap &index_map, std::function< ffi::Optional< PrimExpr >(const Var &var)> f_subst)
Substitute variables in an index map.
Tensor shape(const Tensor &src, DataType dtype, const std::string name="T_shape", const std::string tag=kInjective)
Get the shape of input tensor.
Definition: transform.h:1981
An object that builds and maintains block scope and StmtSref mapping for Dependence analysis.
Definition: analyzer.h:37
A managed object in the TVM runtime.
A device-independent managed Tensor abstraction.