在x64汇编中,如果在%XMM0和%XMM1中没有设置相同的位,则PTEST %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] Unmodified;
AF = OF = PF = SF = 0;
如果在%XMM0 或%XMM1中设置了任何位,我经常会发现自己想要设置一个标志。您可以使用以下两条说明执行此操作:
POR %XMM0 -> %XMM1
PTEST %XMM1, %XMM1
但这需要额外的延迟周期。我现在有一个案例,我真的想保存这个周期。有更快的方法吗?或者一些显而易见的方式我错过了使用PTEST这样做?我希望有一些隐藏的等价物:
PTEST_OR %XMM0, %XMM1
这是否存在?