xref: /aosp_15_r20/external/executorch/backends/xnnpack/third-party/xnnpack.buck.bzl (revision 523fa7a60841cd1ecfb9cc4201f1ca8b03ed023a)
1*523fa7a6SAndroid Build Coastguard Workerload(
2*523fa7a6SAndroid Build Coastguard Worker    ":xnnpack_src_defs.bzl",
3*523fa7a6SAndroid Build Coastguard Worker    "LOGGING_SRCS",
4*523fa7a6SAndroid Build Coastguard Worker    "OPERATOR_SRCS",
5*523fa7a6SAndroid Build Coastguard Worker    "SUBGRAPH_SRCS",
6*523fa7a6SAndroid Build Coastguard Worker    "TABLE_SRCS",
7*523fa7a6SAndroid Build Coastguard Worker    "XNNPACK_SRCS",
8*523fa7a6SAndroid Build Coastguard Worker    "get_xnnpack_headers",
9*523fa7a6SAndroid Build Coastguard Worker    "prod_srcs_for_arch_wrapper",
10*523fa7a6SAndroid Build Coastguard Worker)
11*523fa7a6SAndroid Build Coastguard Worker
12*523fa7a6SAndroid Build Coastguard Workerdef define_xnnpack():
13*523fa7a6SAndroid Build Coastguard Worker    # @lint-ignore BUCKLINT: native and fb_native are explicitly forbidden in fbcode.
14*523fa7a6SAndroid Build Coastguard Worker    native.cxx_library(
15*523fa7a6SAndroid Build Coastguard Worker        name = "interface",
16*523fa7a6SAndroid Build Coastguard Worker        headers = get_xnnpack_headers(),
17*523fa7a6SAndroid Build Coastguard Worker        header_namespace = "",
18*523fa7a6SAndroid Build Coastguard Worker        exported_headers = {
19*523fa7a6SAndroid Build Coastguard Worker            "xnnpack.h": "XNNPACK/include/xnnpack.h",
20*523fa7a6SAndroid Build Coastguard Worker        },
21*523fa7a6SAndroid Build Coastguard Worker        compiler_flags = [
22*523fa7a6SAndroid Build Coastguard Worker            "-Wno-error=missing-braces",  # required since the SGX toolchain does not have this by default
23*523fa7a6SAndroid Build Coastguard Worker        ],
24*523fa7a6SAndroid Build Coastguard Worker        preferred_linkage = "static",
25*523fa7a6SAndroid Build Coastguard Worker        preprocessor_flags = [
26*523fa7a6SAndroid Build Coastguard Worker            "-DXNN_LOG_LEVEL=0",
27*523fa7a6SAndroid Build Coastguard Worker        ],
28*523fa7a6SAndroid Build Coastguard Worker        visibility = ["PUBLIC"],
29*523fa7a6SAndroid Build Coastguard Worker        exported_deps = [
30*523fa7a6SAndroid Build Coastguard Worker            ":pthreadpool",
31*523fa7a6SAndroid Build Coastguard Worker        ],
32*523fa7a6SAndroid Build Coastguard Worker    )
33*523fa7a6SAndroid Build Coastguard Worker
34*523fa7a6SAndroid Build Coastguard Worker    # @lint-ignore BUCKLINT: native and fb_native are explicitly forbidden in fbcode.
35*523fa7a6SAndroid Build Coastguard Worker    native.cxx_library(
36*523fa7a6SAndroid Build Coastguard Worker        name = "operators",
37*523fa7a6SAndroid Build Coastguard Worker        srcs = OPERATOR_SRCS + [
38*523fa7a6SAndroid Build Coastguard Worker            "XNNPACK/src/allocator.c",
39*523fa7a6SAndroid Build Coastguard Worker            "XNNPACK/src/cache.c",
40*523fa7a6SAndroid Build Coastguard Worker            "XNNPACK/src/indirection.c",
41*523fa7a6SAndroid Build Coastguard Worker            "XNNPACK/src/memory.c",
42*523fa7a6SAndroid Build Coastguard Worker            "XNNPACK/src/mutex.c",
43*523fa7a6SAndroid Build Coastguard Worker            "XNNPACK/src/normalization.c",
44*523fa7a6SAndroid Build Coastguard Worker            "XNNPACK/src/operator-utils.c",
45*523fa7a6SAndroid Build Coastguard Worker            "XNNPACK/src/packing.cc",
46*523fa7a6SAndroid Build Coastguard Worker        ],
47*523fa7a6SAndroid Build Coastguard Worker        headers = get_xnnpack_headers(),
48*523fa7a6SAndroid Build Coastguard Worker        header_namespace = "",
49*523fa7a6SAndroid Build Coastguard Worker        compiler_flags = [
50*523fa7a6SAndroid Build Coastguard Worker            "-Wno-error=missing-braces",  # required since the SGX toolchain does not have this by default
51*523fa7a6SAndroid Build Coastguard Worker        ],
52*523fa7a6SAndroid Build Coastguard Worker        preferred_linkage = "static",
53*523fa7a6SAndroid Build Coastguard Worker        preprocessor_flags = [
54*523fa7a6SAndroid Build Coastguard Worker            "-DXNN_LOG_LEVEL=0",
55*523fa7a6SAndroid Build Coastguard Worker            "-DXNN_ENABLE_GEMM_M_SPECIALIZATION=0",
56*523fa7a6SAndroid Build Coastguard Worker        ],
57*523fa7a6SAndroid Build Coastguard Worker        exported_deps = [
58*523fa7a6SAndroid Build Coastguard Worker            ":FP16",
59*523fa7a6SAndroid Build Coastguard Worker            ":FXdiv",
60*523fa7a6SAndroid Build Coastguard Worker            ":clog",
61*523fa7a6SAndroid Build Coastguard Worker            ":interface",
62*523fa7a6SAndroid Build Coastguard Worker            ":ukernels_f16c",
63*523fa7a6SAndroid Build Coastguard Worker            ":cpuinfo",
64*523fa7a6SAndroid Build Coastguard Worker        ],
65*523fa7a6SAndroid Build Coastguard Worker    )
66*523fa7a6SAndroid Build Coastguard Worker
67*523fa7a6SAndroid Build Coastguard Worker    # @lint-ignore BUCKLINT: native and fb_native are explicitly forbidden in fbcode.
68*523fa7a6SAndroid Build Coastguard Worker    native.cxx_library(
69*523fa7a6SAndroid Build Coastguard Worker        name = "subgraph",
70*523fa7a6SAndroid Build Coastguard Worker        srcs = SUBGRAPH_SRCS,
71*523fa7a6SAndroid Build Coastguard Worker        compiler_flags = [
72*523fa7a6SAndroid Build Coastguard Worker            "-Wno-error=missing-braces",  # required since the SGX toolchain does not have this by default
73*523fa7a6SAndroid Build Coastguard Worker        ],
74*523fa7a6SAndroid Build Coastguard Worker        headers = get_xnnpack_headers(),
75*523fa7a6SAndroid Build Coastguard Worker        header_namespace = "",
76*523fa7a6SAndroid Build Coastguard Worker        preferred_linkage = "static",
77*523fa7a6SAndroid Build Coastguard Worker        preprocessor_flags = [
78*523fa7a6SAndroid Build Coastguard Worker            "-DXNN_LOG_LEVEL=0",
79*523fa7a6SAndroid Build Coastguard Worker            "-DXNN_ENABLE_SPARSE=0",
80*523fa7a6SAndroid Build Coastguard Worker            "-DXNN_ENABLE_GEMM_M_SPECIALIZATION=0",
81*523fa7a6SAndroid Build Coastguard Worker            "-DXNN_ENABLE_MEMOPT",
82*523fa7a6SAndroid Build Coastguard Worker        ],
83*523fa7a6SAndroid Build Coastguard Worker        exported_deps = [
84*523fa7a6SAndroid Build Coastguard Worker            ":FP16",
85*523fa7a6SAndroid Build Coastguard Worker            ":FXdiv",
86*523fa7a6SAndroid Build Coastguard Worker            ":clog",
87*523fa7a6SAndroid Build Coastguard Worker            ":interface",
88*523fa7a6SAndroid Build Coastguard Worker        ],
89*523fa7a6SAndroid Build Coastguard Worker    )
90*523fa7a6SAndroid Build Coastguard Worker
91*523fa7a6SAndroid Build Coastguard Worker    # @lint-ignore BUCKLINT: native and fb_native are explicitly forbidden in fbcode.
92*523fa7a6SAndroid Build Coastguard Worker    native.cxx_library(
93*523fa7a6SAndroid Build Coastguard Worker        name = "tables",
94*523fa7a6SAndroid Build Coastguard Worker        srcs = TABLE_SRCS,
95*523fa7a6SAndroid Build Coastguard Worker        headers = get_xnnpack_headers(),
96*523fa7a6SAndroid Build Coastguard Worker        header_namespace = "",
97*523fa7a6SAndroid Build Coastguard Worker        compiler_flags = [
98*523fa7a6SAndroid Build Coastguard Worker            "-Wno-error=missing-braces",  # required since the SGX toolchain does not have this by default
99*523fa7a6SAndroid Build Coastguard Worker        ],
100*523fa7a6SAndroid Build Coastguard Worker        preferred_linkage = "static",
101*523fa7a6SAndroid Build Coastguard Worker        preprocessor_flags = [
102*523fa7a6SAndroid Build Coastguard Worker            "-DXNN_LOG_LEVEL=0",
103*523fa7a6SAndroid Build Coastguard Worker        ],
104*523fa7a6SAndroid Build Coastguard Worker        exported_deps = [
105*523fa7a6SAndroid Build Coastguard Worker            ":FP16",
106*523fa7a6SAndroid Build Coastguard Worker            ":FXdiv",
107*523fa7a6SAndroid Build Coastguard Worker            ":clog",
108*523fa7a6SAndroid Build Coastguard Worker            ":interface",
109*523fa7a6SAndroid Build Coastguard Worker        ],
110*523fa7a6SAndroid Build Coastguard Worker    )
111*523fa7a6SAndroid Build Coastguard Worker
112*523fa7a6SAndroid Build Coastguard Worker    DEFAULT_DUMMY_SRC = []
113*523fa7a6SAndroid Build Coastguard Worker
114*523fa7a6SAndroid Build Coastguard Worker    # @lint-ignore BUCKLINT: native and fb_native are explicitly forbidden in fbcode.
115*523fa7a6SAndroid Build Coastguard Worker    native.cxx_library(
116*523fa7a6SAndroid Build Coastguard Worker        name = "ukernels_scalar",
117*523fa7a6SAndroid Build Coastguard Worker        srcs = prod_srcs_for_arch_wrapper("scalar"),
118*523fa7a6SAndroid Build Coastguard Worker        headers = get_xnnpack_headers(),
119*523fa7a6SAndroid Build Coastguard Worker        header_namespace = "",
120*523fa7a6SAndroid Build Coastguard Worker        compiler_flags = [
121*523fa7a6SAndroid Build Coastguard Worker            "-O3",
122*523fa7a6SAndroid Build Coastguard Worker            "-Wno-error=missing-braces",  # required since the SGX toolchain does not have this by default
123*523fa7a6SAndroid Build Coastguard Worker            "-fno-fast-math",
124*523fa7a6SAndroid Build Coastguard Worker            "-fno-math-errno",
125*523fa7a6SAndroid Build Coastguard Worker            "-ffp-contract=off",
126*523fa7a6SAndroid Build Coastguard Worker        ],
127*523fa7a6SAndroid Build Coastguard Worker        preferred_linkage = "static",
128*523fa7a6SAndroid Build Coastguard Worker        preprocessor_flags = [
129*523fa7a6SAndroid Build Coastguard Worker            "-DXNN_LOG_LEVEL=0",
130*523fa7a6SAndroid Build Coastguard Worker        ],
131*523fa7a6SAndroid Build Coastguard Worker        exported_deps = [
132*523fa7a6SAndroid Build Coastguard Worker            ":FP16",
133*523fa7a6SAndroid Build Coastguard Worker            ":FXdiv",
134*523fa7a6SAndroid Build Coastguard Worker            ":interface",
135*523fa7a6SAndroid Build Coastguard Worker        ],
136*523fa7a6SAndroid Build Coastguard Worker    )
137*523fa7a6SAndroid Build Coastguard Worker
138*523fa7a6SAndroid Build Coastguard Worker    ARMSIMD32_COMPILER_FLAGS = [
139*523fa7a6SAndroid Build Coastguard Worker        "-marm",
140*523fa7a6SAndroid Build Coastguard Worker        "-march=armv6",
141*523fa7a6SAndroid Build Coastguard Worker        "-mfpu=vfp",
142*523fa7a6SAndroid Build Coastguard Worker        "-munaligned-access",
143*523fa7a6SAndroid Build Coastguard Worker    ]
144*523fa7a6SAndroid Build Coastguard Worker
145*523fa7a6SAndroid Build Coastguard Worker    # @lint-ignore BUCKLINT: native and fb_native are explicitly forbidden in fbcode.
146*523fa7a6SAndroid Build Coastguard Worker    native.cxx_library(
147*523fa7a6SAndroid Build Coastguard Worker        name = "ukernels_armsimd32",
148*523fa7a6SAndroid Build Coastguard Worker        srcs = select({
149*523fa7a6SAndroid Build Coastguard Worker            "DEFAULT": DEFAULT_DUMMY_SRC,
150*523fa7a6SAndroid Build Coastguard Worker            "ovr_config//cpu:arm32": prod_srcs_for_arch_wrapper("armsimd32"),
151*523fa7a6SAndroid Build Coastguard Worker        }),
152*523fa7a6SAndroid Build Coastguard Worker        headers = get_xnnpack_headers(),
153*523fa7a6SAndroid Build Coastguard Worker        header_namespace = "",
154*523fa7a6SAndroid Build Coastguard Worker        compiler_flags = [
155*523fa7a6SAndroid Build Coastguard Worker            "-Wno-error=missing-braces",  # required since the SGX toolchain does not have this by default
156*523fa7a6SAndroid Build Coastguard Worker            "-fno-fast-math",
157*523fa7a6SAndroid Build Coastguard Worker            "-fno-math-errno",
158*523fa7a6SAndroid Build Coastguard Worker        ] + select({
159*523fa7a6SAndroid Build Coastguard Worker            "DEFAULT": [],
160*523fa7a6SAndroid Build Coastguard Worker            "ovr_config//cpu:arm32": ARMSIMD32_COMPILER_FLAGS,
161*523fa7a6SAndroid Build Coastguard Worker            "ovr_config//cpu:x86_32": [],
162*523fa7a6SAndroid Build Coastguard Worker            "ovr_config//cpu:x86_64": [],
163*523fa7a6SAndroid Build Coastguard Worker        }),
164*523fa7a6SAndroid Build Coastguard Worker        preferred_linkage = "static",
165*523fa7a6SAndroid Build Coastguard Worker        preprocessor_flags = [
166*523fa7a6SAndroid Build Coastguard Worker            "-DXNN_LOG_LEVEL=0",
167*523fa7a6SAndroid Build Coastguard Worker        ],
168*523fa7a6SAndroid Build Coastguard Worker        exported_deps = [
169*523fa7a6SAndroid Build Coastguard Worker            ":FP16",
170*523fa7a6SAndroid Build Coastguard Worker            ":FXdiv",
171*523fa7a6SAndroid Build Coastguard Worker            ":interface",
172*523fa7a6SAndroid Build Coastguard Worker        ],
173*523fa7a6SAndroid Build Coastguard Worker    )
174*523fa7a6SAndroid Build Coastguard Worker
175*523fa7a6SAndroid Build Coastguard Worker    FP16ARITH_COMPILER_FLAGS = [
176*523fa7a6SAndroid Build Coastguard Worker        "-marm",
177*523fa7a6SAndroid Build Coastguard Worker        "-march=armv8.2-a+fp16",
178*523fa7a6SAndroid Build Coastguard Worker        # GCC emits wrong directives for assembler with -mfpu=fp-armv8
179*523fa7a6SAndroid Build Coastguard Worker        "-mfpu=neon-fp-armv8",
180*523fa7a6SAndroid Build Coastguard Worker        # For vsqrth_f16 polyfill using sqrtf
181*523fa7a6SAndroid Build Coastguard Worker        "-fno-math-errno",
182*523fa7a6SAndroid Build Coastguard Worker        # For vminh_f16/vmaxh_f16 polyfills using compare + select
183*523fa7a6SAndroid Build Coastguard Worker        "-ffinite-math-only",
184*523fa7a6SAndroid Build Coastguard Worker    ]
185*523fa7a6SAndroid Build Coastguard Worker
186*523fa7a6SAndroid Build Coastguard Worker    # @lint-ignore BUCKLINT: native and fb_native are explicitly forbidden in fbcode.
187*523fa7a6SAndroid Build Coastguard Worker    native.cxx_library(
188*523fa7a6SAndroid Build Coastguard Worker        name = "ukernels_fp16arith",
189*523fa7a6SAndroid Build Coastguard Worker        srcs = select({
190*523fa7a6SAndroid Build Coastguard Worker            "DEFAULT": prod_srcs_for_arch_wrapper("fp16arith"),
191*523fa7a6SAndroid Build Coastguard Worker            "ovr_config//cpu:x86_32": DEFAULT_DUMMY_SRC,
192*523fa7a6SAndroid Build Coastguard Worker            "ovr_config//cpu:x86_64": DEFAULT_DUMMY_SRC,
193*523fa7a6SAndroid Build Coastguard Worker        }),
194*523fa7a6SAndroid Build Coastguard Worker        headers = get_xnnpack_headers(),
195*523fa7a6SAndroid Build Coastguard Worker        header_namespace = "",
196*523fa7a6SAndroid Build Coastguard Worker        compiler_flags = [
197*523fa7a6SAndroid Build Coastguard Worker            "-Wno-error=missing-braces",  # required since the SGX toolchain does not have this by default
198*523fa7a6SAndroid Build Coastguard Worker            "-fno-fast-math",
199*523fa7a6SAndroid Build Coastguard Worker            "-fno-math-errno",
200*523fa7a6SAndroid Build Coastguard Worker        ] + select({
201*523fa7a6SAndroid Build Coastguard Worker            "DEFAULT": [],
202*523fa7a6SAndroid Build Coastguard Worker            "ovr_config//cpu:arm32": FP16ARITH_COMPILER_FLAGS,
203*523fa7a6SAndroid Build Coastguard Worker            "ovr_config//cpu:x86_32": [],
204*523fa7a6SAndroid Build Coastguard Worker            "ovr_config//cpu:x86_64": [],
205*523fa7a6SAndroid Build Coastguard Worker        }),
206*523fa7a6SAndroid Build Coastguard Worker        preferred_linkage = "static",
207*523fa7a6SAndroid Build Coastguard Worker        preprocessor_flags = [
208*523fa7a6SAndroid Build Coastguard Worker            "-DXNN_LOG_LEVEL=0",
209*523fa7a6SAndroid Build Coastguard Worker        ],
210*523fa7a6SAndroid Build Coastguard Worker        exported_deps = [
211*523fa7a6SAndroid Build Coastguard Worker            ":FP16",
212*523fa7a6SAndroid Build Coastguard Worker            ":FXdiv",
213*523fa7a6SAndroid Build Coastguard Worker            ":interface",
214*523fa7a6SAndroid Build Coastguard Worker        ],
215*523fa7a6SAndroid Build Coastguard Worker    )
216*523fa7a6SAndroid Build Coastguard Worker
217*523fa7a6SAndroid Build Coastguard Worker    SSE_COMPILER_FLAGS = ["-msse"]
218*523fa7a6SAndroid Build Coastguard Worker
219*523fa7a6SAndroid Build Coastguard Worker    # @lint-ignore BUCKLINT: native and fb_native are explicitly forbidden in fbcode.
220*523fa7a6SAndroid Build Coastguard Worker    native.cxx_library(
221*523fa7a6SAndroid Build Coastguard Worker        name = "ukernels_sse",
222*523fa7a6SAndroid Build Coastguard Worker        srcs = select({
223*523fa7a6SAndroid Build Coastguard Worker            "DEFAULT": prod_srcs_for_arch_wrapper("sse"),
224*523fa7a6SAndroid Build Coastguard Worker            "ovr_config//cpu:arm32": DEFAULT_DUMMY_SRC,
225*523fa7a6SAndroid Build Coastguard Worker            "ovr_config//cpu:arm64": DEFAULT_DUMMY_SRC,
226*523fa7a6SAndroid Build Coastguard Worker        }),
227*523fa7a6SAndroid Build Coastguard Worker        headers = get_xnnpack_headers(),
228*523fa7a6SAndroid Build Coastguard Worker        header_namespace = "",
229*523fa7a6SAndroid Build Coastguard Worker        compiler_flags = [
230*523fa7a6SAndroid Build Coastguard Worker            "-O2",
231*523fa7a6SAndroid Build Coastguard Worker            "-Wno-error=missing-braces",  # required since the SGX toolchain does not have this by default
232*523fa7a6SAndroid Build Coastguard Worker        ] + select({
233*523fa7a6SAndroid Build Coastguard Worker            "DEFAULT": SSE_COMPILER_FLAGS,
234*523fa7a6SAndroid Build Coastguard Worker            "ovr_config//cpu:arm32": [],
235*523fa7a6SAndroid Build Coastguard Worker            "ovr_config//cpu:arm64": [],
236*523fa7a6SAndroid Build Coastguard Worker        }),
237*523fa7a6SAndroid Build Coastguard Worker        preferred_linkage = "static",
238*523fa7a6SAndroid Build Coastguard Worker        preprocessor_flags = [
239*523fa7a6SAndroid Build Coastguard Worker            "-DXNN_LOG_LEVEL=0",
240*523fa7a6SAndroid Build Coastguard Worker        ],
241*523fa7a6SAndroid Build Coastguard Worker        exported_deps = [
242*523fa7a6SAndroid Build Coastguard Worker            ":FP16",
243*523fa7a6SAndroid Build Coastguard Worker            ":interface",
244*523fa7a6SAndroid Build Coastguard Worker        ],
245*523fa7a6SAndroid Build Coastguard Worker    )
246*523fa7a6SAndroid Build Coastguard Worker
247*523fa7a6SAndroid Build Coastguard Worker    SSE2_COMPILER_FLAGS = ["-msse2"]
248*523fa7a6SAndroid Build Coastguard Worker
249*523fa7a6SAndroid Build Coastguard Worker    # @lint-ignore BUCKLINT: native and fb_native are explicitly forbidden in fbcode.
250*523fa7a6SAndroid Build Coastguard Worker    native.cxx_library(
251*523fa7a6SAndroid Build Coastguard Worker        name = "ukernels_sse2",
252*523fa7a6SAndroid Build Coastguard Worker        srcs = select({
253*523fa7a6SAndroid Build Coastguard Worker            "DEFAULT": prod_srcs_for_arch_wrapper("sse2"),
254*523fa7a6SAndroid Build Coastguard Worker            "ovr_config//cpu:arm32": DEFAULT_DUMMY_SRC,
255*523fa7a6SAndroid Build Coastguard Worker            "ovr_config//cpu:arm64": DEFAULT_DUMMY_SRC,
256*523fa7a6SAndroid Build Coastguard Worker        }),
257*523fa7a6SAndroid Build Coastguard Worker        headers = get_xnnpack_headers(),
258*523fa7a6SAndroid Build Coastguard Worker        header_namespace = "",
259*523fa7a6SAndroid Build Coastguard Worker        compiler_flags = [
260*523fa7a6SAndroid Build Coastguard Worker            "-O2",
261*523fa7a6SAndroid Build Coastguard Worker            "-Wno-error=missing-braces",  # required since the SGX toolchain does not have this by default
262*523fa7a6SAndroid Build Coastguard Worker        ] + select({
263*523fa7a6SAndroid Build Coastguard Worker            "DEFAULT": SSE2_COMPILER_FLAGS,
264*523fa7a6SAndroid Build Coastguard Worker            "ovr_config//cpu:arm32": [],
265*523fa7a6SAndroid Build Coastguard Worker            "ovr_config//cpu:arm64": [],
266*523fa7a6SAndroid Build Coastguard Worker        }),
267*523fa7a6SAndroid Build Coastguard Worker        preferred_linkage = "static",
268*523fa7a6SAndroid Build Coastguard Worker        preprocessor_flags = [
269*523fa7a6SAndroid Build Coastguard Worker            "-DXNN_LOG_LEVEL=0",
270*523fa7a6SAndroid Build Coastguard Worker        ],
271*523fa7a6SAndroid Build Coastguard Worker        exported_deps = [
272*523fa7a6SAndroid Build Coastguard Worker            ":FP16",
273*523fa7a6SAndroid Build Coastguard Worker            ":interface",
274*523fa7a6SAndroid Build Coastguard Worker        ],
275*523fa7a6SAndroid Build Coastguard Worker    )
276*523fa7a6SAndroid Build Coastguard Worker
277*523fa7a6SAndroid Build Coastguard Worker    SSE3_COMPILER_FLAGS = ["-mssse3"]
278*523fa7a6SAndroid Build Coastguard Worker
279*523fa7a6SAndroid Build Coastguard Worker    # @lint-ignore BUCKLINT: native and fb_native are explicitly forbidden in fbcode.
280*523fa7a6SAndroid Build Coastguard Worker    native.cxx_library(
281*523fa7a6SAndroid Build Coastguard Worker        name = "ukernels_ssse3",
282*523fa7a6SAndroid Build Coastguard Worker        srcs = select({
283*523fa7a6SAndroid Build Coastguard Worker            "DEFAULT": prod_srcs_for_arch_wrapper("ssse3"),
284*523fa7a6SAndroid Build Coastguard Worker            "ovr_config//cpu:arm32": DEFAULT_DUMMY_SRC,
285*523fa7a6SAndroid Build Coastguard Worker            "ovr_config//cpu:arm64": DEFAULT_DUMMY_SRC,
286*523fa7a6SAndroid Build Coastguard Worker        }),
287*523fa7a6SAndroid Build Coastguard Worker        headers = get_xnnpack_headers(),
288*523fa7a6SAndroid Build Coastguard Worker        header_namespace = "",
289*523fa7a6SAndroid Build Coastguard Worker        compiler_flags = [
290*523fa7a6SAndroid Build Coastguard Worker            "-O2",
291*523fa7a6SAndroid Build Coastguard Worker            "-Wno-error=missing-braces",  # required since the SGX toolchain does not have this by default
292*523fa7a6SAndroid Build Coastguard Worker        ] + select({
293*523fa7a6SAndroid Build Coastguard Worker            "DEFAULT": SSE3_COMPILER_FLAGS,
294*523fa7a6SAndroid Build Coastguard Worker            "ovr_config//cpu:arm32": [],
295*523fa7a6SAndroid Build Coastguard Worker            "ovr_config//cpu:arm64": [],
296*523fa7a6SAndroid Build Coastguard Worker        }),
297*523fa7a6SAndroid Build Coastguard Worker        preferred_linkage = "static",
298*523fa7a6SAndroid Build Coastguard Worker        preprocessor_flags = [
299*523fa7a6SAndroid Build Coastguard Worker            "-DXNN_LOG_LEVEL=0",
300*523fa7a6SAndroid Build Coastguard Worker        ],
301*523fa7a6SAndroid Build Coastguard Worker        exported_deps = [
302*523fa7a6SAndroid Build Coastguard Worker            ":FP16",
303*523fa7a6SAndroid Build Coastguard Worker            ":interface",
304*523fa7a6SAndroid Build Coastguard Worker        ],
305*523fa7a6SAndroid Build Coastguard Worker    )
306*523fa7a6SAndroid Build Coastguard Worker
307*523fa7a6SAndroid Build Coastguard Worker    SSE41_COMPILER_FLAGS = ["-msse4.1"]
308*523fa7a6SAndroid Build Coastguard Worker
309*523fa7a6SAndroid Build Coastguard Worker    # @lint-ignore BUCKLINT: native and fb_native are explicitly forbidden in fbcode.
310*523fa7a6SAndroid Build Coastguard Worker    native.cxx_library(
311*523fa7a6SAndroid Build Coastguard Worker        name = "ukernels_sse41",
312*523fa7a6SAndroid Build Coastguard Worker        srcs = select({
313*523fa7a6SAndroid Build Coastguard Worker            "DEFAULT": prod_srcs_for_arch_wrapper("sse41"),
314*523fa7a6SAndroid Build Coastguard Worker            "ovr_config//cpu:arm32": DEFAULT_DUMMY_SRC,
315*523fa7a6SAndroid Build Coastguard Worker            "ovr_config//cpu:arm64": DEFAULT_DUMMY_SRC,
316*523fa7a6SAndroid Build Coastguard Worker        }),
317*523fa7a6SAndroid Build Coastguard Worker        headers = get_xnnpack_headers(),
318*523fa7a6SAndroid Build Coastguard Worker        header_namespace = "",
319*523fa7a6SAndroid Build Coastguard Worker        compiler_flags = [
320*523fa7a6SAndroid Build Coastguard Worker            "-O2",
321*523fa7a6SAndroid Build Coastguard Worker            "-Wno-error=missing-braces",  # required since the SGX toolchain does not have this by default
322*523fa7a6SAndroid Build Coastguard Worker        ] + select({
323*523fa7a6SAndroid Build Coastguard Worker            "DEFAULT": SSE41_COMPILER_FLAGS,
324*523fa7a6SAndroid Build Coastguard Worker            "ovr_config//cpu:arm32": [],
325*523fa7a6SAndroid Build Coastguard Worker            "ovr_config//cpu:arm64": [],
326*523fa7a6SAndroid Build Coastguard Worker        }),
327*523fa7a6SAndroid Build Coastguard Worker        preferred_linkage = "static",
328*523fa7a6SAndroid Build Coastguard Worker        preprocessor_flags = [
329*523fa7a6SAndroid Build Coastguard Worker            "-DXNN_LOG_LEVEL=0",
330*523fa7a6SAndroid Build Coastguard Worker        ],
331*523fa7a6SAndroid Build Coastguard Worker        exported_deps = [
332*523fa7a6SAndroid Build Coastguard Worker            ":FP16",
333*523fa7a6SAndroid Build Coastguard Worker            ":interface",
334*523fa7a6SAndroid Build Coastguard Worker        ],
335*523fa7a6SAndroid Build Coastguard Worker    )
336*523fa7a6SAndroid Build Coastguard Worker
337*523fa7a6SAndroid Build Coastguard Worker    AVX_COMPILER_FLAGS = ["-mavx"]
338*523fa7a6SAndroid Build Coastguard Worker
339*523fa7a6SAndroid Build Coastguard Worker    # @lint-ignore BUCKLINT: native and fb_native are explicitly forbidden in fbcode.
340*523fa7a6SAndroid Build Coastguard Worker    native.cxx_library(
341*523fa7a6SAndroid Build Coastguard Worker        name = "ukernels_avx",
342*523fa7a6SAndroid Build Coastguard Worker        srcs = select({
343*523fa7a6SAndroid Build Coastguard Worker            "DEFAULT": prod_srcs_for_arch_wrapper("avx"),
344*523fa7a6SAndroid Build Coastguard Worker            "ovr_config//cpu:arm32": DEFAULT_DUMMY_SRC,
345*523fa7a6SAndroid Build Coastguard Worker            "ovr_config//cpu:arm64": DEFAULT_DUMMY_SRC,
346*523fa7a6SAndroid Build Coastguard Worker        }),
347*523fa7a6SAndroid Build Coastguard Worker        headers = get_xnnpack_headers(),
348*523fa7a6SAndroid Build Coastguard Worker        header_namespace = "",
349*523fa7a6SAndroid Build Coastguard Worker        compiler_flags = [
350*523fa7a6SAndroid Build Coastguard Worker            "-O2",
351*523fa7a6SAndroid Build Coastguard Worker            "-Wno-error=missing-braces",  # required since the SGX toolchain does not have this by default
352*523fa7a6SAndroid Build Coastguard Worker        ] + select({
353*523fa7a6SAndroid Build Coastguard Worker            "DEFAULT": AVX_COMPILER_FLAGS,
354*523fa7a6SAndroid Build Coastguard Worker            "ovr_config//cpu:arm32": [],
355*523fa7a6SAndroid Build Coastguard Worker            "ovr_config//cpu:arm64": [],
356*523fa7a6SAndroid Build Coastguard Worker        }),
357*523fa7a6SAndroid Build Coastguard Worker        preferred_linkage = "static",
358*523fa7a6SAndroid Build Coastguard Worker        preprocessor_flags = [
359*523fa7a6SAndroid Build Coastguard Worker            "-DXNN_LOG_LEVEL=0",
360*523fa7a6SAndroid Build Coastguard Worker        ],
361*523fa7a6SAndroid Build Coastguard Worker        exported_deps = [
362*523fa7a6SAndroid Build Coastguard Worker            ":FP16",
363*523fa7a6SAndroid Build Coastguard Worker            ":interface",
364*523fa7a6SAndroid Build Coastguard Worker        ],
365*523fa7a6SAndroid Build Coastguard Worker    )
366*523fa7a6SAndroid Build Coastguard Worker
367*523fa7a6SAndroid Build Coastguard Worker    F16C_COMPILER_FLAGS = ["-mf16c"]
368*523fa7a6SAndroid Build Coastguard Worker
369*523fa7a6SAndroid Build Coastguard Worker    # @lint-ignore BUCKLINT: native and fb_native are explicitly forbidden in fbcode.
370*523fa7a6SAndroid Build Coastguard Worker    native.cxx_library(
371*523fa7a6SAndroid Build Coastguard Worker        name = "ukernels_f16c",
372*523fa7a6SAndroid Build Coastguard Worker        srcs = select({
373*523fa7a6SAndroid Build Coastguard Worker            "DEFAULT": prod_srcs_for_arch_wrapper("f16c"),
374*523fa7a6SAndroid Build Coastguard Worker            "ovr_config//cpu:arm32": DEFAULT_DUMMY_SRC,
375*523fa7a6SAndroid Build Coastguard Worker            "ovr_config//cpu:arm64": DEFAULT_DUMMY_SRC,
376*523fa7a6SAndroid Build Coastguard Worker        }),
377*523fa7a6SAndroid Build Coastguard Worker        headers = get_xnnpack_headers(),
378*523fa7a6SAndroid Build Coastguard Worker        header_namespace = "",
379*523fa7a6SAndroid Build Coastguard Worker        compiler_flags = [
380*523fa7a6SAndroid Build Coastguard Worker            "-O2",
381*523fa7a6SAndroid Build Coastguard Worker            "-Wno-error=missing-braces",  # required since the SGX toolchain does not have this by default
382*523fa7a6SAndroid Build Coastguard Worker        ] + select({
383*523fa7a6SAndroid Build Coastguard Worker            "DEFAULT": F16C_COMPILER_FLAGS,
384*523fa7a6SAndroid Build Coastguard Worker            "ovr_config//cpu:arm32": [],
385*523fa7a6SAndroid Build Coastguard Worker            "ovr_config//cpu:arm64": [],
386*523fa7a6SAndroid Build Coastguard Worker        }),
387*523fa7a6SAndroid Build Coastguard Worker        preferred_linkage = "static",
388*523fa7a6SAndroid Build Coastguard Worker        preprocessor_flags = [
389*523fa7a6SAndroid Build Coastguard Worker            "-DXNN_LOG_LEVEL=0",
390*523fa7a6SAndroid Build Coastguard Worker        ],
391*523fa7a6SAndroid Build Coastguard Worker        exported_deps = [
392*523fa7a6SAndroid Build Coastguard Worker            ":FP16",
393*523fa7a6SAndroid Build Coastguard Worker            ":interface",
394*523fa7a6SAndroid Build Coastguard Worker        ],
395*523fa7a6SAndroid Build Coastguard Worker    )
396*523fa7a6SAndroid Build Coastguard Worker
397*523fa7a6SAndroid Build Coastguard Worker    FMA3_COMPILER_FLAGS = [
398*523fa7a6SAndroid Build Coastguard Worker        "-mfma",
399*523fa7a6SAndroid Build Coastguard Worker        "-mf16c",
400*523fa7a6SAndroid Build Coastguard Worker    ]
401*523fa7a6SAndroid Build Coastguard Worker
402*523fa7a6SAndroid Build Coastguard Worker    # @lint-ignore BUCKLINT: native and fb_native are explicitly forbidden in fbcode.
403*523fa7a6SAndroid Build Coastguard Worker    native.cxx_library(
404*523fa7a6SAndroid Build Coastguard Worker        name = "ukernels_fma3",
405*523fa7a6SAndroid Build Coastguard Worker        srcs = select({
406*523fa7a6SAndroid Build Coastguard Worker            "DEFAULT": prod_srcs_for_arch_wrapper("fma3"),
407*523fa7a6SAndroid Build Coastguard Worker            "ovr_config//cpu:arm32": DEFAULT_DUMMY_SRC,
408*523fa7a6SAndroid Build Coastguard Worker            "ovr_config//cpu:arm64": DEFAULT_DUMMY_SRC,
409*523fa7a6SAndroid Build Coastguard Worker        }),
410*523fa7a6SAndroid Build Coastguard Worker        headers = get_xnnpack_headers(),
411*523fa7a6SAndroid Build Coastguard Worker        header_namespace = "",
412*523fa7a6SAndroid Build Coastguard Worker        compiler_flags = [
413*523fa7a6SAndroid Build Coastguard Worker            "-O2",
414*523fa7a6SAndroid Build Coastguard Worker            "-Wno-error=missing-braces",  # required since the SGX toolchain does not have this by default
415*523fa7a6SAndroid Build Coastguard Worker        ] + select({
416*523fa7a6SAndroid Build Coastguard Worker            "DEFAULT": FMA3_COMPILER_FLAGS,
417*523fa7a6SAndroid Build Coastguard Worker            "ovr_config//cpu:arm32": [],
418*523fa7a6SAndroid Build Coastguard Worker            "ovr_config//cpu:arm64": [],
419*523fa7a6SAndroid Build Coastguard Worker        }),
420*523fa7a6SAndroid Build Coastguard Worker        preferred_linkage = "static",
421*523fa7a6SAndroid Build Coastguard Worker        preprocessor_flags = [
422*523fa7a6SAndroid Build Coastguard Worker            "-DXNN_LOG_LEVEL=0",
423*523fa7a6SAndroid Build Coastguard Worker        ],
424*523fa7a6SAndroid Build Coastguard Worker        exported_deps = [
425*523fa7a6SAndroid Build Coastguard Worker            ":FP16",
426*523fa7a6SAndroid Build Coastguard Worker            ":interface",
427*523fa7a6SAndroid Build Coastguard Worker        ],
428*523fa7a6SAndroid Build Coastguard Worker    )
429*523fa7a6SAndroid Build Coastguard Worker
430*523fa7a6SAndroid Build Coastguard Worker    AVX2_COMPILER_FLAGS = [
431*523fa7a6SAndroid Build Coastguard Worker        "-mavx2",
432*523fa7a6SAndroid Build Coastguard Worker        "-mfma",
433*523fa7a6SAndroid Build Coastguard Worker        "-mf16c",
434*523fa7a6SAndroid Build Coastguard Worker    ]
435*523fa7a6SAndroid Build Coastguard Worker
436*523fa7a6SAndroid Build Coastguard Worker    # @lint-ignore BUCKLINT: native and fb_native are explicitly forbidden in fbcode.
437*523fa7a6SAndroid Build Coastguard Worker    native.cxx_library(
438*523fa7a6SAndroid Build Coastguard Worker        name = "ukernels_avx2",
439*523fa7a6SAndroid Build Coastguard Worker        srcs = select({
440*523fa7a6SAndroid Build Coastguard Worker            "DEFAULT": prod_srcs_for_arch_wrapper("avx2"),
441*523fa7a6SAndroid Build Coastguard Worker            "ovr_config//cpu:arm32": DEFAULT_DUMMY_SRC,
442*523fa7a6SAndroid Build Coastguard Worker            "ovr_config//cpu:arm64": DEFAULT_DUMMY_SRC,
443*523fa7a6SAndroid Build Coastguard Worker        }),
444*523fa7a6SAndroid Build Coastguard Worker        headers = get_xnnpack_headers(),
445*523fa7a6SAndroid Build Coastguard Worker        header_namespace = "",
446*523fa7a6SAndroid Build Coastguard Worker        compiler_flags = [
447*523fa7a6SAndroid Build Coastguard Worker            "-O2",
448*523fa7a6SAndroid Build Coastguard Worker            "-Wno-error=missing-braces",  # required since the SGX toolchain does not have this by default
449*523fa7a6SAndroid Build Coastguard Worker        ] + select({
450*523fa7a6SAndroid Build Coastguard Worker            "DEFAULT": AVX2_COMPILER_FLAGS,
451*523fa7a6SAndroid Build Coastguard Worker            "ovr_config//cpu:arm32": [],
452*523fa7a6SAndroid Build Coastguard Worker            "ovr_config//cpu:arm64": [],
453*523fa7a6SAndroid Build Coastguard Worker        }),
454*523fa7a6SAndroid Build Coastguard Worker        preferred_linkage = "static",
455*523fa7a6SAndroid Build Coastguard Worker        preprocessor_flags = [
456*523fa7a6SAndroid Build Coastguard Worker            "-DXNN_LOG_LEVEL=0",
457*523fa7a6SAndroid Build Coastguard Worker        ],
458*523fa7a6SAndroid Build Coastguard Worker        exported_deps = [
459*523fa7a6SAndroid Build Coastguard Worker            ":FP16",
460*523fa7a6SAndroid Build Coastguard Worker            ":interface",
461*523fa7a6SAndroid Build Coastguard Worker        ],
462*523fa7a6SAndroid Build Coastguard Worker    )
463*523fa7a6SAndroid Build Coastguard Worker
464*523fa7a6SAndroid Build Coastguard Worker    AVX512F_COMPILER_FLAGS = ["-mavx512f"]
465*523fa7a6SAndroid Build Coastguard Worker
466*523fa7a6SAndroid Build Coastguard Worker    # @lint-ignore BUCKLINT: native and fb_native are explicitly forbidden in fbcode.
467*523fa7a6SAndroid Build Coastguard Worker    native.cxx_library(
468*523fa7a6SAndroid Build Coastguard Worker        name = "ukernels_avx512",
469*523fa7a6SAndroid Build Coastguard Worker        srcs = select({
470*523fa7a6SAndroid Build Coastguard Worker            "DEFAULT": prod_srcs_for_arch_wrapper("avx512f"),
471*523fa7a6SAndroid Build Coastguard Worker            "ovr_config//cpu:arm32": DEFAULT_DUMMY_SRC,
472*523fa7a6SAndroid Build Coastguard Worker            "ovr_config//cpu:arm64": DEFAULT_DUMMY_SRC,
473*523fa7a6SAndroid Build Coastguard Worker        }),
474*523fa7a6SAndroid Build Coastguard Worker        headers = get_xnnpack_headers(),
475*523fa7a6SAndroid Build Coastguard Worker        header_namespace = "",
476*523fa7a6SAndroid Build Coastguard Worker        compiler_flags = [
477*523fa7a6SAndroid Build Coastguard Worker            "-O2",
478*523fa7a6SAndroid Build Coastguard Worker            "-Wno-error=missing-braces",  # required since the SGX toolchain does not have this by default
479*523fa7a6SAndroid Build Coastguard Worker        ] + select({
480*523fa7a6SAndroid Build Coastguard Worker            "DEFAULT": AVX512F_COMPILER_FLAGS,
481*523fa7a6SAndroid Build Coastguard Worker            "ovr_config//cpu:arm32": [],
482*523fa7a6SAndroid Build Coastguard Worker            "ovr_config//cpu:arm64": [],
483*523fa7a6SAndroid Build Coastguard Worker        }),
484*523fa7a6SAndroid Build Coastguard Worker        preferred_linkage = "static",
485*523fa7a6SAndroid Build Coastguard Worker        preprocessor_flags = [
486*523fa7a6SAndroid Build Coastguard Worker            "-DXNN_LOG_LEVEL=0",
487*523fa7a6SAndroid Build Coastguard Worker        ],
488*523fa7a6SAndroid Build Coastguard Worker        exported_deps = [
489*523fa7a6SAndroid Build Coastguard Worker            ":FP16",
490*523fa7a6SAndroid Build Coastguard Worker            ":interface",
491*523fa7a6SAndroid Build Coastguard Worker        ],
492*523fa7a6SAndroid Build Coastguard Worker    )
493*523fa7a6SAndroid Build Coastguard Worker
494*523fa7a6SAndroid Build Coastguard Worker    AVX512SKX_COMPILER_FLAGS = [
495*523fa7a6SAndroid Build Coastguard Worker        "-mavx512f",
496*523fa7a6SAndroid Build Coastguard Worker        "-mavx512cd",
497*523fa7a6SAndroid Build Coastguard Worker        "-mavx512bw",
498*523fa7a6SAndroid Build Coastguard Worker        "-mavx512dq",
499*523fa7a6SAndroid Build Coastguard Worker        "-mavx512vl",
500*523fa7a6SAndroid Build Coastguard Worker    ]
501*523fa7a6SAndroid Build Coastguard Worker
502*523fa7a6SAndroid Build Coastguard Worker    # @lint-ignore BUCKLINT: native and fb_native are explicitly forbidden in fbcode.
503*523fa7a6SAndroid Build Coastguard Worker    native.cxx_library(
504*523fa7a6SAndroid Build Coastguard Worker        name = "ukernels_avx512skx",
505*523fa7a6SAndroid Build Coastguard Worker        srcs = select({
506*523fa7a6SAndroid Build Coastguard Worker            "DEFAULT": prod_srcs_for_arch_wrapper("avx512skx"),
507*523fa7a6SAndroid Build Coastguard Worker            "ovr_config//cpu:arm32": DEFAULT_DUMMY_SRC,
508*523fa7a6SAndroid Build Coastguard Worker            "ovr_config//cpu:arm64": DEFAULT_DUMMY_SRC,
509*523fa7a6SAndroid Build Coastguard Worker        }),
510*523fa7a6SAndroid Build Coastguard Worker        headers = get_xnnpack_headers(),
511*523fa7a6SAndroid Build Coastguard Worker        header_namespace = "",
512*523fa7a6SAndroid Build Coastguard Worker        compiler_flags = [
513*523fa7a6SAndroid Build Coastguard Worker            "-O2",
514*523fa7a6SAndroid Build Coastguard Worker            "-Wno-error=missing-braces",  # required since the SGX toolchain does not have this by default
515*523fa7a6SAndroid Build Coastguard Worker        ] + select({
516*523fa7a6SAndroid Build Coastguard Worker            "DEFAULT": AVX512SKX_COMPILER_FLAGS,
517*523fa7a6SAndroid Build Coastguard Worker            "ovr_config//cpu:arm32": [],
518*523fa7a6SAndroid Build Coastguard Worker            "ovr_config//cpu:arm64": [],
519*523fa7a6SAndroid Build Coastguard Worker        }),
520*523fa7a6SAndroid Build Coastguard Worker        preferred_linkage = "static",
521*523fa7a6SAndroid Build Coastguard Worker        preprocessor_flags = [
522*523fa7a6SAndroid Build Coastguard Worker            "-DXNN_LOG_LEVEL=0",
523*523fa7a6SAndroid Build Coastguard Worker        ],
524*523fa7a6SAndroid Build Coastguard Worker        exported_deps = [
525*523fa7a6SAndroid Build Coastguard Worker            ":FP16",
526*523fa7a6SAndroid Build Coastguard Worker            ":interface",
527*523fa7a6SAndroid Build Coastguard Worker        ],
528*523fa7a6SAndroid Build Coastguard Worker    )
529*523fa7a6SAndroid Build Coastguard Worker
530*523fa7a6SAndroid Build Coastguard Worker    NEON_COMPILER_FLAGS = [
531*523fa7a6SAndroid Build Coastguard Worker        "-march=armv7-a",
532*523fa7a6SAndroid Build Coastguard Worker        "-fpu=neon",
533*523fa7a6SAndroid Build Coastguard Worker        "-mfloat-abi=softfp",
534*523fa7a6SAndroid Build Coastguard Worker    ]
535*523fa7a6SAndroid Build Coastguard Worker
536*523fa7a6SAndroid Build Coastguard Worker    # @lint-ignore BUCKLINT: native and fb_native are explicitly forbidden in fbcode.
537*523fa7a6SAndroid Build Coastguard Worker    native.cxx_library(
538*523fa7a6SAndroid Build Coastguard Worker        name = "ukernels_asm",
539*523fa7a6SAndroid Build Coastguard Worker        srcs = select({
540*523fa7a6SAndroid Build Coastguard Worker            "DEFAULT": DEFAULT_DUMMY_SRC,
541*523fa7a6SAndroid Build Coastguard Worker            "ovr_config//cpu:arm32": prod_srcs_for_arch_wrapper("aarch32"),
542*523fa7a6SAndroid Build Coastguard Worker            "ovr_config//cpu:arm64": prod_srcs_for_arch_wrapper("aarch64"),
543*523fa7a6SAndroid Build Coastguard Worker        }),
544*523fa7a6SAndroid Build Coastguard Worker        headers = get_xnnpack_headers(),
545*523fa7a6SAndroid Build Coastguard Worker        header_namespace = "",
546*523fa7a6SAndroid Build Coastguard Worker        platform_compiler_flags = [
547*523fa7a6SAndroid Build Coastguard Worker            (
548*523fa7a6SAndroid Build Coastguard Worker                "(aarch64|arm64)",
549*523fa7a6SAndroid Build Coastguard Worker                [
550*523fa7a6SAndroid Build Coastguard Worker                    "-march=armv8.2-a+fp16+dotprod",
551*523fa7a6SAndroid Build Coastguard Worker                ],
552*523fa7a6SAndroid Build Coastguard Worker            ),
553*523fa7a6SAndroid Build Coastguard Worker            (
554*523fa7a6SAndroid Build Coastguard Worker                "(aarch32|arm32)",
555*523fa7a6SAndroid Build Coastguard Worker                [
556*523fa7a6SAndroid Build Coastguard Worker                    "-marm",
557*523fa7a6SAndroid Build Coastguard Worker                    "-march=armv8.2-a+dotprod",
558*523fa7a6SAndroid Build Coastguard Worker                    "-mfpu=neon-fp-armv8",
559*523fa7a6SAndroid Build Coastguard Worker                ],
560*523fa7a6SAndroid Build Coastguard Worker            ),
561*523fa7a6SAndroid Build Coastguard Worker        ],
562*523fa7a6SAndroid Build Coastguard Worker        compiler_flags = [
563*523fa7a6SAndroid Build Coastguard Worker            "-O2",
564*523fa7a6SAndroid Build Coastguard Worker        ],
565*523fa7a6SAndroid Build Coastguard Worker        preferred_linkage = "static",
566*523fa7a6SAndroid Build Coastguard Worker        preprocessor_flags = [
567*523fa7a6SAndroid Build Coastguard Worker            "-DXNN_LOG_LEVEL=0",
568*523fa7a6SAndroid Build Coastguard Worker        ],
569*523fa7a6SAndroid Build Coastguard Worker        exported_deps = [
570*523fa7a6SAndroid Build Coastguard Worker            ":FP16",
571*523fa7a6SAndroid Build Coastguard Worker            ":interface",
572*523fa7a6SAndroid Build Coastguard Worker        ],
573*523fa7a6SAndroid Build Coastguard Worker    )
574*523fa7a6SAndroid Build Coastguard Worker
575*523fa7a6SAndroid Build Coastguard Worker    # @lint-ignore BUCKLINT: native and fb_native are explicitly forbidden in fbcode.
576*523fa7a6SAndroid Build Coastguard Worker    native.cxx_library(
577*523fa7a6SAndroid Build Coastguard Worker        name = "ukernels_neon",
578*523fa7a6SAndroid Build Coastguard Worker        srcs = select({
579*523fa7a6SAndroid Build Coastguard Worker            "DEFAULT": prod_srcs_for_arch_wrapper("neon"),
580*523fa7a6SAndroid Build Coastguard Worker            "ovr_config//cpu:x86_32": DEFAULT_DUMMY_SRC,
581*523fa7a6SAndroid Build Coastguard Worker            "ovr_config//cpu:x86_64": DEFAULT_DUMMY_SRC,
582*523fa7a6SAndroid Build Coastguard Worker        }),
583*523fa7a6SAndroid Build Coastguard Worker        headers = get_xnnpack_headers(),
584*523fa7a6SAndroid Build Coastguard Worker        header_namespace = "",
585*523fa7a6SAndroid Build Coastguard Worker        compiler_flags = [
586*523fa7a6SAndroid Build Coastguard Worker            "-O2",
587*523fa7a6SAndroid Build Coastguard Worker            "-Wno-error=missing-braces",  # required since the SGX toolchain does not have this by default
588*523fa7a6SAndroid Build Coastguard Worker        ] + select({
589*523fa7a6SAndroid Build Coastguard Worker            "DEFAULT": [],
590*523fa7a6SAndroid Build Coastguard Worker            "ovr_config//cpu:arm32": NEON_COMPILER_FLAGS,
591*523fa7a6SAndroid Build Coastguard Worker            "ovr_config//cpu:x86_32": [],
592*523fa7a6SAndroid Build Coastguard Worker            "ovr_config//cpu:x86_64": [],
593*523fa7a6SAndroid Build Coastguard Worker        }),
594*523fa7a6SAndroid Build Coastguard Worker        preferred_linkage = "static",
595*523fa7a6SAndroid Build Coastguard Worker        preprocessor_flags = [
596*523fa7a6SAndroid Build Coastguard Worker            "-DXNN_LOG_LEVEL=0",
597*523fa7a6SAndroid Build Coastguard Worker        ],
598*523fa7a6SAndroid Build Coastguard Worker        exported_deps = [
599*523fa7a6SAndroid Build Coastguard Worker            ":FP16",
600*523fa7a6SAndroid Build Coastguard Worker            ":interface",
601*523fa7a6SAndroid Build Coastguard Worker        ],
602*523fa7a6SAndroid Build Coastguard Worker    )
603*523fa7a6SAndroid Build Coastguard Worker
604*523fa7a6SAndroid Build Coastguard Worker    AVX512VBMI_COMPILER_FLAGS = ["-mavx512vbmi"]
605*523fa7a6SAndroid Build Coastguard Worker
606*523fa7a6SAndroid Build Coastguard Worker    # @lint-ignore BUCKLINT: native and fb_native are explicitly forbidden in fbcode.
607*523fa7a6SAndroid Build Coastguard Worker    native.cxx_library(
608*523fa7a6SAndroid Build Coastguard Worker        name = "ukernels_avx512vbmi",
609*523fa7a6SAndroid Build Coastguard Worker        srcs = select({
610*523fa7a6SAndroid Build Coastguard Worker            "DEFAULT": prod_srcs_for_arch_wrapper("avx512vbmi"),
611*523fa7a6SAndroid Build Coastguard Worker            "ovr_config//cpu:arm32": DEFAULT_DUMMY_SRC,
612*523fa7a6SAndroid Build Coastguard Worker            "ovr_config//cpu:arm64": DEFAULT_DUMMY_SRC,
613*523fa7a6SAndroid Build Coastguard Worker        }),
614*523fa7a6SAndroid Build Coastguard Worker        headers = get_xnnpack_headers(),
615*523fa7a6SAndroid Build Coastguard Worker        header_namespace = "",
616*523fa7a6SAndroid Build Coastguard Worker        compiler_flags = [
617*523fa7a6SAndroid Build Coastguard Worker            "-O2",
618*523fa7a6SAndroid Build Coastguard Worker            "-Wno-error=missing-braces",  # required since the SGX toolchain does not have this by default
619*523fa7a6SAndroid Build Coastguard Worker        ] + select({
620*523fa7a6SAndroid Build Coastguard Worker            "DEFAULT": AVX512VBMI_COMPILER_FLAGS,
621*523fa7a6SAndroid Build Coastguard Worker            "ovr_config//cpu:arm32": [],
622*523fa7a6SAndroid Build Coastguard Worker            "ovr_config//cpu:arm64": [],
623*523fa7a6SAndroid Build Coastguard Worker        }),
624*523fa7a6SAndroid Build Coastguard Worker        preferred_linkage = "static",
625*523fa7a6SAndroid Build Coastguard Worker        preprocessor_flags = [
626*523fa7a6SAndroid Build Coastguard Worker            "-DXNN_LOG_LEVEL=0",
627*523fa7a6SAndroid Build Coastguard Worker        ],
628*523fa7a6SAndroid Build Coastguard Worker        exported_deps = [
629*523fa7a6SAndroid Build Coastguard Worker            ":FP16",
630*523fa7a6SAndroid Build Coastguard Worker            ":interface",
631*523fa7a6SAndroid Build Coastguard Worker        ],
632*523fa7a6SAndroid Build Coastguard Worker    )
633*523fa7a6SAndroid Build Coastguard Worker
634*523fa7a6SAndroid Build Coastguard Worker    NEON64_AARCH64_COMPILER_FLAGS = []
635*523fa7a6SAndroid Build Coastguard Worker
636*523fa7a6SAndroid Build Coastguard Worker    # @lint-ignore BUCKLINT: native and fb_native are explicitly forbidden in fbcode.
637*523fa7a6SAndroid Build Coastguard Worker    native.cxx_library(
638*523fa7a6SAndroid Build Coastguard Worker        name = "ukernels_neon_aarch64",
639*523fa7a6SAndroid Build Coastguard Worker        srcs = select({
640*523fa7a6SAndroid Build Coastguard Worker            "DEFAULT": prod_srcs_for_arch_wrapper("neon_aarch64"),
641*523fa7a6SAndroid Build Coastguard Worker            "ovr_config//cpu:arm32": DEFAULT_DUMMY_SRC,
642*523fa7a6SAndroid Build Coastguard Worker            "ovr_config//cpu:x86_32": DEFAULT_DUMMY_SRC,
643*523fa7a6SAndroid Build Coastguard Worker            "ovr_config//cpu:x86_64": DEFAULT_DUMMY_SRC,
644*523fa7a6SAndroid Build Coastguard Worker        }),
645*523fa7a6SAndroid Build Coastguard Worker        headers = get_xnnpack_headers(),
646*523fa7a6SAndroid Build Coastguard Worker        header_namespace = "",
647*523fa7a6SAndroid Build Coastguard Worker        compiler_flags = [
648*523fa7a6SAndroid Build Coastguard Worker            "-O2",
649*523fa7a6SAndroid Build Coastguard Worker            "-Wno-error=missing-braces",  # required since the SGX toolchain does not have this by default
650*523fa7a6SAndroid Build Coastguard Worker        ] + select({
651*523fa7a6SAndroid Build Coastguard Worker            "DEFAULT": NEON64_AARCH64_COMPILER_FLAGS,
652*523fa7a6SAndroid Build Coastguard Worker            "ovr_config//cpu:arm32": [],
653*523fa7a6SAndroid Build Coastguard Worker            "ovr_config//cpu:x86_32": [],
654*523fa7a6SAndroid Build Coastguard Worker            "ovr_config//cpu:x86_64": [],
655*523fa7a6SAndroid Build Coastguard Worker        }),
656*523fa7a6SAndroid Build Coastguard Worker        preferred_linkage = "static",
657*523fa7a6SAndroid Build Coastguard Worker        preprocessor_flags = [
658*523fa7a6SAndroid Build Coastguard Worker            "-DXNN_LOG_LEVEL=0",
659*523fa7a6SAndroid Build Coastguard Worker        ],
660*523fa7a6SAndroid Build Coastguard Worker        exported_deps = [
661*523fa7a6SAndroid Build Coastguard Worker            ":FP16",
662*523fa7a6SAndroid Build Coastguard Worker            ":interface",
663*523fa7a6SAndroid Build Coastguard Worker        ],
664*523fa7a6SAndroid Build Coastguard Worker    )
665*523fa7a6SAndroid Build Coastguard Worker
666*523fa7a6SAndroid Build Coastguard Worker    NEON_FP16_COMPILER_FLAGS = ["-mfpu=neon-fp16"]
667*523fa7a6SAndroid Build Coastguard Worker
668*523fa7a6SAndroid Build Coastguard Worker    # @lint-ignore BUCKLINT: native and fb_native are explicitly forbidden in fbcode.
669*523fa7a6SAndroid Build Coastguard Worker    native.cxx_library(
670*523fa7a6SAndroid Build Coastguard Worker        name = "ukernels_neon_fp16",
671*523fa7a6SAndroid Build Coastguard Worker        srcs = select({
672*523fa7a6SAndroid Build Coastguard Worker            "DEFAULT": prod_srcs_for_arch_wrapper("neonfp16"),
673*523fa7a6SAndroid Build Coastguard Worker            "ovr_config//cpu:x86_32": DEFAULT_DUMMY_SRC,
674*523fa7a6SAndroid Build Coastguard Worker            "ovr_config//cpu:x86_64": DEFAULT_DUMMY_SRC,
675*523fa7a6SAndroid Build Coastguard Worker        }),
676*523fa7a6SAndroid Build Coastguard Worker        headers = get_xnnpack_headers(),
677*523fa7a6SAndroid Build Coastguard Worker        header_namespace = "",
678*523fa7a6SAndroid Build Coastguard Worker        compiler_flags = [
679*523fa7a6SAndroid Build Coastguard Worker            "-O2",
680*523fa7a6SAndroid Build Coastguard Worker            "-Wno-error=missing-braces",  # required since the SGX toolchain does not have this by default
681*523fa7a6SAndroid Build Coastguard Worker        ] + select({
682*523fa7a6SAndroid Build Coastguard Worker            "DEFAULT": [],
683*523fa7a6SAndroid Build Coastguard Worker            "ovr_config//cpu:arm32": NEON_FP16_COMPILER_FLAGS,
684*523fa7a6SAndroid Build Coastguard Worker            "ovr_config//cpu:x86_32": [],
685*523fa7a6SAndroid Build Coastguard Worker            "ovr_config//cpu:x86_64": [],
686*523fa7a6SAndroid Build Coastguard Worker        }),
687*523fa7a6SAndroid Build Coastguard Worker        preferred_linkage = "static",
688*523fa7a6SAndroid Build Coastguard Worker        preprocessor_flags = [
689*523fa7a6SAndroid Build Coastguard Worker            "-DXNN_LOG_LEVEL=0",
690*523fa7a6SAndroid Build Coastguard Worker        ],
691*523fa7a6SAndroid Build Coastguard Worker        exported_deps = [
692*523fa7a6SAndroid Build Coastguard Worker            ":interface",
693*523fa7a6SAndroid Build Coastguard Worker            ":FP16",
694*523fa7a6SAndroid Build Coastguard Worker        ],
695*523fa7a6SAndroid Build Coastguard Worker    )
696*523fa7a6SAndroid Build Coastguard Worker
697*523fa7a6SAndroid Build Coastguard Worker    NEON32_FMA_COMPILER_FLAGS = ["-mfpu=neon-vfp4"]
698*523fa7a6SAndroid Build Coastguard Worker    NEON64_FMA_COMPILER_FLAGS = [
699*523fa7a6SAndroid Build Coastguard Worker        "-march=armv8-a",
700*523fa7a6SAndroid Build Coastguard Worker    ]
701*523fa7a6SAndroid Build Coastguard Worker
702*523fa7a6SAndroid Build Coastguard Worker    # @lint-ignore BUCKLINT: native and fb_native are explicitly forbidden in fbcode.
703*523fa7a6SAndroid Build Coastguard Worker    native.cxx_library(
704*523fa7a6SAndroid Build Coastguard Worker        name = "ukernels_neon_fma",
705*523fa7a6SAndroid Build Coastguard Worker        srcs = select({
706*523fa7a6SAndroid Build Coastguard Worker            "DEFAULT": DEFAULT_DUMMY_SRC,
707*523fa7a6SAndroid Build Coastguard Worker            "ovr_config//cpu:arm32": prod_srcs_for_arch_wrapper("neonfma"),
708*523fa7a6SAndroid Build Coastguard Worker            "ovr_config//cpu:arm64": prod_srcs_for_arch_wrapper("neonfma") + prod_srcs_for_arch_wrapper("neonfma_aarch64"),
709*523fa7a6SAndroid Build Coastguard Worker            "ovr_config//cpu:x86_32": DEFAULT_DUMMY_SRC,
710*523fa7a6SAndroid Build Coastguard Worker            "ovr_config//cpu:x86_64": DEFAULT_DUMMY_SRC,
711*523fa7a6SAndroid Build Coastguard Worker        }),
712*523fa7a6SAndroid Build Coastguard Worker        headers = get_xnnpack_headers(),
713*523fa7a6SAndroid Build Coastguard Worker        header_namespace = "",
714*523fa7a6SAndroid Build Coastguard Worker        compiler_flags = [
715*523fa7a6SAndroid Build Coastguard Worker            "-O2",
716*523fa7a6SAndroid Build Coastguard Worker            "-Wno-error=missing-braces",  # required since the SGX toolchain does not have this by default
717*523fa7a6SAndroid Build Coastguard Worker        ] + select({
718*523fa7a6SAndroid Build Coastguard Worker            "DEFAULT": [],
719*523fa7a6SAndroid Build Coastguard Worker            "ovr_config//cpu:arm32": NEON32_FMA_COMPILER_FLAGS,
720*523fa7a6SAndroid Build Coastguard Worker            "ovr_config//cpu:arm64": NEON64_FMA_COMPILER_FLAGS,
721*523fa7a6SAndroid Build Coastguard Worker            "ovr_config//cpu:x86_32": [],
722*523fa7a6SAndroid Build Coastguard Worker            "ovr_config//cpu:x86_64": [],
723*523fa7a6SAndroid Build Coastguard Worker        }),
724*523fa7a6SAndroid Build Coastguard Worker        preferred_linkage = "static",
725*523fa7a6SAndroid Build Coastguard Worker        preprocessor_flags = [
726*523fa7a6SAndroid Build Coastguard Worker            "-DXNN_LOG_LEVEL=0",
727*523fa7a6SAndroid Build Coastguard Worker        ],
728*523fa7a6SAndroid Build Coastguard Worker        exported_deps = [
729*523fa7a6SAndroid Build Coastguard Worker            ":FP16",
730*523fa7a6SAndroid Build Coastguard Worker            ":interface",
731*523fa7a6SAndroid Build Coastguard Worker        ],
732*523fa7a6SAndroid Build Coastguard Worker    )
733*523fa7a6SAndroid Build Coastguard Worker
734*523fa7a6SAndroid Build Coastguard Worker    NEON64_V8_COMPILER_FLAGS = [
735*523fa7a6SAndroid Build Coastguard Worker        "-march=armv8-a",
736*523fa7a6SAndroid Build Coastguard Worker    ]
737*523fa7a6SAndroid Build Coastguard Worker
738*523fa7a6SAndroid Build Coastguard Worker    NEON32_V8_COMPILER_FLAGS = [
739*523fa7a6SAndroid Build Coastguard Worker        "-march=armv8-a",
740*523fa7a6SAndroid Build Coastguard Worker        "-mfpu=neon-fp-armv8",
741*523fa7a6SAndroid Build Coastguard Worker        "-mfloat-abi=softfp",
742*523fa7a6SAndroid Build Coastguard Worker    ]
743*523fa7a6SAndroid Build Coastguard Worker
744*523fa7a6SAndroid Build Coastguard Worker    # @lint-ignore BUCKLINT: native and fb_native are explicitly forbidden in fbcode.
745*523fa7a6SAndroid Build Coastguard Worker    native.cxx_library(
746*523fa7a6SAndroid Build Coastguard Worker        name = "ukernels_neon_v8",
747*523fa7a6SAndroid Build Coastguard Worker        srcs = select({
748*523fa7a6SAndroid Build Coastguard Worker            "DEFAULT": prod_srcs_for_arch_wrapper("neonv8"),
749*523fa7a6SAndroid Build Coastguard Worker            "ovr_config//cpu:x86_32": DEFAULT_DUMMY_SRC,
750*523fa7a6SAndroid Build Coastguard Worker            "ovr_config//cpu:x86_64": DEFAULT_DUMMY_SRC,
751*523fa7a6SAndroid Build Coastguard Worker        }),
752*523fa7a6SAndroid Build Coastguard Worker        headers = get_xnnpack_headers(),
753*523fa7a6SAndroid Build Coastguard Worker        header_namespace = "",
754*523fa7a6SAndroid Build Coastguard Worker        compiler_flags = [
755*523fa7a6SAndroid Build Coastguard Worker            "-O2",
756*523fa7a6SAndroid Build Coastguard Worker            "-Wno-error=missing-braces",  # required since the SGX toolchain does not have this by default
757*523fa7a6SAndroid Build Coastguard Worker        ] + select({
758*523fa7a6SAndroid Build Coastguard Worker            "DEFAULT": NEON64_V8_COMPILER_FLAGS,
759*523fa7a6SAndroid Build Coastguard Worker            "ovr_config//cpu:arm32": NEON32_V8_COMPILER_FLAGS,
760*523fa7a6SAndroid Build Coastguard Worker            "ovr_config//cpu:x86_32": [],
761*523fa7a6SAndroid Build Coastguard Worker            "ovr_config//cpu:x86_64": [],
762*523fa7a6SAndroid Build Coastguard Worker        }),
763*523fa7a6SAndroid Build Coastguard Worker        preferred_linkage = "static",
764*523fa7a6SAndroid Build Coastguard Worker        preprocessor_flags = [
765*523fa7a6SAndroid Build Coastguard Worker            "-DXNN_LOG_LEVEL=0",
766*523fa7a6SAndroid Build Coastguard Worker        ],
767*523fa7a6SAndroid Build Coastguard Worker        exported_deps = [
768*523fa7a6SAndroid Build Coastguard Worker            ":FP16",
769*523fa7a6SAndroid Build Coastguard Worker            ":interface",
770*523fa7a6SAndroid Build Coastguard Worker        ],
771*523fa7a6SAndroid Build Coastguard Worker    )
772*523fa7a6SAndroid Build Coastguard Worker
773*523fa7a6SAndroid Build Coastguard Worker    NEON64_FP16ARITH_COMPILER_FLAGS = ["-march=armv8.2-a+fp16"]
774*523fa7a6SAndroid Build Coastguard Worker    NEON32_FP16ARITH_COMPILER_FLAGS = [
775*523fa7a6SAndroid Build Coastguard Worker        "-marm",
776*523fa7a6SAndroid Build Coastguard Worker        "-march=armv8.2-a+fp16",
777*523fa7a6SAndroid Build Coastguard Worker        "-mfpu=neon-fp-armv8",
778*523fa7a6SAndroid Build Coastguard Worker    ]
779*523fa7a6SAndroid Build Coastguard Worker
780*523fa7a6SAndroid Build Coastguard Worker    # @lint-ignore BUCKLINT: native and fb_native are explicitly forbidden in fbcode.
781*523fa7a6SAndroid Build Coastguard Worker    native.cxx_library(
782*523fa7a6SAndroid Build Coastguard Worker        name = "ukernels_neon_fp16arith",
783*523fa7a6SAndroid Build Coastguard Worker        srcs = select({
784*523fa7a6SAndroid Build Coastguard Worker            "DEFAULT": DEFAULT_DUMMY_SRC,
785*523fa7a6SAndroid Build Coastguard Worker            "ovr_config//cpu:arm32": prod_srcs_for_arch_wrapper("neonfp16arith"),
786*523fa7a6SAndroid Build Coastguard Worker            "ovr_config//cpu:arm64": prod_srcs_for_arch_wrapper("neonfp16arith") + prod_srcs_for_arch_wrapper("neonfp16arith_aarch64"),
787*523fa7a6SAndroid Build Coastguard Worker        }),
788*523fa7a6SAndroid Build Coastguard Worker        headers = get_xnnpack_headers(),
789*523fa7a6SAndroid Build Coastguard Worker        header_namespace = "",
790*523fa7a6SAndroid Build Coastguard Worker        compiler_flags = [
791*523fa7a6SAndroid Build Coastguard Worker            "-O2",
792*523fa7a6SAndroid Build Coastguard Worker            "-Wno-error=missing-braces",  # required since the SGX toolchain does not have this by default
793*523fa7a6SAndroid Build Coastguard Worker        ] + select({
794*523fa7a6SAndroid Build Coastguard Worker            "DEFAULT": NEON64_FP16ARITH_COMPILER_FLAGS,
795*523fa7a6SAndroid Build Coastguard Worker            "ovr_config//cpu:arm32": NEON32_FP16ARITH_COMPILER_FLAGS,
796*523fa7a6SAndroid Build Coastguard Worker            "ovr_config//cpu:arm64": NEON64_FP16ARITH_COMPILER_FLAGS,
797*523fa7a6SAndroid Build Coastguard Worker            "ovr_config//cpu:x86_32": [],
798*523fa7a6SAndroid Build Coastguard Worker            "ovr_config//cpu:x86_64": [],
799*523fa7a6SAndroid Build Coastguard Worker        }),
800*523fa7a6SAndroid Build Coastguard Worker        preferred_linkage = "static",
801*523fa7a6SAndroid Build Coastguard Worker        preprocessor_flags = [
802*523fa7a6SAndroid Build Coastguard Worker            "-DXNN_LOG_LEVEL=0",
803*523fa7a6SAndroid Build Coastguard Worker        ],
804*523fa7a6SAndroid Build Coastguard Worker        exported_deps = [
805*523fa7a6SAndroid Build Coastguard Worker            ":FP16",
806*523fa7a6SAndroid Build Coastguard Worker            ":interface",
807*523fa7a6SAndroid Build Coastguard Worker        ],
808*523fa7a6SAndroid Build Coastguard Worker    )
809*523fa7a6SAndroid Build Coastguard Worker
810*523fa7a6SAndroid Build Coastguard Worker    NEONDOTFP16ARITH_COMPILER_FLAGS = [
811*523fa7a6SAndroid Build Coastguard Worker        "-marm",
812*523fa7a6SAndroid Build Coastguard Worker        "-march=armv8.2-a+dotprod+fp16",
813*523fa7a6SAndroid Build Coastguard Worker        "-mfpu=neon-fp-armv8",
814*523fa7a6SAndroid Build Coastguard Worker    ]
815*523fa7a6SAndroid Build Coastguard Worker
816*523fa7a6SAndroid Build Coastguard Worker    NEONDOTFP16ARITH_AARCH64_COMPILER_FLAGS = [
817*523fa7a6SAndroid Build Coastguard Worker        "-march=armv8.2-a+dotprod+fp16",
818*523fa7a6SAndroid Build Coastguard Worker    ]
819*523fa7a6SAndroid Build Coastguard Worker
820*523fa7a6SAndroid Build Coastguard Worker    # @lint-ignore BUCKLINT: native and fb_native are explicitly forbidden in fbcode.
821*523fa7a6SAndroid Build Coastguard Worker    native.cxx_library(
822*523fa7a6SAndroid Build Coastguard Worker        name = "ukernels_neondotfp16arith",
823*523fa7a6SAndroid Build Coastguard Worker        srcs = select({
824*523fa7a6SAndroid Build Coastguard Worker            "DEFAULT": DEFAULT_DUMMY_SRC,
825*523fa7a6SAndroid Build Coastguard Worker            "ovr_config//cpu:arm32": prod_srcs_for_arch_wrapper("neondotfp16arith"),
826*523fa7a6SAndroid Build Coastguard Worker            "ovr_config//cpu:arm64": prod_srcs_for_arch_wrapper("neondotfp16arith") + prod_srcs_for_arch_wrapper("neondotfp16arith_aarch64"),
827*523fa7a6SAndroid Build Coastguard Worker        }),
828*523fa7a6SAndroid Build Coastguard Worker        headers = get_xnnpack_headers(),
829*523fa7a6SAndroid Build Coastguard Worker        header_namespace = "",
830*523fa7a6SAndroid Build Coastguard Worker        compiler_flags = [
831*523fa7a6SAndroid Build Coastguard Worker            "-O2",
832*523fa7a6SAndroid Build Coastguard Worker            "-Wno-error=missing-braces",  # required since the SGX toolchain does not have this by default
833*523fa7a6SAndroid Build Coastguard Worker        ] + select({
834*523fa7a6SAndroid Build Coastguard Worker            "ovr_config//cpu:arm32": NEONDOTFP16ARITH_COMPILER_FLAGS,
835*523fa7a6SAndroid Build Coastguard Worker            "ovr_config//cpu:arm64": NEONDOTFP16ARITH_AARCH64_COMPILER_FLAGS,
836*523fa7a6SAndroid Build Coastguard Worker        }),
837*523fa7a6SAndroid Build Coastguard Worker        preferred_linkage = "static",
838*523fa7a6SAndroid Build Coastguard Worker        preprocessor_flags = [
839*523fa7a6SAndroid Build Coastguard Worker            "-DXNN_LOG_LEVEL=0",
840*523fa7a6SAndroid Build Coastguard Worker        ],
841*523fa7a6SAndroid Build Coastguard Worker        exported_deps = [
842*523fa7a6SAndroid Build Coastguard Worker            ":FP16",
843*523fa7a6SAndroid Build Coastguard Worker            ":interface",
844*523fa7a6SAndroid Build Coastguard Worker        ],
845*523fa7a6SAndroid Build Coastguard Worker    )
846*523fa7a6SAndroid Build Coastguard Worker
847*523fa7a6SAndroid Build Coastguard Worker    NEON64_DOT_COMPILER_FLAGS = ["-march=armv8.2-a+dotprod"]
848*523fa7a6SAndroid Build Coastguard Worker
849*523fa7a6SAndroid Build Coastguard Worker    NEON32_DOT_COMPILER_FLAGS = [
850*523fa7a6SAndroid Build Coastguard Worker        "-march=armv8.2-a+dotprod",
851*523fa7a6SAndroid Build Coastguard Worker        "-mfpu=neon-fp-armv8",
852*523fa7a6SAndroid Build Coastguard Worker        "-mfloat-abi=softfp",
853*523fa7a6SAndroid Build Coastguard Worker    ]
854*523fa7a6SAndroid Build Coastguard Worker
855*523fa7a6SAndroid Build Coastguard Worker    # @lint-ignore BUCKLINT: native and fb_native are explicitly forbidden in fbcode.
856*523fa7a6SAndroid Build Coastguard Worker    native.cxx_library(
857*523fa7a6SAndroid Build Coastguard Worker        name = "ukernels_neon_dot",
858*523fa7a6SAndroid Build Coastguard Worker        srcs = select({
859*523fa7a6SAndroid Build Coastguard Worker            "DEFAULT": DEFAULT_DUMMY_SRC,
860*523fa7a6SAndroid Build Coastguard Worker            "ovr_config//cpu:arm32": prod_srcs_for_arch_wrapper("neondot"),
861*523fa7a6SAndroid Build Coastguard Worker            "ovr_config//cpu:arm64": prod_srcs_for_arch_wrapper("neondot") + prod_srcs_for_arch_wrapper("neondot_aarch64"),
862*523fa7a6SAndroid Build Coastguard Worker            "ovr_config//cpu:x86_32": DEFAULT_DUMMY_SRC,
863*523fa7a6SAndroid Build Coastguard Worker            "ovr_config//cpu:x86_64": DEFAULT_DUMMY_SRC,
864*523fa7a6SAndroid Build Coastguard Worker        }),
865*523fa7a6SAndroid Build Coastguard Worker        headers = get_xnnpack_headers(),
866*523fa7a6SAndroid Build Coastguard Worker        header_namespace = "",
867*523fa7a6SAndroid Build Coastguard Worker        compiler_flags = [
868*523fa7a6SAndroid Build Coastguard Worker            "-O2",
869*523fa7a6SAndroid Build Coastguard Worker            "-Wno-error=missing-braces",  # required since the SGX toolchain does not have this by default
870*523fa7a6SAndroid Build Coastguard Worker        ] + select({
871*523fa7a6SAndroid Build Coastguard Worker            "DEFAULT": [],
872*523fa7a6SAndroid Build Coastguard Worker            "ovr_config//cpu:arm32": NEON32_DOT_COMPILER_FLAGS,
873*523fa7a6SAndroid Build Coastguard Worker            "ovr_config//cpu:arm64": NEON64_DOT_COMPILER_FLAGS,
874*523fa7a6SAndroid Build Coastguard Worker            "ovr_config//cpu:x86_32": [],
875*523fa7a6SAndroid Build Coastguard Worker            "ovr_config//cpu:x86_64": [],
876*523fa7a6SAndroid Build Coastguard Worker        }),
877*523fa7a6SAndroid Build Coastguard Worker        preferred_linkage = "static",
878*523fa7a6SAndroid Build Coastguard Worker        preprocessor_flags = [
879*523fa7a6SAndroid Build Coastguard Worker            "-DXNN_LOG_LEVEL=0",
880*523fa7a6SAndroid Build Coastguard Worker        ],
881*523fa7a6SAndroid Build Coastguard Worker        exported_deps = [
882*523fa7a6SAndroid Build Coastguard Worker            ":FP16",
883*523fa7a6SAndroid Build Coastguard Worker            ":interface",
884*523fa7a6SAndroid Build Coastguard Worker        ],
885*523fa7a6SAndroid Build Coastguard Worker    )
886*523fa7a6SAndroid Build Coastguard Worker
887*523fa7a6SAndroid Build Coastguard Worker    # @lint-ignore BUCKLINT: native and fb_native are explicitly forbidden in fbcode.
888*523fa7a6SAndroid Build Coastguard Worker    NEON32_I8MM_COMPILER_FLAGS = [
889*523fa7a6SAndroid Build Coastguard Worker        "-marm",
890*523fa7a6SAndroid Build Coastguard Worker        "-march=armv8.2-a+i8mm+fp16",
891*523fa7a6SAndroid Build Coastguard Worker        "-mfpu=neon-fp-armv8",
892*523fa7a6SAndroid Build Coastguard Worker    ]
893*523fa7a6SAndroid Build Coastguard Worker
894*523fa7a6SAndroid Build Coastguard Worker    NEON64_I8MM_COMPILER_FLAGS = [
895*523fa7a6SAndroid Build Coastguard Worker        "-march=armv8.2-a+i8mm+fp16",
896*523fa7a6SAndroid Build Coastguard Worker    ]
897*523fa7a6SAndroid Build Coastguard Worker
898*523fa7a6SAndroid Build Coastguard Worker    # @lint-ignore BUCKLINT: native and fb_native are explicitly forbidden in fbcode.
899*523fa7a6SAndroid Build Coastguard Worker    native.cxx_library(
900*523fa7a6SAndroid Build Coastguard Worker        name = "ukernels_neon_i8mm",
901*523fa7a6SAndroid Build Coastguard Worker        srcs = select({
902*523fa7a6SAndroid Build Coastguard Worker            "DEFAULT": prod_srcs_for_arch_wrapper("neoni8mm"),
903*523fa7a6SAndroid Build Coastguard Worker            "ovr_config//cpu:x86_32": DEFAULT_DUMMY_SRC,
904*523fa7a6SAndroid Build Coastguard Worker            "ovr_config//cpu:x86_64": DEFAULT_DUMMY_SRC,
905*523fa7a6SAndroid Build Coastguard Worker        }),
906*523fa7a6SAndroid Build Coastguard Worker        headers = get_xnnpack_headers(),
907*523fa7a6SAndroid Build Coastguard Worker        header_namespace = "",
908*523fa7a6SAndroid Build Coastguard Worker        compiler_flags = [
909*523fa7a6SAndroid Build Coastguard Worker            "-O2",
910*523fa7a6SAndroid Build Coastguard Worker            "-Wno-error=missing-braces",  # required since the SGX toolchain does not have this by default
911*523fa7a6SAndroid Build Coastguard Worker        ] + select({
912*523fa7a6SAndroid Build Coastguard Worker            "DEFAULT": NEON64_I8MM_COMPILER_FLAGS,
913*523fa7a6SAndroid Build Coastguard Worker            "ovr_config//cpu:arm32": NEON32_I8MM_COMPILER_FLAGS,
914*523fa7a6SAndroid Build Coastguard Worker            "ovr_config//cpu:x86_32": [],
915*523fa7a6SAndroid Build Coastguard Worker            "ovr_config//cpu:x86_64": [],
916*523fa7a6SAndroid Build Coastguard Worker        }),
917*523fa7a6SAndroid Build Coastguard Worker        preferred_linkage = "static",
918*523fa7a6SAndroid Build Coastguard Worker        preprocessor_flags = [
919*523fa7a6SAndroid Build Coastguard Worker            "-DXNN_LOG_LEVEL=0",
920*523fa7a6SAndroid Build Coastguard Worker        ],
921*523fa7a6SAndroid Build Coastguard Worker        exported_deps = [
922*523fa7a6SAndroid Build Coastguard Worker            ":FP16",
923*523fa7a6SAndroid Build Coastguard Worker            ":interface",
924*523fa7a6SAndroid Build Coastguard Worker        ],
925*523fa7a6SAndroid Build Coastguard Worker    )
926*523fa7a6SAndroid Build Coastguard Worker
927*523fa7a6SAndroid Build Coastguard Worker    AVX512VNNI_COMPILER_FLAGS = [
928*523fa7a6SAndroid Build Coastguard Worker        "-mavx512f",
929*523fa7a6SAndroid Build Coastguard Worker        "-mavx512cd",
930*523fa7a6SAndroid Build Coastguard Worker        "-mavx512bw",
931*523fa7a6SAndroid Build Coastguard Worker        "-mavx512dq",
932*523fa7a6SAndroid Build Coastguard Worker        "-mavx512vl",
933*523fa7a6SAndroid Build Coastguard Worker        "-mavx512vnni",
934*523fa7a6SAndroid Build Coastguard Worker    ]
935*523fa7a6SAndroid Build Coastguard Worker
936*523fa7a6SAndroid Build Coastguard Worker    # @lint-ignore BUCKLINT: native and fb_native are explicitly forbidden in fbcode.
937*523fa7a6SAndroid Build Coastguard Worker    native.cxx_library(
938*523fa7a6SAndroid Build Coastguard Worker        name = "ukernels_avx512vnni",
939*523fa7a6SAndroid Build Coastguard Worker        srcs = select({
940*523fa7a6SAndroid Build Coastguard Worker            "DEFAULT": prod_srcs_for_arch_wrapper("avx512vnni"),
941*523fa7a6SAndroid Build Coastguard Worker            "ovr_config//cpu:arm32": DEFAULT_DUMMY_SRC,
942*523fa7a6SAndroid Build Coastguard Worker            "ovr_config//cpu:arm64": DEFAULT_DUMMY_SRC,
943*523fa7a6SAndroid Build Coastguard Worker        }),
944*523fa7a6SAndroid Build Coastguard Worker        headers = get_xnnpack_headers(),
945*523fa7a6SAndroid Build Coastguard Worker        header_namespace = "",
946*523fa7a6SAndroid Build Coastguard Worker        compiler_flags = [
947*523fa7a6SAndroid Build Coastguard Worker            "-O2",
948*523fa7a6SAndroid Build Coastguard Worker            "-Wno-error=missing-braces",  # required since the SGX toolchain does not have this by default
949*523fa7a6SAndroid Build Coastguard Worker        ] + select({
950*523fa7a6SAndroid Build Coastguard Worker            "DEFAULT": AVX512VNNI_COMPILER_FLAGS,
951*523fa7a6SAndroid Build Coastguard Worker            "ovr_config//cpu:arm32": [],
952*523fa7a6SAndroid Build Coastguard Worker            "ovr_config//cpu:arm64": [],
953*523fa7a6SAndroid Build Coastguard Worker        }),
954*523fa7a6SAndroid Build Coastguard Worker        preferred_linkage = "static",
955*523fa7a6SAndroid Build Coastguard Worker        preprocessor_flags = [
956*523fa7a6SAndroid Build Coastguard Worker            "-DXNN_LOG_LEVEL=0",
957*523fa7a6SAndroid Build Coastguard Worker        ],
958*523fa7a6SAndroid Build Coastguard Worker        exported_deps = [
959*523fa7a6SAndroid Build Coastguard Worker            ":FP16",
960*523fa7a6SAndroid Build Coastguard Worker            ":interface",
961*523fa7a6SAndroid Build Coastguard Worker        ],
962*523fa7a6SAndroid Build Coastguard Worker    )
963*523fa7a6SAndroid Build Coastguard Worker
964*523fa7a6SAndroid Build Coastguard Worker    AVX512VNNIGFNI_COMPILER_FLAGS = AVX512VNNI_COMPILER_FLAGS + [
965*523fa7a6SAndroid Build Coastguard Worker        "-mgfni",
966*523fa7a6SAndroid Build Coastguard Worker    ]
967*523fa7a6SAndroid Build Coastguard Worker
968*523fa7a6SAndroid Build Coastguard Worker    # @lint-ignore BUCKLINT: native and fb_native are explicitly forbidden in fbcode.
969*523fa7a6SAndroid Build Coastguard Worker    native.cxx_library(
970*523fa7a6SAndroid Build Coastguard Worker        name = "ukernels_avx512vnnigfni",
971*523fa7a6SAndroid Build Coastguard Worker        srcs = select({
972*523fa7a6SAndroid Build Coastguard Worker            "DEFAULT": prod_srcs_for_arch_wrapper("avx512vnnifgni"),
973*523fa7a6SAndroid Build Coastguard Worker            "ovr_config//cpu:arm32": DEFAULT_DUMMY_SRC,
974*523fa7a6SAndroid Build Coastguard Worker            "ovr_config//cpu:arm64": DEFAULT_DUMMY_SRC,
975*523fa7a6SAndroid Build Coastguard Worker        }),
976*523fa7a6SAndroid Build Coastguard Worker        headers = get_xnnpack_headers(),
977*523fa7a6SAndroid Build Coastguard Worker        header_namespace = "",
978*523fa7a6SAndroid Build Coastguard Worker        compiler_flags = [
979*523fa7a6SAndroid Build Coastguard Worker            "-O2",
980*523fa7a6SAndroid Build Coastguard Worker            "-Wno-error=missing-braces",  # required since the SGX toolchain does not have this by default
981*523fa7a6SAndroid Build Coastguard Worker        ] + select({
982*523fa7a6SAndroid Build Coastguard Worker            "DEFAULT": AVX512VNNIGFNI_COMPILER_FLAGS,
983*523fa7a6SAndroid Build Coastguard Worker            "ovr_config//cpu:arm32": [],
984*523fa7a6SAndroid Build Coastguard Worker            "ovr_config//cpu:arm64": [],
985*523fa7a6SAndroid Build Coastguard Worker        }),
986*523fa7a6SAndroid Build Coastguard Worker        preferred_linkage = "static",
987*523fa7a6SAndroid Build Coastguard Worker        preprocessor_flags = [
988*523fa7a6SAndroid Build Coastguard Worker            "-DXNN_LOG_LEVEL=0",
989*523fa7a6SAndroid Build Coastguard Worker        ],
990*523fa7a6SAndroid Build Coastguard Worker        exported_deps = [
991*523fa7a6SAndroid Build Coastguard Worker            ":FP16",
992*523fa7a6SAndroid Build Coastguard Worker            ":interface",
993*523fa7a6SAndroid Build Coastguard Worker        ],
994*523fa7a6SAndroid Build Coastguard Worker    )
995*523fa7a6SAndroid Build Coastguard Worker
996*523fa7a6SAndroid Build Coastguard Worker    AVXVNNI_COMPILER_FLAGS = [
997*523fa7a6SAndroid Build Coastguard Worker        "-mavx2",
998*523fa7a6SAndroid Build Coastguard Worker        "-mavxvnni",
999*523fa7a6SAndroid Build Coastguard Worker        "-mf16c",
1000*523fa7a6SAndroid Build Coastguard Worker        "-mfma",
1001*523fa7a6SAndroid Build Coastguard Worker    ]
1002*523fa7a6SAndroid Build Coastguard Worker
1003*523fa7a6SAndroid Build Coastguard Worker    # @lint-ignore BUCKLINT: native and fb_native are explicitly forbidden in fbcode.
1004*523fa7a6SAndroid Build Coastguard Worker    native.cxx_library(
1005*523fa7a6SAndroid Build Coastguard Worker        name = "ukernels_avxvnni",
1006*523fa7a6SAndroid Build Coastguard Worker        srcs = select({
1007*523fa7a6SAndroid Build Coastguard Worker            "DEFAULT": prod_srcs_for_arch_wrapper("avxvnni"),
1008*523fa7a6SAndroid Build Coastguard Worker            "ovr_config//cpu:arm32": DEFAULT_DUMMY_SRC,
1009*523fa7a6SAndroid Build Coastguard Worker            "ovr_config//cpu:arm64": DEFAULT_DUMMY_SRC,
1010*523fa7a6SAndroid Build Coastguard Worker        }),
1011*523fa7a6SAndroid Build Coastguard Worker        headers = get_xnnpack_headers(),
1012*523fa7a6SAndroid Build Coastguard Worker        header_namespace = "",
1013*523fa7a6SAndroid Build Coastguard Worker        compiler_flags = [
1014*523fa7a6SAndroid Build Coastguard Worker            "-O2",
1015*523fa7a6SAndroid Build Coastguard Worker            "-Wno-error=missing-braces",  # required since the SGX toolchain does not have this by default
1016*523fa7a6SAndroid Build Coastguard Worker        ] + select({
1017*523fa7a6SAndroid Build Coastguard Worker            "DEFAULT": AVXVNNI_COMPILER_FLAGS,
1018*523fa7a6SAndroid Build Coastguard Worker            "ovr_config//cpu:arm32": [],
1019*523fa7a6SAndroid Build Coastguard Worker            "ovr_config//cpu:arm64": [],
1020*523fa7a6SAndroid Build Coastguard Worker        }),
1021*523fa7a6SAndroid Build Coastguard Worker        preferred_linkage = "static",
1022*523fa7a6SAndroid Build Coastguard Worker        preprocessor_flags = [
1023*523fa7a6SAndroid Build Coastguard Worker            "-DXNN_LOG_LEVEL=0",
1024*523fa7a6SAndroid Build Coastguard Worker        ],
1025*523fa7a6SAndroid Build Coastguard Worker        exported_deps = [
1026*523fa7a6SAndroid Build Coastguard Worker            ":FP16",
1027*523fa7a6SAndroid Build Coastguard Worker            ":interface",
1028*523fa7a6SAndroid Build Coastguard Worker        ],
1029*523fa7a6SAndroid Build Coastguard Worker    )
1030*523fa7a6SAndroid Build Coastguard Worker
1031*523fa7a6SAndroid Build Coastguard Worker    COMMON_XNNPACK_DEPS = [
1032*523fa7a6SAndroid Build Coastguard Worker        ":operators",
1033*523fa7a6SAndroid Build Coastguard Worker        ":subgraph",
1034*523fa7a6SAndroid Build Coastguard Worker        ":tables",
1035*523fa7a6SAndroid Build Coastguard Worker        ":ukernels_scalar",
1036*523fa7a6SAndroid Build Coastguard Worker    ]
1037*523fa7a6SAndroid Build Coastguard Worker
1038*523fa7a6SAndroid Build Coastguard Worker    X86_64_XNNPACK_DEPS = [
1039*523fa7a6SAndroid Build Coastguard Worker        ":ukernels_avx",
1040*523fa7a6SAndroid Build Coastguard Worker        ":ukernels_avx2",
1041*523fa7a6SAndroid Build Coastguard Worker        ":ukernels_avx512",
1042*523fa7a6SAndroid Build Coastguard Worker        ":ukernels_avx512skx",
1043*523fa7a6SAndroid Build Coastguard Worker        ":ukernels_f16c",
1044*523fa7a6SAndroid Build Coastguard Worker        ":ukernels_fma3",
1045*523fa7a6SAndroid Build Coastguard Worker        ":ukernels_sse",
1046*523fa7a6SAndroid Build Coastguard Worker        ":ukernels_sse2",
1047*523fa7a6SAndroid Build Coastguard Worker        ":ukernels_sse41",
1048*523fa7a6SAndroid Build Coastguard Worker        ":ukernels_ssse3",
1049*523fa7a6SAndroid Build Coastguard Worker        ":ukernels_avx512vbmi",
1050*523fa7a6SAndroid Build Coastguard Worker        ":ukernels_avx512vnnigfni",
1051*523fa7a6SAndroid Build Coastguard Worker        ":ukernels_avx512vnni",
1052*523fa7a6SAndroid Build Coastguard Worker        ":ukernels_avxvnni",
1053*523fa7a6SAndroid Build Coastguard Worker    ]
1054*523fa7a6SAndroid Build Coastguard Worker
1055*523fa7a6SAndroid Build Coastguard Worker    ARM_XNNPACK_DEPS = [
1056*523fa7a6SAndroid Build Coastguard Worker        ":ukernels_armsimd32",
1057*523fa7a6SAndroid Build Coastguard Worker        ":ukernels_fp16arith",
1058*523fa7a6SAndroid Build Coastguard Worker        ":ukernels_asm",
1059*523fa7a6SAndroid Build Coastguard Worker        ":ukernels_neon",
1060*523fa7a6SAndroid Build Coastguard Worker        ":ukernels_neon_aarch64",
1061*523fa7a6SAndroid Build Coastguard Worker        ":ukernels_neon_fp16",
1062*523fa7a6SAndroid Build Coastguard Worker        ":ukernels_neon_fma",
1063*523fa7a6SAndroid Build Coastguard Worker        ":ukernels_neon_v8",
1064*523fa7a6SAndroid Build Coastguard Worker        ":ukernels_neon_fp16arith",
1065*523fa7a6SAndroid Build Coastguard Worker        ":ukernels_neon_dot",
1066*523fa7a6SAndroid Build Coastguard Worker        ":ukernels_neon_i8mm",
1067*523fa7a6SAndroid Build Coastguard Worker        ":ukernels_neondotfp16arith",
1068*523fa7a6SAndroid Build Coastguard Worker    ]
1069*523fa7a6SAndroid Build Coastguard Worker
1070*523fa7a6SAndroid Build Coastguard Worker    # @lint-ignore BUCKLINT: native and fb_native are explicitly forbidden in fbcode.
1071*523fa7a6SAndroid Build Coastguard Worker    native.cxx_library(
1072*523fa7a6SAndroid Build Coastguard Worker        name = "XNNPACK",
1073*523fa7a6SAndroid Build Coastguard Worker        srcs = XNNPACK_SRCS + LOGGING_SRCS + [
1074*523fa7a6SAndroid Build Coastguard Worker            "XNNPACK/src/init.c",
1075*523fa7a6SAndroid Build Coastguard Worker            "XNNPACK/src/params.c",
1076*523fa7a6SAndroid Build Coastguard Worker            "XNNPACK/src/configs/hardware-config.c",
1077*523fa7a6SAndroid Build Coastguard Worker            "XNNPACK/src/microparams-init.c",
1078*523fa7a6SAndroid Build Coastguard Worker            "XNNPACK/src/microkernel-utils.c",
1079*523fa7a6SAndroid Build Coastguard Worker        ],
1080*523fa7a6SAndroid Build Coastguard Worker        headers = get_xnnpack_headers(),
1081*523fa7a6SAndroid Build Coastguard Worker        exported_headers = {
1082*523fa7a6SAndroid Build Coastguard Worker            "xnnpack.h": "XNNPACK/include/xnnpack.h",
1083*523fa7a6SAndroid Build Coastguard Worker        },
1084*523fa7a6SAndroid Build Coastguard Worker        header_namespace = "",
1085*523fa7a6SAndroid Build Coastguard Worker        compiler_flags = [
1086*523fa7a6SAndroid Build Coastguard Worker            "-Wno-error=missing-braces",  # required since the SGX toolchain does not have this by default
1087*523fa7a6SAndroid Build Coastguard Worker        ],
1088*523fa7a6SAndroid Build Coastguard Worker        preferred_linkage = "static",
1089*523fa7a6SAndroid Build Coastguard Worker        preprocessor_flags = [
1090*523fa7a6SAndroid Build Coastguard Worker            "-DXNN_LOG_LEVEL=0",
1091*523fa7a6SAndroid Build Coastguard Worker            "-DXNN_ENABLE_MEMOPT",
1092*523fa7a6SAndroid Build Coastguard Worker            "-DXNN_ENABLE_SPARSE=0",
1093*523fa7a6SAndroid Build Coastguard Worker            "-DXNN_ENABLE_ASSEMBLY",
1094*523fa7a6SAndroid Build Coastguard Worker            "-DXNN_ENABLE_GEMM_M_SPECIALIZATION",
1095*523fa7a6SAndroid Build Coastguard Worker            "-DXNN_ENABLE_ARM_DOTPROD",
1096*523fa7a6SAndroid Build Coastguard Worker            "-DXNN_ENABLE_CPUINFO",
1097*523fa7a6SAndroid Build Coastguard Worker            # "-DXNN_ENABLE_DWCONV_MULTIPLASS=1",
1098*523fa7a6SAndroid Build Coastguard Worker            "-DXNN_ENABLE_ARM_I8MM=1",
1099*523fa7a6SAndroid Build Coastguard Worker            "-DXNN_ENABLE_ARM_FP16_VECTOR=1",
1100*523fa7a6SAndroid Build Coastguard Worker        ],
1101*523fa7a6SAndroid Build Coastguard Worker        visibility = ["PUBLIC"],
1102*523fa7a6SAndroid Build Coastguard Worker        exported_deps = COMMON_XNNPACK_DEPS + [
1103*523fa7a6SAndroid Build Coastguard Worker            ":FP16",
1104*523fa7a6SAndroid Build Coastguard Worker            ":pthreadpool",
1105*523fa7a6SAndroid Build Coastguard Worker            ":interface",
1106*523fa7a6SAndroid Build Coastguard Worker            ":cpuinfo",
1107*523fa7a6SAndroid Build Coastguard Worker        ] + select({
1108*523fa7a6SAndroid Build Coastguard Worker            "DEFAULT": X86_64_XNNPACK_DEPS,
1109*523fa7a6SAndroid Build Coastguard Worker            "ovr_config//cpu:arm32": ARM_XNNPACK_DEPS,
1110*523fa7a6SAndroid Build Coastguard Worker            "ovr_config//cpu:arm64": ARM_XNNPACK_DEPS,
1111*523fa7a6SAndroid Build Coastguard Worker        }),
1112*523fa7a6SAndroid Build Coastguard Worker    )
1113