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);
106 return arm_compute::Status(arm_compute::ErrorCode::OK);
112 auto statusDiv = arm_compute::NEElementwiseDivision::validate(&inputInfo0,
117 auto statusFloor = arm_compute::NEFloor::validate(&outputInfo0,
122 return arm_compute::Status(arm_compute::ErrorCode::OK);
125 return arm_compute::Status(arm_compute::ErrorCode::RUNTIME_ERROR,
126 "NeonFloorDivValidation: FloorDiv layer validation failed.");
133 m_Data.ValidateInputsOutputs(
"NeonFloorDivWorkload", 2, 1);
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);
arm_compute::Status NeonFloorDivWorkloadValidate(const TensorInfo &input0Info, const TensorInfo &input1Info, const TensorInfo &outputInfo, const ActivationDescriptor *activationDescriptor)
Validation for the Floor Div Workload.