Re: [AArch64] Fix SVE testsuite failures for ILP32 (PR 83846)
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)
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 Sandifordgcc/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