diff mbox series

[v1,1/3] x86: Align varshift table to 32-bytes

Message ID 20220609041653.2515397-1-goldstein.w.n@gmail.com
State New
Headers show
Series [v1,1/3] x86: Align varshift table to 32-bytes | expand

Commit Message

Noah Goldstein June 9, 2022, 4:16 a.m. UTC
This ensures the load will never split a cache line.
---
 sysdeps/x86_64/multiarch/varshift.c | 5 +++--
 sysdeps/x86_64/multiarch/varshift.h | 3 ++-
 2 files changed, 5 insertions(+), 3 deletions(-)

Comments

H.J. Lu June 9, 2022, 3:14 p.m. UTC | #1
On Wed, Jun 8, 2022 at 9:16 PM Noah Goldstein <goldstein.w.n@gmail.com> wrote:
>
> This ensures the load will never split a cache line.
> ---
>  sysdeps/x86_64/multiarch/varshift.c | 5 +++--
>  sysdeps/x86_64/multiarch/varshift.h | 3 ++-
>  2 files changed, 5 insertions(+), 3 deletions(-)
>
> diff --git a/sysdeps/x86_64/multiarch/varshift.c b/sysdeps/x86_64/multiarch/varshift.c
> index c8210f0546..d27767520a 100644
> --- a/sysdeps/x86_64/multiarch/varshift.c
> +++ b/sysdeps/x86_64/multiarch/varshift.c
> @@ -16,9 +16,10 @@
>     License along with the GNU C Library; if not, see
>     <https://www.gnu.org/licenses/>.  */
>
> -#include "varshift.h"
> +#include <stdint.h>
>
> -const int8_t ___m128i_shift_right[31] attribute_hidden =
> +const int8_t ___m128i_shift_right[31] attribute_hidden
> +    __attribute__((aligned(32))) =
>    {
>      0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15,
>      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
> diff --git a/sysdeps/x86_64/multiarch/varshift.h b/sysdeps/x86_64/multiarch/varshift.h
> index af30694488..ffd12d79e4 100644
> --- a/sysdeps/x86_64/multiarch/varshift.h
> +++ b/sysdeps/x86_64/multiarch/varshift.h
> @@ -19,7 +19,8 @@
>  #include <stdint.h>
>  #include <tmmintrin.h>
>
> -extern const int8_t ___m128i_shift_right[31] attribute_hidden;
> +extern const int8_t ___m128i_shift_right[31] attribute_hidden
> +    __attribute__ ((aligned (32)));
>
>  static __inline__ __m128i
>  __m128i_shift_right (__m128i value, unsigned long int offset)
> --
> 2.34.1
>

LGTM.

Thanks.
Sunil Pandey July 14, 2022, 2:51 a.m. UTC | #2
On Thu, Jun 9, 2022 at 8:15 AM H.J. Lu via Libc-alpha
<libc-alpha@sourceware.org> wrote:
>
> On Wed, Jun 8, 2022 at 9:16 PM Noah Goldstein <goldstein.w.n@gmail.com> wrote:
> >
> > This ensures the load will never split a cache line.
> > ---
> >  sysdeps/x86_64/multiarch/varshift.c | 5 +++--
> >  sysdeps/x86_64/multiarch/varshift.h | 3 ++-
> >  2 files changed, 5 insertions(+), 3 deletions(-)
> >
> > diff --git a/sysdeps/x86_64/multiarch/varshift.c b/sysdeps/x86_64/multiarch/varshift.c
> > index c8210f0546..d27767520a 100644
> > --- a/sysdeps/x86_64/multiarch/varshift.c
> > +++ b/sysdeps/x86_64/multiarch/varshift.c
> > @@ -16,9 +16,10 @@
> >     License along with the GNU C Library; if not, see
> >     <https://www.gnu.org/licenses/>.  */
> >
> > -#include "varshift.h"
> > +#include <stdint.h>
> >
> > -const int8_t ___m128i_shift_right[31] attribute_hidden =
> > +const int8_t ___m128i_shift_right[31] attribute_hidden
> > +    __attribute__((aligned(32))) =
> >    {
> >      0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15,
> >      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
> > diff --git a/sysdeps/x86_64/multiarch/varshift.h b/sysdeps/x86_64/multiarch/varshift.h
> > index af30694488..ffd12d79e4 100644
> > --- a/sysdeps/x86_64/multiarch/varshift.h
> > +++ b/sysdeps/x86_64/multiarch/varshift.h
> > @@ -19,7 +19,8 @@
> >  #include <stdint.h>
> >  #include <tmmintrin.h>
> >
> > -extern const int8_t ___m128i_shift_right[31] attribute_hidden;
> > +extern const int8_t ___m128i_shift_right[31] attribute_hidden
> > +    __attribute__ ((aligned (32)));
> >
> >  static __inline__ __m128i
> >  __m128i_shift_right (__m128i value, unsigned long int offset)
> > --
> > 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/varshift.c b/sysdeps/x86_64/multiarch/varshift.c
index c8210f0546..d27767520a 100644
--- a/sysdeps/x86_64/multiarch/varshift.c
+++ b/sysdeps/x86_64/multiarch/varshift.c
@@ -16,9 +16,10 @@ 
    License along with the GNU C Library; if not, see
    <https://www.gnu.org/licenses/>.  */
 
-#include "varshift.h"
+#include <stdint.h>
 
-const int8_t ___m128i_shift_right[31] attribute_hidden =
+const int8_t ___m128i_shift_right[31] attribute_hidden
+    __attribute__((aligned(32))) =
   {
     0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15,
     -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
diff --git a/sysdeps/x86_64/multiarch/varshift.h b/sysdeps/x86_64/multiarch/varshift.h
index af30694488..ffd12d79e4 100644
--- a/sysdeps/x86_64/multiarch/varshift.h
+++ b/sysdeps/x86_64/multiarch/varshift.h
@@ -19,7 +19,8 @@ 
 #include <stdint.h>
 #include <tmmintrin.h>
 
-extern const int8_t ___m128i_shift_right[31] attribute_hidden;
+extern const int8_t ___m128i_shift_right[31] attribute_hidden
+    __attribute__ ((aligned (32)));
 
 static __inline__ __m128i
 __m128i_shift_right (__m128i value, unsigned long int offset)