xref: /aosp_15_r20/external/arm-optimized-routines/string/include/stringlib.h (revision 412f47f9e737e10ed5cc46ec6a8d7fa2264f8a14)
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