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

    <tr>
        <th>Summary</th>
        <td>
            NEON vzip1q_u8 with certain operands lowered to tbl
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            new issue
      </td>
    </tr>

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

    <tr>
      <th>Reporter</th>
      <td>
          efriedma-quic
      </td>
    </tr>
</table>

<pre>
    ```
#include <arm_neon.h>
uint8x16_t ext_zip(uint8x16_t a, uint8x16_t b) {
    auto zipped = vzip1q_u8(a, vextq_u8(a, a, 8));
    return zipped;
}
```

With "clang -O3", this uses tbl instead of zip1.  gcc produces the expected code.  clang at -O0 or with -fglobal-isel also produces the expected code.

https://godbolt.org/z/nhnhsqs3c

Seems to reproduce back to at least clang 3.5.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJx8Uk1zqzoM_TViowkDMiGwYNE2Zdku3uItM8YW4PccTG3T5ubX34FkbjNd3BmPQR_n6EiWDMEME3MD-2fYHxO5xNH5hntvWJ_l7mMxKumc_tVAmd1PdoTsCUiYSdlFM4J4kf58mthN6Qji9ZawmClWl7w8ReRLPF3NDFQ9OCXQCz7YHVCNcHi-oRER5RIdXs08s0YQR_y8mjn_OC0VULWhP_kSH-3tqoDq9YgHJs9x8dOd608EDsf7z4_WtvtfE0cEImXlNODuXQDRyh9HE3AJHDB2Fs0UIkuNrl_Z8xRxUApn7_Si1pSRkS8zq8galdOcIt4IZcTde4bO49daaNcP1nXS7kxgi9IG9zeSR51jjHMA8QTUArWD052zMXV-AGqvQO00TmP4CEI9gv5hPgeMDj3fy2An1f-rR0a0LEO86xTpPk10I3Qtaplwk5cVlXWdU52MTSaUlvrAGcmqqPbEvc6lVN2hl1VPZZGYhjISWUFVXtKe6pSLaq84E1zlzFnPUGR8lsam1n6eV9WJCWHhpqRCFImVHduw7SbRxF-4BdeH2B8T36yYXbcMAYrMmhDDN0s00XLz9vr-9r02t0kr9lGaCd3MXk46oHVf7FmvvcfOJou3zY-ZmjguXarcGahdK9w_u9m7_1hFoHbTFYDaTffvAAAA__8mSQn8">