Fix vect_long_mult for aarch64 [PR109705]

Message ID 20240124173646.4025318-1-quic_apinski@quicinc.com
State Unresolved
Headers
Series Fix vect_long_mult for aarch64 [PR109705] |

Checks

Context Check Description
snail/gcc-patch-check warning Git am fail log

Commit Message

Andrew Pinski (QUIC) Jan. 24, 2024, 5:36 p.m. UTC
  On aarch64, vectorization of `long` multiply can be done if SVE is enabled
or if long is 32bit (ILP32). It can also be done for constants too but there
is no effective target test for that just yet.

Build and tested on aarch64-linux-gnu with no regressions (also tested with SVE enabled).

gcc/testsuite/ChangeLog:

	* lib/target-supports.exp (check_effective_target_vect_long_mult):
	Fix aarch64*-*-* checks.

Signed-off-by: Andrew Pinski <quic_apinski@quicinc.com>
---
 gcc/testsuite/lib/target-supports.exp | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)
  

Comments

Richard Sandiford Jan. 24, 2024, 6:12 p.m. UTC | #1
Andrew Pinski <quic_apinski@quicinc.com> writes:
> On aarch64, vectorization of `long` multiply can be done if SVE is enabled
> or if long is 32bit (ILP32). It can also be done for constants too but there
> is no effective target test for that just yet.
>
> Build and tested on aarch64-linux-gnu with no regressions (also tested with SVE enabled).
>
> gcc/testsuite/ChangeLog:
>
> 	* lib/target-supports.exp (check_effective_target_vect_long_mult):
> 	Fix aarch64*-*-* checks.

OK, thanks!

Richard

> Signed-off-by: Andrew Pinski <quic_apinski@quicinc.com>
> ---
>  gcc/testsuite/lib/target-supports.exp | 4 +++-
>  1 file changed, 3 insertions(+), 1 deletion(-)
>
> diff --git a/gcc/testsuite/lib/target-supports.exp b/gcc/testsuite/lib/target-supports.exp
> index 9ca8355b3e1..178d1a73064 100644
> --- a/gcc/testsuite/lib/target-supports.exp
> +++ b/gcc/testsuite/lib/target-supports.exp
> @@ -9090,7 +9090,9 @@ proc check_effective_target_vect_long_mult { } {
>  	      && [check_effective_target_has_arch_pwr10])
>  	 || [is-effective-target arm_neon]
>  	 || ([istarget sparc*-*-*] && [check_effective_target_ilp32])
> -	 || [istarget aarch64*-*-*]
> +	 || ([istarget aarch64*-*-*]
> +	     && ([check_effective_target_ilp32]
> +		 || check_effective_target_aarch64_sve]))
>  	 || ([istarget mips*-*-*]
>  	      && [et-is-effective-target mips_msa])
>  	 || ([istarget riscv*-*-*]
  
H.J. Lu Jan. 25, 2024, 12:38 a.m. UTC | #2
On Wed, Jan 24, 2024 at 9:37 AM Andrew Pinski <quic_apinski@quicinc.com> wrote:
>
> On aarch64, vectorization of `long` multiply can be done if SVE is enabled
> or if long is 32bit (ILP32). It can also be done for constants too but there
> is no effective target test for that just yet.
>
> Build and tested on aarch64-linux-gnu with no regressions (also tested with SVE enabled).
>
> gcc/testsuite/ChangeLog:
>
>         * lib/target-supports.exp (check_effective_target_vect_long_mult):
>         Fix aarch64*-*-* checks.
>
> Signed-off-by: Andrew Pinski <quic_apinski@quicinc.com>
> ---
>  gcc/testsuite/lib/target-supports.exp | 4 +++-
>  1 file changed, 3 insertions(+), 1 deletion(-)
>
> diff --git a/gcc/testsuite/lib/target-supports.exp b/gcc/testsuite/lib/target-supports.exp
> index 9ca8355b3e1..178d1a73064 100644
> --- a/gcc/testsuite/lib/target-supports.exp
> +++ b/gcc/testsuite/lib/target-supports.exp
> @@ -9090,7 +9090,9 @@ proc check_effective_target_vect_long_mult { } {
>               && [check_effective_target_has_arch_pwr10])
>          || [is-effective-target arm_neon]
>          || ([istarget sparc*-*-*] && [check_effective_target_ilp32])
> -        || [istarget aarch64*-*-*]
> +        || ([istarget aarch64*-*-*]
> +            && ([check_effective_target_ilp32]
> +                || check_effective_target_aarch64_sve]))
                        ^ Missing [

I got

ERROR: gcc.dg/vect/pr60656.c: error executing dg-final: invalid
bareword "check_effective_target..."
in expression "...e_target_ilp32]
|| check_effective_target...]))
|| ([istarget mi...";
should be "$check_effective_target..." or
"{check_effective_target...}" or "check_effective_target...(...)" or
...
ERROR: gcc.dg/vect/pr60656.c -flto -ffat-lto-objects: error executing
dg-final: invalid bareword "check_effective_target..."
in expression "...e_target_ilp32]
|| check_effective_target...]))
|| ([istarget mi...";
should be "$check_effective_target..." or
"{check_effective_target...}" or "check_effective_target...(...)" or
...


>          || ([istarget mips*-*-*]
>               && [et-is-effective-target mips_msa])
>          || ([istarget riscv*-*-*]
> --
> 2.39.3
>

I am checking in this to fix it.
  
Andrew Pinski Jan. 25, 2024, 12:41 a.m. UTC | #3
On Wed, Jan 24, 2024 at 4:40 PM H.J. Lu <hjl.tools@gmail.com> wrote:
>
> On Wed, Jan 24, 2024 at 9:37 AM Andrew Pinski <quic_apinski@quicinc.com> wrote:
> >
> > On aarch64, vectorization of `long` multiply can be done if SVE is enabled
> > or if long is 32bit (ILP32). It can also be done for constants too but there
> > is no effective target test for that just yet.
> >
> > Build and tested on aarch64-linux-gnu with no regressions (also tested with SVE enabled).
> >
> > gcc/testsuite/ChangeLog:
> >
> >         * lib/target-supports.exp (check_effective_target_vect_long_mult):
> >         Fix aarch64*-*-* checks.
> >
> > Signed-off-by: Andrew Pinski <quic_apinski@quicinc.com>
> > ---
> >  gcc/testsuite/lib/target-supports.exp | 4 +++-
> >  1 file changed, 3 insertions(+), 1 deletion(-)
> >
> > diff --git a/gcc/testsuite/lib/target-supports.exp b/gcc/testsuite/lib/target-supports.exp
> > index 9ca8355b3e1..178d1a73064 100644
> > --- a/gcc/testsuite/lib/target-supports.exp
> > +++ b/gcc/testsuite/lib/target-supports.exp
> > @@ -9090,7 +9090,9 @@ proc check_effective_target_vect_long_mult { } {
> >               && [check_effective_target_has_arch_pwr10])
> >          || [is-effective-target arm_neon]
> >          || ([istarget sparc*-*-*] && [check_effective_target_ilp32])
> > -        || [istarget aarch64*-*-*]
> > +        || ([istarget aarch64*-*-*]
> > +            && ([check_effective_target_ilp32]
> > +                || check_effective_target_aarch64_sve]))
>                         ^ Missing [
>
> I got
>
> ERROR: gcc.dg/vect/pr60656.c: error executing dg-final: invalid
> bareword "check_effective_target..."
> in expression "...e_target_ilp32]
> || check_effective_target...]))
> || ([istarget mi...";
> should be "$check_effective_target..." or
> "{check_effective_target...}" or "check_effective_target...(...)" or
> ...
> ERROR: gcc.dg/vect/pr60656.c -flto -ffat-lto-objects: error executing
> dg-final: invalid bareword "check_effective_target..."
> in expression "...e_target_ilp32]
> || check_effective_target...]))
> || ([istarget mi...";
> should be "$check_effective_target..." or
> "{check_effective_target...}" or "check_effective_target...(...)" or
> ...
>
>
> >          || ([istarget mips*-*-*]
> >               && [et-is-effective-target mips_msa])
> >          || ([istarget riscv*-*-*]
> > --
> > 2.39.3
> >
>
> I am checking in this to fix it.

I actually just checked in that same fix :)

Thanks,
Andrew

>
> --
> H.J.
> ---
> diff --git a/gcc/testsuite/lib/target-supports.exp
> b/gcc/testsuite/lib/target-supports.exp
> index 82520119026..49e748caf17 100644
> --- a/gcc/testsuite/lib/target-supports.exp
> +++ b/gcc/testsuite/lib/target-supports.exp
> @@ -9092,7 +9092,7 @@ proc check_effective_target_vect_long_mult { } {
>     || ([istarget sparc*-*-*] && [check_effective_target_ilp32])
>     || ([istarget aarch64*-*-*]
>         && ([check_effective_target_ilp32]
> -      || check_effective_target_aarch64_sve]))
> +      || [check_effective_target_aarch64_sve]))
>     || ([istarget mips*-*-*]
>          && [et-is-effective-target mips_msa])
>     || ([istarget riscv*-*-*]
  

Patch

diff --git a/gcc/testsuite/lib/target-supports.exp b/gcc/testsuite/lib/target-supports.exp
index 9ca8355b3e1..178d1a73064 100644
--- a/gcc/testsuite/lib/target-supports.exp
+++ b/gcc/testsuite/lib/target-supports.exp
@@ -9090,7 +9090,9 @@  proc check_effective_target_vect_long_mult { } {
 	      && [check_effective_target_has_arch_pwr10])
 	 || [is-effective-target arm_neon]
 	 || ([istarget sparc*-*-*] && [check_effective_target_ilp32])
-	 || [istarget aarch64*-*-*]
+	 || ([istarget aarch64*-*-*]
+	     && ([check_effective_target_ilp32]
+		 || check_effective_target_aarch64_sve]))
 	 || ([istarget mips*-*-*]
 	      && [et-is-effective-target mips_msa])
 	 || ([istarget riscv*-*-*]