From: "Andre Vieira (lists)" <andre.simoesdiasvieira@arm.com>
To: "Andre Vieira (lists) via Gcc-patches" <gcc-patches@gcc.gnu.org>,
Richard Biener <rguenther@suse.de>,
richard.sandiford@arm.com
Subject: Re: [AArch64] Enable generation of FRINTNZ instructions
Date: Wed, 29 Dec 2021 15:55:41 +0000 [thread overview]
Message-ID: <9d3755df-6c41-20e4-31fb-811e5cd9182a@arm.com> (raw)
In-Reply-To: <mptee6b8kpi.fsf@arm.com>
Hi Richard,
Thank you for the review, I've adopted all above suggestions downstream,
I am still surprised how many style things I still miss after years of
gcc development :(
On 17/12/2021 12:44, Richard Sandiford wrote:
>
>> @@ -3252,16 +3257,31 @@ vectorizable_call (vec_info *vinfo,
>> rhs_type = unsigned_type_node;
>> }
>>
>> - int mask_opno = -1;
>> + /* The argument that is not of the same type as the others. */
>> + int diff_opno = -1;
>> + bool masked = false;
>> if (internal_fn_p (cfn))
>> - mask_opno = internal_fn_mask_index (as_internal_fn (cfn));
>> + {
>> + if (cfn == CFN_FTRUNC_INT)
>> + /* For FTRUNC this represents the argument that carries the type of the
>> + intermediate signed integer. */
>> + diff_opno = 1;
>> + else
>> + {
>> + /* For masked operations this represents the argument that carries the
>> + mask. */
>> + diff_opno = internal_fn_mask_index (as_internal_fn (cfn));
>> + masked = diff_opno >= 0;
>> + }
>> + }
> I think it would be cleaner not to process argument 1 at all for
> CFN_FTRUNC_INT. There's no particular need to vectorise it.
I agree with this, will change the loop to continue for argument 1 when
dealing with non-masked CFN's.
>> }
>> […]
>> diff --git a/gcc/tree.c b/gcc/tree.c
>> index 845228a055b2cfac0c9ca8c0cda1b9df4b0095c6..f1e9a1eb48769cb11aa69730e2480ed5522f78c1 100644
>> --- a/gcc/tree.c
>> +++ b/gcc/tree.c
>> @@ -6645,11 +6645,11 @@ valid_constant_size_p (const_tree size, cst_size_error *perr /* = NULL */)
>> return true;
>> }
>>
>> -/* Return the precision of the type, or for a complex or vector type the
>> - precision of the type of its elements. */
>> +/* Return the type, or for a complex or vector type the type of its
>> + elements. */
>>
>> -unsigned int
>> -element_precision (const_tree type)
>> +tree
>> +element_type (const_tree type)
>> {
>> if (!TYPE_P (type))
>> type = TREE_TYPE (type);
>> @@ -6657,7 +6657,16 @@ element_precision (const_tree type)
>> if (code == COMPLEX_TYPE || code == VECTOR_TYPE)
>> type = TREE_TYPE (type);
>>
>> - return TYPE_PRECISION (type);
>> + return (tree) type;
> I think we should stick a const_cast in element_precision and make
> element_type take a plain “type”. As it stands element_type is an
> implicit const_cast for many cases.
>
> Thanks,
Was just curious about something here, I thought the purpose of having
element_precision (before) and element_type (now) take a const_tree as
an argument was to make it clear we aren't changing the input type. I
understand that as it stands element_type could be an implicit
const_cast (which I should be using rather than the '(tree)' cast), but
that's only if 'type' is a type that isn't complex/vector, either way,
we are conforming to the promise that we aren't changing the incoming
type, what the caller then does with the result is up to them no?
I don't mind making the changes, just trying to understand the reasoning
behind it.
I'll send in a new patch with all the changes after the review on the
match.pd stuff.
Thanks,
Andre
next prev parent reply other threads:[~2021-12-29 15:55 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-11-11 17:51 Andre Vieira (lists)
2021-11-12 10:56 ` Richard Biener
2021-11-12 11:48 ` Andre Simoes Dias Vieira
2021-11-16 12:10 ` Richard Biener
2021-11-17 13:30 ` Andre Vieira (lists)
2021-11-17 15:38 ` Richard Sandiford
2021-11-18 11:05 ` Richard Biener
2021-11-22 11:38 ` Andre Vieira (lists)
2021-11-22 11:41 ` Richard Biener
2021-11-25 13:53 ` Andre Vieira (lists)
2021-12-07 11:29 ` Andre Vieira (lists)
2021-12-17 12:44 ` Richard Sandiford
2021-12-29 15:55 ` Andre Vieira (lists) [this message]
2021-12-29 16:54 ` Richard Sandiford
2022-01-03 12:18 ` Richard Biener
2022-01-10 14:09 ` Andre Vieira (lists)
2022-01-10 14:45 ` Richard Biener
2022-01-14 10:37 ` Richard Sandiford
2022-11-04 17:40 ` Andre Vieira (lists)
2022-11-07 11:05 ` Richard Biener
2022-11-07 14:19 ` Andre Vieira (lists)
2022-11-07 14:56 ` Richard Biener
2022-11-09 11:33 ` Andre Vieira (lists)
2022-11-15 18:24 ` Richard Sandiford
2022-11-16 12:25 ` Richard Biener
2021-11-29 11:17 ` Andre Vieira (lists)
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=9d3755df-6c41-20e4-31fb-811e5cd9182a@arm.com \
--to=andre.simoesdiasvieira@arm.com \
--cc=gcc-patches@gcc.gnu.org \
--cc=rguenther@suse.de \
--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).