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