20#ifndef TVM_S_TIR_META_SCHEDULE_SCHEDULE_RULE_H_
21#define TVM_S_TIR_META_SCHEDULE_SCHEDULE_RULE_H_
23#include <tvm/ffi/container/array.h>
24#include <tvm/ffi/container/map.h>
25#include <tvm/ffi/function.h>
26#include <tvm/ffi/optional.h>
27#include <tvm/ffi/reflection/registry.h>
28#include <tvm/ffi/string.h>
35namespace meta_schedule {
47 namespace refl = tvm::ffi::reflection;
48 refl::ObjectDef<ScheduleRuleObj>();
83 explicit ScheduleRule(ffi::UnsafeInit tag, ffi::ObjectPtr<ScheduleRuleObj> data)
84 : ffi::ObjectRef(tag) {
85 data_ = std::move(data);
127 bool inline_const_tensor,
128 bool disallow_if_then_else,
129 bool require_injective,
130 bool require_ordered,
131 ffi::Optional<ffi::Array<ffi::String>> disallow_op);
162 ffi::String structure,
163 ffi::Optional<ffi::Array<ffi::String>> tile_binds,
164 ffi::Optional<int64_t> max_innermost_factor,
165 ffi::Optional<ffi::Array<int64_t>> vector_load_lens,
166 ffi::Optional<ffi::Map<ffi::String, ffi::Any>> reuse_read,
167 ffi::Optional<ffi::Map<ffi::String, ffi::Any>> reuse_write,
168 ffi::Optional<ffi::Function> filter_fn = std::nullopt);
188 ffi::String intrin_name, ffi::String structure,
189 ffi::Optional<ffi::Array<ffi::String>> tile_binds,
190 ffi::Optional<int64_t> max_innermost_factor,
191 ffi::Optional<ffi::Array<int64_t>> vector_load_lens,
192 ffi::Optional<ffi::Map<ffi::String, ffi::Any>> reuse_read,
193 ffi::Optional<ffi::Map<ffi::String, ffi::Any>> reuse_write);
216 ffi::Array<ffi::Map<ffi::String, ffi::String>> intrin_groups, ffi::String structure,
217 ffi::Optional<ffi::Array<ffi::String>> tile_binds,
218 ffi::Optional<int64_t> max_innermost_factor,
219 ffi::Optional<ffi::Array<int64_t>> vector_load_lens,
220 ffi::Optional<ffi::Map<ffi::String, ffi::Any>> reuse_read,
221 ffi::Optional<ffi::Map<ffi::String, ffi::Any>> reuse_write,
bool use_software_pipeline);
235 ffi::String structure, int64_t vector_length_in_bits,
236 ffi::Optional<int64_t> max_innermost_factor,
237 ffi::Optional<ffi::Map<ffi::String, ffi::Any>> reuse_read,
238 ffi::Optional<ffi::Map<ffi::String, ffi::Any>> reuse_write);
249 ffi::Optional<int64_t> max_innermost_factor);
276 int max_vectorize_extent,
277 ffi::Array<int64_t> unroll_max_steps,
278 bool unroll_explicit);
288 int max_threads_per_block = -1);
304 TVM_DLL
static ffi::Array<ScheduleRule, void>
DefaultX86(
const ffi::String& type);
312 TVM_DLL
static ffi::Array<ScheduleRule, void>
DefaultARM(
const ffi::String& type);
337 namespace refl = tvm::ffi::reflection;
338 refl::ObjectDef<PyScheduleRuleObj>();
Managed reference to SBlockRVNode.
Definition schedule.h:67
Managed reference to ScheduleObj.
Definition schedule.h:887
Managed reference to TuneContextObj.
Definition tune_context.h:99
An object that builds and maintains block scope and StmtSref mapping for Dependence analysis.
Definition attr.h:23