xref: /llvm-project/compiler-rt/lib/builtins/aarch64/sme-libc-routines.c (revision 5a8956ea8b8ac1ef7b6c4e42553a55063ab699ea)
12e2b6b53SPeter Waller #include <stddef.h>
231125785SDinar Temirbulatov 
3*5a8956eaSKeith Packard /* The asm version uses FP registers. Use this on targets without them */
4*5a8956eaSKeith Packard #if __ARM_FP == 0
5*5a8956eaSKeith Packard void *__arm_sc_memset(void *dest, int c, size_t n) __arm_streaming_compatible {
6*5a8956eaSKeith Packard   unsigned char *destp = (unsigned char *)dest;
7*5a8956eaSKeith Packard   unsigned char c8 = (unsigned char)c;
8*5a8956eaSKeith Packard   for (size_t i = 0; i < n; ++i)
9*5a8956eaSKeith Packard     destp[i] = c8;
10*5a8956eaSKeith Packard 
11*5a8956eaSKeith Packard   return dest;
12*5a8956eaSKeith Packard }
13*5a8956eaSKeith Packard #endif
14*5a8956eaSKeith Packard 
1531125785SDinar Temirbulatov const void *__arm_sc_memchr(const void *src, int c,
1631125785SDinar Temirbulatov                             size_t n) __arm_streaming_compatible {
1731125785SDinar Temirbulatov   const unsigned char *srcp = (const unsigned char *)src;
1831125785SDinar Temirbulatov   unsigned char c8 = (unsigned char)c;
1931125785SDinar Temirbulatov   for (size_t i = 0; i < n; ++i)
2031125785SDinar Temirbulatov     if (srcp[i] == c8)
2131125785SDinar Temirbulatov       return &srcp[i];
2231125785SDinar Temirbulatov 
2331125785SDinar Temirbulatov   return NULL;
2431125785SDinar Temirbulatov }
25