<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<style type="text/css" style="display:none;"> P {margin-top:0;margin-bottom:0;} </style>
</head>
<body dir="ltr">
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
<span style="margin:0px;font-size:12pt;caret-color:rgb(0, 0, 0);background-color:rgb(255, 255, 255)">Hi Kito,</span>
<blockquote style="font-family:"Segoe UI", "Segoe UI Web (West European)", "Segoe UI", -apple-system, BlinkMacSystemFont, Roboto, "Helvetica Neue", sans-serif;font-size:14px;background-color:rgb(255, 255, 255);border-left-width:3px;border-left-style:solid;border-color:rgb(200, 200, 200);padding-left:1ex;margin-left:0.8ex;color:rgb(102, 102, 102)">
<div style="margin:0px;font-family:Calibri, Arial, Helvetica, sans-serif;font-size:12pt;color:rgb(0, 0, 0)">
<span style="margin:0px;font-family:"Segoe UI", "Segoe UI Web (West European)", "Segoe UI", -apple-system, BlinkMacSystemFont, Roboto, "Helvetica Neue", sans-serif;font-size:15px;caret-color:rgb(0, 0, 0);background-color:rgb(255, 255, 255);display:inline !important">So
 what about if add a new command-line option, I saw Richard Sandiford has mentioned this but seems no follow up discussion for this point.</span><br>
</div>
</blockquote>
<div style="margin:0px;font-size:12pt;caret-color:rgb(0, 0, 0);background-color:rgb(255, 255, 255)">
<span style="margin:0px;font-family:"Segoe UI", "Segoe UI Web (West European)", "Segoe UI", -apple-system, BlinkMacSystemFont, Roboto, "Helvetica Neue", sans-serif;font-size:15px;caret-color:rgb(0, 0, 0);background-color:rgb(255, 255, 255);display:inline !important">Perhaps
 I shouldn't have mentioned this, but I believe this options is already there.<span class="Apple-converted-space"> </span><span style="margin:0px">🙂</span></span><span style="margin:0px;font-family:"Segoe UI", "Segoe UI Web (West European)", "Segoe UI", -apple-system, BlinkMacSystemFont, Roboto, "Helvetica Neue", sans-serif;font-size:15px">I
 think with cc1 option -fnative-half-type you'll get the behaviour that you want. </span><span style="font-family: "Segoe UI", "Segoe UI Web (West European)", "Segoe UI", -apple-system, BlinkMacSystemFont, Roboto, "Helvetica Neue", sans-serif; font-size: 15px;">But
 having said this, my vote is against documenting and defining that this is how __fp16 works. This results in non-portable and ACLE breaking code.</span></div>
<div style="margin:0px;font-size:12pt;caret-color:rgb(0, 0, 0);background-color:rgb(255, 255, 255)">
<span style="margin:0px;font-family:"Segoe UI", "Segoe UI Web (West European)", "Segoe UI", -apple-system, BlinkMacSystemFont, Roboto, "Helvetica Neue", sans-serif;font-size:15px;caret-color:rgb(0, 0, 0);background-color:rgb(255, 255, 255);display:inline !important"><br>
</span></div>
<div style="margin:0px;font-size:12pt;caret-color:rgb(0, 0, 0);background-color:rgb(255, 255, 255)">
<span style="margin:0px;font-family:"Segoe UI", "Segoe UI Web (West European)", "Segoe UI", -apple-system, BlinkMacSystemFont, Roboto, "Helvetica Neue", sans-serif;font-size:15px;caret-color:rgb(0, 0, 0);background-color:rgb(255, 255, 255);display:inline !important">And
 quoting from the original RFC, I want to reiterate that this looks to me like a very bad motivation to change __fp16 over here in Clang:</span></div>
<blockquote style="font-family:"Segoe UI", "Segoe UI Web (West European)", "Segoe UI", -apple-system, BlinkMacSystemFont, Roboto, "Helvetica Neue", sans-serif;font-size:14px;background-color:rgb(255, 255, 255);border-left-width:3px;border-left-style:solid;border-color:rgb(200, 200, 200);padding-left:1ex;margin-left:0.8ex;color:rgb(102, 102, 102)">
<div style="margin:0px;font-family:Calibri, Arial, Helvetica, sans-serif;font-size:12pt;color:rgb(0, 0, 0)">
<span style="margin:0px;font-family:"Segoe UI", "Segoe UI Web (West European)", "Segoe UI", -apple-system, BlinkMacSystemFont, Roboto, "Helvetica Neue", sans-serif;font-size:15px;caret-color:rgb(0, 0, 0);background-color:rgb(255, 255, 255);display:inline !important"><span style="margin:0px;font-family:"Segoe UI", "Segoe UI Emoji", "Segoe UI Symbol", Lato, "Helvetica Neue", Helvetica, Arial, sans-serif;font-size:13px;caret-color:rgb(0, 0, 0);background-color:rgb(255, 255, 255);display:inline !important">but</span><tt style="caret-color:rgb(0, 0, 0);font-size:13px;background-color:rgba(71, 87, 120, 0.14);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;padding:1px 4px;line-break:anywhere">_Float16</tt><span style="margin:0px;font-family:"Segoe UI", "Segoe UI Emoji", "Segoe UI Symbol", Lato, "Helvetica Neue", Helvetica, Arial, sans-serif;font-size:13px;caret-color:rgb(0, 0, 0);background-color:rgb(255, 255, 255);display:inline !important">has
 C++ supporting issues on GCC site</span></span></div>
</blockquote>
<div style="margin:0px;font-size:12pt;caret-color:rgb(0, 0, 0);background-color:rgb(255, 255, 255)">
<span style="margin:0px;font-family:"Segoe UI", "Segoe UI Web (West European)", "Segoe UI", -apple-system, BlinkMacSystemFont, Roboto, "Helvetica Neue", sans-serif;font-size:15px;caret-color:rgb(0, 0, 0);background-color:rgb(255, 255, 255);display:inline !important"><span style="margin:0px;font-family:"segoe ui", "segoe ui web (west european)", "segoe ui", -apple-system, blinkmacsystemfont, roboto, "helvetica neue", sans-serif;font-size:11.25pt;caret-color:rgb(0, 0, 0);background-color:rgb(255, 255, 255);display:inline !important">My
 alternative proposal is to fix this in GCC. This is something we want or need to fix anyway at some point, so I am guessing my Arm colleagues working on GCC would be happy to help here.</span></span></div>
<div style="margin:0px;font-size:12pt;caret-color:rgb(0, 0, 0);background-color:rgb(255, 255, 255)">
<span style="margin:0px;font-family:"Segoe UI", "Segoe UI Web (West European)", "Segoe UI", -apple-system, BlinkMacSystemFont, Roboto, "Helvetica Neue", sans-serif;font-size:15px;caret-color:rgb(0, 0, 0);background-color:rgb(255, 255, 255);display:inline !important"><span style="margin:0px;font-family:"segoe ui", "segoe ui web (west european)", "segoe ui", -apple-system, blinkmacsystemfont, roboto, "helvetica neue", sans-serif;font-size:11.25pt;caret-color:rgb(0, 0, 0);background-color:rgb(255, 255, 255);display:inline !important"><br>
</span></span></div>
<div style="margin:0px;font-size:12pt;caret-color:rgb(0, 0, 0);background-color:rgb(255, 255, 255)">
<span style="margin:0px;font-family:"Segoe UI", "Segoe UI Web (West European)", "Segoe UI", -apple-system, BlinkMacSystemFont, Roboto, "Helvetica Neue", sans-serif;font-size:15px;caret-color:rgb(0, 0, 0);background-color:rgb(255, 255, 255);display:inline !important"><span style="margin:0px;font-family:"segoe ui", "segoe ui web (west european)", "segoe ui", -apple-system, blinkmacsystemfont, roboto, "helvetica neue", sans-serif;font-size:11.25pt;caret-color:rgb(0, 0, 0);background-color:rgb(255, 255, 255);display:inline !important">Cheers,</span></span></div>
<span style="margin:0px;font-size:12pt;caret-color:rgb(0, 0, 0);background-color:rgb(255, 255, 255)"><span style="margin:0px;font-family:"Segoe UI", "Segoe UI Web (West European)", "Segoe UI", -apple-system, BlinkMacSystemFont, Roboto, "Helvetica Neue", sans-serif;font-size:15px;caret-color:rgb(0, 0, 0);background-color:rgb(255, 255, 255);display:inline !important"><span style="margin:0px;font-family:"segoe ui", "segoe ui web (west european)", "segoe ui", -apple-system, blinkmacsystemfont, roboto, "helvetica neue", sans-serif;font-size:11.25pt;caret-color:rgb(0, 0, 0);background-color:rgb(255, 255, 255);display:inline !important">Sjoerd.</span></span></span><br>
</div>
<div id="appendonsend"></div>
<hr style="display:inline-block;width:98%" tabindex="-1">
<div id="divRplyFwdMsg" dir="ltr"><font face="Calibri, sans-serif" style="font-size:11pt" color="#000000"><b>From:</b> Kito Cheng <kito.cheng@sifive.com><br>
<b>Sent:</b> 09 March 2021 09:08<br>
<b>To:</b> Sjoerd Meijer <Sjoerd.Meijer@arm.com><br>
<b>Cc:</b> Evandro Menezes <evandro.menezes@sifive.com>; Craig Topper <craig.topper@sifive.com>; Yi-Hsiu Hsu <yihsiu.hsu@sifive.com>; Kai Wang <kai.wang@sifive.com>; Zakk Chen <zakk.chen@sifive.com>; cfe-dev@lists.llvm.org <cfe-dev@lists.llvm.org><br>
<b>Subject:</b> Re: [cfe-dev] [RFC] Having different behavior for __fp16 on RISC-V</font>
<div> </div>
</div>
<div>
<div dir="ltr">
<div dir="ltr">Hi Sjoerd:
<div><br>
</div>
</div>
<br>
<div class="x_gmail_quote">
<div dir="ltr" class="x_gmail_attr">On Mon, Mar 8, 2021 at 5:37 PM Sjoerd Meijer <<a href="mailto:Sjoerd.Meijer@arm.com" target="_blank">Sjoerd.Meijer@arm.com</a>> wrote:<br>
</div>
<blockquote class="x_gmail_quote" style="margin:0px 0px 0px 0.8ex; border-left:1px solid rgb(204,204,204); padding-left:1ex">
<div dir="ltr">
<div style="font-family:Calibri,Arial,Helvetica,sans-serif; font-size:12pt; color:rgb(0,0,0)">
Hello Kito,</div>
<div style="font-family:Calibri,Arial,Helvetica,sans-serif; font-size:12pt; color:rgb(0,0,0)">
<br>
</div>
<div style="font-family:Calibri,Arial,Helvetica,sans-serif; font-size:12pt; color:rgb(0,0,0)">
Let me also first backup a little bit by saying that we want the same thing: a half-type that maps efficiently to modern hardware. But by definition, __fp16 isn't that type.</div>
</div>
</blockquote>
<div><br>
</div>
<div>Yes, I believe we are on the same page for this.</div>
<div><br>
</div>
<div> </div>
<blockquote class="x_gmail_quote" style="margin:0px 0px 0px 0.8ex; border-left:1px solid rgb(204,204,204); padding-left:1ex">
<div dir="ltr">
<div style="font-family:Calibri,Arial,Helvetica,sans-serif; font-size:12pt; color:rgb(0,0,0)">
There are different alternatives here: try changing the semantics of an existing type, or adoption of a proper half type. <span style="color:rgb(0,0,0); font-family:Calibri,Arial,Helvetica,sans-serif; font-size:12pt">Your proposal is problematic on different
 levels: i) changing the behaviour of an existing type, and ii) only do that for some targets. Your arguments that __fp16 is widely used and is thus convenient is problematic for i) because of the change in behaviour/expectations, and ii) a type that behaves
 differently on different targets will be a source of confusion and non-portability. Thus, I don't see how your narrow proposal to change the type for only some targets is going to be more acceptable than e.g. changing it for all targets.  </span><span style="color:rgb(0,0,0); font-family:Calibri,Arial,Helvetica,sans-serif; font-size:12pt">We
 actually have discussed changing the semantics of __16 recently:</span></div>
<div style="font-family:Calibri,Arial,Helvetica,sans-serif; font-size:12pt; color:rgb(0,0,0)">
<a href="https://lists.llvm.org/pipermail/cfe-dev/2020-December/067343.html" id="x_m_7995761465860581877m_-5387145978463008404m_-4750494524860872023gmail-m_4750271967371424103LPlnk144542" target="_blank">https://lists.llvm.org/pipermail/cfe-dev/2020-December/067343.html</a></div>
</div>
</blockquote>
<div><br>
</div>
<div>Thanks for providing this link, it's a really great conversation there, one major reason I purpose for changing the behavior of some target (or more specific, RISC-V only at this moment) is because I know there is ACLE spec for ARM and AArch64, I think
 it's not reasonable to change the behavior of all other target especially for ARM/AArch64. </div>
<div><br>
</div>
<div>So what about if add a new command-line option, I saw Richard Sandiford has mentioned this but seems no follow up discussion for this point.</div>
<div><br>
</div>
<div> </div>
<blockquote class="x_gmail_quote" style="margin:0px 0px 0px 0.8ex; border-left:1px solid rgb(204,204,204); padding-left:1ex">
<div dir="ltr">
<div style="font-family:Calibri,Arial,Helvetica,sans-serif; font-size:12pt; color:rgb(0,0,0)">
<span style="font-size:12pt">There you'll see some pros/cons of doing this. But changing semantics is always going to have cons that will be awkward and there isn't going to be a really solution. That's why we are now taking the approach to deprecate __fp16.</span><br>
</div>
<div style="font-family:Calibri,Arial,Helvetica,sans-serif; font-size:12pt; color:rgb(0,0,0)">
<br>
</div>
<div style="font-family:Calibri,Arial,Helvetica,sans-serif; font-size:12pt; color:rgb(0,0,0)">
To briefly comment on some your remarks:</div>
<div style="font-family:Calibri,Arial,Helvetica,sans-serif; font-size:12pt; color:rgb(0,0,0)">
<ul>
<li><span>You argue that there is a "standardisation gap" for _Float16, but that's why it is interesting that you end up advocating for __fp16, for which that gap is even bigger as it is a non-standard type.</span> </li></ul>
</div>
</div>
</blockquote>
<blockquote class="x_gmail_quote" style="margin:0px 0px 0px 0.8ex; border-left:1px solid rgb(204,204,204); padding-left:1ex">
<div dir="ltr">
<div style="font-family:Calibri,Arial,Helvetica,sans-serif; font-size:12pt; color:rgb(0,0,0)">
<ul>
<li><span>In Clang, _Float16 is defined in both C and C++ mode for the targets that support this type.</span></li><li><span>C++ mangling is defined for _Float16. It isn't indeed for the other interchange types. But I don't see that as a fundamental problem.</span></li><li><span><span style="text-align:start; background-color:rgb(255,255,255); display:inline">I don't think your codegen example is representative: this is 1 addition that indeed avoids the up and down conversions. And while for some cases optimisations are possible,
 if you start looking at some bigger code examples that becomes more challenging, if possible at all in all cases, and it is all work and thing we can or should avoid.</span><br>
</span></li></ul>
<div>The way forward is a native half type, which is _Float16. And what we need to work on is support for it in GCC, which has to happen sooner or later I guess. And yes, there might also be some more standardisation/implementation work to do for _Float16.</div>
</div>
</div>
</blockquote>
<blockquote class="x_gmail_quote" style="margin:0px 0px 0px 0.8ex; border-left:1px solid rgb(204,204,204); padding-left:1ex">
<div dir="ltr">
<div>
<div>
<blockquote style="margin:0px 0px 0px 0.8ex; border-left:1px solid rgb(204,204,204); padding-left:1ex">
<div dir="ltr">
<div dir="ltr">
<div>
<div dir="ltr">
<div>
<div dir="ltr">
<div>
<div></div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</blockquote>
</div>
</div>
</div>
</blockquote>
</div>
</div>
</div>
</body>
</html>