📄 howto_sse2.lyx
字号:
\layout Standard\begin_inset Graphics filename images_mmx/NewPCMP.gif lyxscale 65 scale 55 keepAspectRatio\end_inset \layout ItemizePCMPEQD Packed Compare for Equal, Doubleword\layout StandardLatency : 2 Throughput : 1\layout StandardPurpose:\layout StandardPCMPEQD compares the doublewords in the destination operand to the corresponding doublewords in the source operand. If the data elements are equal, the corresponding data element in destination is set to all ones. If they are not equal, the corresponding data element is set to all zeros. \layout ItemizePCMPEQW Packed Compare for Equal, Word\layout StandardLatency : 2 Throughput : 1\layout StandardPurpose:\layout StandardPCMPEQ compares the words in the destination operand to the corresponding words in the source operand. If the data elements are equal, the corresponding data element in the destination register is set to all ones. If they are not equal, the corresponding data element is set to all zeros. \layout ItemizePCMPGTB Packed Compare for Greater Than, Byte\layout StandardLatency : 2 Throughput : 1\layout StandardPurpose:\layout StandardPCMPGTB compares the signed bytes in the destination operand to the signed bytes in the source operand. If the signed data elements in destination are greater than those in the source operand, the corresponding data element in the destination operand is set to all ones. Otherwise, it is set to all zeros.\layout ItemizePCMPGTD Packed Compare Greater Than, Doubleword\layout StandardLatency : 2 Throughput : 1\layout StandardPurpose:\layout StandardPCMPGTD compares the signed doublewords in the destination operand to the signed doublewords in the source operand. If the signed data elements in destination are greater than those in the source operand, the corresponding data element in the destination operand is set to all ones. Otherwise, it is set to all zeros. \layout ItemizePCMPGTW Packed Compare for Greater Than, Word\layout StandardLatency : 2 Throughput : 1\layout StandardPurpose:\layout StandardPCMPGTBW compares the signed words in the destination operand to the signed words in the source operand. If the signed data elements in destination are greater than those in the source operand, the corresponding data element in the destination operand is set to all ones. Otherwise, it is set to all zeros.\layout StandardSSE-\layout ItemizeCMPPS xmm1,xmm2/mem128,imm8\layout StandardLatency : 4 Throughput : 2\layout StandardPurpose:\layout StandardCompares the two packed single-precision FP values in the source and destination operands, and returns the result of the comparison in the destination register. The result of each comparison is a quadword mask of all 1s (comparison true) or all 0s (comparison false). The destination is an XMM register. The source can be either an XMM register or a 128-bit memory location.\layout StandardThe third operand is an 8-bit immediate value, of which the low 3 bits define the type of comparison. The "Condition Predicates" are:\layout Standard\align center \begin_inset Tabular<lyxtabular version="3" rows="9" columns="2"><features><column alignment="center" valignment="top" leftline="true" width="0in"><column alignment="center" valignment="top" leftline="true" rightline="true" width="0"><row topline="true" bottomline="true"><cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">\begin_inset Text\layout StandardVALUE\end_inset </cell><cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">\begin_inset Text\layout StandardCOMPARISION\end_inset </cell></row><row topline="true"><cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">\begin_inset Text\layout Standard0\end_inset </cell><cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">\begin_inset Text\layout StandardEQUAL\end_inset </cell></row><row topline="true"><cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">\begin_inset Text\layout Standard1\end_inset </cell><cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">\begin_inset Text\layout StandardLESS THAN\end_inset </cell></row><row topline="true"><cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">\begin_inset Text\layout Standard2\end_inset </cell><cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">\begin_inset Text\layout StandardLESS THAN OR EQUAL\end_inset </cell></row><row topline="true"><cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">\begin_inset Text\layout Standard3\end_inset </cell><cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">\begin_inset Text\layout StandardUNORDERED\end_inset </cell></row><row topline="true"><cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">\begin_inset Text\layout Standard4\end_inset </cell><cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">\begin_inset Text\layout StandardNOT EQUAL\end_inset </cell></row><row topline="true"><cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">\begin_inset Text\layout Standard5\end_inset </cell><cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">\begin_inset Text\layout StandardNOT LESS THAN\end_inset </cell></row><row topline="true"><cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">\begin_inset Text\layout Standard6\end_inset </cell><cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">\begin_inset Text\layout StandardNOT LESS THAN EQUAL\end_inset </cell></row><row topline="true" bottomline="true"><cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">\begin_inset Text\layout Standard7\end_inset </cell><cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">\begin_inset Text\layout StandardORDERED\end_inset </cell></row></lyxtabular>\end_inset \layout ItemizeCMPSS xmm1,xmm2/mem32,imm8 \layout StandardLatency : 4 Throughput : 2\layout StandardPurpose:\layout StandardCompare single precision floating point value in lower 32 bits and return mask as result\layout ItemizeCOMISS xmm1,xmm2/mem64\layout StandardLatency : 6 Throughput : 2\layout StandardPurpose:\layout StandardCOMISS compares the low-order single-precision FP value in the two source operands. ZF, PF, and CF are set according to the result. OF, AF, and AF are cleared. The unordered result is returned if either source is a NaN (QNaN or SNaN). The destination operand is an XMM register. The source can be either an XMM register or a memory location.\layout StandardThe flags are set according to the following rules:\layout Standard\align center \begin_inset Tabular<lyxtabular version="3" rows="5" columns="3"><features><column alignment="center" valignment="top" leftline="true" width="0"><column alignment="center" valignment="top" leftline="true" width="0"><column alignment="center" valignment="top" leftline="true" rightline="true" width="0"><row topline="true" bottomline="true"><cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">\begin_inset Text\layout StandardResult\end_inset </cell><cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">\begin_inset Text\layout StandardFlags\end_inset </cell><cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">\begin_inset Text\layout StandardValues\end_inset </cell></row><row topline="true"><cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">\begin_inset Text\layout StandardUNORDERED\end_inset </cell><cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">\begin_inset Text\layout StandardZF,PF,CF\end_inset </cell><cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">\begin_inset Text\layout Standard111\end_inset </cell></row><row topline="true"><cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">\begin_inset Text\layout StandardGREATER THAN\end_inset </cell><cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">\begin_inset Text\layout StandardZF,PF,CF\end_inset </cell><cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">\begin_inset Text\layout Standard000\end_inset </cell></row><row topline="true"><cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">\begin_inset Text\layout StandardLESS THAN\end_inset </cell><cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">\begin_inset Text\layout StandardZF,PF,CF\end_inset </cell><cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">\begin_inset Text\layout Standard001\end_inset </cell></row><row topline="true" bottomline="true"><cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">\begin_inset Text\layout StandardEQUAL\end_inset </cell><cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">\begin_inset Text\layout StandardZF,PF,CF\end_inset </cell><cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">\begin_inset Text\layout Standard100\end_inset </cell></row></lyxtabular>\end_inset \layout ItemizeUCOMISS xmm1,xmm2/mem32\layout StandardLatency : 6 Throughput : 2\layout StandardPurpose:\layout StandardUCOMISS compares the 32-bit floating-point numbers in the lowest part of the two operands, and sets the CPU flags appropriately. UCOMISS differs from COMISS in that it signals an invalid numeric exeception only if an operand is an sNaN, whereas COMISS does so also if an operand is a qNaN. \layout StandardSSE2-\layout ItemizeCMPPD xmm, xmm \layout StandardLatency: 4 Throughput: 2 \layout StandardPurpose:\layout StandardCompare double precision floating point values and return masks as result\layout ItemizeCMPSD xmm, xmm, imm8 \layout StandardLatency: 4 Throughput: 2\layout StandardPurpose:\layout StandardCompare double precision floating point value in lower 64 bits and return mask as result\layout ItemizeCOMISD xmm, xmm \layout StandardLatency: 6 Throughput: 2\layout StandardPurpose:\layout StandardCompare double precision floating point value in lower 64 bits and return result in flag register\layout ItemizeUCOMISD xmm, xmm \layout StandardLatency: 6 Throughput: 2\layout StandardPurpose:\layout StandardCompare unordered double precision floating point value in lower 64 bits and return result in flag register\layout SubsectionConversion Instructions\layout StandardMMX-\layout StandardUsage: instruction destination, source \layout StandardDestination: MMX register. \layout StandardSource: MMX register or 64-bit memory operand.\layout ItemizePACKSSDW Pack Doublewords into Words (Signed with Saturation)\layout StandardLatency : 2 Throughput : 1\layout StandardPurpose:\layout StandardPACKSSDW packs two signed doublewords from the source operand and two signed
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -