xref: /aosp_15_r20/external/tensorflow/third_party/compute_library/BUILD (revision b6fb3261f9314811a0f4371741dbb8839866f948)
1load("@bazel_skylib//:bzl_library.bzl", "bzl_library")
2
3exports_files(["LICENSE"])
4
5cc_library(
6    name = "include",
7    hdrs = glob([
8        "include/**/*.h",
9        "include/**/*.hpp",
10    ]),
11    includes = ["include"],
12    strip_include_prefix = "include",
13)
14
15_COMPUTE_LIBRARY_DEFINES = [
16    "ARM_COMPUTE_CPP_SCHEDULER",
17    "ARM_COMPUTE_CPU_ENABLED",
18    "ENABLE_NEON",
19    "ARM_COMPUTE_ENABLE_NEON",
20    "ENABLE_SVE",
21    "ARM_COMPUTE_ENABLE_SVE",
22    "ARM_COMPUTE_ENABLE_BF16",
23    "ARM_COMPUTE_ENABLE_I8MM",
24    "ARM_COMPUTE_ENABLE_SVEF32MM",
25    "ENABLE_FP32_KERNELS",
26    "ENABLE_QASYMM8_KERNELS",
27    "ENABLE_QASYMM8_SIGNED_KERNELS",
28    "ENABLE_QSYMM16_KERNELS",
29    "ENABLE_INTEGER_KERNELS",
30    "ENABLE_NHWC_KERNELS",
31    "ENABLE_NCHW_KERNELS",
32]
33
34cc_library(
35    name = "arm_compute_sve2",
36    srcs = glob(
37        [
38            "src/cpu/kernels/**/sve2/*.cpp",
39            "**/*.h",
40            "**/*.hpp",
41            "**/*.inl",
42        ],
43    ),
44    copts = ["-march=armv8.6-a+sve2"],
45    defines = _COMPUTE_LIBRARY_DEFINES + ["ARM_COMPUTE_ENABLE_SVE2"],
46    includes = [
47        "src/core/NEON/kernels/arm_conv",
48        "src/core/NEON/kernels/arm_gemm",
49        "src/core/NEON/kernels/assembly",
50        "src/core/cpu/kernels/assembly",
51        "src/cpu/kernels/assembly",
52    ],
53    linkopts = ["-lpthread"],
54    deps = ["include"],
55)
56
57cc_library(
58    name = "arm_compute_sve",
59    srcs = glob(
60        [
61            "src/core/NEON/kernels/arm_gemm/kernels/sve_*/*.cpp",
62            "src/core/NEON/kernels/arm_conv/**/kernels/sve_*/*.cpp",
63            "src/core/NEON/kernels/arm_conv/depthwise/interleaves/sve_*.cpp",
64            "src/core/NEON/kernels/batchnormalization/impl/SVE/*.cpp",
65            "src/cpu/kernels/**/sve/*.cpp",
66            "**/*.h",
67            "**/*.hpp",
68            "**/*.inl",
69        ],
70    ) + [
71        "src/core/NEON/kernels/arm_gemm/transform-sve.cpp",
72        "src/core/NEON/kernels/arm_gemm/mergeresults-sve.cpp",
73    ],
74    copts = ["-march=armv8.2-a+sve"],
75    defines = _COMPUTE_LIBRARY_DEFINES,
76    includes = [
77        "src/core/NEON/kernels/arm_conv",
78        "src/core/NEON/kernels/arm_gemm",
79        "src/core/NEON/kernels/assembly",
80        "src/core/cpu/kernels/assembly",
81        "src/cpu/kernels/assembly",
82    ],
83    linkopts = ["-lpthread"],
84    deps = ["include"],
85)
86
87cc_library(
88    name = "arm_compute",
89    srcs = glob(
90        [
91            "src/common/**/*.cpp",
92            "src/core/*.cpp",
93            "src/core/CPP/kernels/*.cpp",
94            "src/core/helpers/*.cpp",
95            "src/core/utils/**/*.cpp",
96            "src/runtime/**/*.cpp",
97            "src/c/*.cpp",
98            "src/core/NEON/kernels/*.cpp",
99            "src/core/NEON/kernels/convolution/**/*.cpp",
100            "src/core/NEON/kernels/arm_gemm/kernels/a64_*/*.cpp",
101            "src/core/NEON/kernels/arm_conv/pooling/*.cpp",
102            "src/core/NEON/kernels/arm_conv/**/kernels/a64_*/*.cpp",
103            "src/core/NEON/kernels/arm_conv/depthwise/*.cpp",
104            "src/core/NEON/kernels/arm_conv/depthwise/interleaves/a64_*.cpp",
105            "src/core/NEON/kernels/arm_conv/depthwise/interleaves/generic*.cpp",
106            "src/core/NEON/kernels/batchnormalization/impl/NEON/*.cpp",
107            "src/cpu/*.cpp",
108            "src/cpu/kernels/*.cpp",
109            "src/cpu/kernels/*/generic/*.cpp",
110            "src/cpu/operators/**/*.cpp",
111            "src/cpu/utils/*.cpp",
112            "src/cpu/kernels/internal/*.cpp",
113            "src/cpu/kernels/**/neon/*.cpp",
114            "src/cpu/kernels/**/nchw/*.cpp",
115            "src/core/NEON/kernels/arm_gemm/*.cpp",
116            "**/*.h",
117            "**/*.hpp",
118            "**/*.inl",
119        ],
120        exclude = [
121            "src/core/utils/logging/**",
122            "src/core/TracePoint.cpp",
123            "src/core/NEON/kernels/arm_gemm/mergeresults-sve.cpp",
124            "src/core/NEON/kernels/arm_gemm/transform-sve.cpp",
125            "src/runtime/CL/**",
126            "src/gpu/**",
127        ],
128    ) + [
129        "src/core/CPP/CPPTypes.cpp",
130        "src/c/operators/AclActivation.cpp",
131        "src/core/NEON/kernels/arm_conv/pooling/kernels/cpp_nhwc_1x1_stride_any_depthfirst/generic.cpp",
132        "src/core/NEON/kernels/arm_conv/depthwise/interleaves/8b_mla.cpp",
133        "src/core/NEON/kernels/arm_conv/addressing.cpp",
134    ],
135    hdrs = glob([
136        "src/core/NEON/kernels/**/*.h",
137        "src/core/NEON/kernels/**/*.hpp",
138        "arm_compute/runtime/**/*.h",
139        "arm_compute/runtime/*.h",
140        "arm_compute/core/**/*.h",
141        "**/*.inl",
142    ]) + [
143        "arm_compute_version.embed",
144    ],
145    copts = ["-march=armv8-a"],
146    defines = _COMPUTE_LIBRARY_DEFINES,
147    includes = [
148        "arm_compute/runtime",
149        "src/core/NEON/kernels/assembly",
150        "src/core/NEON/kernels/convolution/common",
151        "src/core/NEON/kernels/convolution/winograd",
152        "src/core/cpu/kernels/assembly",
153        "src/cpu/kernels/assembly",
154    ],
155    linkopts = ["-lpthread"],
156    visibility = ["//visibility:public"],
157    deps = [
158        "arm_compute_sve",
159        "arm_compute_sve2",
160        "include",
161    ],
162)
163
164config_setting(
165    name = "build_with_acl",
166    define_values = {
167        "build_with_acl": "true",
168    },
169    visibility = ["//visibility:public"],
170)
171
172bzl_library(
173    name = "build_defs_bzl",
174    srcs = ["build_defs.bzl"],
175    visibility = ["//visibility:public"],
176)
177