blob: 5e5f6dd7b99ec612886cda205d9631fa61023aba [file] [log] [blame] [edit]
load("@fbsource//xplat/executorch/build:runtime_wrapper.bzl", "runtime")
load("@fbsource//xplat/executorch/kernels/optimized:op_registration_util.bzl", "define_op_target", "is_op_disabled", "op_target")
_OPTIMIZED_ATEN_OPS = (
op_target(
name = "op_add",
deps = [
":binary_ops",
"//executorch/kernels/portable/cpu:scalar_utils",
"//executorch/kernels/portable/cpu/util:broadcast_util",
],
),
op_target(
name = "op_bmm",
deps = [
"//executorch/kernels/optimized:libblas",
],
),
op_target(
name = "op_div",
deps = [
":binary_ops",
"//executorch/kernels/portable/cpu:scalar_utils",
"//executorch/kernels/portable/cpu/util:broadcast_util",
],
),
op_target(name = "op_exp"),
op_target(name = "op_sigmoid"),
op_target(
name = "op_gelu",
deps = select({
"DEFAULT": [],
"ovr_config//cpu:arm64": [
"fbsource//third-party/sleef:sleef_arm",
],
}),
),
op_target(
name = "op_le",
deps = [
"//executorch/kernels/portable/cpu:scalar_utils",
],
),
op_target(
name = "op_linear",
deps = [
"//executorch/kernels/optimized:libblas",
"//executorch/kernels/portable/cpu/util:matmul_ops_util",
],
),
op_target(
name = "op_log_softmax",
deps = select({
"DEFAULT": [
"//executorch/kernels/portable/cpu/util:activation_ops_util",
],
"ovr_config//cpu:arm64": [
"//executorch/kernels/portable/cpu/util:activation_ops_util",
"fbsource//third-party/sleef:sleef_arm",
],
}),
),
op_target(
name = "op_mm",
deps = [
"//executorch/kernels/optimized:libblas",
"//executorch/kernels/portable/cpu/util:matmul_ops_util",
],
),
op_target(
name = "op_mul",
deps = [
":binary_ops",
"//executorch/kernels/portable/cpu:scalar_utils",
"//executorch/kernels/portable/cpu/util:broadcast_util",
"//executorch/runtime/core/exec_aten/util:tensor_util",
],
),
op_target(
name = "op_native_layer_norm",
deps = [
":moments_utils",
"//executorch/kernels/portable/cpu/util:normalization_ops_util",
],
),
op_target(name = "op_neg"),
op_target(
name = "op_sub",
deps = [
":binary_ops",
"//executorch/kernels/portable/cpu:scalar_utils",
"//executorch/kernels/portable/cpu/util:broadcast_util",
],
),
)
def define_common_targets():
"""Defines targets that should be shared between fbcode and xplat.
The directory containing this targets.bzl file should also contain both
TARGETS and BUCK files that call this function.
"""
enabled_ops = [op for op in _OPTIMIZED_ATEN_OPS if not is_op_disabled(op["name"])]
# Define build targets for all operators registered in the tables above.
for op in enabled_ops:
define_op_target(**op)
aten_op_targets = [":{}".format(op["name"]) for op in enabled_ops]
all_op_targets = aten_op_targets
runtime.cxx_library(
name = "binary_ops",
exported_headers = ["binary_ops.h"],
visibility = ["//executorch/kernels/optimized/cpu/..."],
exported_deps = ["//executorch/runtime/core:core"],
)
runtime.cxx_library(
name = "cpu_optimized",
srcs = [],
visibility = ["//executorch/kernels/..."],
exported_deps = all_op_targets,
)
runtime.cxx_library(
name = "moments_utils",
srcs = [],
exported_headers = ["moments_utils.h"],
visibility = ["//executorch/kernels/optimized/..."],
exported_deps = [
"//executorch/kernels/optimized:libvec",
"//executorch/kernels/optimized:libutils",
],
)