cfallin commented on Issue #2267:
Thanks! Updated based on comments. I definitely like the renaming in terms of explicit actions ("clobbered by call", "saved in prologue") in the ABI impls. The only open question is the naming of
is_included_in_clobbers()
in theMachInst
interface; I'm curious if you have any other good names in mind. Open to whatever makes sense!
akirilov-arm commented on Issue #2267:
I also had a quick look at the changes and they are good, but now I have realized that there is a gap in the tests - there is nothing that covers the callee side. However, that is definitely a job for another PR, in particular one that is going to fix function prologues and epilogues, so that they deal only with the lower 64 bits of the SIMD & FP registers. At the very least we should have a function with a chain of operations such as
v1 = v0 + v0, v2 = v1 + v1, ..., f(v0, v1, v2, ...)
to force the compiler to use the callee-saved registers, possibly mixing data types (f32
,f64
andi8x16
).
cfallin commented on Issue #2267:
@akirilov-arm good point; thanks! I just updated the PR to include a test (
prologue.clif
) that does exactly that, and checks that all of the callee-saves are saved (lower halves of v8-v15, covered by saving all of v8-v15 currently). Let me know if this covers what you had in mind.
akirilov-arm commented on Issue #2267:
@cfallin Yes, and it is simpler than what I had in mind, which is even better. I think that together with the other tests it will be a good exercise for an optimal with respect to the AAPCS64 implementation (trying to be a little bit forward-thinking here), and yet it demonstrates the current issues that are simpler, namely handling the full registers and the lack of paired loads and stores.
Last updated: Dec 23 2024 at 12:05 UTC