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