Message ID | 20240124173646.4025318-1-quic_apinski@quicinc.com |
---|---|
State | New |
Headers | show |
Series | Fix vect_long_mult for aarch64 [PR109705] | expand |
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*-*-*]
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.
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*-*-*]
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*-*-*]
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(-)