From: Jiufu Guo <guojiufu@linux.ibm.com>
To: Segher Boessenkool <segher@kernel.crashing.org>
Cc: gcc-patches@gcc.gnu.org, dje.gcc@gmail.com, linkw@gcc.gnu.org
Subject: Re: [PATCH V6] rs6000: Optimize cmp on rotated 16bits constant
Date: Mon, 19 Dec 2022 22:10:04 +0800 [thread overview]
Message-ID: <7e1qoviiwz.fsf@pike.rch.stglabs.ibm.com> (raw)
In-Reply-To: <20221216203635.GF25951@gate.crashing.org> (Segher Boessenkool's message of "Fri, 16 Dec 2022 14:36:35 -0600")
Hi,
Segher Boessenkool <segher@kernel.crashing.org> writes:
> On Wed, Dec 14, 2022 at 04:26:54PM +0800, Jiufu Guo wrote:
>> Segher Boessenkool <segher@kernel.crashing.org> writes:
>> > On Mon, Aug 29, 2022 at 11:42:16AM +0800, Jiufu Guo wrote:
>> >> li %r9,-1
>> >> rldicr %r9,%r9,0,0
>> >> cmpd %cr0,%r3,%r9
>> >
>> > FWIW, I find the winnt assembler syntax very hard to read, and I doubt
>> > I am the only one.
>> Oh, sorry about that. I will avoid to add '-mregnames' to dump asm. :)
>> BTW, what options are you used to dump asm code?
>
> The same as GCC outputs, and as I write assembler code as: bare numbers.
> It is much easier to type, and very much easier to read.
>
> -mregnames is fine for output (and it is the default as well), but
> problematic for input. Take for example
> li r10,r10
> which translates to
> li 10,10
> while what was probably wanted is to load the address of the global
> symbol r10, which can be written as
> li r10,(r10)
>
> I do understand that liking the bare numbers syntax is an acquired taste
> of course. But less clutter is very useful. This goes hand in hand
> with writing multiple asm statements per line, which allows you to group
> things together nicely:
> li 9,-1 ; rldicr 9,9,0,0 ; cmpd 3,9
>
Great! Thanks for your helpful comments!
>> > Maybe it is better to not return magic values anyway? So perhaps
>> >
>> > bool
>> > can_be_done_as_compare_of_rotate (unsigned HOST_WIDE_INT c, int clz, int *rot)
>> >
>> > (with *rot written if the return value is true).
>> Thanks for your suggestion!
>> It is checking if a constant can be rotated from/to a value which has
>> only few tailing nonzero bits (all leading bits are zeros).
>>
>> So, I'm thinking to name the function as something like:
>> can_be_rotated_to_lowbits.
>
> That is a good name yeah.
>
>> >> +bool
>> >> +compare_rotate_immediate_p (unsigned HOST_WIDE_INT c)
>> >
>> > No _p please, this function is not a predicate (at least, the name does
>> > not say what it tests). So a better name please. This matters even
>> > more for extern functions (like this one) because the function
>> > implementation is always farther away so you do not easily have all
>> > interface details in mind. Good names help :-)
>> Thanks! Name is always a matter. :)
>>
>> Maybe we can name this funciton as "can_be_rotated_as_compare_operand",
>> or "is_constant_rotateable_for_compare", because this function checks
>> "if a constant can be rotated to/from an immediate operand of
>> cmpdi/cmpldi".
>
> Maybe just "constant_can_be_rotated_to_lowbits"? (If that is what the
> function does). It doesn't clearly say that it allows negative numbers
> as well, but that is a problem of the function itself already; maybe it
> would be better to do signed and unsigned separately.
It makes sense. I updated a new version patch.
>
>> >> +(define_code_iterator eqne [eq ne])
>> >> +(define_code_attr EQNE [(eq "EQ") (ne "NE")])
>> >
>> > Just <CODE> or <CODE:eqne> should work?
>> Great! Thanks for point out this! <eqne:CODE> works.
>> >
>> > Please fix these things. Almost there :-)
>>
>> I updated the patch as below. Bootstraping and regtesting is ongoing.
>> Thanks again for your careful and insight review!
>
> Please send as new message (not as reply even), that is much easier to
> handle. Thanks!
Sure, I just submit a new patch version.
https://gcc.gnu.org/pipermail/gcc-patches/2022-December/608765.html
Thanks a lot for your review.
BR,
Jeff (Jiufu)
>
>
> Segher
prev parent reply other threads:[~2022-12-19 14:11 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-08-29 3:42 Jiufu Guo
2022-09-15 7:35 ` Ping: " Jiufu Guo
2022-10-12 6:42 ` Ping^2: " Jiufu Guo
2022-11-09 3:01 ` Ping^3: " Jiufu Guo
2022-12-02 2:45 ` Ping^4: " Jiufu Guo
2022-12-13 3:49 ` Ping^5: " Jiufu Guo
2022-12-13 21:02 ` Segher Boessenkool
2022-12-14 8:26 ` Jiufu Guo
2022-12-15 2:28 ` Jiufu Guo
2022-12-16 20:36 ` Segher Boessenkool
2022-12-19 14:10 ` Jiufu Guo [this message]
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=7e1qoviiwz.fsf@pike.rch.stglabs.ibm.com \
--to=guojiufu@linux.ibm.com \
--cc=dje.gcc@gmail.com \
--cc=gcc-patches@gcc.gnu.org \
--cc=linkw@gcc.gnu.org \
--cc=segher@kernel.crashing.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).