xref: /llvm-project/compiler-rt/lib/builtins/aarch64/sme-libc-routines.c (revision 5a8956ea8b8ac1ef7b6c4e42553a55063ab699ea)
1 #include <stddef.h>
2 
3 /* The asm version uses FP registers. Use this on targets without them */
4 #if __ARM_FP == 0
5 void *__arm_sc_memset(void *dest, int c, size_t n) __arm_streaming_compatible {
6   unsigned char *destp = (unsigned char *)dest;
7   unsigned char c8 = (unsigned char)c;
8   for (size_t i = 0; i < n; ++i)
9     destp[i] = c8;
10 
11   return dest;
12 }
13 #endif
14 
15 const void *__arm_sc_memchr(const void *src, int c,
16                             size_t n) __arm_streaming_compatible {
17   const unsigned char *srcp = (const unsigned char *)src;
18   unsigned char c8 = (unsigned char)c;
19   for (size_t i = 0; i < n; ++i)
20     if (srcp[i] == c8)
21       return &srcp[i];
22 
23   return NULL;
24 }
25