インテル® C++ コンパイラー 18.0 デベロッパー・ガイドおよびリファレンス

_addcarryx_u32()、_addcarryx_u64()

2 つの 32 ビット/64 ビット符号なし整数値の合計とキャリーイン値を計算し、キャリーアウト値を返します。対応する第 4 世代インテル® Core™ プロセッサー拡張命令は ADCXADOX です。

構文

extern unsigned char _addcarryx_u32(unsigned char c_in, unsigned int src1, unsigned int src2, unsigned int *sum_out);

extern unsigned char _addcarryx_u64(unsigned char c_in, unsigned __int64 src1, unsigned __int64 src2, unsigned __int64 *sum_out);

パラメーター

c_in

キャリーイン値を特定する値

src1

32/64 ビットの整数ソース

src2

32/64 ビットの整数ソース

*sum_out

格納されているメモリー位置へのポインター

説明

2 つの 32 ビット/64 ビット整数値 (src1src2) の合計とキャリーイン値を計算します。キャリーイン値は、c_in 入力値が非ゼロの場合は '1'、それ以外の場合は '0' です。合計は、sum_out 引数で指定されるメモリー位置に格納されます。

*sum_out = src1 + src2 + (c_in !=0 ? 1 : 0)

この組込み関数は、sum_out により指定されるメモリー位置の有効性チェックを行わないため、合計の結果を格納せずにキャリーアウト値の有無を調べることはできません。

この組込み関数は、コンパイラーの決定に応じて ADCX 命令または ADOX 命令に変換されます。これらの命令は、2 つのインターリーブされたキャリーあり加算命令シーケンスを、ADCX および ADOX 命令を使用して並列実行できるようにします。

戻り値

合計により生成されるキャリーアウト値。合計結果は、sum_out 引数で指定されるメモリー位置に格納されます。