Assembly 是否有';或';与x64组件中的PTEST等效?
在x64汇编中,如果在%XMM0和%XMM1中没有设置相同的位,则设置零标志;如果在%XMM0中设置的所有内容也在%XMM1中设置,则设置进位标志:Assembly 是否有';或';与x64组件中的PTEST等效?,assembly,64-bit,x86-64,intel,Assembly,64 Bit,X86 64,Intel,在x64汇编中,如果在%XMM0和%XMM1中没有设置相同的位,则设置零标志;如果在%XMM0中设置的所有内容也在%XMM1中设置,则设置进位标志: IF (SRC[127:0] bitwiseAND DEST[127:0] = 0) ZF = 1; ELSE ZF = 0; FI; IF (SRC[127:0] bitwiseAND (bitwiseNOT DEST[127:0]) = 0) CF = 1; ELSE CF = 0; FI; DEST[127:0
IF (SRC[127:0] bitwiseAND DEST[127:0] = 0)
ZF = 1;
ELSE
ZF = 0;
FI;
IF (SRC[127:0] bitwiseAND (bitwiseNOT DEST[127:0]) = 0)
CF = 1;
ELSE
CF = 0;
FI;
DEST[127:0] Unmodified;
AF = OF = PF = SF = 0;
我经常发现自己想要一个标志,如果在%XMM0或%XMM1中设置了任何位,就会设置该标志。您可以按照以下两个说明执行此操作:
POR %XMM0 -> %XMM1
PTEST %XMM1, %XMM1
但这需要额外的延迟周期。我现在有一个案例,我真的想挽救这个循环。有没有更快的方法?或者我用PTEST做这件事缺少的一些明显的方法?我希望有一些隐藏的等价物:
PTEST_OR %XMM0, %XMM1
这是否存在 不幸的是,没有。如果您可以生成倒置的条件(因此您要查找的是任择一=0而不是任择一=1),则可能可以使用PTEST,因为AND就是这样做的。