/*! * Copyright (c) 2017 by Contributors * Implementation of API functions related to schedule pass. * \file api_schedule.cc */ #include <tvm/expr.h> #include <tvm/tensor.h> #include <tvm/schedule.h> #include <tvm/schedule_pass.h> #include <tvm/api_registry.h> #include "../schedule/graph.h" namespace tvm { namespace schedule { TVM_REGISTER_API("schedule.AutoInlineElemWise") .set_body([](TVMArgs args, TVMRetValue* ret) { AutoInlineElemWise(args[0]); }); TVM_REGISTER_API("schedule.AutoInlineInjective") .set_body([](TVMArgs args, TVMRetValue* ret) { AutoInlineInjective(args[0]); }); TVM_REGISTER_API("schedule.ScheduleOps") .set_body([](TVMArgs args, TVMRetValue* ret) { if (args.size() == 2) *ret = ScheduleOps(args[0], args[1], false); else *ret = ScheduleOps(args[0], args[1], args[2]); }); #define REGISTER_SCHEDULE_PASS1(PassName) \ TVM_REGISTER_API("schedule."#PassName) \ .set_body([](TVMArgs args, TVMRetValue *ret) { \ *ret = PassName(args[0]); \ }) \ #define REGISTER_SCHEDULE_PASS2(PassName) \ TVM_REGISTER_API("schedule."#PassName) \ .set_body([](TVMArgs args, TVMRetValue *ret) { \ *ret = PassName(args[0], args[1]); \ }) \ REGISTER_SCHEDULE_PASS1(InferBound); REGISTER_SCHEDULE_PASS1(CreateReadGraph); REGISTER_SCHEDULE_PASS2(PostDFSOrder); REGISTER_SCHEDULE_PASS1(CreateAttachPath); REGISTER_SCHEDULE_PASS1(ScanGetBody); REGISTER_SCHEDULE_PASS1(ScanFixPointAnalysis); } // namespace schedule } // namespace tvm