// // Copyright © 2017 Arm Ltd. All rights reserved. // See LICENSE file in the project root for full license information. // #include "ClConvolution2dBaseWorkload.hpp" #include "backends/ClLayerSupport.hpp" #include "backends/ClTensorHandle.hpp" #include "backends/ArmComputeUtils.hpp" #include "backends/ArmComputeTensorUtils.hpp" namespace armnn { using namespace armcomputetensorutils; arm_compute::Status ClConvolution2dWorkloadValidate(const TensorInfo& input, const TensorInfo& output, const Convolution2dDescriptor& descriptor, const TensorInfo& weights, const TensorInfo& biases) { const arm_compute::TensorInfo aclInputInfo = BuildArmComputeTensorInfo(input); const arm_compute::TensorInfo aclOutputInfo = BuildArmComputeTensorInfo(output); const arm_compute::TensorInfo aclWeightsInfo = BuildArmComputeTensorInfo(weights); arm_compute::TensorInfo aclBiasesInfo; arm_compute::TensorInfo *optionalAclBiasesInfo = nullptr; if (descriptor.m_BiasEnabled) { aclBiasesInfo = BuildArmComputeTensorInfo(biases); optionalAclBiasesInfo = &aclBiasesInfo; } arm_compute::PadStrideInfo layerInfo = BuildArmComputePadStrideInfo(descriptor); return arm_compute::CLConvolutionLayer::validate(&aclInputInfo, &aclWeightsInfo, optionalAclBiasesInfo, &aclOutputInfo, layerInfo); } }