From: Richard Sandiford <richard.sandiford@arm.com>
To: Richard Biener <richard.guenther@gmail.com>
Cc: GCC Patches <gcc-patches@gcc.gnu.org>
Subject: Re: Remove redundant AND from count reduction loop
Date: Wed, 24 Jun 2015 11:29:00 -0000 [thread overview]
Message-ID: <87a8vps6p1.fsf@e105548-lin.cambridge.arm.com> (raw)
In-Reply-To: <CAFiYyc0_JiQSZ=M1NqZAaDgh6kYy_EXtpZp9cd2NJOtTG46ang@mail.gmail.com> (Richard Biener's message of "Wed, 24 Jun 2015 11:21:06 +0100")
Richard Biener <richard.guenther@gmail.com> writes:
>>> I'm fine with using tree_nop_conversion_p for now.
>>
>> I like the suggestion about checking TYPE_VECTOR_SUBPARTS and the element
>> mode. How about:
>>
>> (if (VECTOR_INTEGER_TYPE_P (type)
>> && TYPE_VECTOR_SUBPARTS (type) == TYPE_VECTOR_SUBPARTS (TREE_TYPE (@0))
>> && (TYPE_MODE (TREE_TYPE (type))
>> == TYPE_MODE (TREE_TYPE (TREE_TYPE (@0)))))
>>
>> (But is it really OK to be adding more mode-based compatibility checks?
>> I thought you were hoping to move away from modes in the middle end.)
>
> The TYPE_MODE check makes the VECTOR_INTEGER_TYPE_P check redundant
> (the type of a comparison is always a signed vector integer type).
OK, will just use VECTOR_TYPE_P then.
>>>>> +/* We could instead convert all instances of the vec_cond to negate,
>>>>> + but that isn't necessarily a win on its own. */
>>>
>>> so p ? 1 : 0 -> -p? Why isn't that a win on its own? It looks more compact
>>> at least ;) It would also simplify the patterns below.
>>
>> In the past I've dealt with processors where arithmetic wasn't handled
>> as efficiently as logical ops. Seems like an especial risk for 64-bit
>> elements, from a quick scan of the i386 scheduling models.
>
> But then expansion could undo this ...
So do the inverse fold and convert (neg (cond)) to (vec_cond cond 1 0)?
Is there precendent for doing that kind of thing?
>> I also realised later that:
>>
>> /* Vector comparisons are defined to produce all-one or all-zero results. */
>> (simplify
>> (vec_cond @0 integer_all_onesp@1 integer_zerop@2)
>> (if (tree_nop_conversion_p (type, TREE_TYPE (@0)))
>> (convert @0)))
>>
>> is redundant with some fold-const.c code.
>
> If so then you should remove the fold-const.c at the time you add the pattern.
Can I just drop that part of the patch instead? The fold-const.c
code handles COND_EXPR and VEC_COND_EXPR analogously, so I'd have
to move COND_EXPR at the same time. And then the natural follow-on
would be: why not move the other COND_EXPR and VEC_COND_EXPR folds too? :-)
> Note that ISTR code performing exactly the opposite transform in
> fold-const.c ...
That's another reason why I'm worried about just doing the (negate ...)
thing without knowing whether the negate can be folded into anything else.
Thanks,
Richard
next prev parent reply other threads:[~2015-06-24 11:10 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-06-23 15:42 Richard Sandiford
2015-06-23 21:36 ` Marc Glisse
2015-06-24 9:25 ` Richard Biener
2015-06-24 9:59 ` Richard Sandiford
2015-06-24 10:22 ` Richard Biener
2015-06-24 11:29 ` Richard Sandiford [this message]
2015-06-24 11:56 ` Richard Biener
2015-06-24 12:37 ` Richard Sandiford
2015-06-24 13:11 ` Richard Biener
2015-06-24 13:53 ` Richard Sandiford
2015-06-24 14:09 ` Richard Biener
2015-06-25 8:19 ` Richard Sandiford
2015-06-25 10:39 ` Richard Biener
2015-06-25 11:52 ` Richard Sandiford
2015-06-25 13:17 ` Richard Biener
2015-06-24 16:42 ` Jeff Law
2015-06-25 22:48 ` Marc Glisse
2015-06-26 9:59 ` Richard Biener
2015-06-28 14:09 ` Marc Glisse
2015-06-29 9:16 ` 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=87a8vps6p1.fsf@e105548-lin.cambridge.arm.com \
--to=richard.sandiford@arm.com \
--cc=gcc-patches@gcc.gnu.org \
--cc=richard.guenther@gmail.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).