xref: /aosp_15_r20/external/executorch/backends/xnnpack/runtime/XNNCompiler.h (revision 523fa7a60841cd1ecfb9cc4201f1ca8b03ed023a)
1*523fa7a6SAndroid Build Coastguard Worker /*
2*523fa7a6SAndroid Build Coastguard Worker  * Copyright (c) Meta Platforms, Inc. and affiliates.
3*523fa7a6SAndroid Build Coastguard Worker  * All rights reserved.
4*523fa7a6SAndroid Build Coastguard Worker  *
5*523fa7a6SAndroid Build Coastguard Worker  * This source code is licensed under the BSD-style license found in the
6*523fa7a6SAndroid Build Coastguard Worker  * LICENSE file in the root directory of this source tree.
7*523fa7a6SAndroid Build Coastguard Worker  */
8*523fa7a6SAndroid Build Coastguard Worker 
9*523fa7a6SAndroid Build Coastguard Worker #pragma once
10*523fa7a6SAndroid Build Coastguard Worker 
11*523fa7a6SAndroid Build Coastguard Worker #include <executorch/backends/xnnpack/runtime/XNNExecutor.h>
12*523fa7a6SAndroid Build Coastguard Worker #include <executorch/runtime/platform/compiler.h>
13*523fa7a6SAndroid Build Coastguard Worker 
14*523fa7a6SAndroid Build Coastguard Worker #include <xnnpack.h>
15*523fa7a6SAndroid Build Coastguard Worker #include <memory>
16*523fa7a6SAndroid Build Coastguard Worker #include <vector>
17*523fa7a6SAndroid Build Coastguard Worker 
18*523fa7a6SAndroid Build Coastguard Worker namespace executorch {
19*523fa7a6SAndroid Build Coastguard Worker namespace backends {
20*523fa7a6SAndroid Build Coastguard Worker namespace xnnpack {
21*523fa7a6SAndroid Build Coastguard Worker namespace delegate {
22*523fa7a6SAndroid Build Coastguard Worker 
23*523fa7a6SAndroid Build Coastguard Worker class XNNCompiler {
24*523fa7a6SAndroid Build Coastguard Worker  public:
25*523fa7a6SAndroid Build Coastguard Worker   // Takes Flatbuffer Serialized XNNPACK Model and rebuilds the xnn-subgraph
26*523fa7a6SAndroid Build Coastguard Worker   // returns an executor object that holds the xnn runtime object which we
27*523fa7a6SAndroid Build Coastguard Worker   // can then use to set inputs and run inference using the xnn graph.
28*523fa7a6SAndroid Build Coastguard Worker   ET_NODISCARD static executorch::runtime::Error compileModel(
29*523fa7a6SAndroid Build Coastguard Worker       const void* buffer_pointer,
30*523fa7a6SAndroid Build Coastguard Worker       size_t num_bytes,
31*523fa7a6SAndroid Build Coastguard Worker       XNNExecutor* executor,
32*523fa7a6SAndroid Build Coastguard Worker       executorch::runtime::MemoryAllocator* runtime_allocator,
33*523fa7a6SAndroid Build Coastguard Worker       xnn_workspace_t workspace);
34*523fa7a6SAndroid Build Coastguard Worker };
35*523fa7a6SAndroid Build Coastguard Worker 
36*523fa7a6SAndroid Build Coastguard Worker } // namespace delegate
37*523fa7a6SAndroid Build Coastguard Worker } // namespace xnnpack
38*523fa7a6SAndroid Build Coastguard Worker } // namespace backends
39*523fa7a6SAndroid Build Coastguard Worker } // namespace executorch
40