public inbox for gcc-cvs@sourceware.org
help / color / mirror / Atom feed
From: Richard Biener <rguenth@gcc.gnu.org>
To: gcc-cvs@gcc.gnu.org
Subject: [gcc(refs/users/rguenth/heads/vect-force-slp)] Fail vectorization when not SLP with --param vect-force-slp=1
Date: Fri,  6 Oct 2023 07:06:47 +0000 (GMT)	[thread overview]
Message-ID: <20231006070647.4DF0E3857803@sourceware.org> (raw)

https://gcc.gnu.org/g:634772b714a4adf9771fc3ef99c4a47b216575fd

commit 634772b714a4adf9771fc3ef99c4a47b216575fd
Author: Richard Biener <rguenther@suse.de>
Date:   Wed Aug 23 10:48:32 2023 +0200

    Fail vectorization when not SLP with --param vect-force-slp=1
    
    The following adds --param vect-force-slp allowing to indicate failure
    when not all stmts participating in loop vectorization are using
    SLP vectorization.
    
    This is intended for transitioning and debugging.
    
    Enabling this without further changes results in the following
    within vect.exp on x86_64
    
                    === g++ Summary ===
    
    -# of expected passes           619
    +# of expected passes           546
    +# of unexpected failures       73
    
                    === gcc Summary ===
    
    -# of expected passes           8835
    -# of expected failures         256
    +# of expected passes           7271
    +# of unexpected failures       1564
    +# of unexpected successes      12
    +# of expected failures         244
    
                    === gfortran Summary ===
    
    -# of expected passes           171
    +# of expected passes           144
    +# of unexpected failures       27
    
            * params.opt (-param=vect-force-slp=): New, default to 0.
            * doc/invoke.texi (--param vect-force-slp): Document.
            * tree-vect-stmts.cc (vect_analyze_stmt): With
            --param vect-force-slp=1 fail vectorization when not using SLP.

Diff:
---
 gcc/doc/invoke.texi    | 4 ++++
 gcc/params.opt         | 4 ++++
 gcc/tree-vect-stmts.cc | 6 ++++++
 3 files changed, 14 insertions(+)

diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi
index 23083467d47..46dd00f220b 100644
--- a/gcc/doc/invoke.texi
+++ b/gcc/doc/invoke.texi
@@ -16291,6 +16291,10 @@ this parameter.  The default value of this parameter is 50.
 @item vect-induction-float
 Enable loop vectorization of floating point inductions.
 
+@item vect-force-slp
+Fail vectorization when falling back to non-SLP.  This is intended for
+debugging only.
+
 @item vrp-sparse-threshold
 Maximum number of basic blocks before VRP uses a sparse bitmap cache.
 
diff --git a/gcc/params.opt b/gcc/params.opt
index fffa8b1bc64..ae2fa54fc58 100644
--- a/gcc/params.opt
+++ b/gcc/params.opt
@@ -1183,6 +1183,10 @@ The maximum factor which the loop vectorizer applies to the cost of statements i
 Common Joined UInteger Var(param_vect_induction_float) Init(1) IntegerRange(0, 1) Param Optimization
 Enable loop vectorization of floating point inductions.
 
+-param=vect-force-slp=
+Common Joined UInteger Var(param_vect_force_slp) Init(0) IntegerRange(0, 1) Param Optimization
+Fail vectorization when falling back to non-SLP.
+
 -param=vrp-sparse-threshold=
 Common Joined UInteger Var(param_vrp_sparse_threshold) Init(3000) Optimization Param
 Maximum number of basic blocks before VRP uses a sparse bitmap cache.
diff --git a/gcc/tree-vect-stmts.cc b/gcc/tree-vect-stmts.cc
index cd7c1090d88..830375dd0c4 100644
--- a/gcc/tree-vect-stmts.cc
+++ b/gcc/tree-vect-stmts.cc
@@ -12452,6 +12452,12 @@ vect_analyze_stmt (vec_info *vinfo,
       return opt_result::success ();
     }
 
+  if (param_vect_force_slp && !node)
+    return opt_result::failure_at (stmt_info->stmt,
+				   "not vectorized:"
+				   " not part of SLP but SLP forced: %G",
+				   stmt_info->stmt);
+
   ok = true;
   if (!bb_vinfo
       && (STMT_VINFO_RELEVANT_P (stmt_info)

             reply	other threads:[~2023-10-06  7:06 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-10-06  7:06 Richard Biener [this message]
2023-10-16 12:49 Richard Biener
2023-10-19 13:28 Richard Biener
2023-11-02 13:59 Richard Biener
2023-11-09 13:02 Richard Biener
2024-02-23  7:31 Richard Biener
2024-05-13 14:26 Richard Biener

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20231006070647.4DF0E3857803@sourceware.org \
    --to=rguenth@gcc.gnu.org \
    --cc=gcc-cvs@gcc.gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).