blob: cb351261d4039c20479d59602faba0e7115d841b [file] [log] [blame]
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 [],
)