/*! * Copyright (c) 2016 by Contributors * Implementation of API functions related to arith * \file api_arith.cc */ #include <tvm/expr.h> #include <tvm/ir.h> #include <tvm/api_registry.h> #include <tvm/tensor.h> namespace tvm { namespace arith { TVM_REGISTER_API("arith.intset_single_point") .set_body([](TVMArgs args, TVMRetValue *ret) { *ret = IntSet::single_point(args[0]); }); TVM_REGISTER_API("arith.intset_vector") .set_body([](TVMArgs args, TVMRetValue *ret) { *ret = IntSet::vector(args[0]); }); TVM_REGISTER_API("arith.intset_interval") .set_body([](TVMArgs args, TVMRetValue *ret) { *ret = IntSet::interval(args[0], args[1]); }); TVM_REGISTER_API("arith.EvalModular") .set_body([](TVMArgs args, TVMRetValue *ret) { *ret = EvalModular(args[0], Map<Var, IntSet>()); }); TVM_REGISTER_API("arith.DetectLinearEquation") .set_body([](TVMArgs args, TVMRetValue *ret) { *ret = DetectLinearEquation(args[0], args[1]); }); TVM_REGISTER_API("arith.DetectClipBound") .set_body([](TVMArgs args, TVMRetValue *ret) { *ret = DetectClipBound(args[0], args[1]); }); TVM_REGISTER_API("arith.DeduceBound") .set_body([](TVMArgs args, TVMRetValue *ret) { *ret = DeduceBound(args[0], args[1], args[2].operator Map<Var, IntSet>(), args[3].operator Map<Var, IntSet>()); }); TVM_REGISTER_API("arith.DomainTouched") .set_body([](TVMArgs args, TVMRetValue *ret) { *ret = DomainTouched(args[0], args[1], args[2], args[3]); }); TVM_REGISTER_API("_IntervalSetGetMin") .set_body([](TVMArgs args, TVMRetValue *ret) { *ret = args[0].operator IntSet().min(); }); TVM_REGISTER_API("_IntervalSetGetMax") .set_body([](TVMArgs args, TVMRetValue *ret) { *ret = args[0].operator IntSet().max(); }); TVM_REGISTER_API("_IntSetIsNothing") .set_body([](TVMArgs args, TVMRetValue *ret) { *ret = args[0].operator IntSet().is_nothing(); }); TVM_REGISTER_API("_IntSetIsEverything") .set_body([](TVMArgs args, TVMRetValue *ret) { *ret = args[0].operator IntSet().is_everything(); }); } // namespace arith } // namespace tvm