\subsection{\index{cmpl}cmpl}

\index{compare for lower}
CoMPare for Lower


\begin{tabular}{l}
  {\bf cmpl r3, r2, r1} \\
  {\bf scmpl r3, r2, r1} \\
\end{tabular}

~~~~~~
Computes r1 = r2 {\htmlLt} r3 ? -1 : 0

~~~~~~
Compare the two source operands and sets or clear the destination register
according to the result. This operation is performed in the Increment unit so 
no substraction is required and it is performed faster for large data. In 
order to compare for greater, simply swap the source operands or negate the 
result of CMPLE. The comparison is valid only for unsigned values (yet)

~~~~~~
{ \em Remark :} this instruction can't be used for IEEE floating point data
(the comparison is not signed).

\begin{center}

\begin{tabular}{|l|l|l|l|l|l|}
 \hline
\multicolumn{1}{|r| }{size :
} & \multicolumn{1}{c| }{8
} & \multicolumn{1}{c| }{6
} & \multicolumn{1}{c| }{6
} & \multicolumn{1}{c| }{6
} & \multicolumn{1}{c| }{6
 } \\
 \hline
\multicolumn{1}{|r| }{bits :
} & {31 ~ ~ ~ ~ ~ ~ ~ ~ 24
} & {23 ~ ~ ~ ~ ~ ~ 18
} & {17 ~ ~ ~ ~ ~ ~ 12
} & {11 ~ ~ ~ ~ ~ ~ 6
} & {5 ~ ~ ~ ~ ~ ~ 0
 } \\
 \hline
\multicolumn{1}{|r| }{function :
} & \multicolumn{1}{c| }{OP\_CMPL
} & \multicolumn{1}{c| }{Flags
} & \multicolumn{1}{c| }{Reg 3
} & \multicolumn{1}{c| }{Reg 2
} & \multicolumn{1}{c| }{Reg 1
}
\\ \hline

\end{tabular}



\begin{tabular}{|l|l|l|l|}
 \hline
\multicolumn{1}{|c| }{~ ~ Flags ~ ~
} & \multicolumn{1}{c| }{Syntax
} & {Values
} & {Function
 } \\
 \hline
\multicolumn{1}{|c| }{23-22
} & {.q, .d or .b postfix
} & {*
} & {Defines the size parameter
 } \\
 \hline
\multicolumn{1}{|c| }{21
} & {s- prefix
} & {1 if set
} & {Defines if the operation is SIMD
 } \\
 \hline
\multicolumn{1}{|c| }{20-18
} & {(none yet)
} & {0
} & {Reserved
}
\\ \hline

\end{tabular}


~

{\bf Examples : }
\end{center}


R1 contains 0x0000000500000003 (in a 64-bit system)\\
R2 contains 0x0000000700000001

{\tt
{\bf scmpl.b r1,r2,r3 }: r3 = 0x00000000000000FF\\
{\bf scmpl.b r2,r1,r3 }: r3 = 0x000000FF00000000\\
{\bf cmpl r1,r2,r3 }: r3 = 0x0000000000000000
}

{\bf Performance (FC0 only) :}



{\em Execution Unit :} Increment Unit\\
{\em Latency :} 1 cycle\\
{\em Throughput :} 1 per cycle per IU.\\

~

\pagebreak


