From: Robin Dapp <rdapp.gcc@gmail.com>
To: "Li, Pan2" <pan2.li@intel.com>, 钟居哲 <juzhe.zhong@rivai.ai>
Cc: rdapp.gcc@gmail.com, "kito.cheng" <kito.cheng@sifive.com>,
gcc-patches <gcc-patches@gcc.gnu.org>,
"Wang, Yanzhang" <yanzhang.wang@intel.com>
Subject: Re: [PATCH v7] RISC-V: Support CALL for RVV floating-point dynamic rounding
Date: Wed, 26 Jul 2023 23:01:49 +0200 [thread overview]
Message-ID: <809594de-f00f-7229-820e-17b543e5de2a@gmail.com> (raw)
In-Reply-To: <MW5PR11MB5908FBB85E42DE7A0707D51EA900A@MW5PR11MB5908.namprd11.prod.outlook.com>
> I would like to propose that being focus and moving forward for this
> patch itself, the underlying other RVV floating point API support and
> the RVV instrinsic API fully tests depend on this.
Sorry, I didn't mean to ditch LCM/mode switching. I believe it is doing
a pretty good job and we should continue to use it. The changes in this
patch (and the ones before) seem to follow a certain plan but, at least
to me, it only became obvious with this last patch. We're already lost
in details when the fundamentals are not agreed upon yet. It would have
been easier to discuss (and quicker to "focus and move forward") if the
cover letter had already laid out the possible alternatives and their
respective pros and cons instead, even more so when many things depend
on it.
Still, three things:
(1) I'm fully on board with restoring the rounding mode after changing
it implicitly via an intrinsic (guess everybody is). This needs to be
done anyway and also implies a costly fsrm. "Forcing" it before a call
can most likely be treated like any other DYN instruction requiring the
"entry" rounding mode. Likewise restoring at function exit. The
placement of the necessary restores LCM can handle reasonably well.
(2) What I'm not entirely happy with is assuming that every function
call can _change_ the rounding mode and we always need to re-backup it.
I realize that it might be a necessary evil because all other options
are worse. Assuming no change through a call makes properly using
fesetround-like calls impossible as they would clobber our backup
register. This patch takes the approach to re-backup after every call.
As-is, wouldn't we also need to make sure that GCC knows that a call
clobbers the FRM (via clobber: (reg:SI 69 frm)) so we don't accidentally
move something beyond it?
(3) One other option I can think of is "localized" re-backup of the
FRM before each mode-changing intrinsic. That would result in
redundant save/restore insns around those than with the call proposal
and therefore likely worse. Whether that is relevant when the restore
is slow anyway might be debatable. Yet, it's not a given that storing
the FRM always is an in-order operation, it has just mostly been
that way historically. Another conceivable option (and maybe even
the right thing to do) would be special treatment, like a propagating
flag etc. for fesetround. That's common code and not likely to happen
or land soon, though.
Regards
Robin
next prev parent reply other threads:[~2023-07-26 21:01 UTC|newest]
Thread overview: 49+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-07-19 3:28 [PATCH v1] " pan2.li
2023-07-19 3:31 ` juzhe.zhong
2023-07-19 6:30 ` Li, Pan2
2023-07-20 6:43 ` [PATCH v4] " pan2.li
2023-07-20 6:47 ` juzhe.zhong
2023-07-21 3:11 ` juzhe.zhong
2023-07-21 6:44 ` Li, Pan2
2023-07-23 13:11 ` [PATCH v5] " pan2.li
2023-07-24 0:53 ` juzhe.zhong
2023-07-24 1:51 ` Li, Pan2
2023-07-24 2:45 ` Li, Pan2
2023-07-24 2:42 ` [PATCH v6] " pan2.li
2023-07-24 10:28 ` Robin Dapp
2023-07-24 11:59 ` Li, Pan2
2023-07-24 12:03 ` Li, Pan2
2023-07-25 5:51 ` [PATCH v7] " pan2.li
2023-07-25 6:07 ` Li, Pan2
2023-07-25 8:38 ` Robin Dapp
2023-07-25 11:53 ` Li, Pan2
2023-07-25 13:23 ` Kito Cheng
2023-07-25 14:12 ` Robin Dapp
2023-07-26 13:08 ` Robin Dapp
2023-07-26 21:40 ` Jeff Law
2023-07-26 22:21 ` 钟居哲
2023-07-26 22:46 ` Jeff Law
2023-07-26 22:56 ` 钟居哲
2023-07-27 1:38 ` Li, Pan2
2023-07-27 8:19 ` Li, Pan2
2023-07-27 2:09 ` Li, Pan2
2023-07-27 7:25 ` Robin Dapp
2023-07-27 8:26 ` Li, Pan2
2023-07-27 8:41 ` Robin Dapp
2023-07-27 10:27 ` Li, Pan2
[not found] ` <63471C6E126E44CF+D1CEA4C9-0050-43CD-8DE3-26EBD7AEE6DA@rivai.ai>
2023-07-26 13:35 ` Li, Pan2
2023-07-26 13:43 ` Li, Pan2
2023-07-26 13:46 ` Robin Dapp
2023-07-26 13:57 ` Kito Cheng
2023-07-26 14:05 ` Kito Cheng
2023-07-26 14:10 ` Robin Dapp
2023-07-26 14:18 ` 钟居哲
2023-07-26 14:30 ` Li, Pan2
2023-07-26 15:34 ` Kito Cheng
2023-07-26 16:00 ` Palmer Dabbelt
2023-07-26 21:01 ` Robin Dapp [this message]
2023-07-28 1:15 ` [PATCH v8] " pan2.li
2023-07-28 10:05 ` Robin Dapp
2023-07-28 12:34 ` Li, Pan2
2023-08-01 7:50 ` Kito Cheng
2023-08-01 8:00 ` Li, Pan2
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=809594de-f00f-7229-820e-17b543e5de2a@gmail.com \
--to=rdapp.gcc@gmail.com \
--cc=gcc-patches@gcc.gnu.org \
--cc=juzhe.zhong@rivai.ai \
--cc=kito.cheng@sifive.com \
--cc=pan2.li@intel.com \
--cc=yanzhang.wang@intel.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).