// Copyright (c) Facebook, Inc. and its affiliates. // All rights reserved. // // Copyright 2019 Google LLC // // This source code is licensed under the BSD-style license found in the // LICENSE file in the root directory of this source tree. #include #include #include #include #include #include #if XNN_PLATFORM_JIT static void xnn_release_jit_ukernel(struct xnn_ukernel ukernel) { switch (ukernel.type) { case xnn_ukernel_type_gemm: xnn_release_code_memory(&ukernel.gemm.general_code_buffer); xnn_release_code_memory(&ukernel.gemm.mr1_code_buffer); break; default: break; // Do nothing, only GEMMs have JIT kernels now. } } #endif // XNN_PLATFORM_JIT enum xnn_status xnn_delete_operator(xnn_operator_t op) { if ((xnn_params.init_flags & XNN_INIT_FLAG_XNNPACK) == 0) { xnn_log_error("failed to delete operator: XNNPACK is not initialized"); return xnn_status_uninitialized; } if (op == NULL) { return xnn_status_invalid_parameter; } xnn_release_memory(op->indirection_buffer); xnn_release_simd_memory(op->packed_weights); xnn_release_simd_memory(op->zero_buffer); xnn_release_memory(op->pixelwise_buffer); xnn_release_memory(op->subconvolution_buffer); xnn_release_simd_memory(op->lookup_table); #if XNN_PLATFORM_JIT xnn_release_jit_ukernel(op->ukernel); #endif // XNN_PLATFORM_JIT xnn_release_simd_memory(op); return xnn_status_success; }