オペレーティング・システムに関連する組み込み関数

組み込み関数のプロトタイプは、ヘッダーファイル ia64intrin.h 内にあります。

組み込み関数 説明
unsigned __int64 __getReg(const int whichReg) 指定されたインデックスに基づいて、ハードウェア・レジスターから値を取得します。対応する mov = r 命令を生成します。以下のレジスターにアクセスできます。
「getReg() および setReg() のレジスター名」を参照してください。
void __setReg(const int whichReg, unsigned __int64 value) 指定されたインデックスに基づいて、ハードウェア・レジスターの値を設定します。対応する mov = r 命令を生成します。
「getReg() および setReg() のレジスター名」を参照してください。
unsigned __int64 __getIndReg(const int whichIndReg, __int64 index) インデックス付きレジスターの値を返します。インデックスは第 2 引数で、レジスターファイルは第 1 引数です。
void __setIndReg(const int whichIndReg, __int64 index, unsigned __int64 value) インデックス付きレジスターで値をコピーします。インデックスは第 2 引数で、レジスターファイルは第 1 引数です。
void *__ptr64 _rdteb(void) TEB アドレスを取得します。TEB アドレスは、r13 に保持され、move r = tp 命令に対応付けます。
void __isrlz(void) シリアル化命令を実行します。srlz.i 命令に対応付けます。
void __dsrlz(void) データをシリアル化します。srlz.d 命令に対応付けます。
unsigned __int64 __fetchadd4_acq(unsigned int *addend, const int increment) fetchadd4.acq 命令を対応付けます。
unsigned __int64 __fetchadd4_rel(unsigned int *addend, const int increment) fetchadd4.rel 命令を対応付けます。
unsigned __int64 __fetchadd8_acq(unsigned __int64 *addend, const int increment) fetchadd8.acq 命令を対応付けます。
unsigned __int64 __fetchadd8_rel(unsigned __int64 *addend, const int increment) fetchadd8.rel 命令を対応付けます。
void __fwb(void) 書き込みバッファーをフラッシュします。fwb 命令に対応付けます。
void __ldfs(const int whichFloatReg, void *src) ldfs 命令を対応付けます。指定したレジスターに単精度値をロードします。
void __ldfd(const int whichFloatReg, void *src) ldfd 命令を対応付けます。指定したレジスターに倍精度値をロードします。
void __ldfe(const int whichFloatReg, void *src) ldfe 命令を対応付けます。指定したレジスターに拡張精度値をロードします。
void __ldf8(const int whichFloatReg, void *src) ldf8 命令を対応付けます。
void __ldf_fill(const int whichFloatReg, void *src) ldf.fill 命令を対応付けます。
void __stfs(void *dst, const int whichFloatReg) sfts 命令を対応付けます。
void __stfd(void *dst, const int whichFloatReg) stfd 命令を対応付けます。
void __stfe(void *dst, const int whichFloatReg) stfe 命令を対応付けます。
void __stf8(void *dst, const int whichFloatReg) stf8 命令を対応付けます。
void __stf_spill(void *dst, const int whichFloatReg) stf.spill 命令を対応付けます。
void __mf(void) メモリーフェンス命令を実行します。mf 命令に対応付けます。
void __mfa(void) メモリーフェンス (受け入れ形式) 命令を実行します。mf.a 命令に対応付けます。
void __synci(void) メモリーの同期化を有効にします。sync.i 命令に対応付けます。
unsigned __int64 __thash(__int64) 変換ハッシュ・エントリー・アドレスを生成します。thash r = r 命令に対応付けます。
unsigned __int64 __ttag(__int64) 変換ハッシュ・エントリー・タグを生成します。ttag r = r 命令に対応付けます。
void __itcd(__int64 pa) エントリーをデータ変換キャッシュに挿入します (itc.d 命令をマップします)。
void __itci(__int64 pa) エントリーを命令変換キャッシュに挿入します (itc.i を対応付けます)。
void __itrd(__int64 whichTransReg, __int64 pa) itr.d 命令を対応付けます。
void __itri(__int64 whichTransReg, __int64 pa) itr.i 命令を対応付けます。
void __ptce(__int64 va) ptc.e 命令を対応付けます。
void __ptcl(__int64 va, __int64 pagesz) ローカル変換キャッシュをパージします。ptc.l r, r 命令に対応付けます。
void __ptcg(__int64 va, __int64 pagesz) グローバル変換キャッシュをパージします。ptc.g r, r 命令に対応付けます。
void __ptcga(__int64 va, __int64 pagesz) グローバル変換キャッシュと ALAT をパージします。ptc.ga r, r 命令に対応付けます。
void __ptri(__int64 va, __int64 pagesz) 変換レジスターをパージします。ptr.i r, r 命令に対応付けます。
void __ptrd(__int64 va, __int64 pagesz) 変換レジスターをパージします。ptr.d r, r 命令に対応付けます。
__int64 __tpa(__int64 va) tpa 命令を対応付けます。
void __invalat(void) ALAT を無効化します。invala 命令に対応付けます。
void __invala (void) void __invalat(void) と同じです。
void __invala_gr(const int whichGeneralReg) whichGeneralReg = 0-127
void __invala_fr(const int whichFloatReg) whichFloatReg = 0-127
void __break(const int) ブレーク命令と即値を生成します。
void __nop(const int) nop 命令を生成します。
void __debugbreak(void) デバッグブレーク命令フォルトを生成します。
void __fc(void*) 引数で指定されたアドレスに関連するキャッシュラインをフラッシュします。fc 命令に対応付けます。
void __sum(int mask) PSR のユーザー・マスク・ビットを設定します。sum imm24 命令に対応付けます。
void __rum(int mask) ユーザーマスクをリセットします。
__int64 _ReturnAddress(void) 呼び出し元のアドレスを返します。
void __lfetch(int lfhint, const *y) lfetch.lfhint 命令を生成します。第 1 引数の値はヒントタイプを指定します。
void __lfetch_fault(int lfhint, const *y) lfetch.fault.lfhint 命令を生成します。第 1 引数の値はヒントタイプを指定します。
void __lfetch_excl(int lfhint, const *y) lfetch.excl.lfhint 命令を生成します。第 1 引数の値 {0|1|2|3} はヒントタイプを指定します。
void __lfetch_fault_excl(int lfhint, void const *y) lfetch.fault.excl.lfhint 命令を生成します。第 1 引数の値はヒントタイプを指定します。
unsigned int __cacheSize(unsigned int cacheLevel) __cacheSize(n)n レベルのキャッシュのサイズをバイトで返します。1 は一次キャッシュを表します。キャッシュレベルが存在しない場合、0 が返されます。例えば、アプリケーションはキャッシュサイズをクエリーし、行列を操作するアルゴリズムでブロックサイズを選択するのにキャッシュサイズを使用します。
void __memory_barrier(void) コンパイラーがデータアクセス命令をスケジューリングしないバリアを生成します。コンパイラーはメモリーバリアのレジストリーにローカルデータを割り当てます。しかしグローバルデータは割り当てません。
void __ssm(int mask) システムマスクを設定します。ssm imm24 命令に対応付けます。
void __rsm(int mask) PSR のシステム・マスク・ビットをリセットします。rsm imm24 命令に対応付けます。