| load("//tools/build_defs:fb_xplat_cxx_library.bzl", "fb_xplat_cxx_library") |
| load("//tools/build_defs:fbsource_utils.bzl", "is_arvr_mode") |
| load("//tools/build_defs:glob_defs.bzl", "subdir_glob") |
| load("//tools/build_defs:platform_defs.bzl", "ANDROID", "APPLE", "APPLETVOS", "CXX", "IOS", "MACOSX", "WINDOWS") |
| load( |
| ":xnnpack_src_defs.bzl", |
| "JIT_SRCS", |
| "LOGGING_SRCS", |
| "OPERATOR_SRCS", |
| "SUBGRAPH_SRCS", |
| "TABLE_SRCS", |
| "XNNPACK_SRCS", |
| ) |
| load( |
| ":xnnpack_wrapper_defs.bzl", |
| "AARCH32_ASM_MICROKERNEL_SRCS", |
| "AARCH64_ASM_MICROKERNEL_SRCS", |
| "PROD_ARMSIMD32_MICROKERNEL_SRCS", |
| "PROD_AVX2_MICROKERNEL_SRCS", |
| "PROD_AVX512F_MICROKERNEL_SRCS", |
| "PROD_AVX512SKX_MICROKERNEL_SRCS", |
| "PROD_AVX512VBMI_MICROKERNEL_SRCS", |
| "PROD_AVX512VNNI_MICROKERNEL_SRCS", |
| "PROD_AVX512VNNIGFNI_MICROKERNEL_SRCS", |
| "PROD_AVXVNNI_MICROKERNEL_SRCS", |
| "PROD_AVX_MICROKERNEL_SRCS", |
| "PROD_F16C_MICROKERNEL_SRCS", |
| "PROD_FMA3_MICROKERNEL_SRCS", |
| "PROD_FP16ARITH_MICROKERNEL_SRCS", |
| "PROD_NEONDOTFP16ARITH_AARCH64_MICROKERNEL_SRCS", |
| "PROD_NEONDOTFP16ARITH_MICROKERNEL_SRCS", |
| "PROD_NEONDOT_AARCH64_MICROKERNEL_SRCS", |
| "PROD_NEONDOT_MICROKERNEL_SRCS", |
| "PROD_NEONFMA_MICROKERNEL_SRCS", |
| "PROD_NEONFP16ARITH_AARCH64_MICROKERNEL_SRCS", |
| "PROD_NEONFP16ARITH_MICROKERNEL_SRCS", |
| "PROD_NEONFP16_MICROKERNEL_SRCS", |
| "PROD_NEONI8MM_MICROKERNEL_SRCS", |
| "PROD_NEONV8_MICROKERNEL_SRCS", |
| "PROD_NEON_AARCH64_MICROKERNEL_SRCS", |
| "PROD_NEON_MICROKERNEL_SRCS", |
| "PROD_SCALAR_MICROKERNEL_SRCS", |
| "PROD_SSE2_MICROKERNEL_SRCS", |
| "PROD_SSE41_MICROKERNEL_SRCS", |
| "PROD_SSE_MICROKERNEL_SRCS", |
| "PROD_SSSE3_MICROKERNEL_SRCS", |
| "PROD_XOP_MICROKERNEL_SRCS", |
| ) |
| |
| # This defines XNNPACK targets for both fbsource BUCK and OSS BUCK |
| # Note that the file path is relative to the BUCK file that called from, not to this bzl file. |
| # So for fbsource build it points to xplat/third-party/XNNPACK/XNNPACK, |
| # and for OSS it points to pytorch/third_party/XNNPACK |
| def define_xnnpack(third_party, labels = [], XNNPACK_WINDOWS_AVX512F_ENABLED = False): |
| WINDOWS_FLAGS = [ |
| "/D__x86_64__", |
| "/EHsc", |
| "/wd4090", # 'function': different 'const' qualifiers |
| "/wd4146", # unary minus operator applied to unsigned type, result still unsigned |
| ] + ([ |
| "/D__AVX512F__", # needed to avoid linkage errors |
| "-mavx2", |
| "/D__builtin_clz=__lzcnt", # Intrinsics are spelled differently in MSVC |
| "/Drestrict=", # MSVC doesn't understand [restrict XNN_NUM_ELEMENTS(N)] syntax |
| ] if XNNPACK_WINDOWS_AVX512F_ENABLED else []) |
| |
| WINDOWS_CLANG_COMPILER_FLAGS = [ |
| "-Wno-error", |
| "-Wno-error=undef", |
| "-Wno-error=incompatible-pointer-types", |
| "-Wno-error=incompatible-pointer-types-discards-qualifiers", |
| ] |
| |
| fb_xplat_cxx_library( |
| name = "interface", |
| header_namespace = "", |
| exported_headers = { |
| "xnnpack.h": "XNNPACK/include/xnnpack.h", |
| }, |
| apple_sdks = (IOS, MACOSX, APPLETVOS), |
| labels = labels, |
| preprocessor_flags = [ |
| "-DXNN_LOG_LEVEL=0", |
| ], |
| visibility = ["PUBLIC"], |
| exported_deps = [ |
| # Dependency only on pthreadpool interface |
| third_party("pthreadpool_header"), |
| ], |
| ) |
| |
| fb_xplat_cxx_library( |
| name = "subgraph", |
| srcs = SUBGRAPH_SRCS, |
| headers = subdir_glob([ |
| ("XNNPACK/src", "**/*.h"), |
| ]), |
| header_namespace = "", |
| apple_sdks = (IOS, MACOSX, APPLETVOS), |
| compiler_flags = [ |
| "-O2", |
| ], |
| fbobjc_preprocessor_flags = [ |
| "-DXNN_PRIVATE=", |
| "-DXNN_INTERNAL=", |
| ], |
| labels = labels, |
| preferred_linkage = "static", |
| preprocessor_flags = [ |
| "-DXNN_LOG_LEVEL=0", |
| "-DXNN_ENABLE_JIT=0", |
| "-DXNN_ENABLE_SPARSE=0", |
| "-DXNN_ENABLE_MEMOPT", |
| ], |
| visibility = ["PUBLIC"], |
| windows_clang_compiler_flags_override = WINDOWS_FLAGS + WINDOWS_CLANG_COMPILER_FLAGS, |
| windows_compiler_flags_override = WINDOWS_FLAGS, |
| deps = [ |
| ":interface", |
| third_party("FP16"), |
| third_party("FXdiv"), |
| third_party("clog"), |
| ], |
| ) |
| |
| fb_xplat_cxx_library( |
| name = "tables", |
| srcs = TABLE_SRCS, |
| headers = subdir_glob([ |
| ("XNNPACK/src", "**/*.h"), |
| ]), |
| header_namespace = "", |
| apple_sdks = (IOS, MACOSX, APPLETVOS), |
| compiler_flags = [ |
| "-O2", |
| ], |
| fbobjc_preprocessor_flags = [ |
| "-DXNN_PRIVATE=", |
| "-DXNN_INTERNAL=", |
| ], |
| labels = labels, |
| preferred_linkage = "static", |
| preprocessor_flags = [ |
| "-DXNN_LOG_LEVEL=0", |
| ], |
| visibility = ["PUBLIC"], |
| windows_clang_compiler_flags_override = WINDOWS_FLAGS + WINDOWS_CLANG_COMPILER_FLAGS, |
| windows_compiler_flags_override = WINDOWS_FLAGS, |
| deps = [ |
| ":interface", |
| third_party("FP16"), |
| third_party("FXdiv"), |
| third_party("clog"), |
| ], |
| ) |
| |
| fb_xplat_cxx_library( |
| name = "jit_memory", |
| # srcs have to include HOT_SRCS to be able to build on ARVR |
| srcs = JIT_SRCS, |
| headers = subdir_glob([ |
| ("XNNPACK/src", "**/*.h"), |
| ]), |
| header_namespace = "", |
| apple_sdks = (IOS, MACOSX, APPLETVOS), |
| compiler_flags = [ |
| "-Oz", |
| ], |
| fbobjc_preprocessor_flags = [ |
| "-DXNN_PRIVATE=", |
| "-DXNN_INTERNAL=", |
| ], |
| labels = labels, |
| platforms = (APPLE, ANDROID, CXX, WINDOWS), |
| preferred_linkage = "static", |
| preprocessor_flags = [ |
| "-DXNN_LOG_LEVEL=0", |
| ], |
| visibility = ["PUBLIC"], |
| windows_clang_compiler_flags_override = WINDOWS_FLAGS + WINDOWS_CLANG_COMPILER_FLAGS, |
| windows_compiler_flags_override = WINDOWS_FLAGS, |
| deps = [ |
| ":interface", |
| third_party("clog"), |
| ], |
| ) |
| |
| fb_xplat_cxx_library( |
| name = "ukernels_scalar", |
| srcs = PROD_SCALAR_MICROKERNEL_SRCS, |
| headers = subdir_glob([ |
| ("XNNPACK/src", "**/*.c"), |
| ("XNNPACK/src", "**/*.h"), |
| ]), |
| header_namespace = "", |
| apple_sdks = (IOS, MACOSX, APPLETVOS), |
| compiler_flags = [ |
| "-O2", |
| "-fno-fast-math", |
| "-fno-math-errno", |
| "-ffp-contract=off", |
| ], |
| fbobjc_preprocessor_flags = [ |
| "-DXNN_PRIVATE=", |
| "-DXNN_INTERNAL=", |
| ], |
| labels = labels, |
| preferred_linkage = "static", |
| preprocessor_flags = [ |
| "-DXNN_LOG_LEVEL=0", |
| ], |
| visibility = ["PUBLIC"], |
| windows_clang_compiler_flags_override = WINDOWS_FLAGS + WINDOWS_CLANG_COMPILER_FLAGS, |
| windows_compiler_flags_override = WINDOWS_FLAGS, |
| deps = [ |
| ":interface", |
| third_party("FP16"), |
| third_party("FXdiv"), |
| ], |
| ) |
| |
| fb_xplat_cxx_library( |
| name = "ukernels_sse", |
| srcs = PROD_SSE_MICROKERNEL_SRCS if is_arvr_mode() else [], |
| headers = subdir_glob([ |
| ("XNNPACK/src", "**/*.c"), |
| ("XNNPACK/src", "**/*.h"), |
| ]), |
| header_namespace = "", |
| apple_sdks = (IOS, MACOSX, APPLETVOS), |
| compiler_flags = [ |
| "-O2", |
| ], |
| fbobjc_preprocessor_flags = [ |
| "-DXNN_PRIVATE=", |
| "-DXNN_INTERNAL=", |
| ], |
| labels = labels, |
| platform_compiler_flags = [ |
| ( |
| "x86", |
| [ |
| "-msse", |
| ], |
| ), |
| ], |
| platform_srcs = ([ |
| ( |
| "x86|x86_64|platform009|platform010", |
| PROD_SSE_MICROKERNEL_SRCS, |
| ), |
| ] if not is_arvr_mode() else []), |
| preferred_linkage = "static", |
| preprocessor_flags = [ |
| "-DXNN_LOG_LEVEL=0", |
| ], |
| visibility = ["PUBLIC"], |
| windows_clang_compiler_flags_override = WINDOWS_FLAGS + WINDOWS_CLANG_COMPILER_FLAGS + ["-msse"], |
| windows_compiler_flags_override = WINDOWS_FLAGS + ["-msse"], |
| deps = [ |
| ":interface", |
| ], |
| ) |
| |
| fb_xplat_cxx_library( |
| name = "ukernels_sse_ovr_win32", |
| headers = subdir_glob([ |
| ("XNNPACK/src", "**/*.c"), |
| ("XNNPACK/src", "**/*.h"), |
| ]), |
| header_namespace = "", |
| apple_sdks = (IOS, MACOSX, APPLETVOS), |
| compiler_flags = [ |
| "-O2", |
| ], |
| fbobjc_preprocessor_flags = [ |
| "-DXNN_PRIVATE=", |
| "-DXNN_INTERNAL=", |
| ], |
| labels = labels, |
| platform_compiler_flags = [ |
| ( |
| "x86", |
| [ |
| "-msse", |
| ], |
| ), |
| ], |
| preferred_linkage = "static", |
| preprocessor_flags = [ |
| "-DXNN_LOG_LEVEL=0", |
| ], |
| visibility = ["PUBLIC"], |
| windows_clang_compiler_flags_override = WINDOWS_FLAGS + WINDOWS_CLANG_COMPILER_FLAGS + ["-msse"], |
| windows_compiler_flags_override = WINDOWS_FLAGS + ["-msse"], |
| windows_srcs = PROD_SSE_MICROKERNEL_SRCS, |
| deps = [ |
| ":interface", |
| ], |
| ) |
| |
| fb_xplat_cxx_library( |
| name = "ukernels_sse2", |
| srcs = PROD_SSE2_MICROKERNEL_SRCS if is_arvr_mode() else [], |
| headers = subdir_glob([ |
| ("XNNPACK/src", "**/*.c"), |
| ("XNNPACK/src", "**/*.h"), |
| ]), |
| header_namespace = "", |
| apple_sdks = (IOS, MACOSX, APPLETVOS), |
| compiler_flags = [ |
| "-O2", |
| ], |
| fbobjc_preprocessor_flags = [ |
| "-DXNN_PRIVATE=", |
| "-DXNN_INTERNAL=", |
| ], |
| labels = labels, |
| platform_compiler_flags = [ |
| ( |
| "x86", |
| [ |
| "-msse2", |
| ], |
| ), |
| ], |
| platform_srcs = ([ |
| ( |
| "x86|x86_64|platform009|platform010", |
| PROD_SSE2_MICROKERNEL_SRCS, |
| ), |
| ] if not is_arvr_mode() else []), |
| preferred_linkage = "static", |
| preprocessor_flags = [ |
| "-DXNN_LOG_LEVEL=0", |
| ], |
| visibility = ["PUBLIC"], |
| windows_clang_compiler_flags_override = WINDOWS_FLAGS + WINDOWS_CLANG_COMPILER_FLAGS + ["-msse2"], |
| windows_compiler_flags_override = WINDOWS_FLAGS + ["-msse2"], |
| deps = [ |
| ":interface", |
| third_party("FP16"), |
| ], |
| ) |
| |
| fb_xplat_cxx_library( |
| name = "ukernels_sse2_ovr_win32", |
| headers = subdir_glob([ |
| ("XNNPACK/src", "**/*.c"), |
| ("XNNPACK/src", "**/*.h"), |
| ]), |
| header_namespace = "", |
| apple_sdks = (IOS, MACOSX, APPLETVOS), |
| compiler_flags = [ |
| "-O2", |
| ], |
| fbobjc_preprocessor_flags = [ |
| "-DXNN_PRIVATE=", |
| "-DXNN_INTERNAL=", |
| ], |
| labels = labels, |
| platform_compiler_flags = [ |
| ( |
| "x86", |
| [ |
| "-msse2", |
| ], |
| ), |
| ], |
| preferred_linkage = "static", |
| preprocessor_flags = [ |
| "-DXNN_LOG_LEVEL=0", |
| ], |
| visibility = ["PUBLIC"], |
| windows_clang_compiler_flags_override = WINDOWS_FLAGS + WINDOWS_CLANG_COMPILER_FLAGS + ["-msse2"], |
| windows_compiler_flags_override = WINDOWS_FLAGS + ["-msse2"], |
| windows_srcs = PROD_SSE2_MICROKERNEL_SRCS, |
| deps = [ |
| ":interface", |
| third_party("FP16"), |
| ], |
| ) |
| |
| fb_xplat_cxx_library( |
| name = "ukernels_ssse3", |
| srcs = PROD_SSSE3_MICROKERNEL_SRCS if is_arvr_mode() else [], |
| headers = subdir_glob([ |
| ("XNNPACK/src", "**/*.c"), |
| ("XNNPACK/src", "**/*.h"), |
| ]), |
| header_namespace = "", |
| apple_sdks = (IOS, MACOSX, APPLETVOS), |
| compiler_flags = [ |
| "-O2", |
| ], |
| fbobjc_preprocessor_flags = [ |
| "-DXNN_PRIVATE=", |
| "-DXNN_INTERNAL=", |
| ], |
| labels = labels, |
| platform_compiler_flags = [ |
| ( |
| "x86", |
| [ |
| "-mssse3", |
| ], |
| ), |
| ], |
| platform_srcs = ([ |
| ( |
| "x86|x86_64|platform009|platform010", |
| PROD_SSSE3_MICROKERNEL_SRCS, |
| ), |
| ] if not is_arvr_mode() else []), |
| preferred_linkage = "static", |
| preprocessor_flags = [ |
| "-DXNN_LOG_LEVEL=0", |
| ], |
| visibility = ["PUBLIC"], |
| windows_clang_compiler_flags_override = WINDOWS_FLAGS + WINDOWS_CLANG_COMPILER_FLAGS + ["-mssse3"], |
| windows_compiler_flags_override = WINDOWS_FLAGS + ["-mssse3"], |
| deps = [ |
| ":interface", |
| third_party("FP16"), |
| ], |
| ) |
| |
| fb_xplat_cxx_library( |
| name = "ukernels_ssse3_ovr_win32", |
| headers = subdir_glob([ |
| ("XNNPACK/src", "**/*.c"), |
| ("XNNPACK/src", "**/*.h"), |
| ]), |
| header_namespace = "", |
| apple_sdks = (IOS, MACOSX, APPLETVOS), |
| compiler_flags = [ |
| "-O2", |
| ], |
| fbobjc_preprocessor_flags = [ |
| "-DXNN_PRIVATE=", |
| "-DXNN_INTERNAL=", |
| ], |
| labels = labels, |
| platform_compiler_flags = [ |
| ( |
| "x86", |
| [ |
| "-mssse3", |
| ], |
| ), |
| ], |
| preferred_linkage = "static", |
| preprocessor_flags = [ |
| "-DXNN_LOG_LEVEL=0", |
| ], |
| visibility = ["PUBLIC"], |
| windows_clang_compiler_flags_override = WINDOWS_FLAGS + WINDOWS_CLANG_COMPILER_FLAGS + ["-mssse3"], |
| windows_compiler_flags_override = WINDOWS_FLAGS + ["-mssse3"], |
| windows_srcs = PROD_SSSE3_MICROKERNEL_SRCS, |
| deps = [ |
| ":interface", |
| third_party("FP16"), |
| ], |
| ) |
| |
| fb_xplat_cxx_library( |
| name = "ukernels_sse41", |
| srcs = PROD_SSE41_MICROKERNEL_SRCS if is_arvr_mode() else [], |
| headers = subdir_glob([ |
| ("XNNPACK/src", "**/*.c"), |
| ("XNNPACK/src", "**/*.h"), |
| ]), |
| header_namespace = "", |
| apple_sdks = (IOS, MACOSX, APPLETVOS), |
| compiler_flags = [ |
| "-O2", |
| ], |
| fbobjc_preprocessor_flags = [ |
| "-DXNN_PRIVATE=", |
| "-DXNN_INTERNAL=", |
| ], |
| labels = labels, |
| platform_compiler_flags = [ |
| ( |
| "x86", |
| [ |
| "-msse4.1", |
| ], |
| ), |
| ], |
| platform_srcs = ([ |
| ( |
| "x86|x86_64|platform009|platform010", |
| PROD_SSE41_MICROKERNEL_SRCS, |
| ), |
| ] if not is_arvr_mode() else []), |
| preferred_linkage = "static", |
| preprocessor_flags = [ |
| "-DXNN_LOG_LEVEL=0", |
| ], |
| visibility = ["PUBLIC"], |
| windows_clang_compiler_flags_override = WINDOWS_FLAGS + WINDOWS_CLANG_COMPILER_FLAGS + ["-msse4.1"], |
| windows_compiler_flags_override = WINDOWS_FLAGS + ["-msse4.1"], |
| deps = [ |
| ":interface", |
| third_party("FP16"), |
| ], |
| ) |
| |
| fb_xplat_cxx_library( |
| name = "ukernels_sse41_ovr_win32", |
| headers = subdir_glob([ |
| ("XNNPACK/src", "**/*.c"), |
| ("XNNPACK/src", "**/*.h"), |
| ]), |
| header_namespace = "", |
| apple_sdks = (IOS, MACOSX, APPLETVOS), |
| compiler_flags = [ |
| "-O2", |
| ], |
| fbobjc_preprocessor_flags = [ |
| "-DXNN_PRIVATE=", |
| "-DXNN_INTERNAL=", |
| ], |
| labels = labels, |
| platform_compiler_flags = [ |
| ( |
| "x86", |
| [ |
| "-msse4.1", |
| ], |
| ), |
| ], |
| preferred_linkage = "static", |
| preprocessor_flags = [ |
| "-DXNN_LOG_LEVEL=0", |
| ], |
| visibility = ["PUBLIC"], |
| windows_clang_compiler_flags_override = WINDOWS_FLAGS + WINDOWS_CLANG_COMPILER_FLAGS + ["-msse4.1"], |
| windows_compiler_flags_override = WINDOWS_FLAGS + ["-msse4.1"], |
| windows_srcs = PROD_SSE41_MICROKERNEL_SRCS, |
| deps = [ |
| ":interface", |
| third_party("FP16"), |
| ], |
| ) |
| |
| fb_xplat_cxx_library( |
| name = "ukernels_avx", |
| srcs = PROD_AVX_MICROKERNEL_SRCS if is_arvr_mode() else [], |
| headers = subdir_glob([ |
| ("XNNPACK/src", "**/*.h"), |
| ("XNNPACK/src", "**/*.c"), |
| ]), |
| header_namespace = "", |
| apple_sdks = (IOS, MACOSX, APPLETVOS), |
| compiler_flags = [ |
| "-O2", |
| ] + select({ |
| "DEFAULT": [], |
| "ovr_config//cpu:x86_32": [ |
| "-mavx", |
| ], |
| "ovr_config//cpu:x86_64": [ |
| "-mavx", |
| ], |
| }), |
| fbobjc_preprocessor_flags = [ |
| "-DXNN_PRIVATE=", |
| "-DXNN_INTERNAL=", |
| ], |
| labels = labels, |
| platform_compiler_flags = [ |
| ( |
| "x86|x86_64|platform009|platform010", |
| [ |
| "-mavx", |
| ], |
| ), |
| ], |
| platform_srcs = ([ |
| ( |
| "x86|x86_64|platform009|platform010", |
| PROD_AVX_MICROKERNEL_SRCS, |
| ), |
| ] if not is_arvr_mode() else []), |
| preferred_linkage = "static", |
| preprocessor_flags = [ |
| "-DXNN_LOG_LEVEL=0", |
| ], |
| visibility = ["PUBLIC"], |
| windows_clang_compiler_flags_override = WINDOWS_FLAGS + WINDOWS_CLANG_COMPILER_FLAGS + ["-mavx"], |
| windows_compiler_flags_override = WINDOWS_FLAGS + ["-mavx"], |
| deps = [ |
| ":interface", |
| ], |
| ) |
| |
| fb_xplat_cxx_library( |
| name = "ukernels_avx_ovr_win32", |
| headers = subdir_glob([ |
| ("XNNPACK/src", "**/*.h"), |
| ("XNNPACK/src", "**/*.c"), |
| ]), |
| header_namespace = "", |
| apple_sdks = (IOS, MACOSX, APPLETVOS), |
| compiler_flags = [ |
| "-O2", |
| "-mavx", |
| ], |
| fbobjc_preprocessor_flags = [ |
| "-DXNN_PRIVATE=", |
| "-DXNN_INTERNAL=", |
| ], |
| labels = labels, |
| platform_compiler_flags = [ |
| ( |
| "x86", |
| [ |
| "-mavx", |
| ], |
| ), |
| ], |
| preferred_linkage = "static", |
| preprocessor_flags = [ |
| "-DXNN_LOG_LEVEL=0", |
| ], |
| visibility = ["PUBLIC"], |
| windows_clang_compiler_flags_override = WINDOWS_FLAGS + WINDOWS_CLANG_COMPILER_FLAGS + ["-mavx"], |
| windows_compiler_flags_override = WINDOWS_FLAGS + ["-mavx"], |
| windows_srcs = PROD_AVX_MICROKERNEL_SRCS, |
| deps = [ |
| ":interface", |
| ], |
| ) |
| |
| fb_xplat_cxx_library( |
| name = "ukernels_avx512vnnigfni", |
| srcs = PROD_AVX512VNNIGFNI_MICROKERNEL_SRCS if is_arvr_mode() else [], |
| headers = subdir_glob([ |
| ("XNNPACK/src", "**/*.h"), |
| ("XNNPACK/src", "**/*.c"), |
| ]), |
| header_namespace = "", |
| apple_sdks = (IOS, MACOSX, APPLETVOS), |
| compiler_flags = [ |
| "-O2", |
| ] + select({ |
| "DEFAULT": [], |
| "ovr_config//cpu:x86_32": [ |
| "-mavx", |
| "-mgfni", |
| "-mavx512vl", |
| "-mavx512vnni", |
| "-mavx512bw", |
| "-mavx512dq", |
| ], |
| "ovr_config//cpu:x86_64": [ |
| "-mavx", |
| "-mgfni", |
| "-mavx512vl", |
| "-mavx512vnni", |
| "-mavx512bw", |
| "-mavx512dq", |
| ], |
| }), |
| fbobjc_preprocessor_flags = [ |
| "-DXNN_PRIVATE=", |
| "-DXNN_INTERNAL=", |
| ], |
| labels = labels, |
| platform_compiler_flags = [ |
| ( |
| "x86|x86_64|platform009|platform010", |
| [ |
| "-mavx512f", |
| "-mavx512cd", |
| "-mavx512bw", |
| "-mavx512dq", |
| "-mavx512vl", |
| "-mavx512vnni", |
| "-mgfni", |
| ], |
| ), |
| ], |
| platform_srcs = ([ |
| ( |
| "x86|x86_64|platform009|platform010", |
| PROD_AVX512VNNIGFNI_MICROKERNEL_SRCS, |
| ), |
| ] if not is_arvr_mode() else []), |
| preferred_linkage = "static", |
| preprocessor_flags = [ |
| "-DXNN_LOG_LEVEL=0", |
| ], |
| visibility = ["PUBLIC"], |
| windows_clang_compiler_flags_override = WINDOWS_FLAGS + WINDOWS_CLANG_COMPILER_FLAGS + ["-mavx"], |
| windows_compiler_flags_override = WINDOWS_FLAGS + ["-mavx"], |
| deps = [ |
| ":interface", |
| ], |
| ) |
| |
| fb_xplat_cxx_library( |
| name = "ukernels_avx512vnnigfni_ovr_win32", |
| headers = subdir_glob([ |
| ("XNNPACK/src", "**/*.h"), |
| ("XNNPACK/src", "**/*.c"), |
| ]), |
| header_namespace = "", |
| apple_sdks = (IOS, MACOSX, APPLETVOS), |
| compiler_flags = [ |
| "-O2", |
| ], |
| fbobjc_preprocessor_flags = [ |
| "-DXNN_PRIVATE=", |
| "-DXNN_INTERNAL=", |
| ], |
| labels = labels, |
| platform_compiler_flags = [ |
| ( |
| "x86|x86_64|platform009|platform010", |
| [ |
| "-mavx512f", |
| "-mavx512cd", |
| "-mavx512bw", |
| "-mavx512dq", |
| "-mavx512vl", |
| "-mavx512vnni", |
| "-mgfni", |
| ], |
| ), |
| ], |
| preferred_linkage = "static", |
| preprocessor_flags = [ |
| "-DXNN_LOG_LEVEL=0", |
| ], |
| visibility = ["PUBLIC"], |
| windows_clang_compiler_flags_override = WINDOWS_FLAGS + WINDOWS_CLANG_COMPILER_FLAGS + ["-mavx"], |
| windows_compiler_flags_override = WINDOWS_FLAGS + ["-mavx"], |
| windows_srcs = PROD_AVX512VNNIGFNI_MICROKERNEL_SRCS, |
| deps = [ |
| ":interface", |
| ], |
| ) |
| |
| fb_xplat_cxx_library( |
| name = "ukernels_avx512vnni", |
| srcs = PROD_AVX512VNNI_MICROKERNEL_SRCS if is_arvr_mode() else [], |
| headers = subdir_glob([ |
| ("XNNPACK/src", "**/*.h"), |
| ("XNNPACK/src", "**/*.c"), |
| ]), |
| header_namespace = "", |
| apple_sdks = (IOS, MACOSX, APPLETVOS), |
| compiler_flags = [ |
| "-O2", |
| ] + select({ |
| "DEFAULT": [], |
| "ovr_config//cpu:x86_32": [ |
| "-mavx", |
| ], |
| "ovr_config//cpu:x86_64": [ |
| "-mavx", |
| ], |
| }), |
| fbobjc_preprocessor_flags = [ |
| "-DXNN_PRIVATE=", |
| "-DXNN_INTERNAL=", |
| ], |
| labels = labels, |
| platform_compiler_flags = [ |
| ( |
| "x86|x86_64|platform009|platform010", |
| [ |
| "-mavx512f", |
| "-mavx512cd", |
| "-mavx512bw", |
| "-mavx512dq", |
| "-mavx512vl", |
| "-mavx512vnni", |
| ], |
| ), |
| ], |
| platform_srcs = ([ |
| ( |
| "x86|x86_64|platform009|platform010", |
| PROD_AVX512VNNI_MICROKERNEL_SRCS, |
| ), |
| ] if not is_arvr_mode() else []), |
| preferred_linkage = "static", |
| preprocessor_flags = [ |
| "-DXNN_LOG_LEVEL=0", |
| ], |
| visibility = ["PUBLIC"], |
| windows_clang_compiler_flags_override = WINDOWS_FLAGS + WINDOWS_CLANG_COMPILER_FLAGS + ["-mavx"], |
| windows_compiler_flags_override = WINDOWS_FLAGS + ["-mavx"], |
| deps = [ |
| ":interface", |
| ], |
| ) |
| |
| fb_xplat_cxx_library( |
| name = "ukernels_avx512vnni_ovr_win32", |
| headers = subdir_glob([ |
| ("XNNPACK/src", "**/*.h"), |
| ("XNNPACK/src", "**/*.c"), |
| ]), |
| header_namespace = "", |
| apple_sdks = (IOS, MACOSX, APPLETVOS), |
| compiler_flags = [ |
| "-O2", |
| ], |
| fbobjc_preprocessor_flags = [ |
| "-DXNN_PRIVATE=", |
| "-DXNN_INTERNAL=", |
| ], |
| labels = labels, |
| platform_compiler_flags = [ |
| ( |
| "x86|x86_64|platform009|platform010", |
| [ |
| "-mavx512f", |
| "-mavx512cd", |
| "-mavx512bw", |
| "-mavx512dq", |
| "-mavx512vl", |
| "-mavx512vnni", |
| ], |
| ), |
| ], |
| preferred_linkage = "static", |
| preprocessor_flags = [ |
| "-DXNN_LOG_LEVEL=0", |
| ], |
| visibility = ["PUBLIC"], |
| windows_clang_compiler_flags_override = WINDOWS_FLAGS + WINDOWS_CLANG_COMPILER_FLAGS + ["-mavx"], |
| windows_compiler_flags_override = WINDOWS_FLAGS + ["-mavx"], |
| windows_srcs = PROD_AVX512VNNI_MICROKERNEL_SRCS, |
| deps = [ |
| ":interface", |
| ], |
| ) |
| |
| fb_xplat_cxx_library( |
| name = "ukernels_avxvnni", |
| srcs = PROD_AVXVNNI_MICROKERNEL_SRCS if is_arvr_mode() else [], |
| headers = subdir_glob([ |
| ("XNNPACK/src", "**/*.h"), |
| ("XNNPACK/src", "**/*.c"), |
| ]), |
| header_namespace = "", |
| apple_sdks = (IOS, MACOSX, APPLETVOS), |
| compiler_flags = [ |
| "-O2", |
| "-mavxvnni", |
| "-mf16c", |
| "-mfma", |
| ], |
| fbobjc_preprocessor_flags = [ |
| "-DXNN_PRIVATE=", |
| "-DXNN_INTERNAL=", |
| ], |
| labels = labels, |
| platform_compiler_flags = [ |
| ( |
| "x86|x86_64|platform009|platform010", |
| [ |
| "-mavx2", |
| "-mavxvnni", |
| "-mf16c", |
| "-mfma", |
| ], |
| ), |
| ], |
| platform_srcs = ([ |
| ( |
| "x86|x86_64|platform009|platform010", |
| PROD_AVXVNNI_MICROKERNEL_SRCS, |
| ), |
| ] if not is_arvr_mode() else []), |
| preferred_linkage = "static", |
| preprocessor_flags = [ |
| "-DXNN_LOG_LEVEL=0", |
| ], |
| visibility = ["PUBLIC"], |
| windows_clang_compiler_flags_override = WINDOWS_FLAGS + WINDOWS_CLANG_COMPILER_FLAGS + ["-mavx"], |
| windows_compiler_flags_override = WINDOWS_FLAGS + ["-mavx"], |
| deps = [ |
| ":interface", |
| ], |
| ) |
| |
| fb_xplat_cxx_library( |
| name = "ukernels_avxvnni_ovr_win32", |
| headers = subdir_glob([ |
| ("XNNPACK/src", "**/*.h"), |
| ("XNNPACK/src", "**/*.c"), |
| ]), |
| header_namespace = "", |
| apple_sdks = (IOS, MACOSX, APPLETVOS), |
| compiler_flags = [ |
| "-O2", |
| ], |
| fbobjc_preprocessor_flags = [ |
| "-DXNN_PRIVATE=", |
| "-DXNN_INTERNAL=", |
| ], |
| labels = labels, |
| platform_compiler_flags = [ |
| ( |
| "x86|x86_64|platform009|platform010", |
| [ |
| "-mavx2", |
| "-mavxvnni", |
| ], |
| ), |
| ], |
| preferred_linkage = "static", |
| preprocessor_flags = [ |
| "-DXNN_LOG_LEVEL=0", |
| ], |
| visibility = ["PUBLIC"], |
| windows_clang_compiler_flags_override = WINDOWS_FLAGS + WINDOWS_CLANG_COMPILER_FLAGS + ["-mavx"], |
| windows_compiler_flags_override = WINDOWS_FLAGS + ["-mavx"], |
| windows_srcs = PROD_AVXVNNI_MICROKERNEL_SRCS, |
| deps = [ |
| ":interface", |
| ], |
| ) |
| |
| fb_xplat_cxx_library( |
| name = "ukernels_f16c", |
| srcs = PROD_F16C_MICROKERNEL_SRCS if is_arvr_mode() else [], |
| headers = subdir_glob([ |
| ("XNNPACK/src", "**/*.h"), |
| ("XNNPACK/src", "**/*.c"), |
| ]), |
| header_namespace = "", |
| apple_sdks = (IOS, MACOSX, APPLETVOS), |
| compiler_flags = [ |
| "-O2", |
| ] + select({ |
| "DEFAULT": [], |
| "ovr_config//cpu:x86_32": [ |
| "-mf16c", |
| ], |
| "ovr_config//cpu:x86_64": [ |
| "-mf16c", |
| ], |
| }), |
| fbobjc_preprocessor_flags = [ |
| "-DXNN_PRIVATE=", |
| "-DXNN_INTERNAL=", |
| ], |
| labels = labels, |
| platform_compiler_flags = [ |
| ( |
| "x86|x86_64|platform009|platform010", |
| [ |
| "-mf16c", |
| ], |
| ), |
| ], |
| platform_srcs = ([ |
| ( |
| "x86|x86_64|platform009|platform010", |
| PROD_F16C_MICROKERNEL_SRCS, |
| ), |
| ] if not is_arvr_mode() else []), |
| platforms = (APPLE, ANDROID, CXX, WINDOWS), |
| preferred_linkage = "static", |
| preprocessor_flags = [ |
| "-DXNN_LOG_LEVEL=0", |
| ], |
| visibility = ["PUBLIC"], |
| windows_clang_compiler_flags_override = WINDOWS_FLAGS + WINDOWS_CLANG_COMPILER_FLAGS + ["-mf16c"], |
| windows_compiler_flags_override = WINDOWS_FLAGS + ["-mf16c"], |
| deps = [ |
| ":interface", |
| ], |
| ) |
| |
| fb_xplat_cxx_library( |
| name = "ukernels_f16c_ovr_win32", |
| headers = subdir_glob([ |
| ("XNNPACK/src", "**/*.h"), |
| ("XNNPACK/src", "**/*.c"), |
| ]), |
| header_namespace = "", |
| apple_sdks = (IOS, MACOSX, APPLETVOS), |
| compiler_flags = [ |
| "-O2", |
| "-mf16c", |
| ], |
| fbobjc_preprocessor_flags = [ |
| "-DXNN_PRIVATE=", |
| "-DXNN_INTERNAL=", |
| ], |
| labels = labels, |
| platform_compiler_flags = [ |
| ( |
| "x86", |
| [ |
| "-mf16c", |
| ], |
| ), |
| ], |
| platforms = (APPLE, ANDROID, CXX, WINDOWS), |
| preferred_linkage = "static", |
| preprocessor_flags = [ |
| "-DXNN_LOG_LEVEL=0", |
| ], |
| visibility = ["PUBLIC"], |
| windows_clang_compiler_flags_override = WINDOWS_FLAGS + WINDOWS_CLANG_COMPILER_FLAGS + ["-mf16c"], |
| windows_compiler_flags_override = WINDOWS_FLAGS + ["-mf16c"], |
| windows_srcs = PROD_F16C_MICROKERNEL_SRCS, |
| deps = [ |
| ":interface", |
| ], |
| ) |
| |
| fb_xplat_cxx_library( |
| name = "ukernels_xop", |
| srcs = PROD_XOP_MICROKERNEL_SRCS if is_arvr_mode() else [], |
| headers = subdir_glob([ |
| ("XNNPACK/src", "**/*.h"), |
| ("XNNPACK/src", "**/*.c"), |
| ]), |
| header_namespace = "", |
| apple_sdks = (IOS, MACOSX, APPLETVOS), |
| compiler_flags = [ |
| "-O2", |
| ] + select({ |
| "DEFAULT": [], |
| "ovr_config//cpu:x86_32": [ |
| "-mxop", |
| ], |
| "ovr_config//cpu:x86_64": [ |
| "-mxop", |
| ], |
| }), |
| platform_compiler_flags = [ |
| ( |
| "x86|x86_64|platform009|platform010", |
| [ |
| "-mxop", |
| ], |
| ), |
| ], |
| fbobjc_preprocessor_flags = [ |
| "-DXNN_PRIVATE=", |
| "-DXNN_INTERNAL=", |
| ], |
| labels = labels, |
| platform_preprocessor_flags = [ |
| ( |
| "windows-x86_64", |
| [ |
| "-Drestrict=", |
| ], |
| ), |
| ], |
| platform_srcs = ([ |
| ( |
| "x86|x86_64|platform009|platform010", |
| PROD_XOP_MICROKERNEL_SRCS, |
| ), |
| ] if not is_arvr_mode() else []), |
| preferred_linkage = "static", |
| preprocessor_flags = [ |
| "-DXNN_LOG_LEVEL=0", |
| ], |
| visibility = ["PUBLIC"], |
| windows_clang_compiler_flags_override = WINDOWS_FLAGS + WINDOWS_CLANG_COMPILER_FLAGS + ["-mxop"], |
| windows_compiler_flags_override = WINDOWS_FLAGS + ["-mxop"], |
| deps = [ |
| ":interface", |
| ], |
| ) |
| |
| fb_xplat_cxx_library( |
| name = "ukernels_xop_ovr_win32", |
| headers = subdir_glob([ |
| ("XNNPACK/src", "**/*.h"), |
| ("XNNPACK/src", "**/*.c"), |
| ]), |
| header_namespace = "", |
| apple_sdks = (IOS, MACOSX, APPLETVOS), |
| compiler_flags = [ |
| "-O2", |
| "-mxop", |
| ], |
| fbobjc_preprocessor_flags = [ |
| "-DXNN_PRIVATE=", |
| "-DXNN_INTERNAL=", |
| ], |
| labels = labels, |
| platform_preprocessor_flags = [ |
| ( |
| "windows-x86_64", |
| [ |
| "-Drestrict=", |
| ], |
| ), |
| ], |
| preferred_linkage = "static", |
| preprocessor_flags = [ |
| "-DXNN_LOG_LEVEL=0", |
| ], |
| visibility = ["PUBLIC"], |
| windows_clang_compiler_flags_override = WINDOWS_FLAGS + WINDOWS_CLANG_COMPILER_FLAGS + ["-mxop"], |
| windows_compiler_flags_override = WINDOWS_FLAGS + ["-mxop"], |
| windows_srcs = PROD_XOP_MICROKERNEL_SRCS, |
| deps = [ |
| ":interface", |
| ], |
| ) |
| |
| fb_xplat_cxx_library( |
| name = "ukernels_fma3", |
| srcs = PROD_FMA3_MICROKERNEL_SRCS if is_arvr_mode() else [], |
| headers = subdir_glob([ |
| ("XNNPACK/src", "**/*.h"), |
| ("XNNPACK/src", "**/*.c"), |
| ]), |
| header_namespace = "", |
| apple_sdks = (IOS, MACOSX, APPLETVOS), |
| compiler_flags = [ |
| "-O2", |
| ] + select({ |
| "DEFAULT": [], |
| "ovr_config//cpu:x86_32": [ |
| "-mfma", |
| "-mf16c", |
| ], |
| "ovr_config//cpu:x86_64": [ |
| "-mfma", |
| "-mf16c", |
| ], |
| }), |
| fbobjc_preprocessor_flags = [ |
| "-DXNN_PRIVATE=", |
| "-DXNN_INTERNAL=", |
| ], |
| labels = labels, |
| platform_compiler_flags = [ |
| ( |
| "(i[3-6]86|x86|x86_64|AMD64)", |
| [ |
| "-mfma", |
| "-mf16c", |
| ], |
| ), |
| ], |
| platform_srcs = ([ |
| ( |
| "x86|x86_64|platform009|platform010", |
| PROD_FMA3_MICROKERNEL_SRCS, |
| ), |
| ] if not is_arvr_mode() else []), |
| preferred_linkage = "static", |
| preprocessor_flags = [ |
| "-DXNN_LOG_LEVEL=0", |
| ], |
| visibility = ["PUBLIC"], |
| windows_clang_compiler_flags_override = WINDOWS_FLAGS + WINDOWS_CLANG_COMPILER_FLAGS + [ |
| "-mfma", |
| "-mf16c", |
| ], |
| windows_compiler_flags_override = WINDOWS_FLAGS + [ |
| "-mfma", |
| "-mf16c", |
| ], |
| deps = [ |
| ":interface", |
| ], |
| ) |
| |
| fb_xplat_cxx_library( |
| name = "ukernels_fma3_ovr_win32", |
| headers = subdir_glob([ |
| ("XNNPACK/src", "**/*.h"), |
| ("XNNPACK/src", "**/*.c"), |
| ]), |
| header_namespace = "", |
| apple_sdks = (IOS, MACOSX, APPLETVOS), |
| compiler_flags = [ |
| "-O2", |
| "-mfma", |
| "-mf16c", |
| ], |
| fbobjc_preprocessor_flags = [ |
| "-DXNN_PRIVATE=", |
| "-DXNN_INTERNAL=", |
| ], |
| labels = labels, |
| platform_compiler_flags = [ |
| ( |
| "^(i[3-6]86|x86|x86_64|AMD64)$", |
| [ |
| "-mfma", |
| "-mf16c", |
| ], |
| ), |
| ], |
| preferred_linkage = "static", |
| preprocessor_flags = [ |
| "-DXNN_LOG_LEVEL=0", |
| ], |
| visibility = ["PUBLIC"], |
| windows_clang_compiler_flags_override = WINDOWS_FLAGS + WINDOWS_CLANG_COMPILER_FLAGS + [ |
| "-mfma", |
| "-mf16c", |
| ], |
| windows_compiler_flags_override = WINDOWS_FLAGS + [ |
| "-mfma", |
| "-mf16c", |
| ], |
| windows_srcs = PROD_FMA3_MICROKERNEL_SRCS, |
| deps = [ |
| ":interface", |
| ], |
| ) |
| |
| fb_xplat_cxx_library( |
| name = "ukernels_avx2", |
| srcs = PROD_AVX2_MICROKERNEL_SRCS if is_arvr_mode() else [], |
| headers = subdir_glob([ |
| ("XNNPACK/src", "**/*.c"), |
| ("XNNPACK/src", "**/*.h"), |
| ]), |
| header_namespace = "", |
| apple_sdks = (IOS, MACOSX, APPLETVOS), |
| compiler_flags = [ |
| "-O2", |
| ] + select({ |
| "DEFAULT": [], |
| "ovr_config//cpu:x86_32": [ |
| "-mavx2", |
| "-mfma", |
| "-mf16c", |
| ], |
| "ovr_config//cpu:x86_64": [ |
| "-mavx2", |
| "-mfma", |
| "-mf16c", |
| ], |
| }), |
| fbobjc_preprocessor_flags = [ |
| "-DXNN_PRIVATE=", |
| "-DXNN_INTERNAL=", |
| ], |
| labels = labels, |
| platform_compiler_flags = [ |
| ( |
| "x86|x86_64|platform009|platform010", |
| [ |
| "-mavx2", |
| "-mfma", |
| "-mf16c", |
| ], |
| ), |
| ], |
| platform_srcs = ([ |
| ( |
| "x86|x86_64|platform009|platform010", |
| PROD_AVX2_MICROKERNEL_SRCS, |
| ), |
| ] if not is_arvr_mode() else []), |
| preferred_linkage = "static", |
| preprocessor_flags = [ |
| "-DXNN_LOG_LEVEL=0", |
| ], |
| visibility = ["PUBLIC"], |
| windows_clang_compiler_flags_override = WINDOWS_FLAGS + WINDOWS_CLANG_COMPILER_FLAGS + [ |
| "-mavx2", |
| "-mfma", |
| "-mf16c", |
| ], |
| windows_compiler_flags_override = WINDOWS_FLAGS + [ |
| "-mavx2", |
| "-mfma", |
| "-mf16c", |
| ], |
| deps = [ |
| ":interface", |
| ], |
| ) |
| |
| fb_xplat_cxx_library( |
| name = "ukernels_avx2_ovr_win32", |
| headers = subdir_glob([ |
| ("XNNPACK/src", "**/*.c"), |
| ("XNNPACK/src", "**/*.h"), |
| ]), |
| header_namespace = "", |
| apple_sdks = (IOS, MACOSX, APPLETVOS), |
| compiler_flags = [ |
| "-O2", |
| "-mavx2", |
| "-mfma", |
| "-mf16c", |
| ], |
| fbobjc_preprocessor_flags = [ |
| "-DXNN_PRIVATE=", |
| "-DXNN_INTERNAL=", |
| ], |
| labels = labels, |
| platform_compiler_flags = [ |
| ( |
| "x86", |
| [ |
| "-mavx2", |
| "-mfma", |
| "-mf16c", |
| ], |
| ), |
| ], |
| preferred_linkage = "static", |
| preprocessor_flags = [ |
| "-DXNN_LOG_LEVEL=0", |
| ], |
| visibility = ["PUBLIC"], |
| windows_clang_compiler_flags_override = WINDOWS_FLAGS + WINDOWS_CLANG_COMPILER_FLAGS + [ |
| "-mavx2", |
| "-mfma", |
| "-mf16c", |
| ], |
| windows_compiler_flags_override = WINDOWS_FLAGS + [ |
| "-mavx2", |
| "-mfma", |
| "-mf16c", |
| ], |
| windows_srcs = PROD_AVX2_MICROKERNEL_SRCS, |
| deps = [ |
| ":interface", |
| ], |
| ) |
| |
| fb_xplat_cxx_library( |
| name = "ukernels_avx512", |
| srcs = PROD_AVX512F_MICROKERNEL_SRCS if is_arvr_mode() else [], |
| headers = subdir_glob([ |
| ("XNNPACK/src", "**/*.c"), |
| ("XNNPACK/src", "**/*.h"), |
| ]), |
| header_namespace = "", |
| apple_sdks = (IOS, MACOSX, APPLETVOS), |
| compiler_flags = [ |
| "-O2", |
| ] + select({ |
| "DEFAULT": [], |
| "ovr_config//cpu:x86_32": [ |
| "-mavx512f", |
| ], |
| "ovr_config//cpu:x86_64": [ |
| "-mavx512f", |
| ], |
| }), |
| fbobjc_preprocessor_flags = [ |
| "-DXNN_PRIVATE=", |
| "-DXNN_INTERNAL=", |
| ], |
| labels = labels, |
| platform_compiler_flags = [ |
| ( |
| "x86|x86_64|platform009|platform010", |
| [ |
| "-mavx512f", |
| ], |
| ), |
| ], |
| platform_srcs = ([ |
| ( |
| "x86|x86_64|platform009|platform010", |
| PROD_AVX512F_MICROKERNEL_SRCS, |
| ), |
| ] if not is_arvr_mode() else []), |
| preferred_linkage = "static", |
| preprocessor_flags = [ |
| "-DXNN_LOG_LEVEL=0", |
| ], |
| visibility = ["PUBLIC"], |
| windows_clang_compiler_flags_override = WINDOWS_FLAGS + WINDOWS_CLANG_COMPILER_FLAGS + ["-mavx512f"], |
| windows_compiler_flags_override = WINDOWS_FLAGS + ["-mavx512f"], |
| deps = [ |
| ":interface", |
| ], |
| ) |
| |
| fb_xplat_cxx_library( |
| name = "ukernels_avx512vbmi", |
| srcs = PROD_AVX512VBMI_MICROKERNEL_SRCS if is_arvr_mode() else [], |
| headers = subdir_glob([ |
| ("XNNPACK/src", "**/*.c"), |
| ("XNNPACK/src", "**/*.h"), |
| ]), |
| header_namespace = "", |
| apple_sdks = (IOS, MACOSX, APPLETVOS), |
| compiler_flags = [ |
| "-O2", |
| ] + select({ |
| "DEFAULT": [], |
| "ovr_config//cpu:x86_32": [ |
| "-mavx512f", |
| "-mavx512cd", |
| "-mavx512bw", |
| "-mavx512dq", |
| "-mavx512vl", |
| "-mavx512vbmi", |
| ], |
| "ovr_config//cpu:x86_64": [ |
| "-mavx512f", |
| "-mavx512cd", |
| "-mavx512bw", |
| "-mavx512dq", |
| "-mavx512vl", |
| "-mavx512vbmi", |
| ], |
| }), |
| fbobjc_preprocessor_flags = [ |
| "-DXNN_PRIVATE=", |
| "-DXNN_INTERNAL=", |
| ], |
| labels = labels, |
| platform_compiler_flags = [ |
| ( |
| "(i[3-6]86|x86|x86_64|AMD64)", |
| [ |
| "-mavx512f", |
| "-mavx512cd", |
| "-mavx512bw", |
| "-mavx512dq", |
| "-mavx512vl", |
| "-mavx512vbmi", |
| ], |
| ), |
| ], |
| platform_srcs = ([ |
| ( |
| "x86|x86_64|platform009|platform010", |
| PROD_AVX512VBMI_MICROKERNEL_SRCS, |
| ), |
| ] if not is_arvr_mode() else []), |
| preferred_linkage = "static", |
| preprocessor_flags = [ |
| "-DXNN_LOG_LEVEL=0", |
| ], |
| visibility = ["PUBLIC"], |
| windows_clang_compiler_flags_override = WINDOWS_FLAGS + WINDOWS_CLANG_COMPILER_FLAGS + [ |
| "-mavx512f", |
| "-mavx512cd", |
| "-mavx512bw", |
| "-mavx512dq", |
| "-mavx512vl", |
| "-mavx512vbmi", |
| ], |
| windows_compiler_flags_override = WINDOWS_FLAGS + [ |
| "-mavx512f", |
| "-mavx512cd", |
| "-mavx512bw", |
| "-mavx512dq", |
| "-mavx512vl", |
| "-mavx512vbmi", |
| ], |
| deps = [ |
| ":interface", |
| ], |
| ) |
| |
| fb_xplat_cxx_library( |
| name = "ukernels_avx512_ovr_win32", |
| headers = subdir_glob([ |
| ("XNNPACK/src", "**/*.c"), |
| ("XNNPACK/src", "**/*.h"), |
| ]), |
| header_namespace = "", |
| apple_sdks = (IOS, MACOSX, APPLETVOS), |
| compiler_flags = [ |
| "-O2", |
| "-mavx512f", |
| ], |
| fbobjc_preprocessor_flags = [ |
| "-DXNN_PRIVATE=", |
| "-DXNN_INTERNAL=", |
| ], |
| labels = labels, |
| platform_compiler_flags = [ |
| ( |
| "x86", |
| [ |
| "-mavx512f", |
| ], |
| ), |
| ], |
| preferred_linkage = "static", |
| preprocessor_flags = [ |
| "-DXNN_LOG_LEVEL=0", |
| ], |
| visibility = ["PUBLIC"], |
| windows_clang_compiler_flags_override = WINDOWS_FLAGS + WINDOWS_CLANG_COMPILER_FLAGS + ["-mavx512f"], |
| windows_compiler_flags_override = WINDOWS_FLAGS + ["-mavx512f"], |
| windows_srcs = PROD_AVX512F_MICROKERNEL_SRCS, |
| deps = [ |
| ":interface", |
| ], |
| ) |
| |
| fb_xplat_cxx_library( |
| name = "ukernels_avx512skx", |
| srcs = PROD_AVX512SKX_MICROKERNEL_SRCS if is_arvr_mode() else [], |
| headers = subdir_glob([ |
| ("XNNPACK/src", "**/*.c"), |
| ("XNNPACK/src", "**/*.h"), |
| ]), |
| header_namespace = "", |
| apple_sdks = (IOS, MACOSX, APPLETVOS), |
| compiler_flags = [ |
| "-O2", |
| ] + select({ |
| "DEFAULT": [], |
| "ovr_config//cpu:x86_32": [ |
| "-mavx512f", |
| "-mavx512cd", |
| "-mavx512bw", |
| "-mavx512dq", |
| "-mavx512vl", |
| ], |
| "ovr_config//cpu:x86_64": [ |
| "-mavx512f", |
| "-mavx512cd", |
| "-mavx512bw", |
| "-mavx512dq", |
| "-mavx512vl", |
| ], |
| }), |
| fbobjc_preprocessor_flags = [ |
| "-DXNN_PRIVATE=", |
| "-DXNN_INTERNAL=", |
| ], |
| labels = labels, |
| platform_compiler_flags = [ |
| ( |
| "(i[3-6]86|x86|x86_64|AMD64)", |
| [ |
| "-mavx512f", |
| "-mavx512cd", |
| "-mavx512bw", |
| "-mavx512dq", |
| "-mavx512vl", |
| ], |
| ), |
| ], |
| platform_srcs = ([ |
| ( |
| "x86|x86_64|platform009|platform010", |
| PROD_AVX512SKX_MICROKERNEL_SRCS, |
| ), |
| ] if not is_arvr_mode() else []), |
| preferred_linkage = "static", |
| preprocessor_flags = [ |
| "-DXNN_LOG_LEVEL=0", |
| ], |
| visibility = ["PUBLIC"], |
| windows_clang_compiler_flags_override = WINDOWS_FLAGS + WINDOWS_CLANG_COMPILER_FLAGS + [ |
| "-mavx512f", |
| "-mavx512cd", |
| "-mavx512bw", |
| "-mavx512dq", |
| "-mavx512vl", |
| ], |
| windows_compiler_flags_override = WINDOWS_FLAGS + [ |
| "-mavx512f", |
| "-mavx512cd", |
| "-mavx512bw", |
| "-mavx512dq", |
| "-mavx512vl", |
| ], |
| deps = [ |
| ":interface", |
| ], |
| ) |
| |
| fb_xplat_cxx_library( |
| name = "ukernels_avx512skx_ovr_win32", |
| headers = subdir_glob([ |
| ("XNNPACK/src", "**/*.c"), |
| ("XNNPACK/src", "**/*.h"), |
| ]), |
| header_namespace = "", |
| apple_sdks = (IOS, MACOSX, APPLETVOS), |
| compiler_flags = [ |
| "-O2", |
| "-mavx512f", |
| "-mavx512cd", |
| "-mavx512bw", |
| "-mavx512dq", |
| "-mavx512vl", |
| ], |
| fbobjc_preprocessor_flags = [ |
| "-DXNN_PRIVATE=", |
| "-DXNN_INTERNAL=", |
| ], |
| labels = labels, |
| platform_compiler_flags = [ |
| ( |
| "^(i[3-6]86|x86|x86_64|AMD64)$", |
| [ |
| "-mavx512f", |
| "-mavx512cd", |
| "-mavx512bw", |
| "-mavx512dq", |
| "-mavx512vl", |
| ], |
| ), |
| ], |
| preferred_linkage = "static", |
| preprocessor_flags = [ |
| "-DXNN_LOG_LEVEL=0", |
| ], |
| visibility = ["PUBLIC"], |
| windows_clang_compiler_flags_override = WINDOWS_FLAGS + WINDOWS_CLANG_COMPILER_FLAGS + [ |
| "-mavx512f", |
| "-mavx512cd", |
| "-mavx512bw", |
| "-mavx512dq", |
| "-mavx512vl", |
| ], |
| windows_compiler_flags_override = WINDOWS_FLAGS + [ |
| "-mavx512f", |
| "-mavx512cd", |
| "-mavx512bw", |
| "-mavx512dq", |
| "-mavx512vl", |
| ], |
| windows_srcs = PROD_AVX512SKX_MICROKERNEL_SRCS, |
| deps = [ |
| ":interface", |
| ], |
| ) |
| |
| fb_xplat_cxx_library( |
| name = "ukernels_armsimd32", |
| srcs = PROD_ARMSIMD32_MICROKERNEL_SRCS, |
| headers = subdir_glob([ |
| ("XNNPACK/src", "**/*.c"), |
| ("XNNPACK/src", "**/*.h"), |
| ]), |
| header_namespace = "", |
| apple_sdks = (IOS, MACOSX, APPLETVOS), |
| compiler_flags = [ |
| "-O2", |
| "-fno-fast-math", |
| "-fno-math-errno", |
| ], |
| fbobjc_preprocessor_flags = [ |
| "-DXNN_PRIVATE=", |
| "-DXNN_INTERNAL=", |
| ], |
| labels = labels, |
| platform_compiler_flags = [ |
| ( |
| "(arm32|aarch32|armv7)", |
| [ |
| "-marm", |
| "-march=armv6", |
| "-mfpu=vfp", |
| "-munaligned-access", |
| ], |
| ), |
| ], |
| preferred_linkage = "static", |
| preprocessor_flags = [ |
| "-DXNN_LOG_LEVEL=0", |
| ], |
| visibility = ["PUBLIC"], |
| windows_clang_compiler_flags_override = WINDOWS_FLAGS + WINDOWS_CLANG_COMPILER_FLAGS, |
| windows_compiler_flags_override = WINDOWS_FLAGS, |
| deps = [ |
| ":interface", |
| third_party("FP16"), |
| ], |
| ) |
| |
| fb_xplat_cxx_library( |
| name = "ukernels_neon", |
| srcs = select({ |
| "DEFAULT": [], |
| "ovr_config//cpu:arm32": PROD_NEON_MICROKERNEL_SRCS, |
| }) if is_arvr_mode() else [], |
| headers = subdir_glob([ |
| ("XNNPACK/src", "**/*.c"), |
| ("XNNPACK/src", "**/*.h"), |
| ]), |
| header_namespace = "", |
| apple_sdks = (IOS, MACOSX, APPLETVOS), |
| compiler_flags = [ |
| "-O2", |
| ] + select({ |
| "DEFAULT": [], |
| "ovr_config//cpu:arm32": [ |
| "-marm", |
| "-march=armv7-a", |
| "-mfpu=neon", |
| ], |
| }), |
| fbobjc_preprocessor_flags = [ |
| "-DXNN_PRIVATE=", |
| "-DXNN_INTERNAL=", |
| ], |
| labels = labels, |
| platform_compiler_flags = [ |
| ( |
| "(aarch32|arm32|armv7)", |
| [ |
| "-marm", |
| "-march=armv7-a", |
| "-mfpu=neon", |
| ], |
| ), |
| ], |
| platform_srcs = [ |
| ( |
| "(aarch32|arm32|armv7)", |
| PROD_NEON_MICROKERNEL_SRCS, |
| ), |
| ] if not is_arvr_mode() else [], |
| preferred_linkage = "static", |
| preprocessor_flags = [ |
| "-DXNN_LOG_LEVEL=0", |
| ], |
| visibility = ["PUBLIC"], |
| windows_clang_compiler_flags_override = WINDOWS_FLAGS + WINDOWS_CLANG_COMPILER_FLAGS, |
| windows_compiler_flags_override = WINDOWS_FLAGS, |
| deps = [ |
| ":interface", |
| third_party("FP16"), |
| ], |
| ) |
| |
| fb_xplat_cxx_library( |
| name = "ukernels_neon_aarch64", |
| srcs = select({ |
| "DEFAULT": [], |
| "ovr_config//cpu:arm64": PROD_NEON_MICROKERNEL_SRCS + [PROD_NEON_AARCH64_MICROKERNEL_SRCS[0]], |
| }) if is_arvr_mode() else [], |
| headers = subdir_glob([ |
| ("XNNPACK/src", "**/*.c"), |
| ("XNNPACK/src", "**/*.h"), |
| ]), |
| header_namespace = "", |
| apple_sdks = (IOS, MACOSX, APPLETVOS), |
| compiler_flags = [ |
| "-O2", |
| ], |
| fbobjc_preprocessor_flags = [ |
| "-DXNN_PRIVATE=", |
| "-DXNN_INTERNAL=", |
| ], |
| platform_srcs = [ |
| ( |
| "(aarch64|arm64)", |
| PROD_NEON_MICROKERNEL_SRCS + [PROD_NEON_AARCH64_MICROKERNEL_SRCS[0]], |
| ), |
| ] if not is_arvr_mode() else [], |
| labels = labels, |
| preferred_linkage = "static", |
| preprocessor_flags = [ |
| "-DXNN_LOG_LEVEL=0", |
| ], |
| visibility = ["PUBLIC"], |
| windows_clang_compiler_flags_override = WINDOWS_FLAGS + WINDOWS_CLANG_COMPILER_FLAGS, |
| windows_compiler_flags_override = WINDOWS_FLAGS, |
| deps = [ |
| ":interface", |
| third_party("FP16"), |
| ], |
| ) |
| |
| fb_xplat_cxx_library( |
| name = "ukernels_neon_fma", |
| srcs = select({ |
| "DEFAULT": [], |
| "ovr_config//cpu:arm32": PROD_NEONFMA_MICROKERNEL_SRCS, |
| }) if is_arvr_mode() else [], |
| headers = subdir_glob([ |
| ("XNNPACK/src", "**/*.c"), |
| ("XNNPACK/src", "**/*.h"), |
| ]), |
| header_namespace = "", |
| apple_sdks = (IOS, MACOSX, APPLETVOS), |
| compiler_flags = [ |
| "-O2", |
| ] + select({ |
| "DEFAULT": [], |
| "ovr_config//cpu:arm32": [ |
| "-marm", |
| "-march=armv7-a", |
| "-mfpu=neon-vfpv4", |
| ], |
| }), |
| fbobjc_preprocessor_flags = [ |
| "-DXNN_PRIVATE=", |
| "-DXNN_INTERNAL=", |
| ], |
| labels = labels, |
| platform_compiler_flags = [ |
| ( |
| "^iphoneos-armv7$", |
| [ |
| "-mcpu=cyclone", |
| "-mtune=generic", |
| ], |
| ), |
| ( |
| "(aarch32|arm32|armv7)", |
| [ |
| "-marm", |
| "-march=armv7-a", |
| "-mfpu=neon-vfpv4", |
| ], |
| ), |
| ], |
| platform_srcs = [ |
| ( |
| "(aarch32|arm32|armv7)", |
| PROD_NEONFMA_MICROKERNEL_SRCS, |
| ), |
| ] if not is_arvr_mode() else [], |
| preferred_linkage = "static", |
| preprocessor_flags = [ |
| "-DXNN_LOG_LEVEL=0", |
| ], |
| visibility = ["PUBLIC"], |
| windows_clang_compiler_flags_override = WINDOWS_FLAGS + WINDOWS_CLANG_COMPILER_FLAGS, |
| windows_compiler_flags_override = WINDOWS_FLAGS, |
| deps = [ |
| ":interface", |
| third_party("FP16"), |
| ], |
| ) |
| |
| fb_xplat_cxx_library( |
| name = "ukernels_neonfma_aarch64", |
| srcs = select({ |
| "DEFAULT": [], |
| "ovr_config//cpu:arm64": PROD_NEONFMA_MICROKERNEL_SRCS + [PROD_NEON_AARCH64_MICROKERNEL_SRCS[1]], |
| }) if is_arvr_mode() else [], |
| headers = subdir_glob([ |
| ("XNNPACK/src", "**/*.h"), |
| ("XNNPACK/src", "**/*.c"), |
| ]), |
| header_namespace = "", |
| apple_sdks = (IOS, MACOSX, APPLETVOS), |
| compiler_flags = [ |
| "-O2", |
| ], |
| fbobjc_preprocessor_flags = [ |
| "-DXNN_PRIVATE=", |
| "-DXNN_INTERNAL=", |
| ], |
| labels = labels, |
| platform_srcs = [ |
| ( |
| "(arm64|aarch64)$", |
| PROD_NEONFMA_MICROKERNEL_SRCS + [PROD_NEON_AARCH64_MICROKERNEL_SRCS[1]], |
| ), |
| ] if not is_arvr_mode() else [], |
| platforms = (APPLE, ANDROID, CXX, WINDOWS), |
| preferred_linkage = "static", |
| preprocessor_flags = [ |
| "-DXNN_LOG_LEVEL=0", |
| ], |
| visibility = ["PUBLIC"], |
| windows_clang_compiler_flags_override = WINDOWS_FLAGS + WINDOWS_CLANG_COMPILER_FLAGS, |
| windows_compiler_flags_override = WINDOWS_FLAGS, |
| deps = [ |
| ":interface", |
| third_party("FP16"), |
| ], |
| ) |
| |
| fb_xplat_cxx_library( |
| name = "ukernels_fp16arith", |
| srcs = PROD_FP16ARITH_MICROKERNEL_SRCS, |
| headers = subdir_glob([ |
| ("XNNPACK/src", "**/*.c"), |
| ("XNNPACK/src", "**/*.h"), |
| ]), |
| header_namespace = "", |
| apple_sdks = (IOS, MACOSX, APPLETVOS), |
| compiler_flags = [ |
| "-O2", |
| "-Wno-error=missing-braces", # required since the SGX toolchain does not have this by default |
| "-fno-fast-math", |
| "-fno-math-errno", |
| ] + select({ |
| "DEFAULT": [], |
| "ovr_config//cpu:arm32": [ |
| "-marm", |
| "-march=armv8.2-a+fp16", |
| # GCC emits wrong directives for assembler with -mfpu=fp-armv8 |
| "-mfpu=neon-fp-armv8", |
| # For vsqrth_f16 polyfill using sqrtf |
| "-fno-math-errno", |
| # For vminh_f16/vmaxh_f16 polyfills using compare + select |
| "-ffinite-math-only", |
| ], |
| }), |
| fbobjc_preprocessor_flags = [ |
| "-DXNN_PRIVATE=", |
| "-DXNN_INTERNAL=", |
| ], |
| labels = labels, |
| platform_compiler_flags = [ |
| ( |
| "(aarch32|arm32|armv7)", |
| [ |
| "-marm", |
| "-march=armv8.2-a+fp16", |
| # GCC emits wrong directives for assembler with -mfpu=fp-armv8 |
| "-mfpu=neon-fp-armv8", |
| # For vsqrth_f16 polyfill using sqrtf |
| "-fno-math-errno", |
| # For vminh_f16/vmaxh_f16 polyfills using compare + select |
| "-ffinite-math-only", |
| ], |
| ), |
| ], |
| preferred_linkage = "static", |
| preprocessor_flags = [ |
| "-DXNN_LOG_LEVEL=0", |
| ], |
| visibility = ["PUBLIC"], |
| windows_clang_compiler_flags_override = WINDOWS_FLAGS + WINDOWS_CLANG_COMPILER_FLAGS, |
| windows_compiler_flags_override = WINDOWS_FLAGS, |
| deps = [ |
| ":interface", |
| ], |
| ) |
| |
| fb_xplat_cxx_library( |
| name = "ukernels_neon_fp16", |
| srcs = PROD_NEONFP16_MICROKERNEL_SRCS, |
| headers = subdir_glob([ |
| ("XNNPACK/src", "**/*.c"), |
| ("XNNPACK/src", "**/*.h"), |
| ]), |
| header_namespace = "", |
| apple_sdks = (IOS, MACOSX, APPLETVOS), |
| compiler_flags = [ |
| "-O2", |
| ] + select({ |
| "DEFAULT": [], |
| "ovr_config//cpu:arm32": [ |
| "-marm", |
| "-march=armv7-a", |
| "-mfpu=neon-fp16", |
| ], |
| }), |
| fbobjc_preprocessor_flags = [ |
| "-DXNN_PRIVATE=", |
| "-DXNN_INTERNAL=", |
| ], |
| labels = labels, |
| platform_compiler_flags = [ |
| ( |
| "(aarch32|arm32|armv7)", |
| [ |
| "-marm", |
| "-march=armv7-a", |
| "-mfpu=neon-fp16", |
| ], |
| ), |
| ], |
| preferred_linkage = "static", |
| preprocessor_flags = [ |
| "-DXNN_LOG_LEVEL=0", |
| ], |
| visibility = ["PUBLIC"], |
| windows_clang_compiler_flags_override = WINDOWS_FLAGS + WINDOWS_CLANG_COMPILER_FLAGS, |
| windows_compiler_flags_override = WINDOWS_FLAGS, |
| deps = [ |
| ":interface", |
| ], |
| ) |
| |
| fb_xplat_cxx_library( |
| name = "ukernels_neon_v8", |
| srcs = PROD_NEONV8_MICROKERNEL_SRCS, |
| headers = subdir_glob([ |
| ("XNNPACK/src", "**/*.c"), |
| ("XNNPACK/src", "**/*.h"), |
| ]), |
| header_namespace = "", |
| apple_sdks = (IOS, MACOSX, APPLETVOS), |
| compiler_flags = [ |
| "-O2", |
| ] + select({ |
| "DEFAULT": [], |
| "ovr_config//cpu:arm64": ["-march=armv8-a"], |
| }), |
| fbobjc_preprocessor_flags = [ |
| "-DXNN_PRIVATE=", |
| "-DXNN_INTERNAL=", |
| ], |
| labels = labels, |
| platform_compiler_flags = [ |
| ( |
| "(aarch64|arm64)", |
| [ |
| "-march=armv8-a", |
| ], |
| ), |
| ( |
| "^android-armv7$", |
| [ |
| "-march=armv8-a", |
| "-mfpu=neon-fp-armv8", |
| "-mfloat-abi=softfp", |
| ], |
| ), |
| ( |
| "^iphoneos-armv7$", |
| [ |
| "-mcpu=cyclone", |
| "-mtune=generic", |
| ], |
| ), |
| ], |
| preferred_linkage = "static", |
| preprocessor_flags = [ |
| "-DXNN_LOG_LEVEL=0", |
| ], |
| visibility = ["PUBLIC"], |
| windows_clang_compiler_flags_override = WINDOWS_FLAGS + WINDOWS_CLANG_COMPILER_FLAGS, |
| windows_compiler_flags_override = WINDOWS_FLAGS, |
| deps = [ |
| ":interface", |
| third_party("FP16"), |
| ], |
| ) |
| |
| fb_xplat_cxx_library( |
| name = "ukernels_neon_dot", |
| srcs = select({ |
| "DEFAULT": [], |
| "ovr_config//cpu:arm32": PROD_NEONDOT_MICROKERNEL_SRCS, |
| }) if is_arvr_mode() else [], |
| headers = subdir_glob([ |
| ("XNNPACK/src", "**/*.c"), |
| ("XNNPACK/src", "**/*.h"), |
| ]), |
| header_namespace = "", |
| apple_sdks = (IOS, MACOSX, APPLETVOS), |
| compiler_flags = [ |
| "-O2", |
| ] + select({ |
| "DEFAULT": [], |
| "ovr_config//cpu:arm32": [ |
| "-march=armv8.2-a+dotprod", |
| "-mfpu=neon-fp-armv8", |
| "-mfloat-abi=softfp", |
| ], |
| }), |
| fbobjc_preprocessor_flags = [ |
| "-DXNN_PRIVATE=", |
| "-DXNN_INTERNAL=", |
| ], |
| labels = labels, |
| platform_compiler_flags = [ |
| ( |
| "(aarch32|arm32|armv7)", |
| [ |
| "-march=armv8.2-a+dotprod", |
| "-mfpu=neon-fp-armv8", |
| "-mfloat-abi=softfp", |
| ], |
| ), |
| ], |
| platform_srcs = [ |
| ( |
| "(aarch32|arm32|armv7)", |
| PROD_NEONDOT_MICROKERNEL_SRCS, |
| ), |
| ] if not is_arvr_mode() else [], |
| preferred_linkage = "static", |
| preprocessor_flags = [ |
| "-DXNN_LOG_LEVEL=0", |
| ], |
| visibility = ["PUBLIC"], |
| windows_clang_compiler_flags_override = WINDOWS_FLAGS + WINDOWS_CLANG_COMPILER_FLAGS, |
| windows_compiler_flags_override = WINDOWS_FLAGS, |
| deps = [ |
| ":interface", |
| third_party("FP16"), |
| ], |
| ) |
| |
| fb_xplat_cxx_library( |
| name = "ukernels_neon_dot_aarch64", |
| srcs = select({ |
| "DEFAULT": [], |
| "ovr_config//cpu:arm64": PROD_NEONDOT_MICROKERNEL_SRCS + PROD_NEONDOT_AARCH64_MICROKERNEL_SRCS, |
| }) if is_arvr_mode() else [], |
| headers = subdir_glob([ |
| ("XNNPACK/src", "**/*.c"), |
| ("XNNPACK/src", "**/*.h"), |
| ]), |
| header_namespace = "", |
| apple_sdks = (IOS, MACOSX, APPLETVOS), |
| compiler_flags = [ |
| "-O2", |
| ] + select({ |
| "DEFAULT": [], |
| "ovr_config//cpu:arm64": ["-march=armv8.2-a+dotprod"], |
| }), |
| fbobjc_preprocessor_flags = [ |
| "-DXNN_PRIVATE=", |
| "-DXNN_INTERNAL=", |
| ], |
| labels = labels, |
| platform_compiler_flags = [ |
| ( |
| "(aarch64|arm64)", |
| [ |
| "-march=armv8.2-a+dotprod", |
| ], |
| ), |
| ], |
| platform_srcs = [ |
| ( |
| "(aarch64|arm64)", |
| PROD_NEONDOT_MICROKERNEL_SRCS + PROD_NEONDOT_AARCH64_MICROKERNEL_SRCS, |
| ), |
| ] if not is_arvr_mode() else [], |
| preferred_linkage = "static", |
| preprocessor_flags = [ |
| "-DXNN_LOG_LEVEL=0", |
| ], |
| visibility = ["PUBLIC"], |
| windows_clang_compiler_flags_override = WINDOWS_FLAGS + WINDOWS_CLANG_COMPILER_FLAGS, |
| windows_compiler_flags_override = WINDOWS_FLAGS, |
| deps = [ |
| ":interface", |
| third_party("FP16"), |
| ], |
| ) |
| |
| fb_xplat_cxx_library( |
| name = "ukernels_neon_dot_fp16arith", |
| srcs = select({ |
| "DEFAULT": [], |
| "ovr_config//cpu:arm32": PROD_NEONDOTFP16ARITH_MICROKERNEL_SRCS, |
| }) if is_arvr_mode() else [], |
| headers = subdir_glob([ |
| ("XNNPACK/src", "**/*.c"), |
| ("XNNPACK/src", "**/*.h"), |
| ]), |
| header_namespace = "", |
| apple_sdks = (IOS, MACOSX, APPLETVOS), |
| compiler_flags = [ |
| "-O2", |
| ] + select({ |
| "DEFAULT": [], |
| "ovr_config//cpu:arm32": [ |
| "-marm", |
| "-march=armv8.2-a+dotprod+fp16", |
| "-mfpu=neon-fp-armv8", |
| ], |
| }), |
| platform_compiler_flags = [ |
| ( |
| "(aarch32|arm32|armv7)", |
| [ |
| "-marm", |
| "-march=armv8.2-a+dotprod+fp16", |
| "-mfpu=neon-fp-armv8", |
| ], |
| ), |
| ], |
| platform_srcs = [ |
| ( |
| "(aarch32|arm32|armv7)", |
| PROD_NEONDOTFP16ARITH_MICROKERNEL_SRCS, |
| ), |
| ] if not is_arvr_mode() else [], |
| fbobjc_preprocessor_flags = [ |
| "-DXNN_PRIVATE=", |
| "-DXNN_INTERNAL=", |
| ], |
| labels = labels, |
| preferred_linkage = "static", |
| preprocessor_flags = [ |
| "-DXNN_LOG_LEVEL=0", |
| ], |
| visibility = ["PUBLIC"], |
| windows_clang_compiler_flags_override = WINDOWS_FLAGS + WINDOWS_CLANG_COMPILER_FLAGS, |
| windows_compiler_flags_override = WINDOWS_FLAGS, |
| deps = [ |
| ":interface", |
| third_party("FP16"), |
| ], |
| ) |
| |
| fb_xplat_cxx_library( |
| name = "ukernels_neon_dot_fp16arith_aarch64", |
| srcs = select({ |
| "DEFAULT": [], |
| "ovr_config//cpu:arm64": PROD_NEONDOTFP16ARITH_MICROKERNEL_SRCS + PROD_NEONDOTFP16ARITH_AARCH64_MICROKERNEL_SRCS, |
| }) if is_arvr_mode() else [], |
| headers = subdir_glob([ |
| ("XNNPACK/src", "**/*.c"), |
| ("XNNPACK/src", "**/*.h"), |
| ]), |
| header_namespace = "", |
| apple_sdks = (IOS, MACOSX, APPLETVOS), |
| compiler_flags = [ |
| "-O2", |
| ] + select({ |
| "DEFAULT": [], |
| "ovr_config//cpu:arm64": [ |
| "-march=armv8.2-a+dotprod+fp16", |
| ], |
| }), |
| fbobjc_preprocessor_flags = [ |
| "-DXNN_PRIVATE=", |
| "-DXNN_INTERNAL=", |
| ], |
| platform_compiler_flags = [ |
| ( |
| "(aarch64|arm64)", |
| [ |
| "-march=armv8.2-a+dotprod+fp16", |
| ], |
| ), |
| ], |
| platform_srcs = [ |
| ( |
| "(aarch64|arm64)", |
| PROD_NEONDOTFP16ARITH_MICROKERNEL_SRCS + PROD_NEONDOTFP16ARITH_AARCH64_MICROKERNEL_SRCS, |
| ), |
| ] if not is_arvr_mode() else [], |
| labels = labels, |
| preferred_linkage = "static", |
| preprocessor_flags = [ |
| "-DXNN_LOG_LEVEL=0", |
| ], |
| visibility = ["PUBLIC"], |
| windows_clang_compiler_flags_override = WINDOWS_FLAGS + WINDOWS_CLANG_COMPILER_FLAGS, |
| windows_compiler_flags_override = WINDOWS_FLAGS, |
| deps = [ |
| ":interface", |
| third_party("FP16"), |
| ], |
| ) |
| |
| fb_xplat_cxx_library( |
| name = "ukernels_neon_fp16arith", |
| srcs = select({ |
| "DEFAULT": [], |
| "ovr_config//cpu:arm32": PROD_NEONFP16ARITH_MICROKERNEL_SRCS, |
| }) if is_arvr_mode() else [], |
| headers = subdir_glob([ |
| ("XNNPACK/src", "**/*.c"), |
| ("XNNPACK/src", "**/*.h"), |
| ]), |
| header_namespace = "", |
| apple_sdks = (IOS, MACOSX, APPLETVOS), |
| compiler_flags = [ |
| "-O2", |
| ] + select({ |
| "DEFAULT": [], |
| "ovr_config//cpu:arm32": [ |
| "-marm", |
| "-march=armv8.2-a+fp16", |
| "-mfpu=neon-fp-armv8", |
| ], |
| }), |
| fbobjc_preprocessor_flags = [ |
| "-DXNN_PRIVATE=", |
| "-DXNN_INTERNAL=", |
| ], |
| labels = labels, |
| platform_compiler_flags = [ |
| ( |
| "(aarch32|arm32|armv7)", |
| [ |
| "-marm", |
| "-march=armv8.2-a+fp16", |
| "-mfpu=neon-fp-armv8", |
| ], |
| ), |
| ], |
| platform_srcs = [ |
| ( |
| "(aarch32|arm32|armv7)", |
| PROD_NEONFP16ARITH_MICROKERNEL_SRCS, |
| ), |
| ] if not is_arvr_mode() else [], |
| preferred_linkage = "static", |
| preprocessor_flags = [ |
| "-DXNN_LOG_LEVEL=0", |
| ], |
| visibility = ["PUBLIC"], |
| windows_clang_compiler_flags_override = WINDOWS_FLAGS + WINDOWS_CLANG_COMPILER_FLAGS, |
| windows_compiler_flags_override = WINDOWS_FLAGS, |
| deps = [ |
| ":interface", |
| third_party("FP16"), |
| ], |
| ) |
| |
| fb_xplat_cxx_library( |
| name = "ukernels_neon_fp16arith_aarch64", |
| srcs = select({ |
| "DEFAULT": [], |
| "ovr_config//cpu:arm64": PROD_NEONFP16ARITH_MICROKERNEL_SRCS + PROD_NEONFP16ARITH_AARCH64_MICROKERNEL_SRCS, |
| }) if is_arvr_mode() else [], |
| headers = subdir_glob([ |
| ("XNNPACK/src", "**/*.c"), |
| ("XNNPACK/src", "**/*.h"), |
| ]), |
| header_namespace = "", |
| apple_sdks = (IOS, MACOSX, APPLETVOS), |
| compiler_flags = [ |
| "-O2", |
| ] + select({ |
| "DEFAULT": [], |
| "ovr_config//cpu:arm64": ["-march=armv8.2-a+fp16"], |
| }), |
| fbobjc_preprocessor_flags = [ |
| "-DXNN_PRIVATE=", |
| "-DXNN_INTERNAL=", |
| ], |
| labels = labels, |
| platform_compiler_flags = [ |
| ( |
| "(aarch64|arm64)", |
| [ |
| "-march=armv8.2-a+fp16", |
| ], |
| ), |
| ], |
| platform_srcs = [ |
| ( |
| "(aarch64|arm64)", |
| PROD_NEONFP16ARITH_MICROKERNEL_SRCS + PROD_NEONFP16ARITH_AARCH64_MICROKERNEL_SRCS, |
| ), |
| ] if not is_arvr_mode() else [], |
| preferred_linkage = "static", |
| preprocessor_flags = [ |
| "-DXNN_LOG_LEVEL=0", |
| ], |
| visibility = ["PUBLIC"], |
| windows_clang_compiler_flags_override = WINDOWS_FLAGS + WINDOWS_CLANG_COMPILER_FLAGS, |
| windows_compiler_flags_override = WINDOWS_FLAGS, |
| deps = [ |
| ":interface", |
| third_party("FP16"), |
| ], |
| ) |
| |
| fb_xplat_cxx_library( |
| name = "ukernels_neonfma_i8mm", |
| srcs = PROD_NEONI8MM_MICROKERNEL_SRCS, |
| headers = subdir_glob([ |
| ("XNNPACK/src", "**/*.h"), |
| ("XNNPACK/src", "**/*.c"), |
| ]), |
| header_namespace = "", |
| apple_sdks = (IOS, MACOSX, APPLETVOS), |
| compiler_flags = [ |
| "-O2", |
| ] + select({ |
| "DEFAULT": [], |
| "ovr_config//cpu:arm32": [ |
| "-marm", |
| "-march=armv8.2-a+i8mm+fp16", |
| "-mfpu=neon-fp-armv8", |
| ], |
| "ovr_config//cpu:arm64": [ |
| "-march=armv8.2-a+i8mm+fp16", |
| ], |
| }), |
| fbobjc_preprocessor_flags = [ |
| "-DXNN_PRIVATE=", |
| "-DXNN_INTERNAL=", |
| ], |
| labels = labels, |
| platform_compiler_flags = [ |
| ( |
| "(aarch32|arm32|armv7)$", |
| [ |
| "-marm", |
| "-march=armv8.2-a+i8mm+fp16", |
| "-mfpu=neon-fp-armv8", |
| ], |
| ), |
| ( |
| "(arm64|aarch64)", |
| [ |
| "-march=armv8.2-a+i8mm+fp16", |
| ], |
| ), |
| ], |
| platforms = (APPLE, ANDROID, CXX, WINDOWS), |
| preferred_linkage = "static", |
| preprocessor_flags = [ |
| "-DXNN_LOG_LEVEL=0", |
| ], |
| visibility = ["PUBLIC"], |
| windows_clang_compiler_flags_override = WINDOWS_FLAGS + WINDOWS_CLANG_COMPILER_FLAGS, |
| windows_compiler_flags_override = WINDOWS_FLAGS, |
| deps = [ |
| ":interface", |
| third_party("FP16"), |
| ], |
| ) |
| |
| fb_xplat_cxx_library( |
| name = "ukernels_asm_aarch32", |
| srcs = AARCH32_ASM_MICROKERNEL_SRCS, |
| headers = subdir_glob([ |
| ("XNNPACK/src", "xnnpack/assembly.h"), |
| ("XNNPACK/src", "**/*.S"), |
| ]), |
| header_namespace = "", |
| apple_sdks = (IOS, MACOSX, APPLETVOS), |
| compiler_flags = [ |
| "-O2", |
| ] + select({ |
| "DEFAULT": [], |
| "ovr_config//cpu:arm32": [ |
| "-marm", |
| "-march=armv8.2-a+dotprod+fp16", |
| "-mfpu=neon-fp-armv8", |
| ], |
| }), |
| fbobjc_preprocessor_flags = [ |
| "-DXNN_PRIVATE=", |
| "-DXNN_INTERNAL=", |
| ], |
| labels = labels, |
| platform_compiler_flags = [ |
| ( |
| "(aarch32|arm32|armv7)", |
| [ |
| "-marm", |
| "-march=armv8.2-a+dotprod+fp16", |
| "-mfpu=neon-fp-armv8", |
| ], |
| ), |
| ], |
| platforms = (APPLE, ANDROID, CXX, WINDOWS), |
| preferred_linkage = "static", |
| preprocessor_flags = [ |
| "-DXNN_LOG_LEVEL=0", |
| ], |
| visibility = ["PUBLIC"], |
| windows_clang_compiler_flags_override = WINDOWS_FLAGS + WINDOWS_CLANG_COMPILER_FLAGS, |
| windows_compiler_flags_override = WINDOWS_FLAGS, |
| deps = [ |
| ":interface", |
| ":jit_memory", |
| third_party("FP16"), |
| ], |
| ) |
| |
| fb_xplat_cxx_library( |
| name = "ukernels_asm_aarch64", |
| srcs = AARCH64_ASM_MICROKERNEL_SRCS, |
| headers = subdir_glob([ |
| ("XNNPACK/src", "xnnpack/assembly.h"), |
| ("XNNPACK/src", "**/*.S"), |
| ]), |
| header_namespace = "", |
| apple_sdks = (IOS, MACOSX, APPLETVOS), |
| compiler_flags = [ |
| "-O2", |
| ] + select({ |
| "DEFAULT": [], |
| "ovr_config//cpu:arm64": [ |
| "-march=armv8.2-a+fp16+dotprod", |
| ], |
| }), |
| fbobjc_preprocessor_flags = [ |
| "-DXNN_PRIVATE=", |
| "-DXNN_INTERNAL=", |
| ], |
| labels = labels, |
| platform_compiler_flags = [ |
| ( |
| "(aarch64|arm64)", |
| [ |
| "-march=armv8.2-a+fp16+dotprod", |
| ], |
| ), |
| ], |
| preferred_linkage = "static", |
| preprocessor_flags = [ |
| "-DXNN_LOG_LEVEL=0", |
| ], |
| visibility = ["PUBLIC"], |
| windows_clang_compiler_flags_override = WINDOWS_FLAGS + WINDOWS_CLANG_COMPILER_FLAGS, |
| windows_compiler_flags_override = WINDOWS_FLAGS, |
| deps = [ |
| ":interface", |
| ":jit_memory", |
| third_party("FP16"), |
| ], |
| ) |
| |
| fb_xplat_cxx_library( |
| name = "arm64_lib", |
| apple_sdks = (IOS, MACOSX, APPLETVOS), |
| labels = labels, |
| preferred_linkage = "static", |
| visibility = ["PUBLIC"], |
| deps = [ |
| ":jit_memory", |
| ":ukernels_asm_aarch64", |
| ":ukernels_neon", |
| ":ukernels_neon_aarch64", |
| ":ukernels_neon_dot_fp16arith", |
| ":ukernels_neon_dot_fp16arith_aarch64", |
| ":ukernels_neon_dot", |
| ":ukernels_neon_dot_aarch64", |
| ":ukernels_neon_fma", |
| ":ukernels_neon_fp16", |
| ":ukernels_neon_fp16arith", |
| ":ukernels_neon_fp16arith_aarch64", |
| ":ukernels_neon_v8", |
| ":ukernels_neonfma_aarch64", |
| ":ukernels_neonfma_i8mm", |
| ], |
| ) |
| |
| fb_xplat_cxx_library( |
| name = "x86_and_x86_64_lib", |
| apple_sdks = (IOS, MACOSX, APPLETVOS), |
| labels = labels, |
| preferred_linkage = "static", |
| visibility = ["PUBLIC"], |
| deps = [ |
| ":ukernels_avx", |
| ":ukernels_avx2", |
| ":ukernels_avx512", |
| ":ukernels_avx512skx", |
| ":ukernels_f16c", |
| ":ukernels_fma3", |
| ":ukernels_sse", |
| ":ukernels_sse2", |
| ":ukernels_sse41", |
| ":ukernels_ssse3", |
| ":ukernels_xop", |
| ":ukernels_avx512vbmi", |
| ":ukernels_avx512vnni", |
| ":ukernels_avx512vnnigfni", |
| # ":ukernels_avxvnni" Excluding avxvnni microkernels because they fail on older compilers |
| ], |
| ) |
| |
| fb_xplat_cxx_library( |
| name = "x86_and_x86_64_lib_ovr_win32", |
| apple_sdks = (IOS, MACOSX, APPLETVOS), |
| labels = labels, |
| preferred_linkage = "static", |
| visibility = ["PUBLIC"], |
| deps = [ |
| ":ukernels_avx2_ovr_win32", |
| ":ukernels_avx512_ovr_win32", |
| ":ukernels_avx512skx_ovr_win32", |
| ":ukernels_avx_ovr_win32", |
| ":ukernels_f16c_ovr_win32", |
| ":ukernels_fma3_ovr_win32", |
| ":ukernels_sse2_ovr_win32", |
| ":ukernels_sse41_ovr_win32", |
| ":ukernels_sse_ovr_win32", |
| ":ukernels_ssse3_ovr_win32", |
| ":ukernels_xop_ovr_win32", |
| ":ukernels_avx512vbmi", |
| ":ukernels_avx512vnni_ovr_win32", |
| ":ukernels_avx512vnnigfni_ovr_win32", |
| # ":ukernels_avxvnni_ovr_win32" Excluding avxvnni microkernels because they fail on older compilers |
| ], |
| ) |
| |
| fb_xplat_cxx_library( |
| name = "arm_lib", |
| apple_sdks = (IOS, MACOSX, APPLETVOS), |
| labels = labels, |
| preferred_linkage = "static", |
| visibility = ["PUBLIC"], |
| deps = [ |
| ":jit_memory", |
| ":ukernels_armsimd32", |
| ":ukernels_asm_aarch32", |
| ":ukernels_asm_aarch64", |
| ":ukernels_neon", |
| ":ukernels_neon_aarch64", |
| ":ukernels_neon_dot", |
| ":ukernels_neon_dot_aarch64", |
| ":ukernels_neon_dot_fp16arith", |
| ":ukernels_neon_dot_fp16arith_aarch64", |
| ":ukernels_neon_fma", |
| ":ukernels_neon_fp16", |
| ":ukernels_neon_fp16arith", |
| ":ukernels_neon_fp16arith_aarch64", |
| ":ukernels_neon_v8", |
| ":ukernels_neonfma_aarch64", |
| ":ukernels_neonfma_i8mm", |
| ":ukernels_fp16arith", |
| ], |
| ) |
| |
| fb_xplat_cxx_library( |
| name = "armv7_lib", |
| apple_sdks = (IOS, MACOSX, APPLETVOS), |
| labels = labels, |
| preferred_linkage = "static", |
| visibility = ["PUBLIC"], |
| deps = [ |
| ":jit_memory", |
| ":ukernels_asm_aarch32", |
| ":ukernels_neon", |
| ":ukernels_neon_dot", |
| ":ukernels_neon_fma", |
| ":ukernels_neon_v8", |
| ], |
| ) |
| |
| fb_xplat_cxx_library( |
| name = "prod_ukernels", |
| apple_sdks = (IOS, MACOSX, APPLETVOS), |
| labels = labels, |
| preferred_linkage = "static", |
| visibility = ["PUBLIC"], |
| deps = [ |
| ":ukernels_scalar", |
| ] + select({ |
| "DEFAULT": [ |
| ":arm_lib", |
| ":x86_and_x86_64_lib", |
| ], |
| "ovr_config//os:windows": [":x86_and_x86_64_lib_ovr_win32"] if XNNPACK_WINDOWS_AVX512F_ENABLED else [ |
| ":arm_lib", |
| ":x86_and_x86_64_lib", |
| ], |
| # doesn't cover iphonesimulator-x86_64 |
| "ovr_config//runtime:arm64-linux-ubuntu-neon": [":arm64_lib"], |
| "ovr_config//runtime:platform010": [":x86_and_x86_64_lib"], |
| }), |
| ) |
| |
| fb_xplat_cxx_library( |
| name = "XNNPACK", |
| apple_sdks = (IOS, MACOSX, APPLETVOS), |
| labels = labels, |
| deps = [ |
| ":subgraph", |
| ":tables", |
| ":prod_ukernels", |
| third_party("cpuinfo"), |
| third_party("pthreadpool"), |
| ], |
| exported_headers = { |
| "xnnpack.h": "XNNPACK/include/xnnpack.h", |
| }, |
| fbobjc_preprocessor_flags = [ |
| "-DXNN_PRIVATE=", |
| "-DXNN_INTERNAL=", |
| ], |
| header_namespace = "", |
| headers = subdir_glob([ |
| ("XNNPACK/src", "**/*.h"), |
| ("XNNPACK/include", "**/*.h"), |
| ]), |
| platforms = (APPLE, ANDROID, CXX, WINDOWS), |
| preferred_linkage = "static", |
| preprocessor_flags = [ |
| "-DXNN_LOG_LEVEL=0", |
| "-DXNN_NO_Q8_OPERATORS", |
| "-DXNN_NO_F16_OPERATORS", |
| "-DXNN_NO_NCHW_OPERATORS", |
| "-DXNN_NO_QU8_OPERATORS", |
| "-DXNN_NO_U8_OPERATORS", |
| "-DXNN_NO_X32_OPERATORS", |
| "-DXNN_NO_X8_OPERATORS", |
| "-DXNN_ENABLE_MEMOPT", |
| "-DXNN_ENABLE_SPARSE=0", |
| "-DXNN_ENABLE_JIT=0", |
| "-DXNN_ENABLE_ASSEMBLY", |
| "-DXNN_ENABLE_GEMM_M_SPECIALIZATION", |
| "-DXNN_ENABLE_ARM_DOTPROD", |
| "-DXNN_ENABLE_CPUINFO", |
| "-DXNN_ENABLE_ARM_I8MM=1", |
| "-DXNN_ENABLE_ARM_FP16_VECTOR=1", |
| "-DXNN_ENABLE_AVXVNNI=0", |
| ], |
| srcs = XNNPACK_SRCS + LOGGING_SRCS + OPERATOR_SRCS + [ |
| "XNNPACK/src/configs/hardware-config.c", |
| "XNNPACK/src/microkernel-utils.c", |
| "XNNPACK/src/operator-run.c", |
| "XNNPACK/src/packing.c", |
| "XNNPACK/src/cache.c", |
| "XNNPACK/src/indirection.c", |
| "XNNPACK/src/operator-utils.c", |
| "XNNPACK/src/normalization.c", |
| "XNNPACK/src/allocator.c", |
| "XNNPACK/src/memory.c", |
| "XNNPACK/src/mutex.c", |
| "XNNPACK/src/microparams-init.c", |
| "XNNPACK/src/operators/post-operation.c", |
| ], |
| visibility = ["PUBLIC"], |
| windows_clang_compiler_flags_override = (WINDOWS_FLAGS + WINDOWS_CLANG_COMPILER_FLAGS) if XNNPACK_WINDOWS_AVX512F_ENABLED else WINDOWS_FLAGS, |
| windows_compiler_flags_override = WINDOWS_FLAGS if XNNPACK_WINDOWS_AVX512F_ENABLED else [], |
| ) |