From: Robin Dapp <rdapp.gcc@gmail.com>
To: gcc-patches <gcc-patches@gcc.gnu.org>
Cc: rdapp.gcc@gmail.com, "richard.sandiford" <richard.sandiford@arm.com>
Subject: [PATCH] gimple-match: Do not try UNCOND optimization with COND_LEN.
Date: Fri, 8 Sep 2023 11:01:45 +0200 [thread overview]
Message-ID: <4b77e155-0936-67d6-ab2d-ae7ef49bfde0@gmail.com> (raw)
Hi,
found in slp-reduc-7.c, this patch prevents optimizing e.g.
COND_LEN_ADD ({-1, ... }, a, 0, c, len, bias)
unconditionally into just "a".
Currently, we assume that COND_LEN operations can be optimized similarly
to COND operations. As the length is part of the mask (and usually not
compile-time constant), we must not perform any optimization that relies
on just the mask being "true".
Bootstrap and testsuite are unchanged on aarch64 and x86.
Regards
Robin
gcc/ChangeLog:
* gimple-match-exports.cc (maybe_resimplify_conditional_op):
Check for length masking.
---
gcc/gimple-match-exports.cc | 12 ++++++++----
1 file changed, 8 insertions(+), 4 deletions(-)
diff --git a/gcc/gimple-match-exports.cc b/gcc/gimple-match-exports.cc
index b36027b0bad..73be9f4f4c3 100644
--- a/gcc/gimple-match-exports.cc
+++ b/gcc/gimple-match-exports.cc
@@ -262,7 +262,8 @@ maybe_resimplify_conditional_op (gimple_seq *seq, gimple_match_op *res_op,
if (!res_op->cond.cond)
return false;
- if (!res_op->cond.else_value
+ if (!res_op->cond.len
+ && !res_op->cond.else_value
&& res_op->code.is_tree_code ())
{
/* The "else" value doesn't matter. If the "then" value is a
@@ -301,9 +302,12 @@ maybe_resimplify_conditional_op (gimple_seq *seq, gimple_match_op *res_op,
/* If the "then" value is a gimple value and the "else" value matters,
create a VEC_COND_EXPR between them, then see if it can be further
- simplified. */
+ simplified.
+ Don't do this if we have a COND_LEN_ as that would make us lose the
+ length masking. */
gimple_match_op new_op;
- if (res_op->cond.else_value
+ if (!res_op->cond.len
+ && res_op->cond.else_value
&& VECTOR_TYPE_P (res_op->type)
&& gimple_simplified_result_is_gimple_val (res_op))
{
@@ -314,7 +318,7 @@ maybe_resimplify_conditional_op (gimple_seq *seq, gimple_match_op *res_op,
return gimple_resimplify3 (seq, res_op, valueize);
}
- /* Otherwise try rewriting the operation as an IFN_COND_* call.
+ /* Otherwise try rewriting the operation as an IFN_COND_(LEN_)* call.
Again, this isn't a simplification in itself, since it's what
RES_OP already described. */
if (convert_conditional_op (res_op, &new_op))
--
2.41.0
next reply other threads:[~2023-09-08 9:01 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-09-08 9:01 Robin Dapp [this message]
2023-09-11 20:35 ` Robin Dapp
2023-09-18 10:22 ` Robin Dapp
2023-10-04 8:11 ` Robin Dapp
2023-10-12 13:53 ` Richard Sandiford
2023-10-12 14:19 ` Richard Sandiford
2023-10-13 15:50 ` Robin Dapp
2023-10-16 21:59 ` Richard Sandiford
2023-10-17 8:47 ` Richard Biener
2023-10-17 11:39 ` Robin Dapp
2023-10-17 13:35 ` Richard Sandiford
2023-10-17 15:42 ` Robin Dapp
2023-10-17 16:05 ` Richard Sandiford
[not found] ` <7e083b67-f283-4e9e-ba76-24e194fa1761@gmail.com>
[not found] ` <mptttqmny4u.fsf@arm.com>
2023-10-23 16:09 ` [PATCH] internal-fn: Add VCOND_MASK_LEN Robin Dapp
2023-10-24 21:50 ` Richard Sandiford
2023-10-25 19:59 ` Robin Dapp
2023-10-25 21:58 ` Richard Sandiford
2023-10-17 15:52 ` [PATCH] gimple-match: Do not try UNCOND optimization with COND_LEN Richard Sandiford
2023-10-17 0:47 juzhe.zhong
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=4b77e155-0936-67d6-ab2d-ae7ef49bfde0@gmail.com \
--to=rdapp.gcc@gmail.com \
--cc=gcc-patches@gcc.gnu.org \
--cc=richard.sandiford@arm.com \
/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).