> -----Original Message-----
> From: Richard Biener <[email protected]>
> Sent: 14 August 2026 12:59
> To: Tamar Christina <[email protected]>
> Cc: [email protected]; nd <[email protected]>; [email protected]
> Subject: Re: [patch v2][RFC][vect]: Support running vect.exp in multiple
> different configuration
> 
> On Fri, 14 Aug 2026, Tamar Christina wrote:
> 
> > This is a proof of concept addressing some of the issues Richi pointed out
> before.
> >
> > In particular the extra vect options are now taken part of the cache key as
> well
> > so we re-evaluate all the different effective targets tests for them while
> running
> > under vect.exp.
> >
> > The attached patch produces
> >
> > make check-gcc RUNTESTFLAGS="--target_board=unix\{-m32,-m64\}
> vect.exp=bb-slp-subgroups-2.c" -j
> >
> > gives
> >
> > Test run by tnfchris on Fri Aug 14 08:41:38 2026
> > Native configuration is x86_64-pc-linux-gnu
> >
> >                 === gcc tests ===
> >
> > Schedule of variations:
> >     unix/-m32
> >     unix/-m64
> >
> > Running target unix/-m32
> > Running /home/tnfchris/gcc-dsg/gcc/testsuite/gcc.dg/vect/vect.exp ...
> > PASS: gcc.dg/vect/bb-slp-subgroups-2.c (test for excess errors)
> > PASS: gcc.dg/vect/bb-slp-subgroups-2.c -flto -ffat-lto-objects  scan-tree-
> dump-times slp2 "Basic block will be vectorized using SLP" 1
> > PASS: gcc.dg/vect/bb-slp-subgroups-2.c -flto -ffat-lto-objects  scan-tree-
> dump-times slp2 "optimized: basic block" 2
> > PASS: gcc.dg/vect/bb-slp-subgroups-2.c -flto -ffat-lto-objects (test for
> excess errors)
> > PASS: gcc.dg/vect/bb-slp-subgroups-2.c -flto -ffat-lto-objects -mavx2  scan-
> tree-dump-times slp2 "Basic block will be vectorized using SLP" 1
> > PASS: gcc.dg/vect/bb-slp-subgroups-2.c -flto -ffat-lto-objects -mavx2  scan-
> tree-dump-times slp2 "optimized: basic block" 1
> > PASS: gcc.dg/vect/bb-slp-subgroups-2.c -flto -ffat-lto-objects -mavx2 (test
> for excess errors)
> > PASS: gcc.dg/vect/bb-slp-subgroups-2.c -flto -ffat-lto-objects -mavx2
> execution test
> > PASS: gcc.dg/vect/bb-slp-subgroups-2.c -flto -ffat-lto-objects execution 
> > test
> > PASS: gcc.dg/vect/bb-slp-subgroups-2.c -mavx2  scan-tree-dump-times slp2
> "Basic block will be vectorized using SLP" 1
> > PASS: gcc.dg/vect/bb-slp-subgroups-2.c -mavx2  scan-tree-dump-times slp2
> "optimized: basic block" 1
> > PASS: gcc.dg/vect/bb-slp-subgroups-2.c -mavx2 (test for excess errors)
> > PASS: gcc.dg/vect/bb-slp-subgroups-2.c -mavx2 execution test
> > PASS: gcc.dg/vect/bb-slp-subgroups-2.c execution test
> > PASS: gcc.dg/vect/bb-slp-subgroups-2.c scan-tree-dump-times slp2 "Basic
> block will be vectorized using SLP" 1
> > PASS: gcc.dg/vect/bb-slp-subgroups-2.c scan-tree-dump-times slp2
> "optimized: basic block" 2
> >                 === gcc Summary for unix/-m32 ===
> >
> > # of expected passes            16
> > Running target unix/-m64
> > Running /home/tnfchris/gcc-dsg/gcc/testsuite/gcc.dg/vect/vect.exp ...
> > PASS: gcc.dg/vect/bb-slp-subgroups-2.c (test for excess errors)
> > PASS: gcc.dg/vect/bb-slp-subgroups-2.c -flto -ffat-lto-objects  scan-tree-
> dump-times slp2 "Basic block will be vectorized using SLP" 1
> > PASS: gcc.dg/vect/bb-slp-subgroups-2.c -flto -ffat-lto-objects  scan-tree-
> dump-times slp2 "optimized: basic block" 2
> > PASS: gcc.dg/vect/bb-slp-subgroups-2.c -flto -ffat-lto-objects (test for
> excess errors)
> > PASS: gcc.dg/vect/bb-slp-subgroups-2.c -flto -ffat-lto-objects -mavx2  scan-
> tree-dump-times slp2 "Basic block will be vectorized using SLP" 1
> > PASS: gcc.dg/vect/bb-slp-subgroups-2.c -flto -ffat-lto-objects -mavx2  scan-
> tree-dump-times slp2 "optimized: basic block" 1
> > PASS: gcc.dg/vect/bb-slp-subgroups-2.c -flto -ffat-lto-objects -mavx2 (test
> for excess errors)
> > PASS: gcc.dg/vect/bb-slp-subgroups-2.c -flto -ffat-lto-objects -mavx2
> execution test
> > PASS: gcc.dg/vect/bb-slp-subgroups-2.c -flto -ffat-lto-objects execution 
> > test
> > PASS: gcc.dg/vect/bb-slp-subgroups-2.c -mavx2  scan-tree-dump-times slp2
> "Basic block will be vectorized using SLP" 1
> > PASS: gcc.dg/vect/bb-slp-subgroups-2.c -mavx2  scan-tree-dump-times slp2
> "optimized: basic block" 1
> > PASS: gcc.dg/vect/bb-slp-subgroups-2.c -mavx2 (test for excess errors)
> > PASS: gcc.dg/vect/bb-slp-subgroups-2.c -mavx2 execution test
> > PASS: gcc.dg/vect/bb-slp-subgroups-2.c execution test
> > PASS: gcc.dg/vect/bb-slp-subgroups-2.c scan-tree-dump-times slp2 "Basic
> block will be vectorized using SLP" 1
> > PASS: gcc.dg/vect/bb-slp-subgroups-2.c scan-tree-dump-times slp2
> "optimized: basic block" 2
> >                 === gcc Summary for unix/-m64 ===
> >
> > # of expected passes            16
> >
> >                 === gcc Summary ===
> >
> > # of expected passes            32
> > /home/tnfchris/gcc-peak/gcc/xgcc  version 17.0.0 20260727 (experimental)
> (GCC)
> >
> > does this do what you wanted Richi?
> 
> It seems so (though it would have to be duplicated to the other
> vect.exp harnesses).  Also do the effective target checks work
> as intended when you handle "-flto -ffat-lto-objects" as one of
> the tortures?

So some effective targets tests definitely need to be adjusted, for instance
the sve_hw support one assume scalable vectors, and so when used with
-msve-vector-bits= it may fail.

But because the options are made part of the target itself the effective
targets can detect it.

So I'm expecting a bit of tweaking needed in some cases.

As for the other vect.exp files, I will refactor the changes into a general
one in /lib/ and just have them import it so we don't have duplicates.

> 
> There is of course still the question about that other similar
> mechanism (with its own issues).  Testsuite maintainers would
> need to decide wheter we want two of them.

I was planning if the cache issues are now fixed to rework this into the
general torture mechanism.

So try to drop vect_torture_flags and work it into torture_flags.

This means torture flags don't re-use the same check-effective cache and
compile cache, but I think that's the right thing to do anyway.

It's then more an extension rather than a new mechanism.
I'll do that next.

> 
> Thanks for keeping to work on this.

No problem :)

Thanks,
Tamar
> 
> Richard.
> 
> > ---
> > diff --git a/gcc/testsuite/gcc.dg/vect/vect.exp
> b/gcc/testsuite/gcc.dg/vect/vect.exp
> > index
> 958156b6ae01412b9d7a1b96bd4c394a038d5839..5008248c37f36cc4043
> ad961580979149a0d84c3 100644
> > --- a/gcc/testsuite/gcc.dg/vect/vect.exp
> > +++ b/gcc/testsuite/gcc.dg/vect/vect.exp
> > @@ -72,7 +72,40 @@ set VECT_ADDITIONAL_FLAGS [list ""]
> >  if { [check_effective_target_lto] } {
> >      lappend VECT_ADDITIONAL_FLAGS "-flto -ffat-lto-objects"
> >  }
> > +
> > +# Set target specific vect torture options
> > +if { [istarget aarch64*-*-*] } {
> > +  set TORTURE_OPTIONS [list \
> > +      {-march=armv8-a} \
> > +      {-march=armv8-a+sve} \
> > +      {-march=armv8-a+sve -msve-vector-bits=128} \
> > +      {-march=armv8-a+sve -msve-vector-bits=256} \
> > +      {-march=armv9-a} \
> > +  ]
> > +}
> > +
> > +if { [istarget x86_64-*-*] } {
> > +  set TORTURE_OPTIONS [list {-mavx2} ]
> > +}
> > +
> > +# Allow TORTURE_OPTIONS to add extra flag sets on top of the existing
> ones.
> > +if {[info exists TORTURE_OPTIONS]} {
> > +    set base_vect_additional_flags $VECT_ADDITIONAL_FLAGS
> > +    set VECT_ADDITIONAL_FLAGS [list]
> > +    foreach base_flags $base_vect_additional_flags {
> > +       lappend VECT_ADDITIONAL_FLAGS $base_flags
> > +       foreach torture_flags $TORTURE_OPTIONS {
> > +           if {$base_flags eq ""} {
> > +               lappend VECT_ADDITIONAL_FLAGS $torture_flags
> > +           } else {
> > +               lappend VECT_ADDITIONAL_FLAGS [concat $base_flags
> $torture_flags]
> > +           }
> > +       }
> > +    }
> > +}
> > +
> >  foreach flags $VECT_ADDITIONAL_FLAGS {
> > +    set ::vect_torture_flags [concat $flags $DEFAULT_VECTCFLAGS]
> >      set tests ""
> >      foreach file [glob -nocomplain $srcdir/$subdir/*.\[cS\]] {
> >     if { ! [string match $srcdir/$subdir/bb-slp-*.\[cS\] $file] } {
> > diff --git a/gcc/testsuite/lib/target-supports.exp 
> > b/gcc/testsuite/lib/target-
> supports.exp
> > index
> eb2444204a0df6ee4e39f3f857419c03bd067ae3..6a9782cfc76a6a24f32ca5
> 499edde23e56bef5dd 100644
> > --- a/gcc/testsuite/lib/target-supports.exp
> > +++ b/gcc/testsuite/lib/target-supports.exp
> > @@ -70,8 +70,18 @@ load_file $et_static
> >
> >  proc check_compile {basename type contents args} {
> >      global tool
> > +    global vect_torture_flags
> >      verbose "check_compile tool: $tool for $basename"
> >
> > +    if {[info exists vect_torture_flags] && $vect_torture_flags ne ""} {
> > +   if {[llength $args] > 0} {
> > +       set args [lreplace $args 0 0 \
> > +                     [concat $vect_torture_flags [lindex $args 0]]]
> > +   } else {
> > +       set args [list $vect_torture_flags]
> > +   }
> > +    }
> > +
> >      # Save additional_sources to avoid compiling testsuite's sources
> >      # against check_compile's source.
> >      global additional_sources
> > @@ -166,13 +176,20 @@ proc check_cached_effective_target { prop args }
> {
> >      global EFFECTIVE_TARGETS
> >      global et_index
> >      global et_cache
> > +    global vect_torture_flags
> > +    if {![info exists vect_torture_flags]} {
> > +   set vect_torture_flags ""
> > +    }
> >
> >      if { [info exists et_index] } {
> >     set et [lindex $EFFECTIVE_TARGETS $et_index]
> >      } else {
> >     set et "default"
> >      }
> > -    set target [current_target_name]
> > +
> > +    # Make the cache key depend on the actual target name plus any vect
> torture
> > +    # flags in effect.
> > +    set target "[current_target_name] $vect_torture_flags"
> >      if {![info exists et_cache($prop,$target,$et)]} {
> >     verbose "check_cached_effective_target $prop: checking $target" 2
> >     if {[string is true -strict $args] || [string is false -strict $args]} {
> >
> >
> >
> 
> --
> Richard Biener <[email protected]>
> SUSE Software Solutions Germany GmbH,
> Frankenstrasse 146, 90461 Nuernberg, Germany;
> GF: Jochen Jaser, Andrew McDonald, Abhinav Puri; (HRB 36809, AG
> Nuernberg)

Reply via email to