|
|
|
@@ -45,6 +45,27 @@ STATUS TFLogicalParser::Parse(const tensorflow::NodeDef &tf_op, |
|
|
|
primitive->value.type = schema::PrimitiveType_LogicalAnd; |
|
|
|
primitive->value.value = attr.release(); |
|
|
|
*primitiveC = PrimitiveC::Create(primitive.release()); |
|
|
|
} else if (tf_op.op() == "LogicalOr") { |
|
|
|
auto attr = std::make_unique<schema::LogicalOrT>(); |
|
|
|
if (attr == nullptr) { |
|
|
|
MS_LOG(ERROR) << "new op failed"; |
|
|
|
return RET_NULL_PTR; |
|
|
|
} |
|
|
|
primitive->value.type = schema::PrimitiveType_LogicalOr; |
|
|
|
primitive->value.value = attr.release(); |
|
|
|
*primitiveC = PrimitiveC::Create(primitive.release()); |
|
|
|
} else if (tf_op.op() == "LogicalNot") { |
|
|
|
auto attr = std::make_unique<schema::LogicalNotT>(); |
|
|
|
if (attr == nullptr) { |
|
|
|
MS_LOG(ERROR) << "new op failed"; |
|
|
|
return RET_NULL_PTR; |
|
|
|
} |
|
|
|
primitive->value.type = schema::PrimitiveType_LogicalNot; |
|
|
|
primitive->value.value = attr.release(); |
|
|
|
*primitiveC = PrimitiveC::Create(primitive.release()); |
|
|
|
} else { |
|
|
|
MS_LOG(ERROR) << tf_op.op() << " is not supported."; |
|
|
|
return RET_ERROR; |
|
|
|
} |
|
|
|
if (*primitiveC == nullptr) { |
|
|
|
MS_LOG(ERROR) << "primitiveC is nullptr"; |
|
|
|
@@ -59,5 +80,7 @@ STATUS TFLogicalParser::Parse(const tensorflow::NodeDef &tf_op, |
|
|
|
return RET_OK; |
|
|
|
} |
|
|
|
TFNodeRegistrar g_tfLogicalAndParser("LogicalAnd", new TFLogicalParser()); |
|
|
|
TFNodeRegistrar g_tfLogicalOrParser("LogicalOr", new TFLogicalParser()); |
|
|
|
TFNodeRegistrar g_tfLogicalNotParser("LogicalNot", new TFLogicalParser()); |
|
|
|
} // namespace lite |
|
|
|
} // namespace mindspore |