-
Notifications
You must be signed in to change notification settings - Fork 365
-
Notifications
You must be signed in to change notification settings - Fork 365
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
[ARM64] Clobbering x0-x15 Breaks Down on Clang #421
Comments
@xrq-phys Have you tested commenting out the clobbers (and if you do can you please send the generated assembly)? I would be concerned about this because I would have thought that the compiler took the general purpose nature of those registers into account when computing the register allocation, and so removing the clobbers would wither a) not change anything, or b) cause the compiler to actually use them and then something gets screwed up. |
@devinamatthews I'm afraid your concern is correct. Commenting out x0-15 in
Sorry for having proposed an incorrect workaround. Still, one way to avoid this seems to be commenting out only x8-15 and compile with ... I'll try to look for other solutions. |
No problem, I have a feeling that either the kernel will have to be modified to use one less register, or maybe we will get lucky and one or more of the clobbers are not actually used in the kernel. |
Fixed by #506 |
Dear BLIS developers,
This seems a duplicate of #207 . Sorry for having opened another issue.
The current
arm64
kernels and newarmsve
kernel play well with GCC but breaks down under Clang with:Toolchain:
Possible Reason:
Number of input registers + Number of clobbers
becomes larger than 30?Workaround:
Comment out clobbering of
x0-x15
. These general-purpose registers can be discarded w.r.t. the AArch64 calling convention and results of C code lying between function entry and__asm__ volatile
are saved to memory as input registers. There should be no hazard on doing this.e.g.
The text was updated successfully, but these errors were encountered: