/* * Copyright (c) Meta Platforms, Inc. and affiliates. * All rights reserved. * * This source code is licensed under the BSD-style license found in the * LICENSE file in the root directory of this source tree. */ #include #include #include #include #include #include "${fn_header}" // Generated Function import headers // ${generated_comment} // NOTE [Sharded File]: This file is generated in a sharded fashion to speed up // incremental rebuilds. See the comment at the top of // templates/VariableType.cpp for an analogous, in-depth discussion. // // Generated by tools/jit/gen_unboxing.py. This file registers all ATen ops into // JIT op registry instead of c10 dispatcher. JIT op registry only takes boxed // kernels, so we are calling unboxing functions in UnboxingFunctions.h to cast // arguments into C++ types (instead of IValue) and delegate to unboxed kernels. using KernelSpan = ::executorch::runtime::Span; namespace torch { namespace executor { namespace function { namespace { static Kernel kernels_to_register[] = { ${unboxed_kernels} // Generated kernels }; // Explicitly convert to Span, so that the API can take an empty C array of // Kernels. static KernelSpan kernel_span( kernels_to_register, kernels_to_register + sizeof(kernels_to_register) / sizeof(Kernel)); // Return value not used. Keep the static variable assignment to register // kernels in static initialization time. static auto success_with_kernel_reg = register_kernels(kernel_span); } // namespace } // namespace function } // namespace executor } // namespace torch