<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/56664>56664</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
funnel shift related miscompile by ARM64 backend with global isel
</td>
</tr>
<tr>
<th>Labels</th>
<td>
backend:AArch64,
llvm:codegen,
miscompilation
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
regehr
</td>
</tr>
</table>
<pre>
this function is getting miscompiled:
```
declare i9 @llvm.fshr.i9(i9, i9, i9) #0
define i9 @rotr_zero_shift_guard_swapped(i9 %0, i9 %1) {
%3 = icmp ne i9 %1, 0
%4 = call i9 @llvm.fshr.i9(i9 %0, i9 %0, i9 %1)
%5 = select i1 %3, i9 %4, i9 %0
ret i9 %5
}
attributes #0 = { nocallback nofree nosync nounwind readnone speculatable willreturn }
```
we can illustrate using this driver:
```
unsigned rotr_zero_shift_guard_swapped(unsigned, unsigned);
#include <stdio.h>
int main(void) {
printf("%u\n", 511 & rotr_zero_shift_guard_swapped(50, 273));
}
```
result:
```
Johns-MacBook-Pro:~ regehr$ llc foo.ll && clang foo.c foo.s && ./a.out
134
Johns-MacBook-Pro:~ regehr$ llc -global-isel foo.ll && clang foo.c foo.s && ./a.out
268
Johns-MacBook-Pro:~ regehr$
```
cc @ornata @nunoplopes @ryan-berger @nbushehri @aemerson
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJydVNuOmzAQ_Rp4sYKIgZA88JDL7kOlSlV_IDJmAHcdG_myUfr1HTukSVfa3bYSwmN7fObMtdXdpXGjsKT3ijuhFUF5AOeEGshJWK5Pk5DQJcU2yQ9Jvk1W-fzFbQdcMgNEbEhS5lK-nrLejiYTm4Suw29P7n_UocX88Pa8F-r22mhnjj_B6KMdRe-Og2emO9ozmyYkEODwfZVf0YK4jJD17opFwlFBkuJABD9NZMaNanuSPyiVUYkzKd_j_cbQG5sPUFWEsiCBOyKWkcJduXyEmB8ZcPNRNUeiPjyGhDlnROsd2BitiI8-EqUD4ZbxFxR7A4CLvSiOi1dnoTpEZp3S6LadgHvJHGslkLOQEm16o8jd0p9JvP7PgCHB_EvprTPMAfE2VEEsj86IVzDvVYFXVgwKkMInKbwphrjc5U1S7B6ZoN9Ccek7QO_31nVCZ2NSPD3qCOXIiQmFoK9adG8qYTJ43-NdQilG2ifVXkVxT6plyNLqU6rXpNO6CPweKX4YRAPWS_denL7oUdnFV8Z3Wr8svhkdFOsnzNwAo0loSaTkpNc6w9JEkoEn9hcmIZxdb-ztIkvoM8u0d1fsZVH-i5HFIHXL5EJg7f6nRbpa_63FDyLGeehAbRTWa5CUV3qSegr1jzPhwtSiBTOAiZettyNiirBhcAJjcWSlXVN0m2LDUiechAZnmUKvYl6RBHYCluZ9mJH2Qrbfv65KEroJsHPOwo3kGhASApJ6I5vRuckGT-gzfgOq-DZDCNyEeTEvi8noH9j8uBXWerAoVKvVqkzHZt1VNWXA6brf9EVVrMuOl5u6Z3nbdrxfp5K1IG2TVDsszpkMWtxuDR9X5VywuER7xZbrDiOq7ue_fWJhdIfz6pCKhuaU5jVdUopFUWdtX1YAbcsqWq-LJcXQAbaOzOLY02ZITRNdaf1gwzQU1tn7JbOxTyHSRHzm3ahNc01uGp1uose_AKKt2x0">