bug-hurd
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH] Delete x86 string functions


From: Samuel Thibault
Subject: Re: [PATCH] Delete x86 string functions
Date: Wed, 18 Jan 2023 02:03:59 +0100
User-agent: NeoMutt/20170609 (1.8.3)

Applied, thanks!

Flavio Cruz, le mar. 17 janv. 2023 00:11:16 -0500, a ecrit:
> The i386 functions are not used and the more portable versions in 
> kern/strings.c
> are faster (1-4x faster in synthetic benchmarks compiled with -O2 on my 
> x86_64 box).
> ---
>  i386/i386/strings.c | 54 ---------------------------------------------
>  1 file changed, 54 deletions(-)
> 
> diff --git a/i386/i386/strings.c b/i386/i386/strings.c
> index 84a3bc16..f1752de2 100644
> --- a/i386/i386/strings.c
> +++ b/i386/i386/strings.c
> @@ -94,57 +94,3 @@ memcmp(const void *s1, const void *s2, size_t n)
>      return (int)c1 - (int)c2;
>  }
>  #endif /* ARCH_STRING_MEMCMP */
> -
> -#ifdef ARCH_STRING_STRLEN
> -size_t
> -strlen(const char *s)
> -{
> -    size_t n;
> -
> -    n = (size_t)-1;
> -    asm volatile("repne scasb"
> -                 : "+D" (s), "+c" (n)
> -                 : "a" (0)
> -                 : "memory");
> -    return ~n - 1;
> -}
> -#endif /* ARCH_STRING_STRLEN */
> -
> -#ifdef ARCH_STRING_STRCPY
> -char *
> -strcpy(char *dest, const char *src)
> -{
> -    char *orig_dest;
> -
> -    orig_dest = dest;
> -    asm volatile("1:\n"
> -                 "lodsb\n"
> -                 "stosb\n"
> -                 "testb %%al, %%al\n"
> -                 "jnz 1b\n"
> -                 : "+D" (dest), "+S" (src)
> -                 : : "al", "memory");
> -    return orig_dest;
> -}
> -#endif /* ARCH_STRING_STRCPY */
> -
> -#ifdef ARCH_STRING_STRCMP
> -int
> -strcmp(const char *s1, const char *s2)
> -{
> -    unsigned char c1, c2;
> -
> -    asm volatile("1:\n"
> -                 "lodsb\n"
> -                 "scasb\n"
> -                 "jne 1f\n"
> -                 "testb %%al, %%al\n"
> -                 "jnz 1b\n"
> -                 "1:\n"
> -                 : "+D" (s1), "+S" (s2)
> -                 : : "al", "memory");
> -    c1 = *(((const unsigned char *)s1) - 1);
> -    c2 = *(((const unsigned char *)s2) - 1);
> -    return (int)c1 - (int)c2;
> -}
> -#endif /* ARCH_STRING_STRCMP */
> -- 
> 2.39.0
> 
> 

-- 
Samuel
---
Pour une évaluation indépendante, transparente et rigoureuse !
Je soutiens la Commission d'Évaluation de l'Inria.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]