zahiraam added a comment.

In D113107#3615372 <https://reviews.llvm.org/D113107#3615372>, @zahiraam wrote:

> In D113107#3606106 <https://reviews.llvm.org/D113107#3606106>, @rjmccall 
> wrote:
>
>> In D113107#3606094 <https://reviews.llvm.org/D113107#3606094>, @zahiraam 
>> wrote:
>>
>>> In D113107#3605797 <https://reviews.llvm.org/D113107#3605797>, @rjmccall 
>>> wrote:
>>>
>>>> I think on balance the right thing to do is probably to add an alternative 
>>>> to `-fexcess-precision`, like `-fexcess-precision=none`.  We can default 
>>>> to `-fexcess-precision=standard` and treat `-fexcess-precision=fast` as an 
>>>> alias for `standard` for now.
>>>
>>> In 
>>> https://gcc.gnu.org/onlinedocs/gcc-4.8.2/gcc/Optimize-Options.html#index-ffloat-store-900
>>>  ,  it looks like when compiling C, the default is 
>>> -fexcess-precision=standard which would align with this implementation and 
>>> our default too. So I think we could use the same name for the option. 
>>> -fexcess-precision=none corresponds to the current behavior.
>>> -fexcess-precision=standard = -fexcess-precision=fast corresponds to this 
>>> implementation.
>>> Agreed?
>>
>> Since you're not landing this option right now anyway, do you mind broaching 
>> this with the GCC folks, just to be good neighbors?  You can just say that 
>> (1) Clang is looking for a way to request operation-by-operation lowering, 
>> (2) it feels like `-fexcess-precision` is the right option to add that to, 
>> (3) we don't want to tread on toes by adding an alternative to "their" 
>> option without talking to them first, and (4) what do they think about 
>> "none"?
>
> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106117

In GCC using no -fexcess-precision is the same than using 
-fexcess-precision=standard. The patch we are proposing here is implementing 
this part.  So for  a + b + c, we are generating (_Float16) [((float a) + 
(float b)) + (float c)]
In GCC using -fexcess-precision=16 is generating yet another flavor of the 
operation-by-operation emulation. For the same addition than above, gcc is 
generating (_Float16) [(float) (_Float16) ((float a) + (float b)) + (float c)]. 
That's different than our current implementation.
See https://godbolt.org/z/aM8fzTsj1
Am I understanding correctly? @pengfei you are interested in the 
-fexcess-precision=16 part of this right? @rjmccall what do yo think?


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D113107/new/

https://reviews.llvm.org/D113107

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to