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

    <tr>
        <th>Summary</th>
        <td>
            miscompile from AArch64 global isel backend
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            backend:AArch64,
            miscompilation,
            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 i64 @f(i1 %0) {
  %2 = shl i1 false, %0
  %3 = sext i1 %2 to i32
  %4 = shl i32 %3, 1
  %5 = trunc i32 %4 to i1
  %6 = select i1 %5, i1 true, i1 false
  %7 = sext i1 %6 to i8
  %8 = zext i8 %7 to i64
  ret i64 %8
}
```
hopefully it's clear that if we invoke `f(0)`, then every SSA value in the function evaluates to 0 and then also it returns zero, and this is what both opt and the sdag backend for AArch64 think.

on the other hand:

```
Johns-MacBook-Pro:tmp regehr$ llc --global-isel --march=aarch64 reduced.ll -o - 
        .text
        .file   "reduced.ll"
        .globl  f // -- Begin function f
        .p2align        2
        .type   f,@function
f: // @f
        .cfi_startproc
// %bb.0:
        mov     w0, #255
        ret
.Lfunc_end0:
        .size   f, .Lfunc_end0-f
        .cfi_endproc
                                        // -- End function
        .section        ".note.GNU-stack","",@progbits
Johns-MacBook-Pro:tmp regehr$ 
```

cc @nunoplopes 
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJyMVU2PozgQ_TXOpQQixUfCgUO6s73Sane10mjPI2OK4G3HRrbpme5fv7JNQqY1h4kiJxTvVT0_VwF3Tl40UcfqJ1afd3zxk7GdpQtNdteb4b2byBLDgwMO46KFl0az8sSKMytOrCnSV6m3awoNNEpNIJsKWFWMDI9yDwzrgmEL7PCUUBBCCKw8g5sUyD2MXDli-JywG6hMIPruISVC8AZkiQ-YaktUYiSFRPsHRB0R3i5a3DBVzPMIatZSisStWB0SyX1g0vo3Cd1Yh88Cm5j4-AA5RshHhBwTJ0Ca6oax5JNjWK88djh_sjhdTmamcVHqHaSPpyIUcQt-4h7kCN8IpH4zrwSsieYH2wMZn8FPpIHeyL7Dly8neONqCegQv58sUAhzTy4oLIDrIfG4cgakD0oXqx18kDUhaQJIB9LBtyCiN34CM_sbFdzAL9Bz8Up6gNFYOJ2smJoq0PRrvu4yriaJMX4iCxPXw9ZoP_PiDzNpl_3FxZMxr9k_1rDy5K8zpO5lWIFSArLsokzPVSYdKciyK7diYuWZ8yTD0rAIGnKlIDOQwa1gm3v67rerUSpiRcsQNwZD3AChjGJFOwLDF4YvkGXwRBepN3fHDT0jV_KiWdE-pPDvc6gxMnwOw3Mbt3h_ZOXpljlO1p0lRvnVeW79bI1YwysO677Piwcb26t5Y0X7rUijVoYWv92ytG43_zOU_kp6-IGaO_lxkwcPmOyTFtLDpgR-8bN59lvokx-2HmvTGggnkGvjKf_9738z57l4DceAz3HFZN1szaWX3v1qo_y0v9IqRLBbL9rMyszkYDd05dCWLd9Rt28Oh6ral9jupq5HPIwtYSv2xdjzAce2ro9YEeFITT_sZIcFlgVis2_rGtu8L8ey7EUrDkWPhwNnVUFXLlUenqe5sZeddG6hrtkXxXGneE_KxUc14jpRrDyt83Q34SqdMNdZKh4Nu4XTFIQhCKH6vLNdqJL1y8WxqlDSebfV9dIr6u6pCEZrrvfRTbkgTtQqZLdY1U3ezy60TDzMi_TT0ufCXBm-xDdE-slma_4j4Rm-xO05hi9xh_8HAAD__z1t3bw">