1 // Copyright 2019 Google LLC
2 //
3 // This source code is licensed under the BSD-style license found in the
4 // LICENSE file in the root directory of this source tree.
5 
6 #pragma once
7 
8 #include <xnnpack.h>
9 
10 #include <memory>
11 #include <vector>
12 
13 namespace models {
14 
15 typedef std::vector<std::unique_ptr<xnn_operator, decltype(&xnn_delete_operator)>> ExecutionPlan;
16 typedef ExecutionPlan (*ExecutionPlanFactory)(pthreadpool_t threadpool);
17 
18 ExecutionPlan FP32MobileNetV1(pthreadpool_t threadpool);
19 ExecutionPlan FP32MobileNetV2(pthreadpool_t threadpool);
20 ExecutionPlan FP32MobileNetV3Large(pthreadpool_t threadpool);
21 ExecutionPlan FP32MobileNetV3Small(pthreadpool_t threadpool);
22 
23 ExecutionPlan FP32SparseMobileNetV1(float sparsity, pthreadpool_t threadpool);
24 ExecutionPlan FP32SparseMobileNetV2(float sparsity, pthreadpool_t threadpool);
25 ExecutionPlan FP32SparseMobileNetV3Large(float sparsity, pthreadpool_t threadpool);
26 ExecutionPlan FP32SparseMobileNetV3Small(float sparsity, pthreadpool_t threadpool);
27 
28 ExecutionPlan FP16MobileNetV1(pthreadpool_t threadpool);
29 ExecutionPlan FP16MobileNetV2(pthreadpool_t threadpool);
30 ExecutionPlan FP16MobileNetV3Large(pthreadpool_t threadpool);
31 ExecutionPlan FP16MobileNetV3Small(pthreadpool_t threadpool);
32 
33 ExecutionPlan QS8MobileNetV1(pthreadpool_t threadpool);
34 ExecutionPlan QS8MobileNetV2(pthreadpool_t threadpool);
35 
36 ExecutionPlan QU8MobileNetV1(pthreadpool_t threadpool);
37 
38 }  // namespace models
39