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