\subsection{\index{cmple}cmple}

\index{compare for lower or equal}
CoMPare for Lower or Equal


\begin{tabular}{l}
  {\bf cmple r3, r2, r1} \\
  {\bf scmple 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 or equal, simply swap the source operands or 
negate the result of CMPL. 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\_CMPLE
} & \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 = 0xFFFFFF00FFFFFFFF\\
{\bf scmpl.b r2,r1,r3 }: r3 = 0xFFFFFFFFFFFFFF00\\
{\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


