xref: /aosp_15_r20/external/executorch/exir/tests/test_lib.cpp (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 #include <ATen/ATen.h>
10*523fa7a6SAndroid Build Coastguard Worker #include <torch/library.h> // @manual
11*523fa7a6SAndroid Build Coastguard Worker 
awesome_op_impl(const at::Tensor & input)12*523fa7a6SAndroid Build Coastguard Worker std::tuple<at::Tensor, at::Tensor> awesome_op_impl(const at::Tensor& input) {
13*523fa7a6SAndroid Build Coastguard Worker   return std::make_tuple(input, at::Tensor());
14*523fa7a6SAndroid Build Coastguard Worker }
15*523fa7a6SAndroid Build Coastguard Worker 
16*523fa7a6SAndroid Build Coastguard Worker std::tuple<at::Tensor, at::Tensor>
awesome_op_out(const at::Tensor & input,at::Tensor & out1,at::Tensor & out2)17*523fa7a6SAndroid Build Coastguard Worker awesome_op_out(const at::Tensor& input, at::Tensor& out1, at::Tensor& out2) {
18*523fa7a6SAndroid Build Coastguard Worker   (void)out1;
19*523fa7a6SAndroid Build Coastguard Worker   (void)out2;
20*523fa7a6SAndroid Build Coastguard Worker   return std::make_tuple(input, at::Tensor());
21*523fa7a6SAndroid Build Coastguard Worker }
22*523fa7a6SAndroid Build Coastguard Worker 
TORCH_LIBRARY_FRAGMENT(my_awesome_3rdparty_ns,m)23*523fa7a6SAndroid Build Coastguard Worker TORCH_LIBRARY_FRAGMENT(my_awesome_3rdparty_ns, m) {
24*523fa7a6SAndroid Build Coastguard Worker   m.def("my_awesome_op.out(Tensor input, *, Tensor(a!) out) -> Tensor(a!)");
25*523fa7a6SAndroid Build Coastguard Worker   m.def("my_awesome_op.func(Tensor input) -> Tensor");
26*523fa7a6SAndroid Build Coastguard Worker   // schema mismatch test, missing default value in out variant
27*523fa7a6SAndroid Build Coastguard Worker   m.def(
28*523fa7a6SAndroid Build Coastguard Worker       "schema_mismatch_op.out(Tensor input, Scalar scalar, *, Tensor(a!) out) -> Tensor(a!)");
29*523fa7a6SAndroid Build Coastguard Worker   m.def("schema_mismatch_op(Tensor input, Scalar scalar=1) -> Tensor");
30*523fa7a6SAndroid Build Coastguard Worker   m.def("awesome_op(Tensor input) -> (Tensor, Tensor)", awesome_op_impl);
31*523fa7a6SAndroid Build Coastguard Worker   m.def(
32*523fa7a6SAndroid Build Coastguard Worker       "awesome_op.out(Tensor input, Tensor(a!) out1, Tensor(b!) out2) -> (Tensor(a!), Tensor(b!))",
33*523fa7a6SAndroid Build Coastguard Worker       awesome_op_out);
34*523fa7a6SAndroid Build Coastguard Worker }
35