<!--
	Assembler Encoding for the GetReturnValue mnemonic
	Version: 1.0.0
	Date Created:  2007-05-05
	Last Modified: 2007-05-24

	Designed for Pentium and higher x86 Processors in 32bit mode protected mode
	Optimized for Size

	Done list:
	o U/S8-64,Boolean,Pointers to U/S8-32,Boolean
	o EndRegs data for all applicable operations

	To Do:
	o All types to U/S48-256
-->
<encoding procfamily="x86" bitdepth="32" proc="P1">
	<!-- ############################################################################################################ -->
	<!-- ############################################################################################################ -->
	<!-- ############################################################################################################ -->
	<!-- GetReturnValue Mnemonic -->
	<mnemonic name="GetReturnValue" type="Assign" option="Size">
		<!-- ********************************************************************************************************** -->
		<!-- Returning TO 8bit values -->

		<!-- $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ -->
		<!-- From 8-64bit -->
		<codetypeset param0="U/S8" param1="U/S8-64,Pointer">
			<codeset param0="M,R" total="1" totalv="0"
				endregs="al=@0.U8" endpipe="S">
				<line code="mov @0.U8, al" time="U 1" timev=" V1" comment="Store it" />
			</codeset>
		</codetypeset>


		<!-- $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ -->
		<!-- From Boolean -->
		<codetypeset param0="U/S8" param1="Boolean">
			<codeset param0="M,R" total="1" totalv="0"
				endregs="al=@0.U8" endpipe="S">
				<line code="mov @0.U8, al" time="U 1" timev=" V1" comment="Store it" />
			</codeset>
		</codetypeset>



		<!-- ********************************************************************************************************** -->
		<!-- Returning TO 16bit values -->

		<!-- $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ -->
		<!-- From 8bit -->

		<!-- ====================================================================================== -->
		<!-- From U8 to U/S16 -->
		<codetypeset param0="U/S16" param1="U8">
			<codeset param0="M" total="3" totalv="2"
				lostregs="ah" endregs="ah=0,ax=@0.U16" endpipe="U">
				<line code="xor ah, ah"     time="U 1"   timev=" V1"   comment="Clear the high byte of AX" />
				<line code="mov @0.U16, ax" time="U*1+1" timev="U 1+1" comment="Store the 16bit value" />
			</codeset>

			<codeset param0="R" total="3"
				endregs="al=@0.U8" endpipe="V">
				<line code="movzx @0.U32, al" time="&#45;&#45;3" comment="Zero extend to the full register value" />
			</codeset>
		</codetypeset>


		<!-- ====================================================================================== -->
		<!-- From S8 to U/S16 -->
		<codetypeset param0="U/S16" param1="S8">
			<codeset param0="M" total="5"
				lostregs="eax" endregs="eax=@0.S16" endpipe="U">
				<line code="movsx eax, al"  time="&#45;&#45;3" comment="Sign extend AX" />
				<line code="mov @0.U16, ax" time="U 1+1"       comment="Store the result" />
			</codeset>

			<codeset param0="R" total="3"
				endregs="al=@0.U8" endpipe="V">
				<line code="movsx @0.U32, al" time="&#45;&#45;3" comment="Sign extend to the full register value" />
			</codeset>
		</codetypeset>


		<!-- $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ -->
		<!-- From 16-64bit and Pointers -->
		<codetypeset param0="U/S16" param1="U/S16-64,Pointer">
			<codeset param0="M" total="2" totalv="1"
				endregs="ax=@0.U16" endpipe="S">
				<line code="mov @0.U16, ax" time="U 1+1" timev=" V1+1" comment="Store it" />
			</codeset>

			<codeset param0="R" total="1" totalv="0"
				endregs="eax=@0.U32" endpipe="S">
				<line code="mov @0.U32, eax" time="U 1" timev=" V1" comment="Store to the full register value" />
			</codeset>
		</codetypeset>


		<!-- $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ -->
		<!-- From Boolean -->
		<codetypeset param0="U/S16" param1="Boolean">
			<codeset param0="M" total="3" totalv="2"
				lostregs="ah" endregs="ah=0,ax=@0.U16" endpipe="U">
				<line code="xor ah, ah"     time="U 1"   timev=" V1"   comment="Clear the high byte" />
				<line code="mov @0.U16, ax" time="U*1+1" timev="U 1+1" comment="Store it" />
			</codeset>

			<codeset param0="R" total="3"
				endregs="al=@0.U8" endpipe="V">
				<line code="movzx @0.U32, al" time="&#45;&#45;3" comment="Zero extend to the full register value value" />
			</codeset>
		</codetypeset>



		<!-- ********************************************************************************************************** -->
		<!-- Returning TO 24bit values -->

		<!-- $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ -->
		<!-- From 8bit -->

		<!-- ====================================================================================== -->
		<!-- From U8 to U/S24 -->
		<codetypeset param0="U/S24" param1="U8">
			<codeset param0="M" total="3" totalv="2"
				endregs="al=@0.U8" endpipe="U">
				<line code="mov @0.U8[2], 0"  time="U 1" timev=" V1" comment="Store a zero in the high byte" />
				<line code="mov @0.U8[1], 0"  time="U*1" timev="U 1" comment="Store a zero in the middle byte" />
				<line code="mov @0.U8[0], al" time="U*1"             comment="Store the value in the low byte" />
			</codeset>

			<codeset param0="R" total="3"
				endregs="al=@0.U8" endpipe="V">
				<line code="movzx @0.U32, al" time="&#45;&#45;3" comment="Zero extend to the full register value" />
			</codeset>
		</codetypeset>

		<!-- ====================================================================================== -->
		<!-- From S8 to U/S24 -->
		<codetypeset param0="U/S24" param1="S8">
			<codeset param0="M" total="6"
				lostregs="eax" endregs="eax=@0.S24,ax=@0.U16,ah=@0.U8[2]" endpipe="U">
				<line code="movsx eax, al"    time="&#45;&#45;3" comment="Sign extend the value" />
				<line code="mov @0.U16, ax"   time="U 1+1"       comment="Store the low 16 bits" />
				<line code="mov @0.U8[2], ah" time="U*1"         comment="Store the high byte" />
			</codeset>

			<codeset param0="R" param0type="U24" total="4"
				endregs="al=@0.U8" endpipe="U">
				<line code="movsx @0.U32, al"     time="&#45;&#45;3" comment="Sign extend to the full register value" />
				<line code="and @0.U24, 0FFFFFFh" time="U 1"         comment="Clear the high byte" />
			</codeset>
			<codeset param0="R" param0type="S24" total="3"
				endregs="al=@0.U8" endpipe="V">
				<line code="movsx @0.U32, al" time="&#45;&#45;3" comment="Sign extend to the full register value" />
			</codeset>
		</codetypeset>


		<!-- $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ -->
		<!-- From 16bit -->

		<!-- ====================================================================================== -->
		<!-- From U16 to U/S24 -->
		<codetypeset param0="U/S24" param1="U16">
			<codeset param0="M" total="3" totalv="2"
				endregs="ax=@0.U16" endpipe="U">
				<line code="mov @0.U16, ax"  time="U 1+1" timev=" V1+1" comment="Store the low 16 bits" />
				<line code="mov @0.U8[2], 0" time="U*1"   timev="U 1"   comment="Store zero in the high byte" />
			</codeset>

			<codeset param0="R" total="3"
				endregs="ax=@0.U16" endpipe="V">
				<line code="movzx @0.U32, ax" time="&#45;&#45;3" comment="Zero extend to the full register value" />
			</codeset>
		</codetypeset>

		<!-- ====================================================================================== -->
		<!-- From S16 to U/S24 -->
		<codetypeset param0="U/S24" param1="S16">
			<codeset param0="M" total="4" totalv="3"
				lostregs="ah" endregs="ah=@0.U8[2],al=@0.U8" endpipe="U">
				<line code="mov @0.U16, ax"   time="U 1+1" timev=" V1+1" comment="Store the low 16 bits" />
				<line code="sar ah, 8"        time="U!1"                 comment="SAR to sign extend the high byte" />
				<line code="mov @0.U8[2], ah" time="U*1"                 comment="Store the high byte" />
			</codeset>

			<codeset param0="R" param0type="U24" total="4"
				endregs="ax=@0.U16" endpipe="U">
				<line code="movsx @0.U32, ax"     time="&#45;&#45;3" comment="Sign extend to the full register value" />
				<line code="and @0.U32, 0FFFFFFh" time="U 1"         comment="Clear the high byte" />
			</codeset>
			<codeset param0="R" param0type="S24" total="3"
				endregs="ax=@0.U16" endpipe="V">
				<line code="movsx @0.U32, ax" time="&#45;&#45;3" comment="Sign extend to the full register value" />
			</codeset>
		</codetypeset>


		<!-- $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ -->
		<!-- From 24-64bit -->
		<codetypeset param0="U/S24" param1="U/S24-64,Pointer">
			<codeset param0="M" total="4" totalv="3"
				lostregs="eax" endregs="al=@0.U8[1],ah=@0.U8[2]" endpipe="U">
				<line code="mov @0.U16, ax"   time="U 1+1" timev=" V1+1" comment="Store the low 16 bits" />
				<line code="shr eax, 8"       time="U!1"                 comment="Shift down the high byte" />
				<line code="mov @0.U8[2], ah" time="U*1"                 comment="Store the high byte" />
			</codeset>

			<codeset param0="R" param0type="U24" param1type="U24" total="1" totalv="0"
				endregs="eax=@0.U24" endpipe="S">
				<line code="mov @0.U32, eax" time="U 1" timev=" V1" comment="Store the full register value" />
			</codeset>
			<codeset param0="R" param0type="U24" param1type="S24,U/S32-64,Pointer" total="2" totalv="1"
				endregs="ax=@0.U16" endpipe="U">
				<line code="mov @0.U32, eax"      time="U 1" timev=" V1" comment="Store the full register value" />
				<line code="and @0.U32, 0FFFFFFh" time="U*1" timev="U 1" comment="Clear the high byte" />
			</codeset>
			<codeset param0="R" param0type="S24" param1type="S24" total="1" totalv="0"
				endregs="eax=@0.S24" endpipe="S">
				<line code="mov @0.U32, eax" time="U 1" timev=" V1" comment="Store the full register value" />
			</codeset>
			<codeset param0="R" param0type="S24" param1type="U24,U/S32-64,Pointer" total="3" totalv="2"
				endregs="ax=@0.U16" endpipe="U">
				<line code="mov @0.U32, eax" time="U 1" timev=" V1" comment="Store the full register value" />
				<line code="shl @0.U32, 8"   time="U!1"             comment="Shift to the high byte" />
				<line code="sar @0.U32, 8"   time="U!1"             comment="SAR to sign extend" />
			</codeset>
		</codetypeset>


		<!-- $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ -->
		<!-- From Boolean -->
		<codetypeset param0="U/S24" param1="Boolean">
			<codeset param0="M" total="3" totalv="2"
				endregs="al=@0.U8" endpipe="U">
				<line code="mov @0.U8[2], 0"  time="U 1" timev=" V1" comment="Store a zero in the high byte" />
				<line code="mov @0.U8[1], 0"  time="U*1" timev="U 1" comment="Store a zero in the middle byte" />
				<line code="mov @0.U8[0], al" time="U*1"             comment="Store the value in the low byte" />
			</codeset>

			<codeset param0="R" total="3"
				endregs="al=@0.U8" endpipe="V">
				<line code="movzx @0.U32, al" time="&#45;&#45;3" comment="Zero extend to the full register value" />
			</codeset>
		</codetypeset>



		<!-- ********************************************************************************************************** -->
		<!-- Returning TO 32bit values -->

		<!-- $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ -->
		<!-- From 8bit -->

		<!-- ====================================================================================== -->
		<!-- From U8 to U/S32 -->
		<codetypeset param0="U/S32" param1="U8">
			<codeset param0="M" total="4"
				lostregs="eax" endregs="eax=@0.U32" endpipe="U">
				<line code="movzx eax, al"   time="&#45;&#45;3" comment="Zero extend" />
				<line code="mov @0.U32, eax" time="U 1"         comment="Store the value" />
			</codeset>

			<codeset param0="R" total="3"
				endregs="al=@0.U8" endpipe="V">
				<line code="movzx @0.U32, al" time="&#45;&#45;3" comment="Move the value over zero extended" />
			</codeset>
		</codetypeset>

		<!-- ====================================================================================== -->
		<!-- From S8 to U/S32 -->
		<codetypeset param0="U/S32" param1="S8">
			<codeset param0="M" total="4"
				lostregs="eax" endregs="eax=@0.S32" endpipe="U">
				<line code="movsx eax, al"   time="&#45;&#45;3" comment="Sign extend" />
				<line code="mov @0.U32, eax" time="U 1"         comment="Store the value" />
			</codeset>

			<codeset param0="R" total="3"
				endregs="al=@0.U8" endpipe="V">
				<line code="movsx @0.U32, al" time="&#45;&#45;3" comment="Move the value over sign extended" />
			</codeset>
		</codetypeset>


		<!-- $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ -->
		<!-- From 16bit -->

		<!-- ====================================================================================== -->
		<!-- From U16 to U/S32 -->
		<codetypeset param0="U/S32" param1="U16">
			<codeset param0="M" total="4"
				lostregs="eax" endregs="eax=@0.U32" endpipe="U">
				<line code="movzx eax, ax"   time="&#45;&#45;3" comment="Zero extend" />
				<line code="mov @0.U32, eax" time="U 1"         comment="Store the value" />
			</codeset>

			<codeset param0="R" total="3"
				endregs="ax=@0.U16" endpipe="V">
				<line code="movzx @0.U32, ax" time="&#45;&#45;3" comment="Move the value over zero extended" />
			</codeset>
		</codetypeset>

		<!-- ====================================================================================== -->
		<!-- From S16 to U/S32 -->
		<codetypeset param0="U/S32" param1="S16">
			<codeset param0="M" total="4"
				lostregs="eax" endregs="eax=@0.U32" endpipe="U">
				<line code="movsx eax, ax"   time="&#45;&#45;3" comment="Sign extend" />
				<line code="mov @0.U32, eax" time="U 1"         comment="Store the value" />
			</codeset>

			<codeset param0="R" total="3"
				endregs="ax=@0.U16" endpipe="V">
				<line code="movsx @0.U32, ax" time="&#45;&#45;3" comment="Move the value over sign extended" />
			</codeset>
		</codetypeset>


		<!-- $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ -->
		<!-- From 24bit -->
		<codetypeset param0="U/S32" param1="U/S24">
			<codeset param0="M,R" time="1" timev="0"
				endregs="eax=@0.U32" endpipe="S">
				<line code="mov @0.U32, eax" time="U 1" timev=" V1" comment="Store the value" />
			</codeset>
		</codetypeset>


		<!-- $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ -->
		<!-- From 32-64bit and Pointers -->
		<codetypeset param0="U/S32" param1="U/S32-64,Pointer">
			<codeset param0="M,R" total="1" totalv="0"
				endregs="eax=@0.U32" endpipe="S">
				<line code="mov @0.U32, eax" time="U 1" timev=" V1" comment="Store the value" />
			</codeset>
		</codetypeset>


		<!-- $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ -->
		<!-- From Boolean -->
		<codetypeset param0="U/S32" param1="Boolean">
			<codeset param0="M" total="4"
				lostregs="eax" endregs="eax=@0.U32" endpipe="U">
				<line code="movzx eax, al"   time="&#45;&#45;3" comment="Zero extend" />
				<line code="mov @0.U32, eax" time="U 1"         comment="Store the value" />
			</codeset>

			<codeset param0="R" total="3"
				endregs="al=@0.U8" endpipe="V">
				<line code="movzx @0.U32, al" time="&#45;&#45;3" comment="Move the value over zero extended" />
			</codeset>
		</codetypeset>



		<!-- ********************************************************************************************************** -->
		<!-- Moving TO Boolean -->

		<!-- $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ -->
		<!-- From 8bit -->
		<codetypeset param0="Boolean" param1="U/S8">
			<codeset param0="M" total="3" totalv="3"
				lostregs="al,dl" endregs="dl=@0.U8" endpipe="U">
				<line code="xor dl, dl"    time="U 1" timev=" V1" comment="Clear to zero" />
				<line code="add al, -1"    time=" V1" timev="U 1" comment="Add -1. This will set carry if it is non-zero" />
				<line code="adc dl, dl"    time="U!1"             comment="1 if carry, 0 if no carry" />
				<line code="mov @0.U8, dl" time="U*1"             comment="Store the result" />
			</codeset>

			<codeset param0="R" total="2" totalv="2"
				lostregs="al" endpipe="U">
				<line code="xor @0.U8, @0.U8" time="U 1" timev=" V1" comment="Clear to zero" />
				<line code="add al, -1"       time=" V1" timev="U 1" comment="Add -1. This will set carry if non-zero" />
				<line code="adc @0.U8, @0.U8" time="U!1"             comment="1 if carry, 0 if no carry" />
			</codeset>
		</codetypeset>


		<!-- $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ -->
		<!-- From 16bit -->
		<codetypeset param0="Boolean" param1="U/S16">
			<codeset param0="M" total="4" totalv="4"
				lostregs="ax,dl" endregs="dl=@0.U8" endpipe="U">
				<line code="xor dl, dl"    time="U 1"   timev=" V1"   comment="Clear to zero" />
				<line code="add ax, -1"    time=" V1+1" timev="U 1+1" comment="Add -1. This will set carry if it is non-zero" />
				<line code="adc dl, dl"    time="U!1"                 comment="1 if carry, 0 if no carry" />
				<line code="mov @0.U8, dl" time="U*1"                 comment="Store the result" />
			</codeset>

			<codeset param0="R" total="3" totalv="3"
				lostregs="ax" endpipe="U">
				<line code="xor @0.U8, @0.U8" time="U 1"   timev=" V1"   comment="Clear to zero" />
				<line code="add ax, -1"       time=" V1+1" timev="U 1+1" comment="Add -1. This will set carry if non-zero" />
				<line code="adc @0.U8, @0.U8" time="U!1"                 comment="1 if carry, 0 if no carry" />
			</codeset>
		</codetypeset>


		<!-- $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ -->
		<!-- From 24-32bit -->
		<codetypeset param0="Boolean" param1="U/S24-32">
			<codeset param0="M" total="3" totalv="3"
				lostregs="eax,dl" endregs="dl=@0.U8" endpipe="U">
				<line code="xor dl, dl"        time="U 1" timev=" V1" comment="Clear to zero" />
				<line code="add eax, -1"       time=" V1" timev="U 1" comment="Add -1. This will set carry if it is non-zero" />
				<line code="adc dl, dl"        time="U!1"             comment="1 if carry, 0 if no carry" />
				<line code="mov @0, dl"        time="U*1"             comment="Store the result" />
			</codeset>

			<codeset param0="R" total="2" totalv="2"
				lostregs="eax" endpipe="U">
				<line code="xor @0, @0"        time="U 1" timev=" V1" comment="Clear to zero" />
				<line code="add eax, -1"       time=" V1" timev="U 1" comment="Add -1. This will set carry if it is non-zero" />
				<line code="adc @0, @0"        time="U!1"             comment="1 if carry, 0 if no carry" />
			</codeset>
		</codetypeset>


		<!-- $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ -->
		<!-- From 48-64bit -->
		<codetypeset param0="Boolean" param1="U/S48-64">
			<codeset param0="M" total="4" totalv="3"
				lostregs="eax,dl" endregs="dl=@0.U8" endpipe="U">
				<line code="or eax, edx" time="U 1" timev=" V1" comment="OR the high 32 bits with the low 32 bits" />
				<line code="xor dl, dl"  time=" V1" timev="U 1" comment="Clear to zero" />
				<line code="add eax, -1" time="U 1" timev=" V1" comment="Add -1. This will set carry if it is non-zero" />
				<line code="adc dl, dl"  time="U!1"             comment="1 if carry, 0 if no carry" />
				<line code="mov @0, dl"  time="U*1"             comment="Store the result" />
			</codeset>

			<codeset param0="R" total="3" totalv="2"
				lostregs="eax" endpipe="U">
				<line code="or eax, edx" time="U 1" timev=" V1" comment="OR the high 32 bits with the low 32 bits" />
				<line code="xor @0, @0"  time=" V1" timev="U 1" comment="Clear to zero" />
				<line code="add eax, -1" time="U 1" timev=" V1" comment="Add -1. This will set carry if it is non-zero" />
				<line code="adc @0, @0"  time="U!1"             comment="1 if carry, 0 if no carry" />
			</codeset>
		</codetypeset>


		<!-- $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ -->
		<!-- From 128bit -->
		<codetypeset param0="Boolean" param1="U/S128">
			<codeset param0="M,R" total="2+?" totalv="2+?"
				lostregs="eax,edx" endregs="al=@0.U8" endpipe="U">
				<line code="mov edx, eax"                 time="U 1"   timev=" V1" comment="Get the pointer" />
				<line code="call TypeCast_US128ToBoolean" time="!V1+?"             comment="Convert it to boolean" />
				<line code="mov @0.U8, al"                time="U 1"               comment="Store the value" />
			</codeset>
		</codetypeset>


		<!-- $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ -->
		<!-- From 256bit -->
		<codetypeset param0="Boolean" param1="U/S256">
			<codeset param0="M,R" total="2+?" totalv="2+?"
				lostregs="eax,edx" endregs="al=@0.U8" endpipe="U">
				<line code="mov edx, eax"                 time="U 1"   timev=" V1" comment="Get the pointer" />
				<line code="call TypeCast_US256ToBoolean" time="!V1+?"             comment="Convert it to boolean" />
				<line code="mov @0.U8, al"                time="U 1"               comment="Store the value" />
			</codeset>
		</codetypeset>


		<!-- $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ -->
		<!-- From Boolean -->
		<codetypeset param0="Boolean" param1="Boolean">
			<!-- 1/0 and -1/0 are the same here -->
			<codeset param0="M,R" total="1" totalv="0"
				endregs="al=@0.U8" endpipe="S">
				<line code="mov @0, al" time="U 1" timev=" V1" comment="Store it" />
			</codeset>
		</codetypeset>
	</mnemonic>
</encoding>
