[context] SSE/AVX registers preservation
Hi, I've been looking at Boost.Context and wondering whether it preserves SSE/AVX state on context switches. From the code it doesn't look like the case - only jump_x86_64_ms_pe_masm.asm contains the code that saves some (not all) xmm registers and ymm registers are never saved. Is this intentional or the library simply doesn't support SSE/AVX? And why not use xsave/xrstor to consistently support all future extensions?
2013/7/9 Andrey Semashev
I've been looking at Boost.Context and wondering whether it preserves SSE/AVX state on context switches. From the code it doesn't look like the case - only jump_x86_64_ms_pe_masm.asm contains the code that saves some (not all) xmm registers and ymm registers are never saved. Is this intentional or the library simply doesn't support SSE/AVX? And why not use xsave/xrstor to consistently support all future extensions?
boost.context preserves only non-volatile registers as described by the ABI. take a look at http://www.boost.org/doc/libs/1_54_0/libs/context/doc/html/context/rationale...
On Tue, Jul 9, 2013 at 11:45 AM, Oliver Kowalke
2013/7/9 Andrey Semashev
I've been looking at Boost.Context and wondering whether it preserves SSE/AVX state on context switches. From the code it doesn't look like the case - only jump_x86_64_ms_pe_masm.asm contains the code that saves some (not all) xmm registers and ymm registers are never saved. Is this intentional or the library simply doesn't support SSE/AVX? And why not use xsave/xrstor to consistently support all future extensions?
boost.context preserves only non-volatile registers as described by the ABI. take a look at http://www.boost.org/doc/libs/1_54_0/libs/context/doc/html/context/rationale...
I see. Thanks.
participants (2)
-
Andrey Semashev
-
Oliver Kowalke