131914882SAlex Richardson /* 231914882SAlex Richardson * Public API. 331914882SAlex Richardson * 45a02ffc3SAndrew Turner * Copyright (c) 2019-2023, Arm Limited. 5072a4ba8SAndrew Turner * SPDX-License-Identifier: MIT OR Apache-2.0 WITH LLVM-exception 631914882SAlex Richardson */ 731914882SAlex Richardson 831914882SAlex Richardson #include <stddef.h> 931914882SAlex Richardson 1031914882SAlex Richardson /* restrict is not needed, but kept for documenting the interface contract. */ 1131914882SAlex Richardson #ifndef __restrict 1231914882SAlex Richardson # define __restrict 1331914882SAlex Richardson #endif 1431914882SAlex Richardson 1531914882SAlex Richardson #if __aarch64__ 1631914882SAlex Richardson void *__memcpy_aarch64 (void *__restrict, const void *__restrict, size_t); 1731914882SAlex Richardson void *__memmove_aarch64 (void *, const void *, size_t); 1831914882SAlex Richardson void *__memset_aarch64 (void *, int, size_t); 1931914882SAlex Richardson void *__memchr_aarch64 (const void *, int, size_t); 2031914882SAlex Richardson void *__memrchr_aarch64 (const void *, int, size_t); 2131914882SAlex Richardson int __memcmp_aarch64 (const void *, const void *, size_t); 2231914882SAlex Richardson char *__strcpy_aarch64 (char *__restrict, const char *__restrict); 2331914882SAlex Richardson char *__stpcpy_aarch64 (char *__restrict, const char *__restrict); 2431914882SAlex Richardson int __strcmp_aarch64 (const char *, const char *); 2531914882SAlex Richardson char *__strchr_aarch64 (const char *, int); 2631914882SAlex Richardson char *__strrchr_aarch64 (const char *, int); 2731914882SAlex Richardson char *__strchrnul_aarch64 (const char *, int ); 2831914882SAlex Richardson size_t __strlen_aarch64 (const char *); 2931914882SAlex Richardson size_t __strnlen_aarch64 (const char *, size_t); 3031914882SAlex Richardson int __strncmp_aarch64 (const char *, const char *, size_t); 3131914882SAlex Richardson void * __memchr_aarch64_mte (const void *, int, size_t); 3231914882SAlex Richardson char *__strchr_aarch64_mte (const char *, int); 3331914882SAlex Richardson char * __strchrnul_aarch64_mte (const char *, int ); 3431914882SAlex Richardson size_t __strlen_aarch64_mte (const char *); 3531914882SAlex Richardson char *__strrchr_aarch64_mte (const char *, int); 3631914882SAlex Richardson void *__memcpy_aarch64_simd (void *__restrict, const void *__restrict, size_t); 3731914882SAlex Richardson void *__memmove_aarch64_simd (void *, const void *, size_t); 3831914882SAlex Richardson # if __ARM_FEATURE_SVE 39d49ad206SAndrew Turner void *__memcpy_aarch64_sve (void *__restrict, const void *__restrict, size_t); 40d49ad206SAndrew Turner void *__memmove_aarch64_sve (void *__restrict, const void *__restrict, size_t); 41*f3087befSAndrew Turner void *__memset_aarch64_sve (void *, int, size_t); 4231914882SAlex Richardson void *__memchr_aarch64_sve (const void *, int, size_t); 4331914882SAlex Richardson int __memcmp_aarch64_sve (const void *, const void *, size_t); 4431914882SAlex Richardson char *__strchr_aarch64_sve (const char *, int); 4531914882SAlex Richardson char *__strrchr_aarch64_sve (const char *, int); 4631914882SAlex Richardson char *__strchrnul_aarch64_sve (const char *, int ); 4731914882SAlex Richardson int __strcmp_aarch64_sve (const char *, const char *); 4831914882SAlex Richardson char *__strcpy_aarch64_sve (char *__restrict, const char *__restrict); 4931914882SAlex Richardson char *__stpcpy_aarch64_sve (char *__restrict, const char *__restrict); 5031914882SAlex Richardson size_t __strlen_aarch64_sve (const char *); 5131914882SAlex Richardson size_t __strnlen_aarch64_sve (const char *, size_t); 5231914882SAlex Richardson int __strncmp_aarch64_sve (const char *, const char *, size_t); 5331914882SAlex Richardson # endif 545a02ffc3SAndrew Turner # if WANT_MOPS 555a02ffc3SAndrew Turner void *__memcpy_aarch64_mops (void *__restrict, const void *__restrict, size_t); 565a02ffc3SAndrew Turner void *__memmove_aarch64_mops (void *__restrict, const void *__restrict, size_t); 575a02ffc3SAndrew Turner void *__memset_aarch64_mops (void *, int, size_t); 585a02ffc3SAndrew Turner # endif 5931914882SAlex Richardson # if __ARM_FEATURE_MEMORY_TAGGING 6031914882SAlex Richardson void *__mtag_tag_region (void *, size_t); 6131914882SAlex Richardson void *__mtag_tag_zero_region (void *, size_t); 6231914882SAlex Richardson # endif 6331914882SAlex Richardson #elif __arm__ 6431914882SAlex Richardson void *__memcpy_arm (void *__restrict, const void *__restrict, size_t); 6531914882SAlex Richardson void *__memset_arm (void *, int, size_t); 6631914882SAlex Richardson void *__memchr_arm (const void *, int, size_t); 6731914882SAlex Richardson char *__strcpy_arm (char *__restrict, const char *__restrict); 6831914882SAlex Richardson int __strcmp_arm (const char *, const char *); 6931914882SAlex Richardson int __strcmp_armv6m (const char *, const char *); 7031914882SAlex Richardson size_t __strlen_armv6t2 (const char *); 7131914882SAlex Richardson #endif 72