488 lines
12 KiB
Plaintext
488 lines
12 KiB
Plaintext
load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_library")
|
|
load("@pytorch//third_party:sleef.bzl", "sleef_cc_library")
|
|
|
|
SLEEF_COPTS = [
|
|
"-DHAVE_MALLOC_USABLE_SIZE=1",
|
|
"-DHAVE_MMAP=1",
|
|
"-DHAVE_SHM_OPEN=1",
|
|
"-DHAVE_SHM_UNLINK=1",
|
|
"-DIDEEP_USE_MKL",
|
|
"-DDNNL_CPU_RUNTIME=TBB",
|
|
"-DONNX_ML=1",
|
|
"-DONNX_NAMESPACE=onnx",
|
|
"-D_FILE_OFFSET_BITS=64",
|
|
"-ffp-contract=off",
|
|
"-fno-math-errno",
|
|
"-fno-trapping-math",
|
|
"-DCAFFE2_USE_GLOO",
|
|
"-std=gnu99",
|
|
]
|
|
|
|
SLEEF_COMMON_TARGET_COPTS = [
|
|
"-DSLEEF_STATIC_LIBS=1",
|
|
"-DENABLE_ALIAS=1",
|
|
]
|
|
|
|
SLEEF_PRIVATE_HEADERS = glob([
|
|
"build/include/*.h",
|
|
"src/arch/*.h",
|
|
"src/common/*.h",
|
|
"src/libm/*.h",
|
|
"src/libm/include/*.h",
|
|
])
|
|
|
|
SLEEF_PUBLIC_HEADERS = [
|
|
":sleef_h",
|
|
]
|
|
|
|
SLEEF_PRIVATE_INCLUDES = [
|
|
"-Iexternal/sleef/src/arch",
|
|
"-Iexternal/sleef/src/common",
|
|
"-Iexternal/sleef/src/libm",
|
|
]
|
|
|
|
SLEEF_PUBLIC_INCLUDES = [
|
|
"build/include",
|
|
]
|
|
|
|
SLEEF_VISIBILITY = [
|
|
"//visibility:public",
|
|
]
|
|
|
|
cc_binary(
|
|
name = "mkalias",
|
|
srcs = [
|
|
"src/libm/funcproto.h",
|
|
"src/libm/mkalias.c",
|
|
],
|
|
)
|
|
|
|
genrule(
|
|
name = "alias_avx512f_h",
|
|
outs = ["alias_avx512f.h"],
|
|
cmd = "{ " + "; ".join([
|
|
"$(location :mkalias) -16 __m512 __m512i e avx512f",
|
|
"$(location :mkalias) 8 __m512d __m256i e avx512f",
|
|
]) + "; } > $@",
|
|
tools = [":mkalias"],
|
|
)
|
|
|
|
cc_binary(
|
|
name = "mkdisp",
|
|
srcs = [
|
|
"src/libm/funcproto.h",
|
|
"src/libm/mkdisp.c",
|
|
],
|
|
copts = SLEEF_COPTS,
|
|
)
|
|
|
|
genrule(
|
|
name = "dispavx_c",
|
|
srcs = ["src/libm/dispavx.c.org"],
|
|
outs = ["dispavx.c"],
|
|
cmd = "{ cat $(location src/libm/dispavx.c.org); $(location :mkdisp) 4 8 __m256d __m256 __m128i avx fma4 avx2; } > $@",
|
|
tools = [":mkdisp"],
|
|
)
|
|
|
|
genrule(
|
|
name = "dispsse_c",
|
|
srcs = ["src/libm/dispsse.c.org"],
|
|
outs = ["dispsse.c"],
|
|
cmd = "{ cat $(location src/libm/dispsse.c.org); $(location :mkdisp) 2 4 __m128d __m128 __m128i sse2 sse4 avx2128; } > $@",
|
|
tools = [":mkdisp"],
|
|
)
|
|
|
|
cc_binary(
|
|
name = "mkrename",
|
|
srcs = [
|
|
"src/libm/funcproto.h",
|
|
"src/libm/mkrename.c",
|
|
],
|
|
)
|
|
|
|
genrule(
|
|
name = "renameavx_h",
|
|
outs = ["renameavx.h"],
|
|
cmd = "$(location :mkrename) cinz_ 4 8 avx > $@",
|
|
tools = [":mkrename"],
|
|
)
|
|
|
|
genrule(
|
|
name = "renameavx2_h",
|
|
outs = ["renameavx2.h"],
|
|
cmd = "$(location :mkrename) finz_ 4 8 avx2 > $@",
|
|
tools = [":mkrename"],
|
|
)
|
|
|
|
genrule(
|
|
name = "renameavx2128_h",
|
|
outs = ["renameavx2128.h"],
|
|
cmd = "$(location :mkrename) finz_ 2 4 avx2128 > $@",
|
|
tools = [":mkrename"],
|
|
)
|
|
|
|
genrule(
|
|
name = "renameavx512f_h",
|
|
outs = ["renameavx512f.h"],
|
|
cmd = "$(location :mkrename) finz_ 8 16 avx512f > $@",
|
|
tools = [":mkrename"],
|
|
)
|
|
|
|
genrule(
|
|
name = "renameavx512fnofma_h",
|
|
outs = ["renameavx512fnofma.h"],
|
|
cmd = "$(location :mkrename) cinz_ 8 16 avx512fnofma > $@",
|
|
tools = [":mkrename"],
|
|
)
|
|
|
|
genrule(
|
|
name = "renamefma4_h",
|
|
outs = ["renamefma4.h"],
|
|
cmd = "$(location :mkrename) finz_ 4 8 fma4 > $@",
|
|
tools = [":mkrename"],
|
|
)
|
|
|
|
genrule(
|
|
name = "renamepurec_scalar_h",
|
|
outs = ["renamepurec_scalar.h"],
|
|
cmd = "$(location :mkrename) cinz_ 1 1 purec > $@",
|
|
tools = [":mkrename"],
|
|
)
|
|
|
|
genrule(
|
|
name = "renamepurecfma_scalar_h",
|
|
outs = ["renamepurecfma_scalar.h"],
|
|
cmd = "$(location :mkrename) finz_ 1 1 purecfma > $@",
|
|
tools = [":mkrename"],
|
|
)
|
|
|
|
genrule(
|
|
name = "renamesse2_h",
|
|
outs = ["renamesse2.h"],
|
|
cmd = "$(location :mkrename) cinz_ 2 4 sse2 > $@",
|
|
tools = [":mkrename"],
|
|
)
|
|
|
|
genrule(
|
|
name = "renamesse4_h",
|
|
outs = ["renamesse4.h"],
|
|
cmd = "$(location :mkrename) cinz_ 2 4 sse4 > $@",
|
|
tools = [":mkrename"],
|
|
)
|
|
|
|
genrule(
|
|
name = "sleef_h",
|
|
srcs = [
|
|
"src/libm/sleeflibm_header.h.org.in",
|
|
"src/libm/sleeflibm_footer.h.org",
|
|
],
|
|
outs = ["build/include/sleef.h"],
|
|
cmd = "{ " + "; ".join([
|
|
"cat $(location src/libm/sleeflibm_header.h.org.in)",
|
|
"$(location :mkrename) cinz_ 2 4 __m128d __m128 __m128i __m128i __SSE2__",
|
|
"$(location :mkrename) cinz_ 2 4 __m128d __m128 __m128i __m128i __SSE2__ sse2",
|
|
"$(location :mkrename) cinz_ 2 4 __m128d __m128 __m128i __m128i __SSE2__ sse4",
|
|
"$(location :mkrename) cinz_ 4 8 __m256d __m256 __m128i \"struct { __m128i x, y; }\" __AVX__",
|
|
"$(location :mkrename) cinz_ 4 8 __m256d __m256 __m128i \"struct { __m128i x, y; }\" __AVX__ avx",
|
|
"$(location :mkrename) finz_ 4 8 __m256d __m256 __m128i \"struct { __m128i x, y; }\" __AVX__ fma4",
|
|
"$(location :mkrename) finz_ 4 8 __m256d __m256 __m128i __m256i __AVX__ avx2",
|
|
"$(location :mkrename) finz_ 2 4 __m128d __m128 __m128i __m128i __SSE2__ avx2128",
|
|
"$(location :mkrename) finz_ 8 16 __m512d __m512 __m256i __m512i __AVX512F__",
|
|
"$(location :mkrename) finz_ 8 16 __m512d __m512 __m256i __m512i __AVX512F__ avx512f",
|
|
"$(location :mkrename) cinz_ 8 16 __m512d __m512 __m256i __m512i __AVX512F__ avx512fnofma",
|
|
"$(location :mkrename) cinz_ 1 1 double float int32_t int32_t __STDC__ purec",
|
|
"$(location :mkrename) finz_ 1 1 double float int32_t int32_t FP_FAST_FMA purecfma",
|
|
"cat $(location src/libm/sleeflibm_footer.h.org)",
|
|
]) + "; } > $@",
|
|
tools = [":mkrename"],
|
|
)
|
|
|
|
cc_library(
|
|
name = "sleef",
|
|
srcs = [
|
|
"src/libm/rempitab.c",
|
|
"src/libm/sleefdp.c",
|
|
"src/libm/sleefsp.c",
|
|
],
|
|
hdrs = SLEEF_PUBLIC_HEADERS,
|
|
copts = SLEEF_PRIVATE_INCLUDES + SLEEF_COPTS + SLEEF_COMMON_TARGET_COPTS + [
|
|
"-DDORENAME=1",
|
|
"-DENABLEFLOAT128=1",
|
|
"-Wno-unused-result",
|
|
],
|
|
includes = SLEEF_PUBLIC_INCLUDES,
|
|
# -lgcc resolves
|
|
# U __addtf3
|
|
# U __eqtf2
|
|
# U __fixtfdi
|
|
# U __floatditf
|
|
# U __gttf2
|
|
# U __lttf2
|
|
# U __multf3
|
|
# U __subtf3
|
|
# in bazel-bin/external/sleef/_objs/sleef/sleefqp.pic.o
|
|
linkopts = [
|
|
"-lgcc",
|
|
],
|
|
linkstatic = True,
|
|
visibility = SLEEF_VISIBILITY,
|
|
# The purpose of the lists in deps is to keep related pairs of
|
|
# libraries together. In particular, each pair that contains a *det*
|
|
# library originates with a sleef_cc_library().
|
|
deps = [
|
|
":common",
|
|
":dispavx",
|
|
":dispsse",
|
|
] + [
|
|
":sleefavx",
|
|
":sleefdetavx",
|
|
] + [
|
|
":sleefavx2",
|
|
":sleefdetavx2",
|
|
] + [
|
|
":sleefavx2128",
|
|
":sleefdetavx2128",
|
|
] + [
|
|
":sleefavx512f",
|
|
":sleefdetavx512f",
|
|
] + [
|
|
":sleefavx512fnofma",
|
|
":sleefdetavx512fnofma",
|
|
] + [
|
|
":sleeffma4",
|
|
":sleefdetfma4",
|
|
] + [
|
|
":sleefsse2",
|
|
":sleefdetsse2",
|
|
] + [
|
|
":sleefsse4",
|
|
":sleefdetsse4",
|
|
] + [
|
|
":sleefpurec_scalar",
|
|
":sleefdetpurec_scalar",
|
|
] + [
|
|
":sleefpurecfma_scalar",
|
|
":sleefdetpurecfma_scalar",
|
|
],
|
|
alwayslink = True,
|
|
)
|
|
|
|
cc_library(
|
|
name = "common",
|
|
srcs = SLEEF_PRIVATE_HEADERS + [
|
|
"src/common/common.c",
|
|
],
|
|
copts = SLEEF_PRIVATE_INCLUDES + SLEEF_COPTS + [
|
|
"-Wno-unused-result",
|
|
],
|
|
linkstatic = True,
|
|
visibility = SLEEF_VISIBILITY,
|
|
alwayslink = True,
|
|
)
|
|
|
|
cc_library(
|
|
name = "dispavx",
|
|
srcs = SLEEF_PRIVATE_HEADERS + SLEEF_PUBLIC_HEADERS + [
|
|
":dispavx_c",
|
|
],
|
|
copts = SLEEF_PRIVATE_INCLUDES + SLEEF_COPTS + SLEEF_COMMON_TARGET_COPTS + [
|
|
"-DENABLE_AVX2=1",
|
|
"-DENABLE_FMA4=1",
|
|
"-mavx",
|
|
],
|
|
includes = SLEEF_PUBLIC_INCLUDES,
|
|
linkstatic = True,
|
|
visibility = SLEEF_VISIBILITY,
|
|
alwayslink = True,
|
|
)
|
|
|
|
cc_library(
|
|
name = "dispsse",
|
|
srcs = SLEEF_PRIVATE_HEADERS + SLEEF_PUBLIC_HEADERS + [
|
|
":dispsse_c",
|
|
],
|
|
copts = SLEEF_PRIVATE_INCLUDES + SLEEF_COPTS + SLEEF_COMMON_TARGET_COPTS + [
|
|
"-DENABLE_AVX2=1",
|
|
"-DENABLE_FMA4=1",
|
|
"-msse2",
|
|
],
|
|
includes = SLEEF_PUBLIC_INCLUDES,
|
|
linkstatic = True,
|
|
visibility = SLEEF_VISIBILITY,
|
|
alwayslink = True,
|
|
)
|
|
|
|
sleef_cc_library(
|
|
name = "sleefavx512f",
|
|
srcs = SLEEF_PRIVATE_HEADERS + [
|
|
"src/libm/sleefsimddp.c",
|
|
"src/libm/sleefsimdsp.c",
|
|
":alias_avx512f_h",
|
|
":renameavx512f_h",
|
|
],
|
|
copts = SLEEF_PRIVATE_INCLUDES + SLEEF_COPTS + SLEEF_COMMON_TARGET_COPTS + [
|
|
"-DDORENAME=1",
|
|
"-DALIAS_NO_EXT_SUFFIX=\\\"alias_avx512f.h\\\"",
|
|
"-DENABLE_AVX512F=1",
|
|
"-mavx512f",
|
|
],
|
|
linkstatic = True,
|
|
visibility = SLEEF_VISIBILITY,
|
|
alwayslink = True,
|
|
)
|
|
|
|
sleef_cc_library(
|
|
name = "sleefavx512fnofma",
|
|
srcs = SLEEF_PRIVATE_HEADERS + [
|
|
"src/libm/sleefsimddp.c",
|
|
"src/libm/sleefsimdsp.c",
|
|
":renameavx512fnofma_h",
|
|
],
|
|
copts = SLEEF_PRIVATE_INCLUDES + SLEEF_COPTS + SLEEF_COMMON_TARGET_COPTS + [
|
|
"-DDORENAME=1",
|
|
"-DENABLE_AVX512FNOFMA=1",
|
|
"-mavx512f",
|
|
],
|
|
linkstatic = True,
|
|
visibility = SLEEF_VISIBILITY,
|
|
alwayslink = True,
|
|
)
|
|
|
|
sleef_cc_library(
|
|
name = "sleefavx",
|
|
srcs = SLEEF_PRIVATE_HEADERS + [
|
|
"src/libm/sleefsimddp.c",
|
|
"src/libm/sleefsimdsp.c",
|
|
":renameavx_h",
|
|
],
|
|
copts = SLEEF_PRIVATE_INCLUDES + SLEEF_COPTS + SLEEF_COMMON_TARGET_COPTS + [
|
|
"-DDORENAME=1",
|
|
"-DENABLE_AVX=1",
|
|
"-mavx",
|
|
],
|
|
linkstatic = True,
|
|
visibility = SLEEF_VISIBILITY,
|
|
alwayslink = True,
|
|
)
|
|
|
|
sleef_cc_library(
|
|
name = "sleefavx2",
|
|
srcs = SLEEF_PRIVATE_HEADERS + [
|
|
"src/libm/sleefsimddp.c",
|
|
"src/libm/sleefsimdsp.c",
|
|
":renameavx2_h",
|
|
],
|
|
copts = SLEEF_PRIVATE_INCLUDES + SLEEF_COPTS + SLEEF_COMMON_TARGET_COPTS + [
|
|
"-DDORENAME=1",
|
|
"-DENABLE_AVX2=1",
|
|
"-mavx2",
|
|
"-mfma",
|
|
],
|
|
linkstatic = True,
|
|
visibility = SLEEF_VISIBILITY,
|
|
alwayslink = True,
|
|
)
|
|
|
|
sleef_cc_library(
|
|
name = "sleefavx2128",
|
|
srcs = SLEEF_PRIVATE_HEADERS + [
|
|
"src/libm/sleefsimddp.c",
|
|
"src/libm/sleefsimdsp.c",
|
|
":renameavx2128_h",
|
|
],
|
|
copts = SLEEF_PRIVATE_INCLUDES + SLEEF_COPTS + SLEEF_COMMON_TARGET_COPTS + [
|
|
"-DDORENAME=1",
|
|
"-DENABLE_AVX2128=1",
|
|
"-mavx2",
|
|
"-mfma",
|
|
],
|
|
linkstatic = True,
|
|
visibility = SLEEF_VISIBILITY,
|
|
alwayslink = True,
|
|
)
|
|
|
|
sleef_cc_library(
|
|
name = "sleeffma4",
|
|
srcs = SLEEF_PRIVATE_HEADERS + [
|
|
"src/libm/sleefsimddp.c",
|
|
"src/libm/sleefsimdsp.c",
|
|
":renamefma4_h",
|
|
],
|
|
copts = SLEEF_PRIVATE_INCLUDES + SLEEF_COPTS + SLEEF_COMMON_TARGET_COPTS + [
|
|
"-DDORENAME=1",
|
|
"-DENABLE_FMA4=1",
|
|
"-mfma4",
|
|
],
|
|
linkstatic = True,
|
|
visibility = SLEEF_VISIBILITY,
|
|
alwayslink = True,
|
|
)
|
|
|
|
sleef_cc_library(
|
|
name = "sleefsse2",
|
|
srcs = SLEEF_PRIVATE_HEADERS + [
|
|
"src/libm/sleefsimddp.c",
|
|
"src/libm/sleefsimdsp.c",
|
|
":renamesse2_h",
|
|
],
|
|
copts = SLEEF_PRIVATE_INCLUDES + SLEEF_COPTS + SLEEF_COMMON_TARGET_COPTS + [
|
|
"-DDORENAME=1",
|
|
"-DENABLE_SSE2=1",
|
|
"-msse2",
|
|
],
|
|
linkstatic = True,
|
|
visibility = SLEEF_VISIBILITY,
|
|
alwayslink = True,
|
|
)
|
|
|
|
sleef_cc_library(
|
|
name = "sleefsse4",
|
|
srcs = SLEEF_PRIVATE_HEADERS + [
|
|
"src/libm/sleefsimddp.c",
|
|
"src/libm/sleefsimdsp.c",
|
|
":renamesse4_h",
|
|
],
|
|
copts = SLEEF_PRIVATE_INCLUDES + SLEEF_COPTS + SLEEF_COMMON_TARGET_COPTS + [
|
|
"-DDORENAME=1",
|
|
"-DENABLE_SSE4=1",
|
|
"-msse4.1",
|
|
],
|
|
linkstatic = True,
|
|
visibility = SLEEF_VISIBILITY,
|
|
alwayslink = True,
|
|
)
|
|
|
|
sleef_cc_library(
|
|
name = "sleefpurec_scalar",
|
|
srcs = SLEEF_PRIVATE_HEADERS + [
|
|
"src/libm/sleefsimddp.c",
|
|
"src/libm/sleefsimdsp.c",
|
|
":renamepurec_scalar_h",
|
|
],
|
|
copts = SLEEF_PRIVATE_INCLUDES + SLEEF_COPTS + SLEEF_COMMON_TARGET_COPTS + [
|
|
"-DDORENAME=1",
|
|
"-DENABLE_PUREC_SCALAR=1",
|
|
],
|
|
linkstatic = True,
|
|
visibility = SLEEF_VISIBILITY,
|
|
alwayslink = True,
|
|
)
|
|
|
|
sleef_cc_library(
|
|
name = "sleefpurecfma_scalar",
|
|
srcs = SLEEF_PRIVATE_HEADERS + [
|
|
"src/libm/sleefsimddp.c",
|
|
"src/libm/sleefsimdsp.c",
|
|
":renamepurecfma_scalar_h",
|
|
],
|
|
copts = SLEEF_PRIVATE_INCLUDES + SLEEF_COPTS + SLEEF_COMMON_TARGET_COPTS + [
|
|
"-DDORENAME=1",
|
|
"-DENABLE_PURECFMA_SCALAR=1",
|
|
"-mavx2",
|
|
"-mfma",
|
|
],
|
|
linkstatic = True,
|
|
visibility = SLEEF_VISIBILITY,
|
|
alwayslink = True,
|
|
)
|