| 64 | } |
| 65 | |
| 66 | Status validate_arguments(const ITensorInfo *src, const ITensorInfo *dst, const ScaleKernelInfo &info) |
| 67 | { |
| 68 | ARM_COMPUTE_RETURN_ERROR_ON_NULLPTR(src, dst); |
| 69 | ARM_COMPUTE_RETURN_ERROR_ON_SIZE_UNSUPPORTED(src, dst); |
| 70 | ARM_COMPUTE_RETURN_ERROR_ON_F16_UNSUPPORTED(src); |
| 71 | ARM_COMPUTE_RETURN_ERROR_ON_DATA_TYPE_CHANNEL_NOT_IN(src, 1, DataType::QASYMM8, DataType::QASYMM8_SIGNED, |
| 72 | DataType::U8, DataType::S16, DataType::F16, DataType::F32); |
| 73 | ARM_COMPUTE_RETURN_ERROR_ON_MISMATCHING_DATA_TYPES(src, dst); |
| 74 | ARM_COMPUTE_RETURN_ERROR_ON_MISMATCHING_QUANTIZATION_INFO(src, dst); |
| 75 | ARM_COMPUTE_RETURN_ERROR_ON(dst == src); |
| 76 | ARM_COMPUTE_RETURN_ERROR_ON(src->num_channels() != 1); |
| 77 | ARM_COMPUTE_RETURN_ERROR_ON( |
| 78 | info.align_corners && |
| 79 | !arm_compute::scale_utils::is_align_corners_allowed_sampling_policy(info.sampling_policy)); |
| 80 | ARM_COMPUTE_RETURN_ERROR_ON(is_data_type_quantized(src->data_type()) && |
| 81 | !is_data_type_quantized_asymmetric(src->data_type())); |
| 82 | |
| 83 | float scale_x = 0.f; |
| 84 | float scale_y = 0.f; |
| 85 | const DataLayout data_layout = info.data_layout == DataLayout::UNKNOWN ? src->data_layout() : info.data_layout; |
| 86 | std::tie(scale_x, scale_y) = calculate_scale_factors(src, dst, data_layout, info.align_corners); |
| 87 | |
| 88 | ARM_COMPUTE_RETURN_ERROR_ON(info.interpolation_policy == InterpolationPolicy::AREA && |
| 89 | (scale_x > 1.f || scale_y > 1.f)); |
| 90 | |
| 91 | return Status{}; |
| 92 | } |
| 93 | } // namespace |
| 94 | |
| 95 | Status ClScaleKernel::validate(const ITensorInfo *src, const ITensorInfo *dst, const ScaleKernelInfo &info) |
no test coverage detected