| 71 | } |
| 72 | |
| 73 | std::tuple<IOperator *, StatusCode> CpuContext::create_activation(const AclTensorDescriptor &src, |
| 74 | const AclTensorDescriptor &dst, |
| 75 | const AclActivationDescriptor &act, |
| 76 | bool is_validate) |
| 77 | { |
| 78 | TensorInfo src_info = detail::convert_to_legacy_tensor_info(src); |
| 79 | TensorInfo dst_info = detail::convert_to_legacy_tensor_info(dst); |
| 80 | auto info = detail::convert_to_activation_info(act); |
| 81 | |
| 82 | if (is_validate && |
| 83 | !bool(CpuActivation::validate(&src_info.set_is_resizable(false), &dst_info.set_is_resizable(false), info))) |
| 84 | { |
| 85 | return std::make_tuple(nullptr, StatusCode::UnsupportedConfig); |
| 86 | } |
| 87 | |
| 88 | auto act_op = std::make_unique<cpu::CpuActivation>(); |
| 89 | act_op->configure(&src_info, &dst_info, info); |
| 90 | |
| 91 | auto op = new arm_compute::IOperator(static_cast<IContext *>(this)); |
| 92 | if (op == nullptr) |
| 93 | { |
| 94 | ARM_COMPUTE_LOG_ERROR_ACL("Couldn't allocate internal resources"); |
| 95 | return std::make_tuple(nullptr, StatusCode::OutOfMemory); |
| 96 | } |
| 97 | op->set_internal_operator(std::move(act_op)); |
| 98 | |
| 99 | return std::make_tuple(op, StatusCode::Success); |
| 100 | } |
| 101 | } // namespace cpu |
| 102 | } // namespace arm_compute |
no test coverage detected