61 const arm_compute::TensorInfo inputInfo0 = BuildArmComputeTensorInfo(input0Info);
62 const arm_compute::TensorInfo inputInfo1 = BuildArmComputeTensorInfo(input1Info);
63 const arm_compute::TensorInfo outputInfo0 = BuildArmComputeTensorInfo(outputInfo);
66 activationDescriptor);
74 const arm_compute::TensorInfo outputCast0 = BuildArmComputeTensorInfo(outputCast0_Info);
76 auto statusCast0 = arm_compute::CLCast::validate(&inputInfo0,
78 arm_compute::ConvertPolicy::WRAP);
81 const arm_compute::TensorInfo outputCast1 = BuildArmComputeTensorInfo(outputCast1_Info);
83 auto statusCast1 = arm_compute::CLCast::validate(&inputInfo1,
85 arm_compute::ConvertPolicy::WRAP);
89 const arm_compute::TensorInfo outputDivInfo = BuildArmComputeTensorInfo(outputDiv_Info);
91 auto statusDiv = arm_compute::CLArithmeticDivision::validate(&outputCast0,
97 const arm_compute::TensorInfo outputFloorInfo = BuildArmComputeTensorInfo(outputFloor_Info);
99 auto statusFloor = arm_compute::CLFloor::validate(&outputDivInfo,
102 auto statusCast2 = arm_compute::CLCast::validate(&outputFloorInfo,
104 arm_compute::ConvertPolicy::WRAP);
109 return arm_compute::Status(arm_compute::ErrorCode::OK);
115 auto statusDiv = arm_compute::CLArithmeticDivision::validate(&inputInfo0,
120 auto statusFloor = arm_compute::CLFloor::validate(&outputInfo0,
125 return arm_compute::Status(arm_compute::ErrorCode::OK);
128 return arm_compute::Status(arm_compute::ErrorCode::RUNTIME_ERROR,
129 "ClFloorDivWorkload: FloorDiv layer validation failed.");
134 const arm_compute::CLCompileContext& clCompileContext)
137 m_Data.ValidateInputsOutputs(
"ClFloorDivWorkload", 2, 1);
151 const arm_compute::ActivationLayerInfo activationInfo =
156 if(inputDataType == arm_compute::DataType::S32 && outputDataType == arm_compute::DataType::S32)
159 m_CastLayer0.reset(
new arm_compute::CLCast());
160 m_CastLayer1.reset(
new arm_compute::CLCast());
161 m_CastLayer2.reset(
new arm_compute::CLCast());
167 BuildArmComputeTensor(m_OutputCast0, outputCast0_Info);
168 armcomputetensorutils::InitialiseArmComputeTensorEmpty(m_OutputCast0);
171 m_CastLayer0->configure(clCompileContext, &input0, &m_OutputCast0, arm_compute::ConvertPolicy::WRAP);
177 BuildArmComputeTensor(m_OutputCast1, outputCast1_Info);
178 armcomputetensorutils::InitialiseArmComputeTensorEmpty(m_OutputCast1);
181 m_CastLayer1->configure(clCompileContext, &input1, &m_OutputCast1, arm_compute::ConvertPolicy::WRAP);
185 BuildArmComputeTensor(m_OutputDiv, outputDiv_Info);
186 armcomputetensorutils::InitialiseArmComputeTensorEmpty(m_OutputDiv);
189 m_DivLayer.configure(clCompileContext, &m_OutputCast0, &m_OutputCast1, &m_OutputDiv, activationInfo);
192 BuildArmComputeTensor(m_OutputFloor, outputDiv_Info);
193 armcomputetensorutils::InitialiseArmComputeTensorEmpty(m_OutputFloor);
196 m_FloorLayer.configure(clCompileContext, &m_OutputDiv, &m_OutputFloor);
199 m_CastLayer2->configure(clCompileContext, &m_OutputFloor, &output, arm_compute::ConvertPolicy::WRAP);
204 BuildArmComputeTensor(m_OutputDiv, outputInfo);
205 armcomputetensorutils::InitialiseArmComputeTensorEmpty(m_OutputDiv);
208 m_DivLayer.configure(clCompileContext, &input0, &input1, &m_OutputDiv, activationInfo);
211 m_FloorLayer.configure(clCompileContext, &m_OutputDiv, &output);