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

    <tr>
        <th>Summary</th>
        <td>
            miscompile with global isel on arm64
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            backend:AArch64,
            llvm:codegen,
            miscompilation,
            globalisel
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          regehr
      </td>
    </tr>
</table>

<pre>
    we're seeing a miscompile of this using top of tree with global isel:
```llvm
define i32 @f3(i32 %0) {
  %2 = or i32 %0, 65536
  %3 = and i32 1520220788, %2
  ret i32 %3
}
```

the output is:
```
        .section        __TEXT,__text,regular,pure_instructions
        .build_version macos, 12, 0
        .globl  _f3                             ; -- Begin function f3
        .p2align        2
_f3:                                    ; @f3
        .cfi_startproc
; %bb.0:
        orr     w8, w0, #0x10000
        and     w0, w0, w8
        ret
        .cfi_endproc
                                        ; -- End function
.subsections_via_symbols
```

here's a driver showing the issue, and that the default codegen gives the right answer:
```console
Johns-MacBook-Pro:~ regehr$ cat foo.c
#include <stdio.h>

unsigned f3(unsigned);

int main(void) {
  printf("%u\n", f3(1));
  return 0;
}

Johns-MacBook-Pro:~ regehr$ ~/llvm-project/for-alive/bin/llc foo.ll -global-isel 
Johns-MacBook-Pro:~ regehr$ clang foo.c foo.s && ./a.out
1
Johns-MacBook-Pro:~ regehr$ ~/llvm-project/for-alive/bin/llc foo.ll
Johns-MacBook-Pro:~ regehr$ clang foo.c foo.s && ./a.out
0
Johns-MacBook-Pro:~ regehr$ 
```

cc @ornata @nunoplopes @ryan-berger @nbushehri @zhengyang92 @aqjune @Hatsunespica
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJy1VcmO4zYQ_Rr5QliQKMnLQQe7FwQBAuQwh9wMSqIkztCkwsWeztfnkfKWbqTRh8QQaLLqsfYqNrp7q888oWvDieVcqIEwchS21cdJSE50T9woLPE2sJyeIsVwTs7CjWSQumGSCMtlUuyS7DnJdskqmz8pT8eZ1PFeKE5EQUlSZn2R0E3c0ypL6JYk6_2MI4EEevFMtCF3yBNZVVWxegAVEcRUF1F5RTNKs_VmE7BBxhVquLvKKS7mrZ_f2Xk5xtWN8Nm7yeOa_ejSFbpNLW-d0Arbw-Hbyx_foPhwcPynw8bwwUtmsJu84QehrDM-wu1dQOOF7A4nbizo5MhabYPxOQ3rg6IQYhnU9AX57JcUe7Jckj0fhCK9V1Ef6Yu7pIkyKYZg8iU8EAkXP5X6IHzO3E1a24uDdcy4yej2Qg4oWjVNmt1Dl221MVjPMTfnbM5Qkf3MM_xuIKQygLI7CBeuTGTxn4q56u5qv-LAQ4ReUDTX-MwCUuubSz7t4STYwb4dGy3tJ3UychO6xqJbOiOQRWJHfY49ggoS1noefAgF6kbmIhVdwLx0pNUdH7giA-7ZyDFiGB3A9szNx6JrYZaWfKb-qkdll7-xdq_1j-XvRgf8-gWFPvARJVeSFup6rdNrUmghVCt9xxGAJ-s6odMxKV4evfHKojB4R2JrXk9oTYTsESeUQ6UKBdBJi-5d704G_B68hKKIK59UTypun2a5eRD4IDN2pzcK1X5Tc2vOLzqLU0Jfw6RZoiC-I4k49tosUeonpOC1CdYC0MaYSEmW88xahplFvhxTyZDaGNW4WpTwCh9JIZylmBizpPx_s_u_tjT7sqX_3gRtG4aCNoo5FnbKKz1JPaGqcTJvTC0bbgY0R2A23o6QKcLhr5GrAfxhG18E9ud3j_cBu1-Ys9jaSbRs0dVFty22bOGEk7x-eJbePz4Eo46Z46pceCPr0bkpDm_6im8A1jcprl4i_jHwsV8xfl-rim7KxViXLV3xbbPd9DQHhW36Mu9p3-WYbmWXlwvJGi5tnVR7VHjD2h-YSNC425l2XJWXqsdf1FfsLi1_p998YXEM3eizT_E9Ba16Xog6Pm1VVuVlWeR5WpawaZOt865nXdM0CBpHT8o0qEq1GRamju41frBgQpizdyazsbl5NB3ymXejNvWc70UMRB2j8DdUGFOa">