<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">