xref: /aosp_15_r20/external/executorch/kernels/optimized/cpu/targets.bzl (revision 523fa7a60841cd1ecfb9cc4201f1ca8b03ed023a)
1*523fa7a6SAndroid Build Coastguard Workerload("@fbsource//xplat/executorch/build:runtime_wrapper.bzl", "runtime")
2*523fa7a6SAndroid Build Coastguard Workerload("@fbsource//xplat/executorch/kernels/optimized:op_registration_util.bzl", "define_op_target", "is_op_disabled", "op_target")
3*523fa7a6SAndroid Build Coastguard Worker
4*523fa7a6SAndroid Build Coastguard Worker_OPTIMIZED_ATEN_OPS = (
5*523fa7a6SAndroid Build Coastguard Worker    op_target(
6*523fa7a6SAndroid Build Coastguard Worker        name = "op_add",
7*523fa7a6SAndroid Build Coastguard Worker        deps = [
8*523fa7a6SAndroid Build Coastguard Worker            ":binary_ops",
9*523fa7a6SAndroid Build Coastguard Worker            "//executorch/kernels/portable/cpu:scalar_utils",
10*523fa7a6SAndroid Build Coastguard Worker            "//executorch/kernels/portable/cpu/util:broadcast_util",
11*523fa7a6SAndroid Build Coastguard Worker        ],
12*523fa7a6SAndroid Build Coastguard Worker    ),
13*523fa7a6SAndroid Build Coastguard Worker    op_target(
14*523fa7a6SAndroid Build Coastguard Worker        name = "op_bmm",
15*523fa7a6SAndroid Build Coastguard Worker        deps = [
16*523fa7a6SAndroid Build Coastguard Worker            "//executorch/kernels/optimized:libblas",
17*523fa7a6SAndroid Build Coastguard Worker        ],
18*523fa7a6SAndroid Build Coastguard Worker    ),
19*523fa7a6SAndroid Build Coastguard Worker    op_target(
20*523fa7a6SAndroid Build Coastguard Worker        name = "op_div",
21*523fa7a6SAndroid Build Coastguard Worker        deps = [
22*523fa7a6SAndroid Build Coastguard Worker            ":binary_ops",
23*523fa7a6SAndroid Build Coastguard Worker            "//executorch/kernels/portable/cpu:scalar_utils",
24*523fa7a6SAndroid Build Coastguard Worker            "//executorch/kernels/portable/cpu/util:broadcast_util",
25*523fa7a6SAndroid Build Coastguard Worker        ],
26*523fa7a6SAndroid Build Coastguard Worker    ),
27*523fa7a6SAndroid Build Coastguard Worker    op_target(name = "op_exp"),
28*523fa7a6SAndroid Build Coastguard Worker    op_target(name = "op_sigmoid"),
29*523fa7a6SAndroid Build Coastguard Worker    op_target(
30*523fa7a6SAndroid Build Coastguard Worker        name = "op_gelu",
31*523fa7a6SAndroid Build Coastguard Worker        deps = select({
32*523fa7a6SAndroid Build Coastguard Worker            "DEFAULT": [],
33*523fa7a6SAndroid Build Coastguard Worker            "ovr_config//cpu:arm64": [
34*523fa7a6SAndroid Build Coastguard Worker                "fbsource//third-party/sleef:sleef_arm",
35*523fa7a6SAndroid Build Coastguard Worker            ],
36*523fa7a6SAndroid Build Coastguard Worker        }),
37*523fa7a6SAndroid Build Coastguard Worker    ),
38*523fa7a6SAndroid Build Coastguard Worker    op_target(
39*523fa7a6SAndroid Build Coastguard Worker        name = "op_le",
40*523fa7a6SAndroid Build Coastguard Worker        deps = [
41*523fa7a6SAndroid Build Coastguard Worker            "//executorch/kernels/portable/cpu:scalar_utils",
42*523fa7a6SAndroid Build Coastguard Worker        ],
43*523fa7a6SAndroid Build Coastguard Worker    ),
44*523fa7a6SAndroid Build Coastguard Worker    op_target(
45*523fa7a6SAndroid Build Coastguard Worker        name = "op_linear",
46*523fa7a6SAndroid Build Coastguard Worker        deps = [
47*523fa7a6SAndroid Build Coastguard Worker            "//executorch/kernels/optimized:libblas",
48*523fa7a6SAndroid Build Coastguard Worker            "//executorch/kernels/portable/cpu/util:matmul_ops_util",
49*523fa7a6SAndroid Build Coastguard Worker        ],
50*523fa7a6SAndroid Build Coastguard Worker    ),
51*523fa7a6SAndroid Build Coastguard Worker    op_target(
52*523fa7a6SAndroid Build Coastguard Worker        name = "op_log_softmax",
53*523fa7a6SAndroid Build Coastguard Worker        deps = select({
54*523fa7a6SAndroid Build Coastguard Worker            "DEFAULT": [
55*523fa7a6SAndroid Build Coastguard Worker                "//executorch/kernels/portable/cpu/util:activation_ops_util",
56*523fa7a6SAndroid Build Coastguard Worker            ],
57*523fa7a6SAndroid Build Coastguard Worker            "ovr_config//cpu:arm64": [
58*523fa7a6SAndroid Build Coastguard Worker                "//executorch/kernels/portable/cpu/util:activation_ops_util",
59*523fa7a6SAndroid Build Coastguard Worker                "fbsource//third-party/sleef:sleef_arm",
60*523fa7a6SAndroid Build Coastguard Worker            ],
61*523fa7a6SAndroid Build Coastguard Worker        }),
62*523fa7a6SAndroid Build Coastguard Worker    ),
63*523fa7a6SAndroid Build Coastguard Worker    op_target(
64*523fa7a6SAndroid Build Coastguard Worker        name = "op_mm",
65*523fa7a6SAndroid Build Coastguard Worker        deps = [
66*523fa7a6SAndroid Build Coastguard Worker            "//executorch/kernels/optimized:libblas",
67*523fa7a6SAndroid Build Coastguard Worker            "//executorch/kernels/portable/cpu/util:matmul_ops_util",
68*523fa7a6SAndroid Build Coastguard Worker        ],
69*523fa7a6SAndroid Build Coastguard Worker    ),
70*523fa7a6SAndroid Build Coastguard Worker    op_target(
71*523fa7a6SAndroid Build Coastguard Worker        name = "op_mul",
72*523fa7a6SAndroid Build Coastguard Worker        deps = [
73*523fa7a6SAndroid Build Coastguard Worker            ":binary_ops",
74*523fa7a6SAndroid Build Coastguard Worker            "//executorch/kernels/portable/cpu:scalar_utils",
75*523fa7a6SAndroid Build Coastguard Worker            "//executorch/kernels/portable/cpu/util:broadcast_util",
76*523fa7a6SAndroid Build Coastguard Worker            "//executorch/runtime/core/exec_aten/util:tensor_util",
77*523fa7a6SAndroid Build Coastguard Worker        ],
78*523fa7a6SAndroid Build Coastguard Worker    ),
79*523fa7a6SAndroid Build Coastguard Worker    op_target(
80*523fa7a6SAndroid Build Coastguard Worker        name = "op_native_layer_norm",
81*523fa7a6SAndroid Build Coastguard Worker        deps = [
82*523fa7a6SAndroid Build Coastguard Worker            ":moments_utils",
83*523fa7a6SAndroid Build Coastguard Worker            "//executorch/kernels/portable/cpu/util:normalization_ops_util",
84*523fa7a6SAndroid Build Coastguard Worker        ],
85*523fa7a6SAndroid Build Coastguard Worker    ),
86*523fa7a6SAndroid Build Coastguard Worker    op_target(name = "op_neg"),
87*523fa7a6SAndroid Build Coastguard Worker    op_target(
88*523fa7a6SAndroid Build Coastguard Worker        name = "op_sub",
89*523fa7a6SAndroid Build Coastguard Worker        deps = [
90*523fa7a6SAndroid Build Coastguard Worker            ":binary_ops",
91*523fa7a6SAndroid Build Coastguard Worker            "//executorch/kernels/portable/cpu:scalar_utils",
92*523fa7a6SAndroid Build Coastguard Worker            "//executorch/kernels/portable/cpu/util:broadcast_util",
93*523fa7a6SAndroid Build Coastguard Worker        ],
94*523fa7a6SAndroid Build Coastguard Worker    ),
95*523fa7a6SAndroid Build Coastguard Worker)
96*523fa7a6SAndroid Build Coastguard Worker
97*523fa7a6SAndroid Build Coastguard Workerdef define_common_targets():
98*523fa7a6SAndroid Build Coastguard Worker    """Defines targets that should be shared between fbcode and xplat.
99*523fa7a6SAndroid Build Coastguard Worker
100*523fa7a6SAndroid Build Coastguard Worker    The directory containing this targets.bzl file should also contain both
101*523fa7a6SAndroid Build Coastguard Worker    TARGETS and BUCK files that call this function.
102*523fa7a6SAndroid Build Coastguard Worker    """
103*523fa7a6SAndroid Build Coastguard Worker
104*523fa7a6SAndroid Build Coastguard Worker    enabled_ops = [op for op in _OPTIMIZED_ATEN_OPS if not is_op_disabled(op["name"])]
105*523fa7a6SAndroid Build Coastguard Worker
106*523fa7a6SAndroid Build Coastguard Worker    # Define build targets for all operators registered in the tables above.
107*523fa7a6SAndroid Build Coastguard Worker    for op in enabled_ops:
108*523fa7a6SAndroid Build Coastguard Worker        define_op_target(**op)
109*523fa7a6SAndroid Build Coastguard Worker
110*523fa7a6SAndroid Build Coastguard Worker    aten_op_targets = [":{}".format(op["name"]) for op in enabled_ops]
111*523fa7a6SAndroid Build Coastguard Worker    all_op_targets = aten_op_targets
112*523fa7a6SAndroid Build Coastguard Worker
113*523fa7a6SAndroid Build Coastguard Worker    runtime.cxx_library(
114*523fa7a6SAndroid Build Coastguard Worker        name = "binary_ops",
115*523fa7a6SAndroid Build Coastguard Worker        exported_headers = ["binary_ops.h"],
116*523fa7a6SAndroid Build Coastguard Worker        visibility = ["//executorch/kernels/optimized/cpu/..."],
117*523fa7a6SAndroid Build Coastguard Worker        exported_deps = ["//executorch/runtime/core:core"],
118*523fa7a6SAndroid Build Coastguard Worker    )
119*523fa7a6SAndroid Build Coastguard Worker
120*523fa7a6SAndroid Build Coastguard Worker    runtime.cxx_library(
121*523fa7a6SAndroid Build Coastguard Worker        name = "cpu_optimized",
122*523fa7a6SAndroid Build Coastguard Worker        srcs = [],
123*523fa7a6SAndroid Build Coastguard Worker        visibility = ["//executorch/kernels/..."],
124*523fa7a6SAndroid Build Coastguard Worker        exported_deps = all_op_targets,
125*523fa7a6SAndroid Build Coastguard Worker    )
126*523fa7a6SAndroid Build Coastguard Worker
127*523fa7a6SAndroid Build Coastguard Worker    runtime.cxx_library(
128*523fa7a6SAndroid Build Coastguard Worker        name = "moments_utils",
129*523fa7a6SAndroid Build Coastguard Worker        srcs = [],
130*523fa7a6SAndroid Build Coastguard Worker        exported_headers = ["moments_utils.h"],
131*523fa7a6SAndroid Build Coastguard Worker        visibility = ["//executorch/kernels/optimized/..."],
132*523fa7a6SAndroid Build Coastguard Worker        exported_deps = [
133*523fa7a6SAndroid Build Coastguard Worker            "//executorch/kernels/optimized:libvec",
134*523fa7a6SAndroid Build Coastguard Worker            "//executorch/kernels/optimized:libutils",
135*523fa7a6SAndroid Build Coastguard Worker        ],
136*523fa7a6SAndroid Build Coastguard Worker    )
137