blob: fd0728c8cdc0b6882c34fbeee3237aeaafd9bdf4 [file] [log] [blame]
Mohamed Nour Abouelseoud7420e552018-10-12 12:26:24 +01001//
2// Copyright © 2017 Arm Ltd. All rights reserved.
3// SPDX-License-Identifier: MIT
4//
5
6#include "RefPadWorkload.hpp"
7
Matthew Sloyan2e5d0b22021-10-21 14:05:31 +01008#include "MirrorPad.hpp"
Mohamed Nour Abouelseoud7420e552018-10-12 12:26:24 +01009#include "Pad.hpp"
Mohamed Nour Abouelseoud7420e552018-10-12 12:26:24 +010010#include "Profiling.hpp"
Sadik Armagan041b3c02020-06-04 10:32:18 +010011#include "RefWorkloadUtils.hpp"
Mohamed Nour Abouelseoud7420e552018-10-12 12:26:24 +010012
13namespace armnn
14{
15
Sadik Armagan041b3c02020-06-04 10:32:18 +010016void RefPadWorkload::Execute() const
Mohamed Nour Abouelseoud7420e552018-10-12 12:26:24 +010017{
Finn Williamsb8181f72021-04-07 10:23:21 +010018 Execute(m_Data.m_Inputs, m_Data.m_Outputs);
19}
20
21void RefPadWorkload::ExecuteAsync(WorkingMemDescriptor &workingMemDescriptor)
22{
23 Execute(workingMemDescriptor.m_Inputs, workingMemDescriptor.m_Outputs);
24}
25
26void RefPadWorkload::Execute(std::vector<ITensorHandle*> inputs, std::vector<ITensorHandle*> outputs) const
27{
Mohamed Nour Abouelseoud7420e552018-10-12 12:26:24 +010028 ARMNN_SCOPED_PROFILING_EVENT(Compute::CpuRef, "RefPadWorkload_Execute");
29
Finn Williamsb8181f72021-04-07 10:23:21 +010030 const TensorInfo& inputInfo = GetTensorInfo(inputs[0]);
31 const TensorInfo& outputInfo = GetTensorInfo(outputs[0]);
Mohamed Nour Abouelseoud7420e552018-10-12 12:26:24 +010032
Matthew Sloyan2e5d0b22021-10-21 14:05:31 +010033 PaddingMode paddingMode = m_Data.m_Parameters.m_PaddingMode;
34 if (paddingMode == PaddingMode::Constant)
35 {
36 armnn::Pad(inputInfo, outputInfo, inputs[0], outputs[0], m_Data);
37 }
38 else if(paddingMode == PaddingMode::Reflect || paddingMode == PaddingMode::Symmetric)
39 {
40 armnn::MirrorPad(inputInfo, outputInfo, inputs[0], outputs[0], m_Data);
41 }
42 else
43 {
44 throw InvalidArgumentException("Padding mode not supported.");
45 }
Mohamed Nour Abouelseoud7420e552018-10-12 12:26:24 +010046}
47
Mohamed Nour Abouelseoud7420e552018-10-12 12:26:24 +010048} //namespace armnn