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 #include <executorch/runtime/core/evalue.h> 10*523fa7a6SAndroid Build Coastguard Worker #include <executorch/runtime/core/exec_aten/exec_aten.h> 11*523fa7a6SAndroid Build Coastguard Worker #include <executorch/runtime/core/span.h> 12*523fa7a6SAndroid Build Coastguard Worker #include <executorch/runtime/kernel/operator_registry.h> 13*523fa7a6SAndroid Build Coastguard Worker #include <executorch/runtime/platform/profiler.h> 14*523fa7a6SAndroid Build Coastguard Worker #include "${fn_header}" // Generated Function import headers 15*523fa7a6SAndroid Build Coastguard Worker // ${generated_comment} 16*523fa7a6SAndroid Build Coastguard Worker 17*523fa7a6SAndroid Build Coastguard Worker // NOTE [Sharded File]: This file is generated in a sharded fashion to speed up 18*523fa7a6SAndroid Build Coastguard Worker // incremental rebuilds. See the comment at the top of 19*523fa7a6SAndroid Build Coastguard Worker // templates/VariableType.cpp for an analogous, in-depth discussion. 20*523fa7a6SAndroid Build Coastguard Worker // 21*523fa7a6SAndroid Build Coastguard Worker // Generated by tools/jit/gen_unboxing.py. This file registers all ATen ops into 22*523fa7a6SAndroid Build Coastguard Worker // JIT op registry instead of c10 dispatcher. JIT op registry only takes boxed 23*523fa7a6SAndroid Build Coastguard Worker // kernels, so we are calling unboxing functions in UnboxingFunctions.h to cast 24*523fa7a6SAndroid Build Coastguard Worker // arguments into C++ types (instead of IValue) and delegate to unboxed kernels. 25*523fa7a6SAndroid Build Coastguard Worker using KernelSpan = 26*523fa7a6SAndroid Build Coastguard Worker ::executorch::runtime::Span<const ::executorch::runtime::Kernel>; 27*523fa7a6SAndroid Build Coastguard Worker namespace torch { 28*523fa7a6SAndroid Build Coastguard Worker namespace executor { 29*523fa7a6SAndroid Build Coastguard Worker namespace function { 30*523fa7a6SAndroid Build Coastguard Worker namespace { 31*523fa7a6SAndroid Build Coastguard Worker 32*523fa7a6SAndroid Build Coastguard Worker static Kernel kernels_to_register[] = { 33*523fa7a6SAndroid Build Coastguard Worker ${unboxed_kernels} // Generated kernels 34*523fa7a6SAndroid Build Coastguard Worker }; 35*523fa7a6SAndroid Build Coastguard Worker 36*523fa7a6SAndroid Build Coastguard Worker // Explicitly convert to Span, so that the API can take an empty C array of 37*523fa7a6SAndroid Build Coastguard Worker // Kernels. 38*523fa7a6SAndroid Build Coastguard Worker static KernelSpan kernel_span( 39*523fa7a6SAndroid Build Coastguard Worker kernels_to_register, 40*523fa7a6SAndroid Build Coastguard Worker kernels_to_register + sizeof(kernels_to_register) / sizeof(Kernel)); 41*523fa7a6SAndroid Build Coastguard Worker 42*523fa7a6SAndroid Build Coastguard Worker // Return value not used. Keep the static variable assignment to register 43*523fa7a6SAndroid Build Coastguard Worker // kernels in static initialization time. 44*523fa7a6SAndroid Build Coastguard Worker static auto success_with_kernel_reg = register_kernels(kernel_span); 45*523fa7a6SAndroid Build Coastguard Worker } // namespace 46*523fa7a6SAndroid Build Coastguard Worker } // namespace function 47*523fa7a6SAndroid Build Coastguard Worker } // namespace executor 48*523fa7a6SAndroid Build Coastguard Worker } // namespace torch 49