1*0928368fSKristof Beyls /* 2*0928368fSKristof Beyls * Public API. 3*0928368fSKristof Beyls * 4*0928368fSKristof Beyls * Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 5*0928368fSKristof Beyls * See https://llvm.org/LICENSE.txt for license information. 6*0928368fSKristof Beyls * SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 7*0928368fSKristof Beyls */ 8*0928368fSKristof Beyls 9*0928368fSKristof Beyls #include <stddef.h> 10*0928368fSKristof Beyls 11*0928368fSKristof Beyls /* restrict is not needed, but kept for documenting the interface contract. */ 12*0928368fSKristof Beyls #ifndef __restrict 13*0928368fSKristof Beyls # define __restrict 14*0928368fSKristof Beyls #endif 15*0928368fSKristof Beyls 16*0928368fSKristof Beyls #if __aarch64__ 17*0928368fSKristof Beyls void *__memcpy_aarch64 (void *__restrict, const void *__restrict, size_t); 18*0928368fSKristof Beyls void *__memmove_aarch64 (void *, const void *, size_t); 19*0928368fSKristof Beyls void *__memset_aarch64 (void *, int, size_t); 20*0928368fSKristof Beyls void *__memchr_aarch64 (const void *, int, size_t); 21*0928368fSKristof Beyls int __memcmp_aarch64 (const void *, const void *, size_t); 22*0928368fSKristof Beyls char *__strcpy_aarch64 (char *__restrict, const char *__restrict); 23*0928368fSKristof Beyls char *__stpcpy_aarch64 (char *__restrict, const char *__restrict); 24*0928368fSKristof Beyls int __strcmp_aarch64 (const char *, const char *); 25*0928368fSKristof Beyls char *__strchr_aarch64 (const char *, int); 26*0928368fSKristof Beyls char *__strrchr_aarch64 (const char *, int); 27*0928368fSKristof Beyls char *__strchrnul_aarch64 (const char *, int ); 28*0928368fSKristof Beyls size_t __strlen_aarch64 (const char *); 29*0928368fSKristof Beyls size_t __strnlen_aarch64 (const char *, size_t); 30*0928368fSKristof Beyls int __strncmp_aarch64 (const char *, const char *, size_t); 31*0928368fSKristof Beyls char *__strchr_aarch64_mte (const char *, int); 32*0928368fSKristof Beyls size_t __strlen_aarch64_mte (const char *); 33*0928368fSKristof Beyls #if __ARM_NEON 34*0928368fSKristof Beyls void *__memcpy_aarch64_simd (void *__restrict, const void *__restrict, size_t); 35*0928368fSKristof Beyls void *__memmove_aarch64_simd (void *, const void *, size_t); 36*0928368fSKristof Beyls #endif 37*0928368fSKristof Beyls # if __ARM_FEATURE_SVE 38*0928368fSKristof Beyls void *__memchr_aarch64_sve (const void *, int, size_t); 39*0928368fSKristof Beyls int __memcmp_aarch64_sve (const void *, const void *, size_t); 40*0928368fSKristof Beyls char *__strchr_aarch64_sve (const char *, int); 41*0928368fSKristof Beyls char *__strrchr_aarch64_sve (const char *, int); 42*0928368fSKristof Beyls char *__strchrnul_aarch64_sve (const char *, int ); 43*0928368fSKristof Beyls int __strcmp_aarch64_sve (const char *, const char *); 44*0928368fSKristof Beyls char *__strcpy_aarch64_sve (char *__restrict, const char *__restrict); 45*0928368fSKristof Beyls char *__stpcpy_aarch64_sve (char *__restrict, const char *__restrict); 46*0928368fSKristof Beyls size_t __strlen_aarch64_sve (const char *); 47*0928368fSKristof Beyls size_t __strnlen_aarch64_sve (const char *, size_t); 48*0928368fSKristof Beyls int __strncmp_aarch64_sve (const char *, const char *, size_t); 49*0928368fSKristof Beyls # endif 50*0928368fSKristof Beyls #elif __arm__ 51*0928368fSKristof Beyls void *__memcpy_arm (void *__restrict, const void *__restrict, size_t); 52*0928368fSKristof Beyls void *__memset_arm (void *, int, size_t); 53*0928368fSKristof Beyls void *__memchr_arm (const void *, int, size_t); 54*0928368fSKristof Beyls char *__strcpy_arm (char *__restrict, const char *__restrict); 55*0928368fSKristof Beyls int __strcmp_arm (const char *, const char *); 56*0928368fSKristof Beyls int __strcmp_armv6m (const char *, const char *); 57*0928368fSKristof Beyls size_t __strlen_armv6t2 (const char *); 58*0928368fSKristof Beyls #endif 59