blob: a2bf1a077f8dbdf51c937a46d8690ffcfb75b6fd [file] [log] [blame]
// 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 <stdlib.h>
#include <xnnpack.h>
#include <xnnpack/allocator.h>
#include <xnnpack/log.h>
#include <xnnpack/operator.h>
#include <xnnpack/params.h>
#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;
}