* 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

Reply via email to