Prathamesh Kulkarni <prathamesh.kulka...@linaro.org> writes:
> On Thu, 30 May 2019 at 21:19, Richard Sandiford
> <richard.sandif...@arm.com> wrote:
>>
>> Prathamesh Kulkarni <prathamesh.kulka...@linaro.org> writes:
>> > On Thu, 30 May 2019 at 15:10, Richard Sandiford
>> > <richard.sandif...@arm.com> wrote:
>> >>
>> >> Prathamesh Kulkarni <prathamesh.kulka...@linaro.org> writes:
>> >> > diff --git a/gcc/testsuite/gcc.target/aarch64/sve/init_1.c 
>> >> > b/gcc/testsuite/gcc.target/aarch64/sve/init_1.c
>> >> > new file mode 100644
>> >> > index 00000000000..cbfeff4a59c
>> >> > --- /dev/null
>> >> > +++ b/gcc/testsuite/gcc.target/aarch64/sve/init_1.c
>> >> > @@ -0,0 +1,27 @@
>> >> > +/* { dg-do compile { target aarch64_asm_sve_ok } } */
>> >> > +/* { dg-options "-O2 -fno-schedule-insns -msve-vector-bits=256 
>> >> > --save-temps" } */
>> >>
>> >> Sorry for not noticing last time, but the combination of 
>> >> aarch64_asm_sve_ok
>> >> and --save-temps only makes sense for assemble tests, not compile tests.
>> >> So these should either be:
>> >>
>> >> /* { dg-do assemble { target aarch64_asm_sve_ok } } */
>> >> /* { dg-options "-O2 -fno-schedule-insns -msve-vector-bits=256 
>> >> --save-temps" } */
>> >>
>> >> or:
>> >>
>> >> /* { dg-do compile } */
>> >> /* { dg-options "-O2 -fno-schedule-insns -msve-vector-bits=256" } */
>> >>
>> >> Might as well as go for the first I guess.  Same for the other
>> >> non-run tests.
>> >>
>> >> OK with that change, thanks.
>> > Thanks for pointing out, updated the patch with dg-do assemble.
>> > Sorry for silly ques - What configure option should be passed to gcc
>> > to generate code with -msve-vector-bits=256 by default ?
>> > I suppose that'd be necessary for correctness testing, to test patch
>> > with run tests that contain initializers and don't explicitly pass
>> > -msve-vector-bits=256 ?
>>
>> There's no configure option, but you can test with things like
>> --target_board unix/-msve-vector-bits=256 or
>> --target_board unix{,/-msve-vector-bits=256} (to test both with
>> and without -msve-vector-bits=256).
> Hi,
> Sorry for late response. I managed to cross-test using qemu and seeing some
> fallout:
>
> 1. Testing pristine trunk with --target_board=arm-qemu/-march=armv8.2-a+sve
> results in following ICE's:
> FAIL: gcc.c-torture/compile/pr82096.c   -O0  (internal compiler error)
> FAIL: gcc.c-torture/compile/pr82096.c   -O1  (internal compiler error)
> FAIL: gcc.c-torture/compile/pr82096.c   -O2  (internal compiler error)
> FAIL: gcc.c-torture/compile/pr82096.c   -O2 -flto
> -fno-use-linker-plugin -flto-partition=none  (internal compiler error)
> FAIL: gcc.c-torture/compile/pr82096.c   -O3 -g  (internal compiler error)
> FAIL: gcc.c-torture/compile/pr82096.c   -Os  (internal compiler error)
> FAIL: gcc.dg/di-longlong64-sync-1.c (internal compiler error)
> FAIL: gcc.dg/di-sync-multithread.c (internal compiler error)
> FAIL: gcc.target/aarch64/pr87839.c (internal compiler error)
>
> 2. Passing -msve-vector-bits=256 results in following additional
> ICE's with trunk:
> FAIL: gcc.dg/pr88598-2.c (internal compiler error)
> FAIL: gcc.dg/pr88598-3.c (internal compiler error)
> FAIL: gcc.dg/pr88598-5.c (internal compiler error)
> FAIL: c-c++-common/torture/builtin-convertvector-1.c   -O1  (internal
> compiler error)
> FAIL: c-c++-common/torture/builtin-convertvector-1.c   -O2  (internal
> compiler error)
> FAIL: c-c++-common/torture/builtin-convertvector-1.c   -O2 -flto
> -fno-use-linker-plugin -flto-partition=none  (internal compiler error)
> FAIL: c-c++-common/torture/builtin-convertvector-1.c   -O3
> -fomit-frame-pointer -funroll-loops -fpeel-loops -ftracer
> -finline-functions  (internal compiler error)
> FAIL: c-c++-common/torture/builtin-convertvector-1.c   -O3 -g
> (internal compiler error)
> FAIL: c-c++-common/torture/builtin-convertvector-1.c   -Os  (internal
> compiler error)
> FAIL: gcc.target/aarch64/pr87839.c (internal compiler error)
> FAIL: gfortran.dg/vect/vect-8-epilogue.F90   -O  (internal compiler error)
> FAIL: c-c++-common/torture/builtin-convertvector-1.c   -O1  (internal
> compiler error)
> FAIL: c-c++-common/torture/builtin-convertvector-1.c   -O2  (internal
> compiler error)
> FAIL: c-c++-common/torture/builtin-convertvector-1.c   -O2 -flto
> -fno-use-linker-plugin -flto-partition=none  (internal compiler error)
> FAIL: c-c++-common/torture/builtin-convertvector-1.c   -O3
> -fomit-frame-pointer -funroll-loops -fpeel-loops -ftracer
> -finline-functions  (internal compiler error)
> FAIL: c-c++-common/torture/builtin-convertvector-1.c   -O3 -g
> (internal compiler error)

I've been concentrating on the ACLE branch recently and haven't been
tracking trunk, so can well believe it. :-)

> Applying patch doesn't results in additional fallout relative to trunk
> with -march=armv8.2-a+sve -msve-vector-bits=256.
> Is it OK to apply ?

Yes, thanks.

> PS: Initially, I got UNSUPPORTED for SVE tests, because assembler
> was rejecting the test "ptrue p0.b" in selector
> check_effective_target_aarch64_sve_hw and would accept it only if
> passed -march=armv8.2-a+sve explicitly on command line. I worked
> around that by patching lib/target-supports.exp to explicitly pass the
> option. Not sure if that's the right approach tho ?

Ah, OK.  I always test SVE with a toolchain configured for SVE by default
(to get extra coverage building the target libraries), so I never hit this.
For:

> diff --git a/gcc/testsuite/lib/target-supports.exp 
> b/gcc/testsuite/lib/target-supports.exp
> index 3bd6e815715..0ff0d8fb757 100644
> --- a/gcc/testsuite/lib/target-supports.exp
> +++ b/gcc/testsuite/lib/target-supports.exp
> @@ -3846,6 +3846,10 @@ proc add_options_for_arm_neon_softfp_fp16 { flags } {
>      return "$flags $et_arm_neon_softfp_fp16_flags"
>  }
>  
> +proc add_options_for_arm_sve { flags } {
> +    return "$flags -march=armv8.2-a+sve"

...this I think we should avoid overriding the flags if they already
select SVE, so probably:

    if { ![istarget aarch64*-*-*] || [check_effective_target_aarch64_sve] } {
        return "$flags"
    }

Should be "aarch64_sve" rather than "arm_sve".

> +}
> +
>  # Return 1 if this is an ARM target supporting the FP16 alternative
>  # format.  Some multilibs may be incompatible with the options needed.  Also
>  # set et_arm_neon_fp16_flags to the best options to add.
> @@ -4323,7 +4327,7 @@ proc check_effective_target_aarch64_sve_hw { } {
>         asm volatile ("ptrue p0.b");
>         return 0;
>       }
> -    }]
> +    } [ add_options_for_arm_sve "" ]]
>  }
>  
>  # Return true if this is an AArch64 target that can run SVE code and
> @@ -4343,7 +4347,7 @@ proc aarch64_sve_hw_bits { bits } {
>           __builtin_abort ();
>         return 0;
>       }
> -    }]]
> +    }] [add_options_for_arm_sve ""] ]
>  }
>  
>  # Return true if this is an AArch64 target that can run SVE code and

Think the formatting in the second is preferred over the first (i.e.
no spaces inside the [...]).

Thanks,
Richard

Reply via email to