[PATCH] D76077: [ARM] Add __bf16 as new Bfloat16 C Type

JF Bastien via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Fri Mar 13 12:23:37 PDT 2020


jfb added a comment.

In D76077#1921973 <https://reviews.llvm.org/D76077#1921973>, @rjmccall wrote:

> In D76077#1921490 <https://reviews.llvm.org/D76077#1921490>, @LukeGeeson wrote:
>
> > In D76077#1919861 <https://reviews.llvm.org/D76077#1919861>, @rjmccall wrote:
> >
> > > I don't understand why you wouldn't add a new IR type for this; doing so should be totally mechanical.
> >
> >
> > We had a few reasons for doing it this way.
> >
> > By adding a new IR type we would need to consider calling conventions, and IR optimizations for what is essentially an opaque storage-only type.
>
>
> IR optimizations should just fall out; the code in `APFloat` should work for arbitrary FP semantics.
>
> Calling something a "storage-only" type does not get you out of worrying about calling conventions at the ABI level.  You can forbid passing your type as an argument or result directly, but structs containing your type as a field can still be passed around, and the behavior for that needs to be defined.
>
> > Bfloat has no soft ABI, and all the supported operations can be handled through intrinsics (in a later patch, removed here due to bloat). If we were to add a new IR type, then we would need to handle many operations which would extend beyond what the type is supported for. For instance in GCC we had to add a new mode in RTL to handle inline memcopy.
>
> I don't know why having a soft ABI makes a difference.  If the type only works on certain platforms, then it can't be used on other platforms.


Having an IR type sounds like the right thing to do here.


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

https://reviews.llvm.org/D76077





More information about the cfe-commits mailing list