1*412f47f9SXin Li /* 2*412f47f9SXin Li * Public API. 3*412f47f9SXin Li * 4*412f47f9SXin Li * Copyright (c) 2019-2023, Arm Limited. 5*412f47f9SXin Li * SPDX-License-Identifier: MIT OR Apache-2.0 WITH LLVM-exception 6*412f47f9SXin Li */ 7*412f47f9SXin Li 8*412f47f9SXin Li #include <stddef.h> 9*412f47f9SXin Li 10*412f47f9SXin Li /* restrict is not needed, but kept for documenting the interface contract. */ 11*412f47f9SXin Li #ifndef __restrict 12*412f47f9SXin Li # define __restrict 13*412f47f9SXin Li #endif 14*412f47f9SXin Li 15*412f47f9SXin Li #if __aarch64__ 16*412f47f9SXin Li void *__memcpy_aarch64 (void *__restrict, const void *__restrict, size_t); 17*412f47f9SXin Li void *__memmove_aarch64 (void *, const void *, size_t); 18*412f47f9SXin Li void *__memset_aarch64 (void *, int, size_t); 19*412f47f9SXin Li void *__memchr_aarch64 (const void *, int, size_t); 20*412f47f9SXin Li void *__memrchr_aarch64 (const void *, int, size_t); 21*412f47f9SXin Li int __memcmp_aarch64 (const void *, const void *, size_t); 22*412f47f9SXin Li char *__strcpy_aarch64 (char *__restrict, const char *__restrict); 23*412f47f9SXin Li char *__stpcpy_aarch64 (char *__restrict, const char *__restrict); 24*412f47f9SXin Li int __strcmp_aarch64 (const char *, const char *); 25*412f47f9SXin Li char *__strchr_aarch64 (const char *, int); 26*412f47f9SXin Li char *__strrchr_aarch64 (const char *, int); 27*412f47f9SXin Li char *__strchrnul_aarch64 (const char *, int ); 28*412f47f9SXin Li size_t __strlen_aarch64 (const char *); 29*412f47f9SXin Li size_t __strnlen_aarch64 (const char *, size_t); 30*412f47f9SXin Li int __strncmp_aarch64 (const char *, const char *, size_t); 31*412f47f9SXin Li void * __memchr_aarch64_mte (const void *, int, size_t); 32*412f47f9SXin Li char *__strchr_aarch64_mte (const char *, int); 33*412f47f9SXin Li char * __strchrnul_aarch64_mte (const char *, int ); 34*412f47f9SXin Li size_t __strlen_aarch64_mte (const char *); 35*412f47f9SXin Li char *__strrchr_aarch64_mte (const char *, int); 36*412f47f9SXin Li #if __ARM_NEON 37*412f47f9SXin Li void *__memcpy_aarch64_simd (void *__restrict, const void *__restrict, size_t); 38*412f47f9SXin Li void *__memmove_aarch64_simd (void *, const void *, size_t); 39*412f47f9SXin Li #endif 40*412f47f9SXin Li # if __ARM_FEATURE_SVE 41*412f47f9SXin Li void *__memcpy_aarch64_sve (void *__restrict, const void *__restrict, size_t); 42*412f47f9SXin Li void *__memmove_aarch64_sve (void *__restrict, const void *__restrict, size_t); 43*412f47f9SXin Li void *__memchr_aarch64_sve (const void *, int, size_t); 44*412f47f9SXin Li int __memcmp_aarch64_sve (const void *, const void *, size_t); 45*412f47f9SXin Li char *__strchr_aarch64_sve (const char *, int); 46*412f47f9SXin Li char *__strrchr_aarch64_sve (const char *, int); 47*412f47f9SXin Li char *__strchrnul_aarch64_sve (const char *, int ); 48*412f47f9SXin Li int __strcmp_aarch64_sve (const char *, const char *); 49*412f47f9SXin Li char *__strcpy_aarch64_sve (char *__restrict, const char *__restrict); 50*412f47f9SXin Li char *__stpcpy_aarch64_sve (char *__restrict, const char *__restrict); 51*412f47f9SXin Li size_t __strlen_aarch64_sve (const char *); 52*412f47f9SXin Li size_t __strnlen_aarch64_sve (const char *, size_t); 53*412f47f9SXin Li int __strncmp_aarch64_sve (const char *, const char *, size_t); 54*412f47f9SXin Li # endif 55*412f47f9SXin Li # if WANT_MOPS 56*412f47f9SXin Li void *__memcpy_aarch64_mops (void *__restrict, const void *__restrict, size_t); 57*412f47f9SXin Li void *__memmove_aarch64_mops (void *__restrict, const void *__restrict, size_t); 58*412f47f9SXin Li void *__memset_aarch64_mops (void *, int, size_t); 59*412f47f9SXin Li # endif 60*412f47f9SXin Li # if __ARM_FEATURE_MEMORY_TAGGING 61*412f47f9SXin Li void *__mtag_tag_region (void *, size_t); 62*412f47f9SXin Li void *__mtag_tag_zero_region (void *, size_t); 63*412f47f9SXin Li # endif 64*412f47f9SXin Li #elif __arm__ 65*412f47f9SXin Li void *__memcpy_arm (void *__restrict, const void *__restrict, size_t); 66*412f47f9SXin Li void *__memset_arm (void *, int, size_t); 67*412f47f9SXin Li void *__memchr_arm (const void *, int, size_t); 68*412f47f9SXin Li char *__strcpy_arm (char *__restrict, const char *__restrict); 69*412f47f9SXin Li int __strcmp_arm (const char *, const char *); 70*412f47f9SXin Li int __strcmp_armv6m (const char *, const char *); 71*412f47f9SXin Li size_t __strlen_armv6t2 (const char *); 72*412f47f9SXin Li #endif 73