// // Copyright © 2017 Arm Ltd. All rights reserved. // See LICENSE file in the project root for full license information. // #include "NeonDepthwiseConvolutionBaseWorkload.hpp" #include "backends/ArmComputeTensorUtils.hpp" namespace armnn { arm_compute::Status NeonDepthwiseConvolutionWorkloadValidate(const TensorInfo& input, const TensorInfo& output, const DepthwiseConvolution2dDescriptor& descriptor, const TensorInfo& weights, const TensorInfo& biases) { const arm_compute::TensorInfo aclInputInfo = armcomputetensorutils::BuildArmComputeTensorInfo(input); const arm_compute::TensorInfo aclOutputInfo = armcomputetensorutils::BuildArmComputeTensorInfo(output); const arm_compute::TensorInfo aclWeightsInfo = armcomputetensorutils::BuildArmComputeTensorInfo(weights); arm_compute::TensorInfo aclBiasesInfo; arm_compute::TensorInfo *optionalAclBiasesInfo = nullptr; if (descriptor.m_BiasEnabled) { aclBiasesInfo = armcomputetensorutils::BuildArmComputeTensorInfo(biases); optionalAclBiasesInfo = &aclBiasesInfo; } const arm_compute::PadStrideInfo aclPadStrideInfo = armcomputetensorutils::BuildArmComputePadStrideInfo(descriptor); const unsigned int aclDepthMultiplier = weights.GetShape()[0]; return arm_compute::NEDepthwiseConvolutionLayer::validate(&aclInputInfo, &aclWeightsInfo, optionalAclBiasesInfo, &aclOutputInfo, aclPadStrideInfo, aclDepthMultiplier); } }