https://sourceware.org/git/gitweb.cgi?p=newlib-cygwin.git;h=188d5f6c9ad5cbbd6f0fcb9aaf15bc9870597910

commit 188d5f6c9ad5cbbd6f0fcb9aaf15bc9870597910
Author: Corinna Vinschen <[email protected]>
Date:   Mon Aug 8 16:49:52 2022 +0200

    Cygwin: x86_64: add wmemset assembler entry point
    
    So far, wmemset used the C implemantation from newlib.  Let's use
    the optimized assembler code instead.
    
    Signed-off-by: Corinna Vinschen <[email protected]>

Diff:
---
 winsup/cygwin/Makefile.am     | 6 +++---
 winsup/cygwin/x86_64/memset.s | 8 ++++++++
 2 files changed, 11 insertions(+), 3 deletions(-)

diff --git a/winsup/cygwin/Makefile.am b/winsup/cygwin/Makefile.am
index 6838be99a..b8436226b 100644
--- a/winsup/cygwin/Makefile.am
+++ b/winsup/cygwin/Makefile.am
@@ -56,7 +56,8 @@ TEST_LIB_NAME=libcygwin0.a
 if TARGET_X86_64
 TARGET_FILES= \
        x86_64/memcpy.s \
-       x86_64/memset.s
+       x86_64/memset.s \
+       x86_64/mcountFunc.S
 endif
 
 LIB_FILES= \
@@ -357,8 +358,7 @@ MALLOC_FILES= \
 GMON_FILES= \
        gmon.c \
        mcount.c \
-       profil.c \
-       mcountFunc.S
+       profil.c
 
 GENERATED_FILES= \
        sigfe.s
diff --git a/winsup/cygwin/x86_64/memset.s b/winsup/cygwin/x86_64/memset.s
index ac73b6ace..d3b95ecd2 100644
--- a/winsup/cygwin/x86_64/memset.s
+++ b/winsup/cygwin/x86_64/memset.s
@@ -67,3 +67,11 @@ L1:     rep
        movq    16(%rsp),%rdi
        ret
        .seh_endproc
+
+       .globl  wmemset
+       .seh_proc wmemset
+wmemset:
+       .seh_endprologue
+       shlq    $1,%r8          /* cnt * sizeof (wchar_t) */
+       jmp     memset
+       .seh_endproc

Reply via email to