Hi! PR103625 observes that we ICE when doing vector compares on doublewords. The original built-in function support requires Power8 vector support for these, but this was missed in the new built-in support. Moving these functions to the [power8-vector] stanza solves the problem.
Tested the fix on a powerpc-e300c3-linux-gnu cross. Bootstrapped and tested on powerpc64le-linux-gnu with no regressions. Is this okay for trunk? Thanks! Bill 2021-12-13 Bill Schmidt <wschm...@linux.ibm.com> gcc/ PR target/103625 * config/rs6000/rs6000-builtin-new.def (__builtin_altivec_vcmpequd): Move to power8-vector stanza. (__builtin_altivec_vcmpequd_p): Likewise. (__builtin_altivec_vcmpgtsd): Likewise. (__builtin_altivec_vcmpgtsd_p): Likewise. (__builtin_altivec_vcmpgtud): Likewise. (__builtin_altivec_vcmpgtud_p): Likewise. --- gcc/config/rs6000/rs6000-builtin-new.def | 36 ++++++++++++------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/gcc/config/rs6000/rs6000-builtin-new.def b/gcc/config/rs6000/rs6000-builtin-new.def index a020dbbe2fb..bd950f8db36 100644 --- a/gcc/config/rs6000/rs6000-builtin-new.def +++ b/gcc/config/rs6000/rs6000-builtin-new.def @@ -1200,24 +1200,6 @@ const vull __builtin_altivec_vandc_v2di_uns (vull, vull); VANDC_V2DI_UNS andcv2di3 {} - const vsll __builtin_altivec_vcmpequd (vull, vull); - VCMPEQUD vector_eqv2di {} - - const int __builtin_altivec_vcmpequd_p (int, vsll, vsll); - VCMPEQUD_P vector_eq_v2di_p {pred} - - const vsll __builtin_altivec_vcmpgtsd (vsll, vsll); - VCMPGTSD vector_gtv2di {} - - const int __builtin_altivec_vcmpgtsd_p (int, vsll, vsll); - VCMPGTSD_P vector_gt_v2di_p {pred} - - const vsll __builtin_altivec_vcmpgtud (vull, vull); - VCMPGTUD vector_gtuv2di {} - - const int __builtin_altivec_vcmpgtud_p (int, vsll, vsll); - VCMPGTUD_P vector_gtu_v2di_p {pred} - const vd __builtin_altivec_vnor_v2df (vd, vd); VNOR_V2DF norv2df3 {} @@ -2221,6 +2203,24 @@ const vsc __builtin_altivec_vbpermq2 (vsc, vsc); VBPERMQ2 altivec_vbpermq2 {} + const vsll __builtin_altivec_vcmpequd (vull, vull); + VCMPEQUD vector_eqv2di {} + + const int __builtin_altivec_vcmpequd_p (int, vsll, vsll); + VCMPEQUD_P vector_eq_v2di_p {pred} + + const vsll __builtin_altivec_vcmpgtsd (vsll, vsll); + VCMPGTSD vector_gtv2di {} + + const int __builtin_altivec_vcmpgtsd_p (int, vsll, vsll); + VCMPGTSD_P vector_gt_v2di_p {pred} + + const vsll __builtin_altivec_vcmpgtud (vull, vull); + VCMPGTUD vector_gtuv2di {} + + const int __builtin_altivec_vcmpgtud_p (int, vsll, vsll); + VCMPGTUD_P vector_gtu_v2di_p {pred} + const vsll __builtin_altivec_vmaxsd (vsll, vsll); VMAXSD smaxv2di3 {} -- 2.27.0