Re: [PATCH] i386: Uglify some local identifiers in *intrin.h [PR107748]
On Sat, Nov 19, 2022 at 4:38 PM Jakub Jelinek 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 > 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 > > 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.h2022-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)
[PATCH] i386: Uglify some local identifiers in *intrin.h [PR107748]
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 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? 2022-11-19 Jakub Jelinek 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.h2022-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__ \ ({