_xsaveopt
Classification
Other, OS-Targeted, CPUID Test: XSAVE
Header File
immintrin.h
Instruction
XSAVEOPT m8
Synopsis
 _xsaveopt(void * mem_addr, unsigned __int64 save_mask);
Description
Perform a full or partial save of the enabled processor states to memory at "mem_addr". State is saved based on bits [62:0] in "save_mask" and "XCR0". "mem_addr" must be aligned on a 64-byte boundary. The hardware may optimize the manner in which data is saved. The performance of this instruction will be equal to or better than using the XSAVE instruction.
Operation
mask[62:0] := save_mask[62:0] AND XCR0[62:0]
FOR i := 0 to 62
	IF mask[i]
		CASE (i) OF
		0: mem_addr.FPUSSESave_Area[FPU] := ProcessorState[x87_FPU]
		1: mem_addr.FPUSSESaveArea[SSE] := ProcessorState[SSE]
		2: mem_addr.EXT_SAVE_Area2[YMM] := ProcessorState[YMM]
		DEFAULT: mem_addr.Ext_Save_Area[i] := ProcessorState[i]
		ESAC
		mem_addr.HEADER.XSTATE_BV[i] := INIT_FUNCTION[i]
	FI
	i := i + 1
ENDFOR