James Greenhalgh <james.greenha...@arm.com> writes:
> On Sat, Jan 06, 2018 at 07:13:22PM +0000, Richard Sandiford wrote:
>> James Greenhalgh <james.greenha...@arm.com> writes:
>> > On Fri, Nov 03, 2017 at 05:50:54PM +0000, Richard Sandiford wrote:
>> >> This patch adds gcc.target/aarch64 tests for SVE, and forces some
>> >> existing Advanced SIMD tests to use -march=armv8-a.
>> >
>> > I'm going to assume that these new testcases are broadly sensible, and not
>> > spend any significant time looking at them.
>> >
>> > I'm not completely happy forcing the architecture to Armv8-a - it would be
>> > useful for our testing coverage if users which have configured with other
>> > architecture variants had this test execute in those environments. That
>> > way we'd check we still do the right thing once we have an implicit
>> > -march=armv8.2-a .
>> >
>> > However, as we don't have a good way to make that happen (other than maybe
>> > only forcing the arch if we are in a configuration wired for SVE?) I'm
>> > happy with this patch as a compromise for now.
>> 
>> Would something like LLVM's -mattr be useful?  Then we could have
>> -mattr=+nosve without having to change the base architecture.
>> 
>> I suppose we'd need to be careful about how it interacts with -march
>> though, so it probably isn't GCC 8 material.  I'll try only forcing
>> the arch when we're compiling for SVE, like you say.
>
> (Sorry if you took a duplicate of this - I mistakenly sent with a disclaimer)
>
> We also could do this with Target pragmas:
>
>   #pragma GCC target ("+nosve")
>
> Should work here I think.

Yeah, it does, thanks.  I switched to that instead of forcing -march=.

>> Not strictly related, but do you think it's OK to require binutils 2.28+
>> when testing GCC (rather than simply building it)?  When trying with an
>> older OS the other day, I realised that the SVE dg-do assemble tests
>> would fail for 2.27 and earlier.  We'd need something like:
>> 
>>   /* { dg-do assemble { aarch64_sve_asm } } */
>> 
>> if we wanted to support older binutils.
>
> Personally I think this is OK. We have the same problem with other
> new instructions we add and want assemble tests for.

I later saw that we have aarch64_asm_<foo>_ok, so I added "sve" to the
list and used it to protect dg-do assemble tests.

In another message you said:

> Additionally, I'd be happy with the whole AArch64 testsuite being organised
> in to folders (doing this might also make it easier for us to turn all SVE
> tests off with older assemblers, by using the skipping the exp file if we
> can't find support).

I agree organising it into directories is nicer, and it means that we
can add the -march= option in the harness rather than each individual
dg-options line.  That in turn makes it easy to avoid overriding -march=
if the setting that the tester chose (or the toolchain's default setting)
already includes SVE.

Here's what I plan to commit (without reposting the new tests).

Thanks,
Richard


2018-01-12  Richard Sandiford  <richard.sandif...@linaro.org>
            Alan Hayward  <alan.hayw...@arm.com>
            David Sherwood  <david.sherw...@arm.com>

gcc/testsuite/
        * lib/target-supports.exp (check_effective_target_aarch64_asm_sve_ok):
        New proc.
        * gcc.target/aarch64/bic_imm_1.c: Use #pragma GCC target "+nosve".
        * gcc.target/aarch64/fmaxmin.c: Likewise.
        * gcc.target/aarch64/fmul_fcvt_2.c: Likewise.
        * gcc.target/aarch64/orr_imm_1.c: Likewise.
        * gcc.target/aarch64/pr62178.c: Likewise.
        * gcc.target/aarch64/pr71727-2.c: Likewise.
        * gcc.target/aarch64/saddw-1.c: Likewise.
        * gcc.target/aarch64/saddw-2.c: Likewise.
        * gcc.target/aarch64/uaddw-1.c: Likewise.
        * gcc.target/aarch64/uaddw-2.c: Likewise.
        * gcc.target/aarch64/uaddw-3.c: Likewise.
        * gcc.target/aarch64/vect-add-sub-cond.c: Likewise.
        * gcc.target/aarch64/vect-compile.c: Likewise.
        * gcc.target/aarch64/vect-faddv-compile.c: Likewise.
        * gcc.target/aarch64/vect-fcm-eq-d.c: Likewise.
        * gcc.target/aarch64/vect-fcm-eq-f.c: Likewise.
        * gcc.target/aarch64/vect-fcm-ge-d.c: Likewise.
        * gcc.target/aarch64/vect-fcm-ge-f.c: Likewise.
        * gcc.target/aarch64/vect-fcm-gt-d.c: Likewise.
        * gcc.target/aarch64/vect-fcm-gt-f.c: Likewise.
        * gcc.target/aarch64/vect-fmax-fmin-compile.c: Likewise.
        * gcc.target/aarch64/vect-fmaxv-fminv-compile.c: Likewise.
        * gcc.target/aarch64/vect-fmovd-zero.c: Likewise.
        * gcc.target/aarch64/vect-fmovd.c: Likewise.
        * gcc.target/aarch64/vect-fmovf-zero.c: Likewise.
        * gcc.target/aarch64/vect-fmovf.c: Likewise.
        * gcc.target/aarch64/vect-fp-compile.c: Likewise.
        * gcc.target/aarch64/vect-ld1r-compile-fp.c: Likewise.
        * gcc.target/aarch64/vect-ld1r-compile.c: Likewise.
        * gcc.target/aarch64/vect-movi.c: Likewise.
        * gcc.target/aarch64/vect-mull-compile.c: Likewise.
        * gcc.target/aarch64/vect-reduc-or_1.c: Likewise.
        * gcc.target/aarch64/vect-vaddv.c: Likewise.
        * gcc.target/aarch64/vect_saddl_1.c: Likewise.
        * gcc.target/aarch64/vect_smlal_1.c: Likewise.
        * gcc.target/aarch64/vector_initialization_nostack.c: XFAIL for
        fixed-length SVE.
        * gcc.target/aarch64/sve/aarch64-sve.exp: New file.
        * gcc.target/aarch64/sve/arith_1.c: New test.
        * gcc.target/aarch64/sve/const_pred_1.C: Likewise.
        * 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/cvtf_signed_1.c: Likewise.
        * gcc.target/aarch64/sve/cvtf_signed_1_run.c: Likewise.
        * gcc.target/aarch64/sve/cvtf_unsigned_1.c: Likewise.
        * gcc.target/aarch64/sve/cvtf_unsigned_1_run.c: Likewise.
        * gcc.target/aarch64/sve/dup_imm_1.c: Likewise.
        * gcc.target/aarch64/sve/dup_imm_1_run.c: Likewise.
        * gcc.target/aarch64/sve/dup_lane_1.c: Likewise.
        * gcc.target/aarch64/sve/ext_1.c: Likewise.
        * gcc.target/aarch64/sve/ext_2.c: Likewise.
        * gcc.target/aarch64/sve/extract_1.c: Likewise.
        * gcc.target/aarch64/sve/extract_2.c: Likewise.
        * gcc.target/aarch64/sve/extract_3.c: Likewise.
        * gcc.target/aarch64/sve/extract_4.c: Likewise.
        * gcc.target/aarch64/sve/fabs_1.c: Likewise.
        * gcc.target/aarch64/sve/fcvtz_signed_1.c: Likewise.
        * gcc.target/aarch64/sve/fcvtz_signed_1_run.c: Likewise.
        * gcc.target/aarch64/sve/fcvtz_unsigned_1.c: Likewise.
        * gcc.target/aarch64/sve/fcvtz_unsigned_1_run.c: Likewise.
        * gcc.target/aarch64/sve/fdiv_1.c: Likewise.
        * gcc.target/aarch64/sve/fdup_1.c: Likewise.
        * gcc.target/aarch64/sve/fdup_1_run.c: Likewise.
        * gcc.target/aarch64/sve/fmad_1.c: Likewise.
        * gcc.target/aarch64/sve/fmla_1.c: Likewise.
        * gcc.target/aarch64/sve/fmls_1.c: Likewise.
        * gcc.target/aarch64/sve/fmsb_1.c: Likewise.
        * gcc.target/aarch64/sve/fmul_1.c: Likewise.
        * gcc.target/aarch64/sve/fneg_1.c: Likewise.
        * gcc.target/aarch64/sve/fnmad_1.c: Likewise.
        * gcc.target/aarch64/sve/fnmla_1.c: Likewise.
        * gcc.target/aarch64/sve/fnmls_1.c: Likewise.
        * gcc.target/aarch64/sve/fnmsb_1.c: Likewise.
        * gcc.target/aarch64/sve/fp_arith_1.c: Likewise.
        * gcc.target/aarch64/sve/frinta_1.c: Likewise.
        * gcc.target/aarch64/sve/frinti_1.c: Likewise.
        * gcc.target/aarch64/sve/frintm_1.c: Likewise.
        * gcc.target/aarch64/sve/frintp_1.c: Likewise.
        * gcc.target/aarch64/sve/frintx_1.c: Likewise.
        * gcc.target/aarch64/sve/frintz_1.c: Likewise.
        * gcc.target/aarch64/sve/fsqrt_1.c: Likewise.
        * gcc.target/aarch64/sve/fsubr_1.c: Likewise.
        * gcc.target/aarch64/sve/index_1.c: Likewise.
        * gcc.target/aarch64/sve/index_1_run.c: Likewise.
        * gcc.target/aarch64/sve/ld1r_1.c: Likewise.
        * gcc.target/aarch64/sve/load_const_offset_1.c: Likewise.
        * gcc.target/aarch64/sve/load_const_offset_2.c: Likewise.
        * gcc.target/aarch64/sve/load_const_offset_3.c: Likewise.
        * gcc.target/aarch64/sve/load_scalar_offset_1.c: Likewise.
        * gcc.target/aarch64/sve/logical_1.c: Likewise.
        * gcc.target/aarch64/sve/loop_add_1.c: Likewise.
        * gcc.target/aarch64/sve/loop_add_1_run.c: Likewise.
        * gcc.target/aarch64/sve/mad_1.c: Likewise.
        * gcc.target/aarch64/sve/maxmin_1.c: Likewise.
        * gcc.target/aarch64/sve/maxmin_1_run.c: Likewise.
        * gcc.target/aarch64/sve/maxmin_strict_1.c: Likewise.
        * gcc.target/aarch64/sve/maxmin_strict_1_run.c: Likewise.
        * gcc.target/aarch64/sve/mla_1.c: Likewise.
        * gcc.target/aarch64/sve/mls_1.c: Likewise.
        * gcc.target/aarch64/sve/mov_rr_1.c: Likewise.
        * gcc.target/aarch64/sve/msb_1.c: Likewise.
        * gcc.target/aarch64/sve/mul_1.c: Likewise.
        * gcc.target/aarch64/sve/neg_1.c: Likewise.
        * gcc.target/aarch64/sve/nlogical_1.c: Likewise.
        * gcc.target/aarch64/sve/nlogical_1_run.c: Likewise.
        * gcc.target/aarch64/sve/pack_1.c: Likewise.
        * gcc.target/aarch64/sve/pack_1_run.c: Likewise.
        * gcc.target/aarch64/sve/pack_fcvt_signed_1.c: Likewise.
        * gcc.target/aarch64/sve/pack_fcvt_signed_1_run.c: Likewise.
        * gcc.target/aarch64/sve/pack_fcvt_unsigned_1.c: Likewise.
        * gcc.target/aarch64/sve/pack_fcvt_unsigned_1_run.c: Likewise.
        * gcc.target/aarch64/sve/pack_float_1.c: Likewise.
        * gcc.target/aarch64/sve/pack_float_1_run.c: Likewise.
        * gcc.target/aarch64/sve/popcount_1.c: Likewise.
        * gcc.target/aarch64/sve/popcount_1_run.c: Likewise.
        * gcc.target/aarch64/sve/reduc_1.c: Likewise.
        * gcc.target/aarch64/sve/reduc_1_run.c: Likewise.
        * gcc.target/aarch64/sve/reduc_2.c: Likewise.
        * gcc.target/aarch64/sve/reduc_2_run.c: Likewise.
        * gcc.target/aarch64/sve/reduc_3.c: Likewise.
        * gcc.target/aarch64/sve/rev_1.c: Likewise.
        * gcc.target/aarch64/sve/revb_1.c: Likewise.
        * gcc.target/aarch64/sve/revh_1.c: Likewise.
        * gcc.target/aarch64/sve/revw_1.c: Likewise.
        * gcc.target/aarch64/sve/shift_1.c: Likewise.
        * gcc.target/aarch64/sve/single_1.c: Likewise.
        * gcc.target/aarch64/sve/single_2.c: Likewise.
        * gcc.target/aarch64/sve/single_3.c: Likewise.
        * gcc.target/aarch64/sve/single_4.c: Likewise.
        * gcc.target/aarch64/sve/spill_1.c: Likewise.
        * gcc.target/aarch64/sve/store_scalar_offset_1.c: Likewise.
        * gcc.target/aarch64/sve/subr_1.c: Likewise.
        * gcc.target/aarch64/sve/trn1_1.c: Likewise.
        * gcc.target/aarch64/sve/trn2_1.c: Likewise.
        * gcc.target/aarch64/sve/unpack_fcvt_signed_1.c: Likewise.
        * gcc.target/aarch64/sve/unpack_fcvt_signed_1_run.c: Likewise.
        * gcc.target/aarch64/sve/unpack_fcvt_unsigned_1.c: Likewise.
        * gcc.target/aarch64/sve/unpack_fcvt_unsigned_1_run.c: Likewise.
        * gcc.target/aarch64/sve/unpack_float_1.c: Likewise.
        * gcc.target/aarch64/sve/unpack_float_1_run.c: Likewise.
        * gcc.target/aarch64/sve/unpack_signed_1.c: Likewise.
        * gcc.target/aarch64/sve/unpack_signed_1_run.c: Likewise.
        * gcc.target/aarch64/sve/unpack_unsigned_1.c: Likewise.
        * gcc.target/aarch64/sve/unpack_unsigned_1_run.c: Likewise.
        * gcc.target/aarch64/sve/uzp1_1.c: Likewise.
        * gcc.target/aarch64/sve/uzp1_1_run.c: Likewise.
        * gcc.target/aarch64/sve/uzp2_1.c: Likewise.
        * gcc.target/aarch64/sve/uzp2_1_run.c: Likewise.
        * gcc.target/aarch64/sve/vcond_1.C: Likewise.
        * gcc.target/aarch64/sve/vcond_1_run.C: Likewise.
        * gcc.target/aarch64/sve/vcond_2.c: Likewise.
        * gcc.target/aarch64/sve/vcond_2_run.c: Likewise.
        * gcc.target/aarch64/sve/vcond_3.c: Likewise.
        * gcc.target/aarch64/sve/vcond_4.c: Likewise.
        * gcc.target/aarch64/sve/vcond_4_run.c: Likewise.
        * gcc.target/aarch64/sve/vcond_5.c: Likewise.
        * gcc.target/aarch64/sve/vcond_5_run.c: Likewise.
        * gcc.target/aarch64/sve/vcond_6.c: Likewise.
        * gcc.target/aarch64/sve/vcond_6_run.c: Likewise.
        * gcc.target/aarch64/sve/vec_init_1.c: Likewise.
        * gcc.target/aarch64/sve/vec_init_1_run.c: Likewise.
        * gcc.target/aarch64/sve/vec_init_2.c: Likewise.
        * gcc.target/aarch64/sve/vec_perm_1.c: Likewise.
        * gcc.target/aarch64/sve/vec_perm_1_run.c: Likewise.
        * gcc.target/aarch64/sve/vec_perm_1_overrange_run.c: Likewise.
        * gcc.target/aarch64/sve/vec_perm_const_1.c: Likewise.
        * gcc.target/aarch64/sve/vec_perm_const_1_overrun.c: Likewise.
        * gcc.target/aarch64/sve/vec_perm_const_1_run.c: Likewise.
        * gcc.target/aarch64/sve/vec_perm_const_single_1.c: Likewise.
        * gcc.target/aarch64/sve/vec_perm_const_single_1_run.c: Likewise.
        * gcc.target/aarch64/sve/vec_perm_single_1.c: Likewise.
        * gcc.target/aarch64/sve/vec_perm_single_1_run.c: Likewise.
        * gcc.target/aarch64/sve/zip1_1.c: Likewise.
        * gcc.target/aarch64/sve/zip2_1.c: Likewise.

Index: gcc/testsuite/lib/target-supports.exp
===================================================================
--- gcc/testsuite/lib/target-supports.exp       2018-01-12 15:13:42.557888273 
+0000
+++ gcc/testsuite/lib/target-supports.exp       2018-01-12 15:13:44.050826874 
+0000
@@ -8590,7 +8590,7 @@ proc check_effective_target_aarch64_tiny
 # Create functions to check that the AArch64 assembler supports the
 # various architecture extensions via the .arch_extension pseudo-op.
 
-foreach { aarch64_ext } { "fp" "simd" "crypto" "crc" "lse" "dotprod"} {
+foreach { aarch64_ext } { "fp" "simd" "crypto" "crc" "lse" "dotprod" "sve"} {
     eval [string map [list FUNC $aarch64_ext] {
        proc check_effective_target_aarch64_asm_FUNC_ok { } {
          if { [istarget aarch64*-*-*] } {
Index: gcc/testsuite/gcc.target/aarch64/bic_imm_1.c
===================================================================
--- gcc/testsuite/gcc.target/aarch64/bic_imm_1.c        2018-01-12 
15:13:42.557888273 +0000
+++ gcc/testsuite/gcc.target/aarch64/bic_imm_1.c        2018-01-12 
15:13:44.034827531 +0000
@@ -1,6 +1,8 @@
 /* { dg-do assemble } */
 /* { dg-options "-O2 --save-temps -ftree-vectorize" } */
 
+#pragma GCC target "+nosve"
+
 /* Each function uses the correspoding 'CLASS' in
    Marco CHECK (aarch64_simd_valid_immediate).  */
 
Index: gcc/testsuite/gcc.target/aarch64/fmaxmin.c
===================================================================
--- gcc/testsuite/gcc.target/aarch64/fmaxmin.c  2018-01-12 15:13:42.557888273 
+0000
+++ gcc/testsuite/gcc.target/aarch64/fmaxmin.c  2018-01-12 15:13:44.034827531 
+0000
@@ -1,6 +1,7 @@
 /* { dg-do run } */
 /* { dg-options "-O2 -ftree-vectorize -fno-inline -fno-vect-cost-model 
-save-temps" } */
 
+#pragma GCC target "+nosve"
 
 extern void abort (void);
 double fmax (double, double);
Index: gcc/testsuite/gcc.target/aarch64/fmul_fcvt_2.c
===================================================================
--- gcc/testsuite/gcc.target/aarch64/fmul_fcvt_2.c      2018-01-12 
15:13:42.557888273 +0000
+++ gcc/testsuite/gcc.target/aarch64/fmul_fcvt_2.c      2018-01-12 
15:13:44.034827531 +0000
@@ -1,6 +1,8 @@
 /* { dg-do run } */
 /* { dg-options "-save-temps -O2 -ftree-vectorize -fno-inline 
-fno-vect-cost-model" } */
 
+#pragma GCC target "+nosve"
+
 #define N 1024
 
 #define FUNC_DEF(__a)          \
Index: gcc/testsuite/gcc.target/aarch64/orr_imm_1.c
===================================================================
--- gcc/testsuite/gcc.target/aarch64/orr_imm_1.c        2018-01-12 
15:13:42.557888273 +0000
+++ gcc/testsuite/gcc.target/aarch64/orr_imm_1.c        2018-01-12 
15:13:44.034827531 +0000
@@ -1,6 +1,8 @@
 /* { dg-do assemble } */
 /* { dg-options "-O2 --save-temps -ftree-vectorize" } */
 
+#pragma GCC target "+nosve"
+
 /* Each function uses the correspoding 'CLASS' in
    Marco CHECK (aarch64_simd_valid_immediate).  */
 
Index: gcc/testsuite/gcc.target/aarch64/pr62178.c
===================================================================
--- gcc/testsuite/gcc.target/aarch64/pr62178.c  2018-01-12 15:13:42.557888273 
+0000
+++ gcc/testsuite/gcc.target/aarch64/pr62178.c  2018-01-12 15:13:44.034827531 
+0000
@@ -1,6 +1,8 @@
 /* { dg-do compile } */
 /* { dg-options "-O3" } */
 
+#pragma GCC target "+nosve"
+
 int a[30 +1][30 +1], b[30 +1][30 +1], r[30 +1][30 +1];
 
 void foo (void) {
Index: gcc/testsuite/gcc.target/aarch64/pr71727-2.c
===================================================================
--- gcc/testsuite/gcc.target/aarch64/pr71727-2.c        2018-01-12 
15:13:42.557888273 +0000
+++ gcc/testsuite/gcc.target/aarch64/pr71727-2.c        2018-01-12 
15:13:44.034827531 +0000
@@ -1,6 +1,8 @@
 /* { dg-do compile } */
 /* { dg-options "-mstrict-align -O3" } */
 
+#pragma GCC target "+nosve"
+
 unsigned char foo(const unsigned char *buffer, unsigned int length)
 {
   unsigned char sum;
Index: gcc/testsuite/gcc.target/aarch64/saddw-1.c
===================================================================
--- gcc/testsuite/gcc.target/aarch64/saddw-1.c  2018-01-12 15:13:42.557888273 
+0000
+++ gcc/testsuite/gcc.target/aarch64/saddw-1.c  2018-01-12 15:13:44.034827531 
+0000
@@ -1,6 +1,8 @@
 /* { dg-do compile } */
 /* { dg-options "-O3" } */
 
+#pragma GCC target "+nosve"
+
 int 
 t6(int len, void * dummy, short * __restrict x)
 {
Index: gcc/testsuite/gcc.target/aarch64/saddw-2.c
===================================================================
--- gcc/testsuite/gcc.target/aarch64/saddw-2.c  2018-01-12 15:13:42.557888273 
+0000
+++ gcc/testsuite/gcc.target/aarch64/saddw-2.c  2018-01-12 15:13:44.034827531 
+0000
@@ -1,6 +1,8 @@
 /* { dg-do compile } */
 /* { dg-options "-O3" } */
 
+#pragma GCC target "+nosve"
+
 int 
 t6(int len, void * dummy, int * __restrict x)
 {
Index: gcc/testsuite/gcc.target/aarch64/uaddw-1.c
===================================================================
--- gcc/testsuite/gcc.target/aarch64/uaddw-1.c  2018-01-12 15:13:42.557888273 
+0000
+++ gcc/testsuite/gcc.target/aarch64/uaddw-1.c  2018-01-12 15:13:44.049826915 
+0000
@@ -1,6 +1,8 @@
 /* { dg-do compile } */
 /* { dg-options "-O3" } */
 
+#pragma GCC target "+nosve"
+
 int 
 t6(int len, void * dummy, unsigned short * __restrict x)
 {
Index: gcc/testsuite/gcc.target/aarch64/uaddw-2.c
===================================================================
--- gcc/testsuite/gcc.target/aarch64/uaddw-2.c  2018-01-12 15:13:42.557888273 
+0000
+++ gcc/testsuite/gcc.target/aarch64/uaddw-2.c  2018-01-12 15:13:44.049826915 
+0000
@@ -1,6 +1,8 @@
 /* { dg-do compile } */
 /* { dg-options "-O3" } */
 
+#pragma GCC target "+nosve"
+
 int 
 t6(int len, void * dummy, unsigned short * __restrict x)
 {
Index: gcc/testsuite/gcc.target/aarch64/uaddw-3.c
===================================================================
--- gcc/testsuite/gcc.target/aarch64/uaddw-3.c  2018-01-12 15:13:42.557888273 
+0000
+++ gcc/testsuite/gcc.target/aarch64/uaddw-3.c  2018-01-12 15:13:44.049826915 
+0000
@@ -1,6 +1,8 @@
 /* { dg-do compile } */
 /* { dg-options "-O3" } */
 
+#pragma GCC target "+nosve"
+
 int 
 t6(int len, void * dummy, char * __restrict x)
 {
Index: gcc/testsuite/gcc.target/aarch64/vect-add-sub-cond.c
===================================================================
--- gcc/testsuite/gcc.target/aarch64/vect-add-sub-cond.c        2018-01-12 
15:13:42.557888273 +0000
+++ gcc/testsuite/gcc.target/aarch64/vect-add-sub-cond.c        2018-01-12 
15:13:44.049826915 +0000
@@ -3,6 +3,8 @@
 /* { dg-do compile } */
 /* { dg-options "-O2 -ftree-vectorize" } */
 
+#pragma GCC target "+nosve"
+
 #define COUNT1(X) if (X) count += 1
 #define COUNT2(X) if (X) count -= 1
 #define COUNT3(X) count += (X)
Index: gcc/testsuite/gcc.target/aarch64/vect-compile.c
===================================================================
--- gcc/testsuite/gcc.target/aarch64/vect-compile.c     2018-01-12 
15:13:42.557888273 +0000
+++ gcc/testsuite/gcc.target/aarch64/vect-compile.c     2018-01-12 
15:13:44.049826915 +0000
@@ -1,7 +1,8 @@
-
 /* { dg-do compile } */
 /* { dg-options "-O3" } */
 
+#pragma GCC target "+nosve"
+
 #include "vect.x"
 
 /* { dg-final { scan-assembler "orn\\tv" } } */
Index: gcc/testsuite/gcc.target/aarch64/vect-faddv-compile.c
===================================================================
--- gcc/testsuite/gcc.target/aarch64/vect-faddv-compile.c       2018-01-12 
15:13:42.557888273 +0000
+++ gcc/testsuite/gcc.target/aarch64/vect-faddv-compile.c       2018-01-12 
15:13:44.049826915 +0000
@@ -1,7 +1,8 @@
-
 /* { dg-do compile } */
 /* { dg-options "-O3 -ffast-math" } */
 
+#pragma GCC target "+nosve"
+
 #include "vect-faddv.x"
 
 /* { dg-final { scan-assembler-times "faddp\\tv" 2} } */
Index: gcc/testsuite/gcc.target/aarch64/vect-fcm-eq-d.c
===================================================================
--- gcc/testsuite/gcc.target/aarch64/vect-fcm-eq-d.c    2018-01-12 
15:13:42.557888273 +0000
+++ gcc/testsuite/gcc.target/aarch64/vect-fcm-eq-d.c    2018-01-12 
15:13:44.049826915 +0000
@@ -1,6 +1,8 @@
 /* { dg-do run } */
 /* { dg-options "-O2 -ftree-vectorize -fdump-tree-vect-all -fno-unroll-loops 
--save-temps -fno-inline -fno-vect-cost-model" } */
 
+#pragma GCC target "+nosve"
+
 #define FTYPE double
 #define ITYPE long
 #define OP ==
Index: gcc/testsuite/gcc.target/aarch64/vect-fcm-eq-f.c
===================================================================
--- gcc/testsuite/gcc.target/aarch64/vect-fcm-eq-f.c    2018-01-12 
15:13:42.557888273 +0000
+++ gcc/testsuite/gcc.target/aarch64/vect-fcm-eq-f.c    2018-01-12 
15:13:44.049826915 +0000
@@ -1,6 +1,8 @@
 /* { dg-do run } */
 /* { dg-options "-O2 -ftree-vectorize -fdump-tree-vect-all -fno-unroll-loops 
--save-temps -fno-inline" } */
 
+#pragma GCC target "+nosve"
+
 #define FTYPE float
 #define ITYPE int
 #define OP ==
Index: gcc/testsuite/gcc.target/aarch64/vect-fcm-ge-d.c
===================================================================
--- gcc/testsuite/gcc.target/aarch64/vect-fcm-ge-d.c    2018-01-12 
15:13:42.557888273 +0000
+++ gcc/testsuite/gcc.target/aarch64/vect-fcm-ge-d.c    2018-01-12 
15:13:44.049826915 +0000
@@ -1,6 +1,8 @@
 /* { dg-do run } */
 /* { dg-options "-O2 -ftree-vectorize -fdump-tree-vect-all -fno-unroll-loops 
--save-temps -fno-inline -fno-vect-cost-model" } */
 
+#pragma GCC target "+nosve"
+
 #define FTYPE double
 #define ITYPE long
 #define OP >=
Index: gcc/testsuite/gcc.target/aarch64/vect-fcm-ge-f.c
===================================================================
--- gcc/testsuite/gcc.target/aarch64/vect-fcm-ge-f.c    2018-01-12 
15:13:42.557888273 +0000
+++ gcc/testsuite/gcc.target/aarch64/vect-fcm-ge-f.c    2018-01-12 
15:13:44.049826915 +0000
@@ -1,6 +1,8 @@
 /* { dg-do run } */
 /* { dg-options "-O2 -ftree-vectorize -fdump-tree-vect-all -fno-unroll-loops 
--save-temps -fno-inline" } */
 
+#pragma GCC target "+nosve"
+
 #define FTYPE float
 #define ITYPE int
 #define OP >=
Index: gcc/testsuite/gcc.target/aarch64/vect-fcm-gt-d.c
===================================================================
--- gcc/testsuite/gcc.target/aarch64/vect-fcm-gt-d.c    2018-01-12 
15:13:42.557888273 +0000
+++ gcc/testsuite/gcc.target/aarch64/vect-fcm-gt-d.c    2018-01-12 
15:13:44.049826915 +0000
@@ -1,6 +1,8 @@
 /* { dg-do run } */
 /* { dg-options "-O2 -ftree-vectorize -fdump-tree-vect-all -fno-unroll-loops 
--save-temps -fno-inline -fno-vect-cost-model" } */
 
+#pragma GCC target "+nosve"
+
 #define FTYPE double
 #define ITYPE long
 #define OP >
Index: gcc/testsuite/gcc.target/aarch64/vect-fcm-gt-f.c
===================================================================
--- gcc/testsuite/gcc.target/aarch64/vect-fcm-gt-f.c    2018-01-12 
15:13:42.557888273 +0000
+++ gcc/testsuite/gcc.target/aarch64/vect-fcm-gt-f.c    2018-01-12 
15:13:44.049826915 +0000
@@ -1,6 +1,8 @@
 /* { dg-do run } */
 /* { dg-options "-O2 -ftree-vectorize -fdump-tree-vect-all -fno-unroll-loops 
--save-temps -fno-inline" } */
 
+#pragma GCC target "+nosve"
+
 #define FTYPE float
 #define ITYPE int
 #define OP >
Index: gcc/testsuite/gcc.target/aarch64/vect-fmax-fmin-compile.c
===================================================================
--- gcc/testsuite/gcc.target/aarch64/vect-fmax-fmin-compile.c   2018-01-12 
15:13:42.557888273 +0000
+++ gcc/testsuite/gcc.target/aarch64/vect-fmax-fmin-compile.c   2018-01-12 
15:13:44.049826915 +0000
@@ -1,6 +1,8 @@
 /* { dg-do compile } */
 /* { dg-options "-O3 -ffast-math" } */
 
+#pragma GCC target "+nosve"
+
 #include "vect-fmax-fmin.x"
 
 /* { dg-final { scan-assembler "fmaxnm\\tv" } } */
Index: gcc/testsuite/gcc.target/aarch64/vect-fmaxv-fminv-compile.c
===================================================================
--- gcc/testsuite/gcc.target/aarch64/vect-fmaxv-fminv-compile.c 2018-01-12 
15:13:42.557888273 +0000
+++ gcc/testsuite/gcc.target/aarch64/vect-fmaxv-fminv-compile.c 2018-01-12 
15:13:44.050826874 +0000
@@ -1,7 +1,8 @@
-
 /* { dg-do compile } */
 /* { dg-options "-O3 -ffast-math -fno-vect-cost-model" } */
 
+#pragma GCC target "+nosve"
+
 #include "vect-fmaxv-fminv.x"
 
 /* { dg-final { scan-assembler "fminnmv" } } */
Index: gcc/testsuite/gcc.target/aarch64/vect-fmovd-zero.c
===================================================================
--- gcc/testsuite/gcc.target/aarch64/vect-fmovd-zero.c  2018-01-12 
15:13:42.557888273 +0000
+++ gcc/testsuite/gcc.target/aarch64/vect-fmovd-zero.c  2018-01-12 
15:13:44.050826874 +0000
@@ -1,6 +1,8 @@
 /* { dg-do compile } */
 /* { dg-options "-O2 -ftree-vectorize -fdump-tree-vect-all 
-fno-vect-cost-model" } */
 
+#pragma GCC target "+nosve"
+
 #define N 32
 
 void
Index: gcc/testsuite/gcc.target/aarch64/vect-fmovd.c
===================================================================
--- gcc/testsuite/gcc.target/aarch64/vect-fmovd.c       2018-01-12 
15:13:42.557888273 +0000
+++ gcc/testsuite/gcc.target/aarch64/vect-fmovd.c       2018-01-12 
15:13:44.050826874 +0000
@@ -1,6 +1,8 @@
 /* { dg-do compile } */
 /* { dg-options "-O2 -ftree-vectorize -fdump-tree-vect-all 
-fno-vect-cost-model" } */
 
+#pragma GCC target "+nosve"
+
 #define N 32
 
 void
Index: gcc/testsuite/gcc.target/aarch64/vect-fmovf-zero.c
===================================================================
--- gcc/testsuite/gcc.target/aarch64/vect-fmovf-zero.c  2018-01-12 
15:13:42.557888273 +0000
+++ gcc/testsuite/gcc.target/aarch64/vect-fmovf-zero.c  2018-01-12 
15:13:44.050826874 +0000
@@ -1,6 +1,8 @@
 /* { dg-do compile } */
 /* { dg-options "-O2 -ftree-vectorize -fdump-tree-vect-all 
-fno-vect-cost-model" } */
 
+#pragma GCC target "+nosve"
+
 #define N 32
 
 void
Index: gcc/testsuite/gcc.target/aarch64/vect-fmovf.c
===================================================================
--- gcc/testsuite/gcc.target/aarch64/vect-fmovf.c       2018-01-12 
15:13:42.557888273 +0000
+++ gcc/testsuite/gcc.target/aarch64/vect-fmovf.c       2018-01-12 
15:13:44.050826874 +0000
@@ -1,6 +1,8 @@
 /* { dg-do compile } */
 /* { dg-options "-O2 -ftree-vectorize -fdump-tree-vect-all 
-fno-vect-cost-model" } */
 
+#pragma GCC target "+nosve"
+
 #define N 32
 
 void
Index: gcc/testsuite/gcc.target/aarch64/vect-fp-compile.c
===================================================================
--- gcc/testsuite/gcc.target/aarch64/vect-fp-compile.c  2018-01-12 
15:13:42.557888273 +0000
+++ gcc/testsuite/gcc.target/aarch64/vect-fp-compile.c  2018-01-12 
15:13:44.050826874 +0000
@@ -1,8 +1,8 @@
-
-
 /* { dg-do compile } */
 /* { dg-options "-O3" } */
 
+#pragma GCC target "+nosve"
+
 #include "vect-fp.x"
 
 /* { dg-final { scan-assembler "fadd\\tv" } } */
Index: gcc/testsuite/gcc.target/aarch64/vect-ld1r-compile-fp.c
===================================================================
--- gcc/testsuite/gcc.target/aarch64/vect-ld1r-compile-fp.c     2018-01-12 
15:13:42.557888273 +0000
+++ gcc/testsuite/gcc.target/aarch64/vect-ld1r-compile-fp.c     2018-01-12 
15:13:44.050826874 +0000
@@ -1,6 +1,8 @@
 /* { dg-do compile } */
 /* { dg-options "-O3 -fno-vect-cost-model" } */
 
+#pragma GCC target "+nosve"
+
 #include "stdint.h"
 #include "vect-ld1r.x"
 
Index: gcc/testsuite/gcc.target/aarch64/vect-ld1r-compile.c
===================================================================
--- gcc/testsuite/gcc.target/aarch64/vect-ld1r-compile.c        2018-01-12 
15:13:42.557888273 +0000
+++ gcc/testsuite/gcc.target/aarch64/vect-ld1r-compile.c        2018-01-12 
15:13:44.050826874 +0000
@@ -1,6 +1,8 @@
 /* { dg-do compile } */
 /* { dg-options "-O3 -fno-vect-cost-model" } */
 
+#pragma GCC target "+nosve"
+
 #include "stdint.h"
 #include "vect-ld1r.x"
 
Index: gcc/testsuite/gcc.target/aarch64/vect-movi.c
===================================================================
--- gcc/testsuite/gcc.target/aarch64/vect-movi.c        2018-01-12 
15:13:42.557888273 +0000
+++ gcc/testsuite/gcc.target/aarch64/vect-movi.c        2018-01-12 
15:13:44.050826874 +0000
@@ -1,6 +1,8 @@
 /* { dg-do run } */
 /* { dg-options "-O3 --save-temps -fno-inline" } */
 
+#pragma GCC target "+nosve"
+
 extern void abort (void);
 
 #define N 16
Index: gcc/testsuite/gcc.target/aarch64/vect-mull-compile.c
===================================================================
--- gcc/testsuite/gcc.target/aarch64/vect-mull-compile.c        2018-01-12 
15:13:42.557888273 +0000
+++ gcc/testsuite/gcc.target/aarch64/vect-mull-compile.c        2018-01-12 
15:13:44.050826874 +0000
@@ -1,7 +1,8 @@
-
 /* { dg-do compile } */
 /* { dg-options "-O3" } */
 
+#pragma GCC target "+nosve"
+
 #define N 16
 
 #include "vect-mull.x"
Index: gcc/testsuite/gcc.target/aarch64/vect-reduc-or_1.c
===================================================================
--- gcc/testsuite/gcc.target/aarch64/vect-reduc-or_1.c  2018-01-12 
15:13:42.557888273 +0000
+++ gcc/testsuite/gcc.target/aarch64/vect-reduc-or_1.c  2018-01-12 
15:13:44.050826874 +0000
@@ -2,6 +2,8 @@
 /* { dg-options "-O2 -ftree-vectorize -fdump-tree-vect-all 
-fno-vect-cost-model" } */
 /* Write a reduction loop to be reduced using whole vector right shift.  */
 
+#pragma GCC target "+nosve"
+
 extern void abort (void);
 
 unsigned char in[8] __attribute__((__aligned__(16)));
Index: gcc/testsuite/gcc.target/aarch64/vect-vaddv.c
===================================================================
--- gcc/testsuite/gcc.target/aarch64/vect-vaddv.c       2018-01-12 
15:13:42.557888273 +0000
+++ gcc/testsuite/gcc.target/aarch64/vect-vaddv.c       2018-01-12 
15:13:44.050826874 +0000
@@ -1,6 +1,8 @@
 /* { dg-do run } */
 /* { dg-options "-O3 --save-temps -ffast-math" } */
 
+#pragma GCC target "+nosve"
+
 #include <arm_neon.h>
 
 extern void abort (void);
Index: gcc/testsuite/gcc.target/aarch64/vect_saddl_1.c
===================================================================
--- gcc/testsuite/gcc.target/aarch64/vect_saddl_1.c     2018-01-12 
15:13:42.557888273 +0000
+++ gcc/testsuite/gcc.target/aarch64/vect_saddl_1.c     2018-01-12 
15:13:44.050826874 +0000
@@ -1,6 +1,8 @@
 /* { dg-do run } */
 /* { dg-options "-O3 -fno-inline -save-temps -fno-vect-cost-model 
-fno-ipa-icf" } */
 
+#pragma GCC target "+nosve"
+
 typedef signed char S8_t;
 typedef signed short S16_t;
 typedef signed int S32_t;
Index: gcc/testsuite/gcc.target/aarch64/vect_smlal_1.c
===================================================================
--- gcc/testsuite/gcc.target/aarch64/vect_smlal_1.c     2018-01-12 
15:13:42.557888273 +0000
+++ gcc/testsuite/gcc.target/aarch64/vect_smlal_1.c     2018-01-12 
15:13:44.050826874 +0000
@@ -1,6 +1,8 @@
 /* { dg-do run } */
 /* { dg-options "-O3 -fno-inline -save-temps -fno-vect-cost-model 
-fno-ipa-icf" } */
 
+#pragma GCC target "+nosve"
+
 typedef signed char S8_t;
 typedef signed short S16_t;
 typedef signed int S32_t;
Index: gcc/testsuite/gcc.target/aarch64/vector_initialization_nostack.c
===================================================================
--- gcc/testsuite/gcc.target/aarch64/vector_initialization_nostack.c    
2018-01-12 15:13:42.557888273 +0000
+++ gcc/testsuite/gcc.target/aarch64/vector_initialization_nostack.c    
2018-01-12 15:13:44.050826874 +0000
@@ -49,5 +49,6 @@ f12 (void)
   return sum;
 }
 
-
-/* { dg-final { scan-assembler-not "sp" } } */
+/* Fails for fixed-length SVE because we lack a vec_init pattern.
+   A later patch fixes this in generic code.  */
+/* { dg-final { scan-assembler-not "sp" { xfail { aarch64_sve && { ! 
vect_variable_length } } } } } */
Index: gcc/testsuite/gcc.target/aarch64/sve/aarch64-sve.exp
===================================================================
--- /dev/null   2018-01-12 06:40:27.684409621 +0000
+++ gcc/testsuite/gcc.target/aarch64/sve/aarch64-sve.exp        2018-01-12 
15:13:44.035827490 +0000
@@ -0,0 +1,52 @@
+#  Specific regression driver for AArch64 SVE.
+#  Copyright (C) 2009-2018 Free Software Foundation, Inc.
+#  Contributed by ARM Ltd.
+#
+#  This file is part of GCC.
+#
+#  GCC is free software; you can redistribute it and/or modify it
+#  under the terms of the GNU General Public License as published by
+#  the Free Software Foundation; either version 3, or (at your option)
+#  any later version.
+#
+#  GCC is distributed in the hope that it will be useful, but
+#  WITHOUT ANY WARRANTY; without even the implied warranty of
+#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+#  General Public License for more details.
+#
+#  You should have received a copy of the GNU General Public License
+#  along with GCC; see the file COPYING3.  If not see
+#  <http://www.gnu.org/licenses/>.  */
+
+# GCC testsuite that uses the `dg.exp' driver.
+
+# Exit immediately if this isn't an AArch64 target.
+if {![istarget aarch64*-*-*] } then {
+  return
+}
+
+# Load support procs.
+load_lib gcc-dg.exp
+
+# If a testcase doesn't have special options, use these.
+global DEFAULT_CFLAGS
+if ![info exists DEFAULT_CFLAGS] then {
+    set DEFAULT_CFLAGS " -ansi -pedantic-errors"
+}
+
+# Initialize `dg'.
+dg-init
+
+# Force SVE if we're not testing it already.
+if { [check_effective_target_aarch64_sve] } {
+    set sve_flags ""
+} else {
+    set sve_flags "-march=armv8.2-a+sve"
+}
+
+# Main loop.
+dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.\[cCS\]]] \
+    $sve_flags $DEFAULT_CFLAGS
+
+# All done.
+dg-finish

Reply via email to