@@ -254,12 +254,8 @@ FORCE_INLINE(rt) fnm(const rg& a, const rg& b) \
254
254
255
255
FORCE_INLINE(vec_bdword2) vec_nor(const vec_bdword2& a, const vec_bdword2& b)
256
256
{ return vec_bdword2_c (__builtin_vec_nor (vec_dword2_c (a), vec_dword2_c (b))); }
257
- #endif // __GNUG__ < 6
258
257
259
- #if __GNUG__ < 5
260
- // vec_xxpermdi in gcc4 missing little-endian supports just like clang
261
- # define vec_permi (a, b, c ) vec_xxpermdi(b, a, (3 ^ ((c & 1 ) << 1 | c >> 1 )))
262
- // vec_packs doesn't support double words in gcc4
258
+ // vec_packs doesn't support double words in gcc4 and old versions of gcc5
263
259
# undef vec_packs
264
260
VSX_REDIRECT_2RG (vec_char16, vec_short8, vec_packs, __builtin_vec_packs)
265
261
VSX_REDIRECT_2RG(vec_uchar16, vec_ushort8, vec_packs, __builtin_vec_packs)
@@ -268,6 +264,11 @@ FORCE_INLINE(rt) fnm(const rg& a, const rg& b) \
268
264
269
265
VSX_IMPL_2VRG_F(vec_int4, vec_dword2, " vpksdss %0,%2,%1" , vec_packs)
270
266
VSX_IMPL_2VRG_F(vec_uint4, vec_udword2, " vpkudus %0,%2,%1" , vec_packs)
267
+ #endif // __GNUG__ < 6
268
+
269
+ #if __GNUG__ < 5
270
+ // vec_xxpermdi in gcc4 missing little-endian supports just like clang
271
+ # define vec_permi (a, b, c ) vec_xxpermdi(b, a, (3 ^ ((c & 1 ) << 1 | c >> 1 )))
271
272
#else
272
273
# define vec_permi vec_xxpermdi
273
274
#endif // __GNUG__ < 5
0 commit comments