131914882SAlex Richardson /* 231914882SAlex Richardson * Public API. 331914882SAlex Richardson * 431914882SAlex Richardson * Copyright (c) 2019-2021, Arm Limited. 531914882SAlex Richardson * SPDX-License-Identifier: MIT 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 #if __ARM_NEON 3731914882SAlex Richardson void *__memcpy_aarch64_simd (void *__restrict, const void *__restrict, size_t); 3831914882SAlex Richardson void *__memmove_aarch64_simd (void *, const void *, size_t); 3931914882SAlex Richardson #endif 4031914882SAlex Richardson # if __ARM_FEATURE_SVE 41*d49ad206SAndrew Turner void *__memcpy_aarch64_sve (void *__restrict, const void *__restrict, size_t); 42*d49ad206SAndrew Turner void *__memmove_aarch64_sve (void *__restrict, const void *__restrict, size_t); 4331914882SAlex Richardson void *__memchr_aarch64_sve (const void *, int, size_t); 4431914882SAlex Richardson int __memcmp_aarch64_sve (const void *, const void *, size_t); 4531914882SAlex Richardson char *__strchr_aarch64_sve (const char *, int); 4631914882SAlex Richardson char *__strrchr_aarch64_sve (const char *, int); 4731914882SAlex Richardson char *__strchrnul_aarch64_sve (const char *, int ); 4831914882SAlex Richardson int __strcmp_aarch64_sve (const char *, const char *); 4931914882SAlex Richardson char *__strcpy_aarch64_sve (char *__restrict, const char *__restrict); 5031914882SAlex Richardson char *__stpcpy_aarch64_sve (char *__restrict, const char *__restrict); 5131914882SAlex Richardson size_t __strlen_aarch64_sve (const char *); 5231914882SAlex Richardson size_t __strnlen_aarch64_sve (const char *, size_t); 5331914882SAlex Richardson int __strncmp_aarch64_sve (const char *, const char *, size_t); 5431914882SAlex Richardson # endif 5531914882SAlex Richardson # if __ARM_FEATURE_MEMORY_TAGGING 5631914882SAlex Richardson void *__mtag_tag_region (void *, size_t); 5731914882SAlex Richardson void *__mtag_tag_zero_region (void *, size_t); 5831914882SAlex Richardson # endif 5931914882SAlex Richardson #elif __arm__ 6031914882SAlex Richardson void *__memcpy_arm (void *__restrict, const void *__restrict, size_t); 6131914882SAlex Richardson void *__memset_arm (void *, int, size_t); 6231914882SAlex Richardson void *__memchr_arm (const void *, int, size_t); 6331914882SAlex Richardson char *__strcpy_arm (char *__restrict, const char *__restrict); 6431914882SAlex Richardson int __strcmp_arm (const char *, const char *); 6531914882SAlex Richardson int __strcmp_armv6m (const char *, const char *); 6631914882SAlex Richardson size_t __strlen_armv6t2 (const char *); 6731914882SAlex Richardson #endif 68