This is an archive of the discontinued LLVM Phabricator instance.

ARM: __gnu_h2f_ieee and __gnu_f2h_ieee always use the soft-float calling convention
ClosedPublic

Authored by olista01 on Aug 8 2014, 7:16 AM.

Details

Reviewers
olista01
Summary

By default, LLVM uses the "C" calling convention for all runtime library functions. The half-precision FP conversion functions use the soft-float calling convention, and are needed for some targets which use the hard-float convention by default, so must have their calling convention explicitly set.

Diff Detail

Event Timeline

olista01 updated this revision to Diff 12306.Aug 8 2014, 7:16 AM
olista01 retitled this revision from to ARM: __gnu_h2f_ieee and __gnu_f2h_ieee always use the soft-float calling convention.
olista01 updated this object.
olista01 edited the test plan for this revision. (Show Details)
olista01 set the repository for this revision to rL LLVM.
olista01 added a subscriber: Unknown Object (MLST).

The half-precision FP conversion functions use the soft-float calling convention,

Sometimes, I despair.

Tim.

olista01 accepted this revision.Aug 11 2014, 2:24 AM
olista01 added a reviewer: olista01.

Thanks, committed revision 215348.

Sometimes, I despair.

So did I at first, but this actually makes sense. These functions are only used on targets which do not have native f16 instructions, so the conversion will have to be done by bit-twiddling, so the values will need to be moved to integer registers anyway, making a hard-float variant pointless.

This revision is now accepted and ready to land.Aug 11 2014, 2:24 AM
olista01 closed this revision.Aug 11 2014, 2:24 AM