rs6000: Builtins for doubleword compare should be in [power8-vector] (PR103625)
Commit Message
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 <wschmidt@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(-)
Comments
On Mon, Dec 13, 2021 at 11:02 AM Bill Schmidt <wschmidt@linux.ibm.com> wrote:
>
> 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?
Okay.
Thanks, David
>
> Thanks!
> Bill
>
>
> 2021-12-13 Bill Schmidt <wschmidt@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
>
>
@@ -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 {}