mirror of
https://github.com/golang/go
synced 2024-11-11 22:20:22 -07:00
cmd/compile/internal-abi: use x87 mode, not MMX mode
Florian Weimer pointed out that my justification for using MMX mode was nonsense and that staying in x87 mode simplifies transitions to and from C. Hence, switch the spec to say we're always in x87 mode. For #40724. Change-Id: Iad916b2c376db41f95614aa6897f6b1184576bb7 Reviewed-on: https://go-review.googlesource.com/c/go/+/295789 Trust: Austin Clements <austin@google.com> Reviewed-by: Cherry Zhang <cherryyz@google.com> Reviewed-by: Than McIntosh <thanm@google.com>
This commit is contained in:
parent
bf48163e8f
commit
478277f812
@ -455,13 +455,12 @@ The arithmetic status flags are treated like scratch registers and not
|
||||
preserved across calls.
|
||||
All other bits in RFLAGS are system flags.
|
||||
|
||||
The CPU is always in MMX technology state (not x87 mode).
|
||||
At function calls and returns, the CPU is in x87 mode (not MMX
|
||||
technology mode).
|
||||
|
||||
*Rationale*: Go on amd64 uses the XMM registers and never uses the x87
|
||||
registers, so it makes sense to assume the CPU is in MMX mode.
|
||||
Otherwise, any function that used the XMM registers would have to
|
||||
execute an EMMS instruction before calling another function or
|
||||
returning (this is the case in the SysV ABI).
|
||||
*Rationale*: Go on amd64 does not use either the x87 registers or MMX
|
||||
registers. Hence, we follow the SysV platform conventions in order to
|
||||
simplify transitions to and from the C ABI.
|
||||
|
||||
At calls, the MXCSR control bits are always set as follows:
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user