diff options
author | Teresa Charlin <teresa.charlinreyes@arm.com> | 2023-08-17 18:44:58 +0100 |
---|---|---|
committer | Teresa Charlin <teresa.charlinreyes@arm.com> | 2023-08-28 12:37:25 +0100 |
commit | 9145e38edf49fa4862008c163c34590141eecb14 (patch) | |
tree | 64706ef579f548b804d5b674b33f6b239c638d0f /src/backends/backendsCommon/WorkloadFactory.cpp | |
parent | e40cc8359b02a7786908294300c45b672cf6b0e4 (diff) | |
download | armnn-9145e38edf49fa4862008c163c34590141eecb14.tar.gz |
IVGCVSW-7505 Create FusedLayer and NeonFusedWorkload for AddMulAdd Neon kernel
Signed-off-by: Teresa Charlin <teresa.charlinreyes@arm.com>
Change-Id: Ic778d35b001474b44fb1e433a6fe276e4ec9f565
Diffstat (limited to 'src/backends/backendsCommon/WorkloadFactory.cpp')
-rw-r--r-- | src/backends/backendsCommon/WorkloadFactory.cpp | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/src/backends/backendsCommon/WorkloadFactory.cpp b/src/backends/backendsCommon/WorkloadFactory.cpp index f067056ce1..6ff237bc12 100644 --- a/src/backends/backendsCommon/WorkloadFactory.cpp +++ b/src/backends/backendsCommon/WorkloadFactory.cpp @@ -525,6 +525,36 @@ bool IWorkloadFactory::IsLayerConfigurationSupported(const BackendId& backendId, reason); break; } + case LayerType::Fused: + { + auto cLayer = PolymorphicDowncast<const FusedLayer*>(&layer); + + // Get vector of all outputs. + auto getOutTensorInfo = [&dataType](const OutputSlot& slot) + { + return OverrideDataType(slot.GetTensorInfo(), dataType); + }; + auto beginOutputs = MakeTransformIterator(layer.GetOutputSlots().begin(), getOutTensorInfo); + auto endOutputs = MakeTransformIterator(layer.GetOutputSlots().end(), getOutTensorInfo); + std::vector<TensorInfo> outputs(beginOutputs, endOutputs); + const std::vector<std::reference_wrapper<TensorInfo>> outputPtrs(outputs.begin(), outputs.end()); + + // Get vector of all inputs. + auto getInputTensorInfo = [&dataType](const InputSlot& slot) + { + return OverrideDataType(slot.GetTensorInfo(), dataType); + }; + auto beginInputs = MakeTransformIterator(layer.GetInputSlots().begin(), getInputTensorInfo); + auto endInputs = MakeTransformIterator(layer.GetInputSlots().end(), getInputTensorInfo); + std::vector<TensorInfo> inputs(beginInputs, endInputs); + const std::vector<std::reference_wrapper<TensorInfo>> inputPtrs(inputs.begin(), inputs.end()); + + result = layerSupportObject.IsFusedSupported(inputPtrs, + outputPtrs, + cLayer->GetParameters(), + reason); + break; + } case LayerType::Gather: { const TensorInfo& input0 = layer.GetInputSlot(0).GetTensorInfo(); |