1

xmm1 ベクトルに 4 つの単精度浮動小数点 {1.5, 1.5, 1.5, 1.5} をロードし、同じ点を持つ xmm2 をロードすると、xmm1 == xmm2 となります。次に、それらを比較したいので、アセンブリで記述します。

movaps  %xmm1, %xmm2
cmpeqps %xmm0, %xmm2

cmpeqpsは eflags を設定しないため、次のように言えます。

jne somewhere

ucomissを使用してベクトルの最も右側の部分を比較し、次に右にシフトしてさらに 3 回繰り返す必要があるでしょうか?

ありがとう

4

2 に答える 2

3

を使用できますcmpeqps。4 つのフラグを抽出するだけです。例(テストされていません)

cmpeqps xmm2, xmm1
movmskps eax, xmm2
cmp eax, 15
je somewhere
于 2015-03-10T19:01:16.090 に答える
1

ベクトル化された算術演算のアルゴリズムは、条件分岐を避けるように設計する必要があります。代わりに、各レーンが同じ命令を実行します。条件は、通常、考えられるすべての結果を評価し、マスクを使用して正しい結果を選択することによって実行されます。

于 2015-03-10T19:30:13.197 に答える