<!--
	Assembler Encoding for the AndNot instruction
	Version: 1.0.0
	Date Created:  2007-04-22
	Last Modified: 2007-06-17

	Designed for Pentium and higher x86 Processors in 32bit mode protected mode
	Optimized for speed

	Notes:
	AndNot operations are based on the lowest bit width operand. ANDNOTing an 8bit, 16bit, or even a 256bit value with an
	8bit value all use the same code since the upper bits are not modified by the zero (non-existent) bits.
	Sign Extending is NOT taken into consideration since ANDNOT is a bitwise operation and ignores sign completely.

	Done list:
	o From U/S8-32,Boolean to U/S8-256,Boolean
	o From U/S8-256 to U/S8-32

	To Do:
	o From U/S48-256 to U/S48-256
-->
<encoding procfamily="x86" bitdepth="32" proc="P1">
	<!-- ############################################################################################################ -->
	<!-- ############################################################################################################ -->
	<!-- ############################################################################################################ -->
	<!-- AndNOT Mnemonic -->
	<mnemonic name="AndNot" type="Assign" option="Speed">
		<!-- ********************************************************************************************************** -->
		<!-- ANDNOTing TO/FROM 8bit values -->

		<!-- $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ -->
		<!-- From 8bit To 8-256bit -->
		<codetypeset param0="U/S8-256" param1="U/S8" id="ANDNOTFrom8bitTo8-256bit">
			<codeset param0="M" param1="M,R,I" total="4" totalv="3"
				lostregs="al,dl" endregs="dl=@0.U8" endpipe="U">
				<line code="mov al, @1.U8" time="U 1" timev=" V1" comment="Get the modifier" />
				<line code="mov dl, @0.U8" time=" V1" timev="U 1" comment="Get the destination" />
				<line code="xor al, -1"    time="U 1" timev=" V1" comment="NOT the modifier" />
				<line code="and dl, al"    time="U*1" timev="U 1" comment="AND them together" />
				<line code="mov @0.U8, dl" time="U*1"             comment="Store the result" />
			</codeset>
			<codeset param0="M" param1="V" total="3" totalv="3"
				lostregs="al,@1.U8" endregs="al=@0.U8" endpipe="U">
				<line code="xor @1.U8, -1" time="U 1" timev=" V1" comment="NOT the modifier" />
				<line code="mov al, @0.U8" time=" V1" timev="U 1" comment="Get the destination" />
				<line code="and al, @1.U8" time="U 1" timev="U*1" comment="AND them together" />
				<line code="mov @0.U8, al" time="U*1"             comment="Store the result" />				
			</codeset>

			<codeset param0="R" param1="M,R,I" total="3" totalv="2"
				lostregs="al" endpipe="U">
				<line code="mov al, @1.U8" time="U 1" timev=" V1" comment="Get the modifier" />
				<line code="not al"        time="&#45;&#45;1"     comment="NOT the modifier (no way to pipe)" />
				<line code="and @0.U8, al" time="U 1"             comment="AND them together" />
			</codeset>
			<codeset param0="R" param1="V" total="1" totalv="0"
				lostregs="@1.U8" endpipe="U">
				<line code="xor @1.U8, -1"    time="U 1" timev=" V1" comment="NOT the modifier" />
				<line code="and @0.U8, @1.U8" time="U*1" timev="U 1" comment="AND them together" />
			</codeset>
		</codetypeset>


		<!-- $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ -->
		<!-- From 16-256bit To 8bit -->
		<codetypeset param0="U/S8" param1="U/S16-256" sameas="ANDNOTFrom8bitTo8-256bit" />



		<!-- ********************************************************************************************************** -->
		<!-- ANDNOTing TO/FROM 16bit values -->

		<!-- $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ -->
		<!-- From 16-24bit to 16bit -->
		<codetypeset param0="U/S16" param1="U/S16-24">
			<codeset param0="M" param1="M" total="7" totalv="6" id="ANDNOTUS16-24ToUS16_M_M"
				lostregs="eax" endpipe="U">
				<line code="mov ax, @1.U16" time="U 1+1" timev=" V1+1" comment="Get the modifier" />
				<line code="not eax"        time="&#45;&#45;1"         comment="NOT the modifier (no way to pipe)" />
				<line code="and @0.U16, ax" time="U*3+1"               comment="AND them together" />
			</codeset>
			<codeset param0="M" param1="R,I" total="6" totalv="5" id="ANDNOTUS16-24ToUS16_M_RI"
				lostregs="eax" endpipe="U">
				<line code="mov eax, @1.U32" time="U 1"   timev=" V1" comment="Get the modifier" />
				<line code="not eax"         time="&#45;&#45;1"       comment="NOT the modifier (no way to pipe)" />
				<line code="and @0.U16, ax"  time="U 3+1"             comment="AND them together" />
			</codeset>
			<codeset param0="M" param1="V" total="5" totalv="4" id="ANDNOTUS16-24ToUS16_M_V"
				lostregs="@1.U32" endpipe="U">
				<line code="xor @1.U32, -1"     time="U 1"   timev=" V1"   comment="NOT the modifier" />
				<line code="and @0.U16, @1.U16" time="U*3+1" timev="U 3+1" comment="AND them together" />
			</codeset>

			<codeset param0="R" param1="M" total="6" totalv="5"
				lostregs="eax" endpipe="U">
				<line code="mov ax, @1.U16"  time="U 1+1" timev=" V1+1" comment="Get the modifier" />
				<line code="not eax"         time="&#45;&#45;1"         comment="NOT the modifier (no way to pipe)" />
				<line code="and @0.U32, eax" time="U*3"                 comment="AND them together" />
			</codeset>
			<codeset param0="R" param1="R,I" total="3" totalv="2" id="ANTNOTUS16-24ToUS16_R_RI"
				lostregs="eax" endpipe="U">
				<line code="mov eax, @1.U32" time="U 1"   timev=" V1" comment="Get the modifier" />
				<line code="not eax"         time="&#45;&#45;1"       comment="NOT the modifier (no way to pipe)" />
				<line code="and @0.U32, eax" time="U 1"               comment="AND them together" />
			</codeset>
			<codeset param0="R" param1="V" total="3" totalv="2" id="ANTNOTUS16-24ToUS16_R_V"
				lostregs="@1.U32" endpipe="U">
				<line code="xor @1.U32, -1"     time="U 1" timev=" V1" comment="NOT the modifier" />
				<line code="and @0.U32, @1.U32" time="U*1" timev="U 1" comment="AND them together" />
			</codeset>
		</codetypeset>

		<!-- $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ -->
		<!-- From 16bit to 24-256bit -->
		<codetypeset param0="U/S24-256" param1="U/S16">
			<codeset param0="M" param1="M" sameas="ANDNOTUS16-24ToUS16_M_M" />
			<codeset param0="M" param1="R,I" sameas="ANDNOTUS16-24ToUS16_M_RI" />
			<codeset param0="M" param1="V" sameas="ANDNOTUS16-24ToUS16_M_V" />

			<codeset param0="R" param1="M" total="7" totalv="6"
				lostregs="eax" endpipe="U">
				<line code="mov ax, @1.U16" time="U 1+1" timev=" V1+1" comment="Get the modifier" />
				<line code="not eax"        time="&#45;&#45;1"         comment="NOT the modifier (no way to pipe)" />
				<line code="and @0.U16, ax" time="U*3+1"                 comment="AND them together" />
			</codeset>
			<codeset param0="R" param1="R,I" total="4" totalv="3"
				lostregs="eax" endpipe="U">
				<line code="mov eax, @1.U32" time="U 1"   timev=" V1" comment="Get the modifier" />
				<line code="not eax"         time="&#45;&#45;1"       comment="NOT the modifier (no way to pipe)" />
				<line code="and @0.U16, ax"  time="U 1+1"             comment="AND them together" />
			</codeset>
			<codeset param0="R" param1="V" total="3" totalv="2"
				lostregs="@1.U32" endpipe="U">
				<line code="xor @1.U32, -1"     time="U 1"   timev=" V1"   comment="NOT the modifier" />
				<line code="and @0.U16, @1.U16" time="U*1+1" timev="U 1+1" comment="AND them together" />
			</codeset>
		</codetypeset>

		<!-- $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ -->
		<!-- From 32-256bit to 16bit -->
		<codetypeset param0="U/S16" param1="U/S32-256">
			<codeset param0="M" param1="M" total="6" totalv="5"
				lostregs="eax" endpipe="U">
				<line code="mov eax, @1.U32" time="U 1"   timev=" V1" comment="Get the modifier" />
				<line code="not eax"         time="&#45;&#45;1"       comment="NOT the modifier (no way to pipe)" />
				<line code="and @0.U16, ax"  time="U*3+1"             comment="AND them together" />
			</codeset>
			<codeset param0="M" param1="R" sameas="ANDNOTUS16-24ToUS16_M_RI" />
			<codeset param0="M" param1="V" sameas="ANDNOTUS16-24ToUS16_M_V" />

			<codeset param0="R" param1="M" total="5" totalv="4"
				lostregs="eax" endpipe="U">
				<line code="mov eax, @1.U32" time="U 1" timev=" V1" comment="Get the modifier" />
				<line code="not eax"         time="&#45;&#45;1"     comment="NOT the modifier (no way to pipe)" />
				<line code="and @0.U32, eax" time="U 3"             comment="AND them together" />
			</codeset>
			<codeset param0="R" param1="R" sameas="ANTNOTUS16-24ToUS16_R_RI" />
			<codeset param0="R" param1="V" sameas="ANTNOTUS16-24ToUS16_R_V" />
		</codetypeset>



		<!-- ********************************************************************************************************** -->
		<!-- ANDNOTing TO/FROM 24bit values -->

		<!-- $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ -->
		<!-- From 24bit to 24bit -->
		<codetypeset param0="U/S24" param1="U/S24">
			<codeset param0="M" param1="M" total="9" totalv="8"
				lostregs="ax,dx" endregs="al=@0.U8[2],dh=@0.U8[1]" endpipe="U">
				<line code="mov dl, @1.U8"    time="U 1" timev=" V1" comment="Get the low byte of the modifier" />
				<line code="mov al, @0.U8"    time=" V1" timev="U 1" comment="Get the low byte of the value" />
				<line code="xor dl, -1"       time="U 1" timev=" V1" comment="NOT the low byte of the modifier" />
				<line code="and al, dl"       time="U*1" timev="U 1" comment="AND together the low bytes" />
				<line code="mov dh, @0.U8[1]" time=" V1"             comment="Get the middle byte of the value" />
				<line code="mov ah, @1.U8[1]" time="U 1"             comment="Get the middle byte of the modifier" />
				<line code="mov @0.U8, al"    time=" V1"             comment="Store the low byte" />
				<line code="xor ah, -1"       time="U 1"             comment="NOT the middle byte of the modifier" />
				<line code="mov dl, @1.U8[2]" time=" V1"             comment="Get the high byte of the modifier" />
				<line code="and dh, ah"       time="U 1"             comment="AND together the middle bytes" />
				<line code="mov @0.U8[1], dh" time=" V1"             comment="Store the middle byte" />
				<line code="mov al, @0.U8[2]" time="U 1"             comment="Get the high byte of the value" />
				<line code="xor dl, -1"       time=" V1"             comment="NOT the high byte of the modifier" />
				<line code="and al, dl"       time="U 1"             comment="AND together the high bytes" />
				<line code="mov @0.U8[2], al" time="U*1"             comment="Store the high byte" />
			</codeset>
			<codeset param0="M" param1="R,I" total="9" totalv="9"
				lostregs="ax,edx" endregs="ah=@0.U8[2],al=@0.U8" endpipe="U">
				<line code="mov edx, @1.U32"  time="U 1"   timev=" V1"   comment="Get the modifier" />
				<line code="mov al, @0.U8[0]" time=" V1"   timev="U 1"   comment="Get the low byte of the value" />
				<line code="xor edx, -1"      time="U 1"   timev=" V1"   comment="NOT the modifier" />
				<line code="mov ah, @0.U8[1]" time=" V1"   timev="U 1"   comment="Get the middle byte of the value" />
				<line code="and ax, dx"       time="U 1+1" timev="U*1+1" comment="AND together the low two bytes" />
				<line code="shr edx, 16"      time="U!1"                 comment="Shift the high byte of the modifier into position" />
				<line code="mov @0.U16, ax"   time=" V1+1"               comment="Store the low two bytes" />
				<line code="mov ah, @0.U8[2]" time="U 1"                 comment="Get the high byte of the value" />
				<line code="and ah, dl"       time="U*1"                 comment="AND the high bytes together" />
				<line code="mov @0.U8[2], ah" time="U*1"                 comment="Store the high byte" />
			</codeset>
			<codeset param0="M" param1="V" total="9" totalv="8"
				lostregs="ax,@1.U32" endregs="ah=@0.U8[2],al=@0.U8" endpipe="U">
				<line code="mov al, @0.U8[0]" time="U 1"   timev=" V1"   comment="Get the low byte of the value" />
				<line code="xor @1.U32, -1"   time=" V1"   timev="U 1"   comment="NOT the modifier" />
				<line code="mov ah, @0.U8[1]" time="U 1"   timev=" V1"   comment="Get the middle byte of the value" />
				<line code="and ax, @1.U16"   time="U*1+1" timev="U 1+1" comment="AND together the low two bytes" />
				<line code="shr @1.U32, 16"   time="U!1"                 comment="Shift the high byte of the modifier into position" />
				<line code="mov @0.U16, ax"   time=" V1+1"               comment="Store the low two bytes" />
				<line code="mov ah, @0.U8[2]" time="U 1"                 comment="Get the high byte of the value" />
				<line code="and ah, @1.U8"    time="U*1"                 comment="AND the high bytes together" />
				<line code="mov @0.U8[2], ah" time="U*1"                 comment="Store the high byte" />
			</codeset>

			<codeset param0="R" param1="M" total="7" totalv="6"
				lostregs="eax" endpipe="U">
				<line code="xor eax, eax"       time="U 1" timev=" V1" comment="Clear to zero" />
				<line code="mov al, @1.U8[1]"   time="U*1" timev="U 1" comment="Get the middle byte" />
				<line code="mov ah, @1.U8[2]"   time="U*1"             comment="Get the high byte" />
				<line code="shl eax, 8"         time="U!1"             comment="Shift them into position" />
				<line code="mov al, @1.U8"      time="U*1"             comment="Get the low byte" />
				<line code="not eax"            time="&#45;&#45;1"     comment="NOT the modifier (no way to pipe)" />
				<line code="and @0.U32, eax"    time="U*1"             comment="AND them together" />
			</codeset>
			<codeset param0="R" param1="R,I" total="4" totalv="3" endpipe="U">
				<line code="mov eax, @1.U32"    time="U 1" timev=" V1" comment="Get the modifier" />
				<line code="not eax"            time="&#45;&#45;1"     comment="NOT the modifier (no way to pipe)" />
				<line code="or eax, 0FF000000h" time="U 1"             comment="Make sure we don't wipe out the high byte" />
				<line code="and @0.U32, eax"    time="U*1"             comment="AND them together" />
			</codeset>
			<codeset param0="R" param1="V" total="3" totalv="2"
				lostregs="@1.U32" endpipe="U">
				<line code="xor @1.U32, -1"        time="U 1" timev=" V1" comment="NOT the modifier" />
				<line code="or @1.U32, 0FF000000h" time="U*1" timev="U 1" comment="Make sure we don't wipe out the high byte" />
				<line code="and @0.U32, @1.U32"    time="U*1"             comment="AND them together" />
			</codeset>
		</codetypeset>


		<!-- $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ -->
		<!-- From 32-256bit to 24bit -->
		<codetypeset param0="U/S24" param1="U/S32-256">
			<codeset param0="M" param1="M,R" total="7" totalv="6"
				lostregs="eax,dx" endregs="dh=@0.U8[1],dl=@0.U8[2]" endpipe="U">
				<line code="mov eax, @1.U32"  time="U 1" timev=" V1" comment="Get the lower DWord of the modifier" />
				<line code="mov dl, @0.U8"    time=" V1" timev="U 1" comment="Get the low byte of the value" />
				<line codr="xor eax, -1"      time="U 1" timev=" V1" comment="NOT the modifier" />
				<line code="and al, dl"       time="U*1" timev="U 1" comment="AND the low bytes together" />
				<line code="mov dh, @0.U8[1]" time=" V1"             comment="Get the middle byte of the value" />
				<line code="mov @0.U8, al"    time="U 1"             comment="Store the low byte" />
				<line code="and dh, ah"       time=" V1"             comment="AND the middle bytes together" />
				<line code="shr eax, 16"      time="U!1"             comment="Shift the value so we can access the high byte" />
				<line code="mov dl, @0.U8[2]" time=" V1"             comment="Get the high byte of the value" />
				<line code="mov @0.U8[1], dh" time="U 1"             comment="Store the middle byte" />
				<line code="and dl, al"       time=" V1"             comment="AND the high bytes together" />
				<line code="mov @0.U8[2], dl" time="U 1"             comment="Store the high byte" />
			</codeset>
			<codeset param0="M" param1="V" total="6" totalv="6"
				lostregs="ax,@1.U32" endregs="ah=@0.U8[1],al=@0.U8[2]" endpipe="U">
				<line code="xor @1.U32, -1"   time="U 1" timev=" V1" comment="NOT the modifier" />
				<line code="mov al, @0.U8"    time=" V1" timev="U 1" comment="Get the low byte of the value" />
				<line code="and @1.U8, al"    time="U 1" timev="U*1" comment="AND the low bytes together" />
				<line code="mov ah, @0.U8[1]" time=" V1"             comment="Get the middle byte of the value" />
				<line code="mov @0.U8, @1.U8" time="U 1"             comment="Store the low byte" />
				<line code="and ah, @1.U8[1]" time=" V1"             comment="AND the middle bytes together" />
				<line code="shr @1.U32, 16"   time="U!1"             comment="Shift the value so we can access the high byte" />
				<line code="mov al, @0.U8[2]" time=" V1"             comment="Get the high byte of the value" />
				<line code="mov @0.U8[1], ah" time="U 1"             comment="Store the middle byte" />
				<line code="and al, @1.U8"    time=" V1"             comment="AND the high bytes together" />
				<line code="mov @0.U8[2], al" time="U 1"             comment="Store the high byte" />
			</codeset>

			<codeset param0="R" param1="M,R" total="4" totalv="3" endpipe="U">
				<line code="mov eax, @1.U32"    time="U 1" timev=" V1" comment="Get the modifier" />
				<line code="not eax"            time="&#45;&#45;1"     comment="NOT the modifier (no way to pipe)" />
				<line code="or eax, 0FF000000h" time="U 1"             comment="Make sure we don't wipe out the high byte" />
				<line code="and @0.U32, eax"    time="U*1"             comment="AND them together" />
			</codeset>
			<codeset param0="R" param1="V" total="3" totalv="2"
				lostregs="@1.U32" endpipe="U">
				<line code="xor @1.U32, -1"        time="U 1" timev=" V1" comment="NOT the modifier" />
				<line code="or @1.U32, 0FF000000h" time="U*1" timev="U 1" comment="Make sure we don't wipe out the high byte" />
				<line code="and @0.U32, @1.U32"    time="U*1"             comment="AND them together" />
			</codeset>
		</codetypeset>


		<!-- $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ -->
		<!-- From U/S24 to 32-256bit -->
		<codetypeset param0="U/S32-256" param1="U/S24">
			<codeset param0="M" param1="M" total="8" totalv="7"
				lostregs="eax,edx" endregs="edx=@0.U32" endpipe="U">
				<line code="xor eax, eax"     time="U 1" timev=" V1" comment="Clear to zero" />
				<line code="mov edx, @0.U32"  time=" V1" timev="U 1" comment="Get the value" />
				<line code="mov al, @1.U8[2]" time="U 1" timev=" V1" comment="Get the high byte" />
				<line code="shl eax, 16"      time="U!1"             comment="Shift it into position" />
				<line code="mov al, @1.U8[0]" time="U*1"             comment="Get the low byte" />
				<line code="mov ah, @1.U8[1]" time="U*1"             comment="Get the middle byte" />
				<line code="not eax"          time="&#45;&#45;1"     comment="NOT the modifier (no way to pipe)" />
				<line code="and edx, eax"     time="U 1"             comment="AND them together" />
				<line code="mov @0.U32, edx"  time="U*1"             comment="Store it" />
			</codeset>
			<codeset param0="M" param1="R" param1type="U24" total="4" totalv="4" endpipe="U">
				<line code="mov eax, @1.U32"   time="U 1" timev=" V1" comment="Get the modifier" />
				<line code="mov edx, @0.U32"   time=" V1" timev="U 1" comment="Get the low 32bits of the value" />
				<line code="not eax"           time="&#45;&#45;1"     comment="NOT the modifier (no way to pipe)" />
				<line code="and edx, eax"      time="U 1"             comment="AND them together" />
				<line code="mov @0.U32, edx"   time="U*1"             comment="Store it" />
			</codeset>
			<codeset param0="M" param1="R" param1type="S24" total="5" totalv="4" endpipe="U">
				<line code="mov eax, @1.U32"   time="U 1" timev=" V1" comment="Get the modifier" />
				<line code="mov edx, @0.U32"   time=" V1" timev="U 1" comment="Get the low 32bits of the value" />
				<line code="and eax, 0FFFFFFh" time="U 1" timev=" V1" comment="Clear the high byte" />
				<line code="not eax"           time="&#45;&#45;1"     comment="NOT the modifier (no way to pipe)" />
				<line code="and edx, eax"      time="U 1"             comment="AND them together" />
				<line code="mov @0.U32, edx"   time="U*1"             comment="Store it" />
			</codeset>
			<codeset param0="M" param1="V" param1type="U24" total="3" totalv="3"
				lostregs="eax,@1.U32" endregs="eax=@0.U32" endpipe="U">
				<line code="xor @1.U32, -1"       time="U 1" timev=" V1" comment="NOT the modifier" />
				<line code="mov eax, @0.U32"      time=" V1" timev="U 1" comment="Get the low 32bits of the value" />
				<line code="and eax, @1.U32"      time="U 1" timev="U*1" comment="AND them together" />
				<line code="mov @0.U32, eax"      time="U*1"              comment="Store it" />
			</codeset>
			<codeset param0="M" param1="V" param1type="S24" total="4" totalv="3"
				lostregs="eax,@1.U32" endregs="eax=@0.U32" endpipe="U">
				<line code="and @1.U32, 0FFFFFFh" time="U 1" timev=" V1" comment="Clear the high byte" />
				<line code="xor @1.U32, -1"       time="U*1" timev="U 1" comment="NOT the modifier" />
				<line code="mov eax, @0.U32"      time=" V1"             comment="Get the low 32bits of the value" />
				<line code="and eax, @1.U32"      time="U 1"             comment="AND them together" />
				<line code="mov @0.U32, eax"      time="U*1"              comment="Store it" />
			</codeset>

			<codeset param0="R" param1="M" total="7" totalv="6"
				lostregs="eax" endpipe="U">
				<line code="xor eax, eax"     time="U 1" timev=" V1" comment="Clear to zero" />
				<line code="mov al, @1.U8[2]" time="U*1" timev="U 1" comment="Get the high byte" />
				<line code="shl eax, 16"      time="U!1"             comment="Shift it into position" />
				<line code="mov al, @1.U8[0]" time="U*1"             comment="Get the low byte" />
				<line code="mov ah, @1.U8[1]" time="U*1"             comment="Get the middle byte" />
				<line code="not eax"          time="&#45;&#45;1"     comment="NOT the modifier (no way to pipe)" />
				<line code="and @0.U32, eax"  time="U*1"             comment="AND them together" />
			</codeset>
			<codeset param0="R" param1="R" param1type="U24" total="3" totalv="2"
				lostregs="eax" endpipe="U">
				<line code="mov eax, @1.U32"   time="U 1" timev=" V1" comment="Get the modifier" />
				<line code="not eax"           time="&#45;&#45;1"     comment="NOT the modifier (no way to pipe)" />
				<line code="and @0.U32, eax"   time="U 1"             comment="AND them together" />
			</codeset>
			<codeset param0="R" param1="R" param1type="S24" total="4" totalv="3"
				lostregs="eax" endpipe="U">
				<line code="mov eax, @1.U32"   time="U 1" timev=" V1" comment="Get the modifier" />
				<line code="and eax, 0FFFFFFh" time="U*1" timev="U 1" comment="Clear the high byte" />
				<line code="not eax"           time="&#45;&#45;1"     comment="NOT the modifier (no way to pipe)" />
				<line code="and @0.U32, eax"   time="U 1"             comment="AND them together" />
			</codeset>
			<codeset param0="R" param1="V" param1type="U24" total="2" totalv="1"
				lostregs="@1.U32" endpipe="U">
				<line code="not @1.U32"           time="&#45;&#45;1"     comment="NOT the modifier (no way to pipe)" />
				<line code="and @0.U32, @1.U32"   time="U 1"             comment="AND them together" />
			</codeset>
			<codeset param0="R" param1="V" param1type="S24" total="3" totalv="2"
				lostregs="@1.U32" endpipe="U">
				<line code="and @1.U32, 0FFFFFFh" time="U 1" timev=" V1" comment="Clear the high byte" />
				<line code="not @1.U32"           time="&#45;&#45;1"     comment="NOT the modifier (no way to pipe)" />
				<line code="and @0.U32, @1.U32"   time="U 1"             comment="AND them together" />
			</codeset>
		</codetypeset>


		<!-- ********************************************************************************************************** -->
		<!-- ANDNOTing TO/FROM 32bit values -->

		<!-- $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ -->
		<!-- From 32bit to 32-256bit -->
		<codetypeset param0="U/S32-256" param1="U/S32" id="ANDFrom32bitTo32-256bit">
			<codeset param0="M" param1="M,R,I" total="4" totalv="3"
				lostregs="eax,edx" endregs="edx=@0.U32" endpipe="U">
				<line code="mov eax, @1.U32" time="U 1" timev=" V1" comment="Get the modifier" />
				<line code="mov edx, @0.U32" time=" V1" timev="U 1" comment="Get the value" />
				<line code="xor eax, -1"     time="U 1" timev=" V1" comment="NOT the modifier" />
				<line code="and edx, eax"    time="U*1" timev="U 1" comment="AND them together" />
				<line code="mov @0.U32, edx" time="U*1"             comment="Store it" />
			</codeset>
			<codeset param0="M" param1="V" total="3" totalv="3"
				lostregs="eax,@1.U32" endregs="eax=@0.U32" endpipe="U">
				<line code="xor @1.U32, -1"  time="U 1" timev=" V1" comment="NOT the modifier" />
				<line code="mov eax, @0.U32" time=" V1" timev="U 1" comment="Get the value" />
				<line code="and eax, @1.U32" time="U 1" timev="U*1" comment="AND them together" />
				<line code="mov @0.U32, eax" time="U*1"             comment="Store it" />
			</codeset>

			<codeset param0="R" param1="M,R,I" total="3" totalv="2"
				lostregs="eax" endpipe="U">
				<line code="mov eax, @1.U32" time="U 1" timev=" V1" comment="Get the modifier" />
				<line code="not eax"         time="&#45;&#45;1"     comment="NOT the modifier (no way to pipe)" />
				<line code="and @0.U32, eax" time="U 1"             comment="AND them together" />
			</codeset>
			<codeset param0="R" param1="V" total="2" totalv="1"
				lostregs="@1.U32" endpipe="U">
				<line code="xor @1.U32, -1"     time="U 1" timev=" V1" comment="NOT the modifier" />
				<line code="and @0.U32, @1.U32" time="U*1" timev="U 1" comment="AND them together" />
			</codeset>
		</codetypeset>


		<!-- $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ -->
		<!-- From 48-256bit to 32bit -->
		<codetypeset param0="U/S32" param1="U/S48-256" sameas="ANDFrom32bitTo32-256bit" />



		<!-- ********************************************************************************************************** -->
		<!-- ANDNOTing TO/FROM Boolean -->

		<!-- $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ -->
		<!-- From Boolean to 8-256bit -->
		<codetypeset param0="U/S8-256" param1="Boolean">
			<codeset param0="M" param1="M,R" total="4" totalv="3"
				lostregs="al,dl" endregs="al=@0.U8" endpipe="U">
				<line code="mov dl, @1.U8" time="U 1" timev=" V1" comment="Get the modifier" />
				<line code="mov al, @0.U8" time=" V1" timev="U 1" comment="Get the destination" />
				<line code="xor dl, 1"     time="U 1" timev=" V1" comment="NOT the bit" />
				<line code="and al, dl"    time="U*1" timev="U 1" comment="AND them together" />
				<line code="mov @0.U8, al" time="U*1"             comment="Store the result" />
			</codeset>
			<codeset param0="M" param1="V" total="3" totalv="3"
				lostregs="al,@1.U8" endregs="al=@0.U8" endpipe="U">
				<line code="xor @1.U8, 1"  time="U 1" timev=" V1" comment="NOT the bit" />
				<line code="mov al, @0.U8" time=" V1" timev="U 1" comment="Get the destination" />
				<line code="and al, @1.U8" time="U 1" timev="U*1" comment="AND them together" />
				<line code="mov @0.U8, al" time="U*1"             comment="Store the result" />
			</codeset>

			<codeset param0="R" param1="M,R" total="3" totalv="2"
				lostregs="al" endpipe="U">
				<line code="mov al, @1.U8" time="U 1" timev=" V1" comment="Get the modifier" />
				<line code="xor al, 1"     time="U*1" timev="U 1" comment="NOT the bit" />
				<line code="and @0.U8, al" time="U*1"             comment="AND them together" />
			</codeset>
			<codeset param0="R" param1="V" total="2" totalv="1" endpipe="U">
				<line code="xor @1.U8, 1"     time="U 1" timev=" V1" comment="NOT the bit" />
				<line code="and @0.U8, @1.U8" time="U*1" timev="U 1" comment="AND them together" />
			</codeset>
		</codetypeset>


		<!-- $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ -->
		<!-- From Boolean To Boolean -->
		<codetypeset param0="Boolean" param1="Boolean">
			<codeset param0="M" param1="M" total="4" totalv="3"
				lostregs="al,dl" endregs="al=@0.U8" endpipe="U">
				<line code="mov dl, @1" time="U 1" timev=" V1" comment="Get the modifier" />
				<line code="mov al, @0" time=" V1" timev="U 1" comment="Get our value" />
				<line code="xor dl, 1"  time="U 1" timev=" V1" comment="NOT the bit" />
				<line code="and al, dl" time="U*1" timev="U 1" comment="AND them together" />
				<line code="mov @0, al" time="U*1"             comment="Store the result" />
			</codeset>
			<codeset param0="M" param1="R,I" total="4" totalv="3"
				lostregs="al,dl" endregs="dl=@0.U8" endpipe="U">
				<line code="mov al, @1.U8" time="U 1" timev=" V1" comment="Get the modifier" />
				<line code="mov dl, @0.U8" time=" V1" timev="U 1" comment="Get the value" />
				<line code="xor al, 1"     time="U 1" timev=" V1" comment="NOT the bit" />
				<line code="and dl, al"    time="U*1" timev="U 1" comment="AND them together" />
				<line code="mov @0.U8, dl" time="U*1"             comment="Store the result" />
			</codeset>
			<codeset param0="M" param1="V" total="3" totalv="3"
				lostregs="al,@1.U8" endregs="al=@0.U8" endpipe="U">
				<line code="xor @1.U8, 1"  time="U 1" timev=" V1" comment="NOT the bit" />
				<line code="mov al, @0.U8" time=" V1" timev="U 1" comment="Get the value" />
				<line code="and al, @1.U8" time="U 1" timev="U*1" comment="AND them together" />
				<line code="mov @0.U8, al" time="U*1"             comment="Store the result" />
			</codeset>

			<codeset param0="R" param1="M,R,I" total="3" totalv="2"
				lostregs="al" endpipe="U">
				<line code="mov al, @1.U8" time="U 1" timev=" V1" comment="Get the modifier" />
				<line code="xor al, 1"     time="U*1" timev="U 1" comment="NOT the bit" />
				<line code="and @0.U8, al" time="U*1"             comment="AND them together" />
			</codeset>
			<codeset param0="R" param1="V" total="2" totalv="1"
				lostregs="@1.U8" endpipe="S">
				<line code="xor @1.U8, 1"     time="U 1" timev=" V1" comment="NOT the bit" />
				<line code="and @0.U8, @1.U8" time="U*1" timev="U 1" comment="AND them together" />
			</codeset>
		</codetypeset>


		<!-- $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ -->
		<!-- From 8bit To Boolean -->
		<codetypeset param0="Boolean" param1="U/S8">
			<codeset param0="M" param1="M,R" total="5" totalv="5"
				lostregs="al,dx" endregs="dl=@0.U8" endpipe="U">
				<line code="mov dl, @0" time="U 1" timev=" V1" comment="Get the destination" />
				<line code="mov al, @1" time=" V1" timev="U 1" comment="Get the modifier" />
				<line code="xor dh, dh" time="U 1" timev=" V1" comment="Clear to zero" />
				<line code="sub al, 1"  time=" V1" timev="U 1" comment="Subtract 1. This will set carry if it is zero" />
				<line code="adc dh, dh" time="U!1"             comment="1 if carry, 0 if not" />
				<line code="and dl, dh" time="U*1"             comment="AND them together" />
				<line code="mov @0, dl" time="U*1"             comment="Store the result" />
			</codeset>
			<codeset param0="M" param1="V" total="5" totalv="4"
				lostregs="al,@1.U8" endregs="al=@0.U8" endpipe="U">
				<line code="sub @1.U8, 1"     time="U 1" timev=" V1" comment="Subtract 1. This will set carry if it is zero" />
				<line code="mov @1.U8, 0"     time="U*1" timev="U 1" comment="Clear to zero" />
				<line code="mov al, @0.U8"    time=" V1"             comment="Get the value" />
				<line code="adc @1.U8, @1.U8" time="U!1"             comment="1 if carry, 0 if not" />
				<line code="and al, @1.U8"    time="U*1"             comment="AND them together" />
				<line code="mov @0, al"       time="U*1"             comment="Store the result" />
			</codeset>

			<codeset param0="R" param1="M,R" total="4" totalv="4"
				lostregs="al,dl" endpipe="U">
				<line code="xor dl, dl" time="U 1" timev=" V1" comment="Clear to zero" />
				<line code="mov al, @1" time=" V1" timev="U 1" comment="Get the value" />
				<line code="sub al, 1"  time="U 1" timev="U*1" comment="Subtract 1. This will set carry if it is zero" />
				<line code="adc dl, dl" time="U!1"             comment="1 if carry, 0 if no carry" />
				<line code="and @0, al" time="U*1"             comment="AND them together" />
			</codeset>
			<codeset param0="R" param1="V" total="4" totalv="3"
				lostregs="@1.U8" endpipe="U">
				<line code="sub @1.U8, 1"     time="U 1" timev=" V1" comment="Subtract 1. This will set carry if it is zero" />
				<line code="mov @1.U8, 0"     time="U*1" timev="U 1" comment="Clear to zero" />
				<line code="adc @1.U8, @1.U8" time="U!1"             comment="Get the boolean equivalent" />
				<line code="and @0, @1.U8"    time="U*1"             comment="AND them together" />
			</codeset>
		</codetypeset>


		<!-- $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ -->
		<!-- From 16bit to Boolean -->
		<codetypeset param0="Boolean" param1="U/S16">
			<codeset param0="M" param1="M,R" total="7" totalv="7"
				lostregs="ax,dx" endregs="al=@0.U8" endpipe="U">
				<line code="mov dx, @1" time="U 1+1" timev=" V1+1" comment="Get the modifier" />
				<line code="xor ah, ah" time=" V1"   timev="U 1"   comment="Clear to zero" />
				<line code="sub dx, 1"  time="U 1+1" timev=" V1+1" comment="Subtract 1. This will set carry if it is zero" />
				<line code="mov al, @0" time=" V1"   timev="U 1"   comment="Get the value" />
				<line code="adc ah, ah" time="U!1"                 comment="1 if carry, 0 if no carry" />
				<line code="and al, ah" time="U*1"                 comment="AND them together" />
				<line code="mov @0, al" time="U*1"                 comment="Store the result" />
			</codeset>
			<codeset param0="M" param1="V" total="6" totalv="5"
				lostregs="al,@1.U16" endregs="al=@0.U8" endpipe="U">
				<line code="sub @1.U16, 1"    time="U 1+1" timev=" V1+1" comment="Subtract 1. This will set carry if it is zero" />
				<line code="mov @1.U8, 0"     time="U*1"   timev="U 1"   comment="Clear to zero" />
				<line code="mov al, @0.U8"    time=" V1"                 comment="Get the value" />
				<line code="adc @1.U8, @1.U8" time="U!1"                 comment="1 if carry, 0 if no carry" />
				<line code="and al, @1.U8"    time="U*1"                 comment="AND them together" />
				<line code="mov @0.U8, al"    time="U*1"                 comment="Store the result" />
			</codeset>

			<codeset param0="R" param1="M,R" total="6" totalv="5"
				lostregs="ax,dl" endpipe="U">
				<line code="mov ax, @1" time="U 1+1" timev=" V1+1" comment="Get the modifier" />
				<line code="xor dl, dl" time=" V1"   timev="U 1"   comment="Clear to zero" />
				<line code="sub ax, 1"  time="U 1+1" timev=" V1+1" comment="Subtract 1. This will set carry if it is zero" />
				<line code="adc dl, dl" time="U!1"                 comment="1 if carry, 0 if no carry" />
				<line code="and @0, dl" time="U*1"                 comment="AND them together" />
			</codeset>
			<codeset param0="R" param1="V" total="4" totalv="4"
				lostregs="@1.U16" endpipe="U">
				<line code="sub @1.U16, 1"    time="U 1+1" timev=" V1+1" comment="Subtract 1. This will set carry if it is zero" />
				<line code="mov @1.U8, 0"     time=" V1"   timev="U 1"   comment="Clear to zero" />
				<line code="adc @1.U8, @1.U8" time="U!1"                 comment="1 if carry, 0 if no carry" />
				<line code="and @0, @1.U8"    time="U*1"                 comment="AND them together" />
			</codeset>
		</codetypeset>


		<!-- $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ -->
		<!-- From 24bit to Boolean -->
		<codetypeset param0="Boolean" param1="U/S24">
			<codeset param0="M" param1="M" total="8" totalv="7"
				lostregs="ax,dx" endregs="ah=@1.U8[1],dh=@0.U8" endpipe="U">
				<line code="mov al, @1.U8"    time="U 1" timev=" V1" comment="Get byte 1 of the modifier" />
				<line code="mov dh, @0"       time=" V1" timev="U 1" comment="Get the value" />
				<line code="mov ah, @1.U8[1]" time="U 1" timev=" V1" comment="Get byte 2 of the modifier" />
				<line code="or al, ah"        time="U*1" timev="U 1" comment="Bytes 1 and 2 merged" />
				<line code="mov dl, @1.U8[2]" time=" V1"             comment="Get byte 3 of the modifier" />
				<line code="or al, dl"        time="U 1"             comment="Bytes 1, 2 and 3 are now merged" />
				<line code="xor dl, dl"       time=" V1"             comment="Clear to zero" />
				<line code="sub al, 1"        time="U 1"             comment="Subtract 1. This will set carry if it is zero" />
				<line code="adc dl, dl"       time="U!1"             comment="1 if carry, 0 if no carry" />
				<ilne code="and dh, dl"       time="U*1"             comment="AND the values together" />
				<line code="mov @0, dh"       time="U*1"             comment="Store the result" />
			</codeset>
			<codeset param0="M" param1="R" param1type="S24" total="6" totalv="5"
				lostregs="eax,dx" endregs="dh=@0.U8" endpipe="U">
				<line code="mov eax, @1.U32"   time="U 1" timev=" V1" comment="Move the whole 24bit register" />
				<line code="mov dh, @0"        time=" V1" timev="U 1" comment="Get the value" />
				<line code="and eax, 0FFFFFFh" time="U 1" timev=" V1" comment="Clear the high byte" />
				<line code="xor dl, dl"        time=" V1" timev="U 1" comment="Clear to zero" />
				<line code="sub eax, 1"        time="U 1" timev=" V1" comment="Subtract 1. This will set carry if it is zero" />
				<line code="adc dl, dl"        time="U!1"             comment="1 if carry, 0 if no carry" />
				<line code="and dh, dl"        time="U*1"             comment="AND the values together" />
				<line code="mov @0, dh"        time="U*1"             comment="Store the result" />
			</codeset>
			<codeset param0="M" param1="R" param1type="U24" total="5" totalv="5"
				lostregs="eax,dx" endregs="dh=@0.U8" endpipe="U">
				<line code="xor dl, dl"        time="U 1" timev=" V1" comment="Clear to zero" />
				<line code="mov eax, @1.U32"   time=" V1" timev="U 1" comment="Move the whole 24bit register" />
				<line code="mov dh, @0"        time="U 1" timev=" V1" comment="Get the value" />
				<line code="sub eax, 1"        time=" V1" timev="U 1" comment="Subtract 1. This will set carry if it is zero" />
				<line code="adc dl, dl"        time="U!1"             comment="1 if carry, 0 if no carry" />
				<line code="and dh, dl"        time="U*1"             comment="AND the values together" />
				<line code="mov @0, dh"        time="U*1"             comment="Store the result" />
			</codeset>

			<codeset param0="R" param1="M" total="7" totalv="6"
				lostregs="ax,dx" endregs="ah=@1.U8[1],dh=@1.U8[2]" endpipe="U">
				<line code="mov al, @1.U8"    time="U 1" timev=" V1" comment="Get byte 1 of the modifier" />
				<line code="xor dl, dl"       time=" V1" timev="U 1" comment="Clear to zero" />
				<line code="mov ah, @1.U8[1]" time="U 1" timev=" V1" comment="Get byte 2 of the modifier" />
				<line code="or al, ah"        time="U*1" timev="U 1" comment="Combine them" />
				<line code="mov dh, @1.U8[2]" time=" V1"             comment="Get byte 3 of the modifier" />
				<line code="or al, dh"        time="U 1"             comment="Combine them" />
				<line code="sub al, 1"        time="U*1"             comment="Subtract 1. This will set carry if it is zero" />
				<line code="adc dl, dl"       time="U!1"             comment="1 if carry, 0 if no carry" />
				<line code="and @0, dl"       time="U*1"             comment="AND the values together" />
			</codeset>
			<codeset param0="R" param1="R" param1type="S24" total="5" totalv="4"
				lostregs="eax,dl" endpipe="U">
				<line code="mov eax, @1.U32"   time="U 1" timev=" V1" comment="Move the whole 24bit register" />
				<line code="and eax, 0FFFFFFh" time="U*1" timev="U 1" comment="Clear the high byte" />
				<line code="xor dl, dl"        time=" V1"             comment="Clear to zero" />
				<line code="sub eax, 1"        time="U 1"             comment="Subtract 1. This will set carry if it is zero" />
				<line code="adc dl, dl"        time="U!1"             comment="1 if carry, 0 if no carry" />
				<line code="and @0, dl"        time="U*1"             comment="AND the values together" />
			</codeset>
			<codeset param0="R" param1="R" param1type="U24" total="4" totalv="3"
				lostregs="eax,dl" endpipe="U">
				<line code="mov eax, @1.U32"   time="U 1" timev=" V1" comment="Move the whole 24bit register" />
				<line code="xor dl, dl"        time=" V1" timev="U 1" comment="Clear to zero" />
				<line code="sub eax, 1"        time="U 1" timev=" V1" comment="Subtract 1. This will set carry if it is zero" />
				<line code="adc dl, dl"        time="U!1"             comment="1 if carry, 0 if no carry" />
				<line code="and @0, dl"        time="U*1"             comment="AND the values together" />
			</codeset>
		</codetypeset>


		<!-- $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ -->
		<!-- From 32bit to Boolean -->
		<codetypeset param0="Boolean" param1="U/S32">
			<codeset param0="M" param1="M,R" total="5" totalv="5"
				lostregs="eax,dx" endregs="dh=@0.U8" endpipe="U">
				<line code="mov eax, @1" time="U 1" timev=" V1" comment="Get the modifier" />
				<line code="xor dl, dl"  time=" V1" timev="U 1" comment="Clear to zero" />
				<line code="sub eax, 1"  time="U 1" timev=" V1" comment="Subtract 1. This will set carry if it is zero" />
				<line code="mov dh, @0"  time=" V1" timev="U 1" comment="Get the value" />
				<line code="adc dl, dl"  time="U!1"             comment="1 if carry, 0 if no carry" />
				<line code="and dh, dl"  time="U*1"             comment="AND them together" />
				<line code="mov @0, dh"  time="U*1"             comment="Store the result" />
			</codeset>
			<codeset param0="M" param1="V" total="5" totalv="4"
				lostregs="al,@1.U32" endregs="al=@0.U8" endpipe="U">
				<line code="sub @1.U32, 1"    time="U 1" timev=" V1" comment="Subtract 1. This will set carry if it is zero" />
				<line code="mov @1.U8, 0"     time="U*1" timev="U 1" comment="Clear to zero" />
				<line code="mov al, @0.U8"    time=" V1"             comment="Get the value" />
				<line code="adc @1.U8, @1.U8" time="U!1"             comment="1 if carry, 0 if no carry" />
				<line code="and al, @1.U8"    time="U*1"             comment="AND them together" />
				<line code="mov @0.U8, al"    time="U*1"             comment="Store the result" />
			</codeset>

			<codeset param0="R" param1="M,R" total="4" totalv="3"
				lostregs="eax,dl" endpipe="U">
				<line code="mov eax, @1" time="U 1" timev=" V1" comment="Get the modifier" />
				<line code="xor dl, dl"  time=" V1" timev="U 1" comment="Clear to zero" />
				<line code="sub eax, 1"  time="U*1" timev=" V1" comment="Subtract 1. This will set carry if it is zero" />
				<line code="adc dl, dl"  time="U!1"             comment="1 if carry, 0 if no carry" />
				<line code="and @0, dl"  time="U*1"             comment="AND them together" />
			</codeset>
			<codeset param0="R" param1="V" total="4" totalv="3"
				lostregs="@1.U32" endpipe="U">
				<line code="sub @1.U32, 1"    time="U 1" timev=" V1" comment="Subtract 1. This will set carry if it is zero" />
				<line code="mov @1.U8, 0"     time="U*1" timev="U 1" comment="Clear to zero" />
				<line code="adc @1.U8, @1.U8" time="U!1"             comment="1 if carry, 0 if no carry" />
				<line code="and @0.U8, @1.U8" time="U*1"             comment="AND them together" />
			</codeset>
		</codetypeset>
	</mnemonic>
</encoding>
