これらの組込み関数のプロトタイプは、ヘッダファイル ia64intrin.h 内にあります。
組込み関数 | 対応する 命令 |
---|---|
__int64 _m64_dep_mr(__int64 r, __int64 s, const int pos, const int len) | dep (Deposit) |
__int64 _m64_dep_mi(const int v, __int64 s, const int p, const int len) | dep (Deposit) |
__int64 _m64_dep_zr(__int64 s, const int pos, const int len) | dep.z (Deposit) |
__int64 _m64_dep_zi(const int v, const int pos, const int len) | dep.z (Deposit) |
__int64 _m64_extr(__int64 r, const int pos, const int len) | extr (Extract) |
__int64 _m64_extru(__int64 r, const int pos, const int len) | extr.u (Extract) |
__int64 _m64_xmal(__int64 a, __int64 b, __int64 c) | xma.l (Fixed-point multiply add。128 ビットの下位 64 ビットを使用します。結果は符号付きです。) |
__int64 _m64_xmalu(__int64 a, __int64 b, __int64 c) | xma.lu (Fixed-point multiply add。128 ビットの下位 64 ビットを使用します。結果は符号なしです。) |
__int64 _m64_xmah(__int64 a, __int64 b, __int64 c) | xma.h (Fixed-point multiply add。128 ビットの上位 64 ビットを使用します。結果は符号付きです。) |
__int64 _m64_xmahu(__int64 a, __int64 b, __int64 c) | xma.hu (Fixed-point multiply add。128 ビットの上位 64 ビットを使用します。結果は符号なしです。) |
__int64 _m64_popcnt(__int64 a) | popcnt (Population count) |
__int64 _m64_shladd(__int64 a, const int count, __int64 b) | shladd (Shift left and add) |
__int64 _m64_shrp(__int64 a, __int64 b, const int count) | shrp (Shift right pair) |
組込み関数 | 説明 |
---|---|
void _fsetc(int amask, 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 ビットを返します。