[compiler-rt] [AArch64][compiler-rt] Add memcpy, memset, memmove, memchr simple imp… (PR #77496)

via llvm-commits llvm-commits at lists.llvm.org
Tue Jan 9 08:47:06 PST 2024


github-actions[bot] wrote:

<!--LLVM CODE FORMAT COMMENT: {clang-format}-->


:warning: C/C++ code formatter, clang-format found issues in your code. :warning:

<details>
<summary>
You can test this locally with the following command:
</summary>

``````````bash
git-clang-format --diff 06286a553280fc843d6f5df477a2c776aa2ece35 1845737de1a2bbdac168bf4c93700a5402362d43 -- compiler-rt/lib/builtins/aarch64/sme-libc-routines.c compiler-rt/test/builtins/Unit/sme-string-test.c
``````````

</details>

<details>
<summary>
View the diff from clang-format here.
</summary>

``````````diff
diff --git a/compiler-rt/lib/builtins/aarch64/sme-libc-routines.c b/compiler-rt/lib/builtins/aarch64/sme-libc-routines.c
index b28f3bbb98..b06dbec8a4 100644
--- a/compiler-rt/lib/builtins/aarch64/sme-libc-routines.c
+++ b/compiler-rt/lib/builtins/aarch64/sme-libc-routines.c
@@ -4,11 +4,10 @@
 // use the compiler flag "-mllvm -disable-loop-idiom-all" to prevent clang
 // from recognising a loop idiom and planting calls to memcpy!
 
-
 static void *__arm_sc_memcpy_fwd(void *dest, const void *src, size_t n)
     __arm_streaming_compatible __arm_preserves_za {
-  unsigned char *destp = (unsigned char *) dest;
-  const unsigned char *srcp = (const unsigned char *) src;
+  unsigned char *destp = (unsigned char *)dest;
+  const unsigned char *srcp = (const unsigned char *)src;
 
   for (size_t i = 0; i < n; i++) {
     destp[i] = srcp[i];
@@ -17,21 +16,18 @@ static void *__arm_sc_memcpy_fwd(void *dest, const void *src, size_t n)
   return dest;
 }
 
-
 // If dest and src overlap then behaviour is undefined, hence we can add the
 // restrict keywords here. This also matches the definition of the libc memcpy
 // according to the man page.
-void *__arm_sc_memcpy(void * __restrict__ dest, const void * __restrict__ src,
-                      size_t n)
-    __arm_streaming_compatible __arm_preserves_za {
+void *__arm_sc_memcpy(void *__restrict__ dest, const void *__restrict__ src,
+                      size_t n) __arm_streaming_compatible __arm_preserves_za {
   return __arm_sc_memcpy_fwd(dest, src, n);
 }
 
-
-void *__arm_sc_memset(void *dest, int c, size_t n)
-    __arm_streaming_compatible __arm_preserves_za {
-  unsigned char *destp = (unsigned char *) dest;
-  unsigned char c8 = (unsigned char) c;
+void *__arm_sc_memset(void *dest, int c,
+                      size_t n) __arm_streaming_compatible __arm_preserves_za {
+  unsigned char *destp = (unsigned char *)dest;
+  unsigned char c8 = (unsigned char)c;
 
   for (size_t i = 0; i < n; i++) {
     destp[i] = c8;
@@ -40,11 +36,10 @@ void *__arm_sc_memset(void *dest, int c, size_t n)
   return dest;
 }
 
-
 static void *__arm_sc_memcpy_rev(void *dest, const void *src, size_t n)
     __arm_streaming_compatible __arm_preserves_za {
-  unsigned char *destp = (unsigned char *) dest;
-  const unsigned char *srcp = (const unsigned char *) src;
+  unsigned char *destp = (unsigned char *)dest;
+  const unsigned char *srcp = (const unsigned char *)src;
 
   // TODO: Improve performance by copying larger chunks in reverse, or by
   // using SVE.
@@ -55,15 +50,14 @@ static void *__arm_sc_memcpy_rev(void *dest, const void *src, size_t n)
   return dest;
 }
 
-
 // Semantically a memmove is equivalent to the following:
 //   1. Copy the entire contents of src to a temporary array that does not
 //      overlap with src or dest.
 //   2. Copy the contents of the temporary array into dest.
-void *__arm_sc_memmove(void *dest, const void *src, size_t n)
-    __arm_streaming_compatible __arm_preserves_za {
-  unsigned char *destp = (unsigned char *) dest;
-  const unsigned char *srcp = (const unsigned char *) src;
+void *__arm_sc_memmove(void *dest, const void *src,
+                       size_t n) __arm_streaming_compatible __arm_preserves_za {
+  unsigned char *destp = (unsigned char *)dest;
+  const unsigned char *srcp = (const unsigned char *)src;
 
   // If src and dest are identical there is nothing to do!
   if ((destp == srcp) || (n == 0))
@@ -91,11 +85,10 @@ void *__arm_sc_memmove(void *dest, const void *src, size_t n)
   return __arm_sc_memcpy_rev(dest, src, n);
 }
 
-
 const void *__arm_sc_memchr(const void *src, int c, size_t n)
     __arm_streaming_compatible __arm_preserves_za {
-  const unsigned char *srcp = (const unsigned char *) src;
-  unsigned char c8 = (unsigned char) c;
+  const unsigned char *srcp = (const unsigned char *)src;
+  unsigned char c8 = (unsigned char)c;
 
   for (size_t i = 0; i < n; i++) {
     if (srcp[i] == c8)
diff --git a/compiler-rt/test/builtins/Unit/sme-string-test.c b/compiler-rt/test/builtins/Unit/sme-string-test.c
index 3401dcdbc3..0b066c3c17 100644
--- a/compiler-rt/test/builtins/Unit/sme-string-test.c
+++ b/compiler-rt/test/builtins/Unit/sme-string-test.c
@@ -1,10 +1,10 @@
 // REQUIRES: linux, aarch64-target-arch
 // RUN: %clang_builtins %s %librt -o %t && %run %t
 
-#include <stdlib.h>
-#include <string.h>
 #include <stdint.h>
 #include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
 #include <time.h>
 
 #define N 1024

``````````

</details>


https://github.com/llvm/llvm-project/pull/77496


More information about the llvm-commits mailing list