load("@fbcode_macros//build_defs:cpp_library.bzl", "cpp_library")

oncall("fbcode_entropy_wardens_folly")

cpp_library(
    name = "avx512_crc32c_v8s3x4",
    srcs = [
        "avx512_crc32c_v8s3x4.cpp",
    ],
    headers = [
        "avx512_crc32c_v8s3x4.h",
    ],
    arch_preprocessor_flags = {
        "x86_64": [
            "-mavx512f",
            "-mavx512vl",
            "-mpclmul",
        ],
    },
    exported_deps = [
        "//folly:portability",
    ],
)

cpp_library(
    name = "sse_crc32c_v8s3x3",
    srcs = [
        "sse_crc32c_v8s3x3.cpp",
    ],
    headers = [
        "sse_crc32c_v8s3x3.h",
    ],
    exported_deps = [
        "//folly:portability",
    ],
)

cpp_library(
    name = "neon_crc32c_v3s4x2e_v2",
    srcs = [
        "neon_crc32c_v3s4x2e_v2.cpp",
    ],
    headers = [
        "neon_crc32c_v3s4x2e_v2.h",
    ],
    arch_preprocessor_flags = {
        "aarch64": [
            "-march=armv8-a+crypto+crc",
        ],
    },
    deps = [
        "//folly:portability",
        "//folly/system:aux_vector",
    ],
)

cpp_library(
    name = "neon_eor3_crc32c_v8s2x4_s3",
    srcs = [
        "neon_eor3_crc32c_v8s2x4_s3.cpp",
    ],
    headers = [
        "neon_eor3_crc32c_v8s2x4_s3.h",
    ],
    arch_preprocessor_flags = {
        "aarch64": [
            "-march=armv8-a+crypto+crc+sha3",
        ],
    },
    deps = [
        "//folly:portability",
        "//folly/system:aux_vector",
    ],
)
