26 #ifndef TVM_TIR_INDEX_MAP_H_
27 #define TVM_TIR_INDEX_MAP_H_
29 #include <tvm/ffi/container/array.h>
105 ffi::Array<PrimExpr>
MapIndices(
const ffi::Array<PrimExpr>& indices,
153 const std::function<ffi::Optional<ffi::String>(
const Var&
var)>& f_name_map =
nullptr)
const;
157 refl::ObjectDef<IndexMapNode>()
159 refl::AttachFieldFlag::SEqHashDef())
162 refl::AttachFieldFlag::SEqHashIgnore());
177 IndexMap(ffi::Array<Var> initial_indices, ffi::Array<PrimExpr> final_indices,
178 ffi::Optional<IndexMap> inverse_index_map = std::nullopt);
187 static IndexMap FromFunc(
int ndim, ffi::TypedFunction<ffi::Array<PrimExpr>(ffi::Array<Var>)> func,
188 ffi::Optional<IndexMap> inverse_index_map = std::nullopt);
209 const std::function<ffi::Optional<ffi::String>(
const Var&
var)>& f_name_map =
nullptr)
const;
232 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:53
Defines a mapping between two representations of indices into a buffer.
Definition: index_map.h:52
runtime::Tensor MapTensor(runtime::Tensor arr_src) const
ffi::Array< PrimExpr > MapShape(const ffi::Array< PrimExpr > &shape, arith::Analyzer *analyzer) const
Map a buffer shape to the output space.
TVM_FFI_DECLARE_OBJECT_INFO_FINAL("tir.IndexMap", IndexMapNode, Object)
ffi::Array< Var > initial_indices
Variables representing the indices prior to remapping.
Definition: index_map.h:59
ffi::Optional< ObjectRef > inverse_index_map
The inverse index map.
Definition: index_map.h:83
static void RegisterReflection()
Definition: index_map.h:155
ffi::Array< PrimExpr > MapIndices(const ffi::Array< PrimExpr > &indices, arith::Analyzer *analyzer) const
Map indices to the output space.
IndexMapNode()
Default constructor.
Definition: index_map.h:91
ffi::Array< PrimExpr > final_indices
Expressions defining the indices after remapping.
Definition: index_map.h:71
static constexpr TVMFFISEqHashKind _type_s_eq_hash_kind
Definition: index_map.h:165
ffi::Array< Range > MapRanges(const ffi::Array< Range > &ranges, arith::Analyzer *analyzer) const
Map a memory range 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.
Definition: index_map.h:169
TVM_FFI_DEFINE_OBJECT_REF_METHODS_NULLABLE(IndexMap, ObjectRef, IndexMapNode)
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.
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(ffi::Array< Var > initial_indices, ffi::Array< PrimExpr > final_indices, ffi::Optional< IndexMap > inverse_index_map=std::nullopt)
The constructor.
IndexMap Inverse(ffi::Array< Range > initial_ranges, arith::Analyzer *analyzer) const
Generate the inverse mapping.
a named variable in TIR
Definition: var.h:77
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:1960
Performance counters for profiling via the PAPI library.
Definition: analyzer.h:37
A managed object in the TVM runtime.