ネイティブ組み込み関数

ネイティブ組み込み関数のプロトタイプは、ヘッダーファイル 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

FSR 演算

組み込み関数

説明

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 ビット値 ab を符号付き整数と見なして乗算し、全 128 ビットの符号付きの結果を求めます。64 ビット値 c を 0 で拡張してこの積に加算し、得られた和の最下位 64 ビットを返します。

 

__int64 _m64_xmalu(__int64 a, __int64 b, __int64 c)

64 ビット値 ab を符号付き整数と見なして乗算し、全 128 ビットの符号なしの結果を求めます。64 ビット値 c を 0 で拡張してこの積に加算し、得られた和の最下位 64 ビットを返します。

 

__int64 _m64_xmah(__int64 a, __int64 b, __int64 c)

64 ビット値 ab を符号付き整数と見なして乗算し、全 128 ビットの符号付きの結果を求めます。64 ビット値 c を 0 で拡張してこの積に加算し、得られた和の最上位 64 ビットを返します。

 

__int64 _m64_xmahu(__int64 a, __int64 b, __int64 c)

64 ビット値 ab を符号なし整数と見なして乗算し、全 128 ビットの符号なしの結果を求めます。64 ビット値 c を 0 で拡張してこの積に加算し、得られた和の最上位 64 ビットを返します。

 

__int64 _m64_popcnt(__int64 a)

64 ビット整数 a の中のビットのうち、値が 1 のビットをカウントし、得られたビット数を返します。

 

__int64 _m64_shladd(__int64 a, const int count, __int64 b)

acount ビットだけ左にシフトして、b に加算します。結果を返します。

 

__int64 _m64_shrp(__int64 a, __int64 b, const int count)

ab を連結して 128 ビット値を作成し、count ビットだけ右にシフトします。結果の最下位 64 ビットを返します。