インテル® C++ コンパイラー 18.0 デベロッパー・ガイドおよびリファレンス

拡張プロセッサー・ステートを保存/復元する組込み関数

FXSAVE[64] 命令と FXRSTOR[64] 命令にマップする組込み関数

この組込み関数グループには、x87 FPUMMXXMMMXCSR レジスターの現在のステートを保存/復元する 4 つの組込み関数が含まれます。

これらの組込み関数では、16 バイトでアライメントされた 512 バイトのメモリーチャンクへのメモリー参照を受け付けます。表 1 はメモリーのレイアウトです。

表 1 - FXSAVE 領域のレイアウト

これらの組込み関数は、immintrin.h ファイルで宣言されています。

XSAVE[64]XSAVEOPT[64]FXRSTOR[64] 命令にマップする組込み関数

この組込み関数グループには、x87 FPUMMXXMMYMMMXCSR レジスターの現在のステート全部または部分的に保存/復元する 6 つの組込み関数が含まれます。

これらの組込み関数は、64 バイトでアライメントされたメモリーへの参照を受け付けます。最初の 512 バイトのレジスターフィールドのレイアウトは、FXSAVE 領域のレイアウトと同じです。ステートを保存する組込み関数は、バイト 464:511 への書き込みは行いません。表 2a と表 2b は、保存領域のレイアウトです。

第 2 オペランドは、保存/復元する拡張ステートを指定する保存/復元マスクです。マスクの値は、XFEATURE_ENABLED_MASK(XCR0)AND 演算が行われます。そのため、保存/復元マスクと XFEATURE_ENABLED_MASK の対応するビットが両方とも '1' に設定されている場合のみ、特定の拡張ステートが保存/復元されます。

表 2a - XSAVE 領域のレイアウト (最初の 512 バイト)

表 2b - YMM レジスターの XSAVE 領域のレイアウト

これらの組込み関数は、immintrin.h ファイルで宣言されています。