public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
From: Hongtao Liu <crazylht@gmail.com>
To: Jakub Jelinek <jakub@redhat.com>
Cc: gcc-patches@gcc.gnu.org
Subject: Re: [PATCH] i386: Uglify some local identifiers in *intrin.h [PR107748]
Date: Mon, 21 Nov 2022 09:10:10 +0800	[thread overview]
Message-ID: <CAMZc-bxc+o2R4GdsyPLM30rxuZHbsXg8WwHnRJBYW=e=TAfmYQ@mail.gmail.com> (raw)
In-Reply-To: <Y3iV4SQrZRB2TJxD@tucnak>

On Sat, Nov 19, 2022 at 4:38 PM Jakub Jelinek <jakub@redhat.com> wrote:
>
> Hi!
>
> While reporting PR107748 (where is a problem with non-uglified names,
> but I've left it out because it needs fixing anyway), I've noticed
> various spots where identifiers in *intrin.h headers weren't uglified.
> The following patch fixed those that are related to unions (I've grepped
> for [a-zA-Z]\.[a-zA-Z] spots).
> The reason we need those to be uglified is the same as why the arguments
> of the inlines are __ prefixed and most of automatic vars in the inlines
> - say a, v or u aren't part of implementation namespace and so users could
> #define u whatever->something
> #include <x86intrin.h>
> and it should still work, as long as u is not e.g. one of the names
> of the functions/macros the header provides (_mm* etc.).
>
> Bootstrapped/regtested on x86_64-linux and i686-linux, ok for trunk?
Ok, thanks.
>
> 2022-11-19  Jakub Jelinek  <jakub@redhat.com>
>
>         PR target/107748
>         * config/i386/avx512fp16intrin.h (_mm512_castph512_ph128,
>         _mm512_castph512_ph256, _mm512_castph128_ph512,
>         _mm512_castph256_ph512, _mm512_set1_pch): Uglify names of local
>         variables and union members.
>         * config/i386/avx512fp16vlintrin.h (_mm256_castph256_ph128,
>         _mm256_castph128_ph256, _mm256_set1_pch, _mm_set1_pch): Likewise.
>         * config/i386/smmintrin.h (_mm_extract_ps): Likewise.
>
> --- gcc/config/i386/avx512fp16intrin.h.jj       2022-09-27 08:03:26.974984702 +0200
> +++ gcc/config/i386/avx512fp16intrin.h  2022-11-18 12:51:10.668957336 +0100
> @@ -272,10 +272,10 @@ _mm512_castph512_ph128 (__m512h __A)
>  {
>    union
>    {
> -    __m128h a[4];
> -    __m512h v;
> -  } u = { .v = __A };
> -  return u.a[0];
> +    __m128h __a[4];
> +    __m512h __v;
> +  } __u = { .__v = __A };
> +  return __u.__a[0];
>  }
>
>  extern __inline __m256h
> @@ -284,10 +284,10 @@ _mm512_castph512_ph256 (__m512h __A)
>  {
>    union
>    {
> -    __m256h a[2];
> -    __m512h v;
> -  } u = { .v = __A };
> -  return u.a[0];
> +    __m256h __a[2];
> +    __m512h __v;
> +  } __u = { .__v = __A };
> +  return __u.__a[0];
>  }
>
>  extern __inline __m512h
> @@ -296,11 +296,11 @@ _mm512_castph128_ph512 (__m128h __A)
>  {
>    union
>    {
> -    __m128h a[4];
> -    __m512h v;
> -  } u;
> -  u.a[0] = __A;
> -  return u.v;
> +    __m128h __a[4];
> +    __m512h __v;
> +  } __u;
> +  __u.__a[0] = __A;
> +  return __u.__v;
>  }
>
>  extern __inline __m512h
> @@ -309,11 +309,11 @@ _mm512_castph256_ph512 (__m256h __A)
>  {
>    union
>    {
> -    __m256h a[2];
> -    __m512h v;
> -  } u;
> -  u.a[0] = __A;
> -  return u.v;
> +    __m256h __a[2];
> +    __m512h __v;
> +  } __u;
> +  __u.__a[0] = __A;
> +  return __u.__v;
>  }
>
>  extern __inline __m512h
> @@ -7156,11 +7156,11 @@ _mm512_set1_pch (_Float16 _Complex __A)
>  {
>    union
>    {
> -    _Float16 _Complex a;
> -    float b;
> -  } u = { .a = __A};
> +    _Float16 _Complex __a;
> +    float __b;
> +  } __u = { .__a = __A};
>
> -  return (__m512h) _mm512_set1_ps (u.b);
> +  return (__m512h) _mm512_set1_ps (__u.__b);
>  }
>
>  // intrinsics below are alias for f*mul_*ch
> --- gcc/config/i386/avx512fp16vlintrin.h.jj     2022-01-11 23:11:21.760299007 +0100
> +++ gcc/config/i386/avx512fp16vlintrin.h        2022-11-18 12:52:23.242951737 +0100
> @@ -124,10 +124,10 @@ _mm256_castph256_ph128 (__m256h __A)
>  {
>    union
>    {
> -    __m128h a[2];
> -    __m256h v;
> -  } u = { .v = __A };
> -  return u.a[0];
> +    __m128h __a[2];
> +    __m256h __v;
> +  } __u = { .__v = __A };
> +  return __u.__a[0];
>  }
>
>  extern __inline __m256h
> @@ -136,11 +136,11 @@ _mm256_castph128_ph256 (__m128h __A)
>  {
>    union
>    {
> -    __m128h a[2];
> -    __m256h v;
> -  } u;
> -  u.a[0] = __A;
> -  return u.v;
> +    __m128h __a[2];
> +    __m256h __v;
> +  } __u;
> +  __u.__a[0] = __A;
> +  return __u.__v;
>  }
>
>  extern __inline __m256h
> @@ -3317,11 +3317,11 @@ _mm256_set1_pch (_Float16 _Complex __A)
>  {
>    union
>    {
> -    _Float16 _Complex a;
> -    float b;
> -  } u = { .a = __A };
> +    _Float16 _Complex __a;
> +    float __b;
> +  } __u = { .__a = __A };
>
> -  return (__m256h) _mm256_set1_ps (u.b);
> +  return (__m256h) _mm256_set1_ps (__u.__b);
>  }
>
>  extern __inline __m128h
> @@ -3330,11 +3330,11 @@ _mm_set1_pch (_Float16 _Complex __A)
>  {
>    union
>    {
> -    _Float16 _Complex a;
> -    float b;
> -  } u = { .a = __A };
> +    _Float16 _Complex __a;
> +    float __b;
> +  } __u = { .__a = __A };
>
> -  return (__m128h) _mm_set1_ps (u.b);
> +  return (__m128h) _mm_set1_ps (__u.__b);
>  }
>
>  // intrinsics below are alias for f*mul_*ch
> --- gcc/config/i386/smmintrin.h.jj      2022-04-19 07:20:56.429171229 +0200
> +++ gcc/config/i386/smmintrin.h 2022-11-18 12:53:26.226079037 +0100
> @@ -365,17 +365,18 @@ _mm_insert_ps (__m128 __D, __m128 __S, c
>  extern __inline int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
>  _mm_extract_ps (__m128 __X, const int __N)
>  {
> -  union { int i; float f; } __tmp;
> -  __tmp.f = __builtin_ia32_vec_ext_v4sf ((__v4sf)__X, __N);
> -  return __tmp.i;
> +  union { int __i; float __f; } __tmp;
> +  __tmp.__f = __builtin_ia32_vec_ext_v4sf ((__v4sf)__X, __N);
> +  return __tmp.__i;
>  }
>  #else
>  #define _mm_extract_ps(X, N)                                           \
>    (__extension__                                                       \
>     ({                                                                  \
> -     union { int i; float f; } __tmp;                                  \
> -     __tmp.f = __builtin_ia32_vec_ext_v4sf ((__v4sf)(__m128)(X), (int)(N)); \
> -     __tmp.i;                                                          \
> +     union { int __i; float __f; } __tmp;                              \
> +     __tmp.__f = __builtin_ia32_vec_ext_v4sf ((__v4sf)(__m128)(X),     \
> +                                             (int)(N));                \
> +     __tmp.__i;                                                                \
>     }))
>  #endif
>
>
>         Jakub
>


-- 
BR,
Hongtao

      reply	other threads:[~2022-11-21  1:07 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-11-19  8:37 Jakub Jelinek
2022-11-21  1:10 ` Hongtao Liu [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='CAMZc-bxc+o2R4GdsyPLM30rxuZHbsXg8WwHnRJBYW=e=TAfmYQ@mail.gmail.com' \
    --to=crazylht@gmail.com \
    --cc=gcc-patches@gcc.gnu.org \
    --cc=jakub@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).