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