Re: [AArch64] Fix SVE testsuite failures for ILP32 (PR 83846)

2018-02-01 Thread James Greenhalgh
On Fri, Jan 26, 2018 at 02:25:02PM +, Richard Sandiford wrote:
> The SVE tests are split into code-quality compile tests and runtime
> tests.  A lot of the former are geared towards LP64.  It would be
> possible (but tedious!) to mark up every line that is expected to work
> only for LP64, but I think it would be a constant source of problems.
> 
> Since the code has not been tuned for ILP32 yet, I think the best
> thing is to select only the runtime tests for that combination.
> They all pass on aarch64-elf and aarch64_be-elf except vec-cond-[34].c,
> which are unsupported due to the lack of fenv support.
> 
> The patch also replaces uses of built-in types with stdint.h types
> where possible.  (This excludes tests that change the endianness,
> since we can't assume that system header files work in that case.)
> 
> Tested on aarch64_be-elf and aarch64-linux-gnu.  OK to install?

This is unfortunate, but I suppose this is the pragmatic fix. I hope we
can turn them back on in GCC 9.

Maybe this should have a bugzilla to track that?

OK.

James

> 2018-01-17  Richard Sandiford  
> 
> gcc/testsuite/
>   PR testsuite/83846
>   * gcc.target/aarch64/sve/aarch64-sve.exp: Only do *_run tests
>   for ILP32.
>   * gcc.target/aarch64/sve/clastb_2_run.c (main): Use TYPE instead
>   of hard-coding the choice.
>   * gcc.target/aarch64/sve/clastb_4_run.c (main): Likewise.
>   * gcc.target/aarch64/sve/clastb_5_run.c (main): Likewise.
>   * gcc.target/aarch64/sve/clastb_3_run.c (main): Likewise.  Generalize
>   memset call.
>   * gcc.target/aarch64/sve/const_pred_1.C: Include stdint.h and use
>   stdint.h types.
>   * gcc.target/aarch64/sve/const_pred_2.C: Likewise.
>   * gcc.target/aarch64/sve/const_pred_3.C: Likewise.
>   * gcc.target/aarch64/sve/const_pred_4.C: Likewise.
>   * gcc.target/aarch64/sve/load_const_offset_2.c: Likewise.
>   * gcc.target/aarch64/sve/logical_1.c: Likewise.
>   * gcc.target/aarch64/sve/mask_struct_load_1.c: Likewise.
>   * gcc.target/aarch64/sve/mask_struct_load_2.c: Likewise.
>   * gcc.target/aarch64/sve/mask_struct_load_3.c: Likewise.
>   * gcc.target/aarch64/sve/mask_struct_load_4.c: Likewise.
>   * gcc.target/aarch64/sve/mask_struct_load_5.c: Likewise.
>   * gcc.target/aarch64/sve/mask_struct_load_6.c: Likewise.
>   * gcc.target/aarch64/sve/mask_struct_load_7.c: Likewise.
>   * gcc.target/aarch64/sve/mask_struct_load_8.c: Likewise.
>   * gcc.target/aarch64/sve/mask_struct_store_1.c: Likewise.
>   * gcc.target/aarch64/sve/mask_struct_store_2.c: Likewise.
>   * gcc.target/aarch64/sve/mask_struct_store_3.c: Likewise.
>   * gcc.target/aarch64/sve/mask_struct_store_4.c: Likewise.
>   * gcc.target/aarch64/sve/struct_vect_1.c: Likewise.
>   * gcc.target/aarch64/sve/struct_vect_2.c: Likewise.
>   * gcc.target/aarch64/sve/struct_vect_2_run.c: Likewise.
>   * gcc.target/aarch64/sve/struct_vect_3.c: Likewise.
>   * gcc.target/aarch64/sve/struct_vect_3_run.c: Likewise.
>   * gcc.target/aarch64/sve/struct_vect_4.c: Likewise.
>   * gcc.target/aarch64/sve/struct_vect_4_run.c: Likewise.
>   * gcc.target/aarch64/sve/struct_vect_7.c: Likewise.
>   * gcc.target/aarch64/sve/struct_vect_8.c: Likewise.
>   * gcc.target/aarch64/sve/struct_vect_8_run.c: Likewise.
>   * gcc.target/aarch64/sve/struct_vect_9.c: Likewise.
>   * gcc.target/aarch64/sve/struct_vect_9_run.c: Likewise.
>   * gcc.target/aarch64/sve/struct_vect_10.c: Likewise.
>   * gcc.target/aarch64/sve/struct_vect_10_run.c: Likewise.
>   * gcc.target/aarch64/sve/struct_vect_11.c: Likewise.
>   * gcc.target/aarch64/sve/struct_vect_11_run.c: Likewise.
>   * gcc.target/aarch64/sve/struct_vect_12.c: Likewise.
>   * gcc.target/aarch64/sve/struct_vect_12_run.c: Likewise.
>   * gcc.target/aarch64/sve/struct_vect_13.c: Likewise.
>   * gcc.target/aarch64/sve/struct_vect_13_run.c: Likewise.
>   * gcc.target/aarch64/sve/struct_vect_14.c: Likewise.
>   * gcc.target/aarch64/sve/struct_vect_18.c: Likewise.
>   * gcc.target/aarch64/sve/struct_vect_19.c: Likewise.
>   * gcc.target/aarch64/sve/struct_vect_20.c: Likewise.
>   * gcc.target/aarch64/sve/struct_vect_21.c: Likewise.
>   * gcc.target/aarch64/sve/struct_vect_22.c: Likewise.
>   * gcc.target/aarch64/sve/struct_vect_23.c: Likewise.
>   * gcc.target/aarch64/sve/popcount_1.c (popcount_64): Use
>   __builtin_popcountll rather than __builtin_popcountl.



[AArch64] Fix SVE testsuite failures for ILP32 (PR 83846)

2018-01-26 Thread Richard Sandiford
The SVE tests are split into code-quality compile tests and runtime
tests.  A lot of the former are geared towards LP64.  It would be
possible (but tedious!) to mark up every line that is expected to work
only for LP64, but I think it would be a constant source of problems.

Since the code has not been tuned for ILP32 yet, I think the best
thing is to select only the runtime tests for that combination.
They all pass on aarch64-elf and aarch64_be-elf except vec-cond-[34].c,
which are unsupported due to the lack of fenv support.

The patch also replaces uses of built-in types with stdint.h types
where possible.  (This excludes tests that change the endianness,
since we can't assume that system header files work in that case.)

Tested on aarch64_be-elf and aarch64-linux-gnu.  OK to install?

Richard


2018-01-17  Richard Sandiford  

gcc/testsuite/
PR testsuite/83846
* gcc.target/aarch64/sve/aarch64-sve.exp: Only do *_run tests
for ILP32.
* gcc.target/aarch64/sve/clastb_2_run.c (main): Use TYPE instead
of hard-coding the choice.
* gcc.target/aarch64/sve/clastb_4_run.c (main): Likewise.
* gcc.target/aarch64/sve/clastb_5_run.c (main): Likewise.
* gcc.target/aarch64/sve/clastb_3_run.c (main): Likewise.  Generalize
memset call.
* gcc.target/aarch64/sve/const_pred_1.C: Include stdint.h and use
stdint.h types.
* gcc.target/aarch64/sve/const_pred_2.C: Likewise.
* gcc.target/aarch64/sve/const_pred_3.C: Likewise.
* gcc.target/aarch64/sve/const_pred_4.C: Likewise.
* gcc.target/aarch64/sve/load_const_offset_2.c: Likewise.
* gcc.target/aarch64/sve/logical_1.c: Likewise.
* gcc.target/aarch64/sve/mask_struct_load_1.c: Likewise.
* gcc.target/aarch64/sve/mask_struct_load_2.c: Likewise.
* gcc.target/aarch64/sve/mask_struct_load_3.c: Likewise.
* gcc.target/aarch64/sve/mask_struct_load_4.c: Likewise.
* gcc.target/aarch64/sve/mask_struct_load_5.c: Likewise.
* gcc.target/aarch64/sve/mask_struct_load_6.c: Likewise.
* gcc.target/aarch64/sve/mask_struct_load_7.c: Likewise.
* gcc.target/aarch64/sve/mask_struct_load_8.c: Likewise.
* gcc.target/aarch64/sve/mask_struct_store_1.c: Likewise.
* gcc.target/aarch64/sve/mask_struct_store_2.c: Likewise.
* gcc.target/aarch64/sve/mask_struct_store_3.c: Likewise.
* gcc.target/aarch64/sve/mask_struct_store_4.c: Likewise.
* gcc.target/aarch64/sve/struct_vect_1.c: Likewise.
* gcc.target/aarch64/sve/struct_vect_2.c: Likewise.
* gcc.target/aarch64/sve/struct_vect_2_run.c: Likewise.
* gcc.target/aarch64/sve/struct_vect_3.c: Likewise.
* gcc.target/aarch64/sve/struct_vect_3_run.c: Likewise.
* gcc.target/aarch64/sve/struct_vect_4.c: Likewise.
* gcc.target/aarch64/sve/struct_vect_4_run.c: Likewise.
* gcc.target/aarch64/sve/struct_vect_7.c: Likewise.
* gcc.target/aarch64/sve/struct_vect_8.c: Likewise.
* gcc.target/aarch64/sve/struct_vect_8_run.c: Likewise.
* gcc.target/aarch64/sve/struct_vect_9.c: Likewise.
* gcc.target/aarch64/sve/struct_vect_9_run.c: Likewise.
* gcc.target/aarch64/sve/struct_vect_10.c: Likewise.
* gcc.target/aarch64/sve/struct_vect_10_run.c: Likewise.
* gcc.target/aarch64/sve/struct_vect_11.c: Likewise.
* gcc.target/aarch64/sve/struct_vect_11_run.c: Likewise.
* gcc.target/aarch64/sve/struct_vect_12.c: Likewise.
* gcc.target/aarch64/sve/struct_vect_12_run.c: Likewise.
* gcc.target/aarch64/sve/struct_vect_13.c: Likewise.
* gcc.target/aarch64/sve/struct_vect_13_run.c: Likewise.
* gcc.target/aarch64/sve/struct_vect_14.c: Likewise.
* gcc.target/aarch64/sve/struct_vect_18.c: Likewise.
* gcc.target/aarch64/sve/struct_vect_19.c: Likewise.
* gcc.target/aarch64/sve/struct_vect_20.c: Likewise.
* gcc.target/aarch64/sve/struct_vect_21.c: Likewise.
* gcc.target/aarch64/sve/struct_vect_22.c: Likewise.
* gcc.target/aarch64/sve/struct_vect_23.c: Likewise.
* gcc.target/aarch64/sve/popcount_1.c (popcount_64): Use
__builtin_popcountll rather than __builtin_popcountl.

Index: gcc/testsuite/gcc.target/aarch64/sve/aarch64-sve.exp
===
--- gcc/testsuite/gcc.target/aarch64/sve/aarch64-sve.exp2018-01-13 
17:54:52.925270132 +
+++ gcc/testsuite/gcc.target/aarch64/sve/aarch64-sve.exp2018-01-26 
14:09:27.089932690 +
@@ -44,8 +44,16 @@ if { [check_effective_target_aarch64_sve
 set sve_flags "-march=armv8.2-a+sve"
 }
 
+# Most of the code-quality tests are written for LP64.  Just do the
+# correctness tests for ILP32.
+if { [check_effective_target_ilp32] } {
+set pattern "*_run"
+} else {
+set pattern "*"
+}
+
 # Main loop.
-dg-runtest [lsort