| 75 | }; |
| 76 | |
| 77 | Status validate_arguments(const ITensorInfo *src, const ITensorInfo *dst, ConvertPolicy policy) |
| 78 | { |
| 79 | ARM_COMPUTE_RETURN_ERROR_ON_NULLPTR(src, dst); |
| 80 | ARM_COMPUTE_RETURN_ERROR_ON_SIZE_UNSUPPORTED(src); |
| 81 | ARM_COMPUTE_RETURN_ERROR_ON_CPU_F16_UNSUPPORTED(src); |
| 82 | ARM_COMPUTE_RETURN_ERROR_ON_CPU_F16_UNSUPPORTED(dst); |
| 83 | ARM_COMPUTE_UNUSED(policy); |
| 84 | ARM_COMPUTE_RETURN_ERROR_ON(src == dst); |
| 85 | #ifdef __aarch64__ |
| 86 | ARM_COMPUTE_RETURN_ERROR_ON_DATA_TYPE_CHANNEL_NOT_IN(src, 1, DataType::QASYMM8_SIGNED, DataType::QASYMM8, |
| 87 | DataType::U8, DataType::S16, DataType::U16, DataType::F16, |
| 88 | DataType::F32, DataType::S32, DataType::S64, DataType::U64); |
| 89 | |
| 90 | ARM_COMPUTE_RETURN_ERROR_ON_DATA_TYPE_CHANNEL_NOT_IN(dst, 1, DataType::QASYMM8_SIGNED, DataType::QASYMM8, |
| 91 | DataType::U8, DataType::S16, DataType::U16, DataType::F16, |
| 92 | DataType::U32, DataType::S32, DataType::F32, DataType::S64); |
| 93 | |
| 94 | #else // __aarch64__ |
| 95 | ARM_COMPUTE_RETURN_ERROR_ON_DATA_TYPE_CHANNEL_NOT_IN(src, 1, DataType::QASYMM8_SIGNED, DataType::QASYMM8, |
| 96 | DataType::U8, DataType::S16, DataType::U16, DataType::F16, |
| 97 | DataType::F32, DataType::S32); |
| 98 | |
| 99 | ARM_COMPUTE_RETURN_ERROR_ON_DATA_TYPE_CHANNEL_NOT_IN(dst, 1, DataType::QASYMM8_SIGNED, DataType::QASYMM8, |
| 100 | DataType::U8, DataType::S16, DataType::U16, DataType::F16, |
| 101 | DataType::U32, DataType::S32, DataType::F32); |
| 102 | #endif // __aarch64__ |
| 103 | |
| 104 | ARM_COMPUTE_RETURN_ERROR_ON_MSG(src->data_type() == DataType::QASYMM8_SIGNED && |
| 105 | (dst->data_type() != DataType::S16 && dst->data_type() != DataType::S32 && |
| 106 | dst->data_type() != DataType::F16 && dst->data_type() != DataType::F32), |
| 107 | "Only data_types supported [in] QASYMM8 -> [out] U16, S16, S32, F16, F32"); |
| 108 | |
| 109 | ARM_COMPUTE_RETURN_ERROR_ON_MSG(src->data_type() == DataType::QASYMM8 && |
| 110 | (dst->data_type() != DataType::S16 && dst->data_type() != DataType::U16 && |
| 111 | dst->data_type() != DataType::S32 && dst->data_type() != DataType::F16 && |
| 112 | dst->data_type() != DataType::F32), |
| 113 | "Only data_types supported [in] QASYMM8 -> [out] U16, S16, S32, F16, F32"); |
| 114 | |
| 115 | ARM_COMPUTE_RETURN_ERROR_ON_MSG(src->data_type() == DataType::U8 && |
| 116 | (dst->data_type() != DataType::S16 && dst->data_type() != DataType::U16 && |
| 117 | dst->data_type() != DataType::S32 && dst->data_type() != DataType::F16 && |
| 118 | dst->data_type() != DataType::F32), |
| 119 | "Only data_types supported [in] U8 -> [out] U16, S16, S32, F16, F32"); |
| 120 | |
| 121 | ARM_COMPUTE_RETURN_ERROR_ON_MSG(src->data_type() == DataType::U16 && |
| 122 | (dst->data_type() != DataType::U8 && dst->data_type() != DataType::U32), |
| 123 | "Only data_types supported [in] U16 -> [out] U8, U32"); |
| 124 | |
| 125 | ARM_COMPUTE_RETURN_ERROR_ON_MSG(src->data_type() == DataType::S16 && |
| 126 | (dst->data_type() != DataType::QASYMM8_SIGNED && |
| 127 | dst->data_type() != DataType::U8 && dst->data_type() != DataType::S32), |
| 128 | "Only data_types supported [in] S16 -> [out] U8, S32"); |
| 129 | |
| 130 | ARM_COMPUTE_RETURN_ERROR_ON_MSG(src->data_type() == DataType::F16 && |
| 131 | (dst->data_type() != DataType::QASYMM8_SIGNED && |
| 132 | dst->data_type() != DataType::QASYMM8 && dst->data_type() != DataType::U8 && |
| 133 | dst->data_type() != DataType::F32 && dst->data_type() != DataType::S32), |
| 134 | "Only data_types supported [in] F16 -> [out] QASYMM8, F32, S32, U8"); |
no test coverage detected