xref: /freebsd-src/contrib/arm-optimized-routines/string/include/stringlib.h (revision f3087bef11543b42e0d69b708f367097a4118d24)
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