xref: /aosp_15_r20/external/pytorch/third_party/xnnpack.buck.bzl (revision da0073e96a02ea20f0ac840b70461e3646d07c45)
1load("//tools/build_defs:fb_xplat_cxx_library.bzl", "fb_xplat_cxx_library")
2load("//tools/build_defs:fbsource_utils.bzl", "is_arvr_mode")
3load("//tools/build_defs:glob_defs.bzl", "subdir_glob")
4load("//tools/build_defs:platform_defs.bzl", "ANDROID", "APPLE", "APPLETVOS", "CXX", "IOS", "MACOSX", "WINDOWS")
5load(
6    ":xnnpack_src_defs.bzl",
7    "JIT_SRCS",
8    "LOGGING_SRCS",
9    "OPERATOR_SRCS",
10    "SUBGRAPH_SRCS",
11    "TABLE_SRCS",
12    "XNNPACK_SRCS",
13)
14load(
15    ":xnnpack_wrapper_defs.bzl",
16    "AARCH32_ASM_MICROKERNEL_SRCS",
17    "AARCH64_ASM_MICROKERNEL_SRCS",
18    "PROD_ARMSIMD32_MICROKERNEL_SRCS",
19    "PROD_AVX2_MICROKERNEL_SRCS",
20    "PROD_AVX512F_MICROKERNEL_SRCS",
21    "PROD_AVX512SKX_MICROKERNEL_SRCS",
22    "PROD_AVX512VBMI_MICROKERNEL_SRCS",
23    "PROD_AVX512VNNI_MICROKERNEL_SRCS",
24    "PROD_AVX512VNNIGFNI_MICROKERNEL_SRCS",
25    "PROD_AVXVNNI_MICROKERNEL_SRCS",
26    "PROD_AVX_MICROKERNEL_SRCS",
27    "PROD_F16C_MICROKERNEL_SRCS",
28    "PROD_FMA3_MICROKERNEL_SRCS",
29    "PROD_FP16ARITH_MICROKERNEL_SRCS",
30    "PROD_NEONDOTFP16ARITH_AARCH64_MICROKERNEL_SRCS",
31    "PROD_NEONDOTFP16ARITH_MICROKERNEL_SRCS",
32    "PROD_NEONDOT_AARCH64_MICROKERNEL_SRCS",
33    "PROD_NEONDOT_MICROKERNEL_SRCS",
34    "PROD_NEONFMA_MICROKERNEL_SRCS",
35    "PROD_NEONFP16ARITH_AARCH64_MICROKERNEL_SRCS",
36    "PROD_NEONFP16ARITH_MICROKERNEL_SRCS",
37    "PROD_NEONFP16_MICROKERNEL_SRCS",
38    "PROD_NEONI8MM_MICROKERNEL_SRCS",
39    "PROD_NEONV8_MICROKERNEL_SRCS",
40    "PROD_NEON_AARCH64_MICROKERNEL_SRCS",
41    "PROD_NEON_MICROKERNEL_SRCS",
42    "PROD_SCALAR_MICROKERNEL_SRCS",
43    "PROD_SSE2_MICROKERNEL_SRCS",
44    "PROD_SSE41_MICROKERNEL_SRCS",
45    "PROD_SSE_MICROKERNEL_SRCS",
46    "PROD_SSSE3_MICROKERNEL_SRCS",
47    "PROD_XOP_MICROKERNEL_SRCS",
48)
49
50# This defines XNNPACK targets for both fbsource BUCK and OSS BUCK
51# Note that the file path is relative to the BUCK file that called from, not to this bzl file.
52# So for fbsource build it points to xplat/third-party/XNNPACK/XNNPACK,
53# and for OSS it points to pytorch/third_party/XNNPACK
54def define_xnnpack(third_party, labels = [], XNNPACK_WINDOWS_AVX512F_ENABLED = False):
55    WINDOWS_FLAGS = [
56        "/D__x86_64__",
57        "/EHsc",
58        "/wd4090",  # 'function': different 'const' qualifiers
59        "/wd4146",  # unary minus operator applied to unsigned type, result still unsigned
60    ] + ([
61        "/D__AVX512F__",  # needed to avoid linkage errors
62        "-mavx2",
63        "/D__builtin_clz=__lzcnt",  # Intrinsics are spelled differently in MSVC
64        "/Drestrict=",  # MSVC doesn't understand [restrict XNN_NUM_ELEMENTS(N)] syntax
65    ] if XNNPACK_WINDOWS_AVX512F_ENABLED else [])
66
67    WINDOWS_CLANG_COMPILER_FLAGS = [
68        "-Wno-error",
69        "-Wno-error=undef",
70        "-Wno-error=incompatible-pointer-types",
71        "-Wno-error=incompatible-pointer-types-discards-qualifiers",
72    ]
73
74    fb_xplat_cxx_library(
75        name = "interface",
76        header_namespace = "",
77        exported_headers = {
78            "xnnpack.h": "XNNPACK/include/xnnpack.h",
79        },
80        apple_sdks = (IOS, MACOSX, APPLETVOS),
81        labels = labels,
82        preprocessor_flags = [
83            "-DXNN_LOG_LEVEL=0",
84        ],
85        visibility = ["PUBLIC"],
86        exported_deps = [
87            # Dependency only on pthreadpool interface
88            third_party("pthreadpool_header"),
89        ],
90    )
91
92    fb_xplat_cxx_library(
93        name = "subgraph",
94        srcs = SUBGRAPH_SRCS,
95        headers = subdir_glob([
96            ("XNNPACK/src", "**/*.h"),
97        ]),
98        header_namespace = "",
99        apple_sdks = (IOS, MACOSX, APPLETVOS),
100        compiler_flags = [
101            "-O2",
102        ],
103        fbobjc_preprocessor_flags = [
104            "-DXNN_PRIVATE=",
105            "-DXNN_INTERNAL=",
106        ],
107        labels = labels,
108        preferred_linkage = "static",
109        preprocessor_flags = [
110            "-DXNN_LOG_LEVEL=0",
111            "-DXNN_ENABLE_JIT=0",
112            "-DXNN_ENABLE_SPARSE=0",
113            "-DXNN_ENABLE_MEMOPT",
114        ],
115        visibility = ["PUBLIC"],
116        windows_clang_compiler_flags_override = WINDOWS_FLAGS + WINDOWS_CLANG_COMPILER_FLAGS,
117        windows_compiler_flags_override = WINDOWS_FLAGS,
118        deps = [
119            ":interface",
120            third_party("FP16"),
121            third_party("FXdiv"),
122            third_party("clog"),
123        ],
124    )
125
126    fb_xplat_cxx_library(
127        name = "tables",
128        srcs = TABLE_SRCS,
129        headers = subdir_glob([
130            ("XNNPACK/src", "**/*.h"),
131        ]),
132        header_namespace = "",
133        apple_sdks = (IOS, MACOSX, APPLETVOS),
134        compiler_flags = [
135            "-O2",
136        ],
137        fbobjc_preprocessor_flags = [
138            "-DXNN_PRIVATE=",
139            "-DXNN_INTERNAL=",
140        ],
141        labels = labels,
142        preferred_linkage = "static",
143        preprocessor_flags = [
144            "-DXNN_LOG_LEVEL=0",
145        ],
146        visibility = ["PUBLIC"],
147        windows_clang_compiler_flags_override = WINDOWS_FLAGS + WINDOWS_CLANG_COMPILER_FLAGS,
148        windows_compiler_flags_override = WINDOWS_FLAGS,
149        deps = [
150            ":interface",
151            third_party("FP16"),
152            third_party("FXdiv"),
153            third_party("clog"),
154        ],
155    )
156
157    fb_xplat_cxx_library(
158        name = "jit_memory",
159        # srcs have to include HOT_SRCS to be able to build on ARVR
160        srcs = JIT_SRCS,
161        headers = subdir_glob([
162            ("XNNPACK/src", "**/*.h"),
163        ]),
164        header_namespace = "",
165        apple_sdks = (IOS, MACOSX, APPLETVOS),
166        compiler_flags = [
167            "-Oz",
168        ],
169        fbobjc_preprocessor_flags = [
170            "-DXNN_PRIVATE=",
171            "-DXNN_INTERNAL=",
172        ],
173        labels = labels,
174        platforms = (APPLE, ANDROID, CXX, WINDOWS),
175        preferred_linkage = "static",
176        preprocessor_flags = [
177            "-DXNN_LOG_LEVEL=0",
178        ],
179        visibility = ["PUBLIC"],
180        windows_clang_compiler_flags_override = WINDOWS_FLAGS + WINDOWS_CLANG_COMPILER_FLAGS,
181        windows_compiler_flags_override = WINDOWS_FLAGS,
182        deps = [
183            ":interface",
184            third_party("clog"),
185        ],
186    )
187
188    fb_xplat_cxx_library(
189        name = "ukernels_scalar",
190        srcs = PROD_SCALAR_MICROKERNEL_SRCS,
191        headers = subdir_glob([
192            ("XNNPACK/src", "**/*.c"),
193            ("XNNPACK/src", "**/*.h"),
194        ]),
195        header_namespace = "",
196        apple_sdks = (IOS, MACOSX, APPLETVOS),
197        compiler_flags = [
198            "-O2",
199            "-fno-fast-math",
200            "-fno-math-errno",
201            "-ffp-contract=off",
202        ],
203        fbobjc_preprocessor_flags = [
204            "-DXNN_PRIVATE=",
205            "-DXNN_INTERNAL=",
206        ],
207        labels = labels,
208        preferred_linkage = "static",
209        preprocessor_flags = [
210            "-DXNN_LOG_LEVEL=0",
211        ],
212        visibility = ["PUBLIC"],
213        windows_clang_compiler_flags_override = WINDOWS_FLAGS + WINDOWS_CLANG_COMPILER_FLAGS,
214        windows_compiler_flags_override = WINDOWS_FLAGS,
215        deps = [
216            ":interface",
217            third_party("FP16"),
218            third_party("FXdiv"),
219        ],
220    )
221
222    fb_xplat_cxx_library(
223        name = "ukernels_sse",
224        srcs = PROD_SSE_MICROKERNEL_SRCS if is_arvr_mode() else [],
225        headers = subdir_glob([
226            ("XNNPACK/src", "**/*.c"),
227            ("XNNPACK/src", "**/*.h"),
228        ]),
229        header_namespace = "",
230        apple_sdks = (IOS, MACOSX, APPLETVOS),
231        compiler_flags = [
232            "-O2",
233        ],
234        fbobjc_preprocessor_flags = [
235            "-DXNN_PRIVATE=",
236            "-DXNN_INTERNAL=",
237        ],
238        labels = labels,
239        platform_compiler_flags = [
240            (
241                "x86",
242                [
243                    "-msse",
244                ],
245            ),
246        ],
247        platform_srcs = ([
248            (
249                "x86|x86_64|platform009|platform010",
250                PROD_SSE_MICROKERNEL_SRCS,
251            ),
252        ] if not is_arvr_mode() else []),
253        preferred_linkage = "static",
254        preprocessor_flags = [
255            "-DXNN_LOG_LEVEL=0",
256        ],
257        visibility = ["PUBLIC"],
258        windows_clang_compiler_flags_override = WINDOWS_FLAGS + WINDOWS_CLANG_COMPILER_FLAGS + ["-msse"],
259        windows_compiler_flags_override = WINDOWS_FLAGS + ["-msse"],
260        deps = [
261            ":interface",
262        ],
263    )
264
265    fb_xplat_cxx_library(
266        name = "ukernels_sse_ovr_win32",
267        headers = subdir_glob([
268            ("XNNPACK/src", "**/*.c"),
269            ("XNNPACK/src", "**/*.h"),
270        ]),
271        header_namespace = "",
272        apple_sdks = (IOS, MACOSX, APPLETVOS),
273        compiler_flags = [
274            "-O2",
275        ],
276        fbobjc_preprocessor_flags = [
277            "-DXNN_PRIVATE=",
278            "-DXNN_INTERNAL=",
279        ],
280        labels = labels,
281        platform_compiler_flags = [
282            (
283                "x86",
284                [
285                    "-msse",
286                ],
287            ),
288        ],
289        preferred_linkage = "static",
290        preprocessor_flags = [
291            "-DXNN_LOG_LEVEL=0",
292        ],
293        visibility = ["PUBLIC"],
294        windows_clang_compiler_flags_override = WINDOWS_FLAGS + WINDOWS_CLANG_COMPILER_FLAGS + ["-msse"],
295        windows_compiler_flags_override = WINDOWS_FLAGS + ["-msse"],
296        windows_srcs = PROD_SSE_MICROKERNEL_SRCS,
297        deps = [
298            ":interface",
299        ],
300    )
301
302    fb_xplat_cxx_library(
303        name = "ukernels_sse2",
304        srcs = PROD_SSE2_MICROKERNEL_SRCS if is_arvr_mode() else [],
305        headers = subdir_glob([
306            ("XNNPACK/src", "**/*.c"),
307            ("XNNPACK/src", "**/*.h"),
308        ]),
309        header_namespace = "",
310        apple_sdks = (IOS, MACOSX, APPLETVOS),
311        compiler_flags = [
312            "-O2",
313        ],
314        fbobjc_preprocessor_flags = [
315            "-DXNN_PRIVATE=",
316            "-DXNN_INTERNAL=",
317        ],
318        labels = labels,
319        platform_compiler_flags = [
320            (
321                "x86",
322                [
323                    "-msse2",
324                ],
325            ),
326        ],
327        platform_srcs = ([
328            (
329                "x86|x86_64|platform009|platform010",
330                PROD_SSE2_MICROKERNEL_SRCS,
331            ),
332        ] if not is_arvr_mode() else []),
333        preferred_linkage = "static",
334        preprocessor_flags = [
335            "-DXNN_LOG_LEVEL=0",
336        ],
337        visibility = ["PUBLIC"],
338        windows_clang_compiler_flags_override = WINDOWS_FLAGS + WINDOWS_CLANG_COMPILER_FLAGS + ["-msse2"],
339        windows_compiler_flags_override = WINDOWS_FLAGS + ["-msse2"],
340        deps = [
341            ":interface",
342            third_party("FP16"),
343        ],
344    )
345
346    fb_xplat_cxx_library(
347        name = "ukernels_sse2_ovr_win32",
348        headers = subdir_glob([
349            ("XNNPACK/src", "**/*.c"),
350            ("XNNPACK/src", "**/*.h"),
351        ]),
352        header_namespace = "",
353        apple_sdks = (IOS, MACOSX, APPLETVOS),
354        compiler_flags = [
355            "-O2",
356        ],
357        fbobjc_preprocessor_flags = [
358            "-DXNN_PRIVATE=",
359            "-DXNN_INTERNAL=",
360        ],
361        labels = labels,
362        platform_compiler_flags = [
363            (
364                "x86",
365                [
366                    "-msse2",
367                ],
368            ),
369        ],
370        preferred_linkage = "static",
371        preprocessor_flags = [
372            "-DXNN_LOG_LEVEL=0",
373        ],
374        visibility = ["PUBLIC"],
375        windows_clang_compiler_flags_override = WINDOWS_FLAGS + WINDOWS_CLANG_COMPILER_FLAGS + ["-msse2"],
376        windows_compiler_flags_override = WINDOWS_FLAGS + ["-msse2"],
377        windows_srcs = PROD_SSE2_MICROKERNEL_SRCS,
378        deps = [
379            ":interface",
380            third_party("FP16"),
381        ],
382    )
383
384    fb_xplat_cxx_library(
385        name = "ukernels_ssse3",
386        srcs = PROD_SSSE3_MICROKERNEL_SRCS if is_arvr_mode() else [],
387        headers = subdir_glob([
388            ("XNNPACK/src", "**/*.c"),
389            ("XNNPACK/src", "**/*.h"),
390        ]),
391        header_namespace = "",
392        apple_sdks = (IOS, MACOSX, APPLETVOS),
393        compiler_flags = [
394            "-O2",
395        ],
396        fbobjc_preprocessor_flags = [
397            "-DXNN_PRIVATE=",
398            "-DXNN_INTERNAL=",
399        ],
400        labels = labels,
401        platform_compiler_flags = [
402            (
403                "x86",
404                [
405                    "-mssse3",
406                ],
407            ),
408        ],
409        platform_srcs = ([
410            (
411                "x86|x86_64|platform009|platform010",
412                PROD_SSSE3_MICROKERNEL_SRCS,
413            ),
414        ] if not is_arvr_mode() else []),
415        preferred_linkage = "static",
416        preprocessor_flags = [
417            "-DXNN_LOG_LEVEL=0",
418        ],
419        visibility = ["PUBLIC"],
420        windows_clang_compiler_flags_override = WINDOWS_FLAGS + WINDOWS_CLANG_COMPILER_FLAGS + ["-mssse3"],
421        windows_compiler_flags_override = WINDOWS_FLAGS + ["-mssse3"],
422        deps = [
423            ":interface",
424            third_party("FP16"),
425        ],
426    )
427
428    fb_xplat_cxx_library(
429        name = "ukernels_ssse3_ovr_win32",
430        headers = subdir_glob([
431            ("XNNPACK/src", "**/*.c"),
432            ("XNNPACK/src", "**/*.h"),
433        ]),
434        header_namespace = "",
435        apple_sdks = (IOS, MACOSX, APPLETVOS),
436        compiler_flags = [
437            "-O2",
438        ],
439        fbobjc_preprocessor_flags = [
440            "-DXNN_PRIVATE=",
441            "-DXNN_INTERNAL=",
442        ],
443        labels = labels,
444        platform_compiler_flags = [
445            (
446                "x86",
447                [
448                    "-mssse3",
449                ],
450            ),
451        ],
452        preferred_linkage = "static",
453        preprocessor_flags = [
454            "-DXNN_LOG_LEVEL=0",
455        ],
456        visibility = ["PUBLIC"],
457        windows_clang_compiler_flags_override = WINDOWS_FLAGS + WINDOWS_CLANG_COMPILER_FLAGS + ["-mssse3"],
458        windows_compiler_flags_override = WINDOWS_FLAGS + ["-mssse3"],
459        windows_srcs = PROD_SSSE3_MICROKERNEL_SRCS,
460        deps = [
461            ":interface",
462            third_party("FP16"),
463        ],
464    )
465
466    fb_xplat_cxx_library(
467        name = "ukernels_sse41",
468        srcs = PROD_SSE41_MICROKERNEL_SRCS if is_arvr_mode() else [],
469        headers = subdir_glob([
470            ("XNNPACK/src", "**/*.c"),
471            ("XNNPACK/src", "**/*.h"),
472        ]),
473        header_namespace = "",
474        apple_sdks = (IOS, MACOSX, APPLETVOS),
475        compiler_flags = [
476            "-O2",
477        ],
478        fbobjc_preprocessor_flags = [
479            "-DXNN_PRIVATE=",
480            "-DXNN_INTERNAL=",
481        ],
482        labels = labels,
483        platform_compiler_flags = [
484            (
485                "x86",
486                [
487                    "-msse4.1",
488                ],
489            ),
490        ],
491        platform_srcs = ([
492            (
493                "x86|x86_64|platform009|platform010",
494                PROD_SSE41_MICROKERNEL_SRCS,
495            ),
496        ] if not is_arvr_mode() else []),
497        preferred_linkage = "static",
498        preprocessor_flags = [
499            "-DXNN_LOG_LEVEL=0",
500        ],
501        visibility = ["PUBLIC"],
502        windows_clang_compiler_flags_override = WINDOWS_FLAGS + WINDOWS_CLANG_COMPILER_FLAGS + ["-msse4.1"],
503        windows_compiler_flags_override = WINDOWS_FLAGS + ["-msse4.1"],
504        deps = [
505            ":interface",
506            third_party("FP16"),
507        ],
508    )
509
510    fb_xplat_cxx_library(
511        name = "ukernels_sse41_ovr_win32",
512        headers = subdir_glob([
513            ("XNNPACK/src", "**/*.c"),
514            ("XNNPACK/src", "**/*.h"),
515        ]),
516        header_namespace = "",
517        apple_sdks = (IOS, MACOSX, APPLETVOS),
518        compiler_flags = [
519            "-O2",
520        ],
521        fbobjc_preprocessor_flags = [
522            "-DXNN_PRIVATE=",
523            "-DXNN_INTERNAL=",
524        ],
525        labels = labels,
526        platform_compiler_flags = [
527            (
528                "x86",
529                [
530                    "-msse4.1",
531                ],
532            ),
533        ],
534        preferred_linkage = "static",
535        preprocessor_flags = [
536            "-DXNN_LOG_LEVEL=0",
537        ],
538        visibility = ["PUBLIC"],
539        windows_clang_compiler_flags_override = WINDOWS_FLAGS + WINDOWS_CLANG_COMPILER_FLAGS + ["-msse4.1"],
540        windows_compiler_flags_override = WINDOWS_FLAGS + ["-msse4.1"],
541        windows_srcs = PROD_SSE41_MICROKERNEL_SRCS,
542        deps = [
543            ":interface",
544            third_party("FP16"),
545        ],
546    )
547
548    fb_xplat_cxx_library(
549        name = "ukernels_avx",
550        srcs = PROD_AVX_MICROKERNEL_SRCS if is_arvr_mode() else [],
551        headers = subdir_glob([
552            ("XNNPACK/src", "**/*.h"),
553            ("XNNPACK/src", "**/*.c"),
554        ]),
555        header_namespace = "",
556        apple_sdks = (IOS, MACOSX, APPLETVOS),
557        compiler_flags = [
558            "-O2",
559        ] + select({
560            "DEFAULT": [],
561            "ovr_config//cpu:x86_32": [
562                "-mavx",
563            ],
564            "ovr_config//cpu:x86_64": [
565                "-mavx",
566            ],
567        }),
568        fbobjc_preprocessor_flags = [
569            "-DXNN_PRIVATE=",
570            "-DXNN_INTERNAL=",
571        ],
572        labels = labels,
573        platform_compiler_flags = [
574            (
575                "x86|x86_64|platform009|platform010",
576                [
577                    "-mavx",
578                ],
579            ),
580        ],
581        platform_srcs = ([
582            (
583                "x86|x86_64|platform009|platform010",
584                PROD_AVX_MICROKERNEL_SRCS,
585            ),
586        ] if not is_arvr_mode() else []),
587        preferred_linkage = "static",
588        preprocessor_flags = [
589            "-DXNN_LOG_LEVEL=0",
590        ],
591        visibility = ["PUBLIC"],
592        windows_clang_compiler_flags_override = WINDOWS_FLAGS + WINDOWS_CLANG_COMPILER_FLAGS + ["-mavx"],
593        windows_compiler_flags_override = WINDOWS_FLAGS + ["-mavx"],
594        deps = [
595            ":interface",
596        ],
597    )
598
599    fb_xplat_cxx_library(
600        name = "ukernels_avx_ovr_win32",
601        headers = subdir_glob([
602            ("XNNPACK/src", "**/*.h"),
603            ("XNNPACK/src", "**/*.c"),
604        ]),
605        header_namespace = "",
606        apple_sdks = (IOS, MACOSX, APPLETVOS),
607        compiler_flags = [
608            "-O2",
609            "-mavx",
610        ],
611        fbobjc_preprocessor_flags = [
612            "-DXNN_PRIVATE=",
613            "-DXNN_INTERNAL=",
614        ],
615        labels = labels,
616        platform_compiler_flags = [
617            (
618                "x86",
619                [
620                    "-mavx",
621                ],
622            ),
623        ],
624        preferred_linkage = "static",
625        preprocessor_flags = [
626            "-DXNN_LOG_LEVEL=0",
627        ],
628        visibility = ["PUBLIC"],
629        windows_clang_compiler_flags_override = WINDOWS_FLAGS + WINDOWS_CLANG_COMPILER_FLAGS + ["-mavx"],
630        windows_compiler_flags_override = WINDOWS_FLAGS + ["-mavx"],
631        windows_srcs = PROD_AVX_MICROKERNEL_SRCS,
632        deps = [
633            ":interface",
634        ],
635    )
636
637    fb_xplat_cxx_library(
638        name = "ukernels_avx512vnnigfni",
639        srcs = PROD_AVX512VNNIGFNI_MICROKERNEL_SRCS if is_arvr_mode() else [],
640        headers = subdir_glob([
641            ("XNNPACK/src", "**/*.h"),
642            ("XNNPACK/src", "**/*.c"),
643        ]),
644        header_namespace = "",
645        apple_sdks = (IOS, MACOSX, APPLETVOS),
646        compiler_flags = [
647            "-O2",
648        ] + select({
649            "DEFAULT": [],
650            "ovr_config//cpu:x86_32": [
651                "-mavx",
652                "-mgfni",
653                "-mavx512vl",
654                "-mavx512vnni",
655                "-mavx512bw",
656                "-mavx512dq",
657            ],
658            "ovr_config//cpu:x86_64": [
659                "-mavx",
660                "-mgfni",
661                "-mavx512vl",
662                "-mavx512vnni",
663                "-mavx512bw",
664                "-mavx512dq",
665            ],
666        }),
667        fbobjc_preprocessor_flags = [
668            "-DXNN_PRIVATE=",
669            "-DXNN_INTERNAL=",
670        ],
671        labels = labels,
672        platform_compiler_flags = [
673            (
674                "x86|x86_64|platform009|platform010",
675                [
676                    "-mavx512f",
677                    "-mavx512cd",
678                    "-mavx512bw",
679                    "-mavx512dq",
680                    "-mavx512vl",
681                    "-mavx512vnni",
682                    "-mgfni",
683                ],
684            ),
685        ],
686        platform_srcs = ([
687            (
688                "x86|x86_64|platform009|platform010",
689                PROD_AVX512VNNIGFNI_MICROKERNEL_SRCS,
690            ),
691        ] if not is_arvr_mode() else []),
692        preferred_linkage = "static",
693        preprocessor_flags = [
694            "-DXNN_LOG_LEVEL=0",
695        ],
696        visibility = ["PUBLIC"],
697        windows_clang_compiler_flags_override = WINDOWS_FLAGS + WINDOWS_CLANG_COMPILER_FLAGS + ["-mavx"],
698        windows_compiler_flags_override = WINDOWS_FLAGS + ["-mavx"],
699        deps = [
700            ":interface",
701        ],
702    )
703
704    fb_xplat_cxx_library(
705        name = "ukernels_avx512vnnigfni_ovr_win32",
706        headers = subdir_glob([
707            ("XNNPACK/src", "**/*.h"),
708            ("XNNPACK/src", "**/*.c"),
709        ]),
710        header_namespace = "",
711        apple_sdks = (IOS, MACOSX, APPLETVOS),
712        compiler_flags = [
713            "-O2",
714        ],
715        fbobjc_preprocessor_flags = [
716            "-DXNN_PRIVATE=",
717            "-DXNN_INTERNAL=",
718        ],
719        labels = labels,
720        platform_compiler_flags = [
721            (
722                "x86|x86_64|platform009|platform010",
723                [
724                    "-mavx512f",
725                    "-mavx512cd",
726                    "-mavx512bw",
727                    "-mavx512dq",
728                    "-mavx512vl",
729                    "-mavx512vnni",
730                    "-mgfni",
731                ],
732            ),
733        ],
734        preferred_linkage = "static",
735        preprocessor_flags = [
736            "-DXNN_LOG_LEVEL=0",
737        ],
738        visibility = ["PUBLIC"],
739        windows_clang_compiler_flags_override = WINDOWS_FLAGS + WINDOWS_CLANG_COMPILER_FLAGS + ["-mavx"],
740        windows_compiler_flags_override = WINDOWS_FLAGS + ["-mavx"],
741        windows_srcs = PROD_AVX512VNNIGFNI_MICROKERNEL_SRCS,
742        deps = [
743            ":interface",
744        ],
745    )
746
747    fb_xplat_cxx_library(
748        name = "ukernels_avx512vnni",
749        srcs = PROD_AVX512VNNI_MICROKERNEL_SRCS if is_arvr_mode() else [],
750        headers = subdir_glob([
751            ("XNNPACK/src", "**/*.h"),
752            ("XNNPACK/src", "**/*.c"),
753        ]),
754        header_namespace = "",
755        apple_sdks = (IOS, MACOSX, APPLETVOS),
756        compiler_flags = [
757            "-O2",
758        ] + select({
759            "DEFAULT": [],
760            "ovr_config//cpu:x86_32": [
761                "-mavx",
762            ],
763            "ovr_config//cpu:x86_64": [
764                "-mavx",
765            ],
766        }),
767        fbobjc_preprocessor_flags = [
768            "-DXNN_PRIVATE=",
769            "-DXNN_INTERNAL=",
770        ],
771        labels = labels,
772        platform_compiler_flags = [
773            (
774                "x86|x86_64|platform009|platform010",
775                [
776                    "-mavx512f",
777                    "-mavx512cd",
778                    "-mavx512bw",
779                    "-mavx512dq",
780                    "-mavx512vl",
781                    "-mavx512vnni",
782                ],
783            ),
784        ],
785        platform_srcs = ([
786            (
787                "x86|x86_64|platform009|platform010",
788                PROD_AVX512VNNI_MICROKERNEL_SRCS,
789            ),
790        ] if not is_arvr_mode() else []),
791        preferred_linkage = "static",
792        preprocessor_flags = [
793            "-DXNN_LOG_LEVEL=0",
794        ],
795        visibility = ["PUBLIC"],
796        windows_clang_compiler_flags_override = WINDOWS_FLAGS + WINDOWS_CLANG_COMPILER_FLAGS + ["-mavx"],
797        windows_compiler_flags_override = WINDOWS_FLAGS + ["-mavx"],
798        deps = [
799            ":interface",
800        ],
801    )
802
803    fb_xplat_cxx_library(
804        name = "ukernels_avx512vnni_ovr_win32",
805        headers = subdir_glob([
806            ("XNNPACK/src", "**/*.h"),
807            ("XNNPACK/src", "**/*.c"),
808        ]),
809        header_namespace = "",
810        apple_sdks = (IOS, MACOSX, APPLETVOS),
811        compiler_flags = [
812            "-O2",
813        ],
814        fbobjc_preprocessor_flags = [
815            "-DXNN_PRIVATE=",
816            "-DXNN_INTERNAL=",
817        ],
818        labels = labels,
819        platform_compiler_flags = [
820            (
821                "x86|x86_64|platform009|platform010",
822                [
823                    "-mavx512f",
824                    "-mavx512cd",
825                    "-mavx512bw",
826                    "-mavx512dq",
827                    "-mavx512vl",
828                    "-mavx512vnni",
829                ],
830            ),
831        ],
832        preferred_linkage = "static",
833        preprocessor_flags = [
834            "-DXNN_LOG_LEVEL=0",
835        ],
836        visibility = ["PUBLIC"],
837        windows_clang_compiler_flags_override = WINDOWS_FLAGS + WINDOWS_CLANG_COMPILER_FLAGS + ["-mavx"],
838        windows_compiler_flags_override = WINDOWS_FLAGS + ["-mavx"],
839        windows_srcs = PROD_AVX512VNNI_MICROKERNEL_SRCS,
840        deps = [
841            ":interface",
842        ],
843    )
844
845    fb_xplat_cxx_library(
846        name = "ukernels_avxvnni",
847        srcs = PROD_AVXVNNI_MICROKERNEL_SRCS if is_arvr_mode() else [],
848        headers = subdir_glob([
849            ("XNNPACK/src", "**/*.h"),
850            ("XNNPACK/src", "**/*.c"),
851        ]),
852        header_namespace = "",
853        apple_sdks = (IOS, MACOSX, APPLETVOS),
854        compiler_flags = [
855            "-O2",
856            "-mavxvnni",
857            "-mf16c",
858            "-mfma",
859        ],
860        fbobjc_preprocessor_flags = [
861            "-DXNN_PRIVATE=",
862            "-DXNN_INTERNAL=",
863        ],
864        labels = labels,
865        platform_compiler_flags = [
866            (
867                "x86|x86_64|platform009|platform010",
868                [
869                    "-mavx2",
870                    "-mavxvnni",
871                    "-mf16c",
872                    "-mfma",
873                ],
874            ),
875        ],
876        platform_srcs = ([
877            (
878                "x86|x86_64|platform009|platform010",
879                PROD_AVXVNNI_MICROKERNEL_SRCS,
880            ),
881        ] if not is_arvr_mode() else []),
882        preferred_linkage = "static",
883        preprocessor_flags = [
884            "-DXNN_LOG_LEVEL=0",
885        ],
886        visibility = ["PUBLIC"],
887        windows_clang_compiler_flags_override = WINDOWS_FLAGS + WINDOWS_CLANG_COMPILER_FLAGS + ["-mavx"],
888        windows_compiler_flags_override = WINDOWS_FLAGS + ["-mavx"],
889        deps = [
890            ":interface",
891        ],
892    )
893
894    fb_xplat_cxx_library(
895        name = "ukernels_avxvnni_ovr_win32",
896        headers = subdir_glob([
897            ("XNNPACK/src", "**/*.h"),
898            ("XNNPACK/src", "**/*.c"),
899        ]),
900        header_namespace = "",
901        apple_sdks = (IOS, MACOSX, APPLETVOS),
902        compiler_flags = [
903            "-O2",
904        ],
905        fbobjc_preprocessor_flags = [
906            "-DXNN_PRIVATE=",
907            "-DXNN_INTERNAL=",
908        ],
909        labels = labels,
910        platform_compiler_flags = [
911            (
912                "x86|x86_64|platform009|platform010",
913                [
914                    "-mavx2",
915                    "-mavxvnni",
916                ],
917            ),
918        ],
919        preferred_linkage = "static",
920        preprocessor_flags = [
921            "-DXNN_LOG_LEVEL=0",
922        ],
923        visibility = ["PUBLIC"],
924        windows_clang_compiler_flags_override = WINDOWS_FLAGS + WINDOWS_CLANG_COMPILER_FLAGS + ["-mavx"],
925        windows_compiler_flags_override = WINDOWS_FLAGS + ["-mavx"],
926        windows_srcs = PROD_AVXVNNI_MICROKERNEL_SRCS,
927        deps = [
928            ":interface",
929        ],
930    )
931
932    fb_xplat_cxx_library(
933        name = "ukernels_f16c",
934        srcs = PROD_F16C_MICROKERNEL_SRCS if is_arvr_mode() else [],
935        headers = subdir_glob([
936            ("XNNPACK/src", "**/*.h"),
937            ("XNNPACK/src", "**/*.c"),
938        ]),
939        header_namespace = "",
940        apple_sdks = (IOS, MACOSX, APPLETVOS),
941        compiler_flags = [
942            "-O2",
943        ] + select({
944            "DEFAULT": [],
945            "ovr_config//cpu:x86_32": [
946                "-mf16c",
947            ],
948            "ovr_config//cpu:x86_64": [
949                "-mf16c",
950            ],
951        }),
952        fbobjc_preprocessor_flags = [
953            "-DXNN_PRIVATE=",
954            "-DXNN_INTERNAL=",
955        ],
956        labels = labels,
957        platform_compiler_flags = [
958            (
959                "x86|x86_64|platform009|platform010",
960                [
961                    "-mf16c",
962                ],
963            ),
964        ],
965        platform_srcs = ([
966            (
967                "x86|x86_64|platform009|platform010",
968                PROD_F16C_MICROKERNEL_SRCS,
969            ),
970        ] if not is_arvr_mode() else []),
971        platforms = (APPLE, ANDROID, CXX, WINDOWS),
972        preferred_linkage = "static",
973        preprocessor_flags = [
974            "-DXNN_LOG_LEVEL=0",
975        ],
976        visibility = ["PUBLIC"],
977        windows_clang_compiler_flags_override = WINDOWS_FLAGS + WINDOWS_CLANG_COMPILER_FLAGS + ["-mf16c"],
978        windows_compiler_flags_override = WINDOWS_FLAGS + ["-mf16c"],
979        deps = [
980            ":interface",
981        ],
982    )
983
984    fb_xplat_cxx_library(
985        name = "ukernels_f16c_ovr_win32",
986        headers = subdir_glob([
987            ("XNNPACK/src", "**/*.h"),
988            ("XNNPACK/src", "**/*.c"),
989        ]),
990        header_namespace = "",
991        apple_sdks = (IOS, MACOSX, APPLETVOS),
992        compiler_flags = [
993            "-O2",
994            "-mf16c",
995        ],
996        fbobjc_preprocessor_flags = [
997            "-DXNN_PRIVATE=",
998            "-DXNN_INTERNAL=",
999        ],
1000        labels = labels,
1001        platform_compiler_flags = [
1002            (
1003                "x86",
1004                [
1005                    "-mf16c",
1006                ],
1007            ),
1008        ],
1009        platforms = (APPLE, ANDROID, CXX, WINDOWS),
1010        preferred_linkage = "static",
1011        preprocessor_flags = [
1012            "-DXNN_LOG_LEVEL=0",
1013        ],
1014        visibility = ["PUBLIC"],
1015        windows_clang_compiler_flags_override = WINDOWS_FLAGS + WINDOWS_CLANG_COMPILER_FLAGS + ["-mf16c"],
1016        windows_compiler_flags_override = WINDOWS_FLAGS + ["-mf16c"],
1017        windows_srcs = PROD_F16C_MICROKERNEL_SRCS,
1018        deps = [
1019            ":interface",
1020        ],
1021    )
1022
1023    fb_xplat_cxx_library(
1024        name = "ukernels_xop",
1025        srcs = PROD_XOP_MICROKERNEL_SRCS if is_arvr_mode() else [],
1026        headers = subdir_glob([
1027            ("XNNPACK/src", "**/*.h"),
1028            ("XNNPACK/src", "**/*.c"),
1029        ]),
1030        header_namespace = "",
1031        apple_sdks = (IOS, MACOSX, APPLETVOS),
1032        compiler_flags = [
1033            "-O2",
1034        ] + select({
1035            "DEFAULT": [],
1036            "ovr_config//cpu:x86_32": [
1037                "-mxop",
1038            ],
1039            "ovr_config//cpu:x86_64": [
1040                "-mxop",
1041            ],
1042        }),
1043        platform_compiler_flags = [
1044            (
1045                "x86|x86_64|platform009|platform010",
1046                [
1047                    "-mxop",
1048                ],
1049            ),
1050        ],
1051        fbobjc_preprocessor_flags = [
1052            "-DXNN_PRIVATE=",
1053            "-DXNN_INTERNAL=",
1054        ],
1055        labels = labels,
1056        platform_preprocessor_flags = [
1057            (
1058                "windows-x86_64",
1059                [
1060                    "-Drestrict=",
1061                ],
1062            ),
1063        ],
1064        platform_srcs = ([
1065            (
1066                "x86|x86_64|platform009|platform010",
1067                PROD_XOP_MICROKERNEL_SRCS,
1068            ),
1069        ] if not is_arvr_mode() else []),
1070        preferred_linkage = "static",
1071        preprocessor_flags = [
1072            "-DXNN_LOG_LEVEL=0",
1073        ],
1074        visibility = ["PUBLIC"],
1075        windows_clang_compiler_flags_override = WINDOWS_FLAGS + WINDOWS_CLANG_COMPILER_FLAGS + ["-mxop"],
1076        windows_compiler_flags_override = WINDOWS_FLAGS + ["-mxop"],
1077        deps = [
1078            ":interface",
1079        ],
1080    )
1081
1082    fb_xplat_cxx_library(
1083        name = "ukernels_xop_ovr_win32",
1084        headers = subdir_glob([
1085            ("XNNPACK/src", "**/*.h"),
1086            ("XNNPACK/src", "**/*.c"),
1087        ]),
1088        header_namespace = "",
1089        apple_sdks = (IOS, MACOSX, APPLETVOS),
1090        compiler_flags = [
1091            "-O2",
1092            "-mxop",
1093        ],
1094        fbobjc_preprocessor_flags = [
1095            "-DXNN_PRIVATE=",
1096            "-DXNN_INTERNAL=",
1097        ],
1098        labels = labels,
1099        platform_preprocessor_flags = [
1100            (
1101                "windows-x86_64",
1102                [
1103                    "-Drestrict=",
1104                ],
1105            ),
1106        ],
1107        preferred_linkage = "static",
1108        preprocessor_flags = [
1109            "-DXNN_LOG_LEVEL=0",
1110        ],
1111        visibility = ["PUBLIC"],
1112        windows_clang_compiler_flags_override = WINDOWS_FLAGS + WINDOWS_CLANG_COMPILER_FLAGS + ["-mxop"],
1113        windows_compiler_flags_override = WINDOWS_FLAGS + ["-mxop"],
1114        windows_srcs = PROD_XOP_MICROKERNEL_SRCS,
1115        deps = [
1116            ":interface",
1117        ],
1118    )
1119
1120    fb_xplat_cxx_library(
1121        name = "ukernels_fma3",
1122        srcs = PROD_FMA3_MICROKERNEL_SRCS if is_arvr_mode() else [],
1123        headers = subdir_glob([
1124            ("XNNPACK/src", "**/*.h"),
1125            ("XNNPACK/src", "**/*.c"),
1126        ]),
1127        header_namespace = "",
1128        apple_sdks = (IOS, MACOSX, APPLETVOS),
1129        compiler_flags = [
1130            "-O2",
1131        ] + select({
1132            "DEFAULT": [],
1133            "ovr_config//cpu:x86_32": [
1134                "-mfma",
1135                "-mf16c",
1136            ],
1137            "ovr_config//cpu:x86_64": [
1138                "-mfma",
1139                "-mf16c",
1140            ],
1141        }),
1142        fbobjc_preprocessor_flags = [
1143            "-DXNN_PRIVATE=",
1144            "-DXNN_INTERNAL=",
1145        ],
1146        labels = labels,
1147        platform_compiler_flags = [
1148            (
1149                "(i[3-6]86|x86|x86_64|AMD64)",
1150                [
1151                    "-mfma",
1152                    "-mf16c",
1153                ],
1154            ),
1155        ],
1156        platform_srcs = ([
1157            (
1158                "x86|x86_64|platform009|platform010",
1159                PROD_FMA3_MICROKERNEL_SRCS,
1160            ),
1161        ] if not is_arvr_mode() else []),
1162        preferred_linkage = "static",
1163        preprocessor_flags = [
1164            "-DXNN_LOG_LEVEL=0",
1165        ],
1166        visibility = ["PUBLIC"],
1167        windows_clang_compiler_flags_override = WINDOWS_FLAGS + WINDOWS_CLANG_COMPILER_FLAGS + [
1168            "-mfma",
1169            "-mf16c",
1170        ],
1171        windows_compiler_flags_override = WINDOWS_FLAGS + [
1172            "-mfma",
1173            "-mf16c",
1174        ],
1175        deps = [
1176            ":interface",
1177        ],
1178    )
1179
1180    fb_xplat_cxx_library(
1181        name = "ukernels_fma3_ovr_win32",
1182        headers = subdir_glob([
1183            ("XNNPACK/src", "**/*.h"),
1184            ("XNNPACK/src", "**/*.c"),
1185        ]),
1186        header_namespace = "",
1187        apple_sdks = (IOS, MACOSX, APPLETVOS),
1188        compiler_flags = [
1189            "-O2",
1190            "-mfma",
1191            "-mf16c",
1192        ],
1193        fbobjc_preprocessor_flags = [
1194            "-DXNN_PRIVATE=",
1195            "-DXNN_INTERNAL=",
1196        ],
1197        labels = labels,
1198        platform_compiler_flags = [
1199            (
1200                "^(i[3-6]86|x86|x86_64|AMD64)$",
1201                [
1202                    "-mfma",
1203                    "-mf16c",
1204                ],
1205            ),
1206        ],
1207        preferred_linkage = "static",
1208        preprocessor_flags = [
1209            "-DXNN_LOG_LEVEL=0",
1210        ],
1211        visibility = ["PUBLIC"],
1212        windows_clang_compiler_flags_override = WINDOWS_FLAGS + WINDOWS_CLANG_COMPILER_FLAGS + [
1213            "-mfma",
1214            "-mf16c",
1215        ],
1216        windows_compiler_flags_override = WINDOWS_FLAGS + [
1217            "-mfma",
1218            "-mf16c",
1219        ],
1220        windows_srcs = PROD_FMA3_MICROKERNEL_SRCS,
1221        deps = [
1222            ":interface",
1223        ],
1224    )
1225
1226    fb_xplat_cxx_library(
1227        name = "ukernels_avx2",
1228        srcs = PROD_AVX2_MICROKERNEL_SRCS if is_arvr_mode() else [],
1229        headers = subdir_glob([
1230            ("XNNPACK/src", "**/*.c"),
1231            ("XNNPACK/src", "**/*.h"),
1232        ]),
1233        header_namespace = "",
1234        apple_sdks = (IOS, MACOSX, APPLETVOS),
1235        compiler_flags = [
1236            "-O2",
1237        ] + select({
1238            "DEFAULT": [],
1239            "ovr_config//cpu:x86_32": [
1240                "-mavx2",
1241                "-mfma",
1242                "-mf16c",
1243            ],
1244            "ovr_config//cpu:x86_64": [
1245                "-mavx2",
1246                "-mfma",
1247                "-mf16c",
1248            ],
1249        }),
1250        fbobjc_preprocessor_flags = [
1251            "-DXNN_PRIVATE=",
1252            "-DXNN_INTERNAL=",
1253        ],
1254        labels = labels,
1255        platform_compiler_flags = [
1256            (
1257                "x86|x86_64|platform009|platform010",
1258                [
1259                    "-mavx2",
1260                    "-mfma",
1261                    "-mf16c",
1262                ],
1263            ),
1264        ],
1265        platform_srcs = ([
1266            (
1267                "x86|x86_64|platform009|platform010",
1268                PROD_AVX2_MICROKERNEL_SRCS,
1269            ),
1270        ] if not is_arvr_mode() else []),
1271        preferred_linkage = "static",
1272        preprocessor_flags = [
1273            "-DXNN_LOG_LEVEL=0",
1274        ],
1275        visibility = ["PUBLIC"],
1276        windows_clang_compiler_flags_override = WINDOWS_FLAGS + WINDOWS_CLANG_COMPILER_FLAGS + [
1277            "-mavx2",
1278            "-mfma",
1279            "-mf16c",
1280        ],
1281        windows_compiler_flags_override = WINDOWS_FLAGS + [
1282            "-mavx2",
1283            "-mfma",
1284            "-mf16c",
1285        ],
1286        deps = [
1287            ":interface",
1288        ],
1289    )
1290
1291    fb_xplat_cxx_library(
1292        name = "ukernels_avx2_ovr_win32",
1293        headers = subdir_glob([
1294            ("XNNPACK/src", "**/*.c"),
1295            ("XNNPACK/src", "**/*.h"),
1296        ]),
1297        header_namespace = "",
1298        apple_sdks = (IOS, MACOSX, APPLETVOS),
1299        compiler_flags = [
1300            "-O2",
1301            "-mavx2",
1302            "-mfma",
1303            "-mf16c",
1304        ],
1305        fbobjc_preprocessor_flags = [
1306            "-DXNN_PRIVATE=",
1307            "-DXNN_INTERNAL=",
1308        ],
1309        labels = labels,
1310        platform_compiler_flags = [
1311            (
1312                "x86",
1313                [
1314                    "-mavx2",
1315                    "-mfma",
1316                    "-mf16c",
1317                ],
1318            ),
1319        ],
1320        preferred_linkage = "static",
1321        preprocessor_flags = [
1322            "-DXNN_LOG_LEVEL=0",
1323        ],
1324        visibility = ["PUBLIC"],
1325        windows_clang_compiler_flags_override = WINDOWS_FLAGS + WINDOWS_CLANG_COMPILER_FLAGS + [
1326            "-mavx2",
1327            "-mfma",
1328            "-mf16c",
1329        ],
1330        windows_compiler_flags_override = WINDOWS_FLAGS + [
1331            "-mavx2",
1332            "-mfma",
1333            "-mf16c",
1334        ],
1335        windows_srcs = PROD_AVX2_MICROKERNEL_SRCS,
1336        deps = [
1337            ":interface",
1338        ],
1339    )
1340
1341    fb_xplat_cxx_library(
1342        name = "ukernels_avx512",
1343        srcs = PROD_AVX512F_MICROKERNEL_SRCS if is_arvr_mode() else [],
1344        headers = subdir_glob([
1345            ("XNNPACK/src", "**/*.c"),
1346            ("XNNPACK/src", "**/*.h"),
1347        ]),
1348        header_namespace = "",
1349        apple_sdks = (IOS, MACOSX, APPLETVOS),
1350        compiler_flags = [
1351            "-O2",
1352        ] + select({
1353            "DEFAULT": [],
1354            "ovr_config//cpu:x86_32": [
1355                "-mavx512f",
1356            ],
1357            "ovr_config//cpu:x86_64": [
1358                "-mavx512f",
1359            ],
1360        }),
1361        fbobjc_preprocessor_flags = [
1362            "-DXNN_PRIVATE=",
1363            "-DXNN_INTERNAL=",
1364        ],
1365        labels = labels,
1366        platform_compiler_flags = [
1367            (
1368                "x86|x86_64|platform009|platform010",
1369                [
1370                    "-mavx512f",
1371                ],
1372            ),
1373        ],
1374        platform_srcs = ([
1375            (
1376                "x86|x86_64|platform009|platform010",
1377                PROD_AVX512F_MICROKERNEL_SRCS,
1378            ),
1379        ] if not is_arvr_mode() else []),
1380        preferred_linkage = "static",
1381        preprocessor_flags = [
1382            "-DXNN_LOG_LEVEL=0",
1383        ],
1384        visibility = ["PUBLIC"],
1385        windows_clang_compiler_flags_override = WINDOWS_FLAGS + WINDOWS_CLANG_COMPILER_FLAGS + ["-mavx512f"],
1386        windows_compiler_flags_override = WINDOWS_FLAGS + ["-mavx512f"],
1387        deps = [
1388            ":interface",
1389        ],
1390    )
1391
1392    fb_xplat_cxx_library(
1393        name = "ukernels_avx512vbmi",
1394        srcs = PROD_AVX512VBMI_MICROKERNEL_SRCS if is_arvr_mode() else [],
1395        headers = subdir_glob([
1396            ("XNNPACK/src", "**/*.c"),
1397            ("XNNPACK/src", "**/*.h"),
1398        ]),
1399        header_namespace = "",
1400        apple_sdks = (IOS, MACOSX, APPLETVOS),
1401        compiler_flags = [
1402            "-O2",
1403        ] + select({
1404            "DEFAULT": [],
1405            "ovr_config//cpu:x86_32": [
1406                "-mavx512f",
1407                "-mavx512cd",
1408                "-mavx512bw",
1409                "-mavx512dq",
1410                "-mavx512vl",
1411                "-mavx512vbmi",
1412            ],
1413            "ovr_config//cpu:x86_64": [
1414                "-mavx512f",
1415                "-mavx512cd",
1416                "-mavx512bw",
1417                "-mavx512dq",
1418                "-mavx512vl",
1419                "-mavx512vbmi",
1420            ],
1421        }),
1422        fbobjc_preprocessor_flags = [
1423            "-DXNN_PRIVATE=",
1424            "-DXNN_INTERNAL=",
1425        ],
1426        labels = labels,
1427        platform_compiler_flags = [
1428            (
1429                "(i[3-6]86|x86|x86_64|AMD64)",
1430                [
1431                    "-mavx512f",
1432                    "-mavx512cd",
1433                    "-mavx512bw",
1434                    "-mavx512dq",
1435                    "-mavx512vl",
1436                    "-mavx512vbmi",
1437                ],
1438            ),
1439        ],
1440        platform_srcs = ([
1441            (
1442                "x86|x86_64|platform009|platform010",
1443                PROD_AVX512VBMI_MICROKERNEL_SRCS,
1444            ),
1445        ] if not is_arvr_mode() else []),
1446        preferred_linkage = "static",
1447        preprocessor_flags = [
1448            "-DXNN_LOG_LEVEL=0",
1449        ],
1450        visibility = ["PUBLIC"],
1451        windows_clang_compiler_flags_override = WINDOWS_FLAGS + WINDOWS_CLANG_COMPILER_FLAGS + [
1452            "-mavx512f",
1453            "-mavx512cd",
1454            "-mavx512bw",
1455            "-mavx512dq",
1456            "-mavx512vl",
1457            "-mavx512vbmi",
1458        ],
1459        windows_compiler_flags_override = WINDOWS_FLAGS + [
1460            "-mavx512f",
1461            "-mavx512cd",
1462            "-mavx512bw",
1463            "-mavx512dq",
1464            "-mavx512vl",
1465            "-mavx512vbmi",
1466        ],
1467        deps = [
1468            ":interface",
1469        ],
1470    )
1471
1472    fb_xplat_cxx_library(
1473        name = "ukernels_avx512_ovr_win32",
1474        headers = subdir_glob([
1475            ("XNNPACK/src", "**/*.c"),
1476            ("XNNPACK/src", "**/*.h"),
1477        ]),
1478        header_namespace = "",
1479        apple_sdks = (IOS, MACOSX, APPLETVOS),
1480        compiler_flags = [
1481            "-O2",
1482            "-mavx512f",
1483        ],
1484        fbobjc_preprocessor_flags = [
1485            "-DXNN_PRIVATE=",
1486            "-DXNN_INTERNAL=",
1487        ],
1488        labels = labels,
1489        platform_compiler_flags = [
1490            (
1491                "x86",
1492                [
1493                    "-mavx512f",
1494                ],
1495            ),
1496        ],
1497        preferred_linkage = "static",
1498        preprocessor_flags = [
1499            "-DXNN_LOG_LEVEL=0",
1500        ],
1501        visibility = ["PUBLIC"],
1502        windows_clang_compiler_flags_override = WINDOWS_FLAGS + WINDOWS_CLANG_COMPILER_FLAGS + ["-mavx512f"],
1503        windows_compiler_flags_override = WINDOWS_FLAGS + ["-mavx512f"],
1504        windows_srcs = PROD_AVX512F_MICROKERNEL_SRCS,
1505        deps = [
1506            ":interface",
1507        ],
1508    )
1509
1510    fb_xplat_cxx_library(
1511        name = "ukernels_avx512skx",
1512        srcs = PROD_AVX512SKX_MICROKERNEL_SRCS if is_arvr_mode() else [],
1513        headers = subdir_glob([
1514            ("XNNPACK/src", "**/*.c"),
1515            ("XNNPACK/src", "**/*.h"),
1516        ]),
1517        header_namespace = "",
1518        apple_sdks = (IOS, MACOSX, APPLETVOS),
1519        compiler_flags = [
1520            "-O2",
1521        ] + select({
1522            "DEFAULT": [],
1523            "ovr_config//cpu:x86_32": [
1524                "-mavx512f",
1525                "-mavx512cd",
1526                "-mavx512bw",
1527                "-mavx512dq",
1528                "-mavx512vl",
1529            ],
1530            "ovr_config//cpu:x86_64": [
1531                "-mavx512f",
1532                "-mavx512cd",
1533                "-mavx512bw",
1534                "-mavx512dq",
1535                "-mavx512vl",
1536            ],
1537        }),
1538        fbobjc_preprocessor_flags = [
1539            "-DXNN_PRIVATE=",
1540            "-DXNN_INTERNAL=",
1541        ],
1542        labels = labels,
1543        platform_compiler_flags = [
1544            (
1545                "(i[3-6]86|x86|x86_64|AMD64)",
1546                [
1547                    "-mavx512f",
1548                    "-mavx512cd",
1549                    "-mavx512bw",
1550                    "-mavx512dq",
1551                    "-mavx512vl",
1552                ],
1553            ),
1554        ],
1555        platform_srcs = ([
1556            (
1557                "x86|x86_64|platform009|platform010",
1558                PROD_AVX512SKX_MICROKERNEL_SRCS,
1559            ),
1560        ] if not is_arvr_mode() else []),
1561        preferred_linkage = "static",
1562        preprocessor_flags = [
1563            "-DXNN_LOG_LEVEL=0",
1564        ],
1565        visibility = ["PUBLIC"],
1566        windows_clang_compiler_flags_override = WINDOWS_FLAGS + WINDOWS_CLANG_COMPILER_FLAGS + [
1567            "-mavx512f",
1568            "-mavx512cd",
1569            "-mavx512bw",
1570            "-mavx512dq",
1571            "-mavx512vl",
1572        ],
1573        windows_compiler_flags_override = WINDOWS_FLAGS + [
1574            "-mavx512f",
1575            "-mavx512cd",
1576            "-mavx512bw",
1577            "-mavx512dq",
1578            "-mavx512vl",
1579        ],
1580        deps = [
1581            ":interface",
1582        ],
1583    )
1584
1585    fb_xplat_cxx_library(
1586        name = "ukernels_avx512skx_ovr_win32",
1587        headers = subdir_glob([
1588            ("XNNPACK/src", "**/*.c"),
1589            ("XNNPACK/src", "**/*.h"),
1590        ]),
1591        header_namespace = "",
1592        apple_sdks = (IOS, MACOSX, APPLETVOS),
1593        compiler_flags = [
1594            "-O2",
1595            "-mavx512f",
1596            "-mavx512cd",
1597            "-mavx512bw",
1598            "-mavx512dq",
1599            "-mavx512vl",
1600        ],
1601        fbobjc_preprocessor_flags = [
1602            "-DXNN_PRIVATE=",
1603            "-DXNN_INTERNAL=",
1604        ],
1605        labels = labels,
1606        platform_compiler_flags = [
1607            (
1608                "^(i[3-6]86|x86|x86_64|AMD64)$",
1609                [
1610                    "-mavx512f",
1611                    "-mavx512cd",
1612                    "-mavx512bw",
1613                    "-mavx512dq",
1614                    "-mavx512vl",
1615                ],
1616            ),
1617        ],
1618        preferred_linkage = "static",
1619        preprocessor_flags = [
1620            "-DXNN_LOG_LEVEL=0",
1621        ],
1622        visibility = ["PUBLIC"],
1623        windows_clang_compiler_flags_override = WINDOWS_FLAGS + WINDOWS_CLANG_COMPILER_FLAGS + [
1624            "-mavx512f",
1625            "-mavx512cd",
1626            "-mavx512bw",
1627            "-mavx512dq",
1628            "-mavx512vl",
1629        ],
1630        windows_compiler_flags_override = WINDOWS_FLAGS + [
1631            "-mavx512f",
1632            "-mavx512cd",
1633            "-mavx512bw",
1634            "-mavx512dq",
1635            "-mavx512vl",
1636        ],
1637        windows_srcs = PROD_AVX512SKX_MICROKERNEL_SRCS,
1638        deps = [
1639            ":interface",
1640        ],
1641    )
1642
1643    fb_xplat_cxx_library(
1644        name = "ukernels_armsimd32",
1645        srcs = PROD_ARMSIMD32_MICROKERNEL_SRCS,
1646        headers = subdir_glob([
1647            ("XNNPACK/src", "**/*.c"),
1648            ("XNNPACK/src", "**/*.h"),
1649        ]),
1650        header_namespace = "",
1651        apple_sdks = (IOS, MACOSX, APPLETVOS),
1652        compiler_flags = [
1653            "-O2",
1654            "-fno-fast-math",
1655            "-fno-math-errno",
1656        ],
1657        fbobjc_preprocessor_flags = [
1658            "-DXNN_PRIVATE=",
1659            "-DXNN_INTERNAL=",
1660        ],
1661        labels = labels,
1662        platform_compiler_flags = [
1663            (
1664                "(arm32|aarch32|armv7)",
1665                [
1666                    "-marm",
1667                    "-march=armv6",
1668                    "-mfpu=vfp",
1669                    "-munaligned-access",
1670                ],
1671            ),
1672        ],
1673        preferred_linkage = "static",
1674        preprocessor_flags = [
1675            "-DXNN_LOG_LEVEL=0",
1676        ],
1677        visibility = ["PUBLIC"],
1678        windows_clang_compiler_flags_override = WINDOWS_FLAGS + WINDOWS_CLANG_COMPILER_FLAGS,
1679        windows_compiler_flags_override = WINDOWS_FLAGS,
1680        deps = [
1681            ":interface",
1682            third_party("FP16"),
1683        ],
1684    )
1685
1686    fb_xplat_cxx_library(
1687        name = "ukernels_neon",
1688        srcs = select({
1689            "DEFAULT": [],
1690            "ovr_config//cpu:arm32": PROD_NEON_MICROKERNEL_SRCS,
1691        }) if is_arvr_mode() else [],
1692        headers = subdir_glob([
1693            ("XNNPACK/src", "**/*.c"),
1694            ("XNNPACK/src", "**/*.h"),
1695        ]),
1696        header_namespace = "",
1697        apple_sdks = (IOS, MACOSX, APPLETVOS),
1698        compiler_flags = [
1699            "-O2",
1700        ] + select({
1701            "DEFAULT": [],
1702            "ovr_config//cpu:arm32": [
1703                "-marm",
1704                "-march=armv7-a",
1705                "-mfpu=neon",
1706            ],
1707        }),
1708        fbobjc_preprocessor_flags = [
1709            "-DXNN_PRIVATE=",
1710            "-DXNN_INTERNAL=",
1711        ],
1712        labels = labels,
1713        platform_compiler_flags = [
1714            (
1715                "(aarch32|arm32|armv7)",
1716                [
1717                    "-marm",
1718                    "-march=armv7-a",
1719                    "-mfpu=neon",
1720                ],
1721            ),
1722        ],
1723        platform_srcs = [
1724            (
1725                "(aarch32|arm32|armv7)",
1726                PROD_NEON_MICROKERNEL_SRCS,
1727            ),
1728        ] if not is_arvr_mode() else [],
1729        preferred_linkage = "static",
1730        preprocessor_flags = [
1731            "-DXNN_LOG_LEVEL=0",
1732        ],
1733        visibility = ["PUBLIC"],
1734        windows_clang_compiler_flags_override = WINDOWS_FLAGS + WINDOWS_CLANG_COMPILER_FLAGS,
1735        windows_compiler_flags_override = WINDOWS_FLAGS,
1736        deps = [
1737            ":interface",
1738            third_party("FP16"),
1739        ],
1740    )
1741
1742    fb_xplat_cxx_library(
1743        name = "ukernels_neon_aarch64",
1744        srcs = select({
1745            "DEFAULT": [],
1746            "ovr_config//cpu:arm64": PROD_NEON_MICROKERNEL_SRCS + [PROD_NEON_AARCH64_MICROKERNEL_SRCS[0]],
1747        }) if is_arvr_mode() else [],
1748        headers = subdir_glob([
1749            ("XNNPACK/src", "**/*.c"),
1750            ("XNNPACK/src", "**/*.h"),
1751        ]),
1752        header_namespace = "",
1753        apple_sdks = (IOS, MACOSX, APPLETVOS),
1754        compiler_flags = [
1755            "-O2",
1756        ],
1757        fbobjc_preprocessor_flags = [
1758            "-DXNN_PRIVATE=",
1759            "-DXNN_INTERNAL=",
1760        ],
1761        platform_srcs = [
1762            (
1763                "(aarch64|arm64)",
1764                PROD_NEON_MICROKERNEL_SRCS + [PROD_NEON_AARCH64_MICROKERNEL_SRCS[0]],
1765            ),
1766        ] if not is_arvr_mode() else [],
1767        labels = labels,
1768        preferred_linkage = "static",
1769        preprocessor_flags = [
1770            "-DXNN_LOG_LEVEL=0",
1771        ],
1772        visibility = ["PUBLIC"],
1773        windows_clang_compiler_flags_override = WINDOWS_FLAGS + WINDOWS_CLANG_COMPILER_FLAGS,
1774        windows_compiler_flags_override = WINDOWS_FLAGS,
1775        deps = [
1776            ":interface",
1777            third_party("FP16"),
1778        ],
1779    )
1780
1781    fb_xplat_cxx_library(
1782        name = "ukernels_neon_fma",
1783        srcs = select({
1784            "DEFAULT": [],
1785            "ovr_config//cpu:arm32": PROD_NEONFMA_MICROKERNEL_SRCS,
1786        }) if is_arvr_mode() else [],
1787        headers = subdir_glob([
1788            ("XNNPACK/src", "**/*.c"),
1789            ("XNNPACK/src", "**/*.h"),
1790        ]),
1791        header_namespace = "",
1792        apple_sdks = (IOS, MACOSX, APPLETVOS),
1793        compiler_flags = [
1794            "-O2",
1795        ] + select({
1796            "DEFAULT": [],
1797            "ovr_config//cpu:arm32": [
1798                "-marm",
1799                "-march=armv7-a",
1800                "-mfpu=neon-vfpv4",
1801            ],
1802        }),
1803        fbobjc_preprocessor_flags = [
1804            "-DXNN_PRIVATE=",
1805            "-DXNN_INTERNAL=",
1806        ],
1807        labels = labels,
1808        platform_compiler_flags = [
1809            (
1810                "^iphoneos-armv7$",
1811                [
1812                    "-mcpu=cyclone",
1813                    "-mtune=generic",
1814                ],
1815            ),
1816            (
1817                "(aarch32|arm32|armv7)",
1818                [
1819                    "-marm",
1820                    "-march=armv7-a",
1821                    "-mfpu=neon-vfpv4",
1822                ],
1823            ),
1824        ],
1825        platform_srcs = [
1826            (
1827                "(aarch32|arm32|armv7)",
1828                PROD_NEONFMA_MICROKERNEL_SRCS,
1829            ),
1830        ] if not is_arvr_mode() else [],
1831        preferred_linkage = "static",
1832        preprocessor_flags = [
1833            "-DXNN_LOG_LEVEL=0",
1834        ],
1835        visibility = ["PUBLIC"],
1836        windows_clang_compiler_flags_override = WINDOWS_FLAGS + WINDOWS_CLANG_COMPILER_FLAGS,
1837        windows_compiler_flags_override = WINDOWS_FLAGS,
1838        deps = [
1839            ":interface",
1840            third_party("FP16"),
1841        ],
1842    )
1843
1844    fb_xplat_cxx_library(
1845        name = "ukernels_neonfma_aarch64",
1846        srcs = select({
1847            "DEFAULT": [],
1848            "ovr_config//cpu:arm64": PROD_NEONFMA_MICROKERNEL_SRCS + [PROD_NEON_AARCH64_MICROKERNEL_SRCS[1]],
1849        }) if is_arvr_mode() else [],
1850        headers = subdir_glob([
1851            ("XNNPACK/src", "**/*.h"),
1852            ("XNNPACK/src", "**/*.c"),
1853        ]),
1854        header_namespace = "",
1855        apple_sdks = (IOS, MACOSX, APPLETVOS),
1856        compiler_flags = [
1857            "-O2",
1858        ],
1859        fbobjc_preprocessor_flags = [
1860            "-DXNN_PRIVATE=",
1861            "-DXNN_INTERNAL=",
1862        ],
1863        labels = labels,
1864        platform_srcs = [
1865            (
1866                "(arm64|aarch64)$",
1867                PROD_NEONFMA_MICROKERNEL_SRCS + [PROD_NEON_AARCH64_MICROKERNEL_SRCS[1]],
1868            ),
1869        ] if not is_arvr_mode() else [],
1870        platforms = (APPLE, ANDROID, CXX, WINDOWS),
1871        preferred_linkage = "static",
1872        preprocessor_flags = [
1873            "-DXNN_LOG_LEVEL=0",
1874        ],
1875        visibility = ["PUBLIC"],
1876        windows_clang_compiler_flags_override = WINDOWS_FLAGS + WINDOWS_CLANG_COMPILER_FLAGS,
1877        windows_compiler_flags_override = WINDOWS_FLAGS,
1878        deps = [
1879            ":interface",
1880            third_party("FP16"),
1881        ],
1882    )
1883
1884    fb_xplat_cxx_library(
1885        name = "ukernels_fp16arith",
1886        srcs = PROD_FP16ARITH_MICROKERNEL_SRCS,
1887        headers = subdir_glob([
1888            ("XNNPACK/src", "**/*.c"),
1889            ("XNNPACK/src", "**/*.h"),
1890        ]),
1891        header_namespace = "",
1892        apple_sdks = (IOS, MACOSX, APPLETVOS),
1893        compiler_flags = [
1894            "-O2",
1895            "-Wno-error=missing-braces",  # required since the SGX toolchain does not have this by default
1896            "-fno-fast-math",
1897            "-fno-math-errno",
1898        ] + select({
1899            "DEFAULT": [],
1900            "ovr_config//cpu:arm32": [
1901                "-marm",
1902                "-march=armv8.2-a+fp16",
1903                # GCC emits wrong directives for assembler with -mfpu=fp-armv8
1904                "-mfpu=neon-fp-armv8",
1905                # For vsqrth_f16 polyfill using sqrtf
1906                "-fno-math-errno",
1907                # For vminh_f16/vmaxh_f16 polyfills using compare + select
1908                "-ffinite-math-only",
1909            ],
1910        }),
1911        fbobjc_preprocessor_flags = [
1912            "-DXNN_PRIVATE=",
1913            "-DXNN_INTERNAL=",
1914        ],
1915        labels = labels,
1916        platform_compiler_flags = [
1917            (
1918                "(aarch32|arm32|armv7)",
1919                [
1920                    "-marm",
1921                    "-march=armv8.2-a+fp16",
1922                    # GCC emits wrong directives for assembler with -mfpu=fp-armv8
1923                    "-mfpu=neon-fp-armv8",
1924                    # For vsqrth_f16 polyfill using sqrtf
1925                    "-fno-math-errno",
1926                    # For vminh_f16/vmaxh_f16 polyfills using compare + select
1927                    "-ffinite-math-only",
1928                ],
1929            ),
1930        ],
1931        preferred_linkage = "static",
1932        preprocessor_flags = [
1933            "-DXNN_LOG_LEVEL=0",
1934        ],
1935        visibility = ["PUBLIC"],
1936        windows_clang_compiler_flags_override = WINDOWS_FLAGS + WINDOWS_CLANG_COMPILER_FLAGS,
1937        windows_compiler_flags_override = WINDOWS_FLAGS,
1938        deps = [
1939            ":interface",
1940        ],
1941    )
1942
1943    fb_xplat_cxx_library(
1944        name = "ukernels_neon_fp16",
1945        srcs = PROD_NEONFP16_MICROKERNEL_SRCS,
1946        headers = subdir_glob([
1947            ("XNNPACK/src", "**/*.c"),
1948            ("XNNPACK/src", "**/*.h"),
1949        ]),
1950        header_namespace = "",
1951        apple_sdks = (IOS, MACOSX, APPLETVOS),
1952        compiler_flags = [
1953            "-O2",
1954        ] + select({
1955            "DEFAULT": [],
1956            "ovr_config//cpu:arm32": [
1957                "-marm",
1958                "-march=armv7-a",
1959                "-mfpu=neon-fp16",
1960            ],
1961        }),
1962        fbobjc_preprocessor_flags = [
1963            "-DXNN_PRIVATE=",
1964            "-DXNN_INTERNAL=",
1965        ],
1966        labels = labels,
1967        platform_compiler_flags = [
1968            (
1969                "(aarch32|arm32|armv7)",
1970                [
1971                    "-marm",
1972                    "-march=armv7-a",
1973                    "-mfpu=neon-fp16",
1974                ],
1975            ),
1976        ],
1977        preferred_linkage = "static",
1978        preprocessor_flags = [
1979            "-DXNN_LOG_LEVEL=0",
1980        ],
1981        visibility = ["PUBLIC"],
1982        windows_clang_compiler_flags_override = WINDOWS_FLAGS + WINDOWS_CLANG_COMPILER_FLAGS,
1983        windows_compiler_flags_override = WINDOWS_FLAGS,
1984        deps = [
1985            ":interface",
1986        ],
1987    )
1988
1989    fb_xplat_cxx_library(
1990        name = "ukernels_neon_v8",
1991        srcs = PROD_NEONV8_MICROKERNEL_SRCS,
1992        headers = subdir_glob([
1993            ("XNNPACK/src", "**/*.c"),
1994            ("XNNPACK/src", "**/*.h"),
1995        ]),
1996        header_namespace = "",
1997        apple_sdks = (IOS, MACOSX, APPLETVOS),
1998        compiler_flags = [
1999            "-O2",
2000        ] + select({
2001            "DEFAULT": [],
2002            "ovr_config//cpu:arm64": ["-march=armv8-a"],
2003        }),
2004        fbobjc_preprocessor_flags = [
2005            "-DXNN_PRIVATE=",
2006            "-DXNN_INTERNAL=",
2007        ],
2008        labels = labels,
2009        platform_compiler_flags = [
2010            (
2011                "(aarch64|arm64)",
2012                [
2013                    "-march=armv8-a",
2014                ],
2015            ),
2016            (
2017                "^android-armv7$",
2018                [
2019                    "-march=armv8-a",
2020                    "-mfpu=neon-fp-armv8",
2021                    "-mfloat-abi=softfp",
2022                ],
2023            ),
2024            (
2025                "^iphoneos-armv7$",
2026                [
2027                    "-mcpu=cyclone",
2028                    "-mtune=generic",
2029                ],
2030            ),
2031        ],
2032        preferred_linkage = "static",
2033        preprocessor_flags = [
2034            "-DXNN_LOG_LEVEL=0",
2035        ],
2036        visibility = ["PUBLIC"],
2037        windows_clang_compiler_flags_override = WINDOWS_FLAGS + WINDOWS_CLANG_COMPILER_FLAGS,
2038        windows_compiler_flags_override = WINDOWS_FLAGS,
2039        deps = [
2040            ":interface",
2041            third_party("FP16"),
2042        ],
2043    )
2044
2045    fb_xplat_cxx_library(
2046        name = "ukernels_neon_dot",
2047        srcs = select({
2048            "DEFAULT": [],
2049            "ovr_config//cpu:arm32": PROD_NEONDOT_MICROKERNEL_SRCS,
2050        }) if is_arvr_mode() else [],
2051        headers = subdir_glob([
2052            ("XNNPACK/src", "**/*.c"),
2053            ("XNNPACK/src", "**/*.h"),
2054        ]),
2055        header_namespace = "",
2056        apple_sdks = (IOS, MACOSX, APPLETVOS),
2057        compiler_flags = [
2058            "-O2",
2059        ] + select({
2060            "DEFAULT": [],
2061            "ovr_config//cpu:arm32": [
2062                "-march=armv8.2-a+dotprod",
2063                "-mfpu=neon-fp-armv8",
2064                "-mfloat-abi=softfp",
2065            ],
2066        }),
2067        fbobjc_preprocessor_flags = [
2068            "-DXNN_PRIVATE=",
2069            "-DXNN_INTERNAL=",
2070        ],
2071        labels = labels,
2072        platform_compiler_flags = [
2073            (
2074                "(aarch32|arm32|armv7)",
2075                [
2076                    "-march=armv8.2-a+dotprod",
2077                    "-mfpu=neon-fp-armv8",
2078                    "-mfloat-abi=softfp",
2079                ],
2080            ),
2081        ],
2082        platform_srcs = [
2083            (
2084                "(aarch32|arm32|armv7)",
2085                PROD_NEONDOT_MICROKERNEL_SRCS,
2086            ),
2087        ] if not is_arvr_mode() else [],
2088        preferred_linkage = "static",
2089        preprocessor_flags = [
2090            "-DXNN_LOG_LEVEL=0",
2091        ],
2092        visibility = ["PUBLIC"],
2093        windows_clang_compiler_flags_override = WINDOWS_FLAGS + WINDOWS_CLANG_COMPILER_FLAGS,
2094        windows_compiler_flags_override = WINDOWS_FLAGS,
2095        deps = [
2096            ":interface",
2097            third_party("FP16"),
2098        ],
2099    )
2100
2101    fb_xplat_cxx_library(
2102        name = "ukernels_neon_dot_aarch64",
2103        srcs = select({
2104            "DEFAULT": [],
2105            "ovr_config//cpu:arm64": PROD_NEONDOT_MICROKERNEL_SRCS + PROD_NEONDOT_AARCH64_MICROKERNEL_SRCS,
2106        }) if is_arvr_mode() else [],
2107        headers = subdir_glob([
2108            ("XNNPACK/src", "**/*.c"),
2109            ("XNNPACK/src", "**/*.h"),
2110        ]),
2111        header_namespace = "",
2112        apple_sdks = (IOS, MACOSX, APPLETVOS),
2113        compiler_flags = [
2114            "-O2",
2115        ] + select({
2116            "DEFAULT": [],
2117            "ovr_config//cpu:arm64": ["-march=armv8.2-a+dotprod"],
2118        }),
2119        fbobjc_preprocessor_flags = [
2120            "-DXNN_PRIVATE=",
2121            "-DXNN_INTERNAL=",
2122        ],
2123        labels = labels,
2124        platform_compiler_flags = [
2125            (
2126                "(aarch64|arm64)",
2127                [
2128                    "-march=armv8.2-a+dotprod",
2129                ],
2130            ),
2131        ],
2132        platform_srcs = [
2133            (
2134                "(aarch64|arm64)",
2135                PROD_NEONDOT_MICROKERNEL_SRCS + PROD_NEONDOT_AARCH64_MICROKERNEL_SRCS,
2136            ),
2137        ] if not is_arvr_mode() else [],
2138        preferred_linkage = "static",
2139        preprocessor_flags = [
2140            "-DXNN_LOG_LEVEL=0",
2141        ],
2142        visibility = ["PUBLIC"],
2143        windows_clang_compiler_flags_override = WINDOWS_FLAGS + WINDOWS_CLANG_COMPILER_FLAGS,
2144        windows_compiler_flags_override = WINDOWS_FLAGS,
2145        deps = [
2146            ":interface",
2147            third_party("FP16"),
2148        ],
2149    )
2150
2151    fb_xplat_cxx_library(
2152        name = "ukernels_neon_dot_fp16arith",
2153        srcs = select({
2154            "DEFAULT": [],
2155            "ovr_config//cpu:arm32": PROD_NEONDOTFP16ARITH_MICROKERNEL_SRCS,
2156        }) if is_arvr_mode() else [],
2157        headers = subdir_glob([
2158            ("XNNPACK/src", "**/*.c"),
2159            ("XNNPACK/src", "**/*.h"),
2160        ]),
2161        header_namespace = "",
2162        apple_sdks = (IOS, MACOSX, APPLETVOS),
2163        compiler_flags = [
2164            "-O2",
2165        ] + select({
2166            "DEFAULT": [],
2167            "ovr_config//cpu:arm32": [
2168                "-marm",
2169                "-march=armv8.2-a+dotprod+fp16",
2170                "-mfpu=neon-fp-armv8",
2171            ],
2172        }),
2173        platform_compiler_flags = [
2174            (
2175                "(aarch32|arm32|armv7)",
2176                [
2177                    "-marm",
2178                    "-march=armv8.2-a+dotprod+fp16",
2179                    "-mfpu=neon-fp-armv8",
2180                ],
2181            ),
2182        ],
2183        platform_srcs = [
2184            (
2185                "(aarch32|arm32|armv7)",
2186                PROD_NEONDOTFP16ARITH_MICROKERNEL_SRCS,
2187            ),
2188        ] if not is_arvr_mode() else [],
2189        fbobjc_preprocessor_flags = [
2190            "-DXNN_PRIVATE=",
2191            "-DXNN_INTERNAL=",
2192        ],
2193        labels = labels,
2194        preferred_linkage = "static",
2195        preprocessor_flags = [
2196            "-DXNN_LOG_LEVEL=0",
2197        ],
2198        visibility = ["PUBLIC"],
2199        windows_clang_compiler_flags_override = WINDOWS_FLAGS + WINDOWS_CLANG_COMPILER_FLAGS,
2200        windows_compiler_flags_override = WINDOWS_FLAGS,
2201        deps = [
2202            ":interface",
2203            third_party("FP16"),
2204        ],
2205    )
2206
2207    fb_xplat_cxx_library(
2208        name = "ukernels_neon_dot_fp16arith_aarch64",
2209        srcs = select({
2210            "DEFAULT": [],
2211            "ovr_config//cpu:arm64": PROD_NEONDOTFP16ARITH_MICROKERNEL_SRCS + PROD_NEONDOTFP16ARITH_AARCH64_MICROKERNEL_SRCS,
2212        }) if is_arvr_mode() else [],
2213        headers = subdir_glob([
2214            ("XNNPACK/src", "**/*.c"),
2215            ("XNNPACK/src", "**/*.h"),
2216        ]),
2217        header_namespace = "",
2218        apple_sdks = (IOS, MACOSX, APPLETVOS),
2219        compiler_flags = [
2220            "-O2",
2221        ] + select({
2222            "DEFAULT": [],
2223            "ovr_config//cpu:arm64": [
2224                "-march=armv8.2-a+dotprod+fp16",
2225            ],
2226        }),
2227        fbobjc_preprocessor_flags = [
2228            "-DXNN_PRIVATE=",
2229            "-DXNN_INTERNAL=",
2230        ],
2231        platform_compiler_flags = [
2232            (
2233                "(aarch64|arm64)",
2234                [
2235                    "-march=armv8.2-a+dotprod+fp16",
2236                ],
2237            ),
2238        ],
2239        platform_srcs = [
2240            (
2241                "(aarch64|arm64)",
2242                PROD_NEONDOTFP16ARITH_MICROKERNEL_SRCS + PROD_NEONDOTFP16ARITH_AARCH64_MICROKERNEL_SRCS,
2243            ),
2244        ] if not is_arvr_mode() else [],
2245        labels = labels,
2246        preferred_linkage = "static",
2247        preprocessor_flags = [
2248            "-DXNN_LOG_LEVEL=0",
2249        ],
2250        visibility = ["PUBLIC"],
2251        windows_clang_compiler_flags_override = WINDOWS_FLAGS + WINDOWS_CLANG_COMPILER_FLAGS,
2252        windows_compiler_flags_override = WINDOWS_FLAGS,
2253        deps = [
2254            ":interface",
2255            third_party("FP16"),
2256        ],
2257    )
2258
2259    fb_xplat_cxx_library(
2260        name = "ukernels_neon_fp16arith",
2261        srcs = select({
2262            "DEFAULT": [],
2263            "ovr_config//cpu:arm32": PROD_NEONFP16ARITH_MICROKERNEL_SRCS,
2264        }) if is_arvr_mode() else [],
2265        headers = subdir_glob([
2266            ("XNNPACK/src", "**/*.c"),
2267            ("XNNPACK/src", "**/*.h"),
2268        ]),
2269        header_namespace = "",
2270        apple_sdks = (IOS, MACOSX, APPLETVOS),
2271        compiler_flags = [
2272            "-O2",
2273        ] + select({
2274            "DEFAULT": [],
2275            "ovr_config//cpu:arm32": [
2276                "-marm",
2277                "-march=armv8.2-a+fp16",
2278                "-mfpu=neon-fp-armv8",
2279            ],
2280        }),
2281        fbobjc_preprocessor_flags = [
2282            "-DXNN_PRIVATE=",
2283            "-DXNN_INTERNAL=",
2284        ],
2285        labels = labels,
2286        platform_compiler_flags = [
2287            (
2288                "(aarch32|arm32|armv7)",
2289                [
2290                    "-marm",
2291                    "-march=armv8.2-a+fp16",
2292                    "-mfpu=neon-fp-armv8",
2293                ],
2294            ),
2295        ],
2296        platform_srcs = [
2297            (
2298                "(aarch32|arm32|armv7)",
2299                PROD_NEONFP16ARITH_MICROKERNEL_SRCS,
2300            ),
2301        ] if not is_arvr_mode() else [],
2302        preferred_linkage = "static",
2303        preprocessor_flags = [
2304            "-DXNN_LOG_LEVEL=0",
2305        ],
2306        visibility = ["PUBLIC"],
2307        windows_clang_compiler_flags_override = WINDOWS_FLAGS + WINDOWS_CLANG_COMPILER_FLAGS,
2308        windows_compiler_flags_override = WINDOWS_FLAGS,
2309        deps = [
2310            ":interface",
2311            third_party("FP16"),
2312        ],
2313    )
2314
2315    fb_xplat_cxx_library(
2316        name = "ukernels_neon_fp16arith_aarch64",
2317        srcs = select({
2318            "DEFAULT": [],
2319            "ovr_config//cpu:arm64": PROD_NEONFP16ARITH_MICROKERNEL_SRCS + PROD_NEONFP16ARITH_AARCH64_MICROKERNEL_SRCS,
2320        }) if is_arvr_mode() else [],
2321        headers = subdir_glob([
2322            ("XNNPACK/src", "**/*.c"),
2323            ("XNNPACK/src", "**/*.h"),
2324        ]),
2325        header_namespace = "",
2326        apple_sdks = (IOS, MACOSX, APPLETVOS),
2327        compiler_flags = [
2328            "-O2",
2329        ] + select({
2330            "DEFAULT": [],
2331            "ovr_config//cpu:arm64": ["-march=armv8.2-a+fp16"],
2332        }),
2333        fbobjc_preprocessor_flags = [
2334            "-DXNN_PRIVATE=",
2335            "-DXNN_INTERNAL=",
2336        ],
2337        labels = labels,
2338        platform_compiler_flags = [
2339            (
2340                "(aarch64|arm64)",
2341                [
2342                    "-march=armv8.2-a+fp16",
2343                ],
2344            ),
2345        ],
2346        platform_srcs = [
2347            (
2348                "(aarch64|arm64)",
2349                PROD_NEONFP16ARITH_MICROKERNEL_SRCS + PROD_NEONFP16ARITH_AARCH64_MICROKERNEL_SRCS,
2350            ),
2351        ] if not is_arvr_mode() else [],
2352        preferred_linkage = "static",
2353        preprocessor_flags = [
2354            "-DXNN_LOG_LEVEL=0",
2355        ],
2356        visibility = ["PUBLIC"],
2357        windows_clang_compiler_flags_override = WINDOWS_FLAGS + WINDOWS_CLANG_COMPILER_FLAGS,
2358        windows_compiler_flags_override = WINDOWS_FLAGS,
2359        deps = [
2360            ":interface",
2361            third_party("FP16"),
2362        ],
2363    )
2364
2365    fb_xplat_cxx_library(
2366        name = "ukernels_neonfma_i8mm",
2367        srcs = PROD_NEONI8MM_MICROKERNEL_SRCS,
2368        headers = subdir_glob([
2369            ("XNNPACK/src", "**/*.h"),
2370            ("XNNPACK/src", "**/*.c"),
2371        ]),
2372        header_namespace = "",
2373        apple_sdks = (IOS, MACOSX, APPLETVOS),
2374        compiler_flags = [
2375            "-O2",
2376        ] + select({
2377            "DEFAULT": [],
2378            "ovr_config//cpu:arm32": [
2379                "-marm",
2380                "-march=armv8.2-a+i8mm+fp16",
2381                "-mfpu=neon-fp-armv8",
2382            ],
2383            "ovr_config//cpu:arm64": [
2384                "-march=armv8.2-a+i8mm+fp16",
2385            ],
2386        }),
2387        fbobjc_preprocessor_flags = [
2388            "-DXNN_PRIVATE=",
2389            "-DXNN_INTERNAL=",
2390        ],
2391        labels = labels,
2392        platform_compiler_flags = [
2393            (
2394                "(aarch32|arm32|armv7)$",
2395                [
2396                    "-marm",
2397                    "-march=armv8.2-a+i8mm+fp16",
2398                    "-mfpu=neon-fp-armv8",
2399                ],
2400            ),
2401            (
2402                "(arm64|aarch64)",
2403                [
2404                    "-march=armv8.2-a+i8mm+fp16",
2405                ],
2406            ),
2407        ],
2408        platforms = (APPLE, ANDROID, CXX, WINDOWS),
2409        preferred_linkage = "static",
2410        preprocessor_flags = [
2411            "-DXNN_LOG_LEVEL=0",
2412        ],
2413        visibility = ["PUBLIC"],
2414        windows_clang_compiler_flags_override = WINDOWS_FLAGS + WINDOWS_CLANG_COMPILER_FLAGS,
2415        windows_compiler_flags_override = WINDOWS_FLAGS,
2416        deps = [
2417            ":interface",
2418            third_party("FP16"),
2419        ],
2420    )
2421
2422    fb_xplat_cxx_library(
2423        name = "ukernels_asm_aarch32",
2424        srcs = AARCH32_ASM_MICROKERNEL_SRCS,
2425        headers = subdir_glob([
2426            ("XNNPACK/src", "xnnpack/assembly.h"),
2427            ("XNNPACK/src", "**/*.S"),
2428        ]),
2429        header_namespace = "",
2430        apple_sdks = (IOS, MACOSX, APPLETVOS),
2431        compiler_flags = [
2432            "-O2",
2433        ] + select({
2434            "DEFAULT": [],
2435            "ovr_config//cpu:arm32": [
2436                "-marm",
2437                "-march=armv8.2-a+dotprod+fp16",
2438                "-mfpu=neon-fp-armv8",
2439            ],
2440        }),
2441        fbobjc_preprocessor_flags = [
2442            "-DXNN_PRIVATE=",
2443            "-DXNN_INTERNAL=",
2444        ],
2445        labels = labels,
2446        platform_compiler_flags = [
2447            (
2448                "(aarch32|arm32|armv7)",
2449                [
2450                    "-marm",
2451                    "-march=armv8.2-a+dotprod+fp16",
2452                    "-mfpu=neon-fp-armv8",
2453                ],
2454            ),
2455        ],
2456        platforms = (APPLE, ANDROID, CXX, WINDOWS),
2457        preferred_linkage = "static",
2458        preprocessor_flags = [
2459            "-DXNN_LOG_LEVEL=0",
2460        ],
2461        visibility = ["PUBLIC"],
2462        windows_clang_compiler_flags_override = WINDOWS_FLAGS + WINDOWS_CLANG_COMPILER_FLAGS,
2463        windows_compiler_flags_override = WINDOWS_FLAGS,
2464        deps = [
2465            ":interface",
2466            ":jit_memory",
2467            third_party("FP16"),
2468        ],
2469    )
2470
2471    fb_xplat_cxx_library(
2472        name = "ukernels_asm_aarch64",
2473        srcs = AARCH64_ASM_MICROKERNEL_SRCS,
2474        headers = subdir_glob([
2475            ("XNNPACK/src", "xnnpack/assembly.h"),
2476            ("XNNPACK/src", "**/*.S"),
2477        ]),
2478        header_namespace = "",
2479        apple_sdks = (IOS, MACOSX, APPLETVOS),
2480        compiler_flags = [
2481            "-O2",
2482        ] + select({
2483            "DEFAULT": [],
2484            "ovr_config//cpu:arm64": [
2485                "-march=armv8.2-a+fp16+dotprod",
2486            ],
2487        }),
2488        fbobjc_preprocessor_flags = [
2489            "-DXNN_PRIVATE=",
2490            "-DXNN_INTERNAL=",
2491        ],
2492        labels = labels,
2493        platform_compiler_flags = [
2494            (
2495                "(aarch64|arm64)",
2496                [
2497                    "-march=armv8.2-a+fp16+dotprod",
2498                ],
2499            ),
2500        ],
2501        preferred_linkage = "static",
2502        preprocessor_flags = [
2503            "-DXNN_LOG_LEVEL=0",
2504        ],
2505        visibility = ["PUBLIC"],
2506        windows_clang_compiler_flags_override = WINDOWS_FLAGS + WINDOWS_CLANG_COMPILER_FLAGS,
2507        windows_compiler_flags_override = WINDOWS_FLAGS,
2508        deps = [
2509            ":interface",
2510            ":jit_memory",
2511            third_party("FP16"),
2512        ],
2513    )
2514
2515    fb_xplat_cxx_library(
2516        name = "arm64_lib",
2517        apple_sdks = (IOS, MACOSX, APPLETVOS),
2518        labels = labels,
2519        preferred_linkage = "static",
2520        visibility = ["PUBLIC"],
2521        deps = [
2522            ":jit_memory",
2523            ":ukernels_asm_aarch64",
2524            ":ukernels_neon",
2525            ":ukernels_neon_aarch64",
2526            ":ukernels_neon_dot_fp16arith",
2527            ":ukernels_neon_dot_fp16arith_aarch64",
2528            ":ukernels_neon_dot",
2529            ":ukernels_neon_dot_aarch64",
2530            ":ukernels_neon_fma",
2531            ":ukernels_neon_fp16",
2532            ":ukernels_neon_fp16arith",
2533            ":ukernels_neon_fp16arith_aarch64",
2534            ":ukernels_neon_v8",
2535            ":ukernels_neonfma_aarch64",
2536            ":ukernels_neonfma_i8mm",
2537        ],
2538    )
2539
2540    fb_xplat_cxx_library(
2541        name = "x86_and_x86_64_lib",
2542        apple_sdks = (IOS, MACOSX, APPLETVOS),
2543        labels = labels,
2544        preferred_linkage = "static",
2545        visibility = ["PUBLIC"],
2546        deps = [
2547            ":ukernels_avx",
2548            ":ukernels_avx2",
2549            ":ukernels_avx512",
2550            ":ukernels_avx512skx",
2551            ":ukernels_f16c",
2552            ":ukernels_fma3",
2553            ":ukernels_sse",
2554            ":ukernels_sse2",
2555            ":ukernels_sse41",
2556            ":ukernels_ssse3",
2557            ":ukernels_xop",
2558            ":ukernels_avx512vbmi",
2559            ":ukernels_avx512vnni",
2560            ":ukernels_avx512vnnigfni",
2561            # ":ukernels_avxvnni" Excluding avxvnni microkernels because they fail on older compilers
2562        ],
2563    )
2564
2565    fb_xplat_cxx_library(
2566        name = "x86_and_x86_64_lib_ovr_win32",
2567        apple_sdks = (IOS, MACOSX, APPLETVOS),
2568        labels = labels,
2569        preferred_linkage = "static",
2570        visibility = ["PUBLIC"],
2571        deps = [
2572            ":ukernels_avx2_ovr_win32",
2573            ":ukernels_avx512_ovr_win32",
2574            ":ukernels_avx512skx_ovr_win32",
2575            ":ukernels_avx_ovr_win32",
2576            ":ukernels_f16c_ovr_win32",
2577            ":ukernels_fma3_ovr_win32",
2578            ":ukernels_sse2_ovr_win32",
2579            ":ukernels_sse41_ovr_win32",
2580            ":ukernels_sse_ovr_win32",
2581            ":ukernels_ssse3_ovr_win32",
2582            ":ukernels_xop_ovr_win32",
2583            ":ukernels_avx512vbmi",
2584            ":ukernels_avx512vnni_ovr_win32",
2585            ":ukernels_avx512vnnigfni_ovr_win32",
2586            # ":ukernels_avxvnni_ovr_win32" Excluding avxvnni microkernels because they fail on older compilers
2587        ],
2588    )
2589
2590    fb_xplat_cxx_library(
2591        name = "arm_lib",
2592        apple_sdks = (IOS, MACOSX, APPLETVOS),
2593        labels = labels,
2594        preferred_linkage = "static",
2595        visibility = ["PUBLIC"],
2596        deps = [
2597            ":jit_memory",
2598            ":ukernels_armsimd32",
2599            ":ukernels_asm_aarch32",
2600            ":ukernels_asm_aarch64",
2601            ":ukernels_neon",
2602            ":ukernels_neon_aarch64",
2603            ":ukernels_neon_dot",
2604            ":ukernels_neon_dot_aarch64",
2605            ":ukernels_neon_dot_fp16arith",
2606            ":ukernels_neon_dot_fp16arith_aarch64",
2607            ":ukernels_neon_fma",
2608            ":ukernels_neon_fp16",
2609            ":ukernels_neon_fp16arith",
2610            ":ukernels_neon_fp16arith_aarch64",
2611            ":ukernels_neon_v8",
2612            ":ukernels_neonfma_aarch64",
2613            ":ukernels_neonfma_i8mm",
2614            ":ukernels_fp16arith",
2615        ],
2616    )
2617
2618    fb_xplat_cxx_library(
2619        name = "armv7_lib",
2620        apple_sdks = (IOS, MACOSX, APPLETVOS),
2621        labels = labels,
2622        preferred_linkage = "static",
2623        visibility = ["PUBLIC"],
2624        deps = [
2625            ":jit_memory",
2626            ":ukernels_asm_aarch32",
2627            ":ukernels_neon",
2628            ":ukernels_neon_dot",
2629            ":ukernels_neon_fma",
2630            ":ukernels_neon_v8",
2631        ],
2632    )
2633
2634    fb_xplat_cxx_library(
2635        name = "prod_ukernels",
2636        apple_sdks = (IOS, MACOSX, APPLETVOS),
2637        labels = labels,
2638        preferred_linkage = "static",
2639        visibility = ["PUBLIC"],
2640        deps = [
2641            ":ukernels_scalar",
2642        ] + select({
2643            "DEFAULT": [
2644                ":arm_lib",
2645                ":x86_and_x86_64_lib",
2646            ],
2647            "ovr_config//os:windows": [":x86_and_x86_64_lib_ovr_win32"] if XNNPACK_WINDOWS_AVX512F_ENABLED else [
2648                ":arm_lib",
2649                ":x86_and_x86_64_lib",
2650            ],
2651            # doesn't cover iphonesimulator-x86_64
2652            "ovr_config//runtime:arm64-linux-ubuntu-neon": [":arm64_lib"],
2653            "ovr_config//runtime:platform010": [":x86_and_x86_64_lib"],
2654        }),
2655    )
2656
2657    fb_xplat_cxx_library(
2658        name = "XNNPACK",
2659        apple_sdks = (IOS, MACOSX, APPLETVOS),
2660        labels = labels,
2661        deps = [
2662            ":subgraph",
2663            ":tables",
2664            ":prod_ukernels",
2665            third_party("cpuinfo"),
2666            third_party("pthreadpool"),
2667        ],
2668        exported_headers = {
2669            "xnnpack.h": "XNNPACK/include/xnnpack.h",
2670        },
2671        fbobjc_preprocessor_flags = [
2672            "-DXNN_PRIVATE=",
2673            "-DXNN_INTERNAL=",
2674        ],
2675        header_namespace = "",
2676        headers = subdir_glob([
2677            ("XNNPACK/src", "**/*.h"),
2678            ("XNNPACK/include", "**/*.h"),
2679        ]),
2680        platforms = (APPLE, ANDROID, CXX, WINDOWS),
2681        preferred_linkage = "static",
2682        preprocessor_flags = [
2683            "-DXNN_LOG_LEVEL=0",
2684            "-DXNN_NO_Q8_OPERATORS",
2685            "-DXNN_NO_F16_OPERATORS",
2686            "-DXNN_NO_NCHW_OPERATORS",
2687            "-DXNN_NO_QU8_OPERATORS",
2688            "-DXNN_NO_U8_OPERATORS",
2689            "-DXNN_NO_X32_OPERATORS",
2690            "-DXNN_NO_X8_OPERATORS",
2691            "-DXNN_ENABLE_MEMOPT",
2692            "-DXNN_ENABLE_SPARSE=0",
2693            "-DXNN_ENABLE_JIT=0",
2694            "-DXNN_ENABLE_ASSEMBLY",
2695            "-DXNN_ENABLE_GEMM_M_SPECIALIZATION",
2696            "-DXNN_ENABLE_ARM_DOTPROD",
2697            "-DXNN_ENABLE_CPUINFO",
2698            "-DXNN_ENABLE_ARM_I8MM=1",
2699            "-DXNN_ENABLE_ARM_FP16_VECTOR=1",
2700            "-DXNN_ENABLE_AVXVNNI=0",
2701        ],
2702        srcs = XNNPACK_SRCS + LOGGING_SRCS + OPERATOR_SRCS + [
2703            "XNNPACK/src/configs/hardware-config.c",
2704            "XNNPACK/src/microkernel-utils.c",
2705            "XNNPACK/src/operator-run.c",
2706            "XNNPACK/src/packing.c",
2707            "XNNPACK/src/cache.c",
2708            "XNNPACK/src/indirection.c",
2709            "XNNPACK/src/operator-utils.c",
2710            "XNNPACK/src/normalization.c",
2711            "XNNPACK/src/allocator.c",
2712            "XNNPACK/src/memory.c",
2713            "XNNPACK/src/mutex.c",
2714            "XNNPACK/src/microparams-init.c",
2715            "XNNPACK/src/operators/post-operation.c",
2716        ],
2717        visibility = ["PUBLIC"],
2718        windows_clang_compiler_flags_override = (WINDOWS_FLAGS + WINDOWS_CLANG_COMPILER_FLAGS) if XNNPACK_WINDOWS_AVX512F_ENABLED else WINDOWS_FLAGS,
2719        windows_compiler_flags_override = WINDOWS_FLAGS if XNNPACK_WINDOWS_AVX512F_ENABLED else [],
2720    )
2721