<!--
	Assembler Encoding for the JumpCondition Mnemonic
	Version: 1.0.0
	Date Created:  2007-04-29
	Last Modified: 2007-05-05

	Designed for Pentium and higher x86 Processors in 32bit mode protected mode
	Optimized for Size

	Done list:
	o Everything!
-->
<encoding procfamily="x86" bitdepth="32" proc="P1">
	<!-- ############################################################################################################ -->
	<!-- ############################################################################################################ -->
	<!-- ############################################################################################################ -->
	<!-- JumpCondition Mnemonic -->
	<mnemonic name="JumpCondition" type="JumpCond" option="Size">
		<codetypeset param0="Condition" param1="Label">
			<!-- ******************************************************************************************************** -->
			<!-- Equality Conditions -->

			<!-- $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ -->
			<!-- Equal/Zero -->
			<codeset param0="Equal" param1="M,R" total="3|7/1|5" totalv="2|7/0|5" endpipe="V">
				<line code="jne @l1"    time="!V1"         comment="Jump past our jump to pointer if not Equal" />
				<line code="jmp @0.U32" time="&#45;&#45;2" comment="Jump to the location pointed to" />
				<line code="@l1:"       time="" />
			</codeset>
			<codeset param0="Equal" param1="I" total="1|5" totalv="0|5" endpipe="V">
				<line code="je @0" time="!V1" comment="Jump if Equal" />
			</codeset>

			<!-- $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ -->
			<!-- Not Equal/Zero -->
			<codeset param0="NotEqual" param1="M,R" total="3|7/1|5" totalv="2|7/0|5" endpipe="V">
				<line code="je @l1"     time="!V1"         comment="Jump past our jump to pointer if Equal" />
				<line code="jmp @0.U32" time="&#45;&#45;2" comment="Jump to the location pointed to" />
				<line code="@l1:"       time="" />
			</codeset>
			<codeset param0="NotEqual" param1="I" total="1|5" totalv="0|5" endpipe="V">
				<line code="jne @0" time="!V1" comment="Jump if Not Equal" />
			</codeset>


			<!-- ******************************************************************************************************** -->
			<!-- Unsigned Conditions -->
			
			<!-- $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ -->
			<!-- Above -->
			<codeset param0="Above" param1="M,R" total="3|7/1|5" totalv="2|7/0|5" endpipe="V">
				<line code="jna @l1"    time="!V1"         comment="Jump past our jump to pointer if not Above" />
				<line code="jmp @0.U32" time="&#45;&#45;2" comment="Jump to the location pointed to" />
				<line code="@l1:"       time="" />
			</codeset>
			<codeset param0="Above" param1="I" total="1|5" totalv="0|5" endpipe="V">
				<line code="ja @0" time="!V1" comment="Jump if Above" />
			</codeset>

			<!-- $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ -->
			<!-- Above or Equal -->
			<codeset param0="AboveOrEqual" param1="M,R" total="3|7/1|5" totalv="2|7/0|5" endpipe="V">
				<line code="jnae @l1"   time="!V1"         comment="Jump past our jump to pointer if not Above or Equal" />
				<line code="jmp @0.U32" time="&#45;&#45;2" comment="Jump to the location pointed to" />
				<line code="@l1:"       time="" />
			</codeset>
			<codeset param0="AboveOrEqual" param1="I" total="1|5" totalv="0|5" endpipe="V">
				<line code="jae @0" time="!V1" comment="Jump if Above or Equal" />
			</codeset>

			<!-- $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ -->
			<!-- Below -->
			<codeset param0="Below" param1="M,R" total="3|7/1|5" totalv="2|7/0|5" endpipe="V">
				<line code="jnb @l1"    time="!V1"         comment="Jump past our jump to pointer if not Below" />
				<line code="jmp @0.U32" time="&#45;&#45;2" comment="Jump to the location pointed to" />
				<line code="@l1:"       time="" />
			</codeset>
			<codeset param0="Below" param1="I" total="1|5" totalv="0|5" endpipe="V">
				<line code="jb @0" time="!V1" comment="Jump if Below" />
			</codeset>

			<!-- $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ -->
			<!-- Below or Equal -->
			<codeset param0="BelowOrEqual" param1="M,R" total="3|7/1|5" totalv="2|7/0|5" endpipe="V">
				<line code="jnbe @l1"   time="!V1"         comment="Jump past our jump to pointer if not Below or Equal" />
				<line code="jmp @0.U32" time="&#45;&#45;2" comment="Jump to the location pointed to" />
				<line code="@l1:"       time="" />
			</codeset>
			<codeset param0="BelowOrEqual" param1="I" total="1|5" totalv="0|5" endpipe="V">
				<line code="jbe @0" time="!V1" comment="Jump if Below or Equal" />
			</codeset>


			<!-- ******************************************************************************************************** -->
			<!-- Signed Conditions -->
			
			<!-- $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ -->
			<!-- Greater -->
			<codeset param0="Greater" param1="M,R" total="3|7/1|5" totalv="2|7/0|5" endpipe="V">
				<line code="jng @l1"    time="!V1"         comment="Jump past our jump to pointer if not Greater" />
				<line code="jmp @0.U32" time="&#45;&#45;2" comment="Jump to the location pointed to" />
				<line code="@l1:"       time="" />
			</codeset>
			<codeset param0="Greater" param1="I" total="1|5" totalv="0|5" endpipe="V">
				<line code="jg @0" time="!V1" comment="Jump if Greater" />
			</codeset>

			<!-- $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ -->
			<!-- Greater or Equal -->
			<codeset param0="GreaterOrEqual" param1="M,R" total="3|7/1|5" totalv="2|7/0|5" endpipe="V">
				<line code="jnge @l1"   time="!V1"         comment="Jump past our jump to pointer if not Greater or Equal" />
				<line code="jmp @0.U32" time="&#45;&#45;2" comment="Jump to the location pointed to" />
				<line code="@l1:"       time="" />
			</codeset>
			<codeset param0="GreaterOrEqual" param1="I" total="1|5" totalv="0|5" endpipe="V">
				<line code="jge @0" time="!V1" comment="Jump if Greater or Equal" />
			</codeset>

			<!-- $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ -->
			<!-- Less -->
			<codeset param0="Less" param1="M,R" total="3|7/1|5" totalv="2|7/0|5" endpipe="V">
				<line code="jnl @l1"    time="!V1"         comment="Jump past our jump to pointer if not Less" />
				<line code="jmp @0.U32" time="&#45;&#45;2" comment="Jump to the location pointed to" />
				<line code="@l1:"       time="" />
			</codeset>
			<codeset param0="Less" param1="I" total="1|5" totalv="0|5" endpipe="V">
				<line code="jl @0" time="!V1" comment="Jump if Less" />
			</codeset>

			<!-- $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ -->
			<!-- Less or Equal -->
			<codeset param0="LessOrEqual" param1="M,R" total="3|7/1|5" totalv="2|7/0|5" endpipe="V">
				<line code="jnle @l1"   time="!V1"         comment="Jump past our jump to pointer if not Less or Equal" />
				<line code="jmp @0.U32" time="&#45;&#45;2" comment="Jump to the location pointed to" />
				<line code="@l1:"       time="" />
			</codeset>
			<codeset param0="LessOrEqual" param1="I" total="1|5" totalv="0|5" endpipe="V">
				<line code="jle @0" time="!V1" comment="Jump if Less or Equal" />
			</codeset>


			<!-- ******************************************************************************************************** -->
			<!-- Miscellaneous Conditions -->

			<!-- $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ -->
			<!-- Negative/Sign -->
			<codeset param0="Negative" param1="M,R" total="3|7/1|5" totalv="2|7/0|5" endpipe="V">
				<line code="jns @l1"    time="!V1"         comment="Jump past our jump to pointer if not Negative" />
				<line code="jmp @0.U32" time="&#45;&#45;2" comment="Jump to the location pointed to" />
				<line code="@l1:"       time="" />
			</codeset>
			<codeset param0="Negative" param1="I" total="1|5" totalv="0|5" endpipe="V">
				<line code="js @0" time="!V1" comment="Jump if Negative" />
			</codeset>

			<!-- $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ -->
			<!-- Positive/Not Sign -->
			<codeset param0="Positive" param1="M,R" total="3|7/1|5" totalv="2|7/0|5" endpipe="V">
				<line code="js @l1"     time="!V1"         comment="Jump past our jump to pointer if not Positive" />
				<line code="jmp @0.U32" time="&#45;&#45;2" comment="Jump to the location pointed to" />
				<line code="@l1:"       time="" />
			</codeset>
			<codeset param0="Positive" param1="I" total="1|5" totalv="0|5" endpipe="V">
				<line code="jns @0" time="!V1" comment="Jump if Positive" />
			</codeset>

			<!-- $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ -->
			<!-- Overflow -->
			<codeset param0="Overflow" param1="M,R" total="3|7/1|5" totalv="2|7/0|5" endpipe="V">
				<line code="jno @l1"    time="!V1"         comment="Jump past our jump to pointer if not Overflow" />
				<line code="jmp @0.U32" time="&#45;&#45;2" comment="Jump to the location pointed to" />
				<line code="@l1:"       time="" />
			</codeset>
			<codeset param0="Overflow" param1="I" total="1|5" totalv="0|5" endpipe="V">
				<line code="jo @0" time="!V1" comment="Jump if Overflow" />
			</codeset>

			<!-- $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ -->
			<!-- Not Overflow -->
			<codeset param0="NotOverflow" param1="M,R" total="3|7/1|5" totalv="2|7/0|5" endpipe="V">
				<line code="jo @l1"     time="!V1"         comment="Jump past our jump to pointer if Overflow" />
				<line code="jmp @0.U32" time="&#45;&#45;2" comment="Jump to the location pointed to" />
				<line code="@l1:"       time="" />
			</codeset>
			<codeset param0="NotOverflow" param1="I" total="1|5" totalv="0|5" endpipe="V">
				<line code="jno @0" time="!V1" comment="Jump if Not Overflow" />
			</codeset>

			<!-- $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ -->
			<!-- Carry -->
			<codeset param0="Carry" param1="M,R" total="3|7/1|5" totalv="2|7/0|5" endpipe="V">
				<line code="jnc @l1"    time="!V1"         comment="Jump past our jump to pointer if not Carry" />
				<line code="jmp @0.U32" time="&#45;&#45;2" comment="Jump to the location pointed to" />
				<line code="@l1:"       time="" />
			</codeset>
			<codeset param0="Carry" param1="I" total="1|5" totalv="0|5" endpipe="V">
				<line code="jc @0" time="!V1" comment="Jump if Carry" />
			</codeset>

			<!-- $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ -->
			<!-- NotCarry -->
			<codeset param0="NotCarry" param1="M,R" total="3|7/1|5" totalv="2|7/0|5" endpipe="V">
				<line code="jc @l1"     time="!V1"         comment="Jump past our jump to pointer if Carry" />
				<line code="jmp @0.U32" time="&#45;&#45;2" comment="Jump to the location pointed to" />
				<line code="@l1:"       time="" />
			</codeset>
			<codeset param0="NotCarry" param1="I" total="1|5" totalv="0|5" endpipe="V">
				<line code="jnc @0" time="!V1" comment="Jump if Not Carry" />
			</codeset>
		</codetypeset>
	</mnemonic>
</encoding>
