Re: [PATCH, GCC/testsuite/ARM] Consistently check for neon in vect effective targets

2017-06-28 Thread Thomas Preudhomme



On 28/06/17 15:59, Kyrill Tkachov wrote:

Hi Thomas,

On 28/06/17 15:49, Thomas Preudhomme wrote:

On 20/06/17 13:44, Christophe Lyon wrote:




The results with a more recent trunk (r249356)) are here:
http://people.linaro.org/~christophe.lyon/cross-validation/gcc-test-patches/249356-consistent_neon_check.patch/report-build-info.html 



They are slightly different, but still tedious to check ;-)


I've checked arm-none-linux-gnueabi and arm-none-linux-gnueabihf and found that:

* there's no new FAIL
* changes to UNSUPPORTED and NA are for the same files
* changes are only for tests in a vect directory
* changes for arm-none-linux-gnueabihf are only when targeting vfp without 
neon (tests are disabled because there is no vector unit)


Changes to arm-none-linux-gnueabi makes sense since this defaults to soft 
floating point and none of the test disabled adds any option to select another 
variant.


I believe this all makes sense.

Therefore, is this ok to commit?

Best regards,

Thomas


@@ -4987,10 +4982,10 @@ proc check_effective_target_vect_shift_char { } {

  proc check_effective_target_vect_long { } {
  if { [istarget i?86-*-*] || [istarget x86_64-*-*]
- || (([istarget powerpc*-*-*]
-  && ![istarget powerpc-*-linux*paired*])
+ || (([istarget powerpc*-*-*]
+  && ![istarget powerpc-*-linux*paired*])
&& [check_effective_target_ilp32])


Is this just a whitespace change?
If it is intended then okay.


It is yes, trailing whitespace. I took the liberty to fix it because I was 
changing some other issues in the same procedure.




This is okay with a ChangeLog entry.


Sorry, I should have pasted it again from the initial message.

2017-06-06  Thomas Preud'homme  

* lib/target-supports.exp (check_effective_target_vect_int): Replace
current ARM check by ARM NEON's availability check.
(check_effective_target_vect_intfloat_cvt): Likewise.
(check_effective_target_vect_uintfloat_cvt): Likewise.
(check_effective_target_vect_floatint_cvt): Likewise.
(check_effective_target_vect_floatuint_cvt): Likewise.
(check_effective_target_vect_shift): Likewise.
(check_effective_target_whole_vector_shift): Likewise.
(check_effective_target_vect_bswap): Likewise.
(check_effective_target_vect_shift_char): Likewise.
(check_effective_target_vect_long): Likewise.
(check_effective_target_vect_float): Likewise.
(check_effective_target_vect_perm): Likewise.
(check_effective_target_vect_perm_byte): Likewise.
(check_effective_target_vect_perm_short): Likewise.
(check_effective_target_vect_widen_sum_hi_to_si_pattern): Likewise.
(check_effective_target_vect_widen_sum_qi_to_hi): Likewise.
(check_effective_target_vect_widen_mult_qi_to_hi): Likewise.
(check_effective_target_vect_widen_mult_hi_to_si): Likewise.
(check_effective_target_vect_widen_mult_qi_to_hi_pattern): Likewise.
(check_effective_target_vect_widen_mult_hi_to_si_pattern): Likewise.
(check_effective_target_vect_widen_shift): Likewise.
(check_effective_target_vect_extract_even_odd): Likewise.
(check_effective_target_vect_interleave): Likewise.
(check_effective_target_vect_multiple_sizes): Likewise.
(check_effective_target_vect64): Likewise.
(check_effective_target_vect_max_reduc): Likewise.



Thanks, this looks like a good change.
Kyrill


Thanks!

Best regards,

Thomas


Re: [PATCH, GCC/testsuite/ARM] Consistently check for neon in vect effective targets

2017-06-28 Thread Kyrill Tkachov

Hi Thomas,

On 28/06/17 15:49, Thomas Preudhomme wrote:

On 20/06/17 13:44, Christophe Lyon wrote:




The results with a more recent trunk (r249356)) are here:
http://people.linaro.org/~christophe.lyon/cross-validation/gcc-test-patches/249356-consistent_neon_check.patch/report-build-info.html

They are slightly different, but still tedious to check ;-)


I've checked arm-none-linux-gnueabi and arm-none-linux-gnueabihf and found that:

* there's no new FAIL
* changes to UNSUPPORTED and NA are for the same files
* changes are only for tests in a vect directory
* changes for arm-none-linux-gnueabihf are only when targeting vfp without neon 
(tests are disabled because there is no vector unit)

Changes to arm-none-linux-gnueabi makes sense since this defaults to soft 
floating point and none of the test disabled adds any option to select another 
variant.

I believe this all makes sense.

Therefore, is this ok to commit?

Best regards,

Thomas


@@ -4987,10 +4982,10 @@ proc check_effective_target_vect_shift_char { } {
 
 proc check_effective_target_vect_long { } {

 if { [istarget i?86-*-*] || [istarget x86_64-*-*]
-|| (([istarget powerpc*-*-*]
-  && ![istarget powerpc-*-linux*paired*])
+|| (([istarget powerpc*-*-*]
+  && ![istarget powerpc-*-linux*paired*])
   && [check_effective_target_ilp32])


Is this just a whitespace change?
If it is intended then okay.

This is okay with a ChangeLog entry.

Thanks, this looks like a good change.
Kyrill


Re: [PATCH, GCC/testsuite/ARM] Consistently check for neon in vect effective targets

2017-06-28 Thread Thomas Preudhomme

On 20/06/17 13:44, Christophe Lyon wrote:




The results with a more recent trunk (r249356)) are here:
http://people.linaro.org/~christophe.lyon/cross-validation/gcc-test-patches/249356-consistent_neon_check.patch/report-build-info.html

They are slightly different, but still tedious to check ;-)


I've checked arm-none-linux-gnueabi and arm-none-linux-gnueabihf and found that:

* there's no new FAIL
* changes to UNSUPPORTED and NA are for the same files
* changes are only for tests in a vect directory
* changes for arm-none-linux-gnueabihf are only when targeting vfp without neon 
(tests are disabled because there is no vector unit)


Changes to arm-none-linux-gnueabi makes sense since this defaults to soft 
floating point and none of the test disabled adds any option to select another 
variant.


I believe this all makes sense.

Therefore, is this ok to commit?

Best regards,

Thomas
diff --git a/gcc/testsuite/lib/target-supports.exp b/gcc/testsuite/lib/target-supports.exp
index ded6383cc1f9a1489cd83e1dace0c2fc48e252c3..aa8550c9d2cf0ae7e157d9c67fa06ad811651421 100644
--- a/gcc/testsuite/lib/target-supports.exp
+++ b/gcc/testsuite/lib/target-supports.exp
@@ -2916,7 +2916,7 @@ proc check_effective_target_vect_int { } {
 	 || [istarget alpha*-*-*]
 	 || [istarget ia64-*-*] 
 	 || [istarget aarch64*-*-*]
-	 || [check_effective_target_arm32]
+	 || [is-effective-target arm_neon]
 	 || ([istarget mips*-*-*]
 		 && ([et-is-effective-target mips_loongson]
 		 || [et-is-effective-target mips_msa])) } {
@@ -2944,8 +2944,7 @@ proc check_effective_target_vect_intfloat_cvt { } {
 if { [istarget i?86-*-*] || [istarget x86_64-*-*]
 	 || ([istarget powerpc*-*-*]
 		 && ![istarget powerpc-*-linux*paired*])
-	 || ([istarget arm*-*-*]
-		 && [check_effective_target_arm_neon_ok])
+	 || [is-effective-target arm_neon]
 	 || ([istarget mips*-*-*]
 		 && [et-is-effective-target mips_msa]) } {
 	set et_vect_intfloat_cvt_saved($et_index) 1
@@ -2987,8 +2986,7 @@ proc check_effective_target_vect_uintfloat_cvt { } {
 	 || ([istarget powerpc*-*-*]
 		 && ![istarget powerpc-*-linux*paired*])
 	 || [istarget aarch64*-*-*]
-	 || ([istarget arm*-*-*]
-		 && [check_effective_target_arm_neon_ok])
+	 || [is-effective-target arm_neon]
 	 || ([istarget mips*-*-*]
 		 && [et-is-effective-target mips_msa]) } {
 	set et_vect_uintfloat_cvt_saved($et_index) 1
@@ -3016,8 +3014,7 @@ proc check_effective_target_vect_floatint_cvt { } {
 if { [istarget i?86-*-*] || [istarget x86_64-*-*]
 	 || ([istarget powerpc*-*-*]
 		 && ![istarget powerpc-*-linux*paired*])
-	 || ([istarget arm*-*-*]
-		 && [check_effective_target_arm_neon_ok])
+	 || [is-effective-target arm_neon]
 	 || ([istarget mips*-*-*]
 		 && [et-is-effective-target mips_msa]) } {
 	set et_vect_floatint_cvt_saved($et_index) 1
@@ -3043,8 +3040,7 @@ proc check_effective_target_vect_floatuint_cvt { } {
 	set et_vect_floatuint_cvt_saved($et_index) 0
 if { ([istarget powerpc*-*-*]
 	  && ![istarget powerpc-*-linux*paired*])
-	|| ([istarget arm*-*-*]
-		&& [check_effective_target_arm_neon_ok])
+	|| [is-effective-target arm_neon]
 	|| ([istarget mips*-*-*]
 		&& [et-is-effective-target mips_msa]) } {
 	   set et_vect_floatuint_cvt_saved($et_index) 1
@@ -4903,7 +4899,7 @@ proc check_effective_target_vect_shift { } {
 	 || [istarget ia64-*-*]
 	 || [istarget i?86-*-*] || [istarget x86_64-*-*]
 	 || [istarget aarch64*-*-*]
-	 || [check_effective_target_arm32]
+	 || [is-effective-target arm_neon]
 	 || ([istarget mips*-*-*]
 		 && ([et-is-effective-target mips_msa]
 		 || [et-is-effective-target mips_loongson])) } {
@@ -4921,7 +4917,7 @@ proc check_effective_target_whole_vector_shift { } {
 	 || [istarget ia64-*-*]
 	 || [istarget aarch64*-*-*]
 	 || [istarget powerpc64*-*-*]
-	 || ([check_effective_target_arm32]
+	 || ([is-effective-target arm_neon]
 	 && [check_effective_target_arm_little_endian])
 	 || ([istarget mips*-*-*]
 	 && [et-is-effective-target mips_loongson]) } {
@@ -4945,8 +4941,7 @@ proc check_effective_target_vect_bswap { } {
 } else {
 	set et_vect_bswap_saved($et_index) 0
 	if { [istarget aarch64*-*-*]
- || ([istarget arm*-*-*]
-&& [check_effective_target_arm_neon])
+ || [is-effective-target arm_neon]
 	   } {
 	   set et_vect_bswap_saved($et_index) 1
 	}
@@ -4969,7 +4964,7 @@ proc check_effective_target_vect_shift_char { } {
 	set et_vect_shift_char_saved($et_index) 0
 	if { ([istarget powerpc*-*-*]
  && ![istarget powerpc-*-linux*paired*])
-	 || [check_effective_target_arm32]
+	 || [is-effective-target arm_neon]
 	 || ([istarget mips*-*-*]
 		 && [et-is-effective-target mips_msa]) } {
 	   set et_vect_shift_char_saved($et_index) 1
@@ -4987,10 +4982,10 @@ proc check_effective_target_vect_shift_char { } {
 
 proc check_effective_target_vect_long { } {
  

Re: [PATCH, GCC/testsuite/ARM] Consistently check for neon in vect effective targets

2017-06-20 Thread Christophe Lyon
On 19 June 2017 at 16:47, Thomas Preudhomme
 wrote:
>
>
> On 19/06/17 15:31, Christophe Lyon wrote:
>>
>> On 19 June 2017 at 16:11, Thomas Preudhomme
>>  wrote:
>>>
>>>
>>>
>>> On 19/06/17 10:16, Thomas Preudhomme wrote:




 On 19/06/17 08:41, Christophe Lyon wrote:
>
>
> Hi Thomas,
>
>
> On 15 June 2017 at 18:18, Thomas Preudhomme
>  wrote:
>>
>>
>> Hi,
>>
>> Conditions checked for ARM targets in vector-related effective targets
>> are inconsistent:
>>
>> * sometimes arm*-*-* is checked
>> * sometimes Neon is checked
>> * sometimes arm_neon_ok and sometimes arm_neon is used for neon check
>> * sometimes check_effective_target_* is used, sometimes
>> is-effective-target
>>
>> This patch consolidate all of these check into using
>> is-effective-target
>> arm_neon and when little endian was checked, the check is kept.
>>
>> ChangeLog entry is as follows:
>>
>> *** gcc/testsuite/ChangeLog ***
>>
>> 2017-06-06  Thomas Preud'homme  
>>
>> * lib/target-supports.exp (check_effective_target_vect_int):
>> Replace
>> current ARM check by ARM NEON's availability check.
>> (check_effective_target_vect_intfloat_cvt): Likewise.
>> (check_effective_target_vect_uintfloat_cvt): Likewise.
>> (check_effective_target_vect_floatint_cvt): Likewise.
>> (check_effective_target_vect_floatuint_cvt): Likewise.
>> (check_effective_target_vect_shift): Likewise.
>> (check_effective_target_whole_vector_shift): Likewise.
>> (check_effective_target_vect_bswap): Likewise.
>> (check_effective_target_vect_shift_char): Likewise.
>> (check_effective_target_vect_long): Likewise.
>> (check_effective_target_vect_float): Likewise.
>> (check_effective_target_vect_perm): Likewise.
>> (check_effective_target_vect_perm_byte): Likewise.
>> (check_effective_target_vect_perm_short): Likewise.
>> (check_effective_target_vect_widen_sum_hi_to_si_pattern):
>> Likewise.
>> (check_effective_target_vect_widen_sum_qi_to_hi): Likewise.
>> (check_effective_target_vect_widen_mult_qi_to_hi): Likewise.
>> (check_effective_target_vect_widen_mult_hi_to_si): Likewise.
>> (check_effective_target_vect_widen_mult_qi_to_hi_pattern):
>> Likewise.
>> (check_effective_target_vect_widen_mult_hi_to_si_pattern):
>> Likewise.
>> (check_effective_target_vect_widen_shift): Likewise.
>> (check_effective_target_vect_extract_even_odd): Likewise.
>> (check_effective_target_vect_interleave): Likewise.
>> (check_effective_target_vect_multiple_sizes): Likewise.
>> (check_effective_target_vect64): Likewise.
>> (check_effective_target_vect_max_reduc): Likewise.
>>
>> Testing: Testsuite shows no regression when targeting ARMv7-A with
>> -mfpu=neon-fpv4 and -mfloat-abi=hard or when targeting Cortex-M3 with
>> default FPU and float ABI (soft). Testing was done with both
>> compare_tests
>> and the updated dg-cmp-results proposed in
>> https://gcc.gnu.org/ml/gcc-patches/2017-06/msg01030.html
>>
>> Is this ok for trunk?
>>
>
> I applied your patch on top of r249233, and noticed quite a few
> changes:
>
>
> http://people.linaro.org/~christophe.lyon/cross-validation/gcc-test-patches/249233-consistent_neon_check.patch/report-build-info.html
>
>
> Note that "Big-Regression" cases are caused by the fact that there a
> are PASS->XPASS and XFAILs disappear with your patch, and many
> (3000-4000) PASS disappear.
> In that intended?



 It certainly is not. I'd like to investigate this but the link to
 results
 for
 rev 249233 is broken. Could you provide me with the results you have for
 that so
 that I can compare manually?
>>>
>>>
>>>
>>> Actually yes it is, at least for the configurations with default (which
>>> still uses -mfpu=vfp in r249233) or VFP (whatever version) FPU. I've
>>> checked
>>> all the ->NA and ->UNSUPPORTED for the arm-none-linux-gnueabi
>>> configuration
>>> and none of them has a dg directive to select the neon unit (such as
>>> dg-additional-options >> line>).
>>> I've also looked at arm-none-linux-gnueabihf configuration with neon FPU
>>> and
>>> there is no regression there.
>>>
>>> I therefore think this is all normal and expected. Note that under
>>> current
>>> trunk this should be different because neon-fp16 would be selected
>>> instead
>>> of vfp for default FPU with Cortex-A9.
>>>
>>
>> OK, thanks for checking. So the version you sent on June 15th is OK?
>
>
> Yes.
>
>> I can start a validation against current trunk, after Richard's series,
>> it probably makes sense, doesn't i

Re: [PATCH, GCC/testsuite/ARM] Consistently check for neon in vect effective targets

2017-06-19 Thread Thomas Preudhomme



On 19/06/17 15:31, Christophe Lyon wrote:

On 19 June 2017 at 16:11, Thomas Preudhomme
 wrote:



On 19/06/17 10:16, Thomas Preudhomme wrote:




On 19/06/17 08:41, Christophe Lyon wrote:


Hi Thomas,


On 15 June 2017 at 18:18, Thomas Preudhomme
 wrote:


Hi,

Conditions checked for ARM targets in vector-related effective targets
are inconsistent:

* sometimes arm*-*-* is checked
* sometimes Neon is checked
* sometimes arm_neon_ok and sometimes arm_neon is used for neon check
* sometimes check_effective_target_* is used, sometimes
is-effective-target

This patch consolidate all of these check into using is-effective-target
arm_neon and when little endian was checked, the check is kept.

ChangeLog entry is as follows:

*** gcc/testsuite/ChangeLog ***

2017-06-06  Thomas Preud'homme  

* lib/target-supports.exp (check_effective_target_vect_int):
Replace
current ARM check by ARM NEON's availability check.
(check_effective_target_vect_intfloat_cvt): Likewise.
(check_effective_target_vect_uintfloat_cvt): Likewise.
(check_effective_target_vect_floatint_cvt): Likewise.
(check_effective_target_vect_floatuint_cvt): Likewise.
(check_effective_target_vect_shift): Likewise.
(check_effective_target_whole_vector_shift): Likewise.
(check_effective_target_vect_bswap): Likewise.
(check_effective_target_vect_shift_char): Likewise.
(check_effective_target_vect_long): Likewise.
(check_effective_target_vect_float): Likewise.
(check_effective_target_vect_perm): Likewise.
(check_effective_target_vect_perm_byte): Likewise.
(check_effective_target_vect_perm_short): Likewise.
(check_effective_target_vect_widen_sum_hi_to_si_pattern):
Likewise.
(check_effective_target_vect_widen_sum_qi_to_hi): Likewise.
(check_effective_target_vect_widen_mult_qi_to_hi): Likewise.
(check_effective_target_vect_widen_mult_hi_to_si): Likewise.
(check_effective_target_vect_widen_mult_qi_to_hi_pattern):
Likewise.
(check_effective_target_vect_widen_mult_hi_to_si_pattern):
Likewise.
(check_effective_target_vect_widen_shift): Likewise.
(check_effective_target_vect_extract_even_odd): Likewise.
(check_effective_target_vect_interleave): Likewise.
(check_effective_target_vect_multiple_sizes): Likewise.
(check_effective_target_vect64): Likewise.
(check_effective_target_vect_max_reduc): Likewise.

Testing: Testsuite shows no regression when targeting ARMv7-A with
-mfpu=neon-fpv4 and -mfloat-abi=hard or when targeting Cortex-M3 with
default FPU and float ABI (soft). Testing was done with both
compare_tests
and the updated dg-cmp-results proposed in
https://gcc.gnu.org/ml/gcc-patches/2017-06/msg01030.html

Is this ok for trunk?



I applied your patch on top of r249233, and noticed quite a few changes:

http://people.linaro.org/~christophe.lyon/cross-validation/gcc-test-patches/249233-consistent_neon_check.patch/report-build-info.html


Note that "Big-Regression" cases are caused by the fact that there a
are PASS->XPASS and XFAILs disappear with your patch, and many
(3000-4000) PASS disappear.
In that intended?



It certainly is not. I'd like to investigate this but the link to results
for
rev 249233 is broken. Could you provide me with the results you have for
that so
that I can compare manually?



Actually yes it is, at least for the configurations with default (which
still uses -mfpu=vfp in r249233) or VFP (whatever version) FPU. I've checked
all the ->NA and ->UNSUPPORTED for the arm-none-linux-gnueabi configuration
and none of them has a dg directive to select the neon unit (such as
dg-additional-options ).
I've also looked at arm-none-linux-gnueabihf configuration with neon FPU and
there is no regression there.

I therefore think this is all normal and expected. Note that under current
trunk this should be different because neon-fp16 would be selected instead
of vfp for default FPU with Cortex-A9.



OK, thanks for checking. So the version you sent on June 15th is OK?


Yes.


I can start a validation against current trunk, after Richard's series,
it probably makes sense, doesn't it?


I think it'll give cleaner results yes. Note that the one with an explicit 
-mfpu=vfp* without neon will still have a lot of changes but at least the one 
with default FPU should be more readable.


Thanks,

Christophe


Best regards,

Thomas


Re: [PATCH, GCC/testsuite/ARM] Consistently check for neon in vect effective targets

2017-06-19 Thread Christophe Lyon
On 19 June 2017 at 16:11, Thomas Preudhomme
 wrote:
>
>
> On 19/06/17 10:16, Thomas Preudhomme wrote:
>>
>>
>>
>> On 19/06/17 08:41, Christophe Lyon wrote:
>>>
>>> Hi Thomas,
>>>
>>>
>>> On 15 June 2017 at 18:18, Thomas Preudhomme
>>>  wrote:

 Hi,

 Conditions checked for ARM targets in vector-related effective targets
 are inconsistent:

 * sometimes arm*-*-* is checked
 * sometimes Neon is checked
 * sometimes arm_neon_ok and sometimes arm_neon is used for neon check
 * sometimes check_effective_target_* is used, sometimes
 is-effective-target

 This patch consolidate all of these check into using is-effective-target
 arm_neon and when little endian was checked, the check is kept.

 ChangeLog entry is as follows:

 *** gcc/testsuite/ChangeLog ***

 2017-06-06  Thomas Preud'homme  

 * lib/target-supports.exp (check_effective_target_vect_int):
 Replace
 current ARM check by ARM NEON's availability check.
 (check_effective_target_vect_intfloat_cvt): Likewise.
 (check_effective_target_vect_uintfloat_cvt): Likewise.
 (check_effective_target_vect_floatint_cvt): Likewise.
 (check_effective_target_vect_floatuint_cvt): Likewise.
 (check_effective_target_vect_shift): Likewise.
 (check_effective_target_whole_vector_shift): Likewise.
 (check_effective_target_vect_bswap): Likewise.
 (check_effective_target_vect_shift_char): Likewise.
 (check_effective_target_vect_long): Likewise.
 (check_effective_target_vect_float): Likewise.
 (check_effective_target_vect_perm): Likewise.
 (check_effective_target_vect_perm_byte): Likewise.
 (check_effective_target_vect_perm_short): Likewise.
 (check_effective_target_vect_widen_sum_hi_to_si_pattern):
 Likewise.
 (check_effective_target_vect_widen_sum_qi_to_hi): Likewise.
 (check_effective_target_vect_widen_mult_qi_to_hi): Likewise.
 (check_effective_target_vect_widen_mult_hi_to_si): Likewise.
 (check_effective_target_vect_widen_mult_qi_to_hi_pattern):
 Likewise.
 (check_effective_target_vect_widen_mult_hi_to_si_pattern):
 Likewise.
 (check_effective_target_vect_widen_shift): Likewise.
 (check_effective_target_vect_extract_even_odd): Likewise.
 (check_effective_target_vect_interleave): Likewise.
 (check_effective_target_vect_multiple_sizes): Likewise.
 (check_effective_target_vect64): Likewise.
 (check_effective_target_vect_max_reduc): Likewise.

 Testing: Testsuite shows no regression when targeting ARMv7-A with
 -mfpu=neon-fpv4 and -mfloat-abi=hard or when targeting Cortex-M3 with
 default FPU and float ABI (soft). Testing was done with both
 compare_tests
 and the updated dg-cmp-results proposed in
 https://gcc.gnu.org/ml/gcc-patches/2017-06/msg01030.html

 Is this ok for trunk?

>>>
>>> I applied your patch on top of r249233, and noticed quite a few changes:
>>>
>>> http://people.linaro.org/~christophe.lyon/cross-validation/gcc-test-patches/249233-consistent_neon_check.patch/report-build-info.html
>>>
>>>
>>> Note that "Big-Regression" cases are caused by the fact that there a
>>> are PASS->XPASS and XFAILs disappear with your patch, and many
>>> (3000-4000) PASS disappear.
>>> In that intended?
>>
>>
>> It certainly is not. I'd like to investigate this but the link to results
>> for
>> rev 249233 is broken. Could you provide me with the results you have for
>> that so
>> that I can compare manually?
>
>
> Actually yes it is, at least for the configurations with default (which
> still uses -mfpu=vfp in r249233) or VFP (whatever version) FPU. I've checked
> all the ->NA and ->UNSUPPORTED for the arm-none-linux-gnueabi configuration
> and none of them has a dg directive to select the neon unit (such as
> dg-additional-options ).
> I've also looked at arm-none-linux-gnueabihf configuration with neon FPU and
> there is no regression there.
>
> I therefore think this is all normal and expected. Note that under current
> trunk this should be different because neon-fp16 would be selected instead
> of vfp for default FPU with Cortex-A9.
>

OK, thanks for checking. So the version you sent on June 15th is OK?
I can start a validation against current trunk, after Richard's series,
it probably makes sense, doesn't it?

Thanks,

Christophe

> Best regards,
>
> Thomas


Re: [PATCH, GCC/testsuite/ARM] Consistently check for neon in vect effective targets

2017-06-19 Thread Thomas Preudhomme



On 19/06/17 10:16, Thomas Preudhomme wrote:



On 19/06/17 08:41, Christophe Lyon wrote:

Hi Thomas,


On 15 June 2017 at 18:18, Thomas Preudhomme
 wrote:

Hi,

Conditions checked for ARM targets in vector-related effective targets
are inconsistent:

* sometimes arm*-*-* is checked
* sometimes Neon is checked
* sometimes arm_neon_ok and sometimes arm_neon is used for neon check
* sometimes check_effective_target_* is used, sometimes is-effective-target

This patch consolidate all of these check into using is-effective-target
arm_neon and when little endian was checked, the check is kept.

ChangeLog entry is as follows:

*** gcc/testsuite/ChangeLog ***

2017-06-06  Thomas Preud'homme  

* lib/target-supports.exp (check_effective_target_vect_int): Replace
current ARM check by ARM NEON's availability check.
(check_effective_target_vect_intfloat_cvt): Likewise.
(check_effective_target_vect_uintfloat_cvt): Likewise.
(check_effective_target_vect_floatint_cvt): Likewise.
(check_effective_target_vect_floatuint_cvt): Likewise.
(check_effective_target_vect_shift): Likewise.
(check_effective_target_whole_vector_shift): Likewise.
(check_effective_target_vect_bswap): Likewise.
(check_effective_target_vect_shift_char): Likewise.
(check_effective_target_vect_long): Likewise.
(check_effective_target_vect_float): Likewise.
(check_effective_target_vect_perm): Likewise.
(check_effective_target_vect_perm_byte): Likewise.
(check_effective_target_vect_perm_short): Likewise.
(check_effective_target_vect_widen_sum_hi_to_si_pattern): Likewise.
(check_effective_target_vect_widen_sum_qi_to_hi): Likewise.
(check_effective_target_vect_widen_mult_qi_to_hi): Likewise.
(check_effective_target_vect_widen_mult_hi_to_si): Likewise.
(check_effective_target_vect_widen_mult_qi_to_hi_pattern): Likewise.
(check_effective_target_vect_widen_mult_hi_to_si_pattern): Likewise.
(check_effective_target_vect_widen_shift): Likewise.
(check_effective_target_vect_extract_even_odd): Likewise.
(check_effective_target_vect_interleave): Likewise.
(check_effective_target_vect_multiple_sizes): Likewise.
(check_effective_target_vect64): Likewise.
(check_effective_target_vect_max_reduc): Likewise.

Testing: Testsuite shows no regression when targeting ARMv7-A with
-mfpu=neon-fpv4 and -mfloat-abi=hard or when targeting Cortex-M3 with
default FPU and float ABI (soft). Testing was done with both compare_tests
and the updated dg-cmp-results proposed in
https://gcc.gnu.org/ml/gcc-patches/2017-06/msg01030.html

Is this ok for trunk?



I applied your patch on top of r249233, and noticed quite a few changes:
http://people.linaro.org/~christophe.lyon/cross-validation/gcc-test-patches/249233-consistent_neon_check.patch/report-build-info.html


Note that "Big-Regression" cases are caused by the fact that there a
are PASS->XPASS and XFAILs disappear with your patch, and many
(3000-4000) PASS disappear.
In that intended?


It certainly is not. I'd like to investigate this but the link to results for
rev 249233 is broken. Could you provide me with the results you have for that so
that I can compare manually?


Actually yes it is, at least for the configurations with default (which still 
uses -mfpu=vfp in r249233) or VFP (whatever version) FPU. I've checked all the 
->NA and ->UNSUPPORTED for the arm-none-linux-gnueabi configuration and none of 
them has a dg directive to select the neon unit (such as dg-additional-options 
). I've also looked at 
arm-none-linux-gnueabihf configuration with neon FPU and there is no regression 
there.


I therefore think this is all normal and expected. Note that under current trunk 
this should be different because neon-fp16 would be selected instead of vfp for 
default FPU with Cortex-A9.


Best regards,

Thomas


Re: [PATCH, GCC/testsuite/ARM] Consistently check for neon in vect effective targets

2017-06-19 Thread Christophe Lyon
On 19 June 2017 at 11:16, Thomas Preudhomme
 wrote:
>
>
> On 19/06/17 08:41, Christophe Lyon wrote:
>>
>> Hi Thomas,
>>
>>
>> On 15 June 2017 at 18:18, Thomas Preudhomme
>>  wrote:
>>>
>>> Hi,
>>>
>>> Conditions checked for ARM targets in vector-related effective targets
>>> are inconsistent:
>>>
>>> * sometimes arm*-*-* is checked
>>> * sometimes Neon is checked
>>> * sometimes arm_neon_ok and sometimes arm_neon is used for neon check
>>> * sometimes check_effective_target_* is used, sometimes
>>> is-effective-target
>>>
>>> This patch consolidate all of these check into using is-effective-target
>>> arm_neon and when little endian was checked, the check is kept.
>>>
>>> ChangeLog entry is as follows:
>>>
>>> *** gcc/testsuite/ChangeLog ***
>>>
>>> 2017-06-06  Thomas Preud'homme  
>>>
>>> * lib/target-supports.exp (check_effective_target_vect_int):
>>> Replace
>>> current ARM check by ARM NEON's availability check.
>>> (check_effective_target_vect_intfloat_cvt): Likewise.
>>> (check_effective_target_vect_uintfloat_cvt): Likewise.
>>> (check_effective_target_vect_floatint_cvt): Likewise.
>>> (check_effective_target_vect_floatuint_cvt): Likewise.
>>> (check_effective_target_vect_shift): Likewise.
>>> (check_effective_target_whole_vector_shift): Likewise.
>>> (check_effective_target_vect_bswap): Likewise.
>>> (check_effective_target_vect_shift_char): Likewise.
>>> (check_effective_target_vect_long): Likewise.
>>> (check_effective_target_vect_float): Likewise.
>>> (check_effective_target_vect_perm): Likewise.
>>> (check_effective_target_vect_perm_byte): Likewise.
>>> (check_effective_target_vect_perm_short): Likewise.
>>> (check_effective_target_vect_widen_sum_hi_to_si_pattern):
>>> Likewise.
>>> (check_effective_target_vect_widen_sum_qi_to_hi): Likewise.
>>> (check_effective_target_vect_widen_mult_qi_to_hi): Likewise.
>>> (check_effective_target_vect_widen_mult_hi_to_si): Likewise.
>>> (check_effective_target_vect_widen_mult_qi_to_hi_pattern):
>>> Likewise.
>>> (check_effective_target_vect_widen_mult_hi_to_si_pattern):
>>> Likewise.
>>> (check_effective_target_vect_widen_shift): Likewise.
>>> (check_effective_target_vect_extract_even_odd): Likewise.
>>> (check_effective_target_vect_interleave): Likewise.
>>> (check_effective_target_vect_multiple_sizes): Likewise.
>>> (check_effective_target_vect64): Likewise.
>>> (check_effective_target_vect_max_reduc): Likewise.
>>>
>>> Testing: Testsuite shows no regression when targeting ARMv7-A with
>>> -mfpu=neon-fpv4 and -mfloat-abi=hard or when targeting Cortex-M3 with
>>> default FPU and float ABI (soft). Testing was done with both
>>> compare_tests
>>> and the updated dg-cmp-results proposed in
>>> https://gcc.gnu.org/ml/gcc-patches/2017-06/msg01030.html
>>>
>>> Is this ok for trunk?
>>>
>>
>> I applied your patch on top of r249233, and noticed quite a few changes:
>>
>> http://people.linaro.org/~christophe.lyon/cross-validation/gcc-test-patches/249233-consistent_neon_check.patch/report-build-info.html
>>
>> Note that "Big-Regression" cases are caused by the fact that there a
>> are PASS->XPASS and XFAILs disappear with your patch, and many
>> (3000-4000) PASS disappear.
>> In that intended?
>
>
> It certainly is not. I'd like to investigate this but the link to results
> for rev 249233 is broken. Could you provide me with the results you have for
> that so that I can compare manually?
>

The results for 249233 are here:
http://people.linaro.org/~christophe.lyon/cross-validation/gcc/trunk/249233/
(reminder, I'm using dejagnu-1.6+, thus pre-pending multilib flags rather than
appending)

Thanks,

Christophe

> Best regards,
>
> Thomas


Re: [PATCH, GCC/testsuite/ARM] Consistently check for neon in vect effective targets

2017-06-19 Thread Thomas Preudhomme



On 19/06/17 08:41, Christophe Lyon wrote:

Hi Thomas,


On 15 June 2017 at 18:18, Thomas Preudhomme
 wrote:

Hi,

Conditions checked for ARM targets in vector-related effective targets
are inconsistent:

* sometimes arm*-*-* is checked
* sometimes Neon is checked
* sometimes arm_neon_ok and sometimes arm_neon is used for neon check
* sometimes check_effective_target_* is used, sometimes is-effective-target

This patch consolidate all of these check into using is-effective-target
arm_neon and when little endian was checked, the check is kept.

ChangeLog entry is as follows:

*** gcc/testsuite/ChangeLog ***

2017-06-06  Thomas Preud'homme  

* lib/target-supports.exp (check_effective_target_vect_int): Replace
current ARM check by ARM NEON's availability check.
(check_effective_target_vect_intfloat_cvt): Likewise.
(check_effective_target_vect_uintfloat_cvt): Likewise.
(check_effective_target_vect_floatint_cvt): Likewise.
(check_effective_target_vect_floatuint_cvt): Likewise.
(check_effective_target_vect_shift): Likewise.
(check_effective_target_whole_vector_shift): Likewise.
(check_effective_target_vect_bswap): Likewise.
(check_effective_target_vect_shift_char): Likewise.
(check_effective_target_vect_long): Likewise.
(check_effective_target_vect_float): Likewise.
(check_effective_target_vect_perm): Likewise.
(check_effective_target_vect_perm_byte): Likewise.
(check_effective_target_vect_perm_short): Likewise.
(check_effective_target_vect_widen_sum_hi_to_si_pattern): Likewise.
(check_effective_target_vect_widen_sum_qi_to_hi): Likewise.
(check_effective_target_vect_widen_mult_qi_to_hi): Likewise.
(check_effective_target_vect_widen_mult_hi_to_si): Likewise.
(check_effective_target_vect_widen_mult_qi_to_hi_pattern): Likewise.
(check_effective_target_vect_widen_mult_hi_to_si_pattern): Likewise.
(check_effective_target_vect_widen_shift): Likewise.
(check_effective_target_vect_extract_even_odd): Likewise.
(check_effective_target_vect_interleave): Likewise.
(check_effective_target_vect_multiple_sizes): Likewise.
(check_effective_target_vect64): Likewise.
(check_effective_target_vect_max_reduc): Likewise.

Testing: Testsuite shows no regression when targeting ARMv7-A with
-mfpu=neon-fpv4 and -mfloat-abi=hard or when targeting Cortex-M3 with
default FPU and float ABI (soft). Testing was done with both compare_tests
and the updated dg-cmp-results proposed in
https://gcc.gnu.org/ml/gcc-patches/2017-06/msg01030.html

Is this ok for trunk?



I applied your patch on top of r249233, and noticed quite a few changes:
http://people.linaro.org/~christophe.lyon/cross-validation/gcc-test-patches/249233-consistent_neon_check.patch/report-build-info.html

Note that "Big-Regression" cases are caused by the fact that there a
are PASS->XPASS and XFAILs disappear with your patch, and many
(3000-4000) PASS disappear.
In that intended?


It certainly is not. I'd like to investigate this but the link to results for 
rev 249233 is broken. Could you provide me with the results you have for that so 
that I can compare manually?


Best regards,

Thomas


Re: [PATCH, GCC/testsuite/ARM] Consistently check for neon in vect effective targets

2017-06-19 Thread Christophe Lyon
Hi Thomas,


On 15 June 2017 at 18:18, Thomas Preudhomme
 wrote:
> Hi,
>
> Conditions checked for ARM targets in vector-related effective targets
> are inconsistent:
>
> * sometimes arm*-*-* is checked
> * sometimes Neon is checked
> * sometimes arm_neon_ok and sometimes arm_neon is used for neon check
> * sometimes check_effective_target_* is used, sometimes is-effective-target
>
> This patch consolidate all of these check into using is-effective-target
> arm_neon and when little endian was checked, the check is kept.
>
> ChangeLog entry is as follows:
>
> *** gcc/testsuite/ChangeLog ***
>
> 2017-06-06  Thomas Preud'homme  
>
> * lib/target-supports.exp (check_effective_target_vect_int): Replace
> current ARM check by ARM NEON's availability check.
> (check_effective_target_vect_intfloat_cvt): Likewise.
> (check_effective_target_vect_uintfloat_cvt): Likewise.
> (check_effective_target_vect_floatint_cvt): Likewise.
> (check_effective_target_vect_floatuint_cvt): Likewise.
> (check_effective_target_vect_shift): Likewise.
> (check_effective_target_whole_vector_shift): Likewise.
> (check_effective_target_vect_bswap): Likewise.
> (check_effective_target_vect_shift_char): Likewise.
> (check_effective_target_vect_long): Likewise.
> (check_effective_target_vect_float): Likewise.
> (check_effective_target_vect_perm): Likewise.
> (check_effective_target_vect_perm_byte): Likewise.
> (check_effective_target_vect_perm_short): Likewise.
> (check_effective_target_vect_widen_sum_hi_to_si_pattern): Likewise.
> (check_effective_target_vect_widen_sum_qi_to_hi): Likewise.
> (check_effective_target_vect_widen_mult_qi_to_hi): Likewise.
> (check_effective_target_vect_widen_mult_hi_to_si): Likewise.
> (check_effective_target_vect_widen_mult_qi_to_hi_pattern): Likewise.
> (check_effective_target_vect_widen_mult_hi_to_si_pattern): Likewise.
> (check_effective_target_vect_widen_shift): Likewise.
> (check_effective_target_vect_extract_even_odd): Likewise.
> (check_effective_target_vect_interleave): Likewise.
> (check_effective_target_vect_multiple_sizes): Likewise.
> (check_effective_target_vect64): Likewise.
> (check_effective_target_vect_max_reduc): Likewise.
>
> Testing: Testsuite shows no regression when targeting ARMv7-A with
> -mfpu=neon-fpv4 and -mfloat-abi=hard or when targeting Cortex-M3 with
> default FPU and float ABI (soft). Testing was done with both compare_tests
> and the updated dg-cmp-results proposed in
> https://gcc.gnu.org/ml/gcc-patches/2017-06/msg01030.html
>
> Is this ok for trunk?
>

I applied your patch on top of r249233, and noticed quite a few changes:
http://people.linaro.org/~christophe.lyon/cross-validation/gcc-test-patches/249233-consistent_neon_check.patch/report-build-info.html

Note that "Big-Regression" cases are caused by the fact that there a
are PASS->XPASS and XFAILs disappear with your patch, and many
(3000-4000) PASS disappear.
In that intended?

Thanks,

Christophe

> Best regards,
>
> Thomas
>
> On 13/06/17 20:22, Christophe Lyon wrote:
>>
>> Hi Thomas,
>>
>> On 13 June 2017 at 11:08, Thomas Preudhomme
>>  wrote:
>>>
>>> Hi,
>>>
>>> Conditions checked for ARM targets in vector-related effective targets
>>> are inconsistent:
>>>
>>> * sometimes arm*-*-* is checked
>>> * sometimes Neon is checked
>>> * sometimes arm_neon_ok and sometimes arm_neon is used for neon check
>>> * sometimes check_effective_target_* is used, sometimes
>>> is-effective-target
>>>
>>> This patch consolidate all of these check into using is-effective-target
>>> arm_neon and when little endian was checked, the check is kept.
>>>
>>> ChangeLog entry is as follows:
>>>
>>> *** gcc/testsuite/ChangeLog ***
>>>
>>> 2017-06-06  Thomas Preud'homme  
>>>
>>> * lib/target-supports.exp (check_effective_target_vect_int):
>>> Replace
>>> current ARM check by ARM NEON's availability check.
>>> (check_effective_target_vect_intfloat_cvt): Likewise.
>>> (check_effective_target_vect_uintfloat_cvt): Likewise.
>>> (check_effective_target_vect_floatint_cvt): Likewise.
>>> (check_effective_target_vect_floatuint_cvt): Likewise.
>>> (check_effective_target_vect_shift): Likewise.
>>> (check_effective_target_whole_vector_shift): Likewise.
>>> (check_effective_target_vect_bswap): Likewise.
>>> (check_effective_target_vect_shift_char): Likewise.
>>> (check_effective_target_vect_long): Likewise.
>>> (check_effective_target_vect_float): Likewise.
>>> (check_effective_target_vect_perm): Likewise.
>>> (check_effective_target_vect_perm_byte): Likewise.
>>> (check_effective_target_vect_perm_short): Likewise.
>>> (check_effective_target_vect_widen_sum_hi_to_si_pattern):
>>> Likewise.
>>> (check_effective_targ

Re: [PATCH, GCC/testsuite/ARM] Consistently check for neon in vect effective targets

2017-06-15 Thread Thomas Preudhomme

Hi,

Conditions checked for ARM targets in vector-related effective targets
are inconsistent:

* sometimes arm*-*-* is checked
* sometimes Neon is checked
* sometimes arm_neon_ok and sometimes arm_neon is used for neon check
* sometimes check_effective_target_* is used, sometimes is-effective-target

This patch consolidate all of these check into using is-effective-target
arm_neon and when little endian was checked, the check is kept.

ChangeLog entry is as follows:

*** gcc/testsuite/ChangeLog ***

2017-06-06  Thomas Preud'homme  

* lib/target-supports.exp (check_effective_target_vect_int): Replace
current ARM check by ARM NEON's availability check.
(check_effective_target_vect_intfloat_cvt): Likewise.
(check_effective_target_vect_uintfloat_cvt): Likewise.
(check_effective_target_vect_floatint_cvt): Likewise.
(check_effective_target_vect_floatuint_cvt): Likewise.
(check_effective_target_vect_shift): Likewise.
(check_effective_target_whole_vector_shift): Likewise.
(check_effective_target_vect_bswap): Likewise.
(check_effective_target_vect_shift_char): Likewise.
(check_effective_target_vect_long): Likewise.
(check_effective_target_vect_float): Likewise.
(check_effective_target_vect_perm): Likewise.
(check_effective_target_vect_perm_byte): Likewise.
(check_effective_target_vect_perm_short): Likewise.
(check_effective_target_vect_widen_sum_hi_to_si_pattern): Likewise.
(check_effective_target_vect_widen_sum_qi_to_hi): Likewise.
(check_effective_target_vect_widen_mult_qi_to_hi): Likewise.
(check_effective_target_vect_widen_mult_hi_to_si): Likewise.
(check_effective_target_vect_widen_mult_qi_to_hi_pattern): Likewise.
(check_effective_target_vect_widen_mult_hi_to_si_pattern): Likewise.
(check_effective_target_vect_widen_shift): Likewise.
(check_effective_target_vect_extract_even_odd): Likewise.
(check_effective_target_vect_interleave): Likewise.
(check_effective_target_vect_multiple_sizes): Likewise.
(check_effective_target_vect64): Likewise.
(check_effective_target_vect_max_reduc): Likewise.

Testing: Testsuite shows no regression when targeting ARMv7-A with 
-mfpu=neon-fpv4 and -mfloat-abi=hard or when targeting Cortex-M3 with default 
FPU and float ABI (soft). Testing was done with both compare_tests and the 
updated dg-cmp-results proposed in 
https://gcc.gnu.org/ml/gcc-patches/2017-06/msg01030.html


Is this ok for trunk?

Best regards,

Thomas

On 13/06/17 20:22, Christophe Lyon wrote:

Hi Thomas,

On 13 June 2017 at 11:08, Thomas Preudhomme
 wrote:

Hi,

Conditions checked for ARM targets in vector-related effective targets
are inconsistent:

* sometimes arm*-*-* is checked
* sometimes Neon is checked
* sometimes arm_neon_ok and sometimes arm_neon is used for neon check
* sometimes check_effective_target_* is used, sometimes is-effective-target

This patch consolidate all of these check into using is-effective-target
arm_neon and when little endian was checked, the check is kept.

ChangeLog entry is as follows:

*** gcc/testsuite/ChangeLog ***

2017-06-06  Thomas Preud'homme  

* lib/target-supports.exp (check_effective_target_vect_int): Replace
current ARM check by ARM NEON's availability check.
(check_effective_target_vect_intfloat_cvt): Likewise.
(check_effective_target_vect_uintfloat_cvt): Likewise.
(check_effective_target_vect_floatint_cvt): Likewise.
(check_effective_target_vect_floatuint_cvt): Likewise.
(check_effective_target_vect_shift): Likewise.
(check_effective_target_whole_vector_shift): Likewise.
(check_effective_target_vect_bswap): Likewise.
(check_effective_target_vect_shift_char): Likewise.
(check_effective_target_vect_long): Likewise.
(check_effective_target_vect_float): Likewise.
(check_effective_target_vect_perm): Likewise.
(check_effective_target_vect_perm_byte): Likewise.
(check_effective_target_vect_perm_short): Likewise.
(check_effective_target_vect_widen_sum_hi_to_si_pattern): Likewise.
(check_effective_target_vect_widen_sum_qi_to_hi): Likewise.
(check_effective_target_vect_widen_mult_qi_to_hi): Likewise.
(check_effective_target_vect_widen_mult_hi_to_si): Likewise.
(check_effective_target_vect_widen_mult_qi_to_hi_pattern): Likewise.
(check_effective_target_vect_widen_mult_hi_to_si_pattern): Likewise.
(check_effective_target_vect_widen_shift): Likewise.
(check_effective_target_vect_extract_even_odd): Likewise.
(check_effective_target_vect_interleave): Likewise.
(check_effective_target_vect_multiple_sizes): Likewise.
(check_effective_target_vect64): Likewise.
(check_effective_target_vect_max_reduc): Likewise.

Testing: Testsuite shows no regression when targ

Re: [PATCH, GCC/testsuite/ARM] Consistently check for neon in vect effective targets

2017-06-14 Thread Thomas Preudhomme



On 14/06/17 09:29, Christophe Lyon wrote:

On 14 June 2017 at 10:25, Thomas Preudhomme
 wrote:



On 13/06/17 20:22, Christophe Lyon wrote:


Hi Thomas,

On 13 June 2017 at 11:08, Thomas Preudhomme
 wrote:


Hi,

Conditions checked for ARM targets in vector-related effective targets
are inconsistent:

* sometimes arm*-*-* is checked
* sometimes Neon is checked
* sometimes arm_neon_ok and sometimes arm_neon is used for neon check
* sometimes check_effective_target_* is used, sometimes
is-effective-target

This patch consolidate all of these check into using is-effective-target
arm_neon and when little endian was checked, the check is kept.

ChangeLog entry is as follows:

*** gcc/testsuite/ChangeLog ***

2017-06-06  Thomas Preud'homme  

* lib/target-supports.exp (check_effective_target_vect_int):
Replace
current ARM check by ARM NEON's availability check.
(check_effective_target_vect_intfloat_cvt): Likewise.
(check_effective_target_vect_uintfloat_cvt): Likewise.
(check_effective_target_vect_floatint_cvt): Likewise.
(check_effective_target_vect_floatuint_cvt): Likewise.
(check_effective_target_vect_shift): Likewise.
(check_effective_target_whole_vector_shift): Likewise.
(check_effective_target_vect_bswap): Likewise.
(check_effective_target_vect_shift_char): Likewise.
(check_effective_target_vect_long): Likewise.
(check_effective_target_vect_float): Likewise.
(check_effective_target_vect_perm): Likewise.
(check_effective_target_vect_perm_byte): Likewise.
(check_effective_target_vect_perm_short): Likewise.
(check_effective_target_vect_widen_sum_hi_to_si_pattern):
Likewise.
(check_effective_target_vect_widen_sum_qi_to_hi): Likewise.
(check_effective_target_vect_widen_mult_qi_to_hi): Likewise.
(check_effective_target_vect_widen_mult_hi_to_si): Likewise.
(check_effective_target_vect_widen_mult_qi_to_hi_pattern):
Likewise.
(check_effective_target_vect_widen_mult_hi_to_si_pattern):
Likewise.
(check_effective_target_vect_widen_shift): Likewise.
(check_effective_target_vect_extract_even_odd): Likewise.
(check_effective_target_vect_interleave): Likewise.
(check_effective_target_vect_multiple_sizes): Likewise.
(check_effective_target_vect64): Likewise.
(check_effective_target_vect_max_reduc): Likewise.

Testing: Testsuite shows no regression when targeting ARMv7-A with
-mfpu=neon-fpv4 and -mfloat-abi=hard or when targeting Cortex-M3 with
default FPU and float ABI (soft).



That's strange, my testing detects a syntax error:

  Executed from: gcc.dg/vect/vect.exp
gcc.dg/vect/slp-9.c: error executing dg-final: unbalanced close paren



Indeed, I can see the missing parenthesis. I've checked again with the sum
file and even with -v -v -v -v dg-cmp-results does not show any regression.
compare_tests does though but is often more noisy (saying some tests having
disappeared and appeared).
This sounds like dg-cmp-results needs to be improved here. I'll do that
first then test a fixed version of the patch.



I did patch compare_tests a while ago such that it catches ERROR message from
dejagnu (r240288)


So dg-cmp-results assume there is only one tool tested in the .sum file (it 
throws everything before "^Running" and everything after "^[[:space:]]+===" 
which it assumes is the summary. Gosh, I've used it countless time in that way...


Will provide a patch to make it work also in that setup.

Best regards,

Thomas


Re: [PATCH, GCC/testsuite/ARM] Consistently check for neon in vect effective targets

2017-06-14 Thread Christophe Lyon
On 14 June 2017 at 10:25, Thomas Preudhomme
 wrote:
>
>
> On 13/06/17 20:22, Christophe Lyon wrote:
>>
>> Hi Thomas,
>>
>> On 13 June 2017 at 11:08, Thomas Preudhomme
>>  wrote:
>>>
>>> Hi,
>>>
>>> Conditions checked for ARM targets in vector-related effective targets
>>> are inconsistent:
>>>
>>> * sometimes arm*-*-* is checked
>>> * sometimes Neon is checked
>>> * sometimes arm_neon_ok and sometimes arm_neon is used for neon check
>>> * sometimes check_effective_target_* is used, sometimes
>>> is-effective-target
>>>
>>> This patch consolidate all of these check into using is-effective-target
>>> arm_neon and when little endian was checked, the check is kept.
>>>
>>> ChangeLog entry is as follows:
>>>
>>> *** gcc/testsuite/ChangeLog ***
>>>
>>> 2017-06-06  Thomas Preud'homme  
>>>
>>> * lib/target-supports.exp (check_effective_target_vect_int):
>>> Replace
>>> current ARM check by ARM NEON's availability check.
>>> (check_effective_target_vect_intfloat_cvt): Likewise.
>>> (check_effective_target_vect_uintfloat_cvt): Likewise.
>>> (check_effective_target_vect_floatint_cvt): Likewise.
>>> (check_effective_target_vect_floatuint_cvt): Likewise.
>>> (check_effective_target_vect_shift): Likewise.
>>> (check_effective_target_whole_vector_shift): Likewise.
>>> (check_effective_target_vect_bswap): Likewise.
>>> (check_effective_target_vect_shift_char): Likewise.
>>> (check_effective_target_vect_long): Likewise.
>>> (check_effective_target_vect_float): Likewise.
>>> (check_effective_target_vect_perm): Likewise.
>>> (check_effective_target_vect_perm_byte): Likewise.
>>> (check_effective_target_vect_perm_short): Likewise.
>>> (check_effective_target_vect_widen_sum_hi_to_si_pattern):
>>> Likewise.
>>> (check_effective_target_vect_widen_sum_qi_to_hi): Likewise.
>>> (check_effective_target_vect_widen_mult_qi_to_hi): Likewise.
>>> (check_effective_target_vect_widen_mult_hi_to_si): Likewise.
>>> (check_effective_target_vect_widen_mult_qi_to_hi_pattern):
>>> Likewise.
>>> (check_effective_target_vect_widen_mult_hi_to_si_pattern):
>>> Likewise.
>>> (check_effective_target_vect_widen_shift): Likewise.
>>> (check_effective_target_vect_extract_even_odd): Likewise.
>>> (check_effective_target_vect_interleave): Likewise.
>>> (check_effective_target_vect_multiple_sizes): Likewise.
>>> (check_effective_target_vect64): Likewise.
>>> (check_effective_target_vect_max_reduc): Likewise.
>>>
>>> Testing: Testsuite shows no regression when targeting ARMv7-A with
>>> -mfpu=neon-fpv4 and -mfloat-abi=hard or when targeting Cortex-M3 with
>>> default FPU and float ABI (soft).
>>>
>>
>> That's strange, my testing detects a syntax error:
>>
>>   Executed from: gcc.dg/vect/vect.exp
>> gcc.dg/vect/slp-9.c: error executing dg-final: unbalanced close paren
>
>
> Indeed, I can see the missing parenthesis. I've checked again with the sum
> file and even with -v -v -v -v dg-cmp-results does not show any regression.
> compare_tests does though but is often more noisy (saying some tests having
> disappeared and appeared).
> This sounds like dg-cmp-results needs to be improved here. I'll do that
> first then test a fixed version of the patch.
>

I did patch compare_tests a while ago such that it catches ERROR message from
dejagnu (r240288)

> Many thanks for the testing!
>
>>
>> See
>> http://people.linaro.org/~christophe.lyon/cross-validation/gcc-test-patches/249142-consistent_neon_check/report-build-info.html
>> for a full picture.
>>
>> Note that the cells with "BETTER" seem to be mostly several PASSes
>> becoming unsupported.
>>
>> Thanks,
>
>
> Best regards,
>
> Thomas


Re: [PATCH, GCC/testsuite/ARM] Consistently check for neon in vect effective targets

2017-06-14 Thread Thomas Preudhomme



On 13/06/17 20:22, Christophe Lyon wrote:

Hi Thomas,

On 13 June 2017 at 11:08, Thomas Preudhomme
 wrote:

Hi,

Conditions checked for ARM targets in vector-related effective targets
are inconsistent:

* sometimes arm*-*-* is checked
* sometimes Neon is checked
* sometimes arm_neon_ok and sometimes arm_neon is used for neon check
* sometimes check_effective_target_* is used, sometimes is-effective-target

This patch consolidate all of these check into using is-effective-target
arm_neon and when little endian was checked, the check is kept.

ChangeLog entry is as follows:

*** gcc/testsuite/ChangeLog ***

2017-06-06  Thomas Preud'homme  

* lib/target-supports.exp (check_effective_target_vect_int): Replace
current ARM check by ARM NEON's availability check.
(check_effective_target_vect_intfloat_cvt): Likewise.
(check_effective_target_vect_uintfloat_cvt): Likewise.
(check_effective_target_vect_floatint_cvt): Likewise.
(check_effective_target_vect_floatuint_cvt): Likewise.
(check_effective_target_vect_shift): Likewise.
(check_effective_target_whole_vector_shift): Likewise.
(check_effective_target_vect_bswap): Likewise.
(check_effective_target_vect_shift_char): Likewise.
(check_effective_target_vect_long): Likewise.
(check_effective_target_vect_float): Likewise.
(check_effective_target_vect_perm): Likewise.
(check_effective_target_vect_perm_byte): Likewise.
(check_effective_target_vect_perm_short): Likewise.
(check_effective_target_vect_widen_sum_hi_to_si_pattern): Likewise.
(check_effective_target_vect_widen_sum_qi_to_hi): Likewise.
(check_effective_target_vect_widen_mult_qi_to_hi): Likewise.
(check_effective_target_vect_widen_mult_hi_to_si): Likewise.
(check_effective_target_vect_widen_mult_qi_to_hi_pattern): Likewise.
(check_effective_target_vect_widen_mult_hi_to_si_pattern): Likewise.
(check_effective_target_vect_widen_shift): Likewise.
(check_effective_target_vect_extract_even_odd): Likewise.
(check_effective_target_vect_interleave): Likewise.
(check_effective_target_vect_multiple_sizes): Likewise.
(check_effective_target_vect64): Likewise.
(check_effective_target_vect_max_reduc): Likewise.

Testing: Testsuite shows no regression when targeting ARMv7-A with
-mfpu=neon-fpv4 and -mfloat-abi=hard or when targeting Cortex-M3 with
default FPU and float ABI (soft).



That's strange, my testing detects a syntax error:

  Executed from: gcc.dg/vect/vect.exp
gcc.dg/vect/slp-9.c: error executing dg-final: unbalanced close paren


Indeed, I can see the missing parenthesis. I've checked again with the sum file 
and even with -v -v -v -v dg-cmp-results does not show any regression. 
compare_tests does though but is often more noisy (saying some tests having 
disappeared and appeared).
This sounds like dg-cmp-results needs to be improved here. I'll do that first 
then test a fixed version of the patch.


Many thanks for the testing!



See 
http://people.linaro.org/~christophe.lyon/cross-validation/gcc-test-patches/249142-consistent_neon_check/report-build-info.html
for a full picture.

Note that the cells with "BETTER" seem to be mostly several PASSes
becoming unsupported.

Thanks,


Best regards,

Thomas


Re: [PATCH, GCC/testsuite/ARM] Consistently check for neon in vect effective targets

2017-06-13 Thread Christophe Lyon
Hi Thomas,

On 13 June 2017 at 11:08, Thomas Preudhomme
 wrote:
> Hi,
>
> Conditions checked for ARM targets in vector-related effective targets
> are inconsistent:
>
> * sometimes arm*-*-* is checked
> * sometimes Neon is checked
> * sometimes arm_neon_ok and sometimes arm_neon is used for neon check
> * sometimes check_effective_target_* is used, sometimes is-effective-target
>
> This patch consolidate all of these check into using is-effective-target
> arm_neon and when little endian was checked, the check is kept.
>
> ChangeLog entry is as follows:
>
> *** gcc/testsuite/ChangeLog ***
>
> 2017-06-06  Thomas Preud'homme  
>
> * lib/target-supports.exp (check_effective_target_vect_int): Replace
> current ARM check by ARM NEON's availability check.
> (check_effective_target_vect_intfloat_cvt): Likewise.
> (check_effective_target_vect_uintfloat_cvt): Likewise.
> (check_effective_target_vect_floatint_cvt): Likewise.
> (check_effective_target_vect_floatuint_cvt): Likewise.
> (check_effective_target_vect_shift): Likewise.
> (check_effective_target_whole_vector_shift): Likewise.
> (check_effective_target_vect_bswap): Likewise.
> (check_effective_target_vect_shift_char): Likewise.
> (check_effective_target_vect_long): Likewise.
> (check_effective_target_vect_float): Likewise.
> (check_effective_target_vect_perm): Likewise.
> (check_effective_target_vect_perm_byte): Likewise.
> (check_effective_target_vect_perm_short): Likewise.
> (check_effective_target_vect_widen_sum_hi_to_si_pattern): Likewise.
> (check_effective_target_vect_widen_sum_qi_to_hi): Likewise.
> (check_effective_target_vect_widen_mult_qi_to_hi): Likewise.
> (check_effective_target_vect_widen_mult_hi_to_si): Likewise.
> (check_effective_target_vect_widen_mult_qi_to_hi_pattern): Likewise.
> (check_effective_target_vect_widen_mult_hi_to_si_pattern): Likewise.
> (check_effective_target_vect_widen_shift): Likewise.
> (check_effective_target_vect_extract_even_odd): Likewise.
> (check_effective_target_vect_interleave): Likewise.
> (check_effective_target_vect_multiple_sizes): Likewise.
> (check_effective_target_vect64): Likewise.
> (check_effective_target_vect_max_reduc): Likewise.
>
> Testing: Testsuite shows no regression when targeting ARMv7-A with
> -mfpu=neon-fpv4 and -mfloat-abi=hard or when targeting Cortex-M3 with
> default FPU and float ABI (soft).
>

That's strange, my testing detects a syntax error:

  Executed from: gcc.dg/vect/vect.exp
gcc.dg/vect/slp-9.c: error executing dg-final: unbalanced close paren

See 
http://people.linaro.org/~christophe.lyon/cross-validation/gcc-test-patches/249142-consistent_neon_check/report-build-info.html
for a full picture.

Note that the cells with "BETTER" seem to be mostly several PASSes
becoming unsupported.

Thanks,

Christophe

> Is this ok for trunk?
>
> Best regards,
>
> Thomas


[PATCH, GCC/testsuite/ARM] Consistently check for neon in vect effective targets

2017-06-13 Thread Thomas Preudhomme

Hi,

Conditions checked for ARM targets in vector-related effective targets
are inconsistent:

* sometimes arm*-*-* is checked
* sometimes Neon is checked
* sometimes arm_neon_ok and sometimes arm_neon is used for neon check
* sometimes check_effective_target_* is used, sometimes is-effective-target

This patch consolidate all of these check into using is-effective-target
arm_neon and when little endian was checked, the check is kept.

ChangeLog entry is as follows:

*** gcc/testsuite/ChangeLog ***

2017-06-06  Thomas Preud'homme  

* lib/target-supports.exp (check_effective_target_vect_int): Replace
current ARM check by ARM NEON's availability check.
(check_effective_target_vect_intfloat_cvt): Likewise.
(check_effective_target_vect_uintfloat_cvt): Likewise.
(check_effective_target_vect_floatint_cvt): Likewise.
(check_effective_target_vect_floatuint_cvt): Likewise.
(check_effective_target_vect_shift): Likewise.
(check_effective_target_whole_vector_shift): Likewise.
(check_effective_target_vect_bswap): Likewise.
(check_effective_target_vect_shift_char): Likewise.
(check_effective_target_vect_long): Likewise.
(check_effective_target_vect_float): Likewise.
(check_effective_target_vect_perm): Likewise.
(check_effective_target_vect_perm_byte): Likewise.
(check_effective_target_vect_perm_short): Likewise.
(check_effective_target_vect_widen_sum_hi_to_si_pattern): Likewise.
(check_effective_target_vect_widen_sum_qi_to_hi): Likewise.
(check_effective_target_vect_widen_mult_qi_to_hi): Likewise.
(check_effective_target_vect_widen_mult_hi_to_si): Likewise.
(check_effective_target_vect_widen_mult_qi_to_hi_pattern): Likewise.
(check_effective_target_vect_widen_mult_hi_to_si_pattern): Likewise.
(check_effective_target_vect_widen_shift): Likewise.
(check_effective_target_vect_extract_even_odd): Likewise.
(check_effective_target_vect_interleave): Likewise.
(check_effective_target_vect_multiple_sizes): Likewise.
(check_effective_target_vect64): Likewise.
(check_effective_target_vect_max_reduc): Likewise.

Testing: Testsuite shows no regression when targeting ARMv7-A with 
-mfpu=neon-fpv4 and -mfloat-abi=hard or when targeting Cortex-M3 with default 
FPU and float ABI (soft).


Is this ok for trunk?

Best regards,

Thomas
diff --git a/gcc/testsuite/lib/target-supports.exp b/gcc/testsuite/lib/target-supports.exp
index ded6383cc1f9a1489cd83e1dace0c2fc48e252c3..d7367999fc9df8cf7c654fbb03a059b309e062d6 100644
--- a/gcc/testsuite/lib/target-supports.exp
+++ b/gcc/testsuite/lib/target-supports.exp
@@ -2916,7 +2916,7 @@ proc check_effective_target_vect_int { } {
 	 || [istarget alpha*-*-*]
 	 || [istarget ia64-*-*] 
 	 || [istarget aarch64*-*-*]
-	 || [check_effective_target_arm32]
+	 || [is-effective-target arm_neon]
 	 || ([istarget mips*-*-*]
 		 && ([et-is-effective-target mips_loongson]
 		 || [et-is-effective-target mips_msa])) } {
@@ -2944,8 +2944,7 @@ proc check_effective_target_vect_intfloat_cvt { } {
 if { [istarget i?86-*-*] || [istarget x86_64-*-*]
 	 || ([istarget powerpc*-*-*]
 		 && ![istarget powerpc-*-linux*paired*])
-	 || ([istarget arm*-*-*]
-		 && [check_effective_target_arm_neon_ok])
+	 || [is-effective-target arm_neon]
 	 || ([istarget mips*-*-*]
 		 && [et-is-effective-target mips_msa]) } {
 	set et_vect_intfloat_cvt_saved($et_index) 1
@@ -2987,8 +2986,7 @@ proc check_effective_target_vect_uintfloat_cvt { } {
 	 || ([istarget powerpc*-*-*]
 		 && ![istarget powerpc-*-linux*paired*])
 	 || [istarget aarch64*-*-*]
-	 || ([istarget arm*-*-*]
-		 && [check_effective_target_arm_neon_ok])
+	 || [is-effective-target arm_neon]
 	 || ([istarget mips*-*-*]
 		 && [et-is-effective-target mips_msa]) } {
 	set et_vect_uintfloat_cvt_saved($et_index) 1
@@ -3016,8 +3014,7 @@ proc check_effective_target_vect_floatint_cvt { } {
 if { [istarget i?86-*-*] || [istarget x86_64-*-*]
 	 || ([istarget powerpc*-*-*]
 		 && ![istarget powerpc-*-linux*paired*])
-	 || ([istarget arm*-*-*]
-		 && [check_effective_target_arm_neon_ok])
+	 || [is-effective-target arm_neon]
 	 || ([istarget mips*-*-*]
 		 && [et-is-effective-target mips_msa]) } {
 	set et_vect_floatint_cvt_saved($et_index) 1
@@ -3043,8 +3040,7 @@ proc check_effective_target_vect_floatuint_cvt { } {
 	set et_vect_floatuint_cvt_saved($et_index) 0
 if { ([istarget powerpc*-*-*]
 	  && ![istarget powerpc-*-linux*paired*])
-	|| ([istarget arm*-*-*]
-		&& [check_effective_target_arm_neon_ok])
+	|| [is-effective-target arm_neon]
 	|| ([istarget mips*-*-*]
 		&& [et-is-effective-target mips_msa]) } {
 	   set et_vect_floatuint_cvt_saved($et_index) 1
@@ -4903,7 +4899,7 @@ proc check_effective_target_vect_shift { } {
 	 || [istarget ia64-*