Message ID | 463d71a5-fcfa-89a8-cc2a-08422c55f49f@linux.ibm.com |
---|---|
State | New |
Headers | show |
Series | [rs6000,v2] Fix uses of vec_sel in intrinsic headers | expand |
On Wed, Oct 24, 2018 at 09:25:25AM -0500, Bill Schmidt wrote: > This patch addresses Segher's findings, and also replaces usages of the > deprecated function vec_vcmpgtfp with the equivalent vec_cmpgt. > Bootstrapped and tested on powerpc64le-linux-gnu with no regressions. > Also tested in a Clang environment with no regressions. Is this ok for > trunk? This is okay for trunk. Thanks! Do you want backports to 8? Segher > 2018-10-24 Bill Schmidt <wschmidt@linux.ibm.com> > Jinsong Ji <jji@us.ibm.com> > > * config/rs6000/emmintrin.h (_mm_sll_epi64): Remove wrong cast. > * config/rs6000/xmmintrin.h (_mm_min_ps): Change m's type to > __vector __bool int. Use vec_cmpgt in preference to deprecated > function vec_vcmpgtfp. > (_mm_max_ps): Likewise.
On 10/25/18 12:08 PM, Segher Boessenkool wrote: > On Wed, Oct 24, 2018 at 09:25:25AM -0500, Bill Schmidt wrote: >> This patch addresses Segher's findings, and also replaces usages of the >> deprecated function vec_vcmpgtfp with the equivalent vec_cmpgt. >> Bootstrapped and tested on powerpc64le-linux-gnu with no regressions. >> Also tested in a Clang environment with no regressions. Is this ok for >> trunk? > This is okay for trunk. Thanks! Do you want backports to 8? Yes, thanks! I should have mentioned that for all of these patches. Bill > > > Segher > > >> 2018-10-24 Bill Schmidt <wschmidt@linux.ibm.com> >> Jinsong Ji <jji@us.ibm.com> >> >> * config/rs6000/emmintrin.h (_mm_sll_epi64): Remove wrong cast. >> * config/rs6000/xmmintrin.h (_mm_min_ps): Change m's type to >> __vector __bool int. Use vec_cmpgt in preference to deprecated >> function vec_vcmpgtfp. >> (_mm_max_ps): Likewise.
Index: gcc/config/rs6000/emmintrin.h =================================================================== --- gcc/config/rs6000/emmintrin.h (revision 265389) +++ gcc/config/rs6000/emmintrin.h (working copy) @@ -1765,8 +1765,7 @@ _mm_sll_epi64 (__m128i __A, __m128i __B) lshift = (__v2du) vec_splat ((__v2du)__B, 0); shmask = lshift < shmax; result = vec_vsld ((__v2du) __A, lshift); - result = (__v2du) vec_sel ((__v2df) shmask, (__v2df) result, - (__v2df) shmask); + result = (__v2du) vec_sel ((__v2df) shmask, (__v2df) result, shmask); return (__m128i) result; } Index: gcc/config/rs6000/xmmintrin.h =================================================================== --- gcc/config/rs6000/xmmintrin.h (revision 265389) +++ gcc/config/rs6000/xmmintrin.h (working copy) @@ -457,7 +457,7 @@ _mm_max_ss (__m128 __A, __m128 __B) extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__)) _mm_min_ps (__m128 __A, __m128 __B) { - __m128 m = (__m128) vec_vcmpgtfp ((__v4sf) __B, (__v4sf) __A); + __vector __bool int m = vec_cmpgt ((__v4sf) __B, (__v4sf) __A); return vec_sel (__B, __A, m); } @@ -464,7 +464,7 @@ _mm_min_ps (__m128 __A, __m128 __B) extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__)) _mm_max_ps (__m128 __A, __m128 __B) { - __m128 m = (__m128) vec_vcmpgtfp ((__v4sf) __A, (__v4sf) __B); + __vector __bool int m = vec_cmpgt ((__v4sf) __A, (__v4sf) __B); return vec_sel (__B, __A, m); }