<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/78662>78662</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[AARCH64] [ABI] disagreement with GCC on returning 4 element vector of char
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
pinskia
</td>
</tr>
</table>
<pre>
Take:
```
#define vector __attribute__((vector_size(4) ))
vector unsigned char f(vector unsigned char a)
{
return a + 4;
}
```
GCC passes the argument via `w0` and returns in `w0`.
While clang/LLVM passes the argument via `w0` but returns in `v0` which seems wrong.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJyEUs2OnDwQfJrm0tqRafN74DCzI74v0uYSRclxZKABZxkzss2MkqePMGRXWkWKZBnb5SrK3aWc04NhriA9QXqO1OLH2VY3bdyrVlEzdz-rr-qVQR5BnEEcIRP72LYkO-61Ybxz62eLl4vy3upm8Xy5ABVAxYZcnP7FQEUCVCJQuY5NIsw7fTHBT4ftqCz2b-wPgHpn56dtgWjZL9agQqATJiBPf26c_249zP89P-NNOccO_cio7LBc2Xi8a4WQicd6H5XpdnWH2rydHzaJ76OeGNtJmQGofnn59vnfis3iPyjew_lj1O2Ijvnq8GFnM-z_iLpKdqUsVcRVnIs0k1SURTRWUlIpilzKPE6p79JYJX3TtFQmUrS5FJGuSFAi4rgUlCZpcSCV9k2cKO6zXJUqg0TwVenpME3362G2Q6SdW7jKiyyjaFINTy7Eg8jwAwMIRGtabLVynpplcJCISTvv3lW89lPI1fH45fn_LIH0jOvu9GldddqpwTKH0jy0H3HtxGz2qmgzYII8bfiegbkP3Y8WO1Wj9ze3ppJqoHrQflyaQztfgerVwf55utn5B7ceqA6-HVAd3vU7AAD__2Mj5xw">