固定小数点組み込み関数

プロトタイプ 説明
int __assert1(int, int, int); カーネル・デバッグのためのトラップ命令を生成します。
void __assert2(int); カーネル・デバッグのためのトラップ命令を生成します。
unsigned int __cntlz4(unsigned int); 先行ゼロ・カウント。4 バイト整数。
unsigned int __cntlz8(unsigned long long); 先行ゼロ・カウント。8 バイト整数。
unsigned int __cnttz4(unsigned int); 後続ゼロ・カウント。4 バイト整数。
unsigned int __cnttz8(unsigned long long); 後続ゼロ・カウント。8 バイト整数。
signed long long __llabs (signed long long); 引数の絶対値を戻します。
unsigned short __load2r(unsigned short*); Load Halfword Byte Reversed
unsigned int __load4r(unsigned int*); Load Word Byte Reversed
long long int __mulhd(long long int ra, long long int rb); Multiply High Doubleword Signed

オペランド rarb の 128 ビットの積から、 高位の 64 ビットを戻します。

64 ビット・モードでのみサポートされます。

unsigned long long int __mulhdu(unsigned long long int ra, unsigned long long int rb); Multiply High Doubleword Unsigned

オペランド rarb の 128 ビットの積から、 高位の 64 ビットを戻します。

64 ビット・モードでのみサポートされます。

int __mulhw(int ra, int rb); Multiply High Word Signed

オペランド rarb の 64 ビットの積から、 高位の 32 ビットを戻します。

unsigned int __mulhwu(unsigned int ra, unsigned int rb); Multiply High Word Unsigned

オペランド rarb の 64 ビットの積から、 高位の 32 ビットを戻します。

int __popcnt4(unsigned int); 32 ビット整数のビット・セットの数を戻します。
int __popcnt8(unsigned long long); 64 ビット整数のビット・セットの数を戻します。
unsigned long __popcntb(unsigned long); ソース・オペランドの各バイトの 1 ビットをカウントし、そのカウントを結果の対応するバイトに入れます。
int __poppar4(unsigned int); 32 ビット整数に奇数のビット・セットがあった場合、1 を戻します。それ以外は、0 を戻します。
int __poppar8(unsigned long long); 64 ビット整数に奇数のビット・セットがあった場合、1 を戻します。それ以外は、0 を戻します。
unsigned long long __rdlam(unsigned long long rs, unsigned int shift, unsigned long long mask); Rotate Double Left and AND with Mask

rs の内容を左にshift ビット回転し、回転されたデータをマスクと AND 演算します。mask は定数であり、隣接するビット・フィールドを表していなければなりません。

unsigned long long __rldimi(unsigned long long rs, unsigned long long is, unsigned int shift, unsigned long long mask); Rotate Left Doubleword Immediate then Mask Insert

rs を左方に shift ビットだけ回転してから、 rs をビット・マスク mask の下の is に挿入します。shift は定数で、<=shift<=63 でなければなりません。mask は定数であり、隣接するビット・フィールドを表していなければなりません。

unsigned int __rlwimi(unsigned int rs, unsigned int is, unsigned int shift, unsigned int mask); Rotate Left Word Immediate then Mask Insert

rs を左方に shift ビットだけ回転してから、 rs をビット・マスク mask の下の is に挿入します。shift は定数で、<=shift<=31 でなければなりません。mask は定数であり、隣接するビット・フィールドを表していなければなりません。

unsigned int __rlwnm(unsigned int rs, unsigned int shift, unsigned int mask); Rotate Left Word then AND with Mask

rs を左方に shift ビットだけ回転し、ビット・マスク maskrs を AND 演算します。 mask は定数であり、隣接するビット・フィールドを表していなければなりません。

unsigned int __rotatel4(unsigned int rs, unsigned int shift); Rotate Left Word

rs を左方に shift ビットだけ回転します。

unsigned long long __rotatel8(unsigned long long rs, unsigned long long shift); Rotate Left Doubleword

rs を左方に shift ビットだけ回転します。

void __store2r(unsigned short, unsigned short *); Store 2-byte Register
void __store4r(unsigned int, unsigned int *); Store 4-byte Register
void __tdw(long long a, long long b, unsigned int TO); Trap Doubleword

オペランド a をオペランド b と比較します。この比較の結果、TO (これは 5 ビットの定数で、0 から 31 (包括的) の値を含んでいる) に AND 演算される条件は 5 つです。

結果が 0 でない場合、 システム・トラップ・ハンドラーが呼び出されます。それぞれのビット位置が設定されている場合は、次の可能な条件のうちの 1 つ以上を示しています。

0 (高位ビット)
ab より小 (符号付きの比較を使用)。
1
ab より大 (符号付きの比較を使用)。
2
ab と等しい。
3
ab より小 (符号なしの比較を使用)。
4 (下位ビット)
ab より大 (符号なしの比較を使用)。

64 ビット・モードでのみサポートされます。

void __trap(int); Trap if the Parameter is not Zero
void __trapd (long long); Trap if the Parameter is not Zero

64 ビット・モードでのみサポートされます。

void __tw(int a, int b, unsigned int TO); Trap Word

オペランド a をオペランド b と比較します。この比較の結果、TO (これは 5 ビットの定数で、0 から 31 (包括的) の値を含んでいる) に AND 演算される条件は 5 つです。

結果が 0 でない場合、 システム・トラップ・ハンドラーが呼び出されます。それぞれのビット位置が設定されている場合は、次の可能な条件のうちの 1 つ以上を示しています。

0 (高位ビット)
ab より小 (符号付きの比較を使用)。
1
ab より大 (符号付きの比較を使用)。
2
ab と等しい。
3
ab より小 (符号なしの比較を使用)。
4 (下位ビット)
ab より大 (符号なしの比較を使用)。