問題タブ [carryflag]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
cuda - CUDA - PTX キャリー伝搬
CUDA PTX に 2 つの 32 ビット符号なし整数を追加したいのですが、キャリーの伝播も処理したいと考えています。以下のコードを使用してそれを実行していますが、結果は期待どおりではありません。
ドキュメントによると、add.cc.u32 d, a, b
は整数加算を実行し、キャリーアウト値を条件コード レジスタに書き込みますCC.CF
。
一方、キャリーインでaddc.cc.u32 d, a, b
整数加算を行い、キャリーアウトした値をコンディションコードレジスタに書き込みます。この命令のセマンティクスは. 私も違いなしで試しました。
d = a + b + CC.CF
addc.u32 d, a, b
私の知る限り、結果が変数に収まらない場合はキャリーが発生します。これはここで発生し、符号ビットが破損している場合はオーバーフローしますが、符号なしの値で作業しています。
上記のコードは に追加しようとして0xFFFFFFFF
います0x2
が、もちろん結果は 32 ビットに適合しません。なぜ__uaddc(0,0)
呼び出し後に 1 を取得しないのですか?
編集
Nvidia Geforce GT 520mx
Windows 7 Ultimate、64 ビット
Visual Studio 2012
CUDA 7.0
assembly - 16ビットバイナリ加算の補助フラグの設定方法
8 ビットの 2 進加算を実行するとき、3 ビット目から 4 ビット目への桁上げがある場合、補助フラグが 1 に設定されることを知っています。しかし、2 つの 16 ビット数の加算はどうでしょうか? 私はウェブ上で明確な答えを見ることができません。
Intel 8086 マイクロプロセッサを勉強しています...
たとえば、0x30a2 と 0xf1ac の 2 つの数字を追加すると、
0011 0000 1010 0010 + 1111 0001 1010 1100
どこで確認すればいいのかわからない