aboutsummaryrefslogtreecommitdiff
path: root/delegate/opaque/src/ElementwiseBinary.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'delegate/opaque/src/ElementwiseBinary.hpp')
-rw-r--r--delegate/opaque/src/ElementwiseBinary.hpp60
1 files changed, 38 insertions, 22 deletions
diff --git a/delegate/opaque/src/ElementwiseBinary.hpp b/delegate/opaque/src/ElementwiseBinary.hpp
index 8448609695..2a67802028 100644
--- a/delegate/opaque/src/ElementwiseBinary.hpp
+++ b/delegate/opaque/src/ElementwiseBinary.hpp
@@ -244,10 +244,14 @@ TfLiteStatus ValidateSubOperator(DelegateData& delegateData,
std::pair<armnn::IConnectableLayer*, armnn::IConnectableLayer*> AddFloorDivLayer(
DelegateData& delegateData,
- const armnn::TensorInfo& outputTensorInfo)
+ const armnn::TensorInfo& outputTensorInfo,
+ int nodeIndex)
{
+ auto layerName = GetName(armnn::BinaryOperation::Div, nodeIndex);
armnn::IConnectableLayer* divisionLayer = delegateData.m_Network->AddElementwiseBinaryLayer(
- armnn::BinaryOperation::Div);
+ armnn::BinaryOperation::Div,
+ layerName.c_str());
+
// if the output of the div is Signed32 the Floor layer is not required
if (armnn::DataType::Signed32 == outputTensorInfo.GetDataType())
{
@@ -255,7 +259,8 @@ std::pair<armnn::IConnectableLayer*, armnn::IConnectableLayer*> AddFloorDivLayer
}
armnn::IOutputSlot& outputSlot = divisionLayer->GetOutputSlot(0);
outputSlot.SetTensorInfo(outputTensorInfo);
- armnn::IConnectableLayer* floorLayer = delegateData.m_Network->AddFloorLayer();
+ auto floorName = GetName(armnn::LayerType::Floor, nodeIndex);
+ armnn::IConnectableLayer* floorLayer = delegateData.m_Network->AddFloorLayer(floorName.c_str());
outputSlot.Connect(floorLayer->GetInputSlot(0));
return std::make_pair(divisionLayer, floorLayer);
}
@@ -411,46 +416,55 @@ TfLiteStatus VisitElementwiseBinaryOperator(DelegateData& delegateData,
armnn::IConnectableLayer* elementwiseBinaryLayer = nullptr;
armnnDelegate::MultiLayerFacade multiLayer;
+ std::string layerName;
switch(elementwiseBinaryOperatorCode)
{
case kTfLiteBuiltinAdd:
- elementwiseBinaryLayer = delegateData.m_Network->AddElementwiseBinaryLayer(
- armnn::BinaryOperation::Add);
+ layerName = GetName(armnn::BinaryOperation::Add, nodeIndex);
+ elementwiseBinaryLayer = delegateData.m_Network->AddElementwiseBinaryLayer(armnn::BinaryOperation::Add,
+ layerName.c_str());
break;
case kTfLiteBuiltinDiv:
- elementwiseBinaryLayer = delegateData.m_Network->AddElementwiseBinaryLayer(
- armnn::BinaryOperation::Div);
+ layerName = GetName(armnn::BinaryOperation::Div, nodeIndex);
+ elementwiseBinaryLayer = delegateData.m_Network->AddElementwiseBinaryLayer(armnn::BinaryOperation::Div,
+ layerName.c_str());
break;
case kTfLiteBuiltinFloorDiv:
{
- auto layers = AddFloorDivLayer(delegateData, outputTensorInfo);
+ auto layers = AddFloorDivLayer(delegateData, outputTensorInfo, nodeIndex);
multiLayer.AssignValues(layers.first, layers.second);
elementwiseBinaryLayer = &multiLayer;
}
break;
case kTfLiteBuiltinMaximum:
- elementwiseBinaryLayer = delegateData.m_Network->AddElementwiseBinaryLayer(
- armnn::BinaryOperation::Maximum);
+ layerName = GetName(armnn::BinaryOperation::Maximum, nodeIndex);
+ elementwiseBinaryLayer = delegateData.m_Network->AddElementwiseBinaryLayer(armnn::BinaryOperation::Maximum,
+ layerName.c_str());
break;
case kTfLiteBuiltinMinimum:
- elementwiseBinaryLayer = delegateData.m_Network->AddElementwiseBinaryLayer(
- armnn::BinaryOperation::Minimum);
+ layerName = GetName(armnn::BinaryOperation::Minimum, nodeIndex);
+ elementwiseBinaryLayer = delegateData.m_Network->AddElementwiseBinaryLayer(armnn::BinaryOperation::Minimum,
+ layerName.c_str());
break;
case kTfLiteBuiltinMul:
- elementwiseBinaryLayer = delegateData.m_Network->AddElementwiseBinaryLayer(
- armnn::BinaryOperation::Mul);
+ layerName = GetName(armnn::BinaryOperation::Mul, nodeIndex);
+ elementwiseBinaryLayer = delegateData.m_Network->AddElementwiseBinaryLayer(armnn::BinaryOperation::Mul,
+ layerName.c_str());
break;
case kTfLiteBuiltinPow:
- elementwiseBinaryLayer = delegateData.m_Network->AddElementwiseBinaryLayer(
- armnn::BinaryOperation::Power);
+ layerName = GetName(armnn::BinaryOperation::Power, nodeIndex);
+ elementwiseBinaryLayer = delegateData.m_Network->AddElementwiseBinaryLayer(armnn::BinaryOperation::Power,
+ layerName.c_str());
break;
case kTfLiteBuiltinSquaredDifference:
- elementwiseBinaryLayer = delegateData.m_Network->AddElementwiseBinaryLayer(
- armnn::BinaryOperation::SqDiff);
+ layerName = GetName(armnn::BinaryOperation::SqDiff, nodeIndex);
+ elementwiseBinaryLayer = delegateData.m_Network->AddElementwiseBinaryLayer(armnn::BinaryOperation::SqDiff,
+ layerName.c_str());
break;
case kTfLiteBuiltinSub:
- elementwiseBinaryLayer = delegateData.m_Network->AddElementwiseBinaryLayer(
- armnn::BinaryOperation::Sub);
+ layerName = GetName(armnn::BinaryOperation::Sub, nodeIndex);
+ elementwiseBinaryLayer = delegateData.m_Network->AddElementwiseBinaryLayer(armnn::BinaryOperation::Sub,
+ layerName.c_str());
break;
default:
return kTfLiteError;
@@ -462,7 +476,8 @@ TfLiteStatus VisitElementwiseBinaryOperator(DelegateData& delegateData,
auto inputsTensorsProcess = ProcessInputs(elementwiseBinaryLayer,
delegateData,
tfLiteContext,
- tfLiteNode);
+ tfLiteNode,
+ nodeIndex);
if (inputsTensorsProcess == kTfLiteError)
{
return inputsTensorsProcess;
@@ -479,7 +494,8 @@ TfLiteStatus VisitElementwiseBinaryOperator(DelegateData& delegateData,
return kTfLiteOk;
}
// Check and Create Activation
- return FusedActivation(tfLiteContext, tfLiteNode, activationType, elementwiseBinaryLayer, 0, delegateData);
+ return FusedActivation(tfLiteContext, tfLiteNode, activationType, elementwiseBinaryLayer, 0, delegateData,
+ nodeIndex);
}
} // namespace armnnOpaqueDelegate