-
Notifications
You must be signed in to change notification settings - Fork 13.6k
[sve][abi] gcc and llvm don't have the same call conventions #109526
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Comments
@llvm/issue-subscribers-backend-aarch64 Author: Allen (vfdff)
* 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
|
https://github.com/ARM-software/abi-aa/blob/main/aapcs64/aapcs64.rst#pure-scalable-types-psts |
Thanks , a little simplified test: https://gcc.godbolt.org/z/jKjcY5sK1
|
In combination with https://github.com/ARM-software/acle/blob/main/main/acle.md?plain=1#L6845 I'm tempted to agree that LLVM should have mapped this type to a pure scalable type. |
I believe this was fixed in #112747 from @momchil-velikov. |
Uh oh!
There was an error while loading. Please reload this page.
Smaller example: https://gcc.godbolt.org/z/K484P4zEr
The text was updated successfully, but these errors were encountered: