<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/109526>109526</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[sve][abi] gcc and llvm don't have the same call conventions
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
vfdff
</td>
</tr>
</table>
<pre>
* test: https://gcc.godbolt.org/z/5o8YofrrG
```
SimdFloat foo (SimdFloat a , SimdFloat b, const float* m, const float* n) {
SimdFloat mc = simdLoadFloat(m);
SimdFloat nc = simdLoadFloat(n);
return a + b + nc + mc;
}
```
* For above test case, the gcc use register z0 and z1 to pass the argument a and b, while llvm pass them with memory
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJxsUk1v7CgQ_DXtSysjpj344-DDzI68l73taY-A2zYrMBHgiZJf_4QTJU95kSyjbrqaqlKplOyyMQ8gbyDvldrzGuLwmKd5rnSYXgegK2ZOGeorrjk_J6ivQCPQuBhzWsKkg8unEBeg8Q1olKH7L8wx_g3iDuIKjfj4jvJf66fRBZVxDgGBuq-GQqC_8KvWpTRhSxnn0ihE_A-9DahHaG_vDyDibzu8QajvmKyf_gnqvQnUeaAe6h8R2zviD8j2HRI573E7WN9QH_-CpRt68zkI7f1HG7AQH0NEpcODD3_RqMRFXl4ZF2NwT4yRF5syR3wTqLYJ386YAz6rlI4xFZfd81a8K7eHYy-rdYzOPfznnMcXm1f07EN8raahnvq6VxUP55aa_iy6pqvWoeuknmbJWjStZK1a6mQz9Y3U5_6i5FzZgQRdRE9n0VN76U7KND0pOTVGtHXHBBfBXll3Kq-XSFQ2pZ2Hs-glNZVTml06kka08Qset0BUgheHAnrS-5LgIpxNOX2tyTa7I6LpwSDvIG9KW5D3w6ei_JA7hQ2ozbiqYunKmJRnNMq5EpkHb9mGLVV7dMO3INu87vpkggcay6qP4-k5hv_ZZKDxoJqAxg8tj4F-BQAA__914vzz">