aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Kelly <mike.kelly@arm.com>2023-06-30 15:18:26 +0100
committermike.kelly <mike.kelly@arm.com>2023-07-03 15:32:04 +0000
commita9ac6ba643e8dc4fee88bd0e7e186f0918080c4b (patch)
tree4e05fbb098b30f3d2c7d3e5b4b83d48c9bdd59ac
parent6d2d4ead359aa02d502f15cfcb7e69c7658bd1ed (diff)
downloadarmnn-a9ac6ba643e8dc4fee88bd0e7e186f0918080c4b.tar.gz
IVGCVSW-7828 Add an Optional TensorInfo to InputSlot
* Updated calls to use the new function From: GetInputSlot(n).GetConnection()->GetTensorInfo(); To: GetInputSlot(n).GetTensorInfo(); * Added UnitTests Signed-off-by: Mike Kelly <mike.kelly@arm.com> Change-Id: I43184cc05e4472011b9347aaa820eb8deb1cd4a0
-rw-r--r--Android.mk1
-rw-r--r--CMakeLists.txt1
-rw-r--r--src/armnn/Graph.cpp5
-rw-r--r--src/armnn/Layer.cpp31
-rw-r--r--src/armnn/Layer.hpp15
-rw-r--r--src/armnn/LoadedNetwork.cpp4
-rw-r--r--src/armnn/layers/AbsLayer.cpp4
-rw-r--r--src/armnn/layers/ActivationLayer.cpp4
-rw-r--r--src/armnn/layers/ArgMinMaxLayer.cpp4
-rw-r--r--src/armnn/layers/BatchMatMulLayer.cpp6
-rw-r--r--src/armnn/layers/BatchNormalizationLayer.cpp4
-rw-r--r--src/armnn/layers/BatchToSpaceNdLayer.cpp4
-rw-r--r--src/armnn/layers/CastLayer.cpp4
-rw-r--r--src/armnn/layers/ChannelShuffleLayer.cpp4
-rw-r--r--src/armnn/layers/ComparisonLayer.cpp4
-rw-r--r--src/armnn/layers/ConcatLayer.cpp11
-rw-r--r--src/armnn/layers/ConstantLayer.cpp2
-rw-r--r--src/armnn/layers/ConvertFp16ToFp32Layer.cpp4
-rw-r--r--src/armnn/layers/ConvertFp32ToFp16Layer.cpp4
-rw-r--r--src/armnn/layers/Convolution2dLayer.cpp10
-rw-r--r--src/armnn/layers/Convolution3dLayer.cpp10
-rw-r--r--src/armnn/layers/DebugLayer.cpp4
-rw-r--r--src/armnn/layers/DepthToSpaceLayer.cpp4
-rw-r--r--src/armnn/layers/DepthwiseConvolution2dLayer.cpp10
-rw-r--r--src/armnn/layers/DequantizeLayer.cpp4
-rw-r--r--src/armnn/layers/DetectionPostProcessLayer.cpp4
-rw-r--r--src/armnn/layers/ElementwiseBaseLayer.cpp4
-rw-r--r--src/armnn/layers/ElementwiseBinaryLayer.cpp4
-rw-r--r--src/armnn/layers/ElementwiseUnaryLayer.cpp4
-rw-r--r--src/armnn/layers/FakeQuantizationLayer.cpp4
-rw-r--r--src/armnn/layers/FillLayer.cpp4
-rw-r--r--src/armnn/layers/FloorLayer.cpp4
-rw-r--r--src/armnn/layers/FullyConnectedLayer.cpp6
-rw-r--r--src/armnn/layers/GatherLayer.cpp6
-rw-r--r--src/armnn/layers/GatherNdLayer.cpp6
-rw-r--r--src/armnn/layers/InstanceNormalizationLayer.cpp4
-rw-r--r--src/armnn/layers/L2NormalizationLayer.cpp4
-rw-r--r--src/armnn/layers/LayerWithParameters.hpp2
-rw-r--r--src/armnn/layers/LogSoftmaxLayer.cpp4
-rw-r--r--src/armnn/layers/LogicalBinaryLayer.cpp6
-rw-r--r--src/armnn/layers/LstmLayer.cpp8
-rw-r--r--src/armnn/layers/MeanLayer.cpp2
-rw-r--r--src/armnn/layers/MemCopyLayer.cpp4
-rw-r--r--src/armnn/layers/MemImportLayer.cpp4
-rw-r--r--src/armnn/layers/MergeLayer.cpp6
-rw-r--r--src/armnn/layers/NormalizationLayer.cpp4
-rw-r--r--src/armnn/layers/PadLayer.cpp4
-rw-r--r--src/armnn/layers/PermuteLayer.cpp4
-rw-r--r--src/armnn/layers/Pooling2dLayer.cpp4
-rw-r--r--src/armnn/layers/Pooling3dLayer.cpp4
-rw-r--r--src/armnn/layers/PreluLayer.cpp6
-rw-r--r--src/armnn/layers/QLstmLayer.cpp8
-rw-r--r--src/armnn/layers/QuantizeLayer.cpp4
-rw-r--r--src/armnn/layers/QuantizedLstmLayer.cpp8
-rw-r--r--src/armnn/layers/ReduceLayer.cpp2
-rw-r--r--src/armnn/layers/ReshapeLayer.cpp2
-rw-r--r--src/armnn/layers/ResizeLayer.cpp4
-rw-r--r--src/armnn/layers/RsqrtLayer.cpp4
-rw-r--r--src/armnn/layers/ShapeLayer.cpp4
-rw-r--r--src/armnn/layers/SliceLayer.cpp4
-rw-r--r--src/armnn/layers/SoftmaxLayer.cpp4
-rw-r--r--src/armnn/layers/SpaceToBatchNdLayer.cpp4
-rw-r--r--src/armnn/layers/SpaceToDepthLayer.cpp4
-rw-r--r--src/armnn/layers/SplitterLayer.cpp6
-rw-r--r--src/armnn/layers/StackLayer.cpp4
-rw-r--r--src/armnn/layers/StridedSliceLayer.cpp4
-rw-r--r--src/armnn/layers/SwitchLayer.cpp6
-rw-r--r--src/armnn/layers/TransposeConvolution2dLayer.cpp4
-rw-r--r--src/armnn/layers/TransposeLayer.cpp4
-rw-r--r--src/armnn/layers/UnidirectionalSequenceLstmLayer.cpp8
-rw-r--r--src/armnn/optimizations/PermuteAndBatchToSpaceAsDepthToSpace.hpp4
-rw-r--r--src/armnn/test/LayerTests.cpp50
-rw-r--r--src/backends/aclCommon/ArmComputeSubgraphUtils.hpp2
-rw-r--r--src/backends/backendsCommon/WorkloadFactory.cpp194
-rw-r--r--src/backends/tosaCommon/TosaMappings.cpp2
75 files changed, 357 insertions, 257 deletions
diff --git a/Android.mk b/Android.mk
index 884624ee63..dd8f262c1e 100644
--- a/Android.mk
+++ b/Android.mk
@@ -436,6 +436,7 @@ LOCAL_SRC_FILES := \
src/armnn/test/GraphTests.cpp \
src/armnn/test/InferOutputTests.cpp \
src/armnn/test/InstrumentTests.cpp \
+ src/armnn/test/LayerTests.cpp \
src/armnnUtils/ModelAccuracyChecker.cpp \
src/armnn/test/ModelAccuracyCheckerTest.cpp \
src/armnn/test/NetworkTests.cpp \
diff --git a/CMakeLists.txt b/CMakeLists.txt
index a4199fe2d4..60fbaaa685 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -577,6 +577,7 @@ if(BUILD_UNIT_TESTS)
src/armnn/test/FlowControl.cpp
src/armnn/test/GraphTests.cpp
src/armnn/test/InstrumentTests.cpp
+ src/armnn/test/LayerTests.cpp
src/armnn/test/InferOutputTests.cpp
src/armnn/test/InferOutputTests.hpp
src/armnn/test/ModelAccuracyCheckerTest.cpp
diff --git a/src/armnn/Graph.cpp b/src/armnn/Graph.cpp
index 6943076ada..fee1da4343 100644
--- a/src/armnn/Graph.cpp
+++ b/src/armnn/Graph.cpp
@@ -52,6 +52,11 @@ Graph::Graph(const Graph& other)
Layer* const thisTgtLayer = otherToClonedMap[&otherTgtLayer];
InputSlot& inputSlot = thisTgtLayer->GetInputSlot(otherInputSlot->GetSlotIndex());
+
+ if (otherInputSlot->IsTensorInfoOverridden())
+ {
+ inputSlot.SetTensorInfo(otherInputSlot->GetTensorInfo());
+ }
outputSlot->Connect(inputSlot);
}
outputSlot->SetTensorInfo(otherOutputSlot.GetTensorInfo());
diff --git a/src/armnn/Layer.cpp b/src/armnn/Layer.cpp
index 3ccce40a19..8d4811ae89 100644
--- a/src/armnn/Layer.cpp
+++ b/src/armnn/Layer.cpp
@@ -1,5 +1,5 @@
//
-// Copyright © 2017 Arm Ltd and Contributors. All rights reserved.
+// Copyright © 2017-2023 Arm Ltd and Contributors. All rights reserved.
// SPDX-License-Identifier: MIT
//
#include "Layer.hpp"
@@ -314,7 +314,7 @@ DataType Layer::GetDataType() const
{
if (GetNumInputSlots() > 0) // Ignore the input layer.
{
- return GetInputSlot(0).GetConnection()->GetTensorInfo().GetDataType();
+ return GetInputSlot(0).GetTensorInfo().GetDataType();
}
return GetOutputSlot(0).GetTensorInfo().GetDataType();
}
@@ -571,4 +571,31 @@ IConnectableLayer& InputSlot::GetOwningIConnectableLayer()
return m_OwningLayer;
}
+void InputSlot::SetTensorInfo(const TensorInfo tensorInfo)
+{
+ m_OverriddenTensorInfo = Optional<TensorInfo>(tensorInfo);
+}
+
+const TensorInfo& InputSlot::GetTensorInfo() const
+{
+ if (m_OverriddenTensorInfo.has_value())
+ {
+ return m_OverriddenTensorInfo.value();
+ }
+ else
+ {
+ return GetConnection()->GetTensorInfo();
+ }
+}
+
+bool InputSlot::IsTensorInfoSet() const
+{
+ return m_OverriddenTensorInfo.has_value() || (GetConnection() && GetConnection()->IsTensorInfoSet());
+}
+
+bool InputSlot::IsTensorInfoOverridden() const
+{
+ return m_OverriddenTensorInfo.has_value();
+}
+
} // namespace armnn
diff --git a/src/armnn/Layer.hpp b/src/armnn/Layer.hpp
index ad6c9b298e..5e097f0fad 100644
--- a/src/armnn/Layer.hpp
+++ b/src/armnn/Layer.hpp
@@ -1,5 +1,5 @@
//
-// Copyright © 2017,2022 Arm Ltd and Contributors. All rights reserved.
+// Copyright © 2017-2023 Arm Ltd and Contributors. All rights reserved.
// SPDX-License-Identifier: MIT
//
#pragma once
@@ -78,9 +78,22 @@ public:
const IOutputSlot* GetConnection() const override;
IOutputSlot* GetConnection() override;
+ /// Sets the TensorInfo for this InputSlot. This can be used to override the TensorInfo and if set will be returned
+ /// instead of the TensorInfo for the Connected OutputSlot.
+ void SetTensorInfo(const TensorInfo tensorInfo);
+ /// Gets the TensorInfo for this InputSlot. If the InputSlot's TensorInfo has not been set then this will get the
+ /// TensorInfo from the Connected TensorInfo.
+ const TensorInfo& GetTensorInfo() const;
+ /// Returns true if this InputSlot either has an overridden TensorInfo for this InputSlot that was set through a
+ /// call to SetTensorInfo() or is Connected to an OutputSlot that has its TensorInfo set.
+ bool IsTensorInfoSet() const;
+ /// Returns true if this InputSlot has an overridden TensorInfo that was set through a call to SetTensorInfo().
+ bool IsTensorInfoOverridden() const;
+
private:
Layer& m_OwningLayer;
OutputSlot* m_Connection;
+ Optional<TensorInfo> m_OverriddenTensorInfo;
const unsigned int m_SlotIndex;
};
diff --git a/src/armnn/LoadedNetwork.cpp b/src/armnn/LoadedNetwork.cpp
index b42874f29d..3f4aa34a5b 100644
--- a/src/armnn/LoadedNetwork.cpp
+++ b/src/armnn/LoadedNetwork.cpp
@@ -1,5 +1,5 @@
//
-// Copyright © 2022 Arm Ltd and Contributors. All rights reserved.
+// Copyright © 2017-2023 Arm Ltd and Contributors. All rights reserved.
// SPDX-License-Identifier: MIT
//
@@ -716,7 +716,7 @@ TensorInfo LoadedNetwork::GetOutputTensorInfo(LayerBindingId layerId) const
ARMNN_ASSERT_MSG(outputLayer->GetInputSlot(0).GetConnection(), "Input slot on Output layer must be connected");
if (outputLayer->GetBindingId() == layerId)
{
- return outputLayer->GetInputSlot(0).GetConnection()->GetTensorInfo();
+ return outputLayer->GetInputSlot(0).GetTensorInfo();
}
}
diff --git a/src/armnn/layers/AbsLayer.cpp b/src/armnn/layers/AbsLayer.cpp
index 072d13ce93..6858b364a6 100644
--- a/src/armnn/layers/AbsLayer.cpp
+++ b/src/armnn/layers/AbsLayer.cpp
@@ -1,5 +1,5 @@
//
-// Copyright © 2017 Arm Ltd and Contributors. All rights reserved.
+// Copyright © 2017,2019-2023 Arm Ltd and Contributors. All rights reserved.
// SPDX-License-Identifier: MIT
//
@@ -40,7 +40,7 @@ void AbsLayer::ValidateTensorShapesFromInputs()
VerifyShapeInferenceType(outputShape, m_ShapeInferenceMethod);
- auto inferredShapes = InferOutputShapes({ GetInputSlot(0).GetConnection()->GetTensorInfo().GetShape() });
+ auto inferredShapes = InferOutputShapes({ GetInputSlot(0).GetTensorInfo().GetShape() });
ARMNN_ASSERT(inferredShapes.size() == 1);
diff --git a/src/armnn/layers/ActivationLayer.cpp b/src/armnn/layers/ActivationLayer.cpp
index eea18d71e4..fe4aaa766f 100644
--- a/src/armnn/layers/ActivationLayer.cpp
+++ b/src/armnn/layers/ActivationLayer.cpp
@@ -1,5 +1,5 @@
//
-// Copyright © 2017 Arm Ltd and Contributors. All rights reserved.
+// Copyright © 2017-2023 Arm Ltd and Contributors. All rights reserved.
// SPDX-License-Identifier: MIT
//
#include "ActivationLayer.hpp"
@@ -38,7 +38,7 @@ void ActivationLayer::ValidateTensorShapesFromInputs()
VerifyShapeInferenceType(outputShape, m_ShapeInferenceMethod);
- auto inferredShapes = InferOutputShapes({ GetInputSlot(0).GetConnection()->GetTensorInfo().GetShape() });
+ auto inferredShapes = InferOutputShapes({ GetInputSlot(0).GetTensorInfo().GetShape() });
ARMNN_ASSERT(inferredShapes.size() == 1);
diff --git a/src/armnn/layers/ArgMinMaxLayer.cpp b/src/armnn/layers/ArgMinMaxLayer.cpp
index 57a6ff12d8..37986572a0 100644
--- a/src/armnn/layers/ArgMinMaxLayer.cpp
+++ b/src/armnn/layers/ArgMinMaxLayer.cpp
@@ -1,5 +1,5 @@
//
-// Copyright © 2017 Arm Ltd and Contributors. All rights reserved.
+// Copyright © 2017,2019-2023 Arm Ltd and Contributors. All rights reserved.
// SPDX-License-Identifier: MIT
//
@@ -79,7 +79,7 @@ void ArgMinMaxLayer::ValidateTensorShapesFromInputs()
VerifyShapeInferenceType(outputShape, m_ShapeInferenceMethod);
- auto inferredShapes = InferOutputShapes({ GetInputSlot(0).GetConnection()->GetTensorInfo().GetShape() });
+ auto inferredShapes = InferOutputShapes({ GetInputSlot(0).GetTensorInfo().GetShape() });
ARMNN_ASSERT(inferredShapes.size() == 1);
diff --git a/src/armnn/layers/BatchMatMulLayer.cpp b/src/armnn/layers/BatchMatMulLayer.cpp
index 0f86b9dc48..8b2629c4ea 100644
--- a/src/armnn/layers/BatchMatMulLayer.cpp
+++ b/src/armnn/layers/BatchMatMulLayer.cpp
@@ -1,5 +1,5 @@
//
-// Copyright © 2022 Arm Ltd and Contributors. All rights reserved.
+// Copyright © 2022-2023 Arm Ltd and Contributors. All rights reserved.
// SPDX-License-Identifier: MIT
//
#include "BatchMatMulLayer.hpp"
@@ -99,8 +99,8 @@ void BatchMatMulLayer::ValidateTensorShapesFromInputs()
VerifyShapeInferenceType(outputShape, m_ShapeInferenceMethod);
auto inferredShapes = InferOutputShapes({
- GetInputSlot(0).GetConnection()->GetTensorInfo().GetShape(),
- GetInputSlot(1).GetConnection()->GetTensorInfo().GetShape() });
+ GetInputSlot(0).GetTensorInfo().GetShape(),
+ GetInputSlot(1).GetTensorInfo().GetShape() });
ARMNN_ASSERT(inferredShapes.size() == 1);
diff --git a/src/armnn/layers/BatchNormalizationLayer.cpp b/src/armnn/layers/BatchNormalizationLayer.cpp
index b5e9f2c413..17463f8d4f 100644
--- a/src/armnn/layers/BatchNormalizationLayer.cpp
+++ b/src/armnn/layers/BatchNormalizationLayer.cpp
@@ -1,5 +1,5 @@
//
-// Copyright © 2017 Arm Ltd and Contributors. All rights reserved.
+// Copyright © 2017-2023 Arm Ltd and Contributors. All rights reserved.
// SPDX-License-Identifier: MIT
//
#include "BatchNormalizationLayer.hpp"
@@ -57,7 +57,7 @@ void BatchNormalizationLayer::ValidateTensorShapesFromInputs()
VerifyShapeInferenceType(outputShape, m_ShapeInferenceMethod);
- auto inferredShapes = InferOutputShapes({ GetInputSlot(0).GetConnection()->GetTensorInfo().GetShape() });
+ auto inferredShapes = InferOutputShapes({ GetInputSlot(0).GetTensorInfo().GetShape() });
ARMNN_ASSERT(inferredShapes.size() == 1);
diff --git a/src/armnn/layers/BatchToSpaceNdLayer.cpp b/src/armnn/layers/BatchToSpaceNdLayer.cpp
index b760b5661c..63817dde16 100644
--- a/src/armnn/layers/BatchToSpaceNdLayer.cpp
+++ b/src/armnn/layers/BatchToSpaceNdLayer.cpp
@@ -1,5 +1,5 @@
//
-// Copyright © 2017,2023 Arm Ltd and Contributors. All rights reserved.
+// Copyright © 2018-2023 Arm Ltd and Contributors. All rights reserved.
// SPDX-License-Identifier: MIT
//
@@ -43,7 +43,7 @@ void BatchToSpaceNdLayer::ValidateTensorShapesFromInputs()
VerifyShapeInferenceType(outputShape, m_ShapeInferenceMethod);
- auto inferredShapes = InferOutputShapes({GetInputSlot(0).GetConnection()->GetTensorInfo().GetShape()});
+ auto inferredShapes = InferOutputShapes({GetInputSlot(0).GetTensorInfo().GetShape()});
ARMNN_ASSERT(inferredShapes.size() == 1);
diff --git a/src/armnn/layers/CastLayer.cpp b/src/armnn/layers/CastLayer.cpp
index efa74c82c3..fc1ab81d4f 100644
--- a/src/armnn/layers/CastLayer.cpp
+++ b/src/armnn/layers/CastLayer.cpp
@@ -1,5 +1,5 @@
//
-// Copyright © 2021 Arm Ltd and Contributors. All rights reserved.
+// Copyright © 2021-2023 Arm Ltd and Contributors. All rights reserved.
// SPDX-License-Identifier: MIT
//
#include "CastLayer.hpp"
@@ -39,7 +39,7 @@ void CastLayer::ValidateTensorShapesFromInputs()
VerifyShapeInferenceType(outputShape, m_ShapeInferenceMethod);
- auto inferredShapes = InferOutputShapes({ GetInputSlot(0).GetConnection()->GetTensorInfo().GetShape() });
+ auto inferredShapes = InferOutputShapes({ GetInputSlot(0).GetTensorInfo().GetShape() });
ARMNN_ASSERT(inferredShapes.size() == 1);
diff --git a/src/armnn/layers/ChannelShuffleLayer.cpp b/src/armnn/layers/ChannelShuffleLayer.cpp
index 33ea70e94a..ce6c0bac11 100644
--- a/src/armnn/layers/ChannelShuffleLayer.cpp
+++ b/src/armnn/layers/ChannelShuffleLayer.cpp
@@ -1,5 +1,5 @@
//
-// Copyright © 2021 Arm Ltd and Contributors. All rights reserved.
+// Copyright © 2021-2023 Arm Ltd and Contributors. All rights reserved.
// SPDX-License-Identifier: MIT
//
@@ -40,7 +40,7 @@ void ChannelShuffleLayer::ValidateTensorShapesFromInputs()
VerifyShapeInferenceType(outputShape, m_ShapeInferenceMethod);
- auto inferredShapes = Layer::InferOutputShapes({GetInputSlot(0).GetConnection()->GetTensorInfo().GetShape() });
+ auto inferredShapes = Layer::InferOutputShapes({GetInputSlot(0).GetTensorInfo().GetShape() });
ARMNN_ASSERT(inferredShapes.size() == 1);
diff --git a/src/armnn/layers/ComparisonLayer.cpp b/src/armnn/layers/ComparisonLayer.cpp
index c097cddf4d..5d18a58f3c 100644
--- a/src/armnn/layers/ComparisonLayer.cpp
+++ b/src/armnn/layers/ComparisonLayer.cpp
@@ -79,8 +79,8 @@ void ComparisonLayer::ValidateTensorShapesFromInputs()
VerifyShapeInferenceType(outputShape, m_ShapeInferenceMethod);
std::vector<TensorShape> inferredShapes = InferOutputShapes({
- GetInputSlot(0).GetConnection()->GetTensorInfo().GetShape(),
- GetInputSlot(1).GetConnection()->GetTensorInfo().GetShape()
+ GetInputSlot(0).GetTensorInfo().GetShape(),
+ GetInputSlot(1).GetTensorInfo().GetShape()
});
ARMNN_ASSERT(inferredShapes.size() == 1);
diff --git a/src/armnn/layers/ConcatLayer.cpp b/src/armnn/layers/ConcatLayer.cpp
index 69660dd04f..7a1b689b2c 100644
--- a/src/armnn/layers/ConcatLayer.cpp
+++ b/src/armnn/layers/ConcatLayer.cpp
@@ -1,5 +1,5 @@
//
-// Copyright © 2017 Arm Ltd and Contributors. All rights reserved.
+// Copyright © 2017-2023 Arm Ltd and Contributors. All rights reserved.
// SPDX-License-Identifier: MIT
//
#include "ConcatLayer.hpp"
@@ -104,14 +104,13 @@ void ConcatLayer::CreateTensors(const TensorHandleFactoryRegistry& registry,
}
}
}
-
// First go through all the input slots and verify that we can sub-tensor all the inputs.
std::vector<std::unique_ptr<ITensorHandle>> subTensors(0);
subTensors.reserve(numInputSlots);
for (unsigned int i = 0; i < numInputSlots; ++i)
{
OutputSlot* slot = currentLayer->GetInputSlot(i).GetConnectedOutputSlot();
- const TensorInfo& info = slot->GetTensorInfo();
+ const TensorInfo& info = currentLayer->GetInputSlot(i).GetTensorInfo();
auto CreateSubTensor = [&]()
{
@@ -121,13 +120,15 @@ void ConcatLayer::CreateTensors(const TensorHandleFactoryRegistry& registry,
// 3) the input does not come from a Constant layer or input layer
// 4) the input is only read by this concat layer
// 5) if concat along x or y (2 innermost dimensions) and the previous layers do not require padding
+ // 6) the input does not have an Overridden TensorInfo
if (slot &&
parentInfo.IsTypeSpaceMatch(info) && //(1)
factoryId == slot->GetTensorHandleFactoryId() && //(2)
slot->GetOwningLayer().GetType() != LayerType::Constant && //(3)
slot->GetOwningLayer().GetType() != LayerType::Input && //(3)
slot->GetNumConnections() == 1 &&
- canUseSubTensorOnXorY) //(5)
+ canUseSubTensorOnXorY && //(5)
+ !currentLayer->GetInputSlot(i).IsTensorInfoOverridden()) //(6)
{
ARMNN_NO_DEPRECATE_WARN_BEGIN
return factory.CreateSubTensorHandle(*parentTensor,
@@ -308,7 +309,7 @@ void ConcatLayer::ValidateTensorShapesFromInputs()
std::vector<TensorShape> inputShapes;
for (unsigned int i = 0; i < GetNumInputSlots(); ++i)
{
- inputShapes.push_back(GetInputSlot(i).GetConnection()->GetTensorInfo().GetShape());
+ inputShapes.push_back(GetInputSlot(i).GetTensorInfo().GetShape());
}
auto inferredShapes = InferOutputShapes(inputShapes);
diff --git a/src/armnn/layers/ConstantLayer.cpp b/src/armnn/layers/ConstantLayer.cpp
index a17bb4fc93..a472c25790 100644
--- a/src/armnn/layers/ConstantLayer.cpp
+++ b/src/armnn/layers/ConstantLayer.cpp
@@ -1,5 +1,5 @@
//
-// Copyright © 2017, 2023 Arm Ltd and Contributors. All rights reserved.
+// Copyright © 2017-2023 Arm Ltd and Contributors. All rights reserved.
// SPDX-License-Identifier: MIT
//
#include "ConstantLayer.hpp"
diff --git a/src/armnn/layers/ConvertFp16ToFp32Layer.cpp b/src/armnn/layers/ConvertFp16ToFp32Layer.cpp
index e3865a6dcb..9fefe2016a 100644
--- a/src/armnn/layers/ConvertFp16ToFp32Layer.cpp
+++ b/src/armnn/layers/ConvertFp16ToFp32Layer.cpp
@@ -1,5 +1,5 @@
//
-// Copyright © 2017 Arm Ltd and Contributors. All rights reserved.
+// Copyright © 2017-2023 Arm Ltd and Contributors. All rights reserved.
// SPDX-License-Identifier: MIT
//
@@ -40,7 +40,7 @@ void ConvertFp16ToFp32Layer::ValidateTensorShapesFromInputs()
VerifyShapeInferenceType(outputShape, m_ShapeInferenceMethod);
- auto inferredShapes = InferOutputShapes({ GetInputSlot(0).GetConnection()->GetTensorInfo().GetShape() });
+ auto inferredShapes = InferOutputShapes({ GetInputSlot(0).GetTensorInfo().GetShape() });
ARMNN_ASSERT(inferredShapes.size() == 1);
diff --git a/src/armnn/layers/ConvertFp32ToFp16Layer.cpp b/src/armnn/layers/ConvertFp32ToFp16Layer.cpp
index 36708c56e0..f1abba32c6 100644
--- a/src/armnn/layers/ConvertFp32ToFp16Layer.cpp
+++ b/src/armnn/layers/ConvertFp32ToFp16Layer.cpp
@@ -1,5 +1,5 @@
//
-// Copyright © 2017 Arm Ltd and Contributors. All rights reserved.
+// Copyright © 2017-2023 Arm Ltd and Contributors. All rights reserved.
// SPDX-License-Identifier: MIT
//
#include "ConvertFp32ToFp16Layer.hpp"
@@ -40,7 +40,7 @@ void ConvertFp32ToFp16Layer::ValidateTensorShapesFromInputs()
VerifyShapeInferenceType(outputShape, m_ShapeInferenceMethod);
- auto inferredShapes = InferOutputShapes({ GetInputSlot(0).GetConnection()->GetTensorInfo().GetShape() });
+ auto inferredShapes = InferOutputShapes({ GetInputSlot(0).GetTensorInfo().GetShape() });
ARMNN_ASSERT(inferredShapes.size() == 1);
diff --git a/src/armnn/layers/Convolution2dLayer.cpp b/src/armnn/layers/Convolution2dLayer.cpp
index f6a5583aad..df971a517d 100644
--- a/src/armnn/layers/Convolution2dLayer.cpp
+++ b/src/armnn/layers/Convolution2dLayer.cpp
@@ -1,5 +1,5 @@
//
-// Copyright © 2017,2022 Arm Ltd and Contributors. All rights reserved.
+// Copyright © 2017-2023 Arm Ltd and Contributors. All rights reserved.
// SPDX-License-Identifier: MIT
//
@@ -31,8 +31,8 @@ void Convolution2dLayer::SerializeLayerParameters(ParameterStringifyFunction& fn
//using DescriptorType = Parameters;
const std::vector<TensorShape>& inputShapes =
{
- GetInputSlot(0).GetConnection()->GetTensorInfo().GetShape(),
- GetInputSlot(1).GetConnection()->GetTensorInfo().GetShape()
+ GetInputSlot(0).GetTensorInfo().GetShape(),
+ GetInputSlot(1).GetTensorInfo().GetShape()
};
const TensorShape filterShape = inputShapes[1];
DataLayoutIndexed dataLayoutIndex(m_Param.m_DataLayout);
@@ -111,8 +111,8 @@ void Convolution2dLayer::ValidateTensorShapesFromInputs()
"Convolution2dLayer: Weights should be connected to input slot 1.");
std::vector<TensorShape> inferredShapes = InferOutputShapes({
- GetInputSlot(0).GetConnection()->GetTensorInfo().GetShape(),
- GetInputSlot(1).GetConnection()->GetTensorInfo().GetShape() });
+ GetInputSlot(0).GetTensorInfo().GetShape(),
+ GetInputSlot(1).GetTensorInfo().GetShape() });
ARMNN_ASSERT(inferredShapes.size() == 1);
diff --git a/src/armnn/layers/Convolution3dLayer.cpp b/src/armnn/layers/Convolution3dLayer.cpp
index b01870af46..2d697beb1f 100644
--- a/src/armnn/layers/Convolution3dLayer.cpp
+++ b/src/armnn/layers/Convolution3dLayer.cpp
@@ -1,5 +1,5 @@
//
-// Copyright © 2021 Arm Ltd and Contributors. All rights reserved.
+// Copyright © 2021-2023 Arm Ltd and Contributors. All rights reserved.
// SPDX-License-Identifier: MIT
//
@@ -24,8 +24,8 @@ void Convolution3dLayer::SerializeLayerParameters(ParameterStringifyFunction& fn
{
const std::vector<TensorShape>& inputShapes =
{
- GetInputSlot(0).GetConnection()->GetTensorInfo().GetShape(),
- GetInputSlot(1).GetConnection()->GetTensorInfo().GetShape(),
+ GetInputSlot(0).GetTensorInfo().GetShape(),
+ GetInputSlot(1).GetTensorInfo().GetShape(),
};
// Conv3d Filter Layout: [D,H,W,I,O]
@@ -116,8 +116,8 @@ void Convolution3dLayer::ValidateTensorShapesFromInputs()
"Convolution3dLayer: Weights should be connected to input slot 1.");
auto inferredShapes = InferOutputShapes({
- GetInputSlot(0).GetConnection()->GetTensorInfo().GetShape(),
- GetInputSlot(1).GetConnection()->GetTensorInfo().GetShape() });
+ GetInputSlot(0).GetTensorInfo().GetShape(),
+ GetInputSlot(1).GetTensorInfo().GetShape() });
ARMNN_ASSERT(inferredShapes.size() == 1);
diff --git a/src/armnn/layers/DebugLayer.cpp b/src/armnn/layers/DebugLayer.cpp
index e1c8572c95..01c1c7be6b 100644
--- a/src/armnn/layers/DebugLayer.cpp
+++ b/src/armnn/layers/DebugLayer.cpp
@@ -1,5 +1,5 @@
//
-// Copyright © 2017 Arm Ltd and Contributors. All rights reserved.
+// Copyright © 2017-2023 Arm Ltd and Contributors. All rights reserved.
// SPDX-License-Identifier: MIT
//
#include "DebugLayer.hpp"
@@ -51,7 +51,7 @@ void DebugLayer::ValidateTensorShapesFromInputs()
VerifyShapeInferenceType(outputShape, m_ShapeInferenceMethod);
std::vector<TensorShape> inferredShapes = InferOutputShapes({
- GetInputSlot(0).GetConnection()->GetTensorInfo().GetShape() });
+ GetInputSlot(0).GetTensorInfo().GetShape() });
ARMNN_ASSERT(inferredShapes.size() == 1);
diff --git a/src/armnn/layers/DepthToSpaceLayer.cpp b/src/armnn/layers/DepthToSpaceLayer.cpp
index 2414b00e2f..b94eccc1ee 100644
--- a/src/armnn/layers/DepthToSpaceLayer.cpp
+++ b/src/armnn/layers/DepthToSpaceLayer.cpp
@@ -1,5 +1,5 @@
//
-// Copyright © 2019 Arm Ltd and Contributors. All rights reserved.
+// Copyright © 2019-2023 Arm Ltd and Contributors. All rights reserved.
// SPDX-License-Identifier: MIT
//
@@ -68,7 +68,7 @@ void DepthToSpaceLayer::ValidateTensorShapesFromInputs()
VerifyShapeInferenceType(outputShape, m_ShapeInferenceMethod);
std::vector<TensorShape> inferredShapes = InferOutputShapes({
- GetInputSlot(0).GetConnection()->GetTensorInfo().GetShape() });
+ GetInputSlot(0).GetTensorInfo().GetShape() });
ARMNN_ASSERT(inferredShapes.size() == 1);
diff --git a/src/armnn/layers/DepthwiseConvolution2dLayer.cpp b/src/armnn/layers/DepthwiseConvolution2dLayer.cpp
index 1e5a998119..4f08b2324e 100644
--- a/src/armnn/layers/DepthwiseConvolution2dLayer.cpp
+++ b/src/armnn/layers/DepthwiseConvolution2dLayer.cpp
@@ -1,5 +1,5 @@
//
-// Copyright © 2017,2022 Arm Ltd and Contributors. All rights reserved.
+// Copyright © 2017-2023 Arm Ltd and Contributors. All rights reserved.
// SPDX-License-Identifier: MIT
//
@@ -30,8 +30,8 @@ void DepthwiseConvolution2dLayer::SerializeLayerParameters(ParameterStringifyFun
{
const std::vector<TensorShape>& inputShapes =
{
- GetInputSlot(0).GetConnection()->GetTensorInfo().GetShape(),
- GetInputSlot(1).GetConnection()->GetTensorInfo().GetShape()
+ GetInputSlot(0).GetTensorInfo().GetShape(),
+ GetInputSlot(1).GetTensorInfo().GetShape()
};
const TensorShape filterShape = inputShapes[1];
unsigned int inputChannels = filterShape[1];
@@ -114,8 +114,8 @@ void DepthwiseConvolution2dLayer::ValidateTensorShapesFromInputs()
"DepthwiseConvolution2dLayer: Weights data should not be null.");
auto inferredShapes = InferOutputShapes({
- GetInputSlot(0).GetConnection()->GetTensorInfo().GetShape(),
- GetInputSlot(1).GetConnection()->GetTensorInfo().GetShape()
+ GetInputSlot(0).GetTensorInfo().GetShape(),
+ GetInputSlot(1).GetTensorInfo().GetShape()
});
ARMNN_ASSERT(inferredShapes.size() == 1);
diff --git a/src/armnn/layers/DequantizeLayer.cpp b/src/armnn/layers/DequantizeLayer.cpp
index 7bc03f4cde..b398cf6e0d 100644
--- a/src/armnn/layers/DequantizeLayer.cpp
+++ b/src/armnn/layers/DequantizeLayer.cpp
@@ -1,5 +1,5 @@
//
-// Copyright © 2017 Arm Ltd and Contributors. All rights reserved.
+// Copyright © 2017,2019-2023 Arm Ltd and Contributors. All rights reserved.
// SPDX-License-Identifier: MIT
//
#include "DequantizeLayer.hpp"
@@ -39,7 +39,7 @@ void DequantizeLayer::ValidateTensorShapesFromInputs()
VerifyShapeInferenceType(outputShape, m_ShapeInferenceMethod);
std::vector<TensorShape> inferredShapes = InferOutputShapes({
- GetInputSlot(0).GetConnection()->GetTensorInfo().GetShape() });
+ GetInputSlot(0).GetTensorInfo().GetShape() });
ARMNN_ASSERT(inferredShapes.size() == 1);
diff --git a/src/armnn/layers/DetectionPostProcessLayer.cpp b/src/armnn/layers/DetectionPostProcessLayer.cpp
index 27e459b0ce..6bddf51551 100644
--- a/src/armnn/layers/DetectionPostProcessLayer.cpp
+++ b/src/armnn/layers/DetectionPostProcessLayer.cpp
@@ -50,8 +50,8 @@ void DetectionPostProcessLayer::ValidateTensorShapesFromInputs()
ARMNN_ASSERT_MSG(GetNumOutputSlots() == 4, "DetectionPostProcessLayer: The layer should return 4 outputs.");
std::vector<TensorShape> inferredShapes = InferOutputShapes(
- { GetInputSlot(0).GetConnection()->GetTensorInfo().GetShape(),
- GetInputSlot(1).GetConnection()->GetTensorInfo().GetShape() });
+ { GetInputSlot(0).GetTensorInfo().GetShape(),
+ GetInputSlot(1).GetTensorInfo().GetShape() });
ARMNN_ASSERT(inferredShapes.size() == 4);
ARMNN_ASSERT(inferredShapes[0].GetDimensionality() == Dimensionality::Specified);
diff --git a/src/armnn/layers/ElementwiseBaseLayer.cpp b/src/armnn/layers/ElementwiseBaseLayer.cpp
index 87fddfea79..3cbddfa5db 100644
--- a/src/armnn/layers/ElementwiseBaseLayer.cpp
+++ b/src/armnn/layers/ElementwiseBaseLayer.cpp
@@ -66,8 +66,8 @@ void ElementwiseBaseLayer::ValidateTensorShapesFromInputs()
VerifyShapeInferenceType(outputShape, m_ShapeInferenceMethod);
- auto inferredShapes = InferOutputShapes({ GetInputSlot(0).GetConnection()->GetTensorInfo().GetShape(),
- GetInputSlot(1).GetConnection()->GetTensorInfo().GetShape() });
+ auto inferredShapes = InferOutputShapes({ GetInputSlot(0).GetTensorInfo().GetShape(),
+ GetInputSlot(1).GetTensorInfo().GetShape() });
ARMNN_ASSERT(inferredShapes.size() == 1);
diff --git a/src/armnn/layers/ElementwiseBinaryLayer.cpp b/src/armnn/layers/ElementwiseBinaryLayer.cpp
index ae1813f33a..67619fc463 100644
--- a/src/armnn/layers/ElementwiseBinaryLayer.cpp
+++ b/src/armnn/layers/ElementwiseBinaryLayer.cpp
@@ -74,8 +74,8 @@ void ElementwiseBinaryLayer::ValidateTensorShapesFromInputs()
VerifyShapeInferenceType(outputShape, m_ShapeInferenceMethod);
- auto inferredShapes = InferOutputShapes({ GetInputSlot(0).GetConnection()->GetTensorInfo().GetShape(),
- GetInputSlot(1).GetConnection()->GetTensorInfo().GetShape() });
+ auto inferredShapes = InferOutputShapes({ GetInputSlot(0).GetTensorInfo().GetShape(),
+ GetInputSlot(1).GetTensorInfo().GetShape() });
ARMNN_ASSERT(inferredShapes.size() == 1);
diff --git a/src/armnn/layers/ElementwiseUnaryLayer.cpp b/src/armnn/layers/ElementwiseUnaryLayer.cpp
index a6c1f16ed3..c648f9b863 100644
--- a/src/armnn/layers/ElementwiseUnaryLayer.cpp
+++ b/src/armnn/layers/ElementwiseUnaryLayer.cpp
@@ -1,5 +1,5 @@
//
-// Copyright © 2019 Arm Ltd and Contributors. All rights reserved.
+// Copyright © 2020-2023 Arm Ltd and Contributors. All rights reserved.
// SPDX-License-Identifier: MIT
//
@@ -49,7 +49,7 @@ void ElementwiseUnaryLayer::ValidateTensorShapesFromInputs()
VerifyShapeInferenceType(outputShape, m_ShapeInferenceMethod);
std::vector<TensorShape> inferredShapes = InferOutputShapes({
- GetInputSlot(0).GetConnection()->GetTensorInfo().GetShape()});
+ GetInputSlot(0).GetTensorInfo().GetShape()});
ARMNN_ASSERT(inferredShapes.size() == 1);
ValidateAndCopyShape(outputShape, inferredShapes[0], m_ShapeInferenceMethod, GetLayerTypeAsCString(GetType()));
diff --git a/src/armnn/layers/FakeQuantizationLayer.cpp b/src/armnn/layers/FakeQuantizationLayer.cpp
index 5c6ac18cf7..a612b5a4ec 100644
--- a/src/armnn/layers/FakeQuantizationLayer.cpp
+++ b/src/armnn/layers/FakeQuantizationLayer.cpp
@@ -1,5 +1,5 @@
//
-// Copyright © 2017 Arm Ltd and Contributors. All rights reserved.
+// Copyright © 2017-2023 Arm Ltd and Contributors. All rights reserved.
// SPDX-License-Identifier: MIT
//
#include "FakeQuantizationLayer.hpp"
@@ -39,7 +39,7 @@ void FakeQuantizationLayer::ValidateTensorShapesFromInputs()
VerifyShapeInferenceType(outputShape, m_ShapeInferenceMethod);
- auto inferredShapes = InferOutputShapes({ GetInputSlot(0).GetConnection()->GetTensorInfo().GetShape() });
+ auto inferredShapes = InferOutputShapes({ GetInputSlot(0).GetTensorInfo().GetShape() });
ARMNN_ASSERT(inferredShapes.size() == 1);
diff --git a/src/armnn/layers/FillLayer.cpp b/src/armnn/layers/FillLayer.cpp
index 0822c3c83e..af01b99847 100644
--- a/src/armnn/layers/FillLayer.cpp
+++ b/src/armnn/layers/FillLayer.cpp
@@ -1,5 +1,5 @@
//
-// Copyright © 2020 Arm Ltd and Contributors. All rights reserved.
+// Copyright © 2020-2023 Arm Ltd and Contributors. All rights reserved.
// SPDX-License-Identifier: MIT
//
#include "FillLayer.hpp"
@@ -39,7 +39,7 @@ void FillLayer::ValidateTensorShapesFromInputs()
VerifyShapeInferenceType(outputShape, m_ShapeInferenceMethod);
- auto inferredShapes = InferOutputShapes({ GetInputSlot(0).GetConnection()->GetTensorInfo().GetShape() });
+ auto inferredShapes = InferOutputShapes({ GetInputSlot(0).GetTensorInfo().GetShape() });
ARMNN_ASSERT(inferredShapes.size() == 1);
diff --git a/src/armnn/layers/FloorLayer.cpp b/src/armnn/layers/FloorLayer.cpp
index 471b575eb0..2db8d91b4b 100644
--- a/src/armnn/layers/FloorLayer.cpp
+++ b/src/armnn/layers/FloorLayer.cpp
@@ -1,5 +1,5 @@
//
-// Copyright © 2017 Arm Ltd and Contributors. All rights reserved.
+// Copyright © 2017-2023 Arm Ltd and Contributors. All rights reserved.
// SPDX-License-Identifier: MIT
//
#include "FloorLayer.hpp"
@@ -39,7 +39,7 @@ void FloorLayer::ValidateTensorShapesFromInputs()
VerifyShapeInferenceType(outputShape, m_ShapeInferenceMethod);
- auto inferredShapes = InferOutputShapes({ GetInputSlot(0).GetConnection()->GetTensorInfo().GetShape() });
+ auto inferredShapes = InferOutputShapes({ GetInputSlot(0).GetTensorInfo().GetShape() });
ARMNN_ASSERT(inferredShapes.size() == 1);
ValidateAndCopyShape(outputShape, inferredShapes[0], m_ShapeInferenceMethod, "FloorLayer");
diff --git a/src/armnn/layers/FullyConnectedLayer.cpp b/src/armnn/layers/FullyConnectedLayer.cpp
index f86f58443f..87a8adacaa 100644
--- a/src/armnn/layers/FullyConnectedLayer.cpp
+++ b/src/armnn/layers/FullyConnectedLayer.cpp
@@ -1,5 +1,5 @@
//
-// Copyright © 2017,2022 Arm Ltd and Contributors. All rights reserved.
+// Copyright © 2017-2023 Arm Ltd and Contributors. All rights reserved.
// SPDX-License-Identifier: MIT
//
#include "FullyConnectedLayer.hpp"
@@ -52,8 +52,8 @@ void FullyConnectedLayer::ValidateTensorShapesFromInputs()
VerifyShapeInferenceType(outputShape, m_ShapeInferenceMethod);
std::vector<TensorShape> inferredShapes = InferOutputShapes(
- {GetInputSlot(0).GetConnection()->GetTensorInfo().GetShape(),
- GetInputSlot(1).GetConnection()->GetTensorInfo().GetShape()});
+ {GetInputSlot(0).GetTensorInfo().GetShape(),
+ GetInputSlot(1).GetTensorInfo().GetShape()});
ARMNN_ASSERT(inferredShapes.size() == 1);
ARMNN_ASSERT(inferredShapes[0].GetDimensionality() == Dimensionality::Specified);
diff --git a/src/armnn/layers/GatherLayer.cpp b/src/armnn/layers/GatherLayer.cpp
index 252dfd2f45..ae5ecd6cb6 100644
--- a/src/armnn/layers/GatherLayer.cpp
+++ b/src/armnn/layers/GatherLayer.cpp
@@ -1,5 +1,5 @@
//
-// Copyright © 2017 Arm Ltd and Contributors. All rights reserved.
+// Copyright © 2017,2019-2023 Arm Ltd and Contributors. All rights reserved.
// SPDX-License-Identifier: MIT
//
@@ -80,8 +80,8 @@ void GatherLayer::ValidateTensorShapesFromInputs()
VerifyShapeInferenceType(outputShape, m_ShapeInferenceMethod);
std::vector<TensorShape> inferredShapes = InferOutputShapes(
- {GetInputSlot(0).GetConnection()->GetTensorInfo().GetShape(),
- GetInputSlot(1).GetConnection()->GetTensorInfo().GetShape()});
+ {GetInputSlot(0).GetTensorInfo().GetShape(),
+ GetInputSlot(1).GetTensorInfo().GetShape()});
ARMNN_ASSERT(inferredShapes.size() == 1);
ARMNN_ASSERT(inferredShapes[0].GetDimensionality() == Dimensionality::Specified ||
inferredShapes[0].GetDimensionality() == Dimensionality::Scalar);
diff --git a/src/armnn/layers/GatherNdLayer.cpp b/src/armnn/layers/GatherNdLayer.cpp
index 036b3cfa86..0f06946634 100644
--- a/src/armnn/layers/GatherNdLayer.cpp
+++ b/src/armnn/layers/GatherNdLayer.cpp
@@ -1,5 +1,5 @@
//
-// Copyright © 2022 Arm Ltd and Contributors. All rights reserved.
+// Copyright © 2022-2023 Arm Ltd and Contributors. All rights reserved.
// SPDX-License-Identifier: MIT
//
@@ -84,8 +84,8 @@ void GatherNdLayer::ValidateTensorShapesFromInputs()
VerifyShapeInferenceType(outputShape, m_ShapeInferenceMethod);
std::vector<TensorShape> inferredShapes = InferOutputShapes(
- {GetInputSlot(0).GetConnection()->GetTensorInfo().GetShape(),
- GetInputSlot(1).GetConnection()->GetTensorInfo().GetShape()});
+ {GetInputSlot(0).GetTensorInfo().GetShape(),
+ GetInputSlot(1).GetTensorInfo().GetShape()});
ARMNN_ASSERT(inferredShapes.size() == 1);
ARMNN_ASSERT(inferredShapes[0].GetDimensionality() == Dimensionality::Specified ||
inferredShapes[0].GetDimensionality() == Dimensionality::Scalar);
diff --git a/src/armnn/layers/InstanceNormalizationLayer.cpp b/src/armnn/layers/InstanceNormalizationLayer.cpp
index 10543c6aa1..db6cd206cc 100644
--- a/src/armnn/layers/InstanceNormalizationLayer.cpp
+++ b/src/armnn/layers/InstanceNormalizationLayer.cpp
@@ -1,5 +1,5 @@
//
-// Copyright © 2019 Arm Ltd and Contributors. All rights reserved.
+// Copyright © 2019-2023 Arm Ltd and Contributors. All rights reserved.
// SPDX-License-Identifier: MIT
//
#include "InstanceNormalizationLayer.hpp"
@@ -39,7 +39,7 @@ void InstanceNormalizationLayer::ValidateTensorShapesFromInputs()
VerifyShapeInferenceType(outputShape, m_ShapeInferenceMethod);
- auto inferredShapes = InferOutputShapes({ GetInputSlot(0).GetConnection()->GetTensorInfo().GetShape() });
+ auto inferredShapes = InferOutputShapes({ GetInputSlot(0).GetTensorInfo().GetShape() });
ARMNN_ASSERT(inferredShapes.size() == 1);
diff --git a/src/armnn/layers/L2NormalizationLayer.cpp b/src/armnn/layers/L2NormalizationLayer.cpp
index 8ea242be61..2d268dddef 100644
--- a/src/armnn/layers/L2NormalizationLayer.cpp
+++ b/src/armnn/layers/L2NormalizationLayer.cpp
@@ -1,5 +1,5 @@
//
-// Copyright © 2017 Arm Ltd and Contributors. All rights reserved.
+// Copyright © 2017-2023 Arm Ltd and Contributors. All rights reserved.
// SPDX-License-Identifier: MIT
//
#include "L2NormalizationLayer.hpp"
@@ -39,7 +39,7 @@ void L2NormalizationLayer::ValidateTensorShapesFromInputs()
VerifyShapeInferenceType(outputShape, m_ShapeInferenceMethod);
- auto inferredShapes = InferOutputShapes({ GetInputSlot(0).GetConnection()->GetTensorInfo().GetShape() });
+ auto inferredShapes = InferOutputShapes({ GetInputSlot(0).GetTensorInfo().GetShape() });
ARMNN_ASSERT(inferredShapes.size() == 1);
diff --git a/src/armnn/layers/LayerWithParameters.hpp b/src/armnn/layers/LayerWithParameters.hpp
index 0a1dbf363c..4e7cd45125 100644
--- a/src/armnn/layers/LayerWithParameters.hpp
+++ b/src/armnn/layers/LayerWithParameters.hpp
@@ -61,7 +61,7 @@ protected:
Layer::ImmutableConstantTensors tensors;
for (unsigned int i = 0; i < GetNumInputSlots(); ++i)
{
- if (GetInputSlot(i).GetConnection() && GetInputSlot(i).GetConnection()->GetTensorInfo().IsConstant())
+ if (GetInputSlot(i).GetConnection() && GetInputSlot(i).GetTensorInfo().IsConstant())
{
auto &inputLayer = GetInputSlot(i).GetConnectedOutputSlot()->GetOwningLayer();
if (inputLayer.GetType() == armnn::LayerType::Constant)
diff --git a/src/armnn/layers/LogSoftmaxLayer.cpp b/src/armnn/layers/LogSoftmaxLayer.cpp
index 0698b70638..872d42297f 100644
--- a/src/armnn/layers/LogSoftmaxLayer.cpp
+++ b/src/armnn/layers/LogSoftmaxLayer.cpp
@@ -1,5 +1,5 @@
//
-// Copyright © 2019 Arm Ltd and Contributors. All rights reserved.
+// Copyright © 2019-2023 Arm Ltd and Contributors. All rights reserved.
// SPDX-License-Identifier: MIT
//
@@ -39,7 +39,7 @@ void LogSoftmaxLayer::ValidateTensorShapesFromInputs()
VerifyShapeInferenceType(outputShape, m_ShapeInferenceMethod);
- auto inferredShapes = InferOutputShapes({ GetInputSlot(0).GetConnection()->GetTensorInfo().GetShape() });
+ auto inferredShapes = InferOutputShapes({ GetInputSlot(0).GetTensorInfo().GetShape() });
ARMNN_ASSERT(inferredShapes.size() == 1);
ValidateAndCopyShape(outputShape, inferredShapes[0], m_ShapeInferenceMethod, "LogSoftmaxLayer");
diff --git a/src/armnn/layers/LogicalBinaryLayer.cpp b/src/armnn/layers/LogicalBinaryLayer.cpp
index 736a0c27ce..84a6e8e812 100644
--- a/src/armnn/layers/LogicalBinaryLayer.cpp
+++ b/src/armnn/layers/LogicalBinaryLayer.cpp
@@ -1,5 +1,5 @@
//
-// Copyright © 2020 Arm Ltd and Contributors. All rights reserved.
+// Copyright © 2020-2023 Arm Ltd and Contributors. All rights reserved.
// SPDX-License-Identifier: MIT
//
@@ -64,8 +64,8 @@ void LogicalBinaryLayer::ValidateTensorShapesFromInputs()
VerifyShapeInferenceType(outputShape, m_ShapeInferenceMethod);
std::vector<TensorShape> inferredShapes = InferOutputShapes({
- GetInputSlot(0).GetConnection()->GetTensorInfo().GetShape(),
- GetInputSlot(1).GetConnection()->GetTensorInfo().GetShape()
+ GetInputSlot(0).GetTensorInfo().GetShape(),
+ GetInputSlot(1).GetTensorInfo().GetShape()
});
ARMNN_ASSERT(inferredShapes.size() == 1);
diff --git a/src/armnn/layers/LstmLayer.cpp b/src/armnn/layers/LstmLayer.cpp
index 2c9604396b..0e6f3d882b 100644
--- a/src/armnn/layers/LstmLayer.cpp
+++ b/src/armnn/layers/LstmLayer.cpp
@@ -1,5 +1,5 @@
//
-// Copyright © 2017 Arm Ltd and Contributors. All rights reserved.
+// Copyright © 2017-2023 Arm Ltd and Contributors. All rights reserved.
// SPDX-License-Identifier: MIT
//
#include "LstmLayer.hpp"
@@ -174,9 +174,9 @@ void LstmLayer::ValidateTensorShapesFromInputs()
VerifyShapeInferenceType(outputShape, m_ShapeInferenceMethod);
auto inferredShapes = InferOutputShapes( {
- GetInputSlot(0).GetConnection()->GetTensorInfo().GetShape(),
- GetInputSlot(1).GetConnection()->GetTensorInfo().GetShape(),
- GetInputSlot(2).GetConnection()->GetTensorInfo().GetShape()
+ GetInputSlot(0).GetTensorInfo().GetShape(),
+ GetInputSlot(1).GetTensorInfo().GetShape(),
+ GetInputSlot(2).GetTensorInfo().GetShape()
});
ARMNN_ASSERT(inferredShapes.size() == 4);
diff --git a/src/armnn/layers/MeanLayer.cpp b/src/armnn/layers/MeanLayer.cpp
index a6f721b076..bd49f509a0 100644
--- a/src/armnn/layers/MeanLayer.cpp
+++ b/src/armnn/layers/MeanLayer.cpp
@@ -50,7 +50,7 @@ void MeanLayer::ValidateTensorShapesFromInputs()
VerifyShapeInferenceType(outputShape, m_ShapeInferenceMethod);
std::vector<TensorShape> inferredShapes = InferOutputShapes(
- { GetInputSlot(0).GetConnection()->GetTensorInfo().GetShape() });
+ { GetInputSlot(0).GetTensorInfo().GetShape() });
ARMNN_ASSERT(inferredShapes.size() == 1);
ARMNN_ASSERT(inferredShapes[0].GetDimensionality() == Dimensionality::Specified);
diff --git a/src/armnn/layers/MemCopyLayer.cpp b/src/armnn/layers/MemCopyLayer.cpp
index 0443c75675..6dd203448d 100644
--- a/src/armnn/layers/MemCopyLayer.cpp
+++ b/src/armnn/layers/MemCopyLayer.cpp
@@ -1,5 +1,5 @@
//
-// Copyright © 2017 Arm Ltd and Contributors. All rights reserved.
+// Copyright © 2017-2023 Arm Ltd and Contributors. All rights reserved.
// SPDX-License-Identifier: MIT
//
#include "MemCopyLayer.hpp"
@@ -42,7 +42,7 @@ void MemCopyLayer::ValidateTensorShapesFromInputs()
VerifyShapeInferenceType(outputShape, m_ShapeInferenceMethod);
- auto inferredShapes = InferOutputShapes({ GetInputSlot(0).GetConnection()->GetTensorInfo().GetShape() });
+ auto inferredShapes = InferOutputShapes({ GetInputSlot(0).GetTensorInfo().GetShape() });
ARMNN_ASSERT(inferredShapes.size() == 1);
diff --git a/src/armnn/layers/MemImportLayer.cpp b/src/armnn/layers/MemImportLayer.cpp
index 98b012901f..a1c92f676e 100644
--- a/src/armnn/layers/MemImportLayer.cpp
+++ b/src/armnn/layers/MemImportLayer.cpp
@@ -1,5 +1,5 @@
//
-// Copyright © 2017 Arm Ltd and Contributors. All rights reserved.
+// Copyright © 2019-2023 Arm Ltd and Contributors. All rights reserved.
// SPDX-License-Identifier: MIT
//
#include "MemImportLayer.hpp"
@@ -42,7 +42,7 @@ void MemImportLayer::ValidateTensorShapesFromInputs()
VerifyShapeInferenceType(outputShape, m_ShapeInferenceMethod);
- auto inferredShapes = InferOutputShapes({ GetInputSlot(0).GetConnection()->GetTensorInfo().GetShape() });
+ auto inferredShapes = InferOutputShapes({ GetInputSlot(0).GetTensorInfo().GetShape() });
ARMNN_ASSERT(inferredShapes.size() == 1);
diff --git a/src/armnn/layers/MergeLayer.cpp b/src/armnn/layers/MergeLayer.cpp
index 94a0c1033d..a3b098ae00 100644
--- a/src/armnn/layers/MergeLayer.cpp
+++ b/src/armnn/layers/MergeLayer.cpp
@@ -1,5 +1,5 @@
//
-// Copyright © 2017 Arm Ltd and Contributors. All rights reserved.
+// Copyright © 2019-2023 Arm Ltd and Contributors. All rights reserved.
// SPDX-License-Identifier: MIT
//
#include "MergeLayer.hpp"
@@ -36,8 +36,8 @@ void MergeLayer::ValidateTensorShapesFromInputs()
VerifyShapeInferenceType(outputShape, m_ShapeInferenceMethod);
std::vector<TensorShape> inferredShapes = InferOutputShapes({
- GetInputSlot(0).GetConnection()->GetTensorInfo().GetShape(),
- GetInputSlot(1).GetConnection()->GetTensorInfo().GetShape(),
+ GetInputSlot(0).GetTensorInfo().GetShape(),
+ GetInputSlot(1).GetTensorInfo().GetShape(),
});
ARMNN_ASSERT(inferredShapes.size() == 1);
diff --git a/src/armnn/layers/NormalizationLayer.cpp b/src/armnn/layers/NormalizationLayer.cpp
index 372cd7637a..24b6788ee6 100644
--- a/src/armnn/layers/NormalizationLayer.cpp
+++ b/src/armnn/layers/NormalizationLayer.cpp
@@ -1,5 +1,5 @@
//
-// Copyright © 2017 Arm Ltd and Contributors. All rights reserved.
+// Copyright © 2017-2023 Arm Ltd and Contributors. All rights reserved.
// SPDX-License-Identifier: MIT
//
#include "NormalizationLayer.hpp"
@@ -39,7 +39,7 @@ void NormalizationLayer::ValidateTensorShapesFromInputs()
VerifyShapeInferenceType(outputShape, m_ShapeInferenceMethod);
- auto inferredShapes = InferOutputShapes({ GetInputSlot(0).GetConnection()->GetTensorInfo().GetShape() });
+ auto inferredShapes = InferOutputShapes({ GetInputSlot(0).GetTensorInfo().GetShape() });
ARMNN_ASSERT(inferredShapes.size() == 1);
diff --git a/src/armnn/layers/PadLayer.cpp b/src/armnn/layers/PadLayer.cpp
index ce63d7be51..0024ba5541 100644
--- a/src/armnn/layers/PadLayer.cpp
+++ b/src/armnn/layers/PadLayer.cpp
@@ -1,5 +1,5 @@
//
-// Copyright © 2017 Arm Ltd and Contributors. All rights reserved.
+// Copyright © 2017-2023 Arm Ltd and Contributors. All rights reserved.
// SPDX-License-Identifier: MIT
//
@@ -66,7 +66,7 @@ void PadLayer::ValidateTensorShapesFromInputs()
VerifyShapeInferenceType(outputShape, m_ShapeInferenceMethod);
- auto inferredShapes = InferOutputShapes({ GetInputSlot(0).GetConnection()->GetTensorInfo().GetShape() });
+ auto inferredShapes = InferOutputShapes({ GetInputSlot(0).GetTensorInfo().GetShape() });
ARMNN_ASSERT(inferredShapes.size() == 1);
diff --git a/src/armnn/layers/PermuteLayer.cpp b/src/armnn/layers/PermuteLayer.cpp
index 16dc4d6713..f8803a167e 100644
--- a/src/armnn/layers/PermuteLayer.cpp
+++ b/src/armnn/layers/PermuteLayer.cpp
@@ -1,5 +1,5 @@
//
-// Copyright © 2017 Arm Ltd and Contributors. All rights reserved.
+// Copyright © 2017-2023 Arm Ltd and Contributors. All rights reserved.
// SPDX-License-Identifier: MIT
//
@@ -50,7 +50,7 @@ void PermuteLayer::ValidateTensorShapesFromInputs()
VerifyShapeInferenceType(outputShape, m_ShapeInferenceMethod);
- auto inferredShapes = InferOutputShapes({ GetInputSlot(0).GetConnection()->GetTensorInfo().GetShape() });
+ auto inferredShapes = InferOutputShapes({ GetInputSlot(0).GetTensorInfo().GetShape() });
ARMNN_ASSERT(inferredShapes.size() == 1);
diff --git a/src/armnn/layers/Pooling2dLayer.cpp b/src/armnn/layers/Pooling2dLayer.cpp
index 34deed2a30..e423b8bf38 100644
--- a/src/armnn/layers/Pooling2dLayer.cpp
+++ b/src/armnn/layers/Pooling2dLayer.cpp
@@ -1,5 +1,5 @@
//
-// Copyright © 2017 Arm Ltd and Contributors. All rights reserved.
+// Copyright © 2017-2023 Arm Ltd and Contributors. All rights reserved.
// SPDX-License-Identifier: MIT
//
@@ -110,7 +110,7 @@ void Pooling2dLayer::ValidateTensorShapesFromInputs()
VerifyShapeInferenceType(outputShape, m_ShapeInferenceMethod);
- auto inferredShapes = InferOutputShapes({ GetInputSlot(0).GetConnection()->GetTensorInfo().GetShape() });
+ auto inferredShapes = InferOutputShapes({ GetInputSlot(0).GetTensorInfo().GetShape() });
ARMNN_ASSERT(inferredShapes.size() == 1);
diff --git a/src/armnn/layers/Pooling3dLayer.cpp b/src/armnn/layers/Pooling3dLayer.cpp
index fe92f62822..ec1ec80f0e 100644
--- a/src/armnn/layers/Pooling3dLayer.cpp
+++ b/src/armnn/layers/Pooling3dLayer.cpp
@@ -1,5 +1,5 @@
//
-// Copyright © 2021 Arm Ltd and Contributors. All rights reserved.
+// Copyright © 2021-2023 Arm Ltd and Contributors. All rights reserved.
// SPDX-License-Identifier: MIT
//
@@ -114,7 +114,7 @@ void Pooling3dLayer::ValidateTensorShapesFromInputs()
VerifyShapeInferenceType(outputShape, m_ShapeInferenceMethod);
- auto inferredShapes = InferOutputShapes({ GetInputSlot(0).GetConnection()->GetTensorInfo().GetShape() });
+ auto inferredShapes = InferOutputShapes({ GetInputSlot(0).GetTensorInfo().GetShape() });
ARMNN_ASSERT(inferredShapes.size() == 1);
diff --git a/src/armnn/layers/PreluLayer.cpp b/src/armnn/layers/PreluLayer.cpp
index e6ab0d8b75..a302640434 100644
--- a/src/armnn/layers/PreluLayer.cpp
+++ b/src/armnn/layers/PreluLayer.cpp
@@ -1,5 +1,5 @@
//
-// Copyright © 2017 Arm Ltd and Contributors. All rights reserved.
+// Copyright © 2017,2019-2023 Arm Ltd and Contributors. All rights reserved.
// SPDX-License-Identifier: MIT
//
@@ -107,8 +107,8 @@ void PreluLayer::ValidateTensorShapesFromInputs()
std::vector<TensorShape> inferredShapes = InferOutputShapes(
{
- GetInputSlot(0).GetConnection()->GetTensorInfo().GetShape(),
- GetInputSlot(1).GetConnection()->GetTensorInfo().GetShape()
+ GetInputSlot(0).GetTensorInfo().GetShape(),
+ GetInputSlot(1).GetTensorInfo().GetShape()
});
ARMNN_ASSERT(inferredShapes.size() == 1);
diff --git a/src/armnn/layers/QLstmLayer.cpp b/src/armnn/layers/QLstmLayer.cpp
index bfdbe16155..eeb01db51d 100644
--- a/src/armnn/layers/QLstmLayer.cpp
+++ b/src/armnn/layers/QLstmLayer.cpp
@@ -1,5 +1,5 @@
//
-// Copyright © 2020 Arm Ltd and Contributors. All rights reserved.
+// Copyright © 2020-2023 Arm Ltd and Contributors. All rights reserved.
// SPDX-License-Identifier: MIT
//
#include "QLstmLayer.hpp"
@@ -177,9 +177,9 @@ void QLstmLayer::ValidateTensorShapesFromInputs()
auto inferredShapes = InferOutputShapes(
{
- GetInputSlot(0).GetConnection()->GetTensorInfo().GetShape(), // input
- GetInputSlot(1).GetConnection()->GetTensorInfo().GetShape(), // previousOutputIn
- GetInputSlot(2).GetConnection()->GetTensorInfo().GetShape() // previousCellStateIn
+ GetInputSlot(0).GetTensorInfo().GetShape(), // input
+ GetInputSlot(1).GetTensorInfo().GetShape(), // previousOutputIn
+ GetInputSlot(2).GetTensorInfo().GetShape() // previousCellStateIn
});
ARMNN_ASSERT(inferredShapes.size() == 3);
diff --git a/src/armnn/layers/QuantizeLayer.cpp b/src/armnn/layers/QuantizeLayer.cpp
index 3ad286e64c..03fb208b3e 100644
--- a/src/armnn/layers/QuantizeLayer.cpp
+++ b/src/armnn/layers/QuantizeLayer.cpp
@@ -1,5 +1,5 @@
//
-// Copyright © 2017 Arm Ltd and Contributors. All rights reserved.
+// Copyright © 2019-2023 Arm Ltd and Contributors. All rights reserved.
// SPDX-License-Identifier: MIT
//
@@ -38,7 +38,7 @@ void QuantizeLayer::ValidateTensorShapesFromInputs()
VerifyShapeInferenceType(outputShape, m_ShapeInferenceMethod);
- auto inferredShapes = InferOutputShapes({ GetInputSlot(0).GetConnection()->GetTensorInfo().GetShape() });
+ auto inferredShapes = InferOutputShapes({ GetInputSlot(0).GetTensorInfo().GetShape() });
ValidateAndCopyShape(outputShape, inferredShapes[0], m_ShapeInferenceMethod, "QuantizeLayer");
}
diff --git a/src/armnn/layers/QuantizedLstmLayer.cpp b/src/armnn/layers/QuantizedLstmLayer.cpp
index a213a1b5b0..c82e34f983 100644
--- a/src/armnn/layers/QuantizedLstmLayer.cpp
+++ b/src/armnn/layers/QuantizedLstmLayer.cpp
@@ -1,5 +1,5 @@
//
-// Copyright © 2017 Arm Ltd and Contributors. All rights reserved.
+// Copyright © 2017,2019-2023 Arm Ltd and Contributors. All rights reserved.
// SPDX-License-Identifier: MIT
//
#include "QuantizedLstmLayer.hpp"
@@ -103,9 +103,9 @@ void QuantizedLstmLayer::ValidateTensorShapesFromInputs()
auto inferredShapes = InferOutputShapes(
{
- GetInputSlot(0).GetConnection()->GetTensorInfo().GetShape(), // input
- GetInputSlot(1).GetConnection()->GetTensorInfo().GetShape(), // previousCellStateIn
- GetInputSlot(2).GetConnection()->GetTensorInfo().GetShape() // previousOutputIn
+ GetInputSlot(0).GetTensorInfo().GetShape(), // input
+ GetInputSlot(1).GetTensorInfo().GetShape(), // previousCellStateIn
+ GetInputSlot(2).GetTensorInfo().GetShape() // previousOutputIn
});
ARMNN_ASSERT(inferredShapes.size() == 2);
diff --git a/src/armnn/layers/ReduceLayer.cpp b/src/armnn/layers/ReduceLayer.cpp
index ebee213659..21095dda74 100644
--- a/src/armnn/layers/ReduceLayer.cpp
+++ b/src/armnn/layers/ReduceLayer.cpp
@@ -49,7 +49,7 @@ void ReduceLayer::ValidateTensorShapesFromInputs()
VerifyShapeInferenceType(outputShape, m_ShapeInferenceMethod);
- const TensorInfo& input = GetInputSlot(0).GetConnection()->GetTensorInfo();
+ const TensorInfo& input = GetInputSlot(0).GetTensorInfo();
ARMNN_ASSERT_MSG(input.GetNumDimensions() > 0 && input.GetNumDimensions() <= 4,
"ReduceLayer: Reduce supports up to 4D input.");
diff --git a/src/armnn/layers/ReshapeLayer.cpp b/src/armnn/layers/ReshapeLayer.cpp
index e68460bf32..b786f54fe3 100644
--- a/src/armnn/layers/ReshapeLayer.cpp
+++ b/src/armnn/layers/ReshapeLayer.cpp
@@ -46,7 +46,7 @@ void ReshapeLayer::ValidateTensorShapesFromInputs()
VerifyShapeInferenceType(outputShape, m_ShapeInferenceMethod);
- auto inferredShapes = InferOutputShapes({ GetInputSlot(0).GetConnection()->GetTensorInfo().GetShape() });
+ auto inferredShapes = InferOutputShapes({ GetInputSlot(0).GetTensorInfo().GetShape() });
ARMNN_ASSERT(inferredShapes.size() == 1);
ARMNN_ASSERT(inferredShapes[0].GetDimensionality() == Dimensionality::Specified);
diff --git a/src/armnn/layers/ResizeLayer.cpp b/src/armnn/layers/ResizeLayer.cpp
index 188d134880..734df0a9a2 100644
--- a/src/armnn/layers/ResizeLayer.cpp
+++ b/src/armnn/layers/ResizeLayer.cpp
@@ -1,5 +1,5 @@
//
-// Copyright © 2017 Arm Ltd and Contributors. All rights reserved.
+// Copyright © 2019-2023 Arm Ltd and Contributors. All rights reserved.
// SPDX-License-Identifier: MIT
//
@@ -68,7 +68,7 @@ void ResizeLayer::ValidateTensorShapesFromInputs()
VerifyShapeInferenceType(outputShape, m_ShapeInferenceMethod);
- auto inferredShapes = InferOutputShapes({ GetInputSlot(0).GetConnection()->GetTensorInfo().GetShape() });
+ auto inferredShapes = InferOutputShapes({ GetInputSlot(0).GetTensorInfo().GetShape() });
ARMNN_ASSERT(inferredShapes.size() == 1);
diff --git a/src/armnn/layers/RsqrtLayer.cpp b/src/armnn/layers/RsqrtLayer.cpp
index 0c2cc6373b..91f6d10a69 100644
--- a/src/armnn/layers/RsqrtLayer.cpp
+++ b/src/armnn/layers/RsqrtLayer.cpp
@@ -1,5 +1,5 @@
//
-// Copyright © 2017 Arm Ltd and Contributors. All rights reserved.
+// Copyright © 2017-2023 Arm Ltd and Contributors. All rights reserved.
// SPDX-License-Identifier: MIT
//
@@ -41,7 +41,7 @@ void RsqrtLayer::ValidateTensorShapesFromInputs()
VerifyShapeInferenceType(outputShape, m_ShapeInferenceMethod);
- auto inferredShapes = InferOutputShapes({ GetInputSlot(0).GetConnection()->GetTensorInfo().GetShape() });
+ auto inferredShapes = InferOutputShapes({ GetInputSlot(0).GetTensorInfo().GetShape() });
ARMNN_ASSERT(inferredShapes.size() == 1);
diff --git a/src/armnn/layers/ShapeLayer.cpp b/src/armnn/layers/ShapeLayer.cpp
index dbc0d7a888..e7e343c707 100644
--- a/src/armnn/layers/ShapeLayer.cpp
+++ b/src/armnn/layers/ShapeLayer.cpp
@@ -1,5 +1,5 @@
//
-// Copyright © 2021 Arm Ltd and Contributors. All rights reserved.
+// Copyright © 2021-2023 Arm Ltd and Contributors. All rights reserved.
// SPDX-License-Identifier: MIT
//
@@ -42,7 +42,7 @@ void ShapeLayer::ValidateTensorShapesFromInputs()
VerifyShapeInferenceType(outputShape, m_ShapeInferenceMethod);
- auto inferredShape = InferOutputShapes({ GetInputSlot(0).GetConnection()->GetTensorInfo().GetShape() });
+ auto inferredShape = InferOutputShapes({ GetInputSlot(0).GetTensorInfo().GetShape() });
ARMNN_ASSERT(inferredShape.size() == 1);
diff --git a/src/armnn/layers/SliceLayer.cpp b/src/armnn/layers/SliceLayer.cpp
index 6362be3de2..a9327c6111 100644
--- a/src/armnn/layers/SliceLayer.cpp
+++ b/src/armnn/layers/SliceLayer.cpp
@@ -1,5 +1,5 @@
//
-// Copyright © 2019 Arm Ltd and Contributors. All rights reserved.
+// Copyright © 2019-2023 Arm Ltd and Contributors. All rights reserved.
// SPDX-License-Identifier: MIT
//
@@ -42,7 +42,7 @@ void SliceLayer::ValidateTensorShapesFromInputs()
VerifyShapeInferenceType(outputShape, m_ShapeInferenceMethod);
- auto inferredShapes = InferOutputShapes({ GetInputSlot(0).GetConnection()->GetTensorInfo().GetShape() });
+ auto inferredShapes = InferOutputShapes({ GetInputSlot(0).GetTensorInfo().GetShape() });
ARMNN_ASSERT(inferredShapes.size() == 1);
diff --git a/src/armnn/layers/SoftmaxLayer.cpp b/src/armnn/layers/SoftmaxLayer.cpp
index b1cb191511..5f68278454 100644
--- a/src/armnn/layers/SoftmaxLayer.cpp
+++ b/src/armnn/layers/SoftmaxLayer.cpp
@@ -1,5 +1,5 @@
//
-// Copyright © 2017 Arm Ltd and Contributors. All rights reserved.
+// Copyright © 2017-2023 Arm Ltd and Contributors. All rights reserved.
// SPDX-License-Identifier: MIT
//
#include "SoftmaxLayer.hpp"
@@ -39,7 +39,7 @@ void SoftmaxLayer::ValidateTensorShapesFromInputs()
VerifyShapeInferenceType(outputShape, m_ShapeInferenceMethod);
- auto inferredShapes = InferOutputShapes({ GetInputSlot(0).GetConnection()->GetTensorInfo().GetShape() });
+ auto inferredShapes = InferOutputShapes({ GetInputSlot(0).GetTensorInfo().GetShape() });
ARMNN_ASSERT(inferredShapes.size() == 1);
diff --git a/src/armnn/layers/SpaceToBatchNdLayer.cpp b/src/armnn/layers/SpaceToBatchNdLayer.cpp
index a758617e2e..277fc4479d 100644
--- a/src/armnn/layers/SpaceToBatchNdLayer.cpp
+++ b/src/armnn/layers/SpaceToBatchNdLayer.cpp
@@ -1,5 +1,5 @@
//
-// Copyright © 2017,2023 Arm Ltd and Contributors. All rights reserved.
+// Copyright © 2018-2023 Arm Ltd and Contributors. All rights reserved.
// SPDX-License-Identifier: MIT
//
@@ -69,7 +69,7 @@ void SpaceToBatchNdLayer::ValidateTensorShapesFromInputs()
VerifyShapeInferenceType(outputShape, m_ShapeInferenceMethod);
std::vector<TensorShape> inferredShapes = InferOutputShapes({
- GetInputSlot(0).GetConnection()->GetTensorInfo().GetShape() });
+ GetInputSlot(0).GetTensorInfo().GetShape() });
ARMNN_ASSERT(inferredShapes.size() == 1);
diff --git a/src/armnn/layers/SpaceToDepthLayer.cpp b/src/armnn/layers/SpaceToDepthLayer.cpp
index f2f0b768a7..c86758f67f 100644
--- a/src/armnn/layers/SpaceToDepthLayer.cpp
+++ b/src/armnn/layers/SpaceToDepthLayer.cpp
@@ -1,5 +1,5 @@
//
-// Copyright © 2017 Arm Ltd and Contributors. All rights reserved.
+// Copyright © 2019-2023 Arm Ltd and Contributors. All rights reserved.
// SPDX-License-Identifier: MIT
//
@@ -70,7 +70,7 @@ void SpaceToDepthLayer::ValidateTensorShapesFromInputs()
VerifyShapeInferenceType(outputShape, m_ShapeInferenceMethod);
std::vector<TensorShape> inferredShapes = InferOutputShapes({
- GetInputSlot(0).GetConnection()->GetTensorInfo().GetShape() });
+ GetInputSlot(0).GetTensorInfo().GetShape() });
ARMNN_ASSERT(inferredShapes.size() == 1);
diff --git a/src/armnn/layers/SplitterLayer.cpp b/src/armnn/layers/SplitterLayer.cpp
index 0226a046be..86a42305ff 100644
--- a/src/armnn/layers/SplitterLayer.cpp
+++ b/src/armnn/layers/SplitterLayer.cpp
@@ -1,5 +1,5 @@
//
-// Copyright © 2017 Arm Ltd and Contributors. All rights reserved.
+// Copyright © 2017-2023 Arm Ltd and Contributors. All rights reserved.
// SPDX-License-Identifier: MIT
//
#include "SplitterLayer.hpp"
@@ -131,11 +131,13 @@ void SplitterLayer::CreateTensors(const TensorHandleFactoryRegistry& registry,
// 2) the same TensorHandleFactory is used for input and split layer output
// 3) the output does not go to a Constant layer or input layer
// 4) if split along x or y (2 innermost dimensions) and the next layers do not require padding
+ // 5) none of the outputs have an Overridden TensorInfo
if (parentInfo.IsTypeSpaceMatch(info) && //(1)
factoryId == slot->GetTensorHandleFactoryId() && //(2)
GetOutputSlot(i).GetConnection(0)->GetOwningLayer().GetType() != LayerType::Constant && //(3)
GetOutputSlot(i).GetConnection(0)->GetOwningLayer().GetType() != LayerType::Input && //(3)
- canUseSubTensorOnXorY) //(4)
+ canUseSubTensorOnXorY && //(4)
+ !GetOutputSlot(i).GetConnection(0)->IsTensorInfoOverridden()) //(5)
{
ARMNN_NO_DEPRECATE_WARN_BEGIN
return factory.CreateSubTensorHandle(*inputData,
diff --git a/src/armnn/layers/StackLayer.cpp b/src/armnn/layers/StackLayer.cpp
index 3ebacaf3b5..3c5a216eb3 100644
--- a/src/armnn/layers/StackLayer.cpp
+++ b/src/armnn/layers/StackLayer.cpp
@@ -1,5 +1,5 @@
//
-// Copyright © 2017 Arm Ltd and Contributors. All rights reserved.
+// Copyright © 2019-2023 Arm Ltd and Contributors. All rights reserved.
// SPDX-License-Identifier: MIT
//
#include "StackLayer.hpp"
@@ -78,7 +78,7 @@ void StackLayer::ValidateTensorShapesFromInputs()
std::vector<TensorShape> inputShapes;
for (unsigned int i = 0; i < GetNumInputSlots(); ++i)
{
- TensorShape inputShape = GetInputSlot(i).GetConnection()->GetTensorInfo().GetShape();
+ TensorShape inputShape = GetInputSlot(i).GetTensorInfo().GetShape();
if (inputShape != m_Param.m_InputShape)
{
throw LayerValidationException("StackLayer: TensorShape set on InputSlot[" +
diff --git a/src/armnn/layers/StridedSliceLayer.cpp b/src/armnn/layers/StridedSliceLayer.cpp
index a179531306..16aeab5f5a 100644
--- a/src/armnn/layers/StridedSliceLayer.cpp
+++ b/src/armnn/layers/StridedSliceLayer.cpp
@@ -1,5 +1,5 @@
//
-// Copyright © 2017 Arm Ltd and Contributors. All rights reserved.
+// Copyright © 2018-2023 Arm Ltd and Contributors. All rights reserved.
// SPDX-License-Identifier: MIT
//
#include "StridedSliceLayer.hpp"
@@ -104,7 +104,7 @@ void StridedSliceLayer::ValidateTensorShapesFromInputs()
VerifyShapeInferenceType(outputShape, m_ShapeInferenceMethod);
- auto inferredShapes = InferOutputShapes({GetInputSlot(0).GetConnection()->GetTensorInfo().GetShape()});
+ auto inferredShapes = InferOutputShapes({GetInputSlot(0).GetTensorInfo().GetShape()});
ARMNN_ASSERT(inferredShapes.size() == 1);
diff --git a/src/armnn/layers/SwitchLayer.cpp b/src/armnn/layers/SwitchLayer.cpp
index c2022fdcbb..031dcec29a 100644
--- a/src/armnn/layers/SwitchLayer.cpp
+++ b/src/armnn/layers/SwitchLayer.cpp
@@ -1,5 +1,5 @@
//
-// Copyright © 2017 Arm Ltd and Contributors. All rights reserved.
+// Copyright © 2019-2023 Arm Ltd and Contributors. All rights reserved.
// SPDX-License-Identifier: MIT
//
#include "SwitchLayer.hpp"
@@ -41,8 +41,8 @@ void SwitchLayer::ValidateTensorShapesFromInputs()
// Assuming first input is the Input and second input is the Constant
std::vector<TensorShape> inferredShapes = InferOutputShapes({
- GetInputSlot(0).GetConnection()->GetTensorInfo().GetShape(),
- GetInputSlot(1).GetConnection()->GetTensorInfo().GetShape()});
+ GetInputSlot(0).GetTensorInfo().GetShape(),
+ GetInputSlot(1).GetTensorInfo().GetShape()});
ARMNN_ASSERT(inferredShapes.size() == 2);
diff --git a/src/armnn/layers/TransposeConvolution2dLayer.cpp b/src/armnn/layers/TransposeConvolution2dLayer.cpp
index 534d6b431e..3a7e8b889e 100644
--- a/src/armnn/layers/TransposeConvolution2dLayer.cpp
+++ b/src/armnn/layers/TransposeConvolution2dLayer.cpp
@@ -1,5 +1,5 @@
//
-// Copyright © 2017,2023 Arm Ltd and Contributors. All rights reserved.
+// Copyright © 2019-2023 Arm Ltd and Contributors. All rights reserved.
// SPDX-License-Identifier: MIT
//
@@ -100,7 +100,7 @@ void TransposeConvolution2dLayer::ValidateTensorShapesFromInputs()
std::vector<TensorShape> expectedOutputShape;
std::vector<TensorShape> outputShapeGivenAsInput;
- expectedOutputShape = InferOutputShapes({GetInputSlot(0).GetConnection()->GetTensorInfo().GetShape(),
+ expectedOutputShape = InferOutputShapes({GetInputSlot(0).GetTensorInfo().GetShape(),
m_Weight->GetTensorInfo().GetShape() });
ARMNN_ASSERT(expectedOutputShape.size() == 1);
diff --git a/src/armnn/layers/TransposeLayer.cpp b/src/armnn/layers/TransposeLayer.cpp
index bc9e0acf7c..58e570ab38 100644
--- a/src/armnn/layers/TransposeLayer.cpp
+++ b/src/armnn/layers/TransposeLayer.cpp
@@ -1,5 +1,5 @@
//
-// Copyright © 2020 Arm Ltd and Contributors. All rights reserved.
+// Copyright © 2020-2023 Arm Ltd and Contributors. All rights reserved.
// SPDX-License-Identifier: MIT
//
@@ -50,7 +50,7 @@ void TransposeLayer::ValidateTensorShapesFromInputs()
VerifyShapeInferenceType(outputShape, m_ShapeInferenceMethod);
- auto inferredShapes = InferOutputShapes({ GetInputSlot(0).GetConnection()->GetTensorInfo().GetShape() });
+ auto inferredShapes = InferOutputShapes({ GetInputSlot(0).GetTensorInfo().GetShape() });
ARMNN_ASSERT(inferredShapes.size() == 1);
diff --git a/src/armnn/layers/UnidirectionalSequenceLstmLayer.cpp b/src/armnn/layers/UnidirectionalSequenceLstmLayer.cpp
index 7ae08834e6..75f027e32d 100644
--- a/src/armnn/layers/UnidirectionalSequenceLstmLayer.cpp
+++ b/src/armnn/layers/UnidirectionalSequenceLstmLayer.cpp
@@ -1,5 +1,5 @@
//
-// Copyright © 2021 Arm Ltd and Contributors. All rights reserved.
+// Copyright © 2021-2023 Arm Ltd and Contributors. All rights reserved.
// SPDX-License-Identifier: MIT
//
#include "UnidirectionalSequenceLstmLayer.hpp"
@@ -176,9 +176,9 @@ void UnidirectionalSequenceLstmLayer::ValidateTensorShapesFromInputs()
VerifyShapeInferenceType(outputShape, m_ShapeInferenceMethod);
auto inferredShapes = InferOutputShapes( {
- GetInputSlot(0).GetConnection()->GetTensorInfo().GetShape(),
- GetInputSlot(1).GetConnection()->GetTensorInfo().GetShape(),
- GetInputSlot(2).GetConnection()->GetTensorInfo().GetShape()
+ GetInputSlot(0).GetTensorInfo().GetShape(),
+ GetInputSlot(1).GetTensorInfo().GetShape(),
+ GetInputSlot(2).GetTensorInfo().GetShape()
});
ARMNN_ASSERT(inferredShapes.size() == 1);
diff --git a/src/armnn/optimizations/PermuteAndBatchToSpaceAsDepthToSpace.hpp b/src/armnn/optimizations/PermuteAndBatchToSpaceAsDepthToSpace.hpp
index 61a6cabcec..1d72a7ab63 100644
--- a/src/armnn/optimizations/PermuteAndBatchToSpaceAsDepthToSpace.hpp
+++ b/src/armnn/optimizations/PermuteAndBatchToSpaceAsDepthToSpace.hpp
@@ -1,5 +1,5 @@
//
-// Copyright © 2019 Arm Ltd. All rights reserved.
+// Copyright © 2019-2020,2023 Arm Ltd. All rights reserved.
// SPDX-License-Identifier: MIT
//
#pragma once
@@ -23,7 +23,7 @@ public:
// Validate base layer (the Permute) is compatible
Layer& base = connection.GetConnectedOutputSlot()->GetOwningLayer();
ARMNN_ASSERT(base.GetType() == LayerType::Permute || base.GetType() == LayerType::Transpose);
- const TensorInfo& inputInfo = base.GetInputSlot(0).GetConnection()->GetTensorInfo();
+ const TensorInfo& inputInfo = base.GetInputSlot(0).GetTensorInfo();
const TensorInfo& intermediateInfo = base.GetOutputSlot(0).GetTensorInfo();
if (intermediateInfo.GetNumDimensions() != 4)
{
diff --git a/src/armnn/test/LayerTests.cpp b/src/armnn/test/LayerTests.cpp
new file mode 100644
index 0000000000..3e9184e3be
--- /dev/null
+++ b/src/armnn/test/LayerTests.cpp
@@ -0,0 +1,50 @@
+//
+// Copyright © 2023 Arm Ltd and Contributors. All rights reserved.
+// SPDX-License-Identifier: MIT
+//
+
+#include <Network.hpp>
+#include <doctest/doctest.h>
+#include <armnn/utility/PolymorphicDowncast.hpp>
+
+namespace
+{
+
+TEST_SUITE("Layer")
+{
+
+TEST_CASE("InputSlotGetTensorInfo")
+{
+ armnn::NetworkImpl net;
+ armnn::IConnectableLayer* add = net.AddElementwiseBinaryLayer(armnn::BinaryOperation::Add);
+ armnn::IConnectableLayer* out = net.AddOutputLayer(0);
+
+ armnn::Layer* addlayer = armnn::PolymorphicDowncast<armnn::Layer*>(add);
+ armnn::Layer* outlayer = armnn::PolymorphicDowncast<armnn::Layer*>(out);
+
+ auto outTensorInfo = armnn::TensorInfo({1,2,2,1}, armnn::DataType::Float32);
+ addlayer->GetOutputSlot(0).Connect(outlayer->GetInputSlot(0));
+ CHECK_FALSE(outlayer->GetInputSlot(0).IsTensorInfoSet());
+
+ addlayer->GetOutputSlot(0).SetTensorInfo(outTensorInfo);
+ auto testTensorInfo = outlayer->GetInputSlot(0).GetTensorInfo();
+
+ CHECK_EQ(outTensorInfo, testTensorInfo);
+ CHECK(outlayer->GetInputSlot(0).IsTensorInfoSet());
+ CHECK_FALSE(outlayer->GetInputSlot(0).IsTensorInfoOverridden());
+
+ auto overRiddenTensorInfo = armnn::TensorInfo({2,2}, armnn::DataType::Float32);
+ outlayer->GetInputSlot(0).SetTensorInfo(overRiddenTensorInfo);
+ testTensorInfo = outlayer->GetInputSlot(0).GetTensorInfo();
+
+ // Confirm that inputslot TensorInfo is changed
+ CHECK_EQ(overRiddenTensorInfo, testTensorInfo);
+ // Confirm that outputslot TensorInfo is unchanged
+ CHECK_EQ(outTensorInfo, outlayer->GetInputSlot(0).GetConnection()->GetTensorInfo());
+
+ CHECK(outlayer->GetInputSlot(0).IsTensorInfoOverridden());
+}
+
+}
+
+}
diff --git a/src/backends/aclCommon/ArmComputeSubgraphUtils.hpp b/src/backends/aclCommon/ArmComputeSubgraphUtils.hpp
index 973d104195..90c0fd5890 100644
--- a/src/backends/aclCommon/ArmComputeSubgraphUtils.hpp
+++ b/src/backends/aclCommon/ArmComputeSubgraphUtils.hpp
@@ -23,7 +23,7 @@ namespace
bool checkDataTypeInputandOutput(const Layer& layer)
{
- auto inputInfo = layer.GetInputSlot(0).GetConnection()->GetTensorInfo();
+ auto inputInfo = layer.GetInputSlot(0).GetTensorInfo();
auto outputInfo = layer.GetOutputSlot(0).GetTensorInfo();
bool sameDataType = (inputInfo.GetDataType() == outputInfo.GetDataType());
diff --git a/src/backends/backendsCommon/WorkloadFactory.cpp b/src/backends/backendsCommon/WorkloadFactory.cpp
index d4e3fb784d..7042af1127 100644
--- a/src/backends/backendsCommon/WorkloadFactory.cpp
+++ b/src/backends/backendsCommon/WorkloadFactory.cpp
@@ -98,7 +98,7 @@ bool IWorkloadFactory::IsLayerConfigurationSupported(const BackendId& backendId,
case LayerType::Activation:
{
auto cLayer = PolymorphicDowncast<const ActivationLayer*>(&layer);
- const TensorInfo& input = layer.GetInputSlot(0).GetConnection()->GetTensorInfo();
+ const TensorInfo& input = layer.GetInputSlot(0).GetTensorInfo();
const TensorInfo& output = layer.GetOutputSlot(0).GetTensorInfo();
result = layerSupportObject.IsActivationSupported(
OverrideDataType(input, dataType),
@@ -110,8 +110,8 @@ bool IWorkloadFactory::IsLayerConfigurationSupported(const BackendId& backendId,
case LayerType::Addition:
{
ARMNN_NO_DEPRECATE_WARN_BEGIN
- const TensorInfo& input0 = layer.GetInputSlot(0).GetConnection()->GetTensorInfo();
- const TensorInfo& input1 = layer.GetInputSlot(1).GetConnection()->GetTensorInfo();
+ const TensorInfo& input0 = layer.GetInputSlot(0).GetTensorInfo();
+ const TensorInfo& input1 = layer.GetInputSlot(1).GetTensorInfo();
const TensorInfo& output = layer.GetOutputSlot(0).GetTensorInfo();
result = layerSupportObject.IsAdditionSupported(
OverrideDataType(input0, dataType),
@@ -126,7 +126,7 @@ bool IWorkloadFactory::IsLayerConfigurationSupported(const BackendId& backendId,
auto cLayer = PolymorphicDowncast<const ArgMinMaxLayer*>(&layer);
const ArgMinMaxDescriptor& descriptor = cLayer->GetParameters();
- const TensorInfo& input = layer.GetInputSlot(0).GetConnection()->GetTensorInfo();
+ const TensorInfo& input = layer.GetInputSlot(0).GetTensorInfo();
const TensorInfo& output = layer.GetOutputSlot(0).GetTensorInfo();
result = layerSupportObject.IsArgMinMaxSupported(
OverrideDataType(input, dataType),
@@ -140,8 +140,8 @@ bool IWorkloadFactory::IsLayerConfigurationSupported(const BackendId& backendId,
auto cLayer = PolymorphicDowncast<const BatchMatMulLayer*>(&layer);
const BatchMatMulDescriptor& descriptor = cLayer->GetParameters();
- const TensorInfo& input0 = layer.GetInputSlot(0).GetConnection()->GetTensorInfo();
- const TensorInfo& input1 = layer.GetInputSlot(1).GetConnection()->GetTensorInfo();
+ const TensorInfo& input0 = layer.GetInputSlot(0).GetTensorInfo();
+ const TensorInfo& input1 = layer.GetInputSlot(1).GetTensorInfo();
const TensorInfo& output = layer.GetOutputSlot(0).GetTensorInfo();
result = layerSupportObject.IsBatchMatMulSupported(
OverrideDataType(input0, dataType),
@@ -154,7 +154,7 @@ bool IWorkloadFactory::IsLayerConfigurationSupported(const BackendId& backendId,
case LayerType::BatchNormalization:
{
auto cLayer = PolymorphicDowncast<const BatchNormalizationLayer*>(&layer);
- const TensorInfo& input = layer.GetInputSlot(0).GetConnection()->GetTensorInfo();
+ const TensorInfo& input = layer.GetInputSlot(0).GetTensorInfo();
const TensorInfo& output = layer.GetOutputSlot(0).GetTensorInfo();
const TensorInfo& mean = cLayer->m_Mean->GetTensorInfo();
const TensorInfo& var = cLayer->m_Variance->GetTensorInfo();
@@ -173,7 +173,7 @@ bool IWorkloadFactory::IsLayerConfigurationSupported(const BackendId& backendId,
}
case LayerType::BatchToSpaceNd:
{
- const TensorInfo& input = layer.GetInputSlot(0).GetConnection()->GetTensorInfo();
+ const TensorInfo& input = layer.GetInputSlot(0).GetTensorInfo();
const TensorInfo& output = layer.GetOutputSlot(0).GetTensorInfo();
auto cLayer = PolymorphicDowncast<const BatchToSpaceNdLayer*>(&layer);
@@ -185,7 +185,7 @@ bool IWorkloadFactory::IsLayerConfigurationSupported(const BackendId& backendId,
}
case LayerType::Cast:
{
- const TensorInfo& input = layer.GetInputSlot(0).GetConnection()->GetTensorInfo();
+ const TensorInfo& input = layer.GetInputSlot(0).GetTensorInfo();
const TensorInfo& output = layer.GetOutputSlot(0).GetTensorInfo();
result = layerSupportObject.IsCastSupported(OverrideDataType(input, dataType),
@@ -197,8 +197,8 @@ bool IWorkloadFactory::IsLayerConfigurationSupported(const BackendId& backendId,
{
auto cLayer = PolymorphicDowncast<const ChannelShuffleLayer*>(&layer);
- const TensorInfo& input = layer.GetInputSlot(0).GetConnection()->GetTensorInfo();
- const TensorInfo& output = layer.GetInputSlot(0).GetConnection()->GetTensorInfo();
+ const TensorInfo& input = layer.GetInputSlot(0).GetTensorInfo();
+ const TensorInfo& output = layer.GetInputSlot(0).GetTensorInfo();
const ChannelShuffleDescriptor descriptor = cLayer->GetParameters();
@@ -212,8 +212,8 @@ bool IWorkloadFactory::IsLayerConfigurationSupported(const BackendId& backendId,
{
auto cLayer = PolymorphicDowncast<const ComparisonLayer*>(&layer);
- const TensorInfo& input0 = layer.GetInputSlot(0).GetConnection()->GetTensorInfo();
- const TensorInfo& input1 = layer.GetInputSlot(1).GetConnection()->GetTensorInfo();
+ const TensorInfo& input0 = layer.GetInputSlot(0).GetTensorInfo();
+ const TensorInfo& input1 = layer.GetInputSlot(1).GetTensorInfo();
const TensorInfo& output = layer.GetOutputSlot(0).GetTensorInfo();
result = layerSupportObject.IsComparisonSupported(OverrideDataType(input0, dataType),
@@ -231,14 +231,14 @@ bool IWorkloadFactory::IsLayerConfigurationSupported(const BackendId& backendId,
}
case LayerType::ConvertFp16ToFp32:
{
- const TensorInfo& input = layer.GetInputSlot(0).GetConnection()->GetTensorInfo();
+ const TensorInfo& input = layer.GetInputSlot(0).GetTensorInfo();
const TensorInfo& output = layer.GetOutputSlot(0).GetTensorInfo();
result = layerSupportObject.IsConvertFp16ToFp32Supported(input, output, reason);
break;
}
case LayerType::ConvertFp32ToFp16:
{
- const TensorInfo& input = layer.GetInputSlot(0).GetConnection()->GetTensorInfo();
+ const TensorInfo& input = layer.GetInputSlot(0).GetTensorInfo();
const TensorInfo& output = layer.GetOutputSlot(0).GetTensorInfo();
result = layerSupportObject.IsConvertFp32ToFp16Supported(input, output, reason);
break;
@@ -247,12 +247,12 @@ bool IWorkloadFactory::IsLayerConfigurationSupported(const BackendId& backendId,
{
auto cLayer = PolymorphicDowncast<const Convolution2dLayer*>(&layer);
- const TensorInfo input = OverrideDataType(layer.GetInputSlot(0).GetConnection()->GetTensorInfo(),
+ const TensorInfo input = OverrideDataType(layer.GetInputSlot(0).GetTensorInfo(),
dataType);
const TensorInfo output = OverrideDataType(layer.GetOutputSlot(0).GetTensorInfo(), dataType);
ARMNN_ASSERT_MSG(layer.GetInputSlot(1).GetConnection(),
"Convolution2dLayer: Weights should be connected as a Constant Layer.");
- const TensorInfo weights = OverrideDataType(layer.GetInputSlot(1).GetConnection()->GetTensorInfo(),
+ const TensorInfo weights = OverrideDataType(layer.GetInputSlot(1).GetTensorInfo(),
dataType);
const Convolution2dDescriptor& descriptor = cLayer->GetParameters();
@@ -263,7 +263,7 @@ bool IWorkloadFactory::IsLayerConfigurationSupported(const BackendId& backendId,
{
ARMNN_ASSERT_MSG(layer.GetInputSlot(2).GetConnection(),
"Convolution2dLayer: Bias should be connected as a Constant Layer.");
- biases = OverrideDataType(layer.GetInputSlot(2).GetConnection()->GetTensorInfo(),
+ biases = OverrideDataType(layer.GetInputSlot(2).GetTensorInfo(),
GetBiasTypeFromWeightsType(dataType));
}
@@ -280,13 +280,13 @@ bool IWorkloadFactory::IsLayerConfigurationSupported(const BackendId& backendId,
{
auto cLayer = PolymorphicDowncast<const Convolution3dLayer*>(&layer);
- const TensorInfo input = OverrideDataType(layer.GetInputSlot(0).GetConnection()->GetTensorInfo(),
+ const TensorInfo input = OverrideDataType(layer.GetInputSlot(0).GetTensorInfo(),
dataType);
const TensorInfo output = OverrideDataType(layer.GetOutputSlot(0).GetTensorInfo(), dataType);
ARMNN_ASSERT_MSG(layer.GetInputSlot(1).GetConnection(),
"Convolution3dLayer: Weights should be connected as a Constant Layer.");
- const TensorInfo weights = OverrideDataType(layer.GetInputSlot(1).GetConnection()->GetTensorInfo(),
+ const TensorInfo weights = OverrideDataType(layer.GetInputSlot(1).GetTensorInfo(),
dataType);
const Convolution3dDescriptor& descriptor = cLayer->GetParameters();
@@ -295,7 +295,7 @@ bool IWorkloadFactory::IsLayerConfigurationSupported(const BackendId& backendId,
Optional<TensorInfo> biases;
if (descriptor.m_BiasEnabled)
{
- biases = OverrideDataType(layer.GetInputSlot(2).GetConnection()->GetTensorInfo(),
+ biases = OverrideDataType(layer.GetInputSlot(2).GetTensorInfo(),
GetBiasTypeFromWeightsType(dataType));
}
@@ -310,7 +310,7 @@ bool IWorkloadFactory::IsLayerConfigurationSupported(const BackendId& backendId,
}
case LayerType::Debug:
{
- const TensorInfo& input = layer.GetInputSlot(0).GetConnection()->GetTensorInfo();
+ const TensorInfo& input = layer.GetInputSlot(0).GetTensorInfo();
const TensorInfo& output = layer.GetOutputSlot(0).GetTensorInfo();
result = layerSupportObject.IsDebugSupported(OverrideDataType(input, dataType),
@@ -322,7 +322,7 @@ bool IWorkloadFactory::IsLayerConfigurationSupported(const BackendId& backendId,
{
auto cLayer = PolymorphicDowncast<const DepthToSpaceLayer*>(&layer);
- const TensorInfo& input = layer.GetInputSlot(0).GetConnection()->GetTensorInfo();
+ const TensorInfo& input = layer.GetInputSlot(0).GetTensorInfo();
const TensorInfo& output = layer.GetOutputSlot(0).GetTensorInfo();
result = layerSupportObject.IsDepthToSpaceSupported(OverrideDataType(input, dataType),
@@ -334,10 +334,10 @@ bool IWorkloadFactory::IsLayerConfigurationSupported(const BackendId& backendId,
case LayerType::DepthwiseConvolution2d:
{
auto cLayer = PolymorphicDowncast<const DepthwiseConvolution2dLayer*>(&layer);
- const TensorInfo& input = OverrideDataType(layer.GetInputSlot(0).GetConnection()->GetTensorInfo(),
+ const TensorInfo& input = OverrideDataType(layer.GetInputSlot(0).GetTensorInfo(),
dataType);
const TensorInfo& output = OverrideDataType(layer.GetOutputSlot(0).GetTensorInfo(), dataType);
- const TensorInfo& weights = OverrideDataType(layer.GetInputSlot(1).GetConnection()->GetTensorInfo(),
+ const TensorInfo& weights = OverrideDataType(layer.GetInputSlot(1).GetTensorInfo(),
dataType);
ARMNN_ASSERT(cLayer->GetInputSlot(1).GetConnection() != nullptr);
@@ -348,7 +348,7 @@ bool IWorkloadFactory::IsLayerConfigurationSupported(const BackendId& backendId,
Optional<TensorInfo> biases;
if (descriptor.m_BiasEnabled)
{
- biases = OverrideDataType(cLayer->GetInputSlot(2).GetConnection()->GetTensorInfo(),
+ biases = OverrideDataType(cLayer->GetInputSlot(2).GetTensorInfo(),
GetBiasTypeFromWeightsType(dataType));
}
@@ -362,7 +362,7 @@ bool IWorkloadFactory::IsLayerConfigurationSupported(const BackendId& backendId,
}
case LayerType::Dequantize:
{
- const TensorInfo& input = layer.GetInputSlot(0).GetConnection()->GetTensorInfo();
+ const TensorInfo& input = layer.GetInputSlot(0).GetTensorInfo();
const TensorInfo& output = layer.GetOutputSlot(0).GetTensorInfo();
result = layerSupportObject.IsDequantizeSupported(input,
@@ -373,8 +373,8 @@ bool IWorkloadFactory::IsLayerConfigurationSupported(const BackendId& backendId,
case LayerType::DetectionPostProcess:
{
auto cLayer = PolymorphicDowncast<const DetectionPostProcessLayer*>(&layer);
- const TensorInfo& boxEncodings = layer.GetInputSlot(0).GetConnection()->GetTensorInfo();
- const TensorInfo& scores = layer.GetInputSlot(1).GetConnection()->GetTensorInfo();
+ const TensorInfo& boxEncodings = layer.GetInputSlot(0).GetTensorInfo();
+ const TensorInfo& scores = layer.GetInputSlot(1).GetTensorInfo();
const TensorInfo& anchors = cLayer->m_Anchors->GetTensorInfo();
const TensorInfo& detectionBoxes = layer.GetOutputSlot(0).GetTensorInfo();
@@ -398,8 +398,8 @@ bool IWorkloadFactory::IsLayerConfigurationSupported(const BackendId& backendId,
{
auto cLayer = PolymorphicDowncast<const ElementwiseBinaryLayer*>(&layer);
- const TensorInfo& input0 = layer.GetInputSlot(0).GetConnection()->GetTensorInfo();
- const TensorInfo& input1 = layer.GetInputSlot(1).GetConnection()->GetTensorInfo();
+ const TensorInfo& input0 = layer.GetInputSlot(0).GetTensorInfo();
+ const TensorInfo& input1 = layer.GetInputSlot(1).GetTensorInfo();
const TensorInfo& output = layer.GetOutputSlot(0).GetTensorInfo();
std::vector<TensorInfo> infos = { OverrideDataType(input0, dataType),
OverrideDataType(input1, dataType),
@@ -416,7 +416,7 @@ bool IWorkloadFactory::IsLayerConfigurationSupported(const BackendId& backendId,
{
auto cLayer = PolymorphicDowncast<const ElementwiseUnaryLayer*>(&layer);
- const TensorInfo& input = layer.GetInputSlot(0).GetConnection()->GetTensorInfo();
+ const TensorInfo& input = layer.GetInputSlot(0).GetTensorInfo();
const TensorInfo& output = layer.GetOutputSlot(0).GetTensorInfo();
result = layerSupportObject.IsElementwiseUnarySupported(OverrideDataType(input, dataType),
@@ -428,7 +428,7 @@ bool IWorkloadFactory::IsLayerConfigurationSupported(const BackendId& backendId,
case LayerType::Fill:
{
auto cLayer = PolymorphicDowncast<const FillLayer*>(&layer);
- const TensorInfo& input = layer.GetInputSlot(0).GetConnection()->GetTensorInfo();
+ const TensorInfo& input = layer.GetInputSlot(0).GetTensorInfo();
const TensorInfo& output = layer.GetOutputSlot(0).GetTensorInfo();
const FillDescriptor& descriptor = cLayer->GetParameters();
@@ -442,7 +442,7 @@ bool IWorkloadFactory::IsLayerConfigurationSupported(const BackendId& backendId,
case LayerType::FakeQuantization:
{
auto cLayer = PolymorphicDowncast<const FakeQuantizationLayer*>(&layer);
- const TensorInfo& input = layer.GetInputSlot(0).GetConnection()->GetTensorInfo();
+ const TensorInfo& input = layer.GetInputSlot(0).GetTensorInfo();
result = layerSupportObject.IsFakeQuantizationSupported(OverrideDataType(input, dataType),
cLayer->GetParameters(),
reason);
@@ -450,7 +450,7 @@ bool IWorkloadFactory::IsLayerConfigurationSupported(const BackendId& backendId,
}
case LayerType::Floor:
{
- const TensorInfo& input = layer.GetInputSlot(0).GetConnection()->GetTensorInfo();
+ const TensorInfo& input = layer.GetInputSlot(0).GetTensorInfo();
const TensorInfo& output = layer.GetOutputSlot(0).GetTensorInfo();
result = layerSupportObject.IsFloorSupported(OverrideDataType(input, dataType),
OverrideDataType(output, dataType),
@@ -460,14 +460,14 @@ bool IWorkloadFactory::IsLayerConfigurationSupported(const BackendId& backendId,
case LayerType::FullyConnected:
{
auto cLayer = PolymorphicDowncast<const FullyConnectedLayer*>(&layer);
- const TensorInfo& input = layer.GetInputSlot(0).GetConnection()->GetTensorInfo();
+ const TensorInfo& input = layer.GetInputSlot(0).GetTensorInfo();
const TensorInfo& output = layer.GetOutputSlot(0).GetTensorInfo();
const FullyConnectedDescriptor& descriptor = cLayer->GetParameters();
TensorInfo weightsInfo;
const TensorInfo* weightsInfoPtr = nullptr;
- weightsInfo = OverrideDataType(layer.GetInputSlot(1).GetConnection()->GetTensorInfo(), dataType);
+ weightsInfo = OverrideDataType(layer.GetInputSlot(1).GetTensorInfo(), dataType);
weightsInfoPtr = &weightsInfo;
TensorInfo biasInfo;
@@ -479,7 +479,7 @@ bool IWorkloadFactory::IsLayerConfigurationSupported(const BackendId& backendId,
if (descriptor.m_BiasEnabled)
{
- biasInfo = OverrideDataType(layer.GetInputSlot(2).GetConnection()->GetTensorInfo(), dataType);
+ biasInfo = OverrideDataType(layer.GetInputSlot(2).GetTensorInfo(), dataType);
biasInfoPtr = &biasInfo;
}
else
@@ -527,8 +527,8 @@ bool IWorkloadFactory::IsLayerConfigurationSupported(const BackendId& backendId,
}
case LayerType::Gather:
{
- const TensorInfo& input0 = layer.GetInputSlot(0).GetConnection()->GetTensorInfo();
- const TensorInfo& input1 = layer.GetInputSlot(1).GetConnection()->GetTensorInfo();
+ const TensorInfo& input0 = layer.GetInputSlot(0).GetTensorInfo();
+ const TensorInfo& input1 = layer.GetInputSlot(1).GetTensorInfo();
const TensorInfo& output = layer.GetOutputSlot(0).GetTensorInfo();
auto cLayer = PolymorphicDowncast<const GatherLayer*>(&layer);
const GatherDescriptor& descriptor = cLayer->GetParameters();
@@ -541,8 +541,8 @@ bool IWorkloadFactory::IsLayerConfigurationSupported(const BackendId& backendId,
}
case LayerType::GatherNd:
{
- const TensorInfo& input0 = layer.GetInputSlot(0).GetConnection()->GetTensorInfo();
- const TensorInfo& input1 = layer.GetInputSlot(1).GetConnection()->GetTensorInfo();
+ const TensorInfo& input0 = layer.GetInputSlot(0).GetTensorInfo();
+ const TensorInfo& input1 = layer.GetInputSlot(1).GetTensorInfo();
const TensorInfo& output = layer.GetOutputSlot(0).GetTensorInfo();
result = layerSupportObject.IsGatherNdSupported(OverrideDataType(input0, dataType),
input1,
@@ -561,7 +561,7 @@ bool IWorkloadFactory::IsLayerConfigurationSupported(const BackendId& backendId,
auto cLayer = PolymorphicDowncast<const InstanceNormalizationLayer*>(&layer);
const InstanceNormalizationDescriptor& descriptor = cLayer->GetParameters();
- const TensorInfo& input = layer.GetInputSlot(0).GetConnection()->GetTensorInfo();
+ const TensorInfo& input = layer.GetInputSlot(0).GetTensorInfo();
const TensorInfo& output = layer.GetOutputSlot(0).GetTensorInfo();
result = layerSupportObject.IsInstanceNormalizationSupported(
@@ -576,7 +576,7 @@ bool IWorkloadFactory::IsLayerConfigurationSupported(const BackendId& backendId,
auto cLayer = PolymorphicDowncast<const L2NormalizationLayer*>(&layer);
const L2NormalizationDescriptor& descriptor = cLayer->GetParameters();
- const TensorInfo& input = layer.GetInputSlot(0).GetConnection()->GetTensorInfo();
+ const TensorInfo& input = layer.GetInputSlot(0).GetTensorInfo();
const TensorInfo& output = layer.GetOutputSlot(0).GetTensorInfo();
result = layerSupportObject.IsL2NormalizationSupported(
@@ -590,8 +590,8 @@ bool IWorkloadFactory::IsLayerConfigurationSupported(const BackendId& backendId,
{
auto cLayer = PolymorphicDowncast<const LogicalBinaryLayer*>(&layer);
- const TensorInfo& input0 = layer.GetInputSlot(0).GetConnection()->GetTensorInfo();
- const TensorInfo& input1 = layer.GetInputSlot(1).GetConnection()->GetTensorInfo();
+ const TensorInfo& input0 = layer.GetInputSlot(0).GetTensorInfo();
+ const TensorInfo& input1 = layer.GetInputSlot(1).GetTensorInfo();
const TensorInfo& output = layer.GetOutputSlot(0).GetTensorInfo();
result = layerSupportObject.IsLogicalBinarySupported(input0,
@@ -605,7 +605,7 @@ bool IWorkloadFactory::IsLayerConfigurationSupported(const BackendId& backendId,
{
auto cLayer = PolymorphicDowncast<const LogSoftmaxLayer*>(&layer);
- const TensorInfo& input = layer.GetInputSlot(0).GetConnection()->GetTensorInfo();
+ const TensorInfo& input = layer.GetInputSlot(0).GetTensorInfo();
const TensorInfo& output = layer.GetOutputSlot(0).GetTensorInfo();
result = layerSupportObject.IsLogSoftmaxSupported(OverrideDataType(input, dataType),
@@ -620,11 +620,11 @@ bool IWorkloadFactory::IsLayerConfigurationSupported(const BackendId& backendId,
const LstmDescriptor& descriptor = cLayer->GetParameters();
// All inputs.
- const TensorInfo& input = OverrideDataType(layer.GetInputSlot(0).GetConnection()->GetTensorInfo(),
+ const TensorInfo& input = OverrideDataType(layer.GetInputSlot(0).GetTensorInfo(),
dataType);
- const TensorInfo& outputStateIn = OverrideDataType(layer.GetInputSlot(1).GetConnection()->GetTensorInfo(),
+ const TensorInfo& outputStateIn = OverrideDataType(layer.GetInputSlot(1).GetTensorInfo(),
dataType);
- const TensorInfo& cellStateIn = OverrideDataType(layer.GetInputSlot(2).GetConnection()->GetTensorInfo(),
+ const TensorInfo& cellStateIn = OverrideDataType(layer.GetInputSlot(2).GetTensorInfo(),
dataType);
// All outputs
const TensorInfo& scratchBuffer = OverrideDataType(layer.GetOutputSlot(0).GetTensorInfo(), dataType);
@@ -761,8 +761,8 @@ bool IWorkloadFactory::IsLayerConfigurationSupported(const BackendId& backendId,
case LayerType::Maximum:
{
ARMNN_NO_DEPRECATE_WARN_BEGIN
- const TensorInfo& input0 = layer.GetInputSlot(0).GetConnection()->GetTensorInfo();
- const TensorInfo& input1 = layer.GetInputSlot(1).GetConnection()->GetTensorInfo();
+ const TensorInfo& input0 = layer.GetInputSlot(0).GetTensorInfo();
+ const TensorInfo& input1 = layer.GetInputSlot(1).GetTensorInfo();
const TensorInfo& output = layer.GetOutputSlot(0).GetTensorInfo();
result = layerSupportObject.IsMaximumSupported(OverrideDataType(input0, dataType),
@@ -774,7 +774,7 @@ bool IWorkloadFactory::IsLayerConfigurationSupported(const BackendId& backendId,
}
case LayerType::MemCopy:
{
- const TensorInfo& input = layer.GetInputSlot(0).GetConnection()->GetTensorInfo();
+ const TensorInfo& input = layer.GetInputSlot(0).GetTensorInfo();
const TensorInfo& output = layer.GetOutputSlot(0).GetTensorInfo();
result = layerSupportObject.IsMemCopySupported(OverrideDataType(input, dataType),
@@ -784,7 +784,7 @@ bool IWorkloadFactory::IsLayerConfigurationSupported(const BackendId& backendId,
}
case LayerType::MemImport:
{
- const TensorInfo& input = layer.GetInputSlot(0).GetConnection()->GetTensorInfo();
+ const TensorInfo& input = layer.GetInputSlot(0).GetTensorInfo();
const TensorInfo& output = layer.GetOutputSlot(0).GetTensorInfo();
result = layerSupportObject.IsMemImportSupported(OverrideDataType(input, dataType),
@@ -794,8 +794,8 @@ bool IWorkloadFactory::IsLayerConfigurationSupported(const BackendId& backendId,
}
case LayerType::Merge:
{
- const TensorInfo& input0 = layer.GetInputSlot(0).GetConnection()->GetTensorInfo();
- const TensorInfo& input1 = layer.GetInputSlot(1).GetConnection()->GetTensorInfo();
+ const TensorInfo& input0 = layer.GetInputSlot(0).GetTensorInfo();
+ const TensorInfo& input1 = layer.GetInputSlot(1).GetTensorInfo();
const TensorInfo& output = layer.GetOutputSlot(0).GetTensorInfo();
result = layerSupportObject.IsMergeSupported(OverrideDataType(input0, dataType),
@@ -837,8 +837,8 @@ bool IWorkloadFactory::IsLayerConfigurationSupported(const BackendId& backendId,
case LayerType::Multiplication:
{
ARMNN_NO_DEPRECATE_WARN_BEGIN
- const TensorInfo& input0 = layer.GetInputSlot(0).GetConnection()->GetTensorInfo();
- const TensorInfo& input1 = layer.GetInputSlot(1).GetConnection()->GetTensorInfo();
+ const TensorInfo& input0 = layer.GetInputSlot(0).GetTensorInfo();
+ const TensorInfo& input1 = layer.GetInputSlot(1).GetTensorInfo();
const TensorInfo& output = layer.GetOutputSlot(0).GetTensorInfo();
result = layerSupportObject.IsMultiplicationSupported(
OverrideDataType(input0, dataType),
@@ -851,7 +851,7 @@ bool IWorkloadFactory::IsLayerConfigurationSupported(const BackendId& backendId,
case LayerType::Normalization:
{
auto cLayer = PolymorphicDowncast<const NormalizationLayer*>(&layer);
- const TensorInfo& input = layer.GetInputSlot(0).GetConnection()->GetTensorInfo();
+ const TensorInfo& input = layer.GetInputSlot(0).GetTensorInfo();
const TensorInfo& output = layer.GetOutputSlot(0).GetTensorInfo();
result = layerSupportObject.IsNormalizationSupported(OverrideDataType(input, dataType),
OverrideDataType(output, dataType),
@@ -861,14 +861,14 @@ bool IWorkloadFactory::IsLayerConfigurationSupported(const BackendId& backendId,
}
case LayerType::Output:
{
- const TensorInfo& output = layer.GetInputSlot(0).GetConnection()->GetTensorInfo();
+ const TensorInfo& output = layer.GetInputSlot(0).GetTensorInfo();
result = layerSupportObject.IsOutputSupported(OverrideDataType(output, dataType), reason);
break;
}
case LayerType::Permute:
{
auto cLayer = PolymorphicDowncast<const PermuteLayer*>(&layer);
- const TensorInfo& input = layer.GetInputSlot(0).GetConnection()->GetTensorInfo();
+ const TensorInfo& input = layer.GetInputSlot(0).GetTensorInfo();
const TensorInfo& output = layer.GetOutputSlot(0).GetTensorInfo();
result = layerSupportObject.IsPermuteSupported(OverrideDataType(input, dataType),
OverrideDataType(output, dataType),
@@ -879,7 +879,7 @@ bool IWorkloadFactory::IsLayerConfigurationSupported(const BackendId& backendId,
case LayerType::Pad:
{
auto cLayer = PolymorphicDowncast<const PadLayer*>(&layer);
- const TensorInfo& input = layer.GetInputSlot(0).GetConnection()->GetTensorInfo();
+ const TensorInfo& input = layer.GetInputSlot(0).GetTensorInfo();
const TensorInfo& output = layer.GetOutputSlot(0).GetTensorInfo();
result = layerSupportObject.IsPadSupported(
OverrideDataType(input, dataType),
@@ -891,7 +891,7 @@ bool IWorkloadFactory::IsLayerConfigurationSupported(const BackendId& backendId,
case LayerType::Pooling2d:
{
auto cLayer = PolymorphicDowncast<const Pooling2dLayer*>(&layer);
- const TensorInfo& input = layer.GetInputSlot(0).GetConnection()->GetTensorInfo();
+ const TensorInfo& input = layer.GetInputSlot(0).GetTensorInfo();
const TensorInfo& output = layer.GetOutputSlot(0).GetTensorInfo();
result = layerSupportObject.IsPooling2dSupported(OverrideDataType(input, dataType),
OverrideDataType(output, dataType),
@@ -902,7 +902,7 @@ bool IWorkloadFactory::IsLayerConfigurationSupported(const BackendId& backendId,
case LayerType::Pooling3d:
{
auto cLayer = PolymorphicDowncast<const Pooling3dLayer*>(&layer);
- const TensorInfo& input = layer.GetInputSlot(0).GetConnection()->GetTensorInfo();
+ const TensorInfo& input = layer.GetInputSlot(0).GetTensorInfo();
const TensorInfo& output = layer.GetOutputSlot(0).GetTensorInfo();
result = layerSupportObject.IsPooling3dSupported(OverrideDataType(input, dataType),
OverrideDataType(output, dataType),
@@ -913,7 +913,7 @@ bool IWorkloadFactory::IsLayerConfigurationSupported(const BackendId& backendId,
case LayerType::PreCompiled:
{
auto cLayer = PolymorphicDowncast<const PreCompiledLayer*>(&layer);
- const TensorInfo& input = layer.GetInputSlot(0).GetConnection()->GetTensorInfo();
+ const TensorInfo& input = layer.GetInputSlot(0).GetTensorInfo();
result = layerSupportObject.IsPreCompiledSupported(OverrideDataType(input, dataType),
cLayer->GetParameters(),
reason);
@@ -921,7 +921,7 @@ bool IWorkloadFactory::IsLayerConfigurationSupported(const BackendId& backendId,
}
case LayerType::Quantize:
{
- const TensorInfo& input = layer.GetInputSlot(0).GetConnection()->GetTensorInfo();
+ const TensorInfo& input = layer.GetInputSlot(0).GetTensorInfo();
const TensorInfo& output = layer.GetOutputSlot(0).GetTensorInfo();
result = layerSupportObject.IsQuantizeSupported(input, output, reason);
break;
@@ -932,9 +932,9 @@ bool IWorkloadFactory::IsLayerConfigurationSupported(const BackendId& backendId,
const QLstmDescriptor& descriptor = cLayer->GetParameters();
// Inputs
- const TensorInfo& input = layer.GetInputSlot(0).GetConnection()->GetTensorInfo();
- const TensorInfo& previousOutputIn = layer.GetInputSlot(1).GetConnection()->GetTensorInfo();
- const TensorInfo& previousCellStateIn = layer.GetInputSlot(2).GetConnection()->GetTensorInfo();
+ const TensorInfo& input = layer.GetInputSlot(0).GetTensorInfo();
+ const TensorInfo& previousOutputIn = layer.GetInputSlot(1).GetTensorInfo();
+ const TensorInfo& previousCellStateIn = layer.GetInputSlot(2).GetTensorInfo();
// Outputs
const TensorInfo& outputStateOut = layer.GetOutputSlot(0).GetTensorInfo();
@@ -1027,9 +1027,9 @@ bool IWorkloadFactory::IsLayerConfigurationSupported(const BackendId& backendId,
auto cLayer = PolymorphicDowncast<const QuantizedLstmLayer*>(&layer);
// Inputs
- const TensorInfo& input = layer.GetInputSlot(0).GetConnection()->GetTensorInfo();
- const TensorInfo& previousCellStateIn = layer.GetInputSlot(1).GetConnection()->GetTensorInfo();
- const TensorInfo& previousOutputIn = layer.GetInputSlot(2).GetConnection()->GetTensorInfo();
+ const TensorInfo& input = layer.GetInputSlot(0).GetTensorInfo();
+ const TensorInfo& previousCellStateIn = layer.GetInputSlot(1).GetTensorInfo();
+ const TensorInfo& previousOutputIn = layer.GetInputSlot(2).GetTensorInfo();
// Outputs
const TensorInfo& cellStateOut = layer.GetOutputSlot(0).GetTensorInfo();
@@ -1077,8 +1077,8 @@ bool IWorkloadFactory::IsLayerConfigurationSupported(const BackendId& backendId,
case LayerType::Division:
{
ARMNN_NO_DEPRECATE_WARN_BEGIN
- const TensorInfo& input0 = layer.GetInputSlot(0).GetConnection()->GetTensorInfo();
- const TensorInfo& input1 = layer.GetInputSlot(1).GetConnection()->GetTensorInfo();
+ const TensorInfo& input0 = layer.GetInputSlot(0).GetTensorInfo();
+ const TensorInfo& input1 = layer.GetInputSlot(1).GetTensorInfo();
const TensorInfo& output = layer.GetOutputSlot(0).GetTensorInfo();
result = layerSupportObject.IsDivisionSupported(
OverrideDataType(input0, dataType),
@@ -1090,7 +1090,7 @@ bool IWorkloadFactory::IsLayerConfigurationSupported(const BackendId& backendId,
}
case LayerType::Rank:
{
- const TensorInfo& input = layer.GetInputSlot(0).GetConnection()->GetTensorInfo();
+ const TensorInfo& input = layer.GetInputSlot(0).GetTensorInfo();
const TensorInfo& output = layer.GetOutputSlot(0).GetTensorInfo();
result = layerSupportObject.IsRankSupported(OverrideDataType(input, dataType),
OverrideDataType(output, dataType),
@@ -1100,7 +1100,7 @@ bool IWorkloadFactory::IsLayerConfigurationSupported(const BackendId& backendId,
case LayerType::Reshape:
{
auto cLayer = PolymorphicDowncast<const ReshapeLayer*>(&layer);
- const TensorInfo& input = layer.GetInputSlot(0).GetConnection()->GetTensorInfo();
+ const TensorInfo& input = layer.GetInputSlot(0).GetTensorInfo();
const TensorInfo& output = layer.GetOutputSlot(0).GetTensorInfo();
result = layerSupportObject.IsReshapeSupported(OverrideDataType(input, dataType),
OverrideDataType(output, dataType),
@@ -1111,7 +1111,7 @@ bool IWorkloadFactory::IsLayerConfigurationSupported(const BackendId& backendId,
case LayerType::Resize:
{
auto cLayer = PolymorphicDowncast<const ResizeLayer*>(&layer);
- const TensorInfo& input = layer.GetInputSlot(0).GetConnection()->GetTensorInfo();
+ const TensorInfo& input = layer.GetInputSlot(0).GetTensorInfo();
const TensorInfo& output = layer.GetOutputSlot(0).GetTensorInfo();
result = layerSupportObject.IsResizeSupported(OverrideDataType(input, dataType),
OverrideDataType(output, dataType),
@@ -1121,7 +1121,7 @@ bool IWorkloadFactory::IsLayerConfigurationSupported(const BackendId& backendId,
}
case LayerType::Shape:
{
- const TensorInfo& input = layer.GetInputSlot(0).GetConnection()->GetTensorInfo();
+ const TensorInfo& input = layer.GetInputSlot(0).GetTensorInfo();
const TensorInfo& output = layer.GetOutputSlot(0).GetTensorInfo();
result = layerSupportObject.IsShapeSupported(OverrideDataType(input, dataType),
@@ -1133,7 +1133,7 @@ bool IWorkloadFactory::IsLayerConfigurationSupported(const BackendId& backendId,
{
auto cLayer = PolymorphicDowncast<const SliceLayer*>(&layer);
- const TensorInfo& input = layer.GetInputSlot(0).GetConnection()->GetTensorInfo();
+ const TensorInfo& input = layer.GetInputSlot(0).GetTensorInfo();
const TensorInfo& output = layer.GetOutputSlot(0).GetTensorInfo();
result = layerSupportObject.IsSliceSupported(OverrideDataType(input, dataType),
@@ -1145,7 +1145,7 @@ bool IWorkloadFactory::IsLayerConfigurationSupported(const BackendId& backendId,
case LayerType::Softmax:
{
auto cLayer = PolymorphicDowncast<const SoftmaxLayer*>(&layer);
- const TensorInfo& input = layer.GetInputSlot(0).GetConnection()->GetTensorInfo();
+ const TensorInfo& input = layer.GetInputSlot(0).GetTensorInfo();
const TensorInfo& output = layer.GetOutputSlot(0).GetTensorInfo();
result = layerSupportObject.IsSoftmaxSupported(OverrideDataType(input, dataType),
OverrideDataType(output, dataType),
@@ -1156,7 +1156,7 @@ bool IWorkloadFactory::IsLayerConfigurationSupported(const BackendId& backendId,
case LayerType::SpaceToBatchNd:
{
auto cLayer = PolymorphicDowncast<const SpaceToBatchNdLayer*>(&layer);
- const TensorInfo& input = layer.GetInputSlot(0).GetConnection()->GetTensorInfo();
+ const TensorInfo& input = layer.GetInputSlot(0).GetTensorInfo();
const TensorInfo& output = layer.GetOutputSlot(0).GetTensorInfo();
result = layerSupportObject.IsSpaceToBatchNdSupported(OverrideDataType(input, dataType),
OverrideDataType(output, dataType),
@@ -1168,7 +1168,7 @@ bool IWorkloadFactory::IsLayerConfigurationSupported(const BackendId& backendId,
{
auto cLayer = PolymorphicDowncast<const SpaceToDepthLayer*>(&layer);
- const TensorInfo& input = layer.GetInputSlot(0).GetConnection()->GetTensorInfo();
+ const TensorInfo& input = layer.GetInputSlot(0).GetTensorInfo();
const TensorInfo& output = layer.GetOutputSlot(0).GetTensorInfo();
result = layerSupportObject.IsSpaceToDepthSupported(OverrideDataType(input, dataType),
@@ -1180,7 +1180,7 @@ bool IWorkloadFactory::IsLayerConfigurationSupported(const BackendId& backendId,
case LayerType::Splitter:
{
auto cLayer = PolymorphicDowncast<const SplitterLayer*>(&layer);
- const TensorInfo& input = layer.GetInputSlot(0).GetConnection()->GetTensorInfo();
+ const TensorInfo& input = layer.GetInputSlot(0).GetTensorInfo();
// Get vector of all outputs.
auto getTensorInfo = [&dataType](const OutputSlot& slot)
@@ -1270,7 +1270,7 @@ bool IWorkloadFactory::IsLayerConfigurationSupported(const BackendId& backendId,
case LayerType::StridedSlice:
{
auto cLayer = PolymorphicDowncast<const StridedSliceLayer*>(&layer);
- const TensorInfo& input = layer.GetInputSlot(0).GetConnection()->GetTensorInfo();
+ const TensorInfo& input = layer.GetInputSlot(0).GetTensorInfo();
const TensorInfo& output = layer.GetOutputSlot(0).GetTensorInfo();
result = layerSupportObject.IsStridedSliceSupported(OverrideDataType(input, dataType),
OverrideDataType(output, dataType),
@@ -1281,8 +1281,8 @@ bool IWorkloadFactory::IsLayerConfigurationSupported(const BackendId& backendId,
case LayerType::Subtraction:
{
ARMNN_NO_DEPRECATE_WARN_BEGIN
- const TensorInfo& input0 = layer.GetInputSlot(0).GetConnection()->GetTensorInfo();
- const TensorInfo& input1 = layer.GetInputSlot(1).GetConnection()->GetTensorInfo();
+ const TensorInfo& input0 = layer.GetInputSlot(0).GetTensorInfo();
+ const TensorInfo& input1 = layer.GetInputSlot(1).GetTensorInfo();
const TensorInfo& output = layer.GetOutputSlot(0).GetTensorInfo();
result = layerSupportObject.IsSubtractionSupported(
OverrideDataType(input0, dataType),
@@ -1294,8 +1294,8 @@ bool IWorkloadFactory::IsLayerConfigurationSupported(const BackendId& backendId,
}
case LayerType::Switch:
{
- const TensorInfo& input0 = layer.GetInputSlot(0).GetConnection()->GetTensorInfo();
- const TensorInfo& input1 = layer.GetInputSlot(1).GetConnection()->GetTensorInfo();
+ const TensorInfo& input0 = layer.GetInputSlot(0).GetTensorInfo();
+ const TensorInfo& input1 = layer.GetInputSlot(1).GetTensorInfo();
const TensorInfo& output0 = layer.GetOutputSlot(0).GetTensorInfo();
const TensorInfo& output1 = layer.GetOutputSlot(1).GetTensorInfo();
result = layerSupportObject.IsSwitchSupported(OverrideDataType(input0, dataType),
@@ -1308,7 +1308,7 @@ bool IWorkloadFactory::IsLayerConfigurationSupported(const BackendId& backendId,
case LayerType::Mean:
{
auto cLayer = PolymorphicDowncast<const MeanLayer*>(&layer);
- const TensorInfo& input = layer.GetInputSlot(0).GetConnection()->GetTensorInfo();
+ const TensorInfo& input = layer.GetInputSlot(0).GetTensorInfo();
const TensorInfo& output = layer.GetOutputSlot(0).GetTensorInfo();
result = layerSupportObject.IsMeanSupported(
OverrideDataType(input, dataType),
@@ -1320,8 +1320,8 @@ bool IWorkloadFactory::IsLayerConfigurationSupported(const BackendId& backendId,
case LayerType::Minimum:
{
ARMNN_NO_DEPRECATE_WARN_BEGIN
- const TensorInfo& input0 = layer.GetInputSlot(0).GetConnection()->GetTensorInfo();
- const TensorInfo& input1 = layer.GetInputSlot(1).GetConnection()->GetTensorInfo();
+ const TensorInfo& input0 = layer.GetInputSlot(0).GetTensorInfo();
+ const TensorInfo& input1 = layer.GetInputSlot(1).GetTensorInfo();
const TensorInfo& output = layer.GetOutputSlot(0).GetTensorInfo();
result = layerSupportObject.IsMinimumSupported(OverrideDataType(input0, dataType),
OverrideDataType(input1, dataType),
@@ -1332,8 +1332,8 @@ bool IWorkloadFactory::IsLayerConfigurationSupported(const BackendId& backendId,
}
case LayerType::Prelu:
{
- const TensorInfo& input = layer.GetInputSlot(0).GetConnection()->GetTensorInfo();
- const TensorInfo& alpha = layer.GetInputSlot(1).GetConnection()->GetTensorInfo();
+ const TensorInfo& input = layer.GetInputSlot(0).GetTensorInfo();
+ const TensorInfo& alpha = layer.GetInputSlot(1).GetTensorInfo();
const TensorInfo& output = layer.GetOutputSlot(0).GetTensorInfo();
result = layerSupportObject.IsPreluSupported(OverrideDataType(input, dataType),
OverrideDataType(alpha, dataType),
@@ -1344,7 +1344,7 @@ bool IWorkloadFactory::IsLayerConfigurationSupported(const BackendId& backendId,
case LayerType::Transpose:
{
auto cLayer = PolymorphicDowncast<const TransposeLayer*>(&layer);
- const TensorInfo& input = layer.GetInputSlot(0).GetConnection()->GetTensorInfo();
+ const TensorInfo& input = layer.GetInputSlot(0).GetTensorInfo();
const TensorInfo& output = layer.GetOutputSlot(0).GetTensorInfo();
result = layerSupportObject.IsTransposeSupported(OverrideDataType(input, dataType),
OverrideDataType(output, dataType),
@@ -1356,7 +1356,7 @@ bool IWorkloadFactory::IsLayerConfigurationSupported(const BackendId& backendId,
{
auto cLayer = PolymorphicDowncast<const TransposeConvolution2dLayer*>(&layer);
- const TensorInfo input = OverrideDataType(layer.GetInputSlot(0).GetConnection()->GetTensorInfo(),
+ const TensorInfo input = OverrideDataType(layer.GetInputSlot(0).GetTensorInfo(),
dataType);
const TensorInfo output = OverrideDataType(layer.GetOutputSlot(0).GetTensorInfo(), dataType);
@@ -1385,7 +1385,7 @@ bool IWorkloadFactory::IsLayerConfigurationSupported(const BackendId& backendId,
case LayerType::Reduce:
{
auto cLayer = PolymorphicDowncast<const ReduceLayer*>(&layer);
- const TensorInfo& input = layer.GetInputSlot(0).GetConnection()->GetTensorInfo();
+ const TensorInfo& input = layer.GetInputSlot(0).GetTensorInfo();
const TensorInfo& output = layer.GetOutputSlot(0).GetTensorInfo();
result = layerSupportObject.IsReduceSupported(OverrideDataType(input, dataType),
@@ -1400,7 +1400,7 @@ bool IWorkloadFactory::IsLayerConfigurationSupported(const BackendId& backendId,
const UnidirectionalSequenceLstmDescriptor& descriptor = cLayer->GetParameters();
// All inputs.
- const TensorInfo& input = OverrideDataType(layer.GetInputSlot(0).GetConnection()->GetTensorInfo(),
+ const TensorInfo& input = OverrideDataType(layer.GetInputSlot(0).GetTensorInfo(),
dataType);
const TensorInfo& outputStateIn = OverrideDataType(layer.GetInputSlot(1).GetConnection()->GetTensorInfo(),
dataType);
diff --git a/src/backends/tosaCommon/TosaMappings.cpp b/src/backends/tosaCommon/TosaMappings.cpp
index 3932b62b7b..6ab1b06b30 100644
--- a/src/backends/tosaCommon/TosaMappings.cpp
+++ b/src/backends/tosaCommon/TosaMappings.cpp
@@ -101,7 +101,7 @@ TosaSerializationBasicBlock* GetTosaMappingFromLayer(Layer* layer)
std::vector<const TensorInfo*> inputs;
for (auto inputSlot : layer->GetInputSlots())
{
- inputs.push_back(&inputSlot.GetConnection()->GetTensorInfo());
+ inputs.push_back(&inputSlot.GetTensorInfo());
}
std::vector<const TensorInfo*> outputs;