<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/137254>137254</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
integer math miscompile from AArch64 global isel backend
</td>
</tr>
<tr>
<th>Labels</th>
<td>
backend:AArch64,
miscompilation,
llvm:globalisel
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
regehr
</td>
</tr>
</table>
<pre>
here's a function:
```llvm
define i32 @f(i32 %0) {
%2 = sub nsw i32 %0, -2147483648
%3 = icmp sgt i32 %2, 0
%4 = select i1 %3, i32 1, i32 0
ret i32 %4
}
```
with global isel we're lowering it like this:
```
~/reduce$ ~/llvm-project/for-alive/bin/llc -global-isel -o - reduced.ll
.build_version macos, 15, 0
.section __TEXT,__text,regular,pure_instructions
.globl _f ; -- Begin function f
.p2align 2
_f: ; @f
.cfi_startproc
; %bb.0:
mov w8, #-2147483648 ; =0x80000000
cmn w0, w8
cset w0, gt
ret
.cfi_endproc
; -- End function
.subsections_via_symbols
~/reduce$
```
this code returns 0 for f(2147483649). however, the answer should be 1 and that is what we get if we run the code generated by the SDAG backend.
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJyMVM2SozYQfhpx6TIlWjA2Bw7MeJ0HyB5yowQ0oKxALkmYnUuePSWBZya7l1Cusmi-_vm6-5N0To0LUcWKV1ZcE7n6ydjK0kiTTVrTv1cTWWJ4diBhWJfOK7MwUTNesxe-_7R-zIzXPQ1qIVACgeV8YHiJRyw4wxLY-ZXxGsI7AhNXcGsLi9vgE_QGJ8zyc34RL_nlCRYRrLr5Dm70TzQGNH9i8j0gaeo8qCy6BUAAZ89DRFv6CJEHCufrVyKM15vyE4zatFKDcqRhC-QtgTYbWbWMoDxo9YPAT8r90gjG638Y3iz1a0cMcwhvoTunuzV_U-cZ3gZjT1KrBzG8tWqJgA5Oe8pTTHkycII9SJ9qDSEFL9N2VbpvHmSdMgvMsjMucMuKZy8CyNE-IV42zfdvf31n-NY0nn56hm-WxlVLy_Dtvlpq1OK8XSPcHd6hCh18B2DiFU4neKVRLR-Dh-EA3lFqNYY0yHjdDEzU0SMOfod0g2qcl9bfremCLXzGom1TfrSNl7N5MF5ul8CAofgy_j2auPKfF74_u0c3h6Rb3Jbtctgc-Q_j6HejJf-lEFr6owz4n8_B_9vSf649r1O3tkeLXfNQsnHvc2u0-23yv6xFWBboTE9hA1e7OOAwGAtBJR-kS4ZlCpPZ6EFhSuAnArm4jSy4yay6h5YgA7n04CfpQTnYwv9GMIbFHsLJrkt0jNlGWshKTz2079H657X-A1rZ_aClT5O-En0pSplQlZ3zohDZhYtkqs7UYi4FcSzOPRVC8KIXWS7zTgwXmWGiKuRY8BxzzIqXXKTYDcMgipeyzQSXBbGc0yyVTsP6p8aOiXJupSoTZyzyRMuWtIu3DuJRDhN1XdtueskZBn0zxFm5zsx3pWXs_9McLxxR75oJkglfimtiqyi2dh0dy7lWzrvP_F55TZVaPI1kYZZ-go_wBIM1Mxzp_6P_o7hktbqavL9HzeON4W1UflrbtDPzofLfxR45O4a3g_ajwn8DAAD__zBjmdo">