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