<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/56454>56454</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
Incorrect bitcast result for half-precision float on AArch64
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
topolarity
</td>
</tr>
</table>
<pre>
```llvm
; Function Attrs: nobuiltin nounwind
define external fastcc i1 @"_start"() unnamed_addr {
Entry:
%0 = bitcast half 0xH7C01 to i16
%1 = icmp ne i16 31745, %0
%2 = zext i1 %1 to i64
call i64 asm sideeffect "svc #0", "={x0},{x8},{x0},~{memory},~{cc}"(i64 94, i64 %2)
unreachable
}
```
This program should always return 0, but it returns 1 if compiled with `llc -O0`:
```
$ llc test.ll -o test.o -filetype=obj -mtriple=aarch64-linux-none -O2
$ ld.lld test.o -o test -m aarch64linux && qemu-aarch64 ./test
$ echo $?
0
$ llc test.ll -o test.o -filetype=obj -mtriple=aarch64-linux-none -O0
$ ld.lld test.o -o test -m aarch64linux && qemu-aarch64 ./test
$ echo $?
1
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJy9VEuP2yAQ_jXkMnKE8Ss5-LBPtae99L7CgGNWGFLAm6S_vgNOdvdQ9VRVQva8-OZjhmFw8tKTlq7LmPeZ0EdC70h1D8-LFVE7C3cx-kCqO7BuWLSJ2qK02JO2co2WatRWgTpH5S03MPIQhQBdAqkpYew1RO4jCoTtCNvDYi2flXzlUnog3f2K8mSjv2CaVQMgrKFAqkcYdBSICBM3I9Dzt-6BlhAd4rdfYsscq8V8BOSCPqjKrm4Ie8hIXyJZjvyFdDPFtDWhtfUtRnBjkg48zBC0VGoclYgYysK7wF9F82ESMkMsPMKZku4RLUncfYof1ifUZjU7POEXixBZS3VJ6fZ1wkxSYomVuhFarFdcTHww6tof3LYKt95d1fz9MekAR-8OniP_yS1GAjcnfgngVVy8BZoSDQsWIF5NAUrQIwg3H7VREk46TpDvhIDiJWe4tebPmVkNKTaqELdYvsKtooNiRMB4OSqslBveoJij10eTVM69mNq6MNou58I6bFzxwr4ASoSSH0ArJALAdWPeh8VqccFPNS_F1QFbwp5T8CeWEpPD0JpUz6vxnxOn_4l4-ZfWb2RfyX2155uoo1H9dyuc9-ny3qbIq7CYCKPzeaCKI3p1SHM-GscjpIG_y1w2izf9FOMxDT_SwnXAW7EMW7wlqOTnYv0hinvDLKjqEBYVUGjauqk3U78rpVRDN-5qTqXcNU07iBENu6YcRtVVG8MHZUJPmnscBatOkCHSWDSPG90zyhjt6L7sGlqxLe8Ea-m4K9umHga-wydGzVybbeKxdf6w8X2mNCyHgE6jQwyfTh6CPlilcjrE50ucnO-jOzrDvY6XTc7eZ_a_ATOogic">