function(add_bcmp bcmp_name) add_implementation(bcmp ${bcmp_name} SRCS ${LIBC_SOURCE_DIR}/src/strings/bcmp.cpp HDRS ${LIBC_SOURCE_DIR}/src/strings/bcmp.h DEPENDS libc.src.string.memory_utils.memory_utils ${ARGN} ) endfunction() if(${LIBC_TARGET_ARCHITECTURE_IS_X86}) add_bcmp(bcmp_x86_64_opt_sse2 COMPILE_OPTIONS -march=k8 REQUIRE SSE2) add_bcmp(bcmp_x86_64_opt_sse4 COMPILE_OPTIONS -march=nehalem REQUIRE SSE4_2) add_bcmp(bcmp_x86_64_opt_avx2 COMPILE_OPTIONS -march=haswell REQUIRE AVX2) add_bcmp(bcmp_x86_64_opt_avx512 COMPILE_OPTIONS -march=skylake-avx512 REQUIRE AVX512BW) add_bcmp(bcmp_opt_host COMPILE_OPTIONS ${LIBC_COMPILE_OPTIONS_NATIVE}) add_bcmp(bcmp) elseif(LIBC_TARGET_OS_IS_GPU) add_bcmp(bcmp) else() add_bcmp(bcmp_opt_host COMPILE_OPTIONS ${LIBC_COMPILE_OPTIONS_NATIVE}) add_bcmp(bcmp) endif() function(add_bzero bzero_name) add_implementation(bzero ${bzero_name} SRCS ${LIBC_SOURCE_DIR}/src/strings/bzero.cpp HDRS ${LIBC_SOURCE_DIR}/src/strings/bzero.h DEPENDS libc.src.string.memory_utils.inline_memset ${ARGN} ) endfunction() if(${LIBC_TARGET_ARCHITECTURE_IS_X86}) add_bzero(bzero_x86_64_opt_sse2 COMPILE_OPTIONS -march=k8 REQUIRE SSE2) add_bzero(bzero_x86_64_opt_sse4 COMPILE_OPTIONS -march=nehalem REQUIRE SSE4_2) add_bzero(bzero_x86_64_opt_avx2 COMPILE_OPTIONS -march=haswell REQUIRE AVX2) add_bzero(bzero_x86_64_opt_avx512 COMPILE_OPTIONS -march=skylake-avx512 REQUIRE AVX512F) add_bzero(bzero_opt_host COMPILE_OPTIONS ${LIBC_COMPILE_OPTIONS_NATIVE}) add_bzero(bzero) elseif(LIBC_TARGET_OS_IS_GPU) add_bzero(bzero) else() add_bzero(bzero_opt_host COMPILE_OPTIONS ${LIBC_COMPILE_OPTIONS_NATIVE}) add_bzero(bzero) endif() add_entrypoint_object( bcopy SRCS bcopy.cpp HDRS bcopy.h ) add_entrypoint_object( index SRCS index.cpp HDRS index.h DEPENDS libc.src.string.string_utils ) add_entrypoint_object( rindex SRCS rindex.cpp HDRS rindex.h DEPENDS libc.src.string.string_utils ) add_entrypoint_object( strcasecmp SRCS strcasecmp.cpp HDRS strcasecmp.h DEPENDS libc.src.__support.ctype_utils libc.src.string.memory_utils.inline_strcmp ) add_entrypoint_object( strncasecmp SRCS strncasecmp.cpp HDRS strncasecmp.h DEPENDS libc.src.__support.ctype_utils libc.src.string.memory_utils.inline_strcmp )