Skip to content

Commit 08a99bd

Browse files
authored
Merge pull request #2127 from mikeblome/mb-613
add registers to volatile calling conventions
2 parents 0caa950 + 9b1775c commit 08a99bd

1 file changed

Lines changed: 3 additions & 3 deletions

File tree

docs/build/x64-calling-convention.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -136,12 +136,12 @@ Struct2 func4(int a, double b, int c, float d);
136136

137137
## Caller/Callee saved registers
138138

139-
The registers RAX, RCX, RDX, R8, R9, R10, R11 are considered volatile and must be considered destroyed on function calls (unless otherwise safety-provable by analysis such as whole program optimization).
139+
The registers RAX, RCX, RDX, R8, R9, R10, R11, XMM0-5, and the upper portions of YMM0-15 and ZMM0-15 are considered volatile and must be considered destroyed on function calls (unless otherwise safety-provable by analysis such as whole program optimization). On AVX512VL, the ZMM, YMM, and XMM registers 16-31 are volatile.
140140

141-
The registers RBX, RBP, RDI, RSI, RSP, R12, R13, R14, and R15 are considered nonvolatile and must be saved and restored by a function that uses them.
141+
The registers RBX, RBP, RDI, RSI, RSP, R12, R13, R14, R15, and XMM6-15 are considered nonvolatile and must be saved and restored by a function that uses them.
142142

143143
## Function pointers
144-
144+
145145
Function pointers are simply pointers to the label of the respective function. There are no table of contents (TOC) requirements for function pointers.
146146

147147
## Floating-point support for older code

0 commit comments

Comments
 (0)