MCPcopy Create free account
hub / github.com/ARM-software/ComputeLibrary / validate_arguments

Function validate_arguments

src/cpu/kernels/CpuSubKernel.cpp:86–126  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

84};
85
86inline Status
87validate_arguments(const ITensorInfo &src0, const ITensorInfo &src1, const ITensorInfo &dst, ConvertPolicy policy)
88{
89 ARM_COMPUTE_UNUSED(policy);
90 ARM_COMPUTE_RETURN_ERROR_ON_CPU_F16_UNSUPPORTED(&src0);
91 ARM_COMPUTE_RETURN_ERROR_ON_DATA_TYPE_CHANNEL_NOT_IN(&src0, 1, DataType::U8, DataType::QASYMM8,
92 DataType::QASYMM8_SIGNED, DataType::QSYMM16, DataType::S16,
93 DataType::S32, DataType::F16, DataType::F32);
94 ARM_COMPUTE_RETURN_ERROR_ON_MISMATCHING_DATA_TYPES(&src0, &src1);
95 ARM_COMPUTE_RETURN_ERROR_ON_SIZE_UNSUPPORTED(&src0, &src1);
96
97 const auto can_use_fixedpoint = sub_q8_neon_fixedpoint_possible(&src0, &src1, &dst);
98 const auto can_use_sme2_add_impl = false;
99
100 const auto uk =
101 CpuSubKernel::get_implementation<CpuSubKernelDataTypeISASelectorData>(CpuSubKernelDataTypeISASelectorData{
102 src0.data_type(), CPUInfo::get().get_isa(), can_use_fixedpoint, can_use_sme2_add_impl});
103
104 ARM_COMPUTE_RETURN_ERROR_ON(uk == nullptr || uk->ukernel == nullptr);
105
106 const TensorShape out_shape = TensorShape::broadcast_shape(src0.tensor_shape(), src1.tensor_shape());
107 ARM_COMPUTE_RETURN_ERROR_ON_MSG(out_shape.total_size() == 0, "Inputs are not broadcast compatible");
108
109 ARM_COMPUTE_RETURN_ERROR_ON_MSG(is_data_type_quantized(src0.data_type()) && (policy == ConvertPolicy::WRAP),
110 "Convert policy cannot be WRAP if datatype is quantized");
111
112 // Validate in case of configured dst
113 if (dst.total_size() > 0)
114 {
115 ARM_COMPUTE_RETURN_ERROR_ON_MISMATCHING_DATA_TYPES(&src0, &dst);
116 ARM_COMPUTE_RETURN_ERROR_ON_MSG(detail::have_different_dimensions(out_shape, dst.tensor_shape(), 0),
117 "Wrong shape for dst");
118 ARM_COMPUTE_RETURN_ERROR_ON_SIZE_UNSUPPORTED(&dst);
119 }
120 else
121 {
122 const auto dst_info = TensorInfo(out_shape, 1, src0.data_type());
123 ARM_COMPUTE_RETURN_ERROR_ON_SIZE_UNSUPPORTED(&dst_info);
124 }
125 return Status{};
126}
127} // namespace
128
129void CpuSubKernel::configure(const ITensorInfo *src0, const ITensorInfo *src1, ITensorInfo *dst, ConvertPolicy policy)

Callers 5

configureMethod · 0.70
validateMethod · 0.70
validate_argumentsMethod · 0.70
configureMethod · 0.70
validateMethod · 0.70

Calls 7

is_data_type_quantizedFunction · 0.85
get_isaMethod · 0.80
TensorInfoClass · 0.50
data_typeMethod · 0.45
total_sizeMethod · 0.45

Tested by

no test coverage detected