| // 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 | |
| #ifndef IREE_BINDINGS_TFLITE_MODEL_H_ | |
| #define IREE_BINDINGS_TFLITE_MODEL_H_ | |
| #include "iree/base/api.h" | |
| #include "iree/base/internal/atomics.h" | |
| #include "iree/vm/api.h" | |
| // NOTE: we pull in our own copy here in case the tflite API changes upstream. | |
| #define TFL_COMPILE_LIBRARY 1 | |
| #include "runtime/bindings/tflite/include/tensorflow/lite/c/c_api.h" | |
| #include "runtime/bindings/tflite/include/tensorflow/lite/c/c_api_experimental.h" | |
| typedef struct _TfLiteModelExports { | |
| iree_vm_function_t _reset_variables; | |
| iree_vm_function_t _query_input_shape; | |
| iree_vm_function_t _resize_input_shape; | |
| iree_vm_function_t _query_output_shape; | |
| iree_vm_function_t _main; | |
| } _TfLiteModelExports; | |
| struct TfLiteModel { | |
| iree_atomic_ref_count_t ref_count; | |
| iree_allocator_t allocator; | |
| void* owned_model_data; | |
| // HACK: no public API that allows us to share this without spooky action | |
| // at a distance. Today it's ok for these to be unique as we don't check that | |
| // they are consistent and all instances have the same types registered. | |
| iree_vm_instance_t* instance; | |
| iree_vm_module_t* module; | |
| _TfLiteModelExports exports; | |
| int32_t input_count; | |
| int32_t output_count; | |
| }; | |
| void _TfLiteModelRetain(TfLiteModel* model); | |
| void _TfLiteModelRelease(TfLiteModel* model); | |
| #endif // IREE_BINDINGS_TFLITE_MODEL_H_ |