[llvm] [AArch64][SVE] Remove isSVECC() in favour of changing the calling convention (PR #152742)
Paul Walker via llvm-commits
llvm-commits at lists.llvm.org
Fri Aug 8 10:43:33 PDT 2025
paulwalker-arm wrote:
I just wanted to add some extra commentary in case somebody comes a looking:
It's a nuisance but there is no SVE calling convention. There is the `aarch64_sve_vector_pcs` calling convention, which improves the performance of calling utility functions in the middle of SVE code, but otherwise there is no SVE calling convention.
What we did when adding SVE support was to modify the existing calling convention in a compatible way to document the requirement for handling state that was previously not available. This generally applies to all the calling conventions, for example, preserve_all should preserve SVE state if in use. I don't want to get into a situation where we need SVE versions of all the existing calling conventions. `isSVECC()` exists to distinguish those functions that have SVE state where the existing calling convention's new rules must be applied.
That said, I'm not going to fully defend the implementation as we certainly made use of "calling convention" mechanics in order to achieve the desired behaviour. If anything, I'd rather generalise the logic and only use "SVE calling convention" for functions marked with `aarch64_sve_vector_pcs`, but this is effectively an implementation detail.
https://github.com/llvm/llvm-project/pull/152742
More information about the llvm-commits
mailing list