組み込み関数のプロトタイプは、ヘッダーファイル ia64intrin.h 内にあります。
組み込み関数 | 操作 | 対応する IA-64 命令 |
---|---|---|
_m64_dep_mr | デポジット | dep |
_m64_dep_mi | デポジット | dep |
_m64_dep_zr | デポジット | dep.z |
_m64_dep_zi | デポジット | dep.z |
_m64_extr | 抽出 | extr |
_m64_extru | 抽出 | extr.u |
_m64_xmal | 積和 | xma.l |
_m64_xmalu | 積和 | xma.lu |
_m64_xmah | 積和 | xma.h |
_m64_xmahu | 積和 | xma.hu |
_m64_popcnt | 1 に設定されたビットのカウント | popcnt |
_m64_shladd | 左シフトおよび加算 | shladd |
_m64_shrp | 連結右シフト | shrp |
組み込み関数 | 説明 |
---|---|
void _fsetc(unsigned int amask, unsigned int omask) | FPSR.sf0 の制御ビットをセットします。fsetc.sf0 r, r 命令に対応付けます。これに対応する、制御ビットの読み取り命令はありません。_mm_getfpsr() を使用してください。 |
void _fclrf(void) | 浮動小数点ステータスフラグ (FPSR.sf0 の 6 ビット・フラグ) をクリアします。fclrf.sf0 命令に対応付けます。 |
__int64 _m64_dep_mr(__int64 r, __int64 s, const int pos, const int len)
右揃えした 64 ビット値 r を、s の値の中の任意のビット位置にデポジットし、その結果を返します。デポジットしたビット・フィールドは、ビット位置 pos を始点として、len で指定したビット数だけ左に (最上位ビットの方向に) 延長します。
__int64 _m64_dep_mi(const int v, __int64 s, const int p, const int len)
符号で拡張した値 v (すべて 1 またはすべて 0) を、s の値の中の任意のビット位置にデポジットし、その結果を返します。デポジットしたビット・フィールドは、ビット位置 p を始点として、len で指定したビット数だけ左に (最上位ビットの方向に) 延長します。
__int64 _m64_dep_zr(__int64 s, const int pos, const int len)
右揃えした 64 ビット値 s を、すべて 0 の 64 ビット・フィールド内の任意のビット位置にデポジットし、その結果を返します。デポジットしたビット・フィールドは、ビット位置 pos を始点として、len で指定したビット数だけ左に (最上位ビットの方向に) 延長します。
__int64 _m64_dep_zi(const int v, const int pos, const int len)
符号で拡張した値 v (すべて 1 またはすべて 0) を、すべて 0 の 64 ビット・フィールド内の任意のビット位置にデポジットし、その結果を返します。デポジットしたビット・フィールドは、ビット位置 pos を始点として、len で指定したビット数だけ左に (最上位ビットの方向に) 延長します。
__int64 _m64_extr(__int64 r, const int pos, const int len)
64 ビット値 r から 1 つのフィールドを抽出し、右揃えにして符号で拡張した値を返します。抽出したフィールドは、pos の位置を始点として、len ビットだけ左に延長します。抽出したフィールドの最上位ビットの符号が使用されます。
__int64 _m64_extru(__int64 r, const int pos, const int len)
64 ビット値 r から 1 つのフィールドを抽出し、右揃えにして 0 で拡張した値を返します。抽出したフィールドは、pos の位置を始点として、len ビットだけ左に延長します。
__int64 _m64_xmal(__int64 a, __int64 b, __int64 c)
64 ビット値 a と b を符号付き整数と見なして乗算し、全 128 ビットの符号付きの結果を求めます。64 ビット値 c を 0 で拡張してこの積に加算し、得られた和の最下位 64 ビットを返します。
__int64 _m64_xmalu(__int64 a, __int64 b, __int64 c)
64 ビット値 a と b を符号付き整数と見なして乗算し、全 128 ビットの符号なしの結果を求めます。64 ビット値 c を 0 で拡張してこの積に加算し、得られた和の最下位 64 ビットを返します。
__int64 _m64_xmah(__int64 a, __int64 b, __int64 c)
64 ビット値 a と b を符号付き整数と見なして乗算し、全 128 ビットの符号付きの結果を求めます。64 ビット値 c を 0 で拡張してこの積に加算し、得られた和の最上位 64 ビットを返します。
__int64 _m64_xmahu(__int64 a, __int64 b, __int64 c)
64 ビット値 a と b を符号なし整数と見なして乗算し、全 128 ビットの符号なしの結果を求めます。64 ビット値 c を 0 で拡張してこの積に加算し、得られた和の最上位 64 ビットを返します。
__int64 _m64_popcnt(__int64 a)
64 ビット整数 a の中のビットのうち、値が 1 のビットをカウントし、得られたビット数を返します。
__int64 _m64_shladd(__int64 a, const int count, __int64 b)
a を count ビットだけ左にシフトして、b に加算します。結果を返します。
__int64 _m64_shrp(__int64 a, __int64 b, const int count)
a と b を連結して 128 ビット値を作成し、count ビットだけ右にシフトします。結果の最下位 64 ビットを返します。