/*! * \file tl/op/op.cc * * Define operators usd in tile library. */ #include "operator.h" #include #include #include namespace tvm { namespace tl { using namespace tir; TileOperator ParseOperator(Call call, BufferMap vmap) { auto op_map = Op::GetAttrMap("TLOpBuilder"); Op op = call->op.as().value(); if (op_map.count(op)) { auto tile_op = op_map[op](call->args, vmap); ICHECK(tile_op.defined()); return tile_op; } return TileOperator(); } TileOperator ParseOperator(Stmt stmt, BufferMap vmap) { if (stmt.as() && stmt.as()->value.as()) { auto call = stmt.as()->value.as(); return ParseOperator(GetRef(call), vmap); } return TileOperator(); } Var GetVarFromAccessPtr(const PrimExpr &expr) { auto call = expr.as(); ICHECK(call); ICHECK(call->op.same_as(builtin::tvm_access_ptr())); auto var = call->args[1].as(); ICHECK(var); return GetRef(var); } } // namespace tl } // namespace tvm