| 49 | NEAddMulAdd::~NEAddMulAdd() = default; |
| 50 | |
| 51 | void NEAddMulAdd::configure(ITensor *input1, |
| 52 | ITensor *input2, |
| 53 | ITensor *bn_mul, |
| 54 | ITensor *bn_add, |
| 55 | ITensor *add_output, |
| 56 | ITensor *final_output, |
| 57 | const ConvertPolicy policy, |
| 58 | const ActivationLayerInfo &act_info) |
| 59 | { |
| 60 | ARM_COMPUTE_TRACE_EVENT(ARM_COMPUTE_PROF_CAT_CPU, ARM_COMPUTE_PROF_LVL_CPU, "NEAddMulAdd::configure"); |
| 61 | ARM_COMPUTE_LOG_PARAMS(input1, input2, bn_mul, bn_add, add_output, final_output, policy, act_info); |
| 62 | |
| 63 | _impl->op = std::make_unique<cpu::CpuAddMulAdd>(); |
| 64 | _impl->op->configure(input1->info(), input2->info(), bn_mul->info(), bn_add->info(), |
| 65 | add_output != nullptr ? add_output->info() : nullptr, final_output->info(), policy, act_info); |
| 66 | |
| 67 | _impl->run_pack = { |
| 68 | {TensorType::ACL_SRC_0, input1}, {TensorType::ACL_SRC_1, input2}, {TensorType::ACL_SRC_2, bn_mul}, |
| 69 | {TensorType::ACL_SRC_3, bn_add}, {TensorType::ACL_DST_0, add_output}, {TensorType::ACL_DST_1, final_output}, |
| 70 | }; |
| 71 | |
| 72 | _impl->workspace_tensors = manage_workspace<Tensor>(_impl->op->workspace(), _impl->memory_group, _impl->run_pack); |
| 73 | } |
| 74 | |
| 75 | Status NEAddMulAdd::validate(const ITensorInfo *input1, |
| 76 | const ITensorInfo *input2, |