<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/147935>147935</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[ARM] Incorrect __gnu_h2f_ieee ABI
</td>
</tr>
<tr>
<th>Labels</th>
<td>
backend:ARM,
miscompilation
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
nikic
</td>
</tr>
</table>
<pre>
```llvm
target triple = "arm-unknown-linux-gnueabihf"
define i1 @test(half %self) #0 {
%_0 = fcmp une half %self, %self
ret i1 %_0
}
attributes #0 = { "target-features"="+vfp2" }
```
Produces:
```asm
.save {r11, lr}
push {r11, lr}
vmov r0, s0
bl __gnu_h2f_ieee
vcmp.f32 s0, s0
mov r0, #0
vmrs APSR_nzcv, fpscr
movvs r0, #1
pop {r11, lr}
mov pc, lr
```
LLVM 20 produced the correct:
```asm
.save {r11, lr}
push {r11, lr}
vmov r0, s0
bl __gnu_h2f_ieee
vmov s0, r0
mov r0, #0
vcmp.f32 s0, s0
vmrs APSR_nzcv, fpscr
movvs r0, #1
pop {r11, lr}
mov pc, lr
```
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJzEVE1vozoU_TWXjZXocg2hLFiQRpEqtVLVJ71tZIwJfjUfsg1vZn79yEA7yaKznJGigO7HOece7Cuc09deqQLSI6SnSEy-HWzR63cto2qovxdwwPVnzNwBll7Yq_LMWz0axYCfGBAJ2-2m_r0f_u93RvfTt921n5SodNsAEWAJWNaq0b1iOmaQoFfOAz20wjQMKHXKNEA5A-LIIDsClizEL7gwNLIb2dQrdl__-Pkayq3yC3joCozZaeUV3ltdTV65DT5Izo5B9jrLrlHCT1a5IJWfwj8d52YkIGIbzIcJK-SrHepJKge8vE0K1y35fO_ErABzyI42joNQYz_05OPk2q9yczfMgLnFEHcrW14ZwPxyufbTpaXmopVSW7Xsxn3DCTB3dx23KGHmD3DrAPPy9Z-3S_9DziHbjE7az6bZ3bbFm95h_EruyjPKLXzv0_Pzvy-MkI2rWTXzrWJysFZJ_7eNW6tX0-zvTfvK4z_h5o1FUV3wOue5iFQRZynFCU-RR20hKhRZTFzKqsamUZRLTOpG5VgdRH0QkS4IKcUsxhh5nPD9IcFD_VBXKB_qlKOEBFUntNmHG74f7DXSzk2qiJMs52lkRKWMWxYEUSXku-pr4GX59rLclEcg6rSTQzdqI7we-hBOT5EtAt6umq4OEjTaefeLwWtvlqUTYNITe-q3k8Huvxcrj0_RZE3Rej8u943OQOer9u1U7eXQAZ2XxbQ-dqMd_gvni87LDA7ovI0xF_QzAAD__wK8Y9U">