<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
	<xs:simpleType name="OperandType">
		<xs:restriction base="xs:string">
			<xs:enumeration value="1" />
			<xs:enumeration value="3" />
			<xs:enumeration value="imm4" />
			<xs:enumeration value="imm8" />
			<xs:enumeration value="imm16" />
			<xs:enumeration value="imm32" />
			<xs:enumeration value="imm64" />
			<xs:enumeration value="al" />
			<xs:enumeration value="cl" />
			<xs:enumeration value="r8" />
			<xs:enumeration value="r8l" />
			<xs:enumeration value="ax" />
			<xs:enumeration value="r16" />
			<xs:enumeration value="r16l" />
			<xs:enumeration value="eax" />
			<xs:enumeration value="r32" />
			<xs:enumeration value="r32l" />
			<xs:enumeration value="rax" />
			<xs:enumeration value="r64" />
			<xs:enumeration value="mm" />
			<xs:enumeration value="xmm0" />
			<xs:enumeration value="xmm" />
			<xs:enumeration value="xmm{k}" />
			<xs:enumeration value="xmm{k}{z}" />
			<xs:enumeration value="ymm" />
			<xs:enumeration value="ymm{k}" />
			<xs:enumeration value="ymm{k}{z}" />
			<xs:enumeration value="zmm" />
			<xs:enumeration value="zmm{k}" />
			<xs:enumeration value="zmm{k}{z}" />
			<xs:enumeration value="k" />
			<xs:enumeration value="k{k}" />
			<xs:enumeration value="moffs32" />
			<xs:enumeration value="moffs64" />
			<xs:enumeration value="m" />
			<xs:enumeration value="m8" />
			<xs:enumeration value="m16" />
			<xs:enumeration value="m16{k}{z}" />
			<xs:enumeration value="m32" />
			<xs:enumeration value="m32{k}" />
			<xs:enumeration value="m32{k}{z}" />
			<xs:enumeration value="m64" />
			<xs:enumeration value="m64{k}" />
			<xs:enumeration value="m64{k}{z}" />
			<xs:enumeration value="m128" />
			<xs:enumeration value="m128{k}{z}" />
			<xs:enumeration value="m256" />
			<xs:enumeration value="m256{k}{z}" />
			<xs:enumeration value="m512" />
			<xs:enumeration value="m512{k}{z}" />
			<xs:enumeration value="m64/m32bcst" />
			<xs:enumeration value="m128/m32bcst" />
			<xs:enumeration value="m256/m32bcst" />
			<xs:enumeration value="m512/m32bcst" />
			<xs:enumeration value="m128/m64bcst" />
			<xs:enumeration value="m256/m64bcst" />
			<xs:enumeration value="m512/m64bcst" />
			<xs:enumeration value="vm32x" />
			<xs:enumeration value="vm32x{k}" />
			<xs:enumeration value="vm64x" />
			<xs:enumeration value="vm64x{k}" />
			<xs:enumeration value="vm32y" />
			<xs:enumeration value="vm32y{k}" />
			<xs:enumeration value="vm64y" />
			<xs:enumeration value="vm64y{k}" />
			<xs:enumeration value="vm32z" />
			<xs:enumeration value="vm32z{k}" />
			<xs:enumeration value="vm64z" />
			<xs:enumeration value="vm64z{k}" />
			<xs:enumeration value="rel8" />
			<xs:enumeration value="rel32" />
			<xs:enumeration value="{er}" />
			<xs:enumeration value="{sae}" />
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="ExtendedSize">
		<xs:restriction base="xs:int">
			<xs:enumeration value="2" />
			<xs:enumeration value="4" />
			<xs:enumeration value="8" />
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="ImplicitOperandID">
		<xs:restriction base="xs:string">
			<xs:enumeration value="al" />
			<xs:enumeration value="ax" />
			<xs:enumeration value="eax" />
			<xs:enumeration value="rax" />
			<xs:enumeration value="ebx" />
			<xs:enumeration value="rbx" />
			<xs:enumeration value="ecx" />
			<xs:enumeration value="rcx" />
			<xs:enumeration value="dx" />
			<xs:enumeration value="edx" />
			<xs:enumeration value="rdx" />
			<xs:enumeration value="rsi" />
			<xs:enumeration value="rdi" />
			<xs:enumeration value="r11" />
			<xs:enumeration value="xmm0" />
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="MMXMode">
		<xs:restriction base="xs:string">
			<xs:enumeration value="FPU" />
			<xs:enumeration value="MMX" />
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="XMMMode">
		<xs:restriction base="xs:string">
			<xs:enumeration value="SSE" />
			<xs:enumeration value="AVX" />
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="NaClVersion">
		<xs:restriction base="xs:int">
			<xs:enumeration value="33" />
			<xs:enumeration value="40" />
			<xs:enumeration value="41" />
			<xs:enumeration value="42" />
			<xs:enumeration value="43" />
			<xs:enumeration value="44" />
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="Prefix.byte">
		<xs:restriction base="xs:string">
			<xs:enumeration value="66" />
			<xs:enumeration value="F2" />
			<xs:enumeration value="F3" />
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="REX.W">
		<xs:restriction base="xs:string">
			<xs:enumeration value="0" />
			<xs:enumeration value="1" />
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="REX.R">
		<xs:restriction base="xs:string">
			<xs:enumeration value="#0" />
			<xs:enumeration value="#1" />
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="REX.X">
		<xs:restriction base="xs:string">
			<xs:enumeration value="#0" />
			<xs:enumeration value="#1" />
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="REX.B">
		<xs:restriction base="xs:string">
			<xs:enumeration value="#0" />
			<xs:enumeration value="#1" />
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="VEX.type">
		<xs:restriction base="xs:string">
			<xs:enumeration value="VEX" />
			<xs:enumeration value="XOP" />
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="VEX.W">
		<xs:restriction base="xs:string">
			<xs:enumeration value="0" />
			<xs:enumeration value="1" />
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="VEX.L">
		<xs:restriction base="xs:string">
			<xs:enumeration value="0" />
			<xs:enumeration value="1" />
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="VEX.m-mmmm">
		<xs:restriction base="xs:string">
			<xs:enumeration value="00001" />
			<xs:enumeration value="00010" />
			<xs:enumeration value="00011" />
			<xs:enumeration value="01000" />
			<xs:enumeration value="01001" />
			<xs:enumeration value="01010" />
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="VEX.pp">
		<xs:restriction base="xs:string">
			<xs:enumeration value="00" />
			<xs:enumeration value="01" />
			<xs:enumeration value="10" />
			<xs:enumeration value="11" />
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="VEX.R">
		<xs:restriction base="xs:string">
			<xs:enumeration value="0" />
			<xs:enumeration value="#0" />
			<xs:enumeration value="#1" />
			<xs:enumeration value="#2" />
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="VEX.X">
		<xs:restriction base="xs:string">
			<xs:enumeration value="#0" />
			<xs:enumeration value="#1" />
			<xs:enumeration value="#2" />
			<xs:enumeration value="#3" />
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="VEX.B">
		<xs:restriction base="xs:string">
			<xs:enumeration value="0" />
			<xs:enumeration value="#0" />
			<xs:enumeration value="#1" />
			<xs:enumeration value="#2" />
			<xs:enumeration value="#3" />
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="VEX.vvvv">
		<xs:restriction base="xs:string">
			<xs:enumeration value="0000" />
			<xs:enumeration value="#0" />
			<xs:enumeration value="#1" />
			<xs:enumeration value="#2" />
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="EVEX.mm">
		<xs:restriction base="xs:string">
			<xs:enumeration value="01" />
			<xs:enumeration value="10" />
			<xs:enumeration value="11" />
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="EVEX.pp">
		<xs:restriction base="xs:string">
			<xs:enumeration value="00" />
			<xs:enumeration value="01" />
			<xs:enumeration value="10" />
			<xs:enumeration value="11" />
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="EVEX.W">
		<xs:restriction base="xs:string">
			<xs:enumeration value="0" />
			<xs:enumeration value="1" />
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="EVEX.LL">
		<xs:restriction base="xs:string">
			<xs:enumeration value="00" />
			<xs:enumeration value="01" />
			<xs:enumeration value="10" />
			<xs:enumeration value="#2" />
			<xs:enumeration value="#3" />
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="EVEX.vvvv">
		<xs:restriction base="xs:string">
			<xs:enumeration value="0000" />
			<xs:enumeration value="#0" />
			<xs:enumeration value="#1" />
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="EVEX.V">
		<xs:restriction base="xs:string">
			<xs:enumeration value="0" />
			<xs:enumeration value="#0" />
			<xs:enumeration value="#1" />
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="EVEX.RR">
		<xs:restriction base="xs:string">
			<xs:enumeration value="#0" />
			<xs:enumeration value="#1" />
			<xs:enumeration value="#2" />
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="EVEX.B">
		<xs:restriction base="xs:string">
			<xs:enumeration value="#0" />
			<xs:enumeration value="#1" />
			<xs:enumeration value="#2" />
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="EVEX.X">
		<xs:restriction base="xs:string">
			<xs:enumeration value="#0" />
			<xs:enumeration value="#1" />
			<xs:enumeration value="#2" />
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="EVEX.b">
		<xs:restriction base="xs:string">
			<xs:enumeration value="0" />
			<xs:enumeration value="#1" />
			<xs:enumeration value="#2" />
			<xs:enumeration value="#3" />
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="EVEX.aaa">
		<xs:restriction base="xs:string">
			<xs:enumeration value="000" />
			<xs:enumeration value="#0" />
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="EVEX.z">
		<xs:restriction base="xs:string">
			<xs:enumeration value="0" />
			<xs:enumeration value="#0" />
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="EVEX.disp8xN">
		<xs:restriction base="xs:string">
			<xs:enumeration value="1" />
			<xs:enumeration value="2" />
			<xs:enumeration value="4" />
			<xs:enumeration value="8" />
			<xs:enumeration value="16" />
			<xs:enumeration value="32" />
			<xs:enumeration value="64" />
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="Opcode.byte">
		<xs:restriction base="xs:token">
			<xs:pattern value="[0-9A-F]{2}" />
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="Opcode.addend">
		<xs:restriction base="xs:string">
			<xs:enumeration value="#0" />
			<xs:enumeration value="#1" />
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="ModRM.mode">
		<xs:restriction base="xs:string">
			<xs:enumeration value="11" />
			<xs:enumeration value="#0" />
			<xs:enumeration value="#1" />
			<xs:enumeration value="#2" />
			<xs:enumeration value="#3" />
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="ModRM.reg">
		<xs:restriction base="xs:string">
			<xs:enumeration value="0" />
			<xs:enumeration value="1" />
			<xs:enumeration value="2" />
			<xs:enumeration value="3" />
			<xs:enumeration value="4" />
			<xs:enumeration value="5" />
			<xs:enumeration value="6" />
			<xs:enumeration value="7" />
			<xs:enumeration value="#0" />
			<xs:enumeration value="#1" />
			<xs:enumeration value="#2" />
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="ModRM.rm">
		<xs:restriction base="xs:string">
			<xs:enumeration value="#0" />
			<xs:enumeration value="#1" />
			<xs:enumeration value="#2" />
			<xs:enumeration value="#3" />
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="Immediate.value">
		<xs:restriction base="xs:string">
			<xs:enumeration value="#0" />
			<xs:enumeration value="#1" />
			<xs:enumeration value="#2" />
			<xs:enumeration value="#3" />
			<xs:enumeration value="#4" />
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="RegisterByte.register">
		<xs:restriction base="xs:string">
			<xs:enumeration value="#2" />
			<xs:enumeration value="#3" />
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="RegisterByte.payload">
		<xs:restriction base="xs:string">
			<xs:enumeration value="#4" />
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="CodeOffset.value">
		<xs:restriction base="xs:string">
			<xs:enumeration value="#0" />
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="DataOffset.value">
		<xs:restriction base="xs:string">
			<xs:enumeration value="#0" />
			<xs:enumeration value="#1" />
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="ISAExtension">
		<xs:restriction base="xs:string">
			<xs:enumeration value="RDTSC" />
			<xs:enumeration value="RDTSCP" />
			<xs:enumeration value="CPUID" />
			<xs:enumeration value="CMOV" />
			<xs:enumeration value="MMX" />
			<xs:enumeration value="MMX+" />
			<xs:enumeration value="FEMMS" />
			<xs:enumeration value="3dnow!" />
			<xs:enumeration value="3dnow!+" />
			<xs:enumeration value="SSE" />
			<xs:enumeration value="SSE2" />
			<xs:enumeration value="SSE3" />
			<xs:enumeration value="SSSE3" />
			<xs:enumeration value="SSE4.1" />
			<xs:enumeration value="SSE4.2" />
			<xs:enumeration value="SSE4A" />
			<xs:enumeration value="AVX" />
			<xs:enumeration value="AVX2" />
			<xs:enumeration value="XOP" />
			<xs:enumeration value="FMA3" />
			<xs:enumeration value="FMA4" />
			<xs:enumeration value="F16C" />
			<xs:enumeration value="PCLMULQDQ" />
			<xs:enumeration value="AES" />
			<xs:enumeration value="SHA" />
			<xs:enumeration value="RDRAND" />
			<xs:enumeration value="RDSEED" />
			<xs:enumeration value="MOVBE" />
			<xs:enumeration value="POPCNT" />
			<xs:enumeration value="LZCNT" />
			<xs:enumeration value="BMI" />
			<xs:enumeration value="BMI2" />
			<xs:enumeration value="TBM" />
			<xs:enumeration value="ADX" />
			<xs:enumeration value="CLFLUSH" />
			<xs:enumeration value="CLFLUSHOPT" />
			<xs:enumeration value="CLWB" />
			<xs:enumeration value="CLZERO" />
			<xs:enumeration value="PREFETCH" />
			<xs:enumeration value="PREFETCHW" />
			<xs:enumeration value="PREFETCHWT1" />
			<xs:enumeration value="MONITOR" />
			<xs:enumeration value="MONITORX" />
			<xs:enumeration value="AVX512F" />
			<xs:enumeration value="AVX512BW" />
			<xs:enumeration value="AVX512DQ" />
			<xs:enumeration value="AVX512VL" />
			<xs:enumeration value="AVX512PF" />
			<xs:enumeration value="AVX512ER" />
			<xs:enumeration value="AVX512CD" />
			<xs:enumeration value="AVX512VBMI" />
			<xs:enumeration value="AVX512IFMA" />
			<xs:enumeration value="AVX512VPOPCNTDQ" />
		</xs:restriction>
	</xs:simpleType>
	<xs:element name="InstructionSet">
		<xs:complexType>
			<xs:sequence>
				<xs:element name="Instruction" maxOccurs="unbounded">
					<xs:complexType>
						<xs:sequence>
							<xs:element name="InstructionForm" maxOccurs="unbounded">
								<xs:complexType>
									<xs:sequence>
										<xs:element name="ISA" minOccurs="0" maxOccurs="2">
											<xs:complexType>
												<xs:attribute name="id" type="ISAExtension" />
											</xs:complexType>
										</xs:element>
										<xs:element name="Operand" minOccurs="0" maxOccurs="unbounded">
											<xs:complexType>
												<xs:attribute name="type" type="OperandType" use="required" />
												<xs:attribute name="input" type="xs:boolean" />
												<xs:attribute name="output" type="xs:boolean" />
												<xs:attribute name="extended-size" type="ExtendedSize" />
											</xs:complexType>
										</xs:element>
										<xs:element name="ImplicitOperand" minOccurs="0" maxOccurs="unbounded">
											<xs:complexType>
												<xs:attribute name="id" type="ImplicitOperandID" use="required" />
												<xs:attribute name="input" type="xs:boolean" use="required" />
												<xs:attribute name="output" type="xs:boolean" use="required" />
											</xs:complexType>
										</xs:element>
										<xs:element name="Encoding" maxOccurs="2">
											<xs:complexType>
												<xs:sequence>
													<xs:element name="Prefix" minOccurs="0" maxOccurs="2">
														<xs:complexType>
															<xs:attribute name="mandatory" type="xs:boolean" use="required" />
															<xs:attribute name="byte" type="Prefix.byte" use="required" />
														</xs:complexType>
													</xs:element>
													<xs:element name="REX" minOccurs="0">
														<xs:complexType>
															<xs:attribute name="mandatory" type="xs:boolean" use="required" />
															<xs:attribute name="W" type="REX.W" use="required" />
															<xs:attribute name="R" type="REX.R" />
															<xs:attribute name="X" type="REX.X" />
															<xs:attribute name="B" type="REX.B" />
														</xs:complexType>
													</xs:element>
													<xs:element name="VEX" minOccurs="0">
														<xs:complexType>
															<xs:attribute name="type" type="VEX.type" use="required" />
															<xs:attribute name="W" type="VEX.W" />
															<xs:attribute name="L" type="VEX.L" />
															<xs:attribute name="m-mmmm" type="VEX.m-mmmm" use="required" />
															<xs:attribute name="pp" type="VEX.pp" use="required" />
															<xs:attribute name="R" type="VEX.R" />
															<xs:attribute name="X" type="VEX.X" />
															<xs:attribute name="B" type="VEX.B" />
															<xs:attribute name="vvvv" type="VEX.vvvv" />
														</xs:complexType>
													</xs:element>
													<xs:element name="EVEX" minOccurs="0">
														<xs:complexType>
															<xs:attribute name="mm" type="EVEX.mm" use="required" />
															<xs:attribute name="pp" type="EVEX.pp" use="required" />
															<xs:attribute name="W" type="EVEX.W" />
															<xs:attribute name="LL" type="EVEX.LL" />
															<xs:attribute name="vvvv" type="EVEX.vvvv" />
															<xs:attribute name="V" type="EVEX.V" />
															<xs:attribute name="RR" type="EVEX.RR" />
															<xs:attribute name="B" type="EVEX.B" />
															<xs:attribute name="X" type="EVEX.X" />
															<xs:attribute name="b" type="EVEX.b" use="required" />
															<xs:attribute name="aaa" type="EVEX.aaa" use="required" />
															<xs:attribute name="z" type="EVEX.z" use="required" />
															<xs:attribute name="disp8xN" type="EVEX.disp8xN" />
														</xs:complexType>
													</xs:element>
													<xs:element name="Opcode" maxOccurs="4">
														<xs:complexType>
															<xs:attribute name="byte" type="Opcode.byte" use="required" />
															<xs:attribute name="addend" type="Opcode.addend" />
														</xs:complexType>
													</xs:element>
													<xs:element name="ModRM" minOccurs="0">
														<xs:complexType>
															<xs:attribute name="mode" type="ModRM.mode" />
															<xs:attribute name="reg" type="ModRM.reg" />
															<xs:attribute name="rm" type="ModRM.rm" />
														</xs:complexType>
													</xs:element>
													<xs:element name="Opcode" minOccurs="0" maxOccurs="1">
														<xs:complexType>
															<xs:attribute name="byte" type="Opcode.byte" use="required" />
															<xs:attribute name="addend" type="Opcode.addend" />
														</xs:complexType>
													</xs:element>
													<xs:element name="Immediate" minOccurs="0" maxOccurs="2">
														<xs:complexType>
															<xs:attribute name="size" type="xs:int" use="required" />
															<xs:attribute name="value" type="Immediate.value" use="required" />
														</xs:complexType>
													</xs:element>
													<xs:element name="RegisterByte" minOccurs="0" maxOccurs="1">
														<xs:complexType>
															<xs:attribute name="register" type="RegisterByte.register" use="required" />
															<xs:attribute name="payload" type="RegisterByte.payload" />
														</xs:complexType>
													</xs:element>
													<xs:element name="CodeOffset" minOccurs="0">
														<xs:complexType>
															<xs:attribute name="size" type="xs:int" use="required" />
															<xs:attribute name="value" type="CodeOffset.value" use="required" />
														</xs:complexType>
													</xs:element>
													<xs:element name="DataOffset" minOccurs="0">
														<xs:complexType>
															<xs:attribute name="size" type="xs:int" use="required" />
															<xs:attribute name="value" type="DataOffset.value" use="required" />
														</xs:complexType>
													</xs:element>
												</xs:sequence>
											</xs:complexType>
										</xs:element>
									</xs:sequence>
									<xs:attribute name="gas-name" type="xs:string" use="required" />
									<xs:attribute name="go-name" type="xs:string" />
									<xs:attribute name="mmx-mode" type="MMXMode" />
									<xs:attribute name="xmm-mode" type="XMMMode" />
									<xs:attribute name="cancelling-inputs" type="xs:boolean" />
									<xs:attribute name="nacl-version" type="NaClVersion" />
									<xs:attribute name="nacl-zero-extends-outputs" type="xs:boolean" />
								</xs:complexType>
							</xs:element>
						</xs:sequence>
						<xs:attribute name="name" type="xs:string" use="required" />
						<xs:attribute name="summary" type="xs:string" />
					</xs:complexType>
				</xs:element>
			</xs:sequence>
			<xs:attribute name="name" type="xs:string" use="required" />
		</xs:complexType>
	</xs:element>
</xs:schema>
