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