public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
From: "jakub at gcc dot gnu.org" <gcc-bugzilla@gcc.gnu.org>
To: gcc-bugs@gcc.gnu.org
Subject: [Bug target/94567] [10 Regression] wrong code at -O2 and -O3 on x86_64-linux-gnu
Date: Wed, 15 Apr 2020 17:48:32 +0000	[thread overview]
Message-ID: <bug-94567-4-tGoPXriBqW@http.gcc.gnu.org/bugzilla/> (raw)
In-Reply-To: <bug-94567-4@http.gcc.gnu.org/bugzilla/>

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

--- Comment #12 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
(In reply to Jeffrey A. Law from comment #11)
> Rather than extending that hack, I think just widening the mode when the
> sign bit is being tested (c#5) is simpler and easier to understand.  The
> bits you're changing should be killed rather than extended to handle more
> cases.

That is not a hack.  x86_64 doesn't have an instruction that ands a 64-bit
reg/mem with a 32-bit zero extended immediate (nor 64-bit immediate), so when
we want to use reg against 32-bit zero extended, we need to use 32-bit
instruction and that has different behavior for the SF, so we must ensure we
don't care about that most significant bit.

Now for these other cases, perhaps we could instead user wider mode if
possible, but it isn't possible always.
So, combine my patch with the last condition changed into >= 32 from
== GET_MODE (operands[2]) and then apply what you have in #c5, but with
hardcoded SImode instead of wider mode - we want to avoid introducing HImode
stuff when there wasn't before, it is both larger and slower - and only do it
if GET_MODE (operands[0]) isn't CCZmode.
If pos + len >= 32, such in the pos + len == 64 special case where we turn
testing bits pos (< 32) up to most significant into a testq which has that
sign-extended 32-bit immediate, then the pattern before splitting would have
always SF zero (unless pos is 0) but split pattern would always copy there the
MSB of the 64-bit register.

  parent reply	other threads:[~2020-04-15 17:48 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-04-12  2:49 [Bug tree-optimization/94567] New: " qrzhang at gatech dot edu
2020-04-14  6:41 ` [Bug rtl-optimization/94567] [10 Regression] " marxin at gcc dot gnu.org
2020-04-14 11:28 ` law at redhat dot com
2020-04-14 11:45 ` [Bug target/94567] " rguenth at gcc dot gnu.org
2020-04-14 11:48 ` rguenth at gcc dot gnu.org
2020-04-14 11:59 ` law at redhat dot com
2020-04-14 12:45 ` rguenth at gcc dot gnu.org
2020-04-14 13:20 ` law at redhat dot com
2020-04-15  9:57 ` rguenth at gcc dot gnu.org
2020-04-15 16:57 ` jakub at gcc dot gnu.org
2020-04-15 17:10 ` jakub at gcc dot gnu.org
2020-04-15 17:14 ` law at redhat dot com
2020-04-15 17:48 ` jakub at gcc dot gnu.org [this message]
2020-04-15 23:12 ` law at redhat dot com
2020-04-16 12:30 ` jakub at gcc dot gnu.org
2020-04-16 22:45 ` law at redhat dot com
2020-04-17 14:58 ` cvs-commit at gcc dot gnu.org
2020-04-17 15:11 ` 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-94567-4-tGoPXriBqW@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).