public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug tree-optimization/111133] New: SLP of scatters not implemented
@ 2023-08-24 13:10 rguenth at gcc dot gnu.org
  2023-11-08 12:17 ` [Bug tree-optimization/111133] " rguenth at gcc dot gnu.org
                   ` (2 more replies)
  0 siblings, 3 replies; 4+ messages in thread
From: rguenth at gcc dot gnu.org @ 2023-08-24 13:10 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111133

            Bug ID: 111133
           Summary: SLP of scatters not implemented
           Product: gcc
           Version: 14.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: tree-optimization
          Assignee: unassigned at gcc dot gnu.org
          Reporter: rguenth at gcc dot gnu.org
  Target Milestone: ---

There is no scatter support for (single-lane) SLP.  For example

#define N 16

void __attribute__((noipa))
f (float *restrict y, float *restrict x, int *restrict indices)
{
  for (int i = 0; i < N; ++i)
    {
      x[indices[i * 2]] = y[i * 2] + 1;
      x[indices[i * 2 + 1]] = y[i * 2 + 1] + 2;
    }
}

doesn't vectorize.  Note this is also due to

t.c:6:21: note:   === vect_analyze_data_ref_dependences ===
t.c:8:25: missed:   possible alias involving gather/scatter between *_10 and
*_20
t.c:6:21: missed:  bad data dependence.

but with SLP scatters guarantee left-to-right commit so that shouldn't
be an issue there and also shows why SLP is even required for this
to vectorize.

^ permalink raw reply	[flat|nested] 4+ messages in thread

* [Bug tree-optimization/111133] SLP of scatters not implemented
  2023-08-24 13:10 [Bug tree-optimization/111133] New: SLP of scatters not implemented rguenth at gcc dot gnu.org
@ 2023-11-08 12:17 ` rguenth at gcc dot gnu.org
  2023-11-09 12:59 ` cvs-commit at gcc dot gnu.org
  2023-11-09 13:00 ` [Bug tree-optimization/111133] multi-lane " rguenth at gcc dot gnu.org
  2 siblings, 0 replies; 4+ messages in thread
From: rguenth at gcc dot gnu.org @ 2023-11-08 12:17 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111133

Richard Biener <rguenth at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
     Ever confirmed|0                           |1
   Last reconfirmed|                            |2023-11-08
             Status|UNCONFIRMED                 |NEW

--- Comment #1 from Richard Biener <rguenth at gcc dot gnu.org> ---
With

#pragma GCC ivdep

the dependence issue is gone but we are not grouping gathers/scatters in
vect_analyze_data_ref_accesses.  Technically those are not "groups",
we wouldn't know how to set gap/size.

So to SLP scatters we'd need to optimistically perform SLP discovery on
"all" of them (or likely more successful, start greedy discovery from
the offset or the stored data side, aka from loads).  Eventually handled
when SLP discovery is rewritten.

For now priority #1 is to get single-lane discovery work for scatters.

^ permalink raw reply	[flat|nested] 4+ messages in thread

* [Bug tree-optimization/111133] SLP of scatters not implemented
  2023-08-24 13:10 [Bug tree-optimization/111133] New: SLP of scatters not implemented rguenth at gcc dot gnu.org
  2023-11-08 12:17 ` [Bug tree-optimization/111133] " rguenth at gcc dot gnu.org
@ 2023-11-09 12:59 ` cvs-commit at gcc dot gnu.org
  2023-11-09 13:00 ` [Bug tree-optimization/111133] multi-lane " rguenth at gcc dot gnu.org
  2 siblings, 0 replies; 4+ messages in thread
From: cvs-commit at gcc dot gnu.org @ 2023-11-09 12:59 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111133

--- Comment #2 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Richard Biener <rguenth@gcc.gnu.org>:

https://gcc.gnu.org/g:fd8e5f3c430f37c99ddcc00fcafc1a12b3475a3a

commit r14-5280-gfd8e5f3c430f37c99ddcc00fcafc1a12b3475a3a
Author: Richard Biener <rguenther@suse.de>
Date:   Wed Nov 8 13:14:59 2023 +0100

    Refactor x86 decl based scatter vectorization, prepare SLP

    The following refactors the x86 decl based scatter vectorization
    similar to what I did to the gather path.  This prepares scatters
    for SLP as well, mainly single-lane since there are multiple
    missing bits to support multi-lane scatters.

    Tested extensively on the SLP-only branch which has the ability
    to force SLP even for single lanes.

            PR tree-optimization/111133
            * tree-vect-stmts.cc (vect_build_scatter_store_calls):
            Remove and refactor to ...
            (vect_build_one_scatter_store_call): ... this new function.
            (vectorizable_store): Use vect_check_scalar_mask to record
            the SLP node for the mask operand.  Code generate scatters
            with builtin decls from the main scatter vectorization
            path and prepare that for SLP.
            * tree-vect-slp.cc (vect_get_operand_map): Do not look
            at the VDEF to decide between scatter or gather since that
            doesn't work for patterns.  Use the LHS being an SSA_NAME
            or not instead.

^ permalink raw reply	[flat|nested] 4+ messages in thread

* [Bug tree-optimization/111133] multi-lane SLP of scatters not implemented
  2023-08-24 13:10 [Bug tree-optimization/111133] New: SLP of scatters not implemented rguenth at gcc dot gnu.org
  2023-11-08 12:17 ` [Bug tree-optimization/111133] " rguenth at gcc dot gnu.org
  2023-11-09 12:59 ` cvs-commit at gcc dot gnu.org
@ 2023-11-09 13:00 ` rguenth at gcc dot gnu.org
  2 siblings, 0 replies; 4+ messages in thread
From: rguenth at gcc dot gnu.org @ 2023-11-09 13:00 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111133

Richard Biener <rguenth at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
            Summary|SLP of scatters not         |multi-lane SLP of scatters
                   |implemented                 |not implemented

--- Comment #3 from Richard Biener <rguenth at gcc dot gnu.org> ---
Single-lane SLP scatters now work (well, verified on x86 sofar).

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2023-11-09 13:00 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-08-24 13:10 [Bug tree-optimization/111133] New: SLP of scatters not implemented rguenth at gcc dot gnu.org
2023-11-08 12:17 ` [Bug tree-optimization/111133] " rguenth at gcc dot gnu.org
2023-11-09 12:59 ` cvs-commit at gcc dot gnu.org
2023-11-09 13:00 ` [Bug tree-optimization/111133] multi-lane " rguenth at gcc dot gnu.org

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).