public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
From: "rguenth at gcc dot gnu.org" <gcc-bugzilla@gcc.gnu.org>
To: gcc-bugs@gcc.gnu.org
Subject: [Bug tree-optimization/104582] [11/12 Regression] Unoptimal code for __negdi2 (and others) from libgcc2 due to unwanted vectorization
Date: Fri, 18 Feb 2022 07:26:56 +0000	[thread overview]
Message-ID: <bug-104582-4-8bg2k0ju9E@http.gcc.gnu.org/bugzilla/> (raw)
In-Reply-To: <bug-104582-4@http.gcc.gnu.org/bugzilla/>

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

--- Comment #7 from Richard Biener <rguenth at gcc dot gnu.org> ---
(In reply to Jakub Jelinek from comment #5)
> The costs look weird:
> _1 1 times scalar_store costs 12 in body
> _5 1 times scalar_store costs 12 in body
> _1 1 times vector_store costs 12 in body
> <unknown> 1 times vec_construct costs 8 in prologue
> vec_construct is certainly more expensive than a store (especially in this
> case when it is a store into a TImode variable which isn't addressable and
> will not be in memory at all).

x86 can do cheap move low/hi so the construct isn't expensive.  Note
it only gets expensive in the end because the "memory" isn't really memory
and the return ABI isn't exposed.

Just as a wild idea, maybe we can pessimize vector stores into
!TREE_ADDRESSABLE automatic variables ...

We do already have some "weird" code in vect_model_store_cost employing
hard_function_value to deal with stores to RESULT_DECLs, but here 'w'
isn't a RESULT_DECL.  In the code we assume what happens happens, spill
of the vector and loads of the components.

What's missing in the CTOR cost is the move from GPR to XMM regs when
we are not dealing with FP or vector components (or direct memory
sources).  Getting that applied only for relevant cases isn't easy
since it requires looking at the defs.

One could try to amend the vect_model_store_cost handling by at the
beginning of the SLP pass analyze stmts from the function return,
marking decls we return a loaded value from in some way and handle
that in a similar way.

  parent reply	other threads:[~2022-02-18  7:26 UTC|newest]

Thread overview: 27+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-02-17 12:30 [Bug target/104582] New: Unoptimal code for __negdi2 (and others) from libgcc2 ubizjak at gmail dot com
2022-02-17 12:35 ` [Bug tree-optimization/104582] " ubizjak at gmail dot com
2022-02-17 12:45 ` ubizjak at gmail dot com
2022-02-17 15:28 ` [Bug tree-optimization/104582] [11/12 Regression] Unoptimal code for __negdi2 (and others) from libgcc2 due to unwanted vectorization jakub at gcc dot gnu.org
2022-02-17 16:35 ` jakub at gcc dot gnu.org
2022-02-17 16:40 ` jakub at gcc dot gnu.org
2022-02-18  0:43 ` pinskia at gcc dot gnu.org
2022-02-18  7:26 ` rguenth at gcc dot gnu.org [this message]
2022-02-18  8:37 ` jakub at gcc dot gnu.org
2022-02-18  8:48 ` rguenth at gcc dot gnu.org
2022-02-18  8:53 ` rguenth at gcc dot gnu.org
2022-02-18  9:02 ` jakub at gcc dot gnu.org
2022-02-18  9:28 ` rguenther at suse dot de
2022-02-18 10:19 ` rguenth at gcc dot gnu.org
2022-02-18 10:22 ` rguenth at gcc dot gnu.org
2022-02-18 10:50 ` rguenth at gcc dot gnu.org
2022-02-18 11:31 ` rguenth at gcc dot gnu.org
2022-02-18 13:37 ` rguenth at gcc dot gnu.org
2022-02-18 13:45 ` rguenth at gcc dot gnu.org
2022-02-18 21:16 ` pinskia at gcc dot gnu.org
2022-02-22  7:58 ` cvs-commit at gcc dot gnu.org
2022-02-22  7:59 ` cvs-commit at gcc dot gnu.org
2022-02-22  7:59 ` cvs-commit at gcc dot gnu.org
2022-02-22  7:59 ` [Bug tree-optimization/104582] [11 " rguenth at gcc dot gnu.org
2022-04-07  8:15 ` rguenth at gcc dot gnu.org
2022-04-21  7:51 ` rguenth at gcc dot gnu.org
2023-05-29 10:06 ` jakub at gcc dot gnu.org

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=bug-104582-4-8bg2k0ju9E@http.gcc.gnu.org/bugzilla/ \
    --to=gcc-bugzilla@gcc.gnu.org \
    --cc=gcc-bugs@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).