testsuite: Fix vect_long_mult on Power [PR109705]

Message ID 53887523-ea6c-3a7e-6bb6-59268b9d3a4f@linux.ibm.com
State New
Headers
Series testsuite: Fix vect_long_mult on Power [PR109705] |

Checks

Context Check Description
linaro-tcwg-bot/tcwg_gcc_build--master-arm success Testing passed
linaro-tcwg-bot/tcwg_gcc_build--master-aarch64 warning Patch is already merged
linaro-tcwg-bot/tcwg_gcc_check--master-arm warning Patch is already merged

Commit Message

Kewen.Lin Jan. 16, 2024, 2:42 a.m. UTC
  Hi,

As pointed out by the discussion in PR109705, the current
vect_long_mult effective target check on Power is broken.
This patch is to fix it accordingly.

With additional change by adding a guard vect_long_mult
in gcc.dg/vect/pr25413a.c , it's tested well on Power{8,9}
LE & BE (also on Power10 LE as before).

I'm going to push this soon.

BR,
Kewen
-----
	PR testsuite/109705

gcc/testsuite/ChangeLog:

	* lib/target-supports.exp (check_effective_target_vect_long_mult):
	Fix powerpc*-*-* checks.
---
 gcc/testsuite/lib/target-supports.exp | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

--
2.39.1
  

Comments

Andrew Pinski Jan. 26, 2024, 10:42 p.m. UTC | #1
On Mon, Jan 15, 2024 at 6:43 PM Kewen.Lin <linkw@linux.ibm.com> wrote:
>
> Hi,
>
> As pointed out by the discussion in PR109705, the current
> vect_long_mult effective target check on Power is broken.
> This patch is to fix it accordingly.
>
> With additional change by adding a guard vect_long_mult
> in gcc.dg/vect/pr25413a.c , it's tested well on Power{8,9}
> LE & BE (also on Power10 LE as before).

I see this is still broken for 32bit PowerPC where vect_long_mult
should return true still since long there is 32bit and there is a
32bit vector multiply.
Can someone test (and apply if approved) the attached patch to see if
it fixes pr25413a.c for powerpc*-*-* for 32bit?

Thanks,
Andrew Pinski

>
> I'm going to push this soon.
>
> BR,
> Kewen
> -----
>         PR testsuite/109705
>
> gcc/testsuite/ChangeLog:
>
>         * lib/target-supports.exp (check_effective_target_vect_long_mult):
>         Fix powerpc*-*-* checks.
> ---
>  gcc/testsuite/lib/target-supports.exp | 6 +++---
>  1 file changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/gcc/testsuite/lib/target-supports.exp b/gcc/testsuite/lib/target-supports.exp
> index 81ae92a0266..fac32fb3d0e 100644
> --- a/gcc/testsuite/lib/target-supports.exp
> +++ b/gcc/testsuite/lib/target-supports.exp
> @@ -9073,9 +9073,9 @@ proc check_effective_target_vect_int_mult { } {
>
>  proc check_effective_target_vect_long_mult { } {
>      if { [istarget i?86-*-*] || [istarget x86_64-*-*]
> -        || (([istarget powerpc*-*-*]
> -              && ![istarget powerpc-*-linux*paired*])
> -              && [check_effective_target_ilp32])
> +        || ([istarget powerpc*-*-*]
> +             && [check_effective_target_powerpc_vsx_ok]
> +             && [check_effective_target_has_arch_pwr10])
>          || [is-effective-target arm_neon]
>          || ([istarget sparc*-*-*] && [check_effective_target_ilp32])
>          || [istarget aarch64*-*-*]
> --
> 2.39.1
diff --git a/gcc/testsuite/lib/target-supports.exp b/gcc/testsuite/lib/target-supports.exp
index 9fc5aae166d..52a2aec9982 100644
--- a/gcc/testsuite/lib/target-supports.exp
+++ b/gcc/testsuite/lib/target-supports.exp
@@ -9086,8 +9086,9 @@ proc check_effective_target_vect_int_mult { } {
 proc check_effective_target_vect_long_mult { } {
     if { [istarget i?86-*-*] || [istarget x86_64-*-*]
 	 || ([istarget powerpc*-*-*]
-	      && [check_effective_target_powerpc_vsx_ok]
-	      && [check_effective_target_has_arch_pwr10])
+	      && ([check_effective_target_ilp32]
+		  || ([check_effective_target_powerpc_vsx_ok]
+	              && [check_effective_target_has_arch_pwr10])))
 	 || [is-effective-target arm_neon]
 	 || ([istarget sparc*-*-*] && [check_effective_target_ilp32])
 	 || ([istarget aarch64*-*-*]
  
Kewen.Lin Jan. 29, 2024, 2:39 a.m. UTC | #2
on 2024/1/27 06:42, Andrew Pinski wrote:
> On Mon, Jan 15, 2024 at 6:43 PM Kewen.Lin <linkw@linux.ibm.com> wrote:
>>
>> Hi,
>>
>> As pointed out by the discussion in PR109705, the current
>> vect_long_mult effective target check on Power is broken.
>> This patch is to fix it accordingly.
>>
>> With additional change by adding a guard vect_long_mult
>> in gcc.dg/vect/pr25413a.c , it's tested well on Power{8,9}
>> LE & BE (also on Power10 LE as before).
> 
> I see this is still broken for 32bit PowerPC where vect_long_mult
> should return true still since long there is 32bit and there is a
> 32bit vector multiply.
> Can someone test (and apply if approved) the attached patch to see if
> it fixes pr25413a.c for powerpc*-*-* for 32bit?

Thanks for fixing, it works perfectly as tested.

I just pushed it as r14-8485 (also updating with a tab and commit log).

BR,
Kewen

> 
> Thanks,
> Andrew Pinski
> 
>>
>> I'm going to push this soon.
>>
>> BR,
>> Kewen
>> -----
>>         PR testsuite/109705
>>
>> gcc/testsuite/ChangeLog:
>>
>>         * lib/target-supports.exp (check_effective_target_vect_long_mult):
>>         Fix powerpc*-*-* checks.
>> ---
>>  gcc/testsuite/lib/target-supports.exp | 6 +++---
>>  1 file changed, 3 insertions(+), 3 deletions(-)
>>
>> diff --git a/gcc/testsuite/lib/target-supports.exp b/gcc/testsuite/lib/target-supports.exp
>> index 81ae92a0266..fac32fb3d0e 100644
>> --- a/gcc/testsuite/lib/target-supports.exp
>> +++ b/gcc/testsuite/lib/target-supports.exp
>> @@ -9073,9 +9073,9 @@ proc check_effective_target_vect_int_mult { } {
>>
>>  proc check_effective_target_vect_long_mult { } {
>>      if { [istarget i?86-*-*] || [istarget x86_64-*-*]
>> -        || (([istarget powerpc*-*-*]
>> -              && ![istarget powerpc-*-linux*paired*])
>> -              && [check_effective_target_ilp32])
>> +        || ([istarget powerpc*-*-*]
>> +             && [check_effective_target_powerpc_vsx_ok]
>> +             && [check_effective_target_has_arch_pwr10])
>>          || [is-effective-target arm_neon]
>>          || ([istarget sparc*-*-*] && [check_effective_target_ilp32])
>>          || [istarget aarch64*-*-*]
>> --
>> 2.39.1
  

Patch

diff --git a/gcc/testsuite/lib/target-supports.exp b/gcc/testsuite/lib/target-supports.exp
index 81ae92a0266..fac32fb3d0e 100644
--- a/gcc/testsuite/lib/target-supports.exp
+++ b/gcc/testsuite/lib/target-supports.exp
@@ -9073,9 +9073,9 @@  proc check_effective_target_vect_int_mult { } {

 proc check_effective_target_vect_long_mult { } {
     if { [istarget i?86-*-*] || [istarget x86_64-*-*]
-	 || (([istarget powerpc*-*-*]
-              && ![istarget powerpc-*-linux*paired*])
-              && [check_effective_target_ilp32])
+	 || ([istarget powerpc*-*-*]
+	      && [check_effective_target_powerpc_vsx_ok]
+	      && [check_effective_target_has_arch_pwr10])
 	 || [is-effective-target arm_neon]
 	 || ([istarget sparc*-*-*] && [check_effective_target_ilp32])
 	 || [istarget aarch64*-*-*]