__fp_status()

Note

ARM コンパイラツールチェーンでは、AArch64 ターゲットに対する浮動小数点例外トラップをサポートしていません。

旧バージョンの ARM ライブラリの中には、浮動小数点環境でステータスワードを操作する __fp_status() という名前の関数が実装されていたものがあります。この関数は、__ieee_status() と同じですが、旧式のステータスワードのレイアウトを使用します。

__fp_status() の関数プロトタイプは次のとおりです。

unsigned int __fp_status(unsigned int mask, unsigned int flags);

Note

この関数では、例外をサポートする浮動小数点モデルが必要です。ARM コンパイラ 6 では、これはデフォルトで有効になっており、-ffast-math などの armclang コマンドラインオプションで無効になります。

Figure 1 は、__fp_status() を使用したときのステータスワードのレイアウトを示しています。

Figure 1. 浮動小数点ステータスワードのレイアウト

To view this graphic, your browser must support the SVG format. Either install a browser with native support, or install an appropriate plugin such as Adobe SVG Viewer.


Figure 1 のフィールドの意味は次のとおりです。

丸めモードを __fp_status() 呼び出しで変更することはできません。

__fp_status() 呼び出しの定義に加え、stdlib.h ではその引数に使用される次の定数も定義されています。

#define __fpsr_IXE  0x100000
#define __fpsr_UFE  0x80000
#define __fpsr_OFE  0x40000
#define __fpsr_DZE  0x20000
#define __fpsr_IOE  0x10000
#define __fpsr_IXC  0x10
#define __fpsr_UFC  0x8
#define __fpsr_OFC  0x4
#define __fpsr_DZC  0x2
#define __fpsr_IOC  0x1

例えば、無効演算例外をトラップして、他のすべての例外のトラップを無効にするには、次の入力パラメータを使用して __fp_status() を呼び出します。

__fp_status(_fpsr_IXE | _fpsr_UFE | _fpsr_OFE |
            _fpsr_DZE | _fpsr_IOE, _fpsr_IOE);

不正確結果例外のトラップを無効にするには、以下のように記述します。

__fp_status(_fpsr_IXE, 0);

アンダーフロースティッキーフラグをクリアするには、以下のように記述します。

__fp_status(_fpsr_UFC, 0);

Show/hide関連項目

タスク

『ARM C ライブラリ、C++ ライブラリ、および浮動小数点サポートユーザガイド』

参照
Copyright © 2014 ARM. All rights reserved.ARM DUI 0809AJ
Non-ConfidentialID061814