diff mbox series

[v2] x86: Put wcs{n}len-sse4.1 in the sse4.1 text section

Message ID 20220624164216.2129400-4-goldstein.w.n@gmail.com
State New
Headers show
Series [v2] x86: Put wcs{n}len-sse4.1 in the sse4.1 text section | expand

Commit Message

Noah Goldstein June 24, 2022, 4:42 p.m. UTC
Previously was missing but the two implementations shouldn't get in
the sse2 (generic) text section.
---
 sysdeps/x86_64/multiarch/strlen-vec.S     | 6 +++++-
 sysdeps/x86_64/multiarch/wcslen-sse4_1.S  | 1 +
 sysdeps/x86_64/multiarch/wcsnlen-sse4_1.S | 1 +
 3 files changed, 7 insertions(+), 1 deletion(-)

Comments

H.J. Lu June 24, 2022, 5:05 p.m. UTC | #1
On Fri, Jun 24, 2022 at 9:42 AM Noah Goldstein <goldstein.w.n@gmail.com> wrote:
>
> Previously was missing but the two implementations shouldn't get in
> the sse2 (generic) text section.
> ---
>  sysdeps/x86_64/multiarch/strlen-vec.S     | 6 +++++-
>  sysdeps/x86_64/multiarch/wcslen-sse4_1.S  | 1 +
>  sysdeps/x86_64/multiarch/wcsnlen-sse4_1.S | 1 +
>  3 files changed, 7 insertions(+), 1 deletion(-)
>
> diff --git a/sysdeps/x86_64/multiarch/strlen-vec.S b/sysdeps/x86_64/multiarch/strlen-vec.S
> index 42b6124dfd..874123d604 100644
> --- a/sysdeps/x86_64/multiarch/strlen-vec.S
> +++ b/sysdeps/x86_64/multiarch/strlen-vec.S
> @@ -28,6 +28,10 @@
>  # define SHIFT_RETURN
>  #endif
>
> +#ifndef SECTION
> +# define SECTION(p)    p
> +#endif
> +
>  /* Long lived register in strlen(s), strnlen(s, n) are:
>
>         %xmm3 - zero
> @@ -37,7 +41,7 @@
>  */
>
>
> -.text
> +       .section SECTION(.text),"ax",@progbits
>  ENTRY(strlen)
>
>  /* Test 64 bytes from %rax for zero. Save result as bitmask in %rdx.  */
> diff --git a/sysdeps/x86_64/multiarch/wcslen-sse4_1.S b/sysdeps/x86_64/multiarch/wcslen-sse4_1.S
> index 7e62621afc..e306a77f51 100644
> --- a/sysdeps/x86_64/multiarch/wcslen-sse4_1.S
> +++ b/sysdeps/x86_64/multiarch/wcslen-sse4_1.S
> @@ -1,4 +1,5 @@
>  #define AS_WCSLEN
>  #define strlen __wcslen_sse4_1
> +#define SECTION(p)     p##.sse4.1
>
>  #include "strlen-vec.S"
> diff --git a/sysdeps/x86_64/multiarch/wcsnlen-sse4_1.S b/sysdeps/x86_64/multiarch/wcsnlen-sse4_1.S
> index 5fa51fe07c..d2f7dd6e22 100644
> --- a/sysdeps/x86_64/multiarch/wcsnlen-sse4_1.S
> +++ b/sysdeps/x86_64/multiarch/wcsnlen-sse4_1.S
> @@ -1,5 +1,6 @@
>  #define AS_WCSLEN
>  #define AS_STRNLEN
>  #define strlen __wcsnlen_sse4_1
> +#define SECTION(p)     p##.sse4.1
>
>  #include "strlen-vec.S"
> --
> 2.34.1
>

LGTM.

Thanks.
Sunil Pandey July 14, 2022, 3:02 a.m. UTC | #2
On Fri, Jun 24, 2022 at 10:08 AM H.J. Lu via Libc-alpha
<libc-alpha@sourceware.org> wrote:
>
> On Fri, Jun 24, 2022 at 9:42 AM Noah Goldstein <goldstein.w.n@gmail.com> wrote:
> >
> > Previously was missing but the two implementations shouldn't get in
> > the sse2 (generic) text section.
> > ---
> >  sysdeps/x86_64/multiarch/strlen-vec.S     | 6 +++++-
> >  sysdeps/x86_64/multiarch/wcslen-sse4_1.S  | 1 +
> >  sysdeps/x86_64/multiarch/wcsnlen-sse4_1.S | 1 +
> >  3 files changed, 7 insertions(+), 1 deletion(-)
> >
> > diff --git a/sysdeps/x86_64/multiarch/strlen-vec.S b/sysdeps/x86_64/multiarch/strlen-vec.S
> > index 42b6124dfd..874123d604 100644
> > --- a/sysdeps/x86_64/multiarch/strlen-vec.S
> > +++ b/sysdeps/x86_64/multiarch/strlen-vec.S
> > @@ -28,6 +28,10 @@
> >  # define SHIFT_RETURN
> >  #endif
> >
> > +#ifndef SECTION
> > +# define SECTION(p)    p
> > +#endif
> > +
> >  /* Long lived register in strlen(s), strnlen(s, n) are:
> >
> >         %xmm3 - zero
> > @@ -37,7 +41,7 @@
> >  */
> >
> >
> > -.text
> > +       .section SECTION(.text),"ax",@progbits
> >  ENTRY(strlen)
> >
> >  /* Test 64 bytes from %rax for zero. Save result as bitmask in %rdx.  */
> > diff --git a/sysdeps/x86_64/multiarch/wcslen-sse4_1.S b/sysdeps/x86_64/multiarch/wcslen-sse4_1.S
> > index 7e62621afc..e306a77f51 100644
> > --- a/sysdeps/x86_64/multiarch/wcslen-sse4_1.S
> > +++ b/sysdeps/x86_64/multiarch/wcslen-sse4_1.S
> > @@ -1,4 +1,5 @@
> >  #define AS_WCSLEN
> >  #define strlen __wcslen_sse4_1
> > +#define SECTION(p)     p##.sse4.1
> >
> >  #include "strlen-vec.S"
> > diff --git a/sysdeps/x86_64/multiarch/wcsnlen-sse4_1.S b/sysdeps/x86_64/multiarch/wcsnlen-sse4_1.S
> > index 5fa51fe07c..d2f7dd6e22 100644
> > --- a/sysdeps/x86_64/multiarch/wcsnlen-sse4_1.S
> > +++ b/sysdeps/x86_64/multiarch/wcsnlen-sse4_1.S
> > @@ -1,5 +1,6 @@
> >  #define AS_WCSLEN
> >  #define AS_STRNLEN
> >  #define strlen __wcsnlen_sse4_1
> > +#define SECTION(p)     p##.sse4.1
> >
> >  #include "strlen-vec.S"
> > --
> > 2.34.1
> >
>
> LGTM.
>
> Thanks.
>
> --
> H.J.

I would like to backport this patch to release branches.
Any comments or objections?

--Sunil
diff mbox series

Patch

diff --git a/sysdeps/x86_64/multiarch/strlen-vec.S b/sysdeps/x86_64/multiarch/strlen-vec.S
index 42b6124dfd..874123d604 100644
--- a/sysdeps/x86_64/multiarch/strlen-vec.S
+++ b/sysdeps/x86_64/multiarch/strlen-vec.S
@@ -28,6 +28,10 @@ 
 # define SHIFT_RETURN
 #endif
 
+#ifndef SECTION
+# define SECTION(p)	p
+#endif
+
 /* Long lived register in strlen(s), strnlen(s, n) are:
 
 	%xmm3 - zero
@@ -37,7 +41,7 @@ 
 */
 
 
-.text
+	.section SECTION(.text),"ax",@progbits
 ENTRY(strlen)
 
 /* Test 64 bytes from %rax for zero. Save result as bitmask in %rdx.  */
diff --git a/sysdeps/x86_64/multiarch/wcslen-sse4_1.S b/sysdeps/x86_64/multiarch/wcslen-sse4_1.S
index 7e62621afc..e306a77f51 100644
--- a/sysdeps/x86_64/multiarch/wcslen-sse4_1.S
+++ b/sysdeps/x86_64/multiarch/wcslen-sse4_1.S
@@ -1,4 +1,5 @@ 
 #define AS_WCSLEN
 #define strlen	__wcslen_sse4_1
+#define SECTION(p)	p##.sse4.1
 
 #include "strlen-vec.S"
diff --git a/sysdeps/x86_64/multiarch/wcsnlen-sse4_1.S b/sysdeps/x86_64/multiarch/wcsnlen-sse4_1.S
index 5fa51fe07c..d2f7dd6e22 100644
--- a/sysdeps/x86_64/multiarch/wcsnlen-sse4_1.S
+++ b/sysdeps/x86_64/multiarch/wcsnlen-sse4_1.S
@@ -1,5 +1,6 @@ 
 #define AS_WCSLEN
 #define AS_STRNLEN
 #define strlen	__wcsnlen_sse4_1
+#define SECTION(p)	p##.sse4.1
 
 #include "strlen-vec.S"