Hi, on 2024/5/30 00:05, Carl Love wrote: > This was patch 7 in the previous series. Patch was updated to address the > feedback comments. > > Carl > ------------------------------------------------------------------------ > > rs6000, remove the vec_xxsel built-ins, they are duplicates > > The following undocumented built-ins are covered by the existing overloaded > vec_sel built-in definitions. > > const vsc __builtin_vsx_xxsel_16qi (vsc, vsc, vsc); > same as vsc __builtin_vec_sel (vsc, vsc, vuc); (overloaded vec_sel) > > const vuc __builtin_vsx_xxsel_16qi_uns (vuc, vuc, vuc); > same as vuc __builtin_vec_sel (vuc, vuc, vuc); (overloaded vec_sel) > > const vd __builtin_vsx_xxsel_2df (vd, vd, vd); > same as vd __builtin_vec_sel (vd, vd, vull); (overloaded vec_sel) > > const vsll __builtin_vsx_xxsel_2di (vsll, vsll, vsll); > same as vsll __builtin_vec_sel (vsll, vsll, vsll); (overloaded vec_sel) > > const vull __builtin_vsx_xxsel_2di_uns (vull, vull, vull); > same as vull __builtin_vec_sel (vull, vull, vsll); (overloaded vec_sel) > > const vf __builtin_vsx_xxsel_4sf (vf, vf, vf); > same as vf __builtin_vec_sel (vf, vf, vsi) (overloaded vec_sel) > > const vsi __builtin_vsx_xxsel_4si (vsi, vsi, vsi); > same as vsi __builtin_vec_sel (vsi, vsi, vbi); (overloaded vec_sel) > > const vui __builtin_vsx_xxsel_4si_uns (vui, vui, vui); > same as vui __builtin_vec_sel (vui, vui, vui); (overloaded vec_sel) > > const vss __builtin_vsx_xxsel_8hi (vss, vss, vss); > same as vss __builtin_vec_sel (vss, vss, vbs); (overloaded vec_sel) > > const vus __builtin_vsx_xxsel_8hi_uns (vus, vus, vus); > same as vus __builtin_vec_sel (vus, vus, vus); (overloaded vec_sel) > > This patch removed the duplicate built-in definitions so users will only > use the documented vec_sel built-in. The __builtin_vsx_xxsel_[4si, 8hi, > 16qi, 4sf, 2df] tests are also removed.
OK for trunk, thanks! BR, Kewen > > gcc/ChangeLog: > * config/rs6000/rs6000-builtins.def (__builtin_vsx_xxsel_16qi, > __builtin_vsx_xxsel_16qi_uns, __builtin_vsx_xxsel_2df, > __builtin_vsx_xxsel_2di, __builtin_vsx_xxsel_2di_uns, > __builtin_vsx_xxsel_4sf, __builtin_vsx_xxsel_4si, > __builtin_vsx_xxsel_4si_uns, __builtin_vsx_xxsel_8hi, > __builtin_vsx_xxsel_8hi_uns): Remove built-in definitions. > > gcc/testsuite/ChangeLog: > * gcc.target/powerpc/vsx-builtin-3.c (__builtin_vsx_xxsel_4si, > __builtin_vsx_xxsel_8hi, __builtin_vsx_xxsel_16qi, > __builtin_vsx_xxsel_4sf, __builtin_vsx_xxsel_2df, > __builtin_vsx_xxsel): Change built-in call to overloaded built-in > call vec_sel. > --- > gcc/config/rs6000/rs6000-builtins.def | 30 ---------------- > .../gcc.target/powerpc/vsx-builtin-3.c | 36 ++++++++++--------- > 2 files changed, 19 insertions(+), 47 deletions(-) > > diff --git a/gcc/config/rs6000/rs6000-builtins.def > b/gcc/config/rs6000/rs6000-builtins.def > index ea0da77f13e..a78c52183bc 100644 > --- a/gcc/config/rs6000/rs6000-builtins.def > +++ b/gcc/config/rs6000/rs6000-builtins.def > @@ -1898,36 +1898,6 @@ > const vss __builtin_vsx_xxpermdi_8hi (vss, vss, const int<2>); > XXPERMDI_8HI vsx_xxpermdi_v8hi {} > > - const vsc __builtin_vsx_xxsel_16qi (vsc, vsc, vsc); > - XXSEL_16QI vector_select_v16qi {} > - > - const vuc __builtin_vsx_xxsel_16qi_uns (vuc, vuc, vuc); > - XXSEL_16QI_UNS vector_select_v16qi_uns {} > - > - const vd __builtin_vsx_xxsel_2df (vd, vd, vd); > - XXSEL_2DF vector_select_v2df {} > - > - const vsll __builtin_vsx_xxsel_2di (vsll, vsll, vsll); > - XXSEL_2DI vector_select_v2di {} > - > - const vull __builtin_vsx_xxsel_2di_uns (vull, vull, vull); > - XXSEL_2DI_UNS vector_select_v2di_uns {} > - > - const vf __builtin_vsx_xxsel_4sf (vf, vf, vf); > - XXSEL_4SF vector_select_v4sf {} > - > - const vsi __builtin_vsx_xxsel_4si (vsi, vsi, vsi); > - XXSEL_4SI vector_select_v4si {} > - > - const vui __builtin_vsx_xxsel_4si_uns (vui, vui, vui); > - XXSEL_4SI_UNS vector_select_v4si_uns {} > - > - const vss __builtin_vsx_xxsel_8hi (vss, vss, vss); > - XXSEL_8HI vector_select_v8hi {} > - > - const vus __builtin_vsx_xxsel_8hi_uns (vus, vus, vus); > - XXSEL_8HI_UNS vector_select_v8hi_uns {} > - > const vsc __builtin_vsx_xxsldwi_16qi (vsc, vsc, const int<2>); > XXSLDWI_16QI vsx_xxsldwi_v16qi {} > > diff --git a/gcc/testsuite/gcc.target/powerpc/vsx-builtin-3.c > b/gcc/testsuite/gcc.target/powerpc/vsx-builtin-3.c > index ff875c55304..e20d3f03c86 100644 > --- a/gcc/testsuite/gcc.target/powerpc/vsx-builtin-3.c > +++ b/gcc/testsuite/gcc.target/powerpc/vsx-builtin-3.c > @@ -37,6 +37,8 @@ > /* { dg-final { scan-assembler "xvcvsxdsp" } } */ > /* { dg-final { scan-assembler "xvcvuxdsp" } } */ > > +#include <altivec.h> > + > extern __vector int si[][4]; > extern __vector short ss[][4]; > extern __vector signed char sc[][4]; > @@ -61,23 +63,23 @@ int do_sel(void) > { > int i = 0; > > - si[i][0] = __builtin_vsx_xxsel_4si (si[i][1], si[i][2], si[i][3]); i++; > - ss[i][0] = __builtin_vsx_xxsel_8hi (ss[i][1], ss[i][2], ss[i][3]); i++; > - sc[i][0] = __builtin_vsx_xxsel_16qi (sc[i][1], sc[i][2], sc[i][3]); i++; > - f[i][0] = __builtin_vsx_xxsel_4sf (f[i][1], f[i][2], f[i][3]); i++; > - d[i][0] = __builtin_vsx_xxsel_2df (d[i][1], d[i][2], d[i][3]); i++; > - > - si[i][0] = __builtin_vsx_xxsel (si[i][1], si[i][2], bi[i][3]); i++; > - ss[i][0] = __builtin_vsx_xxsel (ss[i][1], ss[i][2], bs[i][3]); i++; > - sc[i][0] = __builtin_vsx_xxsel (sc[i][1], sc[i][2], bc[i][3]); i++; > - f[i][0] = __builtin_vsx_xxsel (f[i][1], f[i][2], bi[i][3]); i++; > - d[i][0] = __builtin_vsx_xxsel (d[i][1], d[i][2], bl[i][3]); i++; > - > - si[i][0] = __builtin_vsx_xxsel (si[i][1], si[i][2], ui[i][3]); i++; > - ss[i][0] = __builtin_vsx_xxsel (ss[i][1], ss[i][2], us[i][3]); i++; > - sc[i][0] = __builtin_vsx_xxsel (sc[i][1], sc[i][2], uc[i][3]); i++; > - f[i][0] = __builtin_vsx_xxsel (f[i][1], f[i][2], ui[i][3]); i++; > - d[i][0] = __builtin_vsx_xxsel (d[i][1], d[i][2], ul[i][3]); i++; > + si[i][0] = vec_sel (si[i][1], si[i][2], ui[i][3]); i++; > + ss[i][0] = vec_sel (ss[i][1], ss[i][2], us[i][3]); i++; > + sc[i][0] = vec_sel (sc[i][1], sc[i][2], uc[i][3]); i++; > + f[i][0] = vec_sel (f[i][1], f[i][2], f[i][3]); i++; > + d[i][0] = vec_sel (d[i][1], d[i][2], d[i][3]); i++; > + > + si[i][0] = vec_sel (si[i][1], si[i][2], bi[i][3]); i++; > + ss[i][0] = vec_sel (ss[i][1], ss[i][2], bs[i][3]); i++; > + sc[i][0] = vec_sel (sc[i][1], sc[i][2], bc[i][3]); i++; > + f[i][0] = vec_sel (f[i][1], f[i][2], bi[i][3]); i++; > + d[i][0] = vec_sel (d[i][1], d[i][2], bl[i][3]); i++; > + > + si[i][0] = vec_sel (si[i][1], si[i][2], ui[i][3]); i++; > + ss[i][0] = vec_sel (ss[i][1], ss[i][2], us[i][3]); i++; > + sc[i][0] = vec_sel (sc[i][1], sc[i][2], uc[i][3]); i++; > + f[i][0] = vec_sel (f[i][1], f[i][2], ui[i][3]); i++; > + d[i][0] = vec_sel (d[i][1], d[i][2], ul[i][3]); i++; > > return i; > }