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