<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/56854>56854</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            ABI change in `__extendhfsf2` and `__truncsfhf2` on X86
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            new issue
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          kparzysz-quic
      </td>
    </tr>
</table>

<pre>
    See also: https://discourse.llvm.org/t/how-to-build-compiler-rt-for-new-x86-half-float-abi/63366/15

Support for `_Float16` was added in 15.0.0 (based on target capabilities).  This had the unfortunate consequence that it changed the way calls to `__truncsfhf2` and `__extendhfsf2` are handled: in prior version of LLVM, or in the absence of support for `_Float16`, the half-precision floating point value was passed as `uint16_t`.  In the x86 calling convention that type is passed in RDI, whereas `_Float16` values are passed in XMM0.  This introduces binary incompatibility between LLVM 15 and prior versions.

</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJx1U8lu3DAM_Rr7ItiQ5WU8Bx-SBgECJJemKHILZIu21SqSo2Umk68vpcnSAC0wHtOkSD6-R41GnIZ7AMKVM1l9QVbvN4dGxq7xJ6SbTLAOSqUOT6WxCzo9Pqs5Ft4UY5BKFJN52qQCW1hfzMYWGo7FS98VK1dzMSvDfcFHiVldXXcdvqs2o1cZvTj_34dtM9YTTCVZRx-vY0bVoUmO3BEuBAgiNanakpaUZKwfuUOX0cRzu4AnE9-wgZJegsvYviTkxyodWbkgfgUSNJb2QXMPZDLawXMAPQHGuCcS01euFzifPfITllPKEW8Smkdvg57cvM4sIuJanN3w4kGLdXZvfgvYTwsFItKIcDcrcaADWCcRqZnJ7e3Pu4x9I-jFcGzGR5eAYND9l4SYEg8nNjcLk0wFE69SL2QzUnty4CpA4mvjLrKDFiYHjFXdo0cTWbk5t0Vt0owxG_k4gPaxYqLDnzYg8qMKAv1-dRMhHFewcC76t0Kpr0vjf6Y83N3RdxEQgDUiTHholJrbE3riwiD4JNmJjOCPADrxgyInir-Q58rzouQwVF27r7u6q2guhlrs6z3PvfQKhovLmzchI4J_SvQu3VdFcfKHvsuDVcPX5V-kX8NYIlj8iPv_9kIRzC-Y4jWQzoW4ctdt17dNvg47UTVtxScYd0y0M-W7pgWx2zfdnu36qc8VH0G5IWsvM8bwopBUAu2svcrlwChjtKdV1TBK92U77fpGsIb3Y93Qvs4aCk9cqo_rmNshQRrD4jCopPPuM4iCyEUDpHZYnwe_Gjv83rh9PbnX4jnIKU8AhjTAH8bzVUY">