<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/65884>65884</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
【AArch64】neon big endian miscompiled
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
hstk30
</td>
</tr>
</table>
<pre>
https://godbolt.org/z/vWMz5K34r
```
#include <arm_neon.h>
extern void abort (void);
__attribute__((noinline)) uint8x16_t
wrap_vld1q_lane_u8 (const uint8_t *load, uint8x16_t vec) {
return vld1q_lane_u8 (load, vec, 12);
}
int test_vld1q_lane_u8(const uint8_t *data) {
uint8_t out[16];
uint8_t overwrite = 7;
int j;
uint8x16_t in = vld1q_u8 (data);
in = wrap_vld1q_lane_u8 (&overwrite, in);
vst1q_u8 (out, in);
for (j = 0; j < 13; j++)
if (out[j] != (j == 12 ? overwrite : data[j])) {
abort();
}
return 0;
}
int main (int argc, char **argv)
{
uint64_t orig_data[2] = {0x1234567890abcdefULL, 0x13579bdf02468aceULL};
test_vld1q_lane_u8((const uint8_t *)orig_data);
return 0;
}
```
this code fail, when `-O3 -fno-inline`.
I see the https://llvm.org/docs/BigEndianNEON.html , but I still confuse about the asm:
```
rev64 v0.16b, v0.16b
ext v0.16b, v0.16b, v0.16b, #8
rev64 v0.16b, v0.16b
ext v0.16b, v0.16b, v0.16b, #8
```
this code seem do nothing, but appear many times.
Can anyone give me some clue about this fail? Or just narrow this problem?
I opt bisect it, it's fail in `SLPVectorizerPass`, but I guess it just introduced this problem, but not the main point.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJy8VV-Pq7YT_TTOy2gjYwOBhzwkm4109bu_e69UtX2MDEzAW7BT27B_Pn1lQ7KQbm_fihAYec7MOTPjQVgra4W4JcmeJIeV6F2jzbax7g9OV4Wu3raNcxdL-I6wI2HHWleFbt1am5qw4zthx-H3_78n_-OxIfRA6G56pnS6x0_GpSrbvkIg_FGY7qRQq3VD-NMcha8OjYJBywpEoY0DwjL_RVhO-H5uejoJ54wseoenE2EZYZnSUrVSoTdmOfRSuew1Sk9uRLwYcTkNbRX9eWqFwlOfee-lVtaNticfbtdqURH2OIPDgKV3SDYTAwCDrvdE771dwQHxCBFbEN8c5gqkcuDQuiWnzyhVwok7Atdd3TuS7KOUJIdbnNnugObFSOezfoDNzMIHf75HjGqlCtYjq1HWRGCBD0af55Sw9BbZp0GqJXiw7ubaC_jE5KyN330OUSjhe_DLR4h4WBO2D3d-tQeQ56u7ZP9MkgMQFnnw1YtfRwwIPy7SsoMgbsRMnTPLs79CJwZZc4YAt3re-oH-rNad8EljmV8LU4cGKRvhde4I2wlTDzdBd5VOY19MI-vTRJYFgV7dZk9fI8bjJN1kORVFWeH5169fvXP6GvFkkxfVmbI4zUSJfmMzb5RP---zFiQs_4i_yMNPpN_NgPB0jbRQ6grhLGTrab40qICk9OE7h4ez0g_TKU7peg78AhYRXIOwHEhtO3TTNKp0aQk77mX9pCop1Len79_Wjeta8HGK3sEXsE62LZRanXuLvrS9C06F7bzLfx5hMF0GhzQGgIGuo7QIh31cLazw1YX336wWK8J49l94_5dKWMQOKg1Ku0aq-poscbmgMNAJ9QZOdmjXMMc_CgVCvWmFUMsBoUOwukMo2_4jsdKOdeZH-G7gubcOlDBGv4x7F6OLFjvCj8tS64uDQlosHchxPjjCNqOvMHtS-svXH79h6bSR72h-CGu9vFuZ6x6tBenGkFI5o6u-xGoZdjJXeuyBcEIvWiq3VDo-V9WWVznPxQq3UZrHPKZRkq2arUiTTZYmgsbnM0vPuWAZUp5E7BxVUbmhK7lllHGaRzSilPHNOssTisgSlhVC0JiRmGInZLu-NvNKWtvjNk2yLF61osDWhj80YwpfIGwS5ofAymw95qHoa0ti2krr7IcXJ12LW_LESUZJTnc7UzZpfP2O_D8YClkDhuMCnbSl7i6yxQpWvWnvf_3SNX2xLnU3Hbvp9XAx-hlLR9gxMPNnMDD_KwAA__-dG2Oa">