* H. J. Lu: > Add preserve_none attribute which is similar to no_callee_saved_registers > attribute, except on x86-64, r12, r13, r14, r15, rdi and rsi registers are > used for integer parameter passing. This can be used in an interpreter > to avoid saving/restoring the registers in functions which process byte > codes. It improved the pystones benchmark by 6-7%: > > https://gcc.gnu.org/bugzilla/show_bug.cgi?id=119628#c15 > > Remove -mgeneral-regs-only restriction on no_caller_saved_registers > attribute. Only SSE is allowed since SSE XMM register load preserves > the upper bits in YMM/ZMM register while YMM register load zeros the > upper 256 bits of ZMM register, and preserving 32 ZMM registers can > be quite expensive.
Please consider updating the x86-64 psABI, along the suggestions here: Document the ABI for __preserve_most__ function calls <https://gitlab.com/x86-psABIs/x86-64-ABI/-/merge_requests/45> Thanks, Florian