次のマクロ関数を使用して、コントロール・レジスタの各ビットを読み書きできます。詳細は、「設定操作」を参照してください。Itanium® ベースのシステムでは、これらのマクロではアクセスできないFPSRビットもあります。詳細については、「Itanium® 命令のネイティブ組込み関数」のgetfpsr()およびsetfpsr()組込み関数を参照してください。
例外状態マクロ | マクロ引数 |
---|---|
_MM_SET_EXCEPTION_STATE(x) | _MM_EXCEPT_INVALID |
_MM_GET_EXCEPTION_STATE() | _MM_EXCEPT_DIV_ZERO |
_MM_EXCEPT_DENORM | |
マクロの定義
コントロール・レジスタの最下位から6番目のビットを読み書きします。 |
_MM_EXCEPT_OVERFLOW |
_MM_EXCEPT_UNDERFLOW | |
_MM_EXCEPT_INEXACT |
次の例では、ゼロ除算例外が発生したかどうかをテストします。
例外マスクマクロ | マクロ引数 |
---|---|
_MM_SET_EXCEPTION_MASK(x) | _MM_MASK_INVALID |
_MM_GET_EXCEPTION_MASK () | _MM_MASK_DIV_ZERO |
_MM_MASK_DENORM | |
マクロの定義
コントロール・レジスタの第7ビット〜第12ビットを読み書きします。 |
_MM_MASK_OVERFLOW |
_MM_MASK_UNDERFLOW | |
_MM_MASK_INEXACT |
次の例では、オーバーフロー例外とアンダーフロー例外をマスクし、その他のすべての例外をマスク解除します。
_MM_MASK_OVERFLOWと_MM_MASK_UNDERFLOWによる例外マスクの変更 |
---|
_MM_SET_EXCEPTION_MASK(MM_MASK_OVERFLOW | _MM_MASK_UNDERFLOW) |
丸めモード | マクロ引数 |
---|---|
_MM_SET_ROUNDING_MODE(x) | _MM_ROUND_NEAREST |
_MM_GET_ROUNDING_MODE() | _MM_ROUND_DOWN |
マクロの定義
コントロール・レジスタのビット13とビット14を読み書きします。 |
_MM_ROUND_UP |
_MM_ROUND_TOWARD_ZERO |
次の例では、丸めモードがゼロ方向への丸めになっているかどうかをテストします。
_MM_ROUND_TOWARD_ZEROによる丸めモードの確認 |
---|
if (_MM_GET_ROUNDING_MODE() == _MM_ROUND_TOWARD_ZERO) {
/* Rounding mode is round toward zero */ } |
ゼロ・フラッシュ・モード | マクロ引数 |
---|---|
_MM_SET_FLUSH_ZERO_MODE(x) | _MM_FLUSH_ZERO_ON |
_MM_GET_FLUSH_ZERO_MODE() | _MM_FLUSH_ZERO_OFF |
マクロの定義
コントロール・レジスタのビット15を読み書きします。 |
次の例では、ゼロ・フラッシュ・モードを無効にします。
_MM_FLUSH_ZERO_OFFによるゼロ・フラッシュ・モードの変更 |
---|
_MM_SET_FLUSH_ZERO_MODE(_MM_FLUSH_ZERO_OFF) |