インテル® C++ コンパイラー 18.0 デベロッパー・ガイドおよびリファレンス
2 つの 32 ビット/64 ビット符号なし整数値の合計とキャリーイン値を計算し、キャリーアウト値を返します。対応する第 4 世代インテル® Core™ プロセッサー拡張命令は ADCX と ADOX です。
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 ビット整数値 (src1、src2) の合計とキャリーイン値を計算します。キャリーイン値は、c_in 入力値が非ゼロの場合は '1'、それ以外の場合は '0' です。合計は、sum_out 引数で指定されるメモリー位置に格納されます。
*sum_out = src1 + src2 + (c_in !=0 ? 1 : 0)
この組込み関数は、sum_out により指定されるメモリー位置の有効性チェックを行わないため、合計の結果を格納せずにキャリーアウト値の有無を調べることはできません。
この組込み関数は、コンパイラーの決定に応じて ADCX 命令または ADOX 命令に変換されます。これらの命令は、2 つのインターリーブされたキャリーあり加算命令シーケンスを、ADCX および ADOX 命令を使用して並列実行できるようにします。
合計により生成されるキャリーアウト値。合計結果は、sum_out 引数で指定されるメモリー位置に格納されます。