// Copyright 2020 The IREE Authors // // Licensed under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception #include "runtime/bindings/tflite/options.h" #include "runtime/bindings/tflite/shim.h" void _TfLiteInterpreterOptionsSetDefaults(TfLiteInterpreterOptions* options) { options->num_threads = -1; } TFL_CAPI_EXPORT extern TfLiteInterpreterOptions* TfLiteInterpreterOptionsCreate() { iree_allocator_t allocator = iree_allocator_system(); IREE_TRACE_ZONE_BEGIN(z0); TfLiteInterpreterOptions* options = NULL; iree_status_t status = iree_allocator_malloc(allocator, sizeof(*options), (void**)&options); if (!iree_status_is_ok(iree_status_consume_code(status))) { IREE_TRACE_MESSAGE(ERROR, "failed options allocation"); IREE_TRACE_ZONE_END(z0); return NULL; } memset(options, 0, sizeof(*options)); options->allocator = allocator; _TfLiteInterpreterOptionsSetDefaults(options); IREE_TRACE_ZONE_END(z0); return options; } TFL_CAPI_EXPORT extern void TfLiteInterpreterOptionsDelete( TfLiteInterpreterOptions* options) { IREE_TRACE_ZONE_BEGIN(z0); iree_allocator_free(options->allocator, options); IREE_TRACE_ZONE_END(z0); } TFL_CAPI_EXPORT extern void TfLiteInterpreterOptionsSetNumThreads( TfLiteInterpreterOptions* options, int32_t num_threads) { IREE_TRACE_ZONE_BEGIN(z0); IREE_TRACE_ZONE_APPEND_VALUE_I64(z0, num_threads); options->num_threads = num_threads; IREE_TRACE_ZONE_END(z0); } TFL_CAPI_EXPORT extern void TfLiteInterpreterOptionsAddDelegate( TfLiteInterpreterOptions* options, TfLiteDelegate* delegate) { IREE_TRACE_ZONE_BEGIN(z0); // Silently ignored as if it never tried to take an ops for itself. IREE_TRACE_MESSAGE(WARNING, "TfLiteInterpreterOptionsAddDelegate: delegates are " "unsupported and ignored in the IREE tflite shim"); IREE_TRACE_ZONE_END(z0); } TFL_CAPI_EXPORT extern void TfLiteInterpreterOptionsSetErrorReporter( TfLiteInterpreterOptions* options, void (*reporter)(void* user_data, const char* format, va_list args), void* user_data) { IREE_TRACE_ZONE_BEGIN(z0); options->reporter = reporter; options->reporter_user_data = user_data; IREE_TRACE_ZONE_END(z0); } TFL_CAPI_EXPORT extern void TfLiteInterpreterOptionsSetUseNNAPI( TfLiteInterpreterOptions* options, bool enable) { IREE_TRACE_ZONE_BEGIN(z0); // Silently ignored as if it wasn't present. if (enable) { IREE_TRACE_ZONE_APPEND_TEXT(z0, "enabled", strlen("enabled")); IREE_TRACE_MESSAGE(WARNING, "TfLiteInterpreterOptionsSetUseNNAPI: the NNAPI is " "unsupported and ignored in the IREE tflite shim"); } else { IREE_TRACE_ZONE_APPEND_TEXT(z0, "enabled", strlen("disabled")); } IREE_TRACE_ZONE_END(z0); }