aarch64: Use VCodeConstant
for f64/v128 constants
#5997
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
As was pointed out recently one minor improvement to the AArch64 backend is to use the same infrastructure that x64 uses for loading constants which is to pool them at the end of the function instead of having them inline in the body. This commit implements this strategy to ensure that fallback
shuffle
instructions, for example, don't generate a branch instruction to skip over immediates.Additionally in these commits is a refactoring of float/splat lowering in the aarch64 backend. Previously it was all living in Rust but to get to know it I translated it all to ISLE. I felt that the logic was a bit more understandable after the transition and more easily shows off what all the special cases are (the problem is more well-suited for ISLE I think than Rust, nothing against the prior code of course which was perfectly readable).