| @@ -1006,6 +1006,11 @@ OP_SCHEMA_DEF(Unstack) | |||||
| OP_ATTR_WITH_VALUE(axis, long, 0) | OP_ATTR_WITH_VALUE(axis, long, 0) | ||||
| OP_SCHEMA_DEF_END(Unstack) | OP_SCHEMA_DEF_END(Unstack) | ||||
| OP_SCHEMA_DEF_ONLY(While) | |||||
| OP_ATTR_ONLY(cond_subgraph_index, long) | |||||
| OP_ATTR_ONLY(body_subgraph_index, long) | |||||
| OP_SCHEMA_DEF_ONLY_END(While) | |||||
| OP_SCHEMA_DEF(Where) | OP_SCHEMA_DEF(Where) | ||||
| OP_SCHEMA_DEF_END(Where) | OP_SCHEMA_DEF_END(Where) | ||||
| @@ -1015,6 +1020,9 @@ OP_SCHEMA_DEF_END(ZerosLike) | |||||
| OP_SCHEMA_DEF(Select) | OP_SCHEMA_DEF(Select) | ||||
| OP_SCHEMA_DEF_END(Select) | OP_SCHEMA_DEF_END(Select) | ||||
| OP_SCHEMA_DEF_ONLY(If) | |||||
| OP_SCHEMA_DEF_ONLY_END(If) | |||||
| OP_SCHEMA_DEF(GRU) | OP_SCHEMA_DEF(GRU) | ||||
| OP_ATTR_WITH_VALUE(bidirectional, bool, false) | OP_ATTR_WITH_VALUE(bidirectional, bool, false) | ||||
| OP_SCHEMA_DEF_END(GRU) | OP_SCHEMA_DEF_END(GRU) | ||||
| @@ -154,4 +154,33 @@ | |||||
| #else | #else | ||||
| #define OP_SCHEMA_DEF_END(OP) | #define OP_SCHEMA_DEF_END(OP) | ||||
| #endif | #endif | ||||
| #ifdef GEN_SCHEMA_DEF | |||||
| #define OP_SCHEMA_DEF_ONLY(OP) \ | |||||
| namespace mindspore::lite::ops { \ | |||||
| std::string Gen##OP##Def() { \ | |||||
| std::string op_def = "table "; \ | |||||
| op_def.append(#OP); \ | |||||
| op_def.append(" {\n"); | |||||
| #else | |||||
| #define OP_SCHEMA_DEF_ONLY(OP) | |||||
| #endif | |||||
| #ifdef GEN_SCHEMA_DEF | |||||
| #define OP_ATTR_ONLY(key, type) op_def.append(" ").append(#key).append(": ").append(#type).append(";\n"); | |||||
| #else | |||||
| #define OP_ATTR_ONLY(key, type) | |||||
| #endif | |||||
| #ifdef GEN_SCHEMA_DEF | |||||
| #define OP_SCHEMA_DEF_ONLY_END(OP) \ | |||||
| op_def.append("}\n\n"); \ | |||||
| return op_def; \ | |||||
| } \ | |||||
| SchemaOpRegister g_schema_op_##OP(Gen##OP##Def); \ | |||||
| } // namespace mindspore::lite::ops | |||||
| #else | |||||
| #define OP_SCHEMA_DEF_ONLY_END(OP) | |||||
| #endif | |||||
| #endif // MINDSPORE_LITE_SRC_OPS_OPS_DEF_H_ | #endif // MINDSPORE_LITE_SRC_OPS_OPS_DEF_H_ | ||||
| @@ -39,7 +39,7 @@ schema::PrimitiveT *GetPrimitiveT(const AnfNodePtr &node) { | |||||
| if (creator != nullptr) { | if (creator != nullptr) { | ||||
| return creator(node); | return creator(node); | ||||
| } else { | } else { | ||||
| MS_LOG(ERROR) << "can not find MSOpsRegistry for op: " << prim->name(); | |||||
| MS_LOG(WARNING) << "can not find MSOpsRegistry for op: " << prim->name(); | |||||
| return nullptr; | return nullptr; | ||||
| } | } | ||||
| } | } | ||||
| @@ -42,7 +42,8 @@ ParamValueLitePtr NewParamValueLitePtr(lite::Tensor *tensor) { | |||||
| bool IsSpecialType(const CNodePtr &cnode) { | bool IsSpecialType(const CNodePtr &cnode) { | ||||
| if (CheckPrimitiveType(cnode, prim::kPrimTupleGetItem) || CheckPrimitiveType(cnode, prim::kPrimDepend) || | if (CheckPrimitiveType(cnode, prim::kPrimTupleGetItem) || CheckPrimitiveType(cnode, prim::kPrimDepend) || | ||||
| CheckPrimitiveType(cnode, prim::kPrimControlDepend) || CheckPrimitiveType(cnode, kPrimMakeTuple) || | CheckPrimitiveType(cnode, prim::kPrimControlDepend) || CheckPrimitiveType(cnode, kPrimMakeTuple) || | ||||
| CheckPrimitiveType(cnode, kPrimReturn)) { | |||||
| CheckPrimitiveType(cnode, kPrimReturn) || CheckPrimitiveType(cnode, std::make_shared<Primitive>("While")) || | |||||
| CheckPrimitiveType(cnode, std::make_shared<Primitive>("If"))) { | |||||
| return true; | return true; | ||||
| } | } | ||||
| return false; | return false; | ||||