Re: [PATCH] target/sparc: Use memcpy() in memcpy32()

2024-12-04 Thread Richard Henderson

On 12/4/24 14:41, Philippe Mathieu-Daudé wrote:

Rather than manually copying each register, use
the libc memcpy(), which is well optimized.

Signed-off-by: Philippe Mathieu-Daudé 
---
Worth renaming as reg8cpy()?
---
  target/sparc/win_helper.c | 9 +
  1 file changed, 1 insertion(+), 8 deletions(-)

diff --git a/target/sparc/win_helper.c b/target/sparc/win_helper.c
index b53fc9ce940..dab0ff00ccc 100644
--- a/target/sparc/win_helper.c
+++ b/target/sparc/win_helper.c
@@ -26,14 +26,7 @@
  
  static inline void memcpy32(target_ulong *dst, const target_ulong *src)

  {
-dst[0] = src[0];
-dst[1] = src[1];
-dst[2] = src[2];
-dst[3] = src[3];
-dst[4] = src[4];
-dst[5] = src[5];
-dst[6] = src[6];
-dst[7] = src[7];
+memcpy(dst, src, 8 * sizeof(target_ulong));
  }
  
  void cpu_set_cwp(CPUSPARCState *env, int new_cwp)


Once upon a time, calling the libc function was slower.
That optimization is probably at least 10 years out of date.
I imagine this gets expanded inline as a vector copy these days.

Reviewed-by: Richard Henderson 

I'll agree with Pierrick that we can probably remove the function too.


r~



Re: [PATCH] target/sparc: Use memcpy() in memcpy32()

2024-12-04 Thread Pierrick Bouvier

On 12/4/24 12:41, Philippe Mathieu-Daudé wrote:

Rather than manually copying each register, use
the libc memcpy(), which is well optimized.

Signed-off-by: Philippe Mathieu-Daudé 
---
Worth renaming as reg8cpy()?
---
  target/sparc/win_helper.c | 9 +
  1 file changed, 1 insertion(+), 8 deletions(-)

diff --git a/target/sparc/win_helper.c b/target/sparc/win_helper.c
index b53fc9ce940..dab0ff00ccc 100644
--- a/target/sparc/win_helper.c
+++ b/target/sparc/win_helper.c
@@ -26,14 +26,7 @@
  
  static inline void memcpy32(target_ulong *dst, const target_ulong *src)

  {
-dst[0] = src[0];
-dst[1] = src[1];
-dst[2] = src[2];
-dst[3] = src[3];
-dst[4] = src[4];
-dst[5] = src[5];
-dst[6] = src[6];
-dst[7] = src[7];
+memcpy(dst, src, 8 * sizeof(target_ulong));
  }
  
  void cpu_set_cwp(CPUSPARCState *env, int new_cwp)


Potentially we could go further and just remove the memcpy32 function.

Reviewed-by: Pierrick Bouvier