<div dir="ltr">Hi Sjoerd:<br>Thanks your reply, and apologize that I didn't tell the full story behind this RFC:<br><br>- Ideally the `short float` is one of candidates of half precision types, but it seems far from<br>  the way to standardize for including that in C or C++ std, so we didn’t go this way.<br><br>- There is reason why we don't using _Float16 as RISC-V's proposal<br>  - _Float16 is belong with ISO/IEC TS 18661-3, which might included in C2X, but<br>    not belong any C++ std yet, and the spec also didn't mention anything about C++ part,<br>    however ISO/IEC TS 18661-3 also contain other interchange types and extended types<br>    like _Float32_t, _Float32x_t, _Float64_t, _Float64x_t...and there is NO C++ document for<br>    mangling rule of those types, so we would like to prevent to made this global<br>    change in GCC side.<br>  - Default promotion rule is also one of our concerns, _Float16_t won't be promoted to double,<br>    which is inconvenient for users, esp. for printf.<br><br>- The reason why we choose `__fp16` as the type name:<br>  - One major reason is __fp16 is widely used in this world rather than _Float16.<br><br>-  Why do we decide to have different behavior?<br>  - We would like to default fully utilized hardware capability - if there is half-precision<br>    then use it as possible.<br>  - We found some interesting things on __fp16 code gen behavior - native half-precision<br>    instruction still might be generated when optimization is enabled, so why not<div>    generated by default?<br>     * Code gen for __fp16 fadd16 (__fp16 a, __fp16 b) { return a + b; }  <a href="https://godbolt.org/z/3dasK9">https://godbolt.org/z/3dasK9</a><br><br><br>Thanks.<br class="gmail-Apple-interchange-newline"></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Fri, Mar 5, 2021 at 8:04 PM Sjoerd Meijer <<a href="mailto:Sjoerd.Meijer@arm.com">Sjoerd.Meijer@arm.com</a>> wrote:<br></div><blockquote class="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)">
And to add one more thought to this, I am actually working on deprecating __fp16 because there should be no good use case for it anymore with _Float16. This means that we will deprecate the type in the ACLE, it should give a warning when it is used, and eventually
 we would like to remove it in favour of _Float16. It also means that GCC would have to support _Float16. Deprecating __fp16 is work in progress but just wanted to illustrate the direction of travel.</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)">
Cheers,</div>
<div style="font-family:Calibri,Arial,Helvetica,sans-serif;font-size:12pt;color:rgb(0,0,0)">
Sjoerd.<br>
</div>
<div id="gmail-m_5210996219289994847appendonsend"></div>
<hr style="display:inline-block;width:98%">
<div id="gmail-m_5210996219289994847divRplyFwdMsg" dir="ltr"><font face="Calibri, sans-serif" style="font-size:11pt" color="#000000"><b>From:</b> cfe-dev <<a href="mailto:cfe-dev-bounces@lists.llvm.org" target="_blank">cfe-dev-bounces@lists.llvm.org</a>> on behalf of Sjoerd Meijer via cfe-dev <<a href="mailto:cfe-dev@lists.llvm.org" target="_blank">cfe-dev@lists.llvm.org</a>><br>
<b>Sent:</b> 05 March 2021 11:53<br>
<b>To:</b> Evandro Menezes <<a href="mailto:evandro.menezes@sifive.com" target="_blank">evandro.menezes@sifive.com</a>>; Craig Topper <<a href="mailto:craig.topper@sifive.com" target="_blank">craig.topper@sifive.com</a>>; Yi-Hsiu Hsu <<a href="mailto:yihsiu.hsu@sifive.com" target="_blank">yihsiu.hsu@sifive.com</a>>; Kai Wang <<a href="mailto:kai.wang@sifive.com" target="_blank">kai.wang@sifive.com</a>>; Zakk Chen <<a href="mailto:zakk.chen@sifive.com" target="_blank">zakk.chen@sifive.com</a>>; <a href="mailto:cfe-dev@lists.llvm.org" target="_blank">cfe-dev@lists.llvm.org</a> <<a href="mailto:cfe-dev@lists.llvm.org" target="_blank">cfe-dev@lists.llvm.org</a>>; Kito Cheng
 <<a href="mailto:kito.cheng@sifive.com" target="_blank">kito.cheng@sifive.com</a>><br>
<b>Subject:</b> Re: [cfe-dev] [RFC] Having different behavior for __fp16 on RISC-V</font>
<div> </div>
</div>

<div dir="ltr">
<div style="font-family:Calibri,Arial,Helvetica,sans-serif;font-size:12pt;color:rgb(0,0,0)">
Sorry, I noticed the patch first and left a comment there.</div>
<div style="font-family:Calibri,Arial,Helvetica,sans-serif;font-size:12pt;color:rgb(0,0,0)">
But repeating what I wrote there: you're redefining an existing type to behave as another type, but only for some targets. I think this is problematic and not going to help anyone. Your motivation is that the type you would like to use is not supported by GCC,
 but that seems like the proper fix to me. <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)">
Cheers,</div>
<div style="font-family:Calibri,Arial,Helvetica,sans-serif;font-size:12pt;color:rgb(0,0,0)">
Sjoerd.<br>
</div>
<div id="gmail-m_5210996219289994847x_appendonsend"></div>
<hr style="display:inline-block;width:98%">
<div id="gmail-m_5210996219289994847x_divRplyFwdMsg" dir="ltr"><font face="Calibri, sans-serif" color="#000000" style="font-size:11pt"><b>From:</b> cfe-dev <<a href="mailto:cfe-dev-bounces@lists.llvm.org" target="_blank">cfe-dev-bounces@lists.llvm.org</a>> on behalf of Kito Cheng via cfe-dev <<a href="mailto:cfe-dev@lists.llvm.org" target="_blank">cfe-dev@lists.llvm.org</a>><br>
<b>Sent:</b> 05 March 2021 08:31<br>
<b>To:</b> Evandro Menezes <<a href="mailto:evandro.menezes@sifive.com" target="_blank">evandro.menezes@sifive.com</a>>; Craig Topper <<a href="mailto:craig.topper@sifive.com" target="_blank">craig.topper@sifive.com</a>>; Yi-Hsiu Hsu <<a href="mailto:yihsiu.hsu@sifive.com" target="_blank">yihsiu.hsu@sifive.com</a>>; Kai Wang <<a href="mailto:kai.wang@sifive.com" target="_blank">kai.wang@sifive.com</a>>; Zakk Chen <<a href="mailto:zakk.chen@sifive.com" target="_blank">zakk.chen@sifive.com</a>>; <a href="mailto:cfe-dev@lists.llvm.org" target="_blank">cfe-dev@lists.llvm.org</a> <<a href="mailto:cfe-dev@lists.llvm.org" target="_blank">cfe-dev@lists.llvm.org</a>><br>
<b>Subject:</b> [cfe-dev] [RFC] Having different behavior for __fp16 on RISC-V</font>
<div> </div>
</div>
<div>
<div dir="ltr">
<div>
<div dir="ltr">
<div><span style="color:rgb(0,0,0);font-family:"Segoe UI","Segoe UI Emoji","Segoe UI Symbol",Lato,"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:13px">RISC-V has a draft extension for half-precision proposed last year[1],</span><br>
</div>
<div>
<p style="margin:0px 0px 12px;padding:0px;border:0px;color:rgb(0,0,0);font-family:"Segoe UI","Segoe UI Emoji","Segoe UI Symbol",Lato,"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:13px">
so we think adding a new type for that would be great to make this<br>
easier to use that extension.</p>
<p style="margin:0px 0px 12px;padding:0px;border:0px;color:rgb(0,0,0);font-family:"Segoe UI","Segoe UI Emoji","Segoe UI Symbol",Lato,"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:13px">
We found there is <tt style="background:rgba(71,87,120,0.1);padding:1px 4px;border-radius:3px;white-space:pre-wrap;line-break:anywhere;margin-top:0px">_Float16</tt> and <tt style="background:rgba(71,87,120,0.1);padding:1px 4px;border-radius:3px;white-space:pre-wrap;line-break:anywhere">__fp16</tt> types
 are supported on GCC and<br>
Clang, but <tt style="background:rgba(71,87,120,0.1);padding:1px 4px;border-radius:3px;white-space:pre-wrap;line-break:anywhere">_Float16</tt> has C++ supporting issues on GCC site, so we think<br>
support both types is a reasonable choice to us.</p>
<p style="margin:0px 0px 12px;padding:0px;border:0px;color:rgb(0,0,0);font-family:"Segoe UI","Segoe UI Emoji","Segoe UI Symbol",Lato,"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:13px">
However we would like have slight different behavior for <tt style="background:rgba(71,87,120,0.1);padding:1px 4px;border-radius:3px;white-space:pre-wrap;line-break:anywhere;margin-top:0px">__fp16</tt> other<br>
than ACLE: The evaluation format of <tt style="background:rgba(71,87,120,0.1);padding:1px 4px;border-radius:3px;white-space:pre-wrap;line-break:anywhere">__fp16</tt> set same as <tt style="background:rgba(71,87,120,0.1);padding:1px 4px;border-radius:3px;white-space:pre-wrap;line-break:anywhere">_Float16</tt>,<br>
which means no promotion are performed if there is no hardware half-precision<br>
supported.</p>
<p style="margin:0px 0px 12px;padding:0px;border:0px;color:rgb(0,0,0);font-family:"Segoe UI","Segoe UI Emoji","Segoe UI Symbol",Lato,"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:13px">
The only concern to us is it's defined differnt with clang's document,<br style="margin-top:0px">
so we would put this RFC patch here, to make sure it's OK for make<br>
<tt style="background:rgba(71,87,120,0.1);padding:1px 4px;border-radius:3px;white-space:pre-wrap;line-break:anywhere">__fp16</tt> has differnt behavior between differnt targets.</p>
<p style="margin:0px 0px 12px;padding:0px;border:0px;color:rgb(0,0,0);font-family:"Segoe UI","Segoe UI Emoji","Segoe UI Symbol",Lato,"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:13px">
This patch contains document change only, implementation would be in<br style="margin-top:0px">
other patches.</p>
<p style="margin:0px 0px 12px;padding:0px;border:0px;color:rgb(0,0,0);font-family:"Segoe UI","Segoe UI Emoji","Segoe UI Symbol",Lato,"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:13px">
[1] <a href="https://github.com/riscv/riscv-isa-manual/pull/496" rel="noreferrer" style="text-decoration-line:none;color:rgb(19,108,178);margin-top:0px" target="_blank">https://github.com/riscv/riscv-isa-manual/pull/496</a><br>
[2] <a href="https://github.com/riscv/riscv-elf-psabi-doc/pull/172" rel="noreferrer" style="text-decoration-line:none;color:rgb(19,108,178)" target="_blank">https://github.com/riscv/riscv-elf-psabi-doc/pull/172</a></p>
<p style="margin:0px 0px 12px;padding:0px;border:0px;color:rgb(0,0,0);font-family:"Segoe UI","Segoe UI Emoji","Segoe UI Symbol",Lato,"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:13px">
<br>
</p>
<div>Corresponding phabricator entry for this RFC:</div>
<p style="margin:0px 0px 12px;padding:0px;border:0px;color:rgb(0,0,0);font-family:"Segoe UI","Segoe UI Emoji","Segoe UI Symbol",Lato,"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:13px">
<a href="https://reviews.llvm.org/D98012" target="_blank">https://reviews.llvm.org/D98012</a><br>
</p>
<div></div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>

</blockquote></div>