rs6000: Builtins for doubleword compare should be in [power8-vector] (PR103625)

Message ID 03bf8867-b74e-7505-9ff2-47b474ef5f23@linux.ibm.com
State Committed
Commit 936051f9241ee2eafae8f5b8a4ad99fd7ed693bc
Headers
Series rs6000: Builtins for doubleword compare should be in [power8-vector] (PR103625) |

Commit Message

Li, Pan2 via Gcc-patches Dec. 13, 2021, 4:02 p.m. UTC
  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

David Edelsohn Dec. 13, 2021, 4:29 p.m. UTC | #1
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
>
>
  

Patch

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 {}