19 TensorInfo newTensorInfo(tensorInfo);
27 for (
const auto& tensorInfo : tensorInfos)
42 for (
const auto& status : statuses)
44 if(status.error_code() != arm_compute::ErrorCode::OK)
58 const arm_compute::TensorInfo inputInfo0 = BuildArmComputeTensorInfo(input0Info);
59 const arm_compute::TensorInfo inputInfo1 = BuildArmComputeTensorInfo(input1Info);
60 const arm_compute::TensorInfo outputInfo0 = BuildArmComputeTensorInfo(outputInfo);
63 activationDescriptor);
71 const arm_compute::TensorInfo outputCast0 = BuildArmComputeTensorInfo(outputCast0_Info);
73 auto statusCast0 = arm_compute::NECast::validate(&inputInfo0,
75 arm_compute::ConvertPolicy::WRAP);
78 const arm_compute::TensorInfo outputCast1 = BuildArmComputeTensorInfo(outputCast1_Info);
80 auto statusCast1 = arm_compute::NECast::validate(&inputInfo1,
82 arm_compute::ConvertPolicy::WRAP);
86 const arm_compute::TensorInfo outputDivInfo = BuildArmComputeTensorInfo(outputDiv_Info);
88 auto statusDiv = arm_compute::NEElementwiseDivision::validate(&outputCast0,
94 const arm_compute::TensorInfo outputFloorInfo = BuildArmComputeTensorInfo(outputFloor_Info);
96 auto statusFloor = arm_compute::NEFloor::validate(&outputDivInfo,
99 auto statusCast2 = arm_compute::NECast::validate(&outputFloorInfo,
101 arm_compute::ConvertPolicy::WRAP);
112 auto statusDiv = arm_compute::NEElementwiseDivision::validate(&inputInfo0,
117 auto statusFloor = arm_compute::NEFloor::validate(&outputInfo0,
126 "NeonFloorDivValidation: FloorDiv layer validation failed.");
139 arm_compute::ITensor& input0 = PolymorphicDowncast<IAclTensorHandle*>(
m_Data.
m_Inputs[0])->GetTensor();
140 arm_compute::ITensor& input1 = PolymorphicDowncast<IAclTensorHandle*>(
m_Data.
m_Inputs[1])->GetTensor();
141 arm_compute::ITensor& output = PolymorphicDowncast<IAclTensorHandle*>(
m_Data.
m_Outputs[0])->GetTensor();
147 const arm_compute::ActivationLayerInfo activationInfo =
152 if(inputDataType == arm_compute::DataType::S32 && outputDataType == arm_compute::DataType::S32)
155 m_CastLayer0.reset(
new arm_compute::NECast());
156 m_CastLayer1.reset(
new arm_compute::NECast());
157 m_CastLayer2.reset(
new arm_compute::NECast());
163 BuildArmComputeTensor(m_OutputCast0, outputCast0_Info);
164 armcomputetensorutils::InitialiseArmComputeTensorEmpty(m_OutputCast0);
167 m_CastLayer0->configure(&input0, &m_OutputCast0, arm_compute::ConvertPolicy::WRAP);
173 BuildArmComputeTensor(m_OutputCast1, outputCast1_Info);
174 armcomputetensorutils::InitialiseArmComputeTensorEmpty(m_OutputCast1);
177 m_CastLayer1->configure(&input1, &m_OutputCast1, arm_compute::ConvertPolicy::WRAP);
181 BuildArmComputeTensor(m_OutputDiv, outputDiv_Info);
182 armcomputetensorutils::InitialiseArmComputeTensorEmpty(m_OutputDiv);
185 m_DivLayer.configure(&m_OutputCast0, &m_OutputCast1, &m_OutputDiv, activationInfo);
188 BuildArmComputeTensor(m_OutputFloor, outputDiv_Info);
189 armcomputetensorutils::InitialiseArmComputeTensorEmpty(m_OutputFloor);
192 m_FloorLayer.configure(&m_OutputDiv, &m_OutputFloor);
195 m_CastLayer2->configure(&m_OutputFloor, &output, arm_compute::ConvertPolicy::WRAP);
200 BuildArmComputeTensor(m_OutputDiv, outputInfo);
201 armcomputetensorutils::InitialiseArmComputeTensorEmpty(m_OutputDiv);
204 m_DivLayer.configure(&input0, &input1, &m_OutputDiv, activationInfo);
207 m_FloorLayer.configure(&m_OutputDiv, &output);
215 if(m_CastLayer0 && m_CastLayer1)
221 m_CastLayer0.reset();
222 m_CastLayer1.reset();
231 m_CastLayer2.reset();