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

    <tr>
        <th>Summary</th>
        <td>
            [RISCV] clang16.0.x miscompiles half-float multiply-add
        </td>
    </tr>

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

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

    <tr>
      <th>Reporter</th>
      <td>
          sherylll
      </td>
    </tr>
</table>

<pre>
    For the following code I expect clang to generate the instruction `fmadd.h`, but clang 16 generates `fmadd.s` instead:
```
_Float16 fmadd_h(_Float16 x, _Float16 y, _Float16 z)
{
    return x + y * z;
}
```
**clang 16.0.x**:
Compiler flag: -march=rv32imfzfh -O2
```
fmadd_h(_Float16, _Float16, _Float16): # @fmadd_h(_Float16, _Float16, _Float16)
        fcvt.s.h ft0, fa0
        fcvt.s.h        ft1, fa1
        fcvt.s.h ft2, fa2
        fmadd.s ft0, ft1, ft2, ft0
        fcvt.h.s fa0, ft0
        ret
```
**clang 15.0.x/trunk**:
```
fmadd_h(_Float16, _Float16, _Float16): # @fmadd_h(_Float16, _Float16, _Float16)
        fmadd.h fa0, fa1, fa2, fa0
        ret
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzMVE9voz4Q_TTDZRRkbEjgwCFphNTTT_qttNfKYIO9a3Bkmzbpp18BCd22qVZ728hSPObNmz9PM9x73Q1SlpAdIDtGfAzKutIr6S7GmKi24lJW1mFQEltrjH3RQ4eNFRIfUZ5PsgnYGD50GCx2cpCOBzmj9eCDG5ug7YCwJW3PhYgVbAnQB6zHm1uyXd38G87DlswMkgtgeyBHIPvJdzmz-VQZy0OyxdnlSQHN16fzFGS1Lu-sV6DFlXB3WC6IiE6G0Q14RqAHvCDQPb4CO9yQx7s5AJ3OrZKYxOflZc35wfYnbaTD1vAO2B43PXeNAnZ0z4zqvn1tFW7-o3fZPxf2eyHv78VEDpQhpOTv_NYOTL-2eQ6xjxW2YRaq5eQLwM0OyYJLviSiC4B-ACxCr4GuPFd0uBdWTXBO7gKcDH9WKFsUqoIbh58flPoHer-MyFoiT26NuyfE54IjUTJRsIJHsky2eZozluS7SJU83QkpMiFqWdQFl23KeZvtmqZhJKtTFumSEspIRhkpEkZ2cU45IakkdSOE4PkOUiJ7rk1szHMfW9dF2vtRllua50lkeC2Nn3cIpYN8wfkjUDqtFFdOPpt67DykxGgf_BtL0MHMy-f_x28P3yE7LlthGSXstW-W-fGouGk37dQ57EcT9MlcNlyIaHSmVCGc_CQkrYBWnQ5qrOPG9kCrKdL1b3Ny9odsAtBqzs8Dreb8fwUAAP__GGpsRg">