<?xml version='1.0' encoding='utf-8'?>
<InstructionSet name="k1om">
  <Instruction name="ADC" summary="Add with Carry">
    <InstructionForm gas-name="adcb">
      <Operand type="al" input="true" output="true"/>
      <Operand type="imm8"/>
      <Encoding>
        <Opcode byte="14"/>
        <Immediate size="1" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="adcb">
      <Operand type="r8" input="true" output="true"/>
      <Operand type="imm8"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="80"/>
        <ModRM mode="11" reg="2" rm="#0"/>
        <Immediate size="1" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="adcb">
      <Operand type="r8" input="true" output="true"/>
      <Operand type="r8" input="true" output="false"/>
      <Encoding>
        <REX mandatory="false" W="0" R="#1" B="#0"/>
        <Opcode byte="10"/>
        <ModRM mode="11" reg="#1" rm="#0"/>
      </Encoding>
      <Encoding>
        <REX mandatory="false" W="0" R="#0" B="#1"/>
        <Opcode byte="12"/>
        <ModRM mode="11" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="adcb">
      <Operand type="r8" input="true" output="true"/>
      <Operand type="m8" input="true" output="false"/>
      <Encoding>
        <REX mandatory="false" W="0" R="#0" B="#1" X="#1"/>
        <Opcode byte="12"/>
        <ModRM mode="#1" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="adcw">
      <Operand type="ax" input="true" output="true"/>
      <Operand type="imm16"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <Opcode byte="15"/>
        <Immediate size="2" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="adcw">
      <Operand type="r16" input="true" output="true"/>
      <Operand type="imm8" extended-size="2"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="83"/>
        <ModRM mode="11" reg="2" rm="#0"/>
        <Immediate size="1" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="adcw">
      <Operand type="r16" input="true" output="true"/>
      <Operand type="imm16"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="81"/>
        <ModRM mode="11" reg="2" rm="#0"/>
        <Immediate size="2" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="adcw">
      <Operand type="r16" input="true" output="true"/>
      <Operand type="r16" input="true" output="false"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" R="#1" B="#0"/>
        <Opcode byte="11"/>
        <ModRM mode="11" reg="#1" rm="#0"/>
      </Encoding>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" R="#0" B="#1"/>
        <Opcode byte="13"/>
        <ModRM mode="11" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="adcw">
      <Operand type="r16" input="true" output="true"/>
      <Operand type="m16" input="true" output="false"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" R="#0" B="#1" X="#1"/>
        <Opcode byte="13"/>
        <ModRM mode="#1" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="adcl">
      <Operand type="eax" input="true" output="true"/>
      <Operand type="imm32"/>
      <Encoding>
        <Opcode byte="15"/>
        <Immediate size="4" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="adcl">
      <Operand type="r32" input="true" output="true"/>
      <Operand type="imm8" extended-size="4"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="83"/>
        <ModRM mode="11" reg="2" rm="#0"/>
        <Immediate size="1" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="adcl">
      <Operand type="r32" input="true" output="true"/>
      <Operand type="imm32"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="81"/>
        <ModRM mode="11" reg="2" rm="#0"/>
        <Immediate size="4" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="adcl">
      <Operand type="r32" input="true" output="true"/>
      <Operand type="r32" input="true" output="false"/>
      <Encoding>
        <REX mandatory="false" W="0" R="#1" B="#0"/>
        <Opcode byte="11"/>
        <ModRM mode="11" reg="#1" rm="#0"/>
      </Encoding>
      <Encoding>
        <REX mandatory="false" W="0" R="#0" B="#1"/>
        <Opcode byte="13"/>
        <ModRM mode="11" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="adcl">
      <Operand type="r32" input="true" output="true"/>
      <Operand type="m32" input="true" output="false"/>
      <Encoding>
        <REX mandatory="false" W="0" R="#0" B="#1" X="#1"/>
        <Opcode byte="13"/>
        <ModRM mode="#1" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="adcq">
      <Operand type="rax" input="true" output="true"/>
      <Operand type="imm32"/>
      <Encoding>
        <REX mandatory="true" W="1"/>
        <Opcode byte="15"/>
        <Immediate size="4" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="adcq">
      <Operand type="r64" input="true" output="true"/>
      <Operand type="imm8" extended-size="8"/>
      <Encoding>
        <REX mandatory="true" W="1" B="#0"/>
        <Opcode byte="83"/>
        <ModRM mode="11" reg="2" rm="#0"/>
        <Immediate size="1" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="adcq">
      <Operand type="r64" input="true" output="true"/>
      <Operand type="imm32" extended-size="8"/>
      <Encoding>
        <REX mandatory="true" W="1" B="#0"/>
        <Opcode byte="81"/>
        <ModRM mode="11" reg="2" rm="#0"/>
        <Immediate size="4" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="adcq">
      <Operand type="r64" input="true" output="true"/>
      <Operand type="r64" input="true" output="false"/>
      <Encoding>
        <REX mandatory="true" W="1" R="#1" B="#0"/>
        <Opcode byte="11"/>
        <ModRM mode="11" reg="#1" rm="#0"/>
      </Encoding>
      <Encoding>
        <REX mandatory="true" W="1" R="#0" B="#1"/>
        <Opcode byte="13"/>
        <ModRM mode="11" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="adcq">
      <Operand type="r64" input="true" output="true"/>
      <Operand type="m64" input="true" output="false"/>
      <Encoding>
        <REX mandatory="true" W="1" R="#0" B="#1" X="#1"/>
        <Opcode byte="13"/>
        <ModRM mode="#1" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="adcb">
      <Operand type="m8" input="true" output="true"/>
      <Operand type="imm8"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0" X="#0"/>
        <Opcode byte="80"/>
        <ModRM mode="#0" reg="2" rm="#0"/>
        <Immediate size="1" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="adcb">
      <Operand type="m8" input="true" output="true"/>
      <Operand type="r8" input="true" output="false"/>
      <Encoding>
        <REX mandatory="false" W="0" R="#1" B="#0" X="#0"/>
        <Opcode byte="10"/>
        <ModRM mode="#0" reg="#1" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="adcw">
      <Operand type="m16" input="true" output="true"/>
      <Operand type="imm8" extended-size="2"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" B="#0" X="#0"/>
        <Opcode byte="83"/>
        <ModRM mode="#0" reg="2" rm="#0"/>
        <Immediate size="1" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="adcw">
      <Operand type="m16" input="true" output="true"/>
      <Operand type="imm16"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" B="#0" X="#0"/>
        <Opcode byte="81"/>
        <ModRM mode="#0" reg="2" rm="#0"/>
        <Immediate size="2" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="adcw">
      <Operand type="m16" input="true" output="true"/>
      <Operand type="r16" input="true" output="false"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" R="#1" B="#0" X="#0"/>
        <Opcode byte="11"/>
        <ModRM mode="#0" reg="#1" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="adcl">
      <Operand type="m32" input="true" output="true"/>
      <Operand type="imm8" extended-size="4"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0" X="#0"/>
        <Opcode byte="83"/>
        <ModRM mode="#0" reg="2" rm="#0"/>
        <Immediate size="1" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="adcl">
      <Operand type="m32" input="true" output="true"/>
      <Operand type="imm32"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0" X="#0"/>
        <Opcode byte="81"/>
        <ModRM mode="#0" reg="2" rm="#0"/>
        <Immediate size="4" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="adcl">
      <Operand type="m32" input="true" output="true"/>
      <Operand type="r32" input="true" output="false"/>
      <Encoding>
        <REX mandatory="false" W="0" R="#1" B="#0" X="#0"/>
        <Opcode byte="11"/>
        <ModRM mode="#0" reg="#1" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="adcq">
      <Operand type="m64" input="true" output="true"/>
      <Operand type="imm8" extended-size="8"/>
      <Encoding>
        <REX mandatory="true" W="1" B="#0" X="#0"/>
        <Opcode byte="83"/>
        <ModRM mode="#0" reg="2" rm="#0"/>
        <Immediate size="1" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="adcq">
      <Operand type="m64" input="true" output="true"/>
      <Operand type="imm32" extended-size="8"/>
      <Encoding>
        <REX mandatory="true" W="1" B="#0" X="#0"/>
        <Opcode byte="81"/>
        <ModRM mode="#0" reg="2" rm="#0"/>
        <Immediate size="4" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="adcq">
      <Operand type="m64" input="true" output="true"/>
      <Operand type="r64" input="true" output="false"/>
      <Encoding>
        <REX mandatory="true" W="1" R="#1" B="#0" X="#0"/>
        <Opcode byte="11"/>
        <ModRM mode="#0" reg="#1" rm="#0"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="ADD" summary="Add">
    <InstructionForm gas-name="addb">
      <Operand type="al" input="true" output="true"/>
      <Operand type="imm8"/>
      <Encoding>
        <Opcode byte="04"/>
        <Immediate size="1" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="addb">
      <Operand type="r8" input="true" output="true"/>
      <Operand type="imm8"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="80"/>
        <ModRM mode="11" reg="0" rm="#0"/>
        <Immediate size="1" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="addb">
      <Operand type="r8" input="true" output="true"/>
      <Operand type="r8" input="true" output="false"/>
      <Encoding>
        <REX mandatory="false" W="0" R="#1" B="#0"/>
        <Opcode byte="00"/>
        <ModRM mode="11" reg="#1" rm="#0"/>
      </Encoding>
      <Encoding>
        <REX mandatory="false" W="0" R="#0" B="#1"/>
        <Opcode byte="02"/>
        <ModRM mode="11" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="addb">
      <Operand type="r8" input="true" output="true"/>
      <Operand type="m8" input="true" output="false"/>
      <Encoding>
        <REX mandatory="false" W="0" R="#0" B="#1" X="#1"/>
        <Opcode byte="02"/>
        <ModRM mode="#1" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="addw">
      <Operand type="ax" input="true" output="true"/>
      <Operand type="imm16"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <Opcode byte="05"/>
        <Immediate size="2" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="addw">
      <Operand type="r16" input="true" output="true"/>
      <Operand type="imm8" extended-size="2"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="83"/>
        <ModRM mode="11" reg="0" rm="#0"/>
        <Immediate size="1" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="addw">
      <Operand type="r16" input="true" output="true"/>
      <Operand type="imm16"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="81"/>
        <ModRM mode="11" reg="0" rm="#0"/>
        <Immediate size="2" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="addw">
      <Operand type="r16" input="true" output="true"/>
      <Operand type="r16" input="true" output="false"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" R="#1" B="#0"/>
        <Opcode byte="01"/>
        <ModRM mode="11" reg="#1" rm="#0"/>
      </Encoding>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" R="#0" B="#1"/>
        <Opcode byte="03"/>
        <ModRM mode="11" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="addw">
      <Operand type="r16" input="true" output="true"/>
      <Operand type="m16" input="true" output="false"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" R="#0" B="#1" X="#1"/>
        <Opcode byte="03"/>
        <ModRM mode="#1" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="addl">
      <Operand type="eax" input="true" output="true"/>
      <Operand type="imm32"/>
      <Encoding>
        <Opcode byte="05"/>
        <Immediate size="4" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="addl">
      <Operand type="r32" input="true" output="true"/>
      <Operand type="imm8" extended-size="4"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="83"/>
        <ModRM mode="11" reg="0" rm="#0"/>
        <Immediate size="1" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="addl">
      <Operand type="r32" input="true" output="true"/>
      <Operand type="imm32"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="81"/>
        <ModRM mode="11" reg="0" rm="#0"/>
        <Immediate size="4" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="addl">
      <Operand type="r32" input="true" output="true"/>
      <Operand type="r32" input="true" output="false"/>
      <Encoding>
        <REX mandatory="false" W="0" R="#1" B="#0"/>
        <Opcode byte="01"/>
        <ModRM mode="11" reg="#1" rm="#0"/>
      </Encoding>
      <Encoding>
        <REX mandatory="false" W="0" R="#0" B="#1"/>
        <Opcode byte="03"/>
        <ModRM mode="11" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="addl">
      <Operand type="r32" input="true" output="true"/>
      <Operand type="m32" input="true" output="false"/>
      <Encoding>
        <REX mandatory="false" W="0" R="#0" B="#1" X="#1"/>
        <Opcode byte="03"/>
        <ModRM mode="#1" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="addq">
      <Operand type="rax" input="true" output="true"/>
      <Operand type="imm32"/>
      <Encoding>
        <REX mandatory="true" W="1"/>
        <Opcode byte="05"/>
        <Immediate size="4" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="addq">
      <Operand type="r64" input="true" output="true"/>
      <Operand type="imm8" extended-size="8"/>
      <Encoding>
        <REX mandatory="true" W="1" B="#0"/>
        <Opcode byte="83"/>
        <ModRM mode="11" reg="0" rm="#0"/>
        <Immediate size="1" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="addq">
      <Operand type="r64" input="true" output="true"/>
      <Operand type="imm32" extended-size="8"/>
      <Encoding>
        <REX mandatory="true" W="1" B="#0"/>
        <Opcode byte="81"/>
        <ModRM mode="11" reg="0" rm="#0"/>
        <Immediate size="4" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="addq">
      <Operand type="r64" input="true" output="true"/>
      <Operand type="r64" input="true" output="false"/>
      <Encoding>
        <REX mandatory="true" W="1" R="#1" B="#0"/>
        <Opcode byte="01"/>
        <ModRM mode="11" reg="#1" rm="#0"/>
      </Encoding>
      <Encoding>
        <REX mandatory="true" W="1" R="#0" B="#1"/>
        <Opcode byte="03"/>
        <ModRM mode="11" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="addq">
      <Operand type="r64" input="true" output="true"/>
      <Operand type="m64" input="true" output="false"/>
      <Encoding>
        <REX mandatory="true" W="1" R="#0" B="#1" X="#1"/>
        <Opcode byte="03"/>
        <ModRM mode="#1" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="addb">
      <Operand type="m8" input="true" output="true"/>
      <Operand type="imm8"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0" X="#0"/>
        <Opcode byte="80"/>
        <ModRM mode="#0" reg="0" rm="#0"/>
        <Immediate size="1" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="addb">
      <Operand type="m8" input="true" output="true"/>
      <Operand type="r8" input="true" output="false"/>
      <Encoding>
        <REX mandatory="false" W="0" R="#1" B="#0" X="#0"/>
        <Opcode byte="00"/>
        <ModRM mode="#0" reg="#1" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="addw">
      <Operand type="m16" input="true" output="true"/>
      <Operand type="imm8" extended-size="2"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" B="#0" X="#0"/>
        <Opcode byte="83"/>
        <ModRM mode="#0" reg="0" rm="#0"/>
        <Immediate size="1" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="addw">
      <Operand type="m16" input="true" output="true"/>
      <Operand type="imm16"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" B="#0" X="#0"/>
        <Opcode byte="81"/>
        <ModRM mode="#0" reg="0" rm="#0"/>
        <Immediate size="2" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="addw">
      <Operand type="m16" input="true" output="true"/>
      <Operand type="r16" input="true" output="false"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" R="#1" B="#0" X="#0"/>
        <Opcode byte="01"/>
        <ModRM mode="#0" reg="#1" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="addl">
      <Operand type="m32" input="true" output="true"/>
      <Operand type="imm8" extended-size="4"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0" X="#0"/>
        <Opcode byte="83"/>
        <ModRM mode="#0" reg="0" rm="#0"/>
        <Immediate size="1" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="addl">
      <Operand type="m32" input="true" output="true"/>
      <Operand type="imm32"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0" X="#0"/>
        <Opcode byte="81"/>
        <ModRM mode="#0" reg="0" rm="#0"/>
        <Immediate size="4" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="addl">
      <Operand type="m32" input="true" output="true"/>
      <Operand type="r32" input="true" output="false"/>
      <Encoding>
        <REX mandatory="false" W="0" R="#1" B="#0" X="#0"/>
        <Opcode byte="01"/>
        <ModRM mode="#0" reg="#1" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="addq">
      <Operand type="m64" input="true" output="true"/>
      <Operand type="imm8" extended-size="8"/>
      <Encoding>
        <REX mandatory="true" W="1" B="#0" X="#0"/>
        <Opcode byte="83"/>
        <ModRM mode="#0" reg="0" rm="#0"/>
        <Immediate size="1" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="addq">
      <Operand type="m64" input="true" output="true"/>
      <Operand type="imm32" extended-size="8"/>
      <Encoding>
        <REX mandatory="true" W="1" B="#0" X="#0"/>
        <Opcode byte="81"/>
        <ModRM mode="#0" reg="0" rm="#0"/>
        <Immediate size="4" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="addq">
      <Operand type="m64" input="true" output="true"/>
      <Operand type="r64" input="true" output="false"/>
      <Encoding>
        <REX mandatory="true" W="1" R="#1" B="#0" X="#0"/>
        <Opcode byte="01"/>
        <ModRM mode="#0" reg="#1" rm="#0"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="AND" summary="Logical AND">
    <InstructionForm gas-name="andb">
      <Operand type="al" input="true" output="true"/>
      <Operand type="imm8"/>
      <Encoding>
        <Opcode byte="24"/>
        <Immediate size="1" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="andb">
      <Operand type="r8" input="true" output="true"/>
      <Operand type="imm8"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="80"/>
        <ModRM mode="11" reg="4" rm="#0"/>
        <Immediate size="1" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="andb">
      <Operand type="r8" input="true" output="true"/>
      <Operand type="r8" input="true" output="false"/>
      <Encoding>
        <REX mandatory="false" W="0" R="#1" B="#0"/>
        <Opcode byte="20"/>
        <ModRM mode="11" reg="#1" rm="#0"/>
      </Encoding>
      <Encoding>
        <REX mandatory="false" W="0" R="#0" B="#1"/>
        <Opcode byte="22"/>
        <ModRM mode="11" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="andb">
      <Operand type="r8" input="true" output="true"/>
      <Operand type="m8" input="true" output="false"/>
      <Encoding>
        <REX mandatory="false" W="0" R="#0" B="#1" X="#1"/>
        <Opcode byte="22"/>
        <ModRM mode="#1" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="andw">
      <Operand type="ax" input="true" output="true"/>
      <Operand type="imm16"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <Opcode byte="25"/>
        <Immediate size="2" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="andw">
      <Operand type="r16" input="true" output="true"/>
      <Operand type="imm8" extended-size="2"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="83"/>
        <ModRM mode="11" reg="4" rm="#0"/>
        <Immediate size="1" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="andw">
      <Operand type="r16" input="true" output="true"/>
      <Operand type="imm16"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="81"/>
        <ModRM mode="11" reg="4" rm="#0"/>
        <Immediate size="2" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="andw">
      <Operand type="r16" input="true" output="true"/>
      <Operand type="r16" input="true" output="false"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" R="#1" B="#0"/>
        <Opcode byte="21"/>
        <ModRM mode="11" reg="#1" rm="#0"/>
      </Encoding>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" R="#0" B="#1"/>
        <Opcode byte="23"/>
        <ModRM mode="11" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="andw">
      <Operand type="r16" input="true" output="true"/>
      <Operand type="m16" input="true" output="false"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" R="#0" B="#1" X="#1"/>
        <Opcode byte="23"/>
        <ModRM mode="#1" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="andl">
      <Operand type="eax" input="true" output="true"/>
      <Operand type="imm32"/>
      <Encoding>
        <Opcode byte="25"/>
        <Immediate size="4" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="andl">
      <Operand type="r32" input="true" output="true"/>
      <Operand type="imm8" extended-size="4"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="83"/>
        <ModRM mode="11" reg="4" rm="#0"/>
        <Immediate size="1" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="andl">
      <Operand type="r32" input="true" output="true"/>
      <Operand type="imm32"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="81"/>
        <ModRM mode="11" reg="4" rm="#0"/>
        <Immediate size="4" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="andl">
      <Operand type="r32" input="true" output="true"/>
      <Operand type="r32" input="true" output="false"/>
      <Encoding>
        <REX mandatory="false" W="0" R="#1" B="#0"/>
        <Opcode byte="21"/>
        <ModRM mode="11" reg="#1" rm="#0"/>
      </Encoding>
      <Encoding>
        <REX mandatory="false" W="0" R="#0" B="#1"/>
        <Opcode byte="23"/>
        <ModRM mode="11" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="andl">
      <Operand type="r32" input="true" output="true"/>
      <Operand type="m32" input="true" output="false"/>
      <Encoding>
        <REX mandatory="false" W="0" R="#0" B="#1" X="#1"/>
        <Opcode byte="23"/>
        <ModRM mode="#1" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="andq">
      <Operand type="rax" input="true" output="true"/>
      <Operand type="imm32"/>
      <Encoding>
        <REX mandatory="true" W="1"/>
        <Opcode byte="25"/>
        <Immediate size="4" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="andq">
      <Operand type="r64" input="true" output="true"/>
      <Operand type="imm8" extended-size="8"/>
      <Encoding>
        <REX mandatory="true" W="1" B="#0"/>
        <Opcode byte="83"/>
        <ModRM mode="11" reg="4" rm="#0"/>
        <Immediate size="1" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="andq">
      <Operand type="r64" input="true" output="true"/>
      <Operand type="imm32" extended-size="8"/>
      <Encoding>
        <REX mandatory="true" W="1" B="#0"/>
        <Opcode byte="81"/>
        <ModRM mode="11" reg="4" rm="#0"/>
        <Immediate size="4" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="andq">
      <Operand type="r64" input="true" output="true"/>
      <Operand type="r64" input="true" output="false"/>
      <Encoding>
        <REX mandatory="true" W="1" R="#1" B="#0"/>
        <Opcode byte="21"/>
        <ModRM mode="11" reg="#1" rm="#0"/>
      </Encoding>
      <Encoding>
        <REX mandatory="true" W="1" R="#0" B="#1"/>
        <Opcode byte="23"/>
        <ModRM mode="11" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="andq">
      <Operand type="r64" input="true" output="true"/>
      <Operand type="m64" input="true" output="false"/>
      <Encoding>
        <REX mandatory="true" W="1" R="#0" B="#1" X="#1"/>
        <Opcode byte="23"/>
        <ModRM mode="#1" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="andb">
      <Operand type="m8" input="true" output="true"/>
      <Operand type="imm8"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0" X="#0"/>
        <Opcode byte="80"/>
        <ModRM mode="#0" reg="4" rm="#0"/>
        <Immediate size="1" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="andb">
      <Operand type="m8" input="true" output="true"/>
      <Operand type="r8" input="true" output="false"/>
      <Encoding>
        <REX mandatory="false" W="0" R="#1" B="#0" X="#0"/>
        <Opcode byte="20"/>
        <ModRM mode="#0" reg="#1" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="andw">
      <Operand type="m16" input="true" output="true"/>
      <Operand type="imm8" extended-size="2"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" B="#0" X="#0"/>
        <Opcode byte="83"/>
        <ModRM mode="#0" reg="4" rm="#0"/>
        <Immediate size="1" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="andw">
      <Operand type="m16" input="true" output="true"/>
      <Operand type="imm16"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" B="#0" X="#0"/>
        <Opcode byte="81"/>
        <ModRM mode="#0" reg="4" rm="#0"/>
        <Immediate size="2" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="andw">
      <Operand type="m16" input="true" output="true"/>
      <Operand type="r16" input="true" output="false"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" R="#1" B="#0" X="#0"/>
        <Opcode byte="21"/>
        <ModRM mode="#0" reg="#1" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="andl">
      <Operand type="m32" input="true" output="true"/>
      <Operand type="imm8" extended-size="4"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0" X="#0"/>
        <Opcode byte="83"/>
        <ModRM mode="#0" reg="4" rm="#0"/>
        <Immediate size="1" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="andl">
      <Operand type="m32" input="true" output="true"/>
      <Operand type="imm32"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0" X="#0"/>
        <Opcode byte="81"/>
        <ModRM mode="#0" reg="4" rm="#0"/>
        <Immediate size="4" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="andl">
      <Operand type="m32" input="true" output="true"/>
      <Operand type="r32" input="true" output="false"/>
      <Encoding>
        <REX mandatory="false" W="0" R="#1" B="#0" X="#0"/>
        <Opcode byte="21"/>
        <ModRM mode="#0" reg="#1" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="andq">
      <Operand type="m64" input="true" output="true"/>
      <Operand type="imm8" extended-size="8"/>
      <Encoding>
        <REX mandatory="true" W="1" B="#0" X="#0"/>
        <Opcode byte="83"/>
        <ModRM mode="#0" reg="4" rm="#0"/>
        <Immediate size="1" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="andq">
      <Operand type="m64" input="true" output="true"/>
      <Operand type="imm32" extended-size="8"/>
      <Encoding>
        <REX mandatory="true" W="1" B="#0" X="#0"/>
        <Opcode byte="81"/>
        <ModRM mode="#0" reg="4" rm="#0"/>
        <Immediate size="4" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="andq">
      <Operand type="m64" input="true" output="true"/>
      <Operand type="r64" input="true" output="false"/>
      <Encoding>
        <REX mandatory="true" W="1" R="#1" B="#0" X="#0"/>
        <Opcode byte="21"/>
        <ModRM mode="#0" reg="#1" rm="#0"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="BSF" summary="Bit Scan Forward">
    <InstructionForm gas-name="bsfw">
      <Operand type="r16" input="true" output="true"/>
      <Operand type="r16" input="true" output="false"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" R="#0" B="#1"/>
        <Opcode byte="0F"/>
        <Opcode byte="BC"/>
        <ModRM mode="11" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="bsfw">
      <Operand type="r16" input="true" output="true"/>
      <Operand type="m16" input="true" output="false"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" R="#0" B="#1" X="#1"/>
        <Opcode byte="0F"/>
        <Opcode byte="BC"/>
        <ModRM mode="#1" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="bsfl">
      <Operand type="r32" input="true" output="true"/>
      <Operand type="r32" input="true" output="false"/>
      <Encoding>
        <REX mandatory="false" W="0" R="#0" B="#1"/>
        <Opcode byte="0F"/>
        <Opcode byte="BC"/>
        <ModRM mode="11" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="bsfl">
      <Operand type="r32" input="true" output="true"/>
      <Operand type="m32" input="true" output="false"/>
      <Encoding>
        <REX mandatory="false" W="0" R="#0" B="#1" X="#1"/>
        <Opcode byte="0F"/>
        <Opcode byte="BC"/>
        <ModRM mode="#1" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="bsfq">
      <Operand type="r64" input="true" output="true"/>
      <Operand type="r64" input="true" output="false"/>
      <Encoding>
        <REX mandatory="true" W="1" R="#0" B="#1"/>
        <Opcode byte="0F"/>
        <Opcode byte="BC"/>
        <ModRM mode="11" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="bsfq">
      <Operand type="r64" input="true" output="true"/>
      <Operand type="m64" input="true" output="false"/>
      <Encoding>
        <REX mandatory="true" W="1" R="#0" B="#1" X="#1"/>
        <Opcode byte="0F"/>
        <Opcode byte="BC"/>
        <ModRM mode="#1" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="BSR" summary="Bit Scan Reverse">
    <InstructionForm gas-name="bsrw">
      <Operand type="r16" input="true" output="true"/>
      <Operand type="r16" input="true" output="false"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" R="#0" B="#1"/>
        <Opcode byte="0F"/>
        <Opcode byte="BD"/>
        <ModRM mode="11" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="bsrw">
      <Operand type="r16" input="true" output="true"/>
      <Operand type="m16" input="true" output="false"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" R="#0" B="#1" X="#1"/>
        <Opcode byte="0F"/>
        <Opcode byte="BD"/>
        <ModRM mode="#1" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="bsrl">
      <Operand type="r32" input="true" output="true"/>
      <Operand type="r32" input="true" output="false"/>
      <Encoding>
        <REX mandatory="false" W="0" R="#0" B="#1"/>
        <Opcode byte="0F"/>
        <Opcode byte="BD"/>
        <ModRM mode="11" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="bsrl">
      <Operand type="r32" input="true" output="true"/>
      <Operand type="m32" input="true" output="false"/>
      <Encoding>
        <REX mandatory="false" W="0" R="#0" B="#1" X="#1"/>
        <Opcode byte="0F"/>
        <Opcode byte="BD"/>
        <ModRM mode="#1" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="bsrq">
      <Operand type="r64" input="true" output="true"/>
      <Operand type="r64" input="true" output="false"/>
      <Encoding>
        <REX mandatory="true" W="1" R="#0" B="#1"/>
        <Opcode byte="0F"/>
        <Opcode byte="BD"/>
        <ModRM mode="11" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="bsrq">
      <Operand type="r64" input="true" output="true"/>
      <Operand type="m64" input="true" output="false"/>
      <Encoding>
        <REX mandatory="true" W="1" R="#0" B="#1" X="#1"/>
        <Opcode byte="0F"/>
        <Opcode byte="BD"/>
        <ModRM mode="#1" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="BSWAP" summary="Byte Swap">
    <InstructionForm gas-name="bswapl">
      <Operand type="r32" input="true" output="true"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="0F"/>
        <Opcode byte="C8" addend="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="bswapq">
      <Operand type="r64" input="true" output="true"/>
      <Encoding>
        <REX mandatory="true" W="1" B="#0"/>
        <Opcode byte="0F"/>
        <Opcode byte="C8" addend="#0"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="BT" summary="Bit Test">
    <InstructionForm gas-name="btw">
      <Operand type="r16" input="true" output="false"/>
      <Operand type="imm8"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="0F"/>
        <Opcode byte="BA"/>
        <ModRM mode="11" reg="4" rm="#0"/>
        <Immediate size="1" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="btw">
      <Operand type="r16" input="true" output="false"/>
      <Operand type="r16" input="true" output="false"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" R="#1" B="#0"/>
        <Opcode byte="0F"/>
        <Opcode byte="A3"/>
        <ModRM mode="11" reg="#1" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="btl">
      <Operand type="r32" input="true" output="false"/>
      <Operand type="imm8"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="0F"/>
        <Opcode byte="BA"/>
        <ModRM mode="11" reg="4" rm="#0"/>
        <Immediate size="1" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="btl">
      <Operand type="r32" input="true" output="false"/>
      <Operand type="r32" input="true" output="false"/>
      <Encoding>
        <REX mandatory="false" W="0" R="#1" B="#0"/>
        <Opcode byte="0F"/>
        <Opcode byte="A3"/>
        <ModRM mode="11" reg="#1" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="btq">
      <Operand type="r64" input="true" output="false"/>
      <Operand type="imm8"/>
      <Encoding>
        <REX mandatory="true" W="1" B="#0"/>
        <Opcode byte="0F"/>
        <Opcode byte="BA"/>
        <ModRM mode="11" reg="4" rm="#0"/>
        <Immediate size="1" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="btq">
      <Operand type="r64" input="true" output="false"/>
      <Operand type="r64" input="true" output="false"/>
      <Encoding>
        <REX mandatory="true" W="1" R="#1" B="#0"/>
        <Opcode byte="0F"/>
        <Opcode byte="A3"/>
        <ModRM mode="11" reg="#1" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="btw">
      <Operand type="m16" input="true" output="false"/>
      <Operand type="imm8"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" B="#0" X="#0"/>
        <Opcode byte="0F"/>
        <Opcode byte="BA"/>
        <ModRM mode="#0" reg="4" rm="#0"/>
        <Immediate size="1" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="btw">
      <Operand type="m16" input="true" output="false"/>
      <Operand type="r16" input="true" output="false"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" R="#1" B="#0" X="#0"/>
        <Opcode byte="0F"/>
        <Opcode byte="A3"/>
        <ModRM mode="#0" reg="#1" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="btl">
      <Operand type="m32" input="true" output="false"/>
      <Operand type="imm8"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0" X="#0"/>
        <Opcode byte="0F"/>
        <Opcode byte="BA"/>
        <ModRM mode="#0" reg="4" rm="#0"/>
        <Immediate size="1" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="btl">
      <Operand type="m32" input="true" output="false"/>
      <Operand type="r32" input="true" output="false"/>
      <Encoding>
        <REX mandatory="false" W="0" R="#1" B="#0" X="#0"/>
        <Opcode byte="0F"/>
        <Opcode byte="A3"/>
        <ModRM mode="#0" reg="#1" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="btq">
      <Operand type="m64" input="true" output="false"/>
      <Operand type="imm8"/>
      <Encoding>
        <REX mandatory="true" W="1" B="#0" X="#0"/>
        <Opcode byte="0F"/>
        <Opcode byte="BA"/>
        <ModRM mode="#0" reg="4" rm="#0"/>
        <Immediate size="1" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="btq">
      <Operand type="m64" input="true" output="false"/>
      <Operand type="r64" input="true" output="false"/>
      <Encoding>
        <REX mandatory="true" W="1" R="#1" B="#0" X="#0"/>
        <Opcode byte="0F"/>
        <Opcode byte="A3"/>
        <ModRM mode="#0" reg="#1" rm="#0"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="BTC" summary="Bit Test and Complement">
    <InstructionForm gas-name="btcw">
      <Operand type="r16" input="true" output="true"/>
      <Operand type="imm8"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="0F"/>
        <Opcode byte="BA"/>
        <ModRM mode="11" reg="7" rm="#0"/>
        <Immediate size="1" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="btcw">
      <Operand type="r16" input="true" output="true"/>
      <Operand type="r16" input="true" output="false"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" R="#1" B="#0"/>
        <Opcode byte="0F"/>
        <Opcode byte="BB"/>
        <ModRM mode="11" reg="#1" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="btcl">
      <Operand type="r32" input="true" output="true"/>
      <Operand type="imm8"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="0F"/>
        <Opcode byte="BA"/>
        <ModRM mode="11" reg="7" rm="#0"/>
        <Immediate size="1" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="btcl">
      <Operand type="r32" input="true" output="true"/>
      <Operand type="r32" input="true" output="false"/>
      <Encoding>
        <REX mandatory="false" W="0" R="#1" B="#0"/>
        <Opcode byte="0F"/>
        <Opcode byte="BB"/>
        <ModRM mode="11" reg="#1" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="btcq">
      <Operand type="r64" input="true" output="true"/>
      <Operand type="imm8"/>
      <Encoding>
        <REX mandatory="true" W="1" B="#0"/>
        <Opcode byte="0F"/>
        <Opcode byte="BA"/>
        <ModRM mode="11" reg="7" rm="#0"/>
        <Immediate size="1" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="btcq">
      <Operand type="r64" input="true" output="true"/>
      <Operand type="r64" input="true" output="false"/>
      <Encoding>
        <REX mandatory="true" W="1" R="#1" B="#0"/>
        <Opcode byte="0F"/>
        <Opcode byte="BB"/>
        <ModRM mode="11" reg="#1" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="btcw">
      <Operand type="m16" input="true" output="true"/>
      <Operand type="imm8"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" B="#0" X="#0"/>
        <Opcode byte="0F"/>
        <Opcode byte="BA"/>
        <ModRM mode="#0" reg="7" rm="#0"/>
        <Immediate size="1" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="btcw">
      <Operand type="m16" input="true" output="true"/>
      <Operand type="r16" input="true" output="false"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" R="#1" B="#0" X="#0"/>
        <Opcode byte="0F"/>
        <Opcode byte="BB"/>
        <ModRM mode="#0" reg="#1" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="btcl">
      <Operand type="m32" input="true" output="true"/>
      <Operand type="imm8"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0" X="#0"/>
        <Opcode byte="0F"/>
        <Opcode byte="BA"/>
        <ModRM mode="#0" reg="7" rm="#0"/>
        <Immediate size="1" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="btcl">
      <Operand type="m32" input="true" output="true"/>
      <Operand type="r32" input="true" output="false"/>
      <Encoding>
        <REX mandatory="false" W="0" R="#1" B="#0" X="#0"/>
        <Opcode byte="0F"/>
        <Opcode byte="BB"/>
        <ModRM mode="#0" reg="#1" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="btcq">
      <Operand type="m64" input="true" output="true"/>
      <Operand type="imm8"/>
      <Encoding>
        <REX mandatory="true" W="1" B="#0" X="#0"/>
        <Opcode byte="0F"/>
        <Opcode byte="BA"/>
        <ModRM mode="#0" reg="7" rm="#0"/>
        <Immediate size="1" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="btcq">
      <Operand type="m64" input="true" output="true"/>
      <Operand type="r64" input="true" output="false"/>
      <Encoding>
        <REX mandatory="true" W="1" R="#1" B="#0" X="#0"/>
        <Opcode byte="0F"/>
        <Opcode byte="BB"/>
        <ModRM mode="#0" reg="#1" rm="#0"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="BTR" summary="Bit Test and Reset">
    <InstructionForm gas-name="btrw">
      <Operand type="r16" input="true" output="true"/>
      <Operand type="imm8"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="0F"/>
        <Opcode byte="BA"/>
        <ModRM mode="11" reg="6" rm="#0"/>
        <Immediate size="1" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="btrw">
      <Operand type="r16" input="true" output="true"/>
      <Operand type="r16" input="true" output="false"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" R="#1" B="#0"/>
        <Opcode byte="0F"/>
        <Opcode byte="B3"/>
        <ModRM mode="11" reg="#1" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="btrl">
      <Operand type="r32" input="true" output="true"/>
      <Operand type="imm8"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="0F"/>
        <Opcode byte="BA"/>
        <ModRM mode="11" reg="6" rm="#0"/>
        <Immediate size="1" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="btrl">
      <Operand type="r32" input="true" output="true"/>
      <Operand type="r32" input="true" output="false"/>
      <Encoding>
        <REX mandatory="false" W="0" R="#1" B="#0"/>
        <Opcode byte="0F"/>
        <Opcode byte="B3"/>
        <ModRM mode="11" reg="#1" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="btrq">
      <Operand type="r64" input="true" output="true"/>
      <Operand type="imm8"/>
      <Encoding>
        <REX mandatory="true" W="1" B="#0"/>
        <Opcode byte="0F"/>
        <Opcode byte="BA"/>
        <ModRM mode="11" reg="6" rm="#0"/>
        <Immediate size="1" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="btrq">
      <Operand type="r64" input="true" output="true"/>
      <Operand type="r64" input="true" output="false"/>
      <Encoding>
        <REX mandatory="true" W="1" R="#1" B="#0"/>
        <Opcode byte="0F"/>
        <Opcode byte="B3"/>
        <ModRM mode="11" reg="#1" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="btrw">
      <Operand type="m16" input="true" output="true"/>
      <Operand type="imm8"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" B="#0" X="#0"/>
        <Opcode byte="0F"/>
        <Opcode byte="BA"/>
        <ModRM mode="#0" reg="6" rm="#0"/>
        <Immediate size="1" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="btrw">
      <Operand type="m16" input="true" output="true"/>
      <Operand type="r16" input="true" output="false"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" R="#1" B="#0" X="#0"/>
        <Opcode byte="0F"/>
        <Opcode byte="B3"/>
        <ModRM mode="#0" reg="#1" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="btrl">
      <Operand type="m32" input="true" output="true"/>
      <Operand type="imm8"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0" X="#0"/>
        <Opcode byte="0F"/>
        <Opcode byte="BA"/>
        <ModRM mode="#0" reg="6" rm="#0"/>
        <Immediate size="1" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="btrl">
      <Operand type="m32" input="true" output="true"/>
      <Operand type="r32" input="true" output="false"/>
      <Encoding>
        <REX mandatory="false" W="0" R="#1" B="#0" X="#0"/>
        <Opcode byte="0F"/>
        <Opcode byte="B3"/>
        <ModRM mode="#0" reg="#1" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="btrq">
      <Operand type="m64" input="true" output="true"/>
      <Operand type="imm8"/>
      <Encoding>
        <REX mandatory="true" W="1" B="#0" X="#0"/>
        <Opcode byte="0F"/>
        <Opcode byte="BA"/>
        <ModRM mode="#0" reg="6" rm="#0"/>
        <Immediate size="1" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="btrq">
      <Operand type="m64" input="true" output="true"/>
      <Operand type="r64" input="true" output="false"/>
      <Encoding>
        <REX mandatory="true" W="1" R="#1" B="#0" X="#0"/>
        <Opcode byte="0F"/>
        <Opcode byte="B3"/>
        <ModRM mode="#0" reg="#1" rm="#0"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="BTS" summary="Bit Test and Set">
    <InstructionForm gas-name="btsw">
      <Operand type="r16" input="true" output="true"/>
      <Operand type="imm8"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="0F"/>
        <Opcode byte="BA"/>
        <ModRM mode="11" reg="5" rm="#0"/>
        <Immediate size="1" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="btsw">
      <Operand type="r16" input="true" output="true"/>
      <Operand type="r16" input="true" output="false"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" R="#1" B="#0"/>
        <Opcode byte="0F"/>
        <Opcode byte="AB"/>
        <ModRM mode="11" reg="#1" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="btsl">
      <Operand type="r32" input="true" output="true"/>
      <Operand type="imm8"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="0F"/>
        <Opcode byte="BA"/>
        <ModRM mode="11" reg="5" rm="#0"/>
        <Immediate size="1" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="btsl">
      <Operand type="r32" input="true" output="true"/>
      <Operand type="r32" input="true" output="false"/>
      <Encoding>
        <REX mandatory="false" W="0" R="#1" B="#0"/>
        <Opcode byte="0F"/>
        <Opcode byte="AB"/>
        <ModRM mode="11" reg="#1" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="btsq">
      <Operand type="r64" input="true" output="true"/>
      <Operand type="imm8"/>
      <Encoding>
        <REX mandatory="true" W="1" B="#0"/>
        <Opcode byte="0F"/>
        <Opcode byte="BA"/>
        <ModRM mode="11" reg="5" rm="#0"/>
        <Immediate size="1" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="btsq">
      <Operand type="r64" input="true" output="true"/>
      <Operand type="r64" input="true" output="false"/>
      <Encoding>
        <REX mandatory="true" W="1" R="#1" B="#0"/>
        <Opcode byte="0F"/>
        <Opcode byte="AB"/>
        <ModRM mode="11" reg="#1" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="btsw">
      <Operand type="m16" input="true" output="true"/>
      <Operand type="imm8"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" B="#0" X="#0"/>
        <Opcode byte="0F"/>
        <Opcode byte="BA"/>
        <ModRM mode="#0" reg="5" rm="#0"/>
        <Immediate size="1" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="btsw">
      <Operand type="m16" input="true" output="true"/>
      <Operand type="r16" input="true" output="false"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" R="#1" B="#0" X="#0"/>
        <Opcode byte="0F"/>
        <Opcode byte="AB"/>
        <ModRM mode="#0" reg="#1" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="btsl">
      <Operand type="m32" input="true" output="true"/>
      <Operand type="imm8"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0" X="#0"/>
        <Opcode byte="0F"/>
        <Opcode byte="BA"/>
        <ModRM mode="#0" reg="5" rm="#0"/>
        <Immediate size="1" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="btsl">
      <Operand type="m32" input="true" output="true"/>
      <Operand type="r32" input="true" output="false"/>
      <Encoding>
        <REX mandatory="false" W="0" R="#1" B="#0" X="#0"/>
        <Opcode byte="0F"/>
        <Opcode byte="AB"/>
        <ModRM mode="#0" reg="#1" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="btsq">
      <Operand type="m64" input="true" output="true"/>
      <Operand type="imm8"/>
      <Encoding>
        <REX mandatory="true" W="1" B="#0" X="#0"/>
        <Opcode byte="0F"/>
        <Opcode byte="BA"/>
        <ModRM mode="#0" reg="5" rm="#0"/>
        <Immediate size="1" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="btsq">
      <Operand type="m64" input="true" output="true"/>
      <Operand type="r64" input="true" output="false"/>
      <Encoding>
        <REX mandatory="true" W="1" R="#1" B="#0" X="#0"/>
        <Opcode byte="0F"/>
        <Opcode byte="AB"/>
        <ModRM mode="#0" reg="#1" rm="#0"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="CALL" summary="Call Procedure">
    <InstructionForm gas-name="call">
      <Operand type="rel32"/>
      <Encoding>
        <Opcode byte="E8"/>
        <CodeOffset size="4" value="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="callq">
      <Operand type="r64" input="true" output="false"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="FF"/>
        <ModRM mode="11" reg="2" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="callq">
      <Operand type="m64" input="true" output="false"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0" X="#0"/>
        <Opcode byte="FF"/>
        <ModRM mode="#0" reg="2" rm="#0"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="CBW" summary="Convert Byte to Word">
    <InstructionForm gas-name="cbtw">
      <ImplicitOperand id="ax" input="false" output="true"/>
      <ImplicitOperand id="al" input="true" output="false"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <Opcode byte="98"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="CDQ" summary="Convert Doubleword to Quadword">
    <InstructionForm gas-name="cltd">
      <ImplicitOperand id="eax" input="true" output="false"/>
      <ImplicitOperand id="edx" input="false" output="true"/>
      <Encoding>
        <Opcode byte="99"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="CDQE" summary="Convert Doubleword to Quadword">
    <InstructionForm gas-name="cltq">
      <ImplicitOperand id="eax" input="true" output="false"/>
      <ImplicitOperand id="rax" input="false" output="true"/>
      <Encoding>
        <REX mandatory="true" W="1"/>
        <Opcode byte="98"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="CLC" summary="Clear Carry Flag">
    <InstructionForm gas-name="clc">
      <Encoding>
        <Opcode byte="F8"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="CLD" summary="Clear Direction Flag">
    <InstructionForm gas-name="cld">
      <Encoding>
        <Opcode byte="FC"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="CLEVICT0" summary="Evict L1 Line">
    <InstructionForm gas-name="clevict0">
      <Operand type="m8" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0001" pp="11" vvvv="0000" V="0" B="#0" X="#0" aaa="000" SSS="000"/>
        <Opcode byte="AE"/>
        <ModRM mode="#0" reg="7" rm="#0"/>
      </Encoding>
      <Encoding>
        <VEX L="0" m-mmmm="00001" pp="11" B="#0" X="#0" vvvv="0000"/>
        <Opcode byte="AE"/>
        <ModRM mode="#0" reg="7" rm="#0"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="CLEVICT1" summary="Evict L2 Line">
    <InstructionForm gas-name="clevict1">
      <Operand type="m8" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0001" pp="10" vvvv="0000" V="0" B="#0" X="#0" aaa="000" SSS="000"/>
        <Opcode byte="AE"/>
        <ModRM mode="#0" reg="7" rm="#0"/>
      </Encoding>
      <Encoding>
        <VEX L="0" m-mmmm="00001" pp="10" B="#0" X="#0" vvvv="0000"/>
        <Opcode byte="AE"/>
        <ModRM mode="#0" reg="7" rm="#0"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="CMC" summary="Complement Carry Flag">
    <InstructionForm gas-name="cmc">
      <Encoding>
        <Opcode byte="F5"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="CMP" summary="Compare Two Operands">
    <InstructionForm gas-name="cmpb">
      <Operand type="al" input="true" output="false"/>
      <Operand type="imm8"/>
      <Encoding>
        <Opcode byte="3C"/>
        <Immediate size="1" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="cmpb">
      <Operand type="r8" input="true" output="false"/>
      <Operand type="imm8"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="80"/>
        <ModRM mode="11" reg="7" rm="#0"/>
        <Immediate size="1" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="cmpb" cancelling-inputs="true">
      <Operand type="r8" input="true" output="false"/>
      <Operand type="r8" input="true" output="false"/>
      <Encoding>
        <REX mandatory="false" W="0" R="#1" B="#0"/>
        <Opcode byte="38"/>
        <ModRM mode="11" reg="#1" rm="#0"/>
      </Encoding>
      <Encoding>
        <REX mandatory="false" W="0" R="#0" B="#1"/>
        <Opcode byte="3A"/>
        <ModRM mode="11" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="cmpb">
      <Operand type="r8" input="true" output="false"/>
      <Operand type="m8" input="true" output="false"/>
      <Encoding>
        <REX mandatory="false" W="0" R="#0" B="#1" X="#1"/>
        <Opcode byte="3A"/>
        <ModRM mode="#1" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="cmpw">
      <Operand type="ax" input="true" output="false"/>
      <Operand type="imm16"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <Opcode byte="3D"/>
        <Immediate size="2" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="cmpw">
      <Operand type="r16" input="true" output="false"/>
      <Operand type="imm8" extended-size="2"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="83"/>
        <ModRM mode="11" reg="7" rm="#0"/>
        <Immediate size="1" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="cmpw">
      <Operand type="r16" input="true" output="false"/>
      <Operand type="imm16"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="81"/>
        <ModRM mode="11" reg="7" rm="#0"/>
        <Immediate size="2" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="cmpw" cancelling-inputs="true">
      <Operand type="r16" input="true" output="false"/>
      <Operand type="r16" input="true" output="false"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" R="#1" B="#0"/>
        <Opcode byte="39"/>
        <ModRM mode="11" reg="#1" rm="#0"/>
      </Encoding>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" R="#0" B="#1"/>
        <Opcode byte="3B"/>
        <ModRM mode="11" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="cmpw">
      <Operand type="r16" input="true" output="false"/>
      <Operand type="m16" input="true" output="false"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" R="#0" B="#1" X="#1"/>
        <Opcode byte="3B"/>
        <ModRM mode="#1" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="cmpl">
      <Operand type="eax" input="true" output="false"/>
      <Operand type="imm32"/>
      <Encoding>
        <Opcode byte="3D"/>
        <Immediate size="4" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="cmpl">
      <Operand type="r32" input="true" output="false"/>
      <Operand type="imm8" extended-size="4"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="83"/>
        <ModRM mode="11" reg="7" rm="#0"/>
        <Immediate size="1" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="cmpl">
      <Operand type="r32" input="true" output="false"/>
      <Operand type="imm32"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="81"/>
        <ModRM mode="11" reg="7" rm="#0"/>
        <Immediate size="4" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="cmpl" cancelling-inputs="true">
      <Operand type="r32" input="true" output="false"/>
      <Operand type="r32" input="true" output="false"/>
      <Encoding>
        <REX mandatory="false" W="0" R="#1" B="#0"/>
        <Opcode byte="39"/>
        <ModRM mode="11" reg="#1" rm="#0"/>
      </Encoding>
      <Encoding>
        <REX mandatory="false" W="0" R="#0" B="#1"/>
        <Opcode byte="3B"/>
        <ModRM mode="11" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="cmpl">
      <Operand type="r32" input="true" output="false"/>
      <Operand type="m32" input="true" output="false"/>
      <Encoding>
        <REX mandatory="false" W="0" R="#0" B="#1" X="#1"/>
        <Opcode byte="3B"/>
        <ModRM mode="#1" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="cmpq">
      <Operand type="rax" input="true" output="false"/>
      <Operand type="imm32"/>
      <Encoding>
        <REX mandatory="true" W="1"/>
        <Opcode byte="3D"/>
        <Immediate size="4" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="cmpq">
      <Operand type="r64" input="true" output="false"/>
      <Operand type="imm8" extended-size="8"/>
      <Encoding>
        <REX mandatory="true" W="1" B="#0"/>
        <Opcode byte="83"/>
        <ModRM mode="11" reg="7" rm="#0"/>
        <Immediate size="1" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="cmpq">
      <Operand type="r64" input="true" output="false"/>
      <Operand type="imm32" extended-size="8"/>
      <Encoding>
        <REX mandatory="true" W="1" B="#0"/>
        <Opcode byte="81"/>
        <ModRM mode="11" reg="7" rm="#0"/>
        <Immediate size="4" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="cmpq" cancelling-inputs="true">
      <Operand type="r64" input="true" output="false"/>
      <Operand type="r64" input="true" output="false"/>
      <Encoding>
        <REX mandatory="true" W="1" R="#1" B="#0"/>
        <Opcode byte="39"/>
        <ModRM mode="11" reg="#1" rm="#0"/>
      </Encoding>
      <Encoding>
        <REX mandatory="true" W="1" R="#0" B="#1"/>
        <Opcode byte="3B"/>
        <ModRM mode="11" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="cmpq">
      <Operand type="r64" input="true" output="false"/>
      <Operand type="m64" input="true" output="false"/>
      <Encoding>
        <REX mandatory="true" W="1" R="#0" B="#1" X="#1"/>
        <Opcode byte="3B"/>
        <ModRM mode="#1" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="cmpb">
      <Operand type="m8" input="true" output="false"/>
      <Operand type="imm8"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0" X="#0"/>
        <Opcode byte="80"/>
        <ModRM mode="#0" reg="7" rm="#0"/>
        <Immediate size="1" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="cmpb">
      <Operand type="m8" input="true" output="false"/>
      <Operand type="r8" input="true" output="false"/>
      <Encoding>
        <REX mandatory="false" W="0" R="#1" B="#0" X="#0"/>
        <Opcode byte="38"/>
        <ModRM mode="#0" reg="#1" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="cmpw">
      <Operand type="m16" input="true" output="false"/>
      <Operand type="imm8" extended-size="2"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" B="#0" X="#0"/>
        <Opcode byte="83"/>
        <ModRM mode="#0" reg="7" rm="#0"/>
        <Immediate size="1" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="cmpw">
      <Operand type="m16" input="true" output="false"/>
      <Operand type="imm16"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" B="#0" X="#0"/>
        <Opcode byte="81"/>
        <ModRM mode="#0" reg="7" rm="#0"/>
        <Immediate size="2" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="cmpw">
      <Operand type="m16" input="true" output="false"/>
      <Operand type="r16" input="true" output="false"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" R="#1" B="#0" X="#0"/>
        <Opcode byte="39"/>
        <ModRM mode="#0" reg="#1" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="cmpl">
      <Operand type="m32" input="true" output="false"/>
      <Operand type="imm8" extended-size="4"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0" X="#0"/>
        <Opcode byte="83"/>
        <ModRM mode="#0" reg="7" rm="#0"/>
        <Immediate size="1" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="cmpl">
      <Operand type="m32" input="true" output="false"/>
      <Operand type="imm32"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0" X="#0"/>
        <Opcode byte="81"/>
        <ModRM mode="#0" reg="7" rm="#0"/>
        <Immediate size="4" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="cmpl">
      <Operand type="m32" input="true" output="false"/>
      <Operand type="r32" input="true" output="false"/>
      <Encoding>
        <REX mandatory="false" W="0" R="#1" B="#0" X="#0"/>
        <Opcode byte="39"/>
        <ModRM mode="#0" reg="#1" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="cmpq">
      <Operand type="m64" input="true" output="false"/>
      <Operand type="imm8" extended-size="8"/>
      <Encoding>
        <REX mandatory="true" W="1" B="#0" X="#0"/>
        <Opcode byte="83"/>
        <ModRM mode="#0" reg="7" rm="#0"/>
        <Immediate size="1" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="cmpq">
      <Operand type="m64" input="true" output="false"/>
      <Operand type="imm32" extended-size="8"/>
      <Encoding>
        <REX mandatory="true" W="1" B="#0" X="#0"/>
        <Opcode byte="81"/>
        <ModRM mode="#0" reg="7" rm="#0"/>
        <Immediate size="4" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="cmpq">
      <Operand type="m64" input="true" output="false"/>
      <Operand type="r64" input="true" output="false"/>
      <Encoding>
        <REX mandatory="true" W="1" R="#1" B="#0" X="#0"/>
        <Opcode byte="39"/>
        <ModRM mode="#0" reg="#1" rm="#0"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="CMPXCHG" summary="Compare and Exchange">
    <InstructionForm gas-name="cmpxchgb">
      <Operand type="r8" input="true" output="true"/>
      <Operand type="r8" input="true" output="false"/>
      <Encoding>
        <REX mandatory="false" W="0" R="#1" B="#0"/>
        <Opcode byte="0F"/>
        <Opcode byte="B0"/>
        <ModRM mode="11" reg="#1" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="cmpxchgw">
      <Operand type="r16" input="true" output="true"/>
      <Operand type="r16" input="true" output="false"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" R="#1" B="#0"/>
        <Opcode byte="0F"/>
        <Opcode byte="B1"/>
        <ModRM mode="11" reg="#1" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="cmpxchgl">
      <Operand type="r32" input="true" output="true"/>
      <Operand type="r32" input="true" output="false"/>
      <Encoding>
        <REX mandatory="false" W="0" R="#1" B="#0"/>
        <Opcode byte="0F"/>
        <Opcode byte="B1"/>
        <ModRM mode="11" reg="#1" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="cmpxchgq">
      <Operand type="r64" input="true" output="true"/>
      <Operand type="r64" input="true" output="false"/>
      <Encoding>
        <REX mandatory="true" W="1" R="#1" B="#0"/>
        <Opcode byte="0F"/>
        <Opcode byte="B1"/>
        <ModRM mode="11" reg="#1" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="cmpxchgb">
      <Operand type="m8" input="true" output="true"/>
      <Operand type="r8" input="true" output="false"/>
      <Encoding>
        <REX mandatory="false" W="0" R="#1" B="#0" X="#0"/>
        <Opcode byte="0F"/>
        <Opcode byte="B0"/>
        <ModRM mode="#0" reg="#1" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="cmpxchgw">
      <Operand type="m16" input="true" output="true"/>
      <Operand type="r16" input="true" output="false"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" R="#1" B="#0" X="#0"/>
        <Opcode byte="0F"/>
        <Opcode byte="B1"/>
        <ModRM mode="#0" reg="#1" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="cmpxchgl">
      <Operand type="m32" input="true" output="true"/>
      <Operand type="r32" input="true" output="false"/>
      <Encoding>
        <REX mandatory="false" W="0" R="#1" B="#0" X="#0"/>
        <Opcode byte="0F"/>
        <Opcode byte="B1"/>
        <ModRM mode="#0" reg="#1" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="cmpxchgq">
      <Operand type="m64" input="true" output="true"/>
      <Operand type="r64" input="true" output="false"/>
      <Encoding>
        <REX mandatory="true" W="1" R="#1" B="#0" X="#0"/>
        <Opcode byte="0F"/>
        <Opcode byte="B1"/>
        <ModRM mode="#0" reg="#1" rm="#0"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="CMPXCHG16B" summary="Compare and Exchange 16 Bytes">
    <InstructionForm gas-name="cmpxchg16b">
      <Operand type="m128" input="true" output="false"/>
      <ImplicitOperand id="rax" input="true" output="true"/>
      <ImplicitOperand id="rbx" input="true" output="false"/>
      <ImplicitOperand id="rcx" input="true" output="false"/>
      <ImplicitOperand id="rdx" input="true" output="true"/>
      <Encoding>
        <REX mandatory="true" W="1" B="#0" X="#0"/>
        <Opcode byte="0F"/>
        <Opcode byte="C7"/>
        <ModRM mode="#0" reg="1" rm="#0"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="CMPXCHG8B" summary="Compare and Exchange 8 Bytes">
    <InstructionForm gas-name="cmpxchg8b">
      <Operand type="m64" input="true" output="false"/>
      <ImplicitOperand id="eax" input="true" output="true"/>
      <ImplicitOperand id="ebx" input="true" output="false"/>
      <ImplicitOperand id="ecx" input="true" output="false"/>
      <ImplicitOperand id="edx" input="true" output="true"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0" X="#0"/>
        <Opcode byte="0F"/>
        <Opcode byte="C7"/>
        <ModRM mode="#0" reg="1" rm="#0"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="CPUID" summary="CPU Identification">
    <InstructionForm gas-name="cpuid">
      <ImplicitOperand id="eax" input="true" output="true"/>
      <ImplicitOperand id="ebx" input="false" output="true"/>
      <ImplicitOperand id="ecx" input="true" output="true"/>
      <ImplicitOperand id="edx" input="false" output="true"/>
      <Encoding>
        <Opcode byte="0F"/>
        <Opcode byte="A2"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="CQO" summary="Convert Quadword to Octaword">
    <InstructionForm gas-name="cqto">
      <ImplicitOperand id="rax" input="true" output="false"/>
      <ImplicitOperand id="rdx" input="false" output="true"/>
      <Encoding>
        <REX mandatory="true" W="1"/>
        <Opcode byte="99"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="CWD" summary="Convert Word to Doubleword">
    <InstructionForm gas-name="cwtd">
      <ImplicitOperand id="ax" input="true" output="false"/>
      <ImplicitOperand id="dx" input="false" output="true"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <Opcode byte="99"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="CWDE" summary="Convert Word to Doubleword">
    <InstructionForm gas-name="cwtl">
      <ImplicitOperand id="ax" input="true" output="false"/>
      <ImplicitOperand id="eax" input="false" output="true"/>
      <Encoding>
        <Opcode byte="98"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="DEC" summary="Decrement by 1">
    <InstructionForm gas-name="decb">
      <Operand type="r8" input="true" output="true"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="FE"/>
        <ModRM mode="11" reg="1" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="decw">
      <Operand type="r16" input="true" output="true"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="FF"/>
        <ModRM mode="11" reg="1" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="decl">
      <Operand type="r32" input="true" output="true"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="FF"/>
        <ModRM mode="11" reg="1" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="decq">
      <Operand type="r64" input="true" output="true"/>
      <Encoding>
        <REX mandatory="true" W="1" B="#0"/>
        <Opcode byte="FF"/>
        <ModRM mode="11" reg="1" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="decb">
      <Operand type="m8" input="true" output="true"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0" X="#0"/>
        <Opcode byte="FE"/>
        <ModRM mode="#0" reg="1" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="decw">
      <Operand type="m16" input="true" output="true"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" B="#0" X="#0"/>
        <Opcode byte="FF"/>
        <ModRM mode="#0" reg="1" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="decl">
      <Operand type="m32" input="true" output="true"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0" X="#0"/>
        <Opcode byte="FF"/>
        <ModRM mode="#0" reg="1" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="decq">
      <Operand type="m64" input="true" output="true"/>
      <Encoding>
        <REX mandatory="true" W="1" B="#0" X="#0"/>
        <Opcode byte="FF"/>
        <ModRM mode="#0" reg="1" rm="#0"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="DELAY" summary="Stall Thread">
    <InstructionForm gas-name="delay">
      <Operand type="r32" input="true" output="false"/>
      <Encoding>
        <VEX W="0" L="0" m-mmmm="00001" pp="10" B="#0" vvvv="0000"/>
        <Opcode byte="AE"/>
        <ModRM mode="11" reg="6" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="delay">
      <Operand type="r64" input="true" output="false"/>
      <Encoding>
        <VEX W="1" L="0" m-mmmm="00001" pp="10" B="#0" vvvv="0000"/>
        <Opcode byte="AE"/>
        <ModRM mode="11" reg="6" rm="#0"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="DIV" summary="Unsigned Divide">
    <InstructionForm gas-name="divb">
      <Operand type="r8" input="true" output="false"/>
      <ImplicitOperand id="ax" input="true" output="true"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="F6"/>
        <ModRM mode="11" reg="6" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="divw">
      <Operand type="r16" input="true" output="false"/>
      <ImplicitOperand id="ax" input="true" output="true"/>
      <ImplicitOperand id="dx" input="true" output="true"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="F7"/>
        <ModRM mode="11" reg="6" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="divl">
      <Operand type="r32" input="true" output="false"/>
      <ImplicitOperand id="eax" input="true" output="true"/>
      <ImplicitOperand id="edx" input="true" output="true"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="F7"/>
        <ModRM mode="11" reg="6" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="divq">
      <Operand type="r64" input="true" output="false"/>
      <ImplicitOperand id="rax" input="true" output="true"/>
      <ImplicitOperand id="rdx" input="true" output="true"/>
      <Encoding>
        <REX mandatory="true" W="1" B="#0"/>
        <Opcode byte="F7"/>
        <ModRM mode="11" reg="6" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="divb">
      <Operand type="m8" input="true" output="false"/>
      <ImplicitOperand id="ax" input="true" output="true"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0" X="#0"/>
        <Opcode byte="F6"/>
        <ModRM mode="#0" reg="6" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="divw">
      <Operand type="m16" input="true" output="false"/>
      <ImplicitOperand id="ax" input="true" output="true"/>
      <ImplicitOperand id="dx" input="true" output="true"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" B="#0" X="#0"/>
        <Opcode byte="F7"/>
        <ModRM mode="#0" reg="6" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="divl">
      <Operand type="m32" input="true" output="false"/>
      <ImplicitOperand id="eax" input="true" output="true"/>
      <ImplicitOperand id="edx" input="true" output="true"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0" X="#0"/>
        <Opcode byte="F7"/>
        <ModRM mode="#0" reg="6" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="divq">
      <Operand type="m64" input="true" output="false"/>
      <ImplicitOperand id="rax" input="true" output="true"/>
      <ImplicitOperand id="rdx" input="true" output="true"/>
      <Encoding>
        <REX mandatory="true" W="1" B="#0" X="#0"/>
        <Opcode byte="F7"/>
        <ModRM mode="#0" reg="6" rm="#0"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="IDIV" summary="Signed Divide">
    <InstructionForm gas-name="idivb">
      <Operand type="r8" input="true" output="false"/>
      <ImplicitOperand id="ax" input="true" output="true"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="F6"/>
        <ModRM mode="11" reg="7" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="idivw">
      <Operand type="r16" input="true" output="false"/>
      <ImplicitOperand id="ax" input="true" output="true"/>
      <ImplicitOperand id="dx" input="true" output="true"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="F7"/>
        <ModRM mode="11" reg="7" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="idivl">
      <Operand type="r32" input="true" output="false"/>
      <ImplicitOperand id="eax" input="true" output="true"/>
      <ImplicitOperand id="edx" input="true" output="true"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="F7"/>
        <ModRM mode="11" reg="7" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="idivq">
      <Operand type="r64" input="true" output="false"/>
      <ImplicitOperand id="rax" input="true" output="true"/>
      <ImplicitOperand id="rdx" input="true" output="true"/>
      <Encoding>
        <REX mandatory="true" W="1" B="#0"/>
        <Opcode byte="F7"/>
        <ModRM mode="11" reg="7" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="idivb">
      <Operand type="m8" input="true" output="false"/>
      <ImplicitOperand id="ax" input="true" output="true"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0" X="#0"/>
        <Opcode byte="F6"/>
        <ModRM mode="#0" reg="7" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="idivw">
      <Operand type="m16" input="true" output="false"/>
      <ImplicitOperand id="ax" input="true" output="true"/>
      <ImplicitOperand id="dx" input="true" output="true"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" B="#0" X="#0"/>
        <Opcode byte="F7"/>
        <ModRM mode="#0" reg="7" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="idivl">
      <Operand type="m32" input="true" output="false"/>
      <ImplicitOperand id="eax" input="true" output="true"/>
      <ImplicitOperand id="edx" input="true" output="true"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0" X="#0"/>
        <Opcode byte="F7"/>
        <ModRM mode="#0" reg="7" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="idivq">
      <Operand type="m64" input="true" output="false"/>
      <ImplicitOperand id="rax" input="true" output="true"/>
      <ImplicitOperand id="rdx" input="true" output="true"/>
      <Encoding>
        <REX mandatory="true" W="1" B="#0" X="#0"/>
        <Opcode byte="F7"/>
        <ModRM mode="#0" reg="7" rm="#0"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="IMUL" summary="Signed Multiply">
    <InstructionForm gas-name="imulb">
      <Operand type="r8" input="true" output="false"/>
      <ImplicitOperand id="ax" input="false" output="true"/>
      <ImplicitOperand id="al" input="true" output="false"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="F6"/>
        <ModRM mode="11" reg="5" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="imulw">
      <Operand type="r16" input="true" output="false"/>
      <ImplicitOperand id="ax" input="true" output="true"/>
      <ImplicitOperand id="dx" input="false" output="true"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="F7"/>
        <ModRM mode="11" reg="5" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="imull">
      <Operand type="r32" input="true" output="false"/>
      <ImplicitOperand id="eax" input="true" output="true"/>
      <ImplicitOperand id="edx" input="false" output="true"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="F7"/>
        <ModRM mode="11" reg="5" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="imulq">
      <Operand type="r64" input="true" output="false"/>
      <ImplicitOperand id="rax" input="true" output="true"/>
      <ImplicitOperand id="rdx" input="false" output="true"/>
      <Encoding>
        <REX mandatory="true" W="1" B="#0"/>
        <Opcode byte="F7"/>
        <ModRM mode="11" reg="5" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="imulb">
      <Operand type="m8" input="true" output="false"/>
      <ImplicitOperand id="ax" input="false" output="true"/>
      <ImplicitOperand id="al" input="true" output="false"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0" X="#0"/>
        <Opcode byte="F6"/>
        <ModRM mode="#0" reg="5" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="imulw">
      <Operand type="m16" input="true" output="false"/>
      <ImplicitOperand id="ax" input="true" output="true"/>
      <ImplicitOperand id="dx" input="false" output="true"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" B="#0" X="#0"/>
        <Opcode byte="F7"/>
        <ModRM mode="#0" reg="5" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="imull">
      <Operand type="m32" input="true" output="false"/>
      <ImplicitOperand id="eax" input="true" output="true"/>
      <ImplicitOperand id="edx" input="false" output="true"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0" X="#0"/>
        <Opcode byte="F7"/>
        <ModRM mode="#0" reg="5" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="imulq">
      <Operand type="m64" input="true" output="false"/>
      <ImplicitOperand id="rax" input="true" output="true"/>
      <ImplicitOperand id="rdx" input="false" output="true"/>
      <Encoding>
        <REX mandatory="true" W="1" B="#0" X="#0"/>
        <Opcode byte="F7"/>
        <ModRM mode="#0" reg="5" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="imulw">
      <Operand type="r16" input="true" output="true"/>
      <Operand type="r16" input="true" output="false"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" R="#0" B="#1"/>
        <Opcode byte="0F"/>
        <Opcode byte="AF"/>
        <ModRM mode="11" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="imulw">
      <Operand type="r16" input="true" output="true"/>
      <Operand type="m16" input="true" output="false"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" R="#0" B="#1" X="#1"/>
        <Opcode byte="0F"/>
        <Opcode byte="AF"/>
        <ModRM mode="#1" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="imull">
      <Operand type="r32" input="true" output="true"/>
      <Operand type="r32" input="true" output="false"/>
      <Encoding>
        <REX mandatory="false" W="0" R="#0" B="#1"/>
        <Opcode byte="0F"/>
        <Opcode byte="AF"/>
        <ModRM mode="11" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="imull">
      <Operand type="r32" input="true" output="true"/>
      <Operand type="m32" input="true" output="false"/>
      <Encoding>
        <REX mandatory="false" W="0" R="#0" B="#1" X="#1"/>
        <Opcode byte="0F"/>
        <Opcode byte="AF"/>
        <ModRM mode="#1" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="imulq">
      <Operand type="r64" input="true" output="true"/>
      <Operand type="r64" input="true" output="false"/>
      <Encoding>
        <REX mandatory="true" W="1" R="#0" B="#1"/>
        <Opcode byte="0F"/>
        <Opcode byte="AF"/>
        <ModRM mode="11" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="imulq">
      <Operand type="r64" input="true" output="true"/>
      <Operand type="m64" input="true" output="false"/>
      <Encoding>
        <REX mandatory="true" W="1" R="#0" B="#1" X="#1"/>
        <Opcode byte="0F"/>
        <Opcode byte="AF"/>
        <ModRM mode="#1" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="imulw">
      <Operand type="r16" input="false" output="true"/>
      <Operand type="r16" input="true" output="false" extended-size="2"/>
      <Operand type="imm8"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" R="#0" B="#1"/>
        <Opcode byte="6B"/>
        <ModRM mode="11" reg="#0" rm="#1"/>
        <Immediate size="1" value="#2"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="imulw">
      <Operand type="r16" input="false" output="true"/>
      <Operand type="r16" input="true" output="false"/>
      <Operand type="imm16"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" R="#0" B="#1"/>
        <Opcode byte="69"/>
        <ModRM mode="11" reg="#0" rm="#1"/>
        <Immediate size="2" value="#2"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="imulw">
      <Operand type="r16" input="false" output="true"/>
      <Operand type="m16" input="true" output="false" extended-size="2"/>
      <Operand type="imm8"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" R="#0" B="#1" X="#1"/>
        <Opcode byte="6B"/>
        <ModRM mode="#1" reg="#0" rm="#1"/>
        <Immediate size="1" value="#2"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="imulw">
      <Operand type="r16" input="false" output="true"/>
      <Operand type="m16" input="true" output="false"/>
      <Operand type="imm16"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" R="#0" B="#1" X="#1"/>
        <Opcode byte="69"/>
        <ModRM mode="#1" reg="#0" rm="#1"/>
        <Immediate size="2" value="#2"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="imull">
      <Operand type="r32" input="false" output="true"/>
      <Operand type="r32" input="true" output="false" extended-size="4"/>
      <Operand type="imm8"/>
      <Encoding>
        <REX mandatory="false" W="0" R="#0" B="#1"/>
        <Opcode byte="6B"/>
        <ModRM mode="11" reg="#0" rm="#1"/>
        <Immediate size="1" value="#2"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="imull">
      <Operand type="r32" input="false" output="true"/>
      <Operand type="r32" input="true" output="false"/>
      <Operand type="imm32"/>
      <Encoding>
        <REX mandatory="false" W="0" R="#0" B="#1"/>
        <Opcode byte="69"/>
        <ModRM mode="11" reg="#0" rm="#1"/>
        <Immediate size="4" value="#2"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="imull">
      <Operand type="r32" input="false" output="true"/>
      <Operand type="m32" input="true" output="false" extended-size="4"/>
      <Operand type="imm8"/>
      <Encoding>
        <REX mandatory="false" W="0" R="#0" B="#1" X="#1"/>
        <Opcode byte="6B"/>
        <ModRM mode="#1" reg="#0" rm="#1"/>
        <Immediate size="1" value="#2"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="imull">
      <Operand type="r32" input="false" output="true"/>
      <Operand type="m32" input="true" output="false"/>
      <Operand type="imm32"/>
      <Encoding>
        <REX mandatory="false" W="0" R="#0" B="#1" X="#1"/>
        <Opcode byte="69"/>
        <ModRM mode="#1" reg="#0" rm="#1"/>
        <Immediate size="4" value="#2"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="imulq">
      <Operand type="r64" input="false" output="true"/>
      <Operand type="r64" input="true" output="false" extended-size="8"/>
      <Operand type="imm8"/>
      <Encoding>
        <REX mandatory="true" W="1" R="#0" B="#1"/>
        <Opcode byte="6B"/>
        <ModRM mode="11" reg="#0" rm="#1"/>
        <Immediate size="1" value="#2"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="imulq">
      <Operand type="r64" input="false" output="true"/>
      <Operand type="r64" input="true" output="false" extended-size="8"/>
      <Operand type="imm32"/>
      <Encoding>
        <REX mandatory="true" W="1" R="#0" B="#1"/>
        <Opcode byte="69"/>
        <ModRM mode="11" reg="#0" rm="#1"/>
        <Immediate size="4" value="#2"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="imulq">
      <Operand type="r64" input="false" output="true"/>
      <Operand type="m64" input="true" output="false" extended-size="8"/>
      <Operand type="imm8"/>
      <Encoding>
        <REX mandatory="true" W="1" R="#0" B="#1" X="#1"/>
        <Opcode byte="6B"/>
        <ModRM mode="#1" reg="#0" rm="#1"/>
        <Immediate size="1" value="#2"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="imulq">
      <Operand type="r64" input="false" output="true"/>
      <Operand type="m64" input="true" output="false" extended-size="8"/>
      <Operand type="imm32"/>
      <Encoding>
        <REX mandatory="true" W="1" R="#0" B="#1" X="#1"/>
        <Opcode byte="69"/>
        <ModRM mode="#1" reg="#0" rm="#1"/>
        <Immediate size="4" value="#2"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="INC" summary="Increment by 1">
    <InstructionForm gas-name="incb">
      <Operand type="r8" input="true" output="true"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="FE"/>
        <ModRM mode="11" reg="0" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="incw">
      <Operand type="r16" input="true" output="true"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="FF"/>
        <ModRM mode="11" reg="0" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="incl">
      <Operand type="r32" input="true" output="true"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="FF"/>
        <ModRM mode="11" reg="0" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="incq">
      <Operand type="r64" input="true" output="true"/>
      <Encoding>
        <REX mandatory="true" W="1" B="#0"/>
        <Opcode byte="FF"/>
        <ModRM mode="11" reg="0" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="incb">
      <Operand type="m8" input="true" output="true"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0" X="#0"/>
        <Opcode byte="FE"/>
        <ModRM mode="#0" reg="0" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="incw">
      <Operand type="m16" input="true" output="true"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" B="#0" X="#0"/>
        <Opcode byte="FF"/>
        <ModRM mode="#0" reg="0" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="incl">
      <Operand type="m32" input="true" output="true"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0" X="#0"/>
        <Opcode byte="FF"/>
        <ModRM mode="#0" reg="0" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="incq">
      <Operand type="m64" input="true" output="true"/>
      <Encoding>
        <REX mandatory="true" W="1" B="#0" X="#0"/>
        <Opcode byte="FF"/>
        <ModRM mode="#0" reg="0" rm="#0"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="INT" summary="Call to Interrupt Procedure">
    <InstructionForm gas-name="int">
      <Operand type="3"/>
      <Encoding>
        <Opcode byte="CC"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="int">
      <Operand type="imm8"/>
      <Encoding>
        <Opcode byte="CD"/>
        <Immediate size="1" value="#0"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="JA" summary="Jump if above (CF == 0 and ZF == 0)">
    <InstructionForm gas-name="ja">
      <Operand type="rel8"/>
      <Encoding>
        <Opcode byte="77"/>
        <CodeOffset size="1" value="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="ja">
      <Operand type="rel32"/>
      <Encoding>
        <Opcode byte="0F"/>
        <Opcode byte="87"/>
        <CodeOffset size="4" value="#0"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="JAE" summary="Jump if above or equal (CF == 0)">
    <InstructionForm gas-name="jae">
      <Operand type="rel8"/>
      <Encoding>
        <Opcode byte="73"/>
        <CodeOffset size="1" value="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="jae">
      <Operand type="rel32"/>
      <Encoding>
        <Opcode byte="0F"/>
        <Opcode byte="83"/>
        <CodeOffset size="4" value="#0"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="JB" summary="Jump if below (CF == 1)">
    <InstructionForm gas-name="jb">
      <Operand type="rel8"/>
      <Encoding>
        <Opcode byte="72"/>
        <CodeOffset size="1" value="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="jb">
      <Operand type="rel32"/>
      <Encoding>
        <Opcode byte="0F"/>
        <Opcode byte="82"/>
        <CodeOffset size="4" value="#0"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="JBE" summary="Jump if below or equal (CF == 1 or ZF == 1)">
    <InstructionForm gas-name="jbe">
      <Operand type="rel8"/>
      <Encoding>
        <Opcode byte="76"/>
        <CodeOffset size="1" value="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="jbe">
      <Operand type="rel32"/>
      <Encoding>
        <Opcode byte="0F"/>
        <Opcode byte="86"/>
        <CodeOffset size="4" value="#0"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="JC" summary="Jump if carry (CF == 1)">
    <InstructionForm gas-name="jc">
      <Operand type="rel8"/>
      <Encoding>
        <Opcode byte="72"/>
        <CodeOffset size="1" value="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="jc">
      <Operand type="rel32"/>
      <Encoding>
        <Opcode byte="0F"/>
        <Opcode byte="82"/>
        <CodeOffset size="4" value="#0"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="JE" summary="Jump if equal (ZF == 1)">
    <InstructionForm gas-name="je">
      <Operand type="rel8"/>
      <Encoding>
        <Opcode byte="74"/>
        <CodeOffset size="1" value="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="je">
      <Operand type="rel32"/>
      <Encoding>
        <Opcode byte="0F"/>
        <Opcode byte="84"/>
        <CodeOffset size="4" value="#0"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="JECXZ" summary="Jump if ECX register is 0">
    <InstructionForm gas-name="jecxz">
      <Operand type="rel8"/>
      <ImplicitOperand id="ecx" input="true" output="false"/>
      <Encoding>
        <Opcode byte="E3"/>
        <CodeOffset size="1" value="#0"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="JG" summary="Jump if greater (ZF == 0 and SF == OF)">
    <InstructionForm gas-name="jg">
      <Operand type="rel8"/>
      <Encoding>
        <Opcode byte="7F"/>
        <CodeOffset size="1" value="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="jg">
      <Operand type="rel32"/>
      <Encoding>
        <Opcode byte="0F"/>
        <Opcode byte="8F"/>
        <CodeOffset size="4" value="#0"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="JGE" summary="Jump if greater or equal (SF == OF)">
    <InstructionForm gas-name="jge">
      <Operand type="rel8"/>
      <Encoding>
        <Opcode byte="7D"/>
        <CodeOffset size="1" value="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="jge">
      <Operand type="rel32"/>
      <Encoding>
        <Opcode byte="0F"/>
        <Opcode byte="8D"/>
        <CodeOffset size="4" value="#0"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="JKNZD" summary="Jump if Mask is Not Zero">
    <InstructionForm gas-name="jknzd">
      <Operand type="k" input="true" output="false"/>
      <Operand type="rel8"/>
      <Encoding>
        <VEX W="0" L="0" m-mmmm="00001" pp="00" vvvv="#0"/>
        <Opcode byte="75"/>
        <CodeOffset size="1" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="jknzd">
      <Operand type="k" input="true" output="false"/>
      <Operand type="rel32"/>
      <Encoding>
        <VEX W="0" L="0" m-mmmm="00001" pp="00" vvvv="#0"/>
        <Opcode byte="85"/>
        <CodeOffset size="4" value="#1"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="JKZD" summary="Jump if Mask is Zero">
    <InstructionForm gas-name="jkzd">
      <Operand type="k" input="true" output="false"/>
      <Operand type="rel8"/>
      <Encoding>
        <VEX W="0" L="0" m-mmmm="00001" pp="00" vvvv="#0"/>
        <Opcode byte="74"/>
        <CodeOffset size="1" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="jkzd">
      <Operand type="k" input="true" output="false"/>
      <Operand type="rel32"/>
      <Encoding>
        <VEX W="0" L="0" m-mmmm="00001" pp="00" vvvv="#0"/>
        <Opcode byte="84"/>
        <CodeOffset size="4" value="#1"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="JL" summary="Jump if less (SF != OF)">
    <InstructionForm gas-name="jl">
      <Operand type="rel8"/>
      <Encoding>
        <Opcode byte="7C"/>
        <CodeOffset size="1" value="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="jl">
      <Operand type="rel32"/>
      <Encoding>
        <Opcode byte="0F"/>
        <Opcode byte="8C"/>
        <CodeOffset size="4" value="#0"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="JLE" summary="Jump if less or equal (ZF == 1 or SF != OF)">
    <InstructionForm gas-name="jle">
      <Operand type="rel8"/>
      <Encoding>
        <Opcode byte="7E"/>
        <CodeOffset size="1" value="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="jle">
      <Operand type="rel32"/>
      <Encoding>
        <Opcode byte="0F"/>
        <Opcode byte="8E"/>
        <CodeOffset size="4" value="#0"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="JMP" summary="Jump Unconditionally">
    <InstructionForm gas-name="jmp">
      <Operand type="rel8"/>
      <Encoding>
        <Opcode byte="EB"/>
        <CodeOffset size="1" value="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="jmp">
      <Operand type="rel32"/>
      <Encoding>
        <Opcode byte="E9"/>
        <CodeOffset size="4" value="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="jmpq">
      <Operand type="r64" input="true" output="false"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="FF"/>
        <ModRM mode="11" reg="4" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="jmpq">
      <Operand type="m64" input="true" output="false"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0" X="#0"/>
        <Opcode byte="FF"/>
        <ModRM mode="#0" reg="4" rm="#0"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="JNA" summary="Jump if not above (CF == 1 or ZF == 1)">
    <InstructionForm gas-name="jna">
      <Operand type="rel8"/>
      <Encoding>
        <Opcode byte="76"/>
        <CodeOffset size="1" value="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="jna">
      <Operand type="rel32"/>
      <Encoding>
        <Opcode byte="0F"/>
        <Opcode byte="86"/>
        <CodeOffset size="4" value="#0"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="JNAE" summary="Jump if not above or equal (CF == 1)">
    <InstructionForm gas-name="jnae">
      <Operand type="rel8"/>
      <Encoding>
        <Opcode byte="72"/>
        <CodeOffset size="1" value="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="jnae">
      <Operand type="rel32"/>
      <Encoding>
        <Opcode byte="0F"/>
        <Opcode byte="82"/>
        <CodeOffset size="4" value="#0"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="JNB" summary="Jump if not below (CF == 0)">
    <InstructionForm gas-name="jnb">
      <Operand type="rel8"/>
      <Encoding>
        <Opcode byte="73"/>
        <CodeOffset size="1" value="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="jnb">
      <Operand type="rel32"/>
      <Encoding>
        <Opcode byte="0F"/>
        <Opcode byte="83"/>
        <CodeOffset size="4" value="#0"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="JNBE" summary="Jump if not below or equal (CF == 0 and ZF == 0)">
    <InstructionForm gas-name="jnbe">
      <Operand type="rel8"/>
      <Encoding>
        <Opcode byte="77"/>
        <CodeOffset size="1" value="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="jnbe">
      <Operand type="rel32"/>
      <Encoding>
        <Opcode byte="0F"/>
        <Opcode byte="87"/>
        <CodeOffset size="4" value="#0"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="JNC" summary="Jump if not carry (CF == 0)">
    <InstructionForm gas-name="jnc">
      <Operand type="rel8"/>
      <Encoding>
        <Opcode byte="73"/>
        <CodeOffset size="1" value="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="jnc">
      <Operand type="rel32"/>
      <Encoding>
        <Opcode byte="0F"/>
        <Opcode byte="83"/>
        <CodeOffset size="4" value="#0"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="JNE" summary="Jump if not equal (ZF == 0)">
    <InstructionForm gas-name="jne">
      <Operand type="rel8"/>
      <Encoding>
        <Opcode byte="75"/>
        <CodeOffset size="1" value="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="jne">
      <Operand type="rel32"/>
      <Encoding>
        <Opcode byte="0F"/>
        <Opcode byte="85"/>
        <CodeOffset size="4" value="#0"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="JNG" summary="Jump if not greater (ZF == 1 or SF != OF)">
    <InstructionForm gas-name="jng">
      <Operand type="rel8"/>
      <Encoding>
        <Opcode byte="7E"/>
        <CodeOffset size="1" value="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="jng">
      <Operand type="rel32"/>
      <Encoding>
        <Opcode byte="0F"/>
        <Opcode byte="8E"/>
        <CodeOffset size="4" value="#0"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="JNGE" summary="Jump if not greater or equal (SF != OF)">
    <InstructionForm gas-name="jnge">
      <Operand type="rel8"/>
      <Encoding>
        <Opcode byte="7C"/>
        <CodeOffset size="1" value="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="jnge">
      <Operand type="rel32"/>
      <Encoding>
        <Opcode byte="0F"/>
        <Opcode byte="8C"/>
        <CodeOffset size="4" value="#0"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="JNL" summary="Jump if not less (SF == OF)">
    <InstructionForm gas-name="jnl">
      <Operand type="rel8"/>
      <Encoding>
        <Opcode byte="7D"/>
        <CodeOffset size="1" value="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="jnl">
      <Operand type="rel32"/>
      <Encoding>
        <Opcode byte="0F"/>
        <Opcode byte="8D"/>
        <CodeOffset size="4" value="#0"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="JNLE" summary="Jump if not less or equal (ZF == 0 and SF == OF)">
    <InstructionForm gas-name="jnle">
      <Operand type="rel8"/>
      <Encoding>
        <Opcode byte="7F"/>
        <CodeOffset size="1" value="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="jnle">
      <Operand type="rel32"/>
      <Encoding>
        <Opcode byte="0F"/>
        <Opcode byte="8F"/>
        <CodeOffset size="4" value="#0"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="JNO" summary="Jump if not overflow (OF == 0)">
    <InstructionForm gas-name="jno">
      <Operand type="rel8"/>
      <Encoding>
        <Opcode byte="71"/>
        <CodeOffset size="1" value="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="jno">
      <Operand type="rel32"/>
      <Encoding>
        <Opcode byte="0F"/>
        <Opcode byte="81"/>
        <CodeOffset size="4" value="#0"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="JNP" summary="Jump if not parity (PF == 0)">
    <InstructionForm gas-name="jnp">
      <Operand type="rel8"/>
      <Encoding>
        <Opcode byte="7B"/>
        <CodeOffset size="1" value="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="jnp">
      <Operand type="rel32"/>
      <Encoding>
        <Opcode byte="0F"/>
        <Opcode byte="8B"/>
        <CodeOffset size="4" value="#0"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="JNS" summary="Jump if not sign (SF == 0)">
    <InstructionForm gas-name="jns">
      <Operand type="rel8"/>
      <Encoding>
        <Opcode byte="79"/>
        <CodeOffset size="1" value="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="jns">
      <Operand type="rel32"/>
      <Encoding>
        <Opcode byte="0F"/>
        <Opcode byte="89"/>
        <CodeOffset size="4" value="#0"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="JNZ" summary="Jump if not zero (ZF == 0)">
    <InstructionForm gas-name="jnz">
      <Operand type="rel8"/>
      <Encoding>
        <Opcode byte="75"/>
        <CodeOffset size="1" value="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="jnz">
      <Operand type="rel32"/>
      <Encoding>
        <Opcode byte="0F"/>
        <Opcode byte="85"/>
        <CodeOffset size="4" value="#0"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="JO" summary="Jump if overflow (OF == 1)">
    <InstructionForm gas-name="jo">
      <Operand type="rel8"/>
      <Encoding>
        <Opcode byte="70"/>
        <CodeOffset size="1" value="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="jo">
      <Operand type="rel32"/>
      <Encoding>
        <Opcode byte="0F"/>
        <Opcode byte="80"/>
        <CodeOffset size="4" value="#0"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="JP" summary="Jump if parity (PF == 1)">
    <InstructionForm gas-name="jp">
      <Operand type="rel8"/>
      <Encoding>
        <Opcode byte="7A"/>
        <CodeOffset size="1" value="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="jp">
      <Operand type="rel32"/>
      <Encoding>
        <Opcode byte="0F"/>
        <Opcode byte="8A"/>
        <CodeOffset size="4" value="#0"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="JPE" summary="Jump if parity even (PF == 1)">
    <InstructionForm gas-name="jpe">
      <Operand type="rel8"/>
      <Encoding>
        <Opcode byte="7A"/>
        <CodeOffset size="1" value="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="jpe">
      <Operand type="rel32"/>
      <Encoding>
        <Opcode byte="0F"/>
        <Opcode byte="8A"/>
        <CodeOffset size="4" value="#0"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="JPO" summary="Jump if parity odd (PF == 0)">
    <InstructionForm gas-name="jpo">
      <Operand type="rel8"/>
      <Encoding>
        <Opcode byte="7B"/>
        <CodeOffset size="1" value="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="jpo">
      <Operand type="rel32"/>
      <Encoding>
        <Opcode byte="0F"/>
        <Opcode byte="8B"/>
        <CodeOffset size="4" value="#0"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="JRCXZ" summary="Jump if RCX register is 0">
    <InstructionForm gas-name="jrcxz">
      <Operand type="rel8"/>
      <ImplicitOperand id="rcx" input="true" output="false"/>
      <Encoding>
        <Opcode byte="E3"/>
        <CodeOffset size="1" value="#0"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="JS" summary="Jump if sign (SF == 1)">
    <InstructionForm gas-name="js">
      <Operand type="rel8"/>
      <Encoding>
        <Opcode byte="78"/>
        <CodeOffset size="1" value="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="js">
      <Operand type="rel32"/>
      <Encoding>
        <Opcode byte="0F"/>
        <Opcode byte="88"/>
        <CodeOffset size="4" value="#0"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="JZ" summary="Jump if zero (ZF == 1)">
    <InstructionForm gas-name="jz">
      <Operand type="rel8"/>
      <Encoding>
        <Opcode byte="74"/>
        <CodeOffset size="1" value="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="jz">
      <Operand type="rel32"/>
      <Encoding>
        <Opcode byte="0F"/>
        <Opcode byte="84"/>
        <CodeOffset size="4" value="#0"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="KAND" summary="Bitwise Logical AND Vector Masks">
    <InstructionForm gas-name="kand">
      <Operand type="k" input="true" output="true"/>
      <Operand type="k" input="true" output="false"/>
      <Encoding>
        <VEX W="0" L="0" m-mmmm="00001" pp="00" R="0" B="0" vvvv="0000"/>
        <Opcode byte="41"/>
        <ModRM mode="11" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="KANDN" summary="Bitwise Logical AND NOT Vector Masks">
    <InstructionForm gas-name="kandn">
      <Operand type="k" input="true" output="true"/>
      <Operand type="k" input="true" output="false"/>
      <Encoding>
        <VEX W="0" L="0" m-mmmm="00001" pp="00" R="0" B="0" vvvv="0000"/>
        <Opcode byte="42"/>
        <ModRM mode="11" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="KANDNR" summary="Bitwise Logical Reverse AND NOT Vector Masks">
    <InstructionForm gas-name="kandnr">
      <Operand type="k" input="true" output="true"/>
      <Operand type="k" input="true" output="false"/>
      <Encoding>
        <VEX W="0" L="0" m-mmmm="00001" pp="00" R="0" B="0" vvvv="0000"/>
        <Opcode byte="43"/>
        <ModRM mode="11" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="KCONCATH" summary="Pack and Move High Vector Mask">
    <InstructionForm gas-name="kconcath">
      <Operand type="r64" input="false" output="true"/>
      <Operand type="k" input="true" output="false"/>
      <Operand type="k" input="true" output="false"/>
      <Encoding>
        <VEX W="0" L="0" m-mmmm="00001" pp="00" R="#0" B="0" vvvv="#1"/>
        <Opcode byte="95"/>
        <ModRM mode="11" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="KCONCATL" summary="Pack and Move Low Vector Mask">
    <InstructionForm gas-name="kconcatl">
      <Operand type="r64" input="false" output="true"/>
      <Operand type="k" input="true" output="false"/>
      <Operand type="k" input="true" output="false"/>
      <Encoding>
        <VEX W="0" L="0" m-mmmm="00001" pp="00" R="#0" B="0" vvvv="#1"/>
        <Opcode byte="97"/>
        <ModRM mode="11" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="KEXTRACT" summary="Extract Vector Mask From Register">
    <InstructionForm gas-name="kextract">
      <Operand type="k" input="false" output="true"/>
      <Operand type="r64" input="true" output="false"/>
      <Operand type="imm8"/>
      <Encoding>
        <VEX W="0" L="0" m-mmmm="00011" pp="01" R="0" B="#1" vvvv="0000"/>
        <Opcode byte="3E"/>
        <ModRM mode="11" reg="#0" rm="#1"/>
        <Immediate size="1" value="#2"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="KMERGE2L1H" summary="Swap and Merge High Element Portion and Low Portion of Vector Masks">
    <InstructionForm gas-name="kmerge2l1h">
      <Operand type="k" input="true" output="true"/>
      <Operand type="k" input="true" output="false"/>
      <Encoding>
        <VEX W="0" L="0" m-mmmm="00001" pp="00" R="0" B="0" vvvv="0000"/>
        <Opcode byte="48"/>
        <ModRM mode="11" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="KMERGE2L1L" summary="Move Low Element Portion into High Portion of Vector Mask">
    <InstructionForm gas-name="kmerge2l1l">
      <Operand type="k" input="true" output="true"/>
      <Operand type="k" input="true" output="false"/>
      <Encoding>
        <VEX W="0" L="0" m-mmmm="00001" pp="00" R="0" B="0" vvvv="0000"/>
        <Opcode byte="49"/>
        <ModRM mode="11" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="KMOV" summary="Move Vector Mask">
    <InstructionForm gas-name="kmov">
      <Operand type="k" input="false" output="true"/>
      <Operand type="k" input="true" output="false"/>
      <Encoding>
        <VEX W="0" L="0" m-mmmm="00001" pp="00" R="0" B="0" vvvv="0000"/>
        <Opcode byte="90"/>
        <ModRM mode="11" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="kmov">
      <Operand type="k" input="false" output="true"/>
      <Operand type="r32" input="true" output="false"/>
      <Encoding>
        <VEX W="0" L="0" m-mmmm="00001" pp="00" R="0" B="#1" vvvv="0000"/>
        <Opcode byte="92"/>
        <ModRM mode="11" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="kmov">
      <Operand type="r32" input="false" output="true"/>
      <Operand type="k" input="true" output="false"/>
      <Encoding>
        <VEX W="0" L="0" m-mmmm="00001" pp="00" R="#0" B="0" vvvv="0000"/>
        <Opcode byte="93"/>
        <ModRM mode="11" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="KNOT" summary="Bitwise Logical NOT Vector Mask">
    <InstructionForm gas-name="knot">
      <Operand type="k" input="false" output="true"/>
      <Operand type="k" input="true" output="false"/>
      <Encoding>
        <VEX W="0" L="0" m-mmmm="00001" pp="00" R="0" B="0" vvvv="0000"/>
        <Opcode byte="44"/>
        <ModRM mode="11" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="KOR" summary="Bitwise Logical OR Vector Masks">
    <InstructionForm gas-name="kor">
      <Operand type="k" input="true" output="true"/>
      <Operand type="k" input="true" output="false"/>
      <Encoding>
        <VEX W="0" L="0" m-mmmm="00001" pp="00" R="0" B="0" vvvv="0000"/>
        <Opcode byte="45"/>
        <ModRM mode="11" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="KORTEST" summary="Bitwise Logical OR Vector Masks and Set Flags">
    <InstructionForm gas-name="kortest">
      <Operand type="k" input="true" output="false"/>
      <Operand type="k" input="true" output="false"/>
      <Encoding>
        <VEX W="0" L="0" m-mmmm="00001" pp="00" R="0" B="0" vvvv="0000"/>
        <Opcode byte="98"/>
        <ModRM mode="11" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="KXNOR" summary="Bitwise Logical XNOR Vector Masks">
    <InstructionForm gas-name="kxnor">
      <Operand type="k" input="true" output="true"/>
      <Operand type="k" input="true" output="false"/>
      <Encoding>
        <VEX W="0" L="0" m-mmmm="00001" pp="00" R="0" B="0" vvvv="0000"/>
        <Opcode byte="46"/>
        <ModRM mode="11" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="KXOR" summary="Bitwise Logical XOR Vector Masks">
    <InstructionForm gas-name="kxor">
      <Operand type="k" input="true" output="true"/>
      <Operand type="k" input="true" output="false"/>
      <Encoding>
        <VEX W="0" L="0" m-mmmm="00001" pp="00" R="0" B="0" vvvv="0000"/>
        <Opcode byte="47"/>
        <ModRM mode="11" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="LDMXCSR" summary="Load MXCSR Register">
    <InstructionForm gas-name="ldmxcsr">
      <Operand type="m32" input="true" output="false"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0" X="#0"/>
        <Opcode byte="0F"/>
        <Opcode byte="AE"/>
        <ModRM mode="#0" reg="2" rm="#0"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="LEA" summary="Load Effective Address">
    <InstructionForm gas-name="leaw">
      <Operand type="r16" input="false" output="true"/>
      <Operand type="m" input="true" output="false"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" R="#0" B="#1" X="#1"/>
        <Opcode byte="8D"/>
        <ModRM mode="#1" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="leal">
      <Operand type="r32" input="false" output="true"/>
      <Operand type="m" input="true" output="false"/>
      <Encoding>
        <REX mandatory="false" W="0" R="#0" B="#1" X="#1"/>
        <Opcode byte="8D"/>
        <ModRM mode="#1" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="leaq">
      <Operand type="r64" input="false" output="true"/>
      <Operand type="m" input="true" output="false"/>
      <Encoding>
        <REX mandatory="true" W="1" R="#0" B="#1" X="#1"/>
        <Opcode byte="8D"/>
        <ModRM mode="#1" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="LZCNT" summary="Count the Number of Leading Zero Bits">
    <InstructionForm gas-name="lzcntl">
      <Operand type="r32" input="false" output="true"/>
      <Operand type="r32" input="true" output="false"/>
      <Encoding>
        <VEX W="0" L="0" m-mmmm="00001" pp="10" R="#0" B="#1" vvvv="0000"/>
        <Opcode byte="BD"/>
        <ModRM mode="11" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="lzcntq">
      <Operand type="r64" input="false" output="true"/>
      <Operand type="r64" input="true" output="false"/>
      <Encoding>
        <VEX W="1" L="0" m-mmmm="00001" pp="10" R="#0" B="#1" vvvv="0000"/>
        <Opcode byte="BD"/>
        <ModRM mode="11" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="MOV" summary="Move">
    <InstructionForm gas-name="movb">
      <Operand type="r8" input="false" output="true"/>
      <Operand type="imm8"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="C6"/>
        <ModRM mode="11" reg="0" rm="#0"/>
        <Immediate size="1" value="#1"/>
      </Encoding>
      <Encoding>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="B0" addend="#0"/>
        <Immediate size="1" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="movb">
      <Operand type="r8" input="false" output="true"/>
      <Operand type="r8" input="true" output="false"/>
      <Encoding>
        <REX mandatory="false" W="0" R="#1" B="#0"/>
        <Opcode byte="88"/>
        <ModRM mode="11" reg="#1" rm="#0"/>
      </Encoding>
      <Encoding>
        <REX mandatory="false" W="0" R="#0" B="#1"/>
        <Opcode byte="8A"/>
        <ModRM mode="11" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="movb">
      <Operand type="r8" input="false" output="true"/>
      <Operand type="m8" input="true" output="false"/>
      <Encoding>
        <REX mandatory="false" W="0" R="#0" B="#1" X="#1"/>
        <Opcode byte="8A"/>
        <ModRM mode="#1" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="movw">
      <Operand type="r16" input="false" output="true"/>
      <Operand type="imm16"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="C7"/>
        <ModRM mode="11" reg="0" rm="#0"/>
        <Immediate size="2" value="#1"/>
      </Encoding>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="B8" addend="#0"/>
        <Immediate size="2" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="movw">
      <Operand type="r16" input="false" output="true"/>
      <Operand type="r16" input="true" output="false"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" R="#1" B="#0"/>
        <Opcode byte="89"/>
        <ModRM mode="11" reg="#1" rm="#0"/>
      </Encoding>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" R="#0" B="#1"/>
        <Opcode byte="8B"/>
        <ModRM mode="11" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="movw">
      <Operand type="r16" input="false" output="true"/>
      <Operand type="m16" input="true" output="false"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" R="#0" B="#1" X="#1"/>
        <Opcode byte="8B"/>
        <ModRM mode="#1" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="movabs">
      <Operand type="eax" input="false" output="true"/>
      <Operand type="moffs32"/>
      <Encoding>
        <Opcode byte="A1"/>
        <DataOffset size="4" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="movl">
      <Operand type="r32" input="false" output="true"/>
      <Operand type="imm32"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="C7"/>
        <ModRM mode="11" reg="0" rm="#0"/>
        <Immediate size="4" value="#1"/>
      </Encoding>
      <Encoding>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="B8" addend="#0"/>
        <Immediate size="4" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="movl">
      <Operand type="r32" input="false" output="true"/>
      <Operand type="r32" input="true" output="false"/>
      <Encoding>
        <REX mandatory="false" W="0" R="#1" B="#0"/>
        <Opcode byte="89"/>
        <ModRM mode="11" reg="#1" rm="#0"/>
      </Encoding>
      <Encoding>
        <REX mandatory="false" W="0" R="#0" B="#1"/>
        <Opcode byte="8B"/>
        <ModRM mode="11" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="movl">
      <Operand type="r32" input="false" output="true"/>
      <Operand type="m32" input="true" output="false"/>
      <Encoding>
        <REX mandatory="false" W="0" R="#0" B="#1" X="#1"/>
        <Opcode byte="8B"/>
        <ModRM mode="#1" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="movabs">
      <Operand type="rax" input="false" output="true"/>
      <Operand type="moffs64"/>
      <Encoding>
        <REX mandatory="true" W="1"/>
        <Opcode byte="A1"/>
        <DataOffset size="8" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="movq">
      <Operand type="r64" input="false" output="true"/>
      <Operand type="imm32" extended-size="8"/>
      <Encoding>
        <REX mandatory="true" W="1" B="#0"/>
        <Opcode byte="C7"/>
        <ModRM mode="11" reg="0" rm="#0"/>
        <Immediate size="4" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="movq">
      <Operand type="r64" input="false" output="true"/>
      <Operand type="imm64"/>
      <Encoding>
        <REX mandatory="true" W="1" B="#0"/>
        <Opcode byte="B8" addend="#0"/>
        <Immediate size="8" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="movq">
      <Operand type="r64" input="false" output="true"/>
      <Operand type="r64" input="true" output="false"/>
      <Encoding>
        <REX mandatory="true" W="1" R="#1" B="#0"/>
        <Opcode byte="89"/>
        <ModRM mode="11" reg="#1" rm="#0"/>
      </Encoding>
      <Encoding>
        <REX mandatory="true" W="1" R="#0" B="#1"/>
        <Opcode byte="8B"/>
        <ModRM mode="11" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="movq">
      <Operand type="r64" input="false" output="true"/>
      <Operand type="m64" input="true" output="false"/>
      <Encoding>
        <REX mandatory="true" W="1" R="#0" B="#1" X="#1"/>
        <Opcode byte="8B"/>
        <ModRM mode="#1" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="movb">
      <Operand type="m8" input="false" output="true"/>
      <Operand type="imm8"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0" X="#0"/>
        <Opcode byte="C6"/>
        <ModRM mode="#0" reg="0" rm="#0"/>
        <Immediate size="1" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="movb">
      <Operand type="m8" input="false" output="true"/>
      <Operand type="r8" input="true" output="false"/>
      <Encoding>
        <REX mandatory="false" W="0" R="#1" B="#0" X="#0"/>
        <Opcode byte="88"/>
        <ModRM mode="#0" reg="#1" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="movw">
      <Operand type="m16" input="false" output="true"/>
      <Operand type="imm16"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" B="#0" X="#0"/>
        <Opcode byte="C7"/>
        <ModRM mode="#0" reg="0" rm="#0"/>
        <Immediate size="2" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="movw">
      <Operand type="m16" input="false" output="true"/>
      <Operand type="r16" input="true" output="false"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" R="#1" B="#0" X="#0"/>
        <Opcode byte="89"/>
        <ModRM mode="#0" reg="#1" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="movl">
      <Operand type="m32" input="false" output="true"/>
      <Operand type="imm32"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0" X="#0"/>
        <Opcode byte="C7"/>
        <ModRM mode="#0" reg="0" rm="#0"/>
        <Immediate size="4" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="movl">
      <Operand type="m32" input="false" output="true"/>
      <Operand type="r32" input="true" output="false"/>
      <Encoding>
        <REX mandatory="false" W="0" R="#1" B="#0" X="#0"/>
        <Opcode byte="89"/>
        <ModRM mode="#0" reg="#1" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="movq">
      <Operand type="m64" input="false" output="true"/>
      <Operand type="imm32" extended-size="8"/>
      <Encoding>
        <REX mandatory="true" W="1" B="#0" X="#0"/>
        <Opcode byte="C7"/>
        <ModRM mode="#0" reg="0" rm="#0"/>
        <Immediate size="4" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="movq">
      <Operand type="m64" input="false" output="true"/>
      <Operand type="r64" input="true" output="false"/>
      <Encoding>
        <REX mandatory="true" W="1" R="#1" B="#0" X="#0"/>
        <Opcode byte="89"/>
        <ModRM mode="#0" reg="#1" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="movabs">
      <Operand type="moffs32"/>
      <Operand type="eax" input="true" output="false"/>
      <Encoding>
        <Opcode byte="A3"/>
        <DataOffset size="4" value="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="movabs">
      <Operand type="moffs64"/>
      <Operand type="rax" input="true" output="false"/>
      <Encoding>
        <REX mandatory="true" W="1"/>
        <Opcode byte="A3"/>
        <DataOffset size="8" value="#0"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="MOVSX" summary="Move with Sign-Extension">
    <InstructionForm gas-name="movsbw">
      <Operand type="r16" input="false" output="true"/>
      <Operand type="r8" input="true" output="false"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" R="#0" B="#1"/>
        <Opcode byte="0F"/>
        <Opcode byte="BE"/>
        <ModRM mode="11" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="movsbw">
      <Operand type="r16" input="false" output="true"/>
      <Operand type="m8" input="true" output="false"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" R="#0" B="#1" X="#1"/>
        <Opcode byte="0F"/>
        <Opcode byte="BE"/>
        <ModRM mode="#1" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="movsbl">
      <Operand type="r32" input="false" output="true"/>
      <Operand type="r8" input="true" output="false"/>
      <Encoding>
        <REX mandatory="false" W="0" R="#0" B="#1"/>
        <Opcode byte="0F"/>
        <Opcode byte="BE"/>
        <ModRM mode="11" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="movswl">
      <Operand type="r32" input="false" output="true"/>
      <Operand type="r16" input="true" output="false"/>
      <Encoding>
        <REX mandatory="false" W="0" R="#0" B="#1"/>
        <Opcode byte="0F"/>
        <Opcode byte="BF"/>
        <ModRM mode="11" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="movsbl">
      <Operand type="r32" input="false" output="true"/>
      <Operand type="m8" input="true" output="false"/>
      <Encoding>
        <REX mandatory="false" W="0" R="#0" B="#1" X="#1"/>
        <Opcode byte="0F"/>
        <Opcode byte="BE"/>
        <ModRM mode="#1" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="movswl">
      <Operand type="r32" input="false" output="true"/>
      <Operand type="m16" input="true" output="false"/>
      <Encoding>
        <REX mandatory="false" W="0" R="#0" B="#1" X="#1"/>
        <Opcode byte="0F"/>
        <Opcode byte="BF"/>
        <ModRM mode="#1" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="movsbq">
      <Operand type="r64" input="false" output="true"/>
      <Operand type="r8" input="true" output="false"/>
      <Encoding>
        <REX mandatory="true" W="1" R="#0" B="#1"/>
        <Opcode byte="0F"/>
        <Opcode byte="BE"/>
        <ModRM mode="11" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="movswq">
      <Operand type="r64" input="false" output="true"/>
      <Operand type="r16" input="true" output="false"/>
      <Encoding>
        <REX mandatory="true" W="1" R="#0" B="#1"/>
        <Opcode byte="0F"/>
        <Opcode byte="BF"/>
        <ModRM mode="11" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="movsbq">
      <Operand type="r64" input="false" output="true"/>
      <Operand type="m8" input="true" output="false"/>
      <Encoding>
        <REX mandatory="true" W="1" R="#0" B="#1" X="#1"/>
        <Opcode byte="0F"/>
        <Opcode byte="BE"/>
        <ModRM mode="#1" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="movswq">
      <Operand type="r64" input="false" output="true"/>
      <Operand type="m16" input="true" output="false"/>
      <Encoding>
        <REX mandatory="true" W="1" R="#0" B="#1" X="#1"/>
        <Opcode byte="0F"/>
        <Opcode byte="BF"/>
        <ModRM mode="#1" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="MOVSXD" summary="Move Doubleword to Quadword with Sign-Extension">
    <InstructionForm gas-name="movslq">
      <Operand type="r64" input="false" output="true"/>
      <Operand type="r32" input="true" output="false"/>
      <Encoding>
        <REX mandatory="true" W="1" R="#0" B="#1"/>
        <Opcode byte="63"/>
        <ModRM mode="11" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="movslq">
      <Operand type="r64" input="false" output="true"/>
      <Operand type="m32" input="true" output="false"/>
      <Encoding>
        <REX mandatory="true" W="1" R="#0" B="#1" X="#1"/>
        <Opcode byte="63"/>
        <ModRM mode="#1" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="MOVZX" summary="Move with Zero-Extend">
    <InstructionForm gas-name="movzbw">
      <Operand type="r16" input="false" output="true"/>
      <Operand type="r8" input="true" output="false"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" R="#0" B="#1"/>
        <Opcode byte="0F"/>
        <Opcode byte="B6"/>
        <ModRM mode="11" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="movzbw">
      <Operand type="r16" input="false" output="true"/>
      <Operand type="m8" input="true" output="false"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" R="#0" B="#1" X="#1"/>
        <Opcode byte="0F"/>
        <Opcode byte="B6"/>
        <ModRM mode="#1" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="movzbl">
      <Operand type="r32" input="false" output="true"/>
      <Operand type="r8" input="true" output="false"/>
      <Encoding>
        <REX mandatory="false" W="0" R="#0" B="#1"/>
        <Opcode byte="0F"/>
        <Opcode byte="B6"/>
        <ModRM mode="11" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="movzwl">
      <Operand type="r32" input="false" output="true"/>
      <Operand type="r16" input="true" output="false"/>
      <Encoding>
        <REX mandatory="false" W="0" R="#0" B="#1"/>
        <Opcode byte="0F"/>
        <Opcode byte="B7"/>
        <ModRM mode="11" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="movzbl">
      <Operand type="r32" input="false" output="true"/>
      <Operand type="m8" input="true" output="false"/>
      <Encoding>
        <REX mandatory="false" W="0" R="#0" B="#1" X="#1"/>
        <Opcode byte="0F"/>
        <Opcode byte="B6"/>
        <ModRM mode="#1" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="movzwl">
      <Operand type="r32" input="false" output="true"/>
      <Operand type="m16" input="true" output="false"/>
      <Encoding>
        <REX mandatory="false" W="0" R="#0" B="#1" X="#1"/>
        <Opcode byte="0F"/>
        <Opcode byte="B7"/>
        <ModRM mode="#1" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="movzbq">
      <Operand type="r64" input="false" output="true"/>
      <Operand type="r8" input="true" output="false"/>
      <Encoding>
        <REX mandatory="true" W="1" R="#0" B="#1"/>
        <Opcode byte="0F"/>
        <Opcode byte="B6"/>
        <ModRM mode="11" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="movzwq">
      <Operand type="r64" input="false" output="true"/>
      <Operand type="r16" input="true" output="false"/>
      <Encoding>
        <REX mandatory="true" W="1" R="#0" B="#1"/>
        <Opcode byte="0F"/>
        <Opcode byte="B7"/>
        <ModRM mode="11" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="movzbq">
      <Operand type="r64" input="false" output="true"/>
      <Operand type="m8" input="true" output="false"/>
      <Encoding>
        <REX mandatory="true" W="1" R="#0" B="#1" X="#1"/>
        <Opcode byte="0F"/>
        <Opcode byte="B6"/>
        <ModRM mode="#1" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="movzwq">
      <Operand type="r64" input="false" output="true"/>
      <Operand type="m16" input="true" output="false"/>
      <Encoding>
        <REX mandatory="true" W="1" R="#0" B="#1" X="#1"/>
        <Opcode byte="0F"/>
        <Opcode byte="B7"/>
        <ModRM mode="#1" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="MUL" summary="Unsigned Multiply">
    <InstructionForm gas-name="mulb">
      <Operand type="r8" input="true" output="false"/>
      <ImplicitOperand id="ax" input="false" output="true"/>
      <ImplicitOperand id="al" input="true" output="false"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="F6"/>
        <ModRM mode="11" reg="4" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="mulw">
      <Operand type="r16" input="true" output="false"/>
      <ImplicitOperand id="ax" input="true" output="true"/>
      <ImplicitOperand id="dx" input="false" output="true"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="F7"/>
        <ModRM mode="11" reg="4" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="mull">
      <Operand type="r32" input="true" output="false"/>
      <ImplicitOperand id="eax" input="true" output="true"/>
      <ImplicitOperand id="edx" input="false" output="true"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="F7"/>
        <ModRM mode="11" reg="4" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="mulq">
      <Operand type="r64" input="true" output="false"/>
      <ImplicitOperand id="rax" input="true" output="true"/>
      <ImplicitOperand id="rdx" input="false" output="true"/>
      <Encoding>
        <REX mandatory="true" W="1" B="#0"/>
        <Opcode byte="F7"/>
        <ModRM mode="11" reg="4" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="mulb">
      <Operand type="m8" input="true" output="false"/>
      <ImplicitOperand id="ax" input="false" output="true"/>
      <ImplicitOperand id="al" input="true" output="false"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0" X="#0"/>
        <Opcode byte="F6"/>
        <ModRM mode="#0" reg="4" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="mulw">
      <Operand type="m16" input="true" output="false"/>
      <ImplicitOperand id="ax" input="true" output="true"/>
      <ImplicitOperand id="dx" input="false" output="true"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" B="#0" X="#0"/>
        <Opcode byte="F7"/>
        <ModRM mode="#0" reg="4" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="mull">
      <Operand type="m32" input="true" output="false"/>
      <ImplicitOperand id="eax" input="true" output="true"/>
      <ImplicitOperand id="edx" input="false" output="true"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0" X="#0"/>
        <Opcode byte="F7"/>
        <ModRM mode="#0" reg="4" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="mulq">
      <Operand type="m64" input="true" output="false"/>
      <ImplicitOperand id="rax" input="true" output="true"/>
      <ImplicitOperand id="rdx" input="false" output="true"/>
      <Encoding>
        <REX mandatory="true" W="1" B="#0" X="#0"/>
        <Opcode byte="F7"/>
        <ModRM mode="#0" reg="4" rm="#0"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="NEG" summary="Two's Complement Negation">
    <InstructionForm gas-name="negb">
      <Operand type="r8" input="true" output="true"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="F6"/>
        <ModRM mode="11" reg="3" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="negw">
      <Operand type="r16" input="true" output="true"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="F7"/>
        <ModRM mode="11" reg="3" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="negl">
      <Operand type="r32" input="true" output="true"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="F7"/>
        <ModRM mode="11" reg="3" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="negq">
      <Operand type="r64" input="true" output="true"/>
      <Encoding>
        <REX mandatory="true" W="1" B="#0"/>
        <Opcode byte="F7"/>
        <ModRM mode="11" reg="3" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="negb">
      <Operand type="m8" input="true" output="true"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0" X="#0"/>
        <Opcode byte="F6"/>
        <ModRM mode="#0" reg="3" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="negw">
      <Operand type="m16" input="true" output="true"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" B="#0" X="#0"/>
        <Opcode byte="F7"/>
        <ModRM mode="#0" reg="3" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="negl">
      <Operand type="m32" input="true" output="true"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0" X="#0"/>
        <Opcode byte="F7"/>
        <ModRM mode="#0" reg="3" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="negq">
      <Operand type="m64" input="true" output="true"/>
      <Encoding>
        <REX mandatory="true" W="1" B="#0" X="#0"/>
        <Opcode byte="F7"/>
        <ModRM mode="#0" reg="3" rm="#0"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="NOP" summary="No Operation">
    <InstructionForm gas-name="nop">
      <Encoding>
        <Opcode byte="90"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="NOT" summary="One's Complement Negation">
    <InstructionForm gas-name="notb">
      <Operand type="r8" input="true" output="true"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="F6"/>
        <ModRM mode="11" reg="2" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="notw">
      <Operand type="r16" input="true" output="true"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="F7"/>
        <ModRM mode="11" reg="2" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="notl">
      <Operand type="r32" input="true" output="true"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="F7"/>
        <ModRM mode="11" reg="2" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="notq">
      <Operand type="r64" input="true" output="true"/>
      <Encoding>
        <REX mandatory="true" W="1" B="#0"/>
        <Opcode byte="F7"/>
        <ModRM mode="11" reg="2" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="notb">
      <Operand type="m8" input="true" output="true"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0" X="#0"/>
        <Opcode byte="F6"/>
        <ModRM mode="#0" reg="2" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="notw">
      <Operand type="m16" input="true" output="true"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" B="#0" X="#0"/>
        <Opcode byte="F7"/>
        <ModRM mode="#0" reg="2" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="notl">
      <Operand type="m32" input="true" output="true"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0" X="#0"/>
        <Opcode byte="F7"/>
        <ModRM mode="#0" reg="2" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="notq">
      <Operand type="m64" input="true" output="true"/>
      <Encoding>
        <REX mandatory="true" W="1" B="#0" X="#0"/>
        <Opcode byte="F7"/>
        <ModRM mode="#0" reg="2" rm="#0"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="OR" summary="Logical Inclusive OR">
    <InstructionForm gas-name="orb">
      <Operand type="al" input="true" output="true"/>
      <Operand type="imm8"/>
      <Encoding>
        <Opcode byte="0C"/>
        <Immediate size="1" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="orb">
      <Operand type="r8" input="true" output="true"/>
      <Operand type="imm8"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="80"/>
        <ModRM mode="11" reg="1" rm="#0"/>
        <Immediate size="1" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="orb">
      <Operand type="r8" input="true" output="true"/>
      <Operand type="r8" input="true" output="false"/>
      <Encoding>
        <REX mandatory="false" W="0" R="#1" B="#0"/>
        <Opcode byte="08"/>
        <ModRM mode="11" reg="#1" rm="#0"/>
      </Encoding>
      <Encoding>
        <REX mandatory="false" W="0" R="#0" B="#1"/>
        <Opcode byte="0A"/>
        <ModRM mode="11" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="orb">
      <Operand type="r8" input="true" output="true"/>
      <Operand type="m8" input="true" output="false"/>
      <Encoding>
        <REX mandatory="false" W="0" R="#0" B="#1" X="#1"/>
        <Opcode byte="0A"/>
        <ModRM mode="#1" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="orw">
      <Operand type="ax" input="true" output="true"/>
      <Operand type="imm16"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <Opcode byte="0D"/>
        <Immediate size="2" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="orw">
      <Operand type="r16" input="true" output="true"/>
      <Operand type="imm8" extended-size="2"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="83"/>
        <ModRM mode="11" reg="1" rm="#0"/>
        <Immediate size="1" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="orw">
      <Operand type="r16" input="true" output="true"/>
      <Operand type="imm16"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="81"/>
        <ModRM mode="11" reg="1" rm="#0"/>
        <Immediate size="2" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="orw">
      <Operand type="r16" input="true" output="true"/>
      <Operand type="r16" input="true" output="false"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" R="#1" B="#0"/>
        <Opcode byte="09"/>
        <ModRM mode="11" reg="#1" rm="#0"/>
      </Encoding>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" R="#0" B="#1"/>
        <Opcode byte="0B"/>
        <ModRM mode="11" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="orw">
      <Operand type="r16" input="true" output="true"/>
      <Operand type="m16" input="true" output="false"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" R="#0" B="#1" X="#1"/>
        <Opcode byte="0B"/>
        <ModRM mode="#1" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="orl">
      <Operand type="eax" input="true" output="true"/>
      <Operand type="imm32"/>
      <Encoding>
        <Opcode byte="0D"/>
        <Immediate size="4" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="orl">
      <Operand type="r32" input="true" output="true"/>
      <Operand type="imm8" extended-size="4"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="83"/>
        <ModRM mode="11" reg="1" rm="#0"/>
        <Immediate size="1" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="orl">
      <Operand type="r32" input="true" output="true"/>
      <Operand type="imm32"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="81"/>
        <ModRM mode="11" reg="1" rm="#0"/>
        <Immediate size="4" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="orl">
      <Operand type="r32" input="true" output="true"/>
      <Operand type="r32" input="true" output="false"/>
      <Encoding>
        <REX mandatory="false" W="0" R="#1" B="#0"/>
        <Opcode byte="09"/>
        <ModRM mode="11" reg="#1" rm="#0"/>
      </Encoding>
      <Encoding>
        <REX mandatory="false" W="0" R="#0" B="#1"/>
        <Opcode byte="0B"/>
        <ModRM mode="11" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="orl">
      <Operand type="r32" input="true" output="true"/>
      <Operand type="m32" input="true" output="false"/>
      <Encoding>
        <REX mandatory="false" W="0" R="#0" B="#1" X="#1"/>
        <Opcode byte="0B"/>
        <ModRM mode="#1" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="orq">
      <Operand type="rax" input="true" output="true"/>
      <Operand type="imm32"/>
      <Encoding>
        <REX mandatory="true" W="1"/>
        <Opcode byte="0D"/>
        <Immediate size="4" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="orq">
      <Operand type="r64" input="true" output="true"/>
      <Operand type="imm8" extended-size="8"/>
      <Encoding>
        <REX mandatory="true" W="1" B="#0"/>
        <Opcode byte="83"/>
        <ModRM mode="11" reg="1" rm="#0"/>
        <Immediate size="1" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="orq">
      <Operand type="r64" input="true" output="true"/>
      <Operand type="imm32" extended-size="8"/>
      <Encoding>
        <REX mandatory="true" W="1" B="#0"/>
        <Opcode byte="81"/>
        <ModRM mode="11" reg="1" rm="#0"/>
        <Immediate size="4" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="orq">
      <Operand type="r64" input="true" output="true"/>
      <Operand type="r64" input="true" output="false"/>
      <Encoding>
        <REX mandatory="true" W="1" R="#1" B="#0"/>
        <Opcode byte="09"/>
        <ModRM mode="11" reg="#1" rm="#0"/>
      </Encoding>
      <Encoding>
        <REX mandatory="true" W="1" R="#0" B="#1"/>
        <Opcode byte="0B"/>
        <ModRM mode="11" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="orq">
      <Operand type="r64" input="true" output="true"/>
      <Operand type="m64" input="true" output="false"/>
      <Encoding>
        <REX mandatory="true" W="1" R="#0" B="#1" X="#1"/>
        <Opcode byte="0B"/>
        <ModRM mode="#1" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="orb">
      <Operand type="m8" input="true" output="true"/>
      <Operand type="imm8"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0" X="#0"/>
        <Opcode byte="80"/>
        <ModRM mode="#0" reg="1" rm="#0"/>
        <Immediate size="1" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="orb">
      <Operand type="m8" input="true" output="true"/>
      <Operand type="r8" input="true" output="false"/>
      <Encoding>
        <REX mandatory="false" W="0" R="#1" B="#0" X="#0"/>
        <Opcode byte="08"/>
        <ModRM mode="#0" reg="#1" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="orw">
      <Operand type="m16" input="true" output="true"/>
      <Operand type="imm8" extended-size="2"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" B="#0" X="#0"/>
        <Opcode byte="83"/>
        <ModRM mode="#0" reg="1" rm="#0"/>
        <Immediate size="1" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="orw">
      <Operand type="m16" input="true" output="true"/>
      <Operand type="imm16"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" B="#0" X="#0"/>
        <Opcode byte="81"/>
        <ModRM mode="#0" reg="1" rm="#0"/>
        <Immediate size="2" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="orw">
      <Operand type="m16" input="true" output="true"/>
      <Operand type="r16" input="true" output="false"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" R="#1" B="#0" X="#0"/>
        <Opcode byte="09"/>
        <ModRM mode="#0" reg="#1" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="orl">
      <Operand type="m32" input="true" output="true"/>
      <Operand type="imm8" extended-size="4"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0" X="#0"/>
        <Opcode byte="83"/>
        <ModRM mode="#0" reg="1" rm="#0"/>
        <Immediate size="1" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="orl">
      <Operand type="m32" input="true" output="true"/>
      <Operand type="imm32"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0" X="#0"/>
        <Opcode byte="81"/>
        <ModRM mode="#0" reg="1" rm="#0"/>
        <Immediate size="4" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="orl">
      <Operand type="m32" input="true" output="true"/>
      <Operand type="r32" input="true" output="false"/>
      <Encoding>
        <REX mandatory="false" W="0" R="#1" B="#0" X="#0"/>
        <Opcode byte="09"/>
        <ModRM mode="#0" reg="#1" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="orq">
      <Operand type="m64" input="true" output="true"/>
      <Operand type="imm8" extended-size="8"/>
      <Encoding>
        <REX mandatory="true" W="1" B="#0" X="#0"/>
        <Opcode byte="83"/>
        <ModRM mode="#0" reg="1" rm="#0"/>
        <Immediate size="1" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="orq">
      <Operand type="m64" input="true" output="true"/>
      <Operand type="imm32" extended-size="8"/>
      <Encoding>
        <REX mandatory="true" W="1" B="#0" X="#0"/>
        <Opcode byte="81"/>
        <ModRM mode="#0" reg="1" rm="#0"/>
        <Immediate size="4" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="orq">
      <Operand type="m64" input="true" output="true"/>
      <Operand type="r64" input="true" output="false"/>
      <Encoding>
        <REX mandatory="true" W="1" R="#1" B="#0" X="#0"/>
        <Opcode byte="09"/>
        <ModRM mode="#0" reg="#1" rm="#0"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="PAUSE" summary="Spin Loop Hint">
    <InstructionForm gas-name="pause">
      <Encoding>
        <Prefix byte="F3" mandatory="true"/>
        <Opcode byte="90"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="POP" summary="Pop a Value from the Stack">
    <InstructionForm gas-name="popw">
      <Operand type="r16" input="false" output="true"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="58" addend="#0"/>
      </Encoding>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="8F"/>
        <ModRM mode="11" reg="0" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="popq">
      <Operand type="r64" input="false" output="true"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="58" addend="#0"/>
      </Encoding>
      <Encoding>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="8F"/>
        <ModRM mode="11" reg="0" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="popw">
      <Operand type="m16" input="false" output="true"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" B="#0" X="#0"/>
        <Opcode byte="8F"/>
        <ModRM mode="#0" reg="0" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="popq">
      <Operand type="m64" input="false" output="true"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0" X="#0"/>
        <Opcode byte="8F"/>
        <ModRM mode="#0" reg="0" rm="#0"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="POPCNT" summary="Count of Number of Bits Set to 1">
    <InstructionForm gas-name="popcntl">
      <Operand type="r32" input="false" output="true"/>
      <Operand type="r32" input="true" output="false"/>
      <Encoding>
        <VEX W="0" L="0" m-mmmm="00001" pp="10" R="#0" B="#1" vvvv="0000"/>
        <Opcode byte="B8"/>
        <ModRM mode="11" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="popcntq">
      <Operand type="r64" input="false" output="true"/>
      <Operand type="r64" input="true" output="false"/>
      <Encoding>
        <VEX W="1" L="0" m-mmmm="00001" pp="10" R="#0" B="#1" vvvv="0000"/>
        <Opcode byte="B8"/>
        <ModRM mode="11" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="PUSH" summary="Push Value Onto the Stack">
    <InstructionForm gas-name="pushq">
      <Operand type="imm8" extended-size="8"/>
      <Encoding>
        <Opcode byte="6A"/>
        <Immediate size="1" value="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="pushq">
      <Operand type="imm32" extended-size="8"/>
      <Encoding>
        <Opcode byte="68"/>
        <Immediate size="4" value="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="pushw">
      <Operand type="r16" input="true" output="false"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="50" addend="#0"/>
      </Encoding>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="FF"/>
        <ModRM mode="11" reg="6" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="pushq">
      <Operand type="r64" input="true" output="false"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="50" addend="#0"/>
      </Encoding>
      <Encoding>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="FF"/>
        <ModRM mode="11" reg="6" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="pushw">
      <Operand type="m16" input="true" output="false"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" B="#0" X="#0"/>
        <Opcode byte="FF"/>
        <ModRM mode="#0" reg="6" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="pushq">
      <Operand type="m64" input="true" output="false"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0" X="#0"/>
        <Opcode byte="FF"/>
        <ModRM mode="#0" reg="6" rm="#0"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="RCL" summary="Rotate Left through Carry Flag">
    <InstructionForm gas-name="rclb">
      <Operand type="r8" input="true" output="true"/>
      <Operand type="1"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="D0"/>
        <ModRM mode="11" reg="2" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="rclb">
      <Operand type="r8" input="true" output="true"/>
      <Operand type="imm8"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="C0"/>
        <ModRM mode="11" reg="2" rm="#0"/>
        <Immediate size="1" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="rclb">
      <Operand type="r8" input="true" output="true"/>
      <Operand type="cl" input="true" output="false"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="D2"/>
        <ModRM mode="11" reg="2" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="rclw">
      <Operand type="r16" input="true" output="true"/>
      <Operand type="1"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="D1"/>
        <ModRM mode="11" reg="2" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="rclw">
      <Operand type="r16" input="true" output="true"/>
      <Operand type="imm8"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="C1"/>
        <ModRM mode="11" reg="2" rm="#0"/>
        <Immediate size="1" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="rclw">
      <Operand type="r16" input="true" output="true"/>
      <Operand type="cl" input="true" output="false"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="D3"/>
        <ModRM mode="11" reg="2" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="rcll">
      <Operand type="r32" input="true" output="true"/>
      <Operand type="1"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="D1"/>
        <ModRM mode="11" reg="2" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="rcll">
      <Operand type="r32" input="true" output="true"/>
      <Operand type="imm8"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="C1"/>
        <ModRM mode="11" reg="2" rm="#0"/>
        <Immediate size="1" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="rcll">
      <Operand type="r32" input="true" output="true"/>
      <Operand type="cl" input="true" output="false"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="D3"/>
        <ModRM mode="11" reg="2" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="rclq">
      <Operand type="r64" input="true" output="true"/>
      <Operand type="1"/>
      <Encoding>
        <REX mandatory="true" W="1" B="#0"/>
        <Opcode byte="D1"/>
        <ModRM mode="11" reg="2" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="rclq">
      <Operand type="r64" input="true" output="true"/>
      <Operand type="imm8"/>
      <Encoding>
        <REX mandatory="true" W="1" B="#0"/>
        <Opcode byte="C1"/>
        <ModRM mode="11" reg="2" rm="#0"/>
        <Immediate size="1" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="rclq">
      <Operand type="r64" input="true" output="true"/>
      <Operand type="cl" input="true" output="false"/>
      <Encoding>
        <REX mandatory="true" W="1" B="#0"/>
        <Opcode byte="D3"/>
        <ModRM mode="11" reg="2" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="rclb">
      <Operand type="m8" input="true" output="true"/>
      <Operand type="1"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0" X="#0"/>
        <Opcode byte="D0"/>
        <ModRM mode="#0" reg="2" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="rclb">
      <Operand type="m8" input="true" output="true"/>
      <Operand type="imm8"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0" X="#0"/>
        <Opcode byte="C0"/>
        <ModRM mode="#0" reg="2" rm="#0"/>
        <Immediate size="1" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="rclb">
      <Operand type="m8" input="true" output="true"/>
      <Operand type="cl" input="true" output="false"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0" X="#0"/>
        <Opcode byte="D2"/>
        <ModRM mode="#0" reg="2" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="rclw">
      <Operand type="m16" input="true" output="true"/>
      <Operand type="1"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" B="#0" X="#0"/>
        <Opcode byte="D1"/>
        <ModRM mode="#0" reg="2" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="rclw">
      <Operand type="m16" input="true" output="true"/>
      <Operand type="imm8"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" B="#0" X="#0"/>
        <Opcode byte="C1"/>
        <ModRM mode="#0" reg="2" rm="#0"/>
        <Immediate size="1" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="rclw">
      <Operand type="m16" input="true" output="true"/>
      <Operand type="cl" input="true" output="false"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" B="#0" X="#0"/>
        <Opcode byte="D3"/>
        <ModRM mode="#0" reg="2" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="rcll">
      <Operand type="m32" input="true" output="true"/>
      <Operand type="1"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0" X="#0"/>
        <Opcode byte="D1"/>
        <ModRM mode="#0" reg="2" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="rcll">
      <Operand type="m32" input="true" output="true"/>
      <Operand type="imm8"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0" X="#0"/>
        <Opcode byte="C1"/>
        <ModRM mode="#0" reg="2" rm="#0"/>
        <Immediate size="1" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="rcll">
      <Operand type="m32" input="true" output="true"/>
      <Operand type="cl" input="true" output="false"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0" X="#0"/>
        <Opcode byte="D3"/>
        <ModRM mode="#0" reg="2" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="rclq">
      <Operand type="m64" input="true" output="true"/>
      <Operand type="1"/>
      <Encoding>
        <REX mandatory="true" W="1" B="#0" X="#0"/>
        <Opcode byte="D1"/>
        <ModRM mode="#0" reg="2" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="rclq">
      <Operand type="m64" input="true" output="true"/>
      <Operand type="imm8"/>
      <Encoding>
        <REX mandatory="true" W="1" B="#0" X="#0"/>
        <Opcode byte="C1"/>
        <ModRM mode="#0" reg="2" rm="#0"/>
        <Immediate size="1" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="rclq">
      <Operand type="m64" input="true" output="true"/>
      <Operand type="cl" input="true" output="false"/>
      <Encoding>
        <REX mandatory="true" W="1" B="#0" X="#0"/>
        <Opcode byte="D3"/>
        <ModRM mode="#0" reg="2" rm="#0"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="RCR" summary="Rotate Right through Carry Flag">
    <InstructionForm gas-name="rcrb">
      <Operand type="r8" input="true" output="true"/>
      <Operand type="1"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="D0"/>
        <ModRM mode="11" reg="3" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="rcrb">
      <Operand type="r8" input="true" output="true"/>
      <Operand type="imm8"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="C0"/>
        <ModRM mode="11" reg="3" rm="#0"/>
        <Immediate size="1" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="rcrb">
      <Operand type="r8" input="true" output="true"/>
      <Operand type="cl" input="true" output="false"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="D2"/>
        <ModRM mode="11" reg="3" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="rcrw">
      <Operand type="r16" input="true" output="true"/>
      <Operand type="1"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="D1"/>
        <ModRM mode="11" reg="3" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="rcrw">
      <Operand type="r16" input="true" output="true"/>
      <Operand type="imm8"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="C1"/>
        <ModRM mode="11" reg="3" rm="#0"/>
        <Immediate size="1" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="rcrw">
      <Operand type="r16" input="true" output="true"/>
      <Operand type="cl" input="true" output="false"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="D3"/>
        <ModRM mode="11" reg="3" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="rcrl">
      <Operand type="r32" input="true" output="true"/>
      <Operand type="1"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="D1"/>
        <ModRM mode="11" reg="3" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="rcrl">
      <Operand type="r32" input="true" output="true"/>
      <Operand type="imm8"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="C1"/>
        <ModRM mode="11" reg="3" rm="#0"/>
        <Immediate size="1" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="rcrl">
      <Operand type="r32" input="true" output="true"/>
      <Operand type="cl" input="true" output="false"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="D3"/>
        <ModRM mode="11" reg="3" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="rcrq">
      <Operand type="r64" input="true" output="true"/>
      <Operand type="1"/>
      <Encoding>
        <REX mandatory="true" W="1" B="#0"/>
        <Opcode byte="D1"/>
        <ModRM mode="11" reg="3" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="rcrq">
      <Operand type="r64" input="true" output="true"/>
      <Operand type="imm8"/>
      <Encoding>
        <REX mandatory="true" W="1" B="#0"/>
        <Opcode byte="C1"/>
        <ModRM mode="11" reg="3" rm="#0"/>
        <Immediate size="1" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="rcrq">
      <Operand type="r64" input="true" output="true"/>
      <Operand type="cl" input="true" output="false"/>
      <Encoding>
        <REX mandatory="true" W="1" B="#0"/>
        <Opcode byte="D3"/>
        <ModRM mode="11" reg="3" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="rcrb">
      <Operand type="m8" input="true" output="true"/>
      <Operand type="1"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0" X="#0"/>
        <Opcode byte="D0"/>
        <ModRM mode="#0" reg="3" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="rcrb">
      <Operand type="m8" input="true" output="true"/>
      <Operand type="imm8"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0" X="#0"/>
        <Opcode byte="C0"/>
        <ModRM mode="#0" reg="3" rm="#0"/>
        <Immediate size="1" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="rcrb">
      <Operand type="m8" input="true" output="true"/>
      <Operand type="cl" input="true" output="false"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0" X="#0"/>
        <Opcode byte="D2"/>
        <ModRM mode="#0" reg="3" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="rcrw">
      <Operand type="m16" input="true" output="true"/>
      <Operand type="1"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" B="#0" X="#0"/>
        <Opcode byte="D1"/>
        <ModRM mode="#0" reg="3" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="rcrw">
      <Operand type="m16" input="true" output="true"/>
      <Operand type="imm8"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" B="#0" X="#0"/>
        <Opcode byte="C1"/>
        <ModRM mode="#0" reg="3" rm="#0"/>
        <Immediate size="1" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="rcrw">
      <Operand type="m16" input="true" output="true"/>
      <Operand type="cl" input="true" output="false"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" B="#0" X="#0"/>
        <Opcode byte="D3"/>
        <ModRM mode="#0" reg="3" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="rcrl">
      <Operand type="m32" input="true" output="true"/>
      <Operand type="1"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0" X="#0"/>
        <Opcode byte="D1"/>
        <ModRM mode="#0" reg="3" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="rcrl">
      <Operand type="m32" input="true" output="true"/>
      <Operand type="imm8"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0" X="#0"/>
        <Opcode byte="C1"/>
        <ModRM mode="#0" reg="3" rm="#0"/>
        <Immediate size="1" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="rcrl">
      <Operand type="m32" input="true" output="true"/>
      <Operand type="cl" input="true" output="false"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0" X="#0"/>
        <Opcode byte="D3"/>
        <ModRM mode="#0" reg="3" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="rcrq">
      <Operand type="m64" input="true" output="true"/>
      <Operand type="1"/>
      <Encoding>
        <REX mandatory="true" W="1" B="#0" X="#0"/>
        <Opcode byte="D1"/>
        <ModRM mode="#0" reg="3" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="rcrq">
      <Operand type="m64" input="true" output="true"/>
      <Operand type="imm8"/>
      <Encoding>
        <REX mandatory="true" W="1" B="#0" X="#0"/>
        <Opcode byte="C1"/>
        <ModRM mode="#0" reg="3" rm="#0"/>
        <Immediate size="1" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="rcrq">
      <Operand type="m64" input="true" output="true"/>
      <Operand type="cl" input="true" output="false"/>
      <Encoding>
        <REX mandatory="true" W="1" B="#0" X="#0"/>
        <Opcode byte="D3"/>
        <ModRM mode="#0" reg="3" rm="#0"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="RDTSC" summary="Read Time-Stamp Counter">
    <InstructionForm gas-name="rdtsc">
      <ImplicitOperand id="eax" input="false" output="true"/>
      <ImplicitOperand id="edx" input="false" output="true"/>
      <Encoding>
        <Opcode byte="0F"/>
        <Opcode byte="31"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="RET" summary="Return from Procedure">
    <InstructionForm gas-name="ret">
      <Encoding>
        <Opcode byte="C3"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="ret">
      <Operand type="imm16"/>
      <Encoding>
        <Opcode byte="C2"/>
        <Immediate size="2" value="#0"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="ROL" summary="Rotate Left">
    <InstructionForm gas-name="rolb">
      <Operand type="r8" input="true" output="true"/>
      <Operand type="1"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="D0"/>
        <ModRM mode="11" reg="0" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="rolb">
      <Operand type="r8" input="true" output="true"/>
      <Operand type="imm8"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="C0"/>
        <ModRM mode="11" reg="0" rm="#0"/>
        <Immediate size="1" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="rolb">
      <Operand type="r8" input="true" output="true"/>
      <Operand type="cl" input="true" output="false"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="D2"/>
        <ModRM mode="11" reg="0" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="rolw">
      <Operand type="r16" input="true" output="true"/>
      <Operand type="1"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="D1"/>
        <ModRM mode="11" reg="0" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="rolw">
      <Operand type="r16" input="true" output="true"/>
      <Operand type="imm8"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="C1"/>
        <ModRM mode="11" reg="0" rm="#0"/>
        <Immediate size="1" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="rolw">
      <Operand type="r16" input="true" output="true"/>
      <Operand type="cl" input="true" output="false"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="D3"/>
        <ModRM mode="11" reg="0" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="roll">
      <Operand type="r32" input="true" output="true"/>
      <Operand type="1"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="D1"/>
        <ModRM mode="11" reg="0" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="roll">
      <Operand type="r32" input="true" output="true"/>
      <Operand type="imm8"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="C1"/>
        <ModRM mode="11" reg="0" rm="#0"/>
        <Immediate size="1" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="roll">
      <Operand type="r32" input="true" output="true"/>
      <Operand type="cl" input="true" output="false"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="D3"/>
        <ModRM mode="11" reg="0" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="rolq">
      <Operand type="r64" input="true" output="true"/>
      <Operand type="1"/>
      <Encoding>
        <REX mandatory="true" W="1" B="#0"/>
        <Opcode byte="D1"/>
        <ModRM mode="11" reg="0" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="rolq">
      <Operand type="r64" input="true" output="true"/>
      <Operand type="imm8"/>
      <Encoding>
        <REX mandatory="true" W="1" B="#0"/>
        <Opcode byte="C1"/>
        <ModRM mode="11" reg="0" rm="#0"/>
        <Immediate size="1" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="rolq">
      <Operand type="r64" input="true" output="true"/>
      <Operand type="cl" input="true" output="false"/>
      <Encoding>
        <REX mandatory="true" W="1" B="#0"/>
        <Opcode byte="D3"/>
        <ModRM mode="11" reg="0" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="rolb">
      <Operand type="m8" input="true" output="true"/>
      <Operand type="1"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0" X="#0"/>
        <Opcode byte="D0"/>
        <ModRM mode="#0" reg="0" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="rolb">
      <Operand type="m8" input="true" output="true"/>
      <Operand type="imm8"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0" X="#0"/>
        <Opcode byte="C0"/>
        <ModRM mode="#0" reg="0" rm="#0"/>
        <Immediate size="1" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="rolb">
      <Operand type="m8" input="true" output="true"/>
      <Operand type="cl" input="true" output="false"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0" X="#0"/>
        <Opcode byte="D2"/>
        <ModRM mode="#0" reg="0" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="rolw">
      <Operand type="m16" input="true" output="true"/>
      <Operand type="1"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" B="#0" X="#0"/>
        <Opcode byte="D1"/>
        <ModRM mode="#0" reg="0" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="rolw">
      <Operand type="m16" input="true" output="true"/>
      <Operand type="imm8"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" B="#0" X="#0"/>
        <Opcode byte="C1"/>
        <ModRM mode="#0" reg="0" rm="#0"/>
        <Immediate size="1" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="rolw">
      <Operand type="m16" input="true" output="true"/>
      <Operand type="cl" input="true" output="false"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" B="#0" X="#0"/>
        <Opcode byte="D3"/>
        <ModRM mode="#0" reg="0" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="roll">
      <Operand type="m32" input="true" output="true"/>
      <Operand type="1"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0" X="#0"/>
        <Opcode byte="D1"/>
        <ModRM mode="#0" reg="0" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="roll">
      <Operand type="m32" input="true" output="true"/>
      <Operand type="imm8"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0" X="#0"/>
        <Opcode byte="C1"/>
        <ModRM mode="#0" reg="0" rm="#0"/>
        <Immediate size="1" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="roll">
      <Operand type="m32" input="true" output="true"/>
      <Operand type="cl" input="true" output="false"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0" X="#0"/>
        <Opcode byte="D3"/>
        <ModRM mode="#0" reg="0" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="rolq">
      <Operand type="m64" input="true" output="true"/>
      <Operand type="1"/>
      <Encoding>
        <REX mandatory="true" W="1" B="#0" X="#0"/>
        <Opcode byte="D1"/>
        <ModRM mode="#0" reg="0" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="rolq">
      <Operand type="m64" input="true" output="true"/>
      <Operand type="imm8"/>
      <Encoding>
        <REX mandatory="true" W="1" B="#0" X="#0"/>
        <Opcode byte="C1"/>
        <ModRM mode="#0" reg="0" rm="#0"/>
        <Immediate size="1" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="rolq">
      <Operand type="m64" input="true" output="true"/>
      <Operand type="cl" input="true" output="false"/>
      <Encoding>
        <REX mandatory="true" W="1" B="#0" X="#0"/>
        <Opcode byte="D3"/>
        <ModRM mode="#0" reg="0" rm="#0"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="ROR" summary="Rotate Right">
    <InstructionForm gas-name="rorb">
      <Operand type="r8" input="true" output="true"/>
      <Operand type="1"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="D0"/>
        <ModRM mode="11" reg="1" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="rorb">
      <Operand type="r8" input="true" output="true"/>
      <Operand type="imm8"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="C0"/>
        <ModRM mode="11" reg="1" rm="#0"/>
        <Immediate size="1" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="rorb">
      <Operand type="r8" input="true" output="true"/>
      <Operand type="cl" input="true" output="false"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="D2"/>
        <ModRM mode="11" reg="1" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="rorw">
      <Operand type="r16" input="true" output="true"/>
      <Operand type="1"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="D1"/>
        <ModRM mode="11" reg="1" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="rorw">
      <Operand type="r16" input="true" output="true"/>
      <Operand type="imm8"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="C1"/>
        <ModRM mode="11" reg="1" rm="#0"/>
        <Immediate size="1" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="rorw">
      <Operand type="r16" input="true" output="true"/>
      <Operand type="cl" input="true" output="false"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="D3"/>
        <ModRM mode="11" reg="1" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="rorl">
      <Operand type="r32" input="true" output="true"/>
      <Operand type="1"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="D1"/>
        <ModRM mode="11" reg="1" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="rorl">
      <Operand type="r32" input="true" output="true"/>
      <Operand type="imm8"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="C1"/>
        <ModRM mode="11" reg="1" rm="#0"/>
        <Immediate size="1" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="rorl">
      <Operand type="r32" input="true" output="true"/>
      <Operand type="cl" input="true" output="false"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="D3"/>
        <ModRM mode="11" reg="1" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="rorq">
      <Operand type="r64" input="true" output="true"/>
      <Operand type="1"/>
      <Encoding>
        <REX mandatory="true" W="1" B="#0"/>
        <Opcode byte="D1"/>
        <ModRM mode="11" reg="1" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="rorq">
      <Operand type="r64" input="true" output="true"/>
      <Operand type="imm8"/>
      <Encoding>
        <REX mandatory="true" W="1" B="#0"/>
        <Opcode byte="C1"/>
        <ModRM mode="11" reg="1" rm="#0"/>
        <Immediate size="1" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="rorq">
      <Operand type="r64" input="true" output="true"/>
      <Operand type="cl" input="true" output="false"/>
      <Encoding>
        <REX mandatory="true" W="1" B="#0"/>
        <Opcode byte="D3"/>
        <ModRM mode="11" reg="1" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="rorb">
      <Operand type="m8" input="true" output="true"/>
      <Operand type="1"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0" X="#0"/>
        <Opcode byte="D0"/>
        <ModRM mode="#0" reg="1" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="rorb">
      <Operand type="m8" input="true" output="true"/>
      <Operand type="imm8"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0" X="#0"/>
        <Opcode byte="C0"/>
        <ModRM mode="#0" reg="1" rm="#0"/>
        <Immediate size="1" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="rorb">
      <Operand type="m8" input="true" output="true"/>
      <Operand type="cl" input="true" output="false"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0" X="#0"/>
        <Opcode byte="D2"/>
        <ModRM mode="#0" reg="1" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="rorw">
      <Operand type="m16" input="true" output="true"/>
      <Operand type="1"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" B="#0" X="#0"/>
        <Opcode byte="D1"/>
        <ModRM mode="#0" reg="1" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="rorw">
      <Operand type="m16" input="true" output="true"/>
      <Operand type="imm8"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" B="#0" X="#0"/>
        <Opcode byte="C1"/>
        <ModRM mode="#0" reg="1" rm="#0"/>
        <Immediate size="1" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="rorw">
      <Operand type="m16" input="true" output="true"/>
      <Operand type="cl" input="true" output="false"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" B="#0" X="#0"/>
        <Opcode byte="D3"/>
        <ModRM mode="#0" reg="1" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="rorl">
      <Operand type="m32" input="true" output="true"/>
      <Operand type="1"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0" X="#0"/>
        <Opcode byte="D1"/>
        <ModRM mode="#0" reg="1" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="rorl">
      <Operand type="m32" input="true" output="true"/>
      <Operand type="imm8"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0" X="#0"/>
        <Opcode byte="C1"/>
        <ModRM mode="#0" reg="1" rm="#0"/>
        <Immediate size="1" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="rorl">
      <Operand type="m32" input="true" output="true"/>
      <Operand type="cl" input="true" output="false"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0" X="#0"/>
        <Opcode byte="D3"/>
        <ModRM mode="#0" reg="1" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="rorq">
      <Operand type="m64" input="true" output="true"/>
      <Operand type="1"/>
      <Encoding>
        <REX mandatory="true" W="1" B="#0" X="#0"/>
        <Opcode byte="D1"/>
        <ModRM mode="#0" reg="1" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="rorq">
      <Operand type="m64" input="true" output="true"/>
      <Operand type="imm8"/>
      <Encoding>
        <REX mandatory="true" W="1" B="#0" X="#0"/>
        <Opcode byte="C1"/>
        <ModRM mode="#0" reg="1" rm="#0"/>
        <Immediate size="1" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="rorq">
      <Operand type="m64" input="true" output="true"/>
      <Operand type="cl" input="true" output="false"/>
      <Encoding>
        <REX mandatory="true" W="1" B="#0" X="#0"/>
        <Opcode byte="D3"/>
        <ModRM mode="#0" reg="1" rm="#0"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="SAL" summary="Arithmetic Shift Left">
    <InstructionForm gas-name="salb">
      <Operand type="r8" input="true" output="true"/>
      <Operand type="1"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="D0"/>
        <ModRM mode="11" reg="4" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="salb">
      <Operand type="r8" input="true" output="true"/>
      <Operand type="imm8"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="C0"/>
        <ModRM mode="11" reg="4" rm="#0"/>
        <Immediate size="1" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="salb">
      <Operand type="r8" input="true" output="true"/>
      <Operand type="cl" input="true" output="false"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="D2"/>
        <ModRM mode="11" reg="4" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="salw">
      <Operand type="r16" input="true" output="true"/>
      <Operand type="1"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="D1"/>
        <ModRM mode="11" reg="4" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="salw">
      <Operand type="r16" input="true" output="true"/>
      <Operand type="imm8"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="C1"/>
        <ModRM mode="11" reg="4" rm="#0"/>
        <Immediate size="1" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="salw">
      <Operand type="r16" input="true" output="true"/>
      <Operand type="cl" input="true" output="false"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="D3"/>
        <ModRM mode="11" reg="4" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="sall">
      <Operand type="r32" input="true" output="true"/>
      <Operand type="1"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="D1"/>
        <ModRM mode="11" reg="4" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="sall">
      <Operand type="r32" input="true" output="true"/>
      <Operand type="imm8"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="C1"/>
        <ModRM mode="11" reg="4" rm="#0"/>
        <Immediate size="1" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="sall">
      <Operand type="r32" input="true" output="true"/>
      <Operand type="cl" input="true" output="false"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="D3"/>
        <ModRM mode="11" reg="4" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="salq">
      <Operand type="r64" input="true" output="true"/>
      <Operand type="1"/>
      <Encoding>
        <REX mandatory="true" W="1" B="#0"/>
        <Opcode byte="D1"/>
        <ModRM mode="11" reg="4" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="salq">
      <Operand type="r64" input="true" output="true"/>
      <Operand type="imm8"/>
      <Encoding>
        <REX mandatory="true" W="1" B="#0"/>
        <Opcode byte="C1"/>
        <ModRM mode="11" reg="4" rm="#0"/>
        <Immediate size="1" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="salq">
      <Operand type="r64" input="true" output="true"/>
      <Operand type="cl" input="true" output="false"/>
      <Encoding>
        <REX mandatory="true" W="1" B="#0"/>
        <Opcode byte="D3"/>
        <ModRM mode="11" reg="4" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="salb">
      <Operand type="m8" input="true" output="true"/>
      <Operand type="1"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0" X="#0"/>
        <Opcode byte="D0"/>
        <ModRM mode="#0" reg="4" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="salb">
      <Operand type="m8" input="true" output="true"/>
      <Operand type="imm8"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0" X="#0"/>
        <Opcode byte="C0"/>
        <ModRM mode="#0" reg="4" rm="#0"/>
        <Immediate size="1" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="salb">
      <Operand type="m8" input="true" output="true"/>
      <Operand type="cl" input="true" output="false"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0" X="#0"/>
        <Opcode byte="D2"/>
        <ModRM mode="#0" reg="4" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="salw">
      <Operand type="m16" input="true" output="true"/>
      <Operand type="1"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" B="#0" X="#0"/>
        <Opcode byte="D1"/>
        <ModRM mode="#0" reg="4" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="salw">
      <Operand type="m16" input="true" output="true"/>
      <Operand type="imm8"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" B="#0" X="#0"/>
        <Opcode byte="C1"/>
        <ModRM mode="#0" reg="4" rm="#0"/>
        <Immediate size="1" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="salw">
      <Operand type="m16" input="true" output="true"/>
      <Operand type="cl" input="true" output="false"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" B="#0" X="#0"/>
        <Opcode byte="D3"/>
        <ModRM mode="#0" reg="4" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="sall">
      <Operand type="m32" input="true" output="true"/>
      <Operand type="1"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0" X="#0"/>
        <Opcode byte="D1"/>
        <ModRM mode="#0" reg="4" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="sall">
      <Operand type="m32" input="true" output="true"/>
      <Operand type="imm8"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0" X="#0"/>
        <Opcode byte="C1"/>
        <ModRM mode="#0" reg="4" rm="#0"/>
        <Immediate size="1" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="sall">
      <Operand type="m32" input="true" output="true"/>
      <Operand type="cl" input="true" output="false"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0" X="#0"/>
        <Opcode byte="D3"/>
        <ModRM mode="#0" reg="4" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="salq">
      <Operand type="m64" input="true" output="true"/>
      <Operand type="1"/>
      <Encoding>
        <REX mandatory="true" W="1" B="#0" X="#0"/>
        <Opcode byte="D1"/>
        <ModRM mode="#0" reg="4" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="salq">
      <Operand type="m64" input="true" output="true"/>
      <Operand type="imm8"/>
      <Encoding>
        <REX mandatory="true" W="1" B="#0" X="#0"/>
        <Opcode byte="C1"/>
        <ModRM mode="#0" reg="4" rm="#0"/>
        <Immediate size="1" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="salq">
      <Operand type="m64" input="true" output="true"/>
      <Operand type="cl" input="true" output="false"/>
      <Encoding>
        <REX mandatory="true" W="1" B="#0" X="#0"/>
        <Opcode byte="D3"/>
        <ModRM mode="#0" reg="4" rm="#0"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="SAR" summary="Arithmetic Shift Right">
    <InstructionForm gas-name="sarb">
      <Operand type="r8" input="true" output="true"/>
      <Operand type="1"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="D0"/>
        <ModRM mode="11" reg="7" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="sarb">
      <Operand type="r8" input="true" output="true"/>
      <Operand type="imm8"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="C0"/>
        <ModRM mode="11" reg="7" rm="#0"/>
        <Immediate size="1" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="sarb">
      <Operand type="r8" input="true" output="true"/>
      <Operand type="cl" input="true" output="false"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="D2"/>
        <ModRM mode="11" reg="7" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="sarw">
      <Operand type="r16" input="true" output="true"/>
      <Operand type="1"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="D1"/>
        <ModRM mode="11" reg="7" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="sarw">
      <Operand type="r16" input="true" output="true"/>
      <Operand type="imm8"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="C1"/>
        <ModRM mode="11" reg="7" rm="#0"/>
        <Immediate size="1" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="sarw">
      <Operand type="r16" input="true" output="true"/>
      <Operand type="cl" input="true" output="false"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="D3"/>
        <ModRM mode="11" reg="7" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="sarl">
      <Operand type="r32" input="true" output="true"/>
      <Operand type="1"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="D1"/>
        <ModRM mode="11" reg="7" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="sarl">
      <Operand type="r32" input="true" output="true"/>
      <Operand type="imm8"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="C1"/>
        <ModRM mode="11" reg="7" rm="#0"/>
        <Immediate size="1" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="sarl">
      <Operand type="r32" input="true" output="true"/>
      <Operand type="cl" input="true" output="false"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="D3"/>
        <ModRM mode="11" reg="7" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="sarq">
      <Operand type="r64" input="true" output="true"/>
      <Operand type="1"/>
      <Encoding>
        <REX mandatory="true" W="1" B="#0"/>
        <Opcode byte="D1"/>
        <ModRM mode="11" reg="7" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="sarq">
      <Operand type="r64" input="true" output="true"/>
      <Operand type="imm8"/>
      <Encoding>
        <REX mandatory="true" W="1" B="#0"/>
        <Opcode byte="C1"/>
        <ModRM mode="11" reg="7" rm="#0"/>
        <Immediate size="1" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="sarq">
      <Operand type="r64" input="true" output="true"/>
      <Operand type="cl" input="true" output="false"/>
      <Encoding>
        <REX mandatory="true" W="1" B="#0"/>
        <Opcode byte="D3"/>
        <ModRM mode="11" reg="7" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="sarb">
      <Operand type="m8" input="true" output="true"/>
      <Operand type="1"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0" X="#0"/>
        <Opcode byte="D0"/>
        <ModRM mode="#0" reg="7" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="sarb">
      <Operand type="m8" input="true" output="true"/>
      <Operand type="imm8"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0" X="#0"/>
        <Opcode byte="C0"/>
        <ModRM mode="#0" reg="7" rm="#0"/>
        <Immediate size="1" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="sarb">
      <Operand type="m8" input="true" output="true"/>
      <Operand type="cl" input="true" output="false"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0" X="#0"/>
        <Opcode byte="D2"/>
        <ModRM mode="#0" reg="7" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="sarw">
      <Operand type="m16" input="true" output="true"/>
      <Operand type="1"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" B="#0" X="#0"/>
        <Opcode byte="D1"/>
        <ModRM mode="#0" reg="7" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="sarw">
      <Operand type="m16" input="true" output="true"/>
      <Operand type="imm8"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" B="#0" X="#0"/>
        <Opcode byte="C1"/>
        <ModRM mode="#0" reg="7" rm="#0"/>
        <Immediate size="1" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="sarw">
      <Operand type="m16" input="true" output="true"/>
      <Operand type="cl" input="true" output="false"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" B="#0" X="#0"/>
        <Opcode byte="D3"/>
        <ModRM mode="#0" reg="7" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="sarl">
      <Operand type="m32" input="true" output="true"/>
      <Operand type="1"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0" X="#0"/>
        <Opcode byte="D1"/>
        <ModRM mode="#0" reg="7" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="sarl">
      <Operand type="m32" input="true" output="true"/>
      <Operand type="imm8"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0" X="#0"/>
        <Opcode byte="C1"/>
        <ModRM mode="#0" reg="7" rm="#0"/>
        <Immediate size="1" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="sarl">
      <Operand type="m32" input="true" output="true"/>
      <Operand type="cl" input="true" output="false"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0" X="#0"/>
        <Opcode byte="D3"/>
        <ModRM mode="#0" reg="7" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="sarq">
      <Operand type="m64" input="true" output="true"/>
      <Operand type="1"/>
      <Encoding>
        <REX mandatory="true" W="1" B="#0" X="#0"/>
        <Opcode byte="D1"/>
        <ModRM mode="#0" reg="7" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="sarq">
      <Operand type="m64" input="true" output="true"/>
      <Operand type="imm8"/>
      <Encoding>
        <REX mandatory="true" W="1" B="#0" X="#0"/>
        <Opcode byte="C1"/>
        <ModRM mode="#0" reg="7" rm="#0"/>
        <Immediate size="1" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="sarq">
      <Operand type="m64" input="true" output="true"/>
      <Operand type="cl" input="true" output="false"/>
      <Encoding>
        <REX mandatory="true" W="1" B="#0" X="#0"/>
        <Opcode byte="D3"/>
        <ModRM mode="#0" reg="7" rm="#0"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="SBB" summary="Subtract with Borrow">
    <InstructionForm gas-name="sbbb">
      <Operand type="al" input="true" output="true"/>
      <Operand type="imm8"/>
      <Encoding>
        <Opcode byte="1C"/>
        <Immediate size="1" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="sbbb">
      <Operand type="r8" input="true" output="true"/>
      <Operand type="imm8"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="80"/>
        <ModRM mode="11" reg="3" rm="#0"/>
        <Immediate size="1" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="sbbb" cancelling-inputs="true">
      <Operand type="r8" input="true" output="true"/>
      <Operand type="r8" input="true" output="false"/>
      <Encoding>
        <REX mandatory="false" W="0" R="#1" B="#0"/>
        <Opcode byte="18"/>
        <ModRM mode="11" reg="#1" rm="#0"/>
      </Encoding>
      <Encoding>
        <REX mandatory="false" W="0" R="#0" B="#1"/>
        <Opcode byte="1A"/>
        <ModRM mode="11" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="sbbb">
      <Operand type="r8" input="true" output="true"/>
      <Operand type="m8" input="true" output="false"/>
      <Encoding>
        <REX mandatory="false" W="0" R="#0" B="#1" X="#1"/>
        <Opcode byte="1A"/>
        <ModRM mode="#1" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="sbbw">
      <Operand type="ax" input="true" output="true"/>
      <Operand type="imm16"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <Opcode byte="1D"/>
        <Immediate size="2" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="sbbw">
      <Operand type="r16" input="true" output="true"/>
      <Operand type="imm8" extended-size="2"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="83"/>
        <ModRM mode="11" reg="3" rm="#0"/>
        <Immediate size="1" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="sbbw">
      <Operand type="r16" input="true" output="true"/>
      <Operand type="imm16"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="81"/>
        <ModRM mode="11" reg="3" rm="#0"/>
        <Immediate size="2" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="sbbw" cancelling-inputs="true">
      <Operand type="r16" input="true" output="true"/>
      <Operand type="r16" input="true" output="false"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" R="#1" B="#0"/>
        <Opcode byte="19"/>
        <ModRM mode="11" reg="#1" rm="#0"/>
      </Encoding>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" R="#0" B="#1"/>
        <Opcode byte="1B"/>
        <ModRM mode="11" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="sbbw">
      <Operand type="r16" input="true" output="true"/>
      <Operand type="m16" input="true" output="false"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" R="#0" B="#1" X="#1"/>
        <Opcode byte="1B"/>
        <ModRM mode="#1" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="sbbl">
      <Operand type="eax" input="true" output="true"/>
      <Operand type="imm32"/>
      <Encoding>
        <Opcode byte="1D"/>
        <Immediate size="4" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="sbbl">
      <Operand type="r32" input="true" output="true"/>
      <Operand type="imm8" extended-size="4"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="83"/>
        <ModRM mode="11" reg="3" rm="#0"/>
        <Immediate size="1" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="sbbl">
      <Operand type="r32" input="true" output="true"/>
      <Operand type="imm32"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="81"/>
        <ModRM mode="11" reg="3" rm="#0"/>
        <Immediate size="4" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="sbbl" cancelling-inputs="true">
      <Operand type="r32" input="true" output="true"/>
      <Operand type="r32" input="true" output="false"/>
      <Encoding>
        <REX mandatory="false" W="0" R="#1" B="#0"/>
        <Opcode byte="19"/>
        <ModRM mode="11" reg="#1" rm="#0"/>
      </Encoding>
      <Encoding>
        <REX mandatory="false" W="0" R="#0" B="#1"/>
        <Opcode byte="1B"/>
        <ModRM mode="11" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="sbbl">
      <Operand type="r32" input="true" output="true"/>
      <Operand type="m32" input="true" output="false"/>
      <Encoding>
        <REX mandatory="false" W="0" R="#0" B="#1" X="#1"/>
        <Opcode byte="1B"/>
        <ModRM mode="#1" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="sbbq">
      <Operand type="rax" input="true" output="true"/>
      <Operand type="imm32"/>
      <Encoding>
        <REX mandatory="true" W="1"/>
        <Opcode byte="1D"/>
        <Immediate size="4" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="sbbq">
      <Operand type="r64" input="true" output="true"/>
      <Operand type="imm8" extended-size="8"/>
      <Encoding>
        <REX mandatory="true" W="1" B="#0"/>
        <Opcode byte="83"/>
        <ModRM mode="11" reg="3" rm="#0"/>
        <Immediate size="1" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="sbbq">
      <Operand type="r64" input="true" output="true"/>
      <Operand type="imm32" extended-size="8"/>
      <Encoding>
        <REX mandatory="true" W="1" B="#0"/>
        <Opcode byte="81"/>
        <ModRM mode="11" reg="3" rm="#0"/>
        <Immediate size="4" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="sbbq" cancelling-inputs="true">
      <Operand type="r64" input="true" output="true"/>
      <Operand type="r64" input="true" output="false"/>
      <Encoding>
        <REX mandatory="true" W="1" R="#1" B="#0"/>
        <Opcode byte="19"/>
        <ModRM mode="11" reg="#1" rm="#0"/>
      </Encoding>
      <Encoding>
        <REX mandatory="true" W="1" R="#0" B="#1"/>
        <Opcode byte="1B"/>
        <ModRM mode="11" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="sbbq">
      <Operand type="r64" input="true" output="true"/>
      <Operand type="m64" input="true" output="false"/>
      <Encoding>
        <REX mandatory="true" W="1" R="#0" B="#1" X="#1"/>
        <Opcode byte="1B"/>
        <ModRM mode="#1" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="sbbb">
      <Operand type="m8" input="true" output="true"/>
      <Operand type="imm8"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0" X="#0"/>
        <Opcode byte="80"/>
        <ModRM mode="#0" reg="3" rm="#0"/>
        <Immediate size="1" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="sbbb">
      <Operand type="m8" input="true" output="true"/>
      <Operand type="r8" input="true" output="false"/>
      <Encoding>
        <REX mandatory="false" W="0" R="#1" B="#0" X="#0"/>
        <Opcode byte="18"/>
        <ModRM mode="#0" reg="#1" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="sbbw">
      <Operand type="m16" input="true" output="true"/>
      <Operand type="imm8" extended-size="2"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" B="#0" X="#0"/>
        <Opcode byte="83"/>
        <ModRM mode="#0" reg="3" rm="#0"/>
        <Immediate size="1" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="sbbw">
      <Operand type="m16" input="true" output="true"/>
      <Operand type="imm16"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" B="#0" X="#0"/>
        <Opcode byte="81"/>
        <ModRM mode="#0" reg="3" rm="#0"/>
        <Immediate size="2" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="sbbw">
      <Operand type="m16" input="true" output="true"/>
      <Operand type="r16" input="true" output="false"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" R="#1" B="#0" X="#0"/>
        <Opcode byte="19"/>
        <ModRM mode="#0" reg="#1" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="sbbl">
      <Operand type="m32" input="true" output="true"/>
      <Operand type="imm8" extended-size="4"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0" X="#0"/>
        <Opcode byte="83"/>
        <ModRM mode="#0" reg="3" rm="#0"/>
        <Immediate size="1" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="sbbl">
      <Operand type="m32" input="true" output="true"/>
      <Operand type="imm32"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0" X="#0"/>
        <Opcode byte="81"/>
        <ModRM mode="#0" reg="3" rm="#0"/>
        <Immediate size="4" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="sbbl">
      <Operand type="m32" input="true" output="true"/>
      <Operand type="r32" input="true" output="false"/>
      <Encoding>
        <REX mandatory="false" W="0" R="#1" B="#0" X="#0"/>
        <Opcode byte="19"/>
        <ModRM mode="#0" reg="#1" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="sbbq">
      <Operand type="m64" input="true" output="true"/>
      <Operand type="imm8" extended-size="8"/>
      <Encoding>
        <REX mandatory="true" W="1" B="#0" X="#0"/>
        <Opcode byte="83"/>
        <ModRM mode="#0" reg="3" rm="#0"/>
        <Immediate size="1" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="sbbq">
      <Operand type="m64" input="true" output="true"/>
      <Operand type="imm32" extended-size="8"/>
      <Encoding>
        <REX mandatory="true" W="1" B="#0" X="#0"/>
        <Opcode byte="81"/>
        <ModRM mode="#0" reg="3" rm="#0"/>
        <Immediate size="4" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="sbbq">
      <Operand type="m64" input="true" output="true"/>
      <Operand type="r64" input="true" output="false"/>
      <Encoding>
        <REX mandatory="true" W="1" R="#1" B="#0" X="#0"/>
        <Opcode byte="19"/>
        <ModRM mode="#0" reg="#1" rm="#0"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="SETA" summary="Set byte if above (CF == 0 and ZF == 0)">
    <InstructionForm gas-name="seta">
      <Operand type="r8" input="false" output="true"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="0F"/>
        <Opcode byte="97"/>
        <ModRM mode="11" reg="0" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="seta">
      <Operand type="m8" input="false" output="true"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0" X="#0"/>
        <Opcode byte="0F"/>
        <Opcode byte="97"/>
        <ModRM mode="#0" reg="0" rm="#0"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="SETAE" summary="Set byte if above or equal (CF == 0)">
    <InstructionForm gas-name="setae">
      <Operand type="r8" input="false" output="true"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="0F"/>
        <Opcode byte="93"/>
        <ModRM mode="11" reg="0" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="setae">
      <Operand type="m8" input="false" output="true"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0" X="#0"/>
        <Opcode byte="0F"/>
        <Opcode byte="93"/>
        <ModRM mode="#0" reg="0" rm="#0"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="SETB" summary="Set byte if below (CF == 1)">
    <InstructionForm gas-name="setb">
      <Operand type="r8" input="false" output="true"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="0F"/>
        <Opcode byte="92"/>
        <ModRM mode="11" reg="0" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="setb">
      <Operand type="m8" input="false" output="true"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0" X="#0"/>
        <Opcode byte="0F"/>
        <Opcode byte="92"/>
        <ModRM mode="#0" reg="0" rm="#0"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="SETBE" summary="Set byte if below or equal (CF == 1 or ZF == 1)">
    <InstructionForm gas-name="setbe">
      <Operand type="r8" input="false" output="true"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="0F"/>
        <Opcode byte="96"/>
        <ModRM mode="11" reg="0" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="setbe">
      <Operand type="m8" input="false" output="true"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0" X="#0"/>
        <Opcode byte="0F"/>
        <Opcode byte="96"/>
        <ModRM mode="#0" reg="0" rm="#0"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="SETC" summary="Set byte if carry (CF == 1)">
    <InstructionForm gas-name="setc">
      <Operand type="r8" input="false" output="true"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="0F"/>
        <Opcode byte="92"/>
        <ModRM mode="11" reg="0" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="setc">
      <Operand type="m8" input="false" output="true"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0" X="#0"/>
        <Opcode byte="0F"/>
        <Opcode byte="92"/>
        <ModRM mode="#0" reg="0" rm="#0"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="SETE" summary="Set byte if equal (ZF == 1)">
    <InstructionForm gas-name="sete">
      <Operand type="r8" input="false" output="true"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="0F"/>
        <Opcode byte="94"/>
        <ModRM mode="11" reg="0" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="sete">
      <Operand type="m8" input="false" output="true"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0" X="#0"/>
        <Opcode byte="0F"/>
        <Opcode byte="94"/>
        <ModRM mode="#0" reg="0" rm="#0"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="SETG" summary="Set byte if greater (ZF == 0 and SF == OF)">
    <InstructionForm gas-name="setg">
      <Operand type="r8" input="false" output="true"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="0F"/>
        <Opcode byte="9F"/>
        <ModRM mode="11" reg="0" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="setg">
      <Operand type="m8" input="false" output="true"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0" X="#0"/>
        <Opcode byte="0F"/>
        <Opcode byte="9F"/>
        <ModRM mode="#0" reg="0" rm="#0"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="SETGE" summary="Set byte if greater or equal (SF == OF)">
    <InstructionForm gas-name="setge">
      <Operand type="r8" input="false" output="true"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="0F"/>
        <Opcode byte="9D"/>
        <ModRM mode="11" reg="0" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="setge">
      <Operand type="m8" input="false" output="true"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0" X="#0"/>
        <Opcode byte="0F"/>
        <Opcode byte="9D"/>
        <ModRM mode="#0" reg="0" rm="#0"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="SETL" summary="Set byte if less (SF != OF)">
    <InstructionForm gas-name="setl">
      <Operand type="r8" input="false" output="true"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="0F"/>
        <Opcode byte="9C"/>
        <ModRM mode="11" reg="0" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="setl">
      <Operand type="m8" input="false" output="true"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0" X="#0"/>
        <Opcode byte="0F"/>
        <Opcode byte="9C"/>
        <ModRM mode="#0" reg="0" rm="#0"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="SETLE" summary="Set byte if less or equal (ZF == 1 or SF != OF)">
    <InstructionForm gas-name="setle">
      <Operand type="r8" input="false" output="true"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="0F"/>
        <Opcode byte="9E"/>
        <ModRM mode="11" reg="0" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="setle">
      <Operand type="m8" input="false" output="true"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0" X="#0"/>
        <Opcode byte="0F"/>
        <Opcode byte="9E"/>
        <ModRM mode="#0" reg="0" rm="#0"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="SETNA" summary="Set byte if not above (CF == 1 or ZF == 1)">
    <InstructionForm gas-name="setna">
      <Operand type="r8" input="false" output="true"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="0F"/>
        <Opcode byte="96"/>
        <ModRM mode="11" reg="0" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="setna">
      <Operand type="m8" input="false" output="true"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0" X="#0"/>
        <Opcode byte="0F"/>
        <Opcode byte="96"/>
        <ModRM mode="#0" reg="0" rm="#0"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="SETNAE" summary="Set byte if not above or equal (CF == 1)">
    <InstructionForm gas-name="setnae">
      <Operand type="r8" input="false" output="true"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="0F"/>
        <Opcode byte="92"/>
        <ModRM mode="11" reg="0" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="setnae">
      <Operand type="m8" input="false" output="true"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0" X="#0"/>
        <Opcode byte="0F"/>
        <Opcode byte="92"/>
        <ModRM mode="#0" reg="0" rm="#0"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="SETNB" summary="Set byte if not below (CF == 0)">
    <InstructionForm gas-name="setnb">
      <Operand type="r8" input="false" output="true"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="0F"/>
        <Opcode byte="93"/>
        <ModRM mode="11" reg="0" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="setnb">
      <Operand type="m8" input="false" output="true"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0" X="#0"/>
        <Opcode byte="0F"/>
        <Opcode byte="93"/>
        <ModRM mode="#0" reg="0" rm="#0"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="SETNBE" summary="Set byte if not below or equal (CF == 0 and ZF == 0)">
    <InstructionForm gas-name="setnbe">
      <Operand type="r8" input="false" output="true"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="0F"/>
        <Opcode byte="97"/>
        <ModRM mode="11" reg="0" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="setnbe">
      <Operand type="m8" input="false" output="true"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0" X="#0"/>
        <Opcode byte="0F"/>
        <Opcode byte="97"/>
        <ModRM mode="#0" reg="0" rm="#0"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="SETNC" summary="Set byte if not carry (CF == 0)">
    <InstructionForm gas-name="setnc">
      <Operand type="r8" input="false" output="true"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="0F"/>
        <Opcode byte="93"/>
        <ModRM mode="11" reg="0" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="setnc">
      <Operand type="m8" input="false" output="true"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0" X="#0"/>
        <Opcode byte="0F"/>
        <Opcode byte="93"/>
        <ModRM mode="#0" reg="0" rm="#0"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="SETNE" summary="Set byte if not equal (ZF == 0)">
    <InstructionForm gas-name="setne">
      <Operand type="r8" input="false" output="true"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="0F"/>
        <Opcode byte="95"/>
        <ModRM mode="11" reg="0" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="setne">
      <Operand type="m8" input="false" output="true"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0" X="#0"/>
        <Opcode byte="0F"/>
        <Opcode byte="95"/>
        <ModRM mode="#0" reg="0" rm="#0"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="SETNG" summary="Set byte if not greater (ZF == 1 or SF != OF)">
    <InstructionForm gas-name="setng">
      <Operand type="r8" input="false" output="true"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="0F"/>
        <Opcode byte="9E"/>
        <ModRM mode="11" reg="0" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="setng">
      <Operand type="m8" input="false" output="true"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0" X="#0"/>
        <Opcode byte="0F"/>
        <Opcode byte="9E"/>
        <ModRM mode="#0" reg="0" rm="#0"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="SETNGE" summary="Set byte if not greater or equal (SF != OF)">
    <InstructionForm gas-name="setnge">
      <Operand type="r8" input="false" output="true"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="0F"/>
        <Opcode byte="9C"/>
        <ModRM mode="11" reg="0" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="setnge">
      <Operand type="m8" input="false" output="true"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0" X="#0"/>
        <Opcode byte="0F"/>
        <Opcode byte="9C"/>
        <ModRM mode="#0" reg="0" rm="#0"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="SETNL" summary="Set byte if not less (SF == OF)">
    <InstructionForm gas-name="setnl">
      <Operand type="r8" input="false" output="true"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="0F"/>
        <Opcode byte="9D"/>
        <ModRM mode="11" reg="0" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="setnl">
      <Operand type="m8" input="false" output="true"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0" X="#0"/>
        <Opcode byte="0F"/>
        <Opcode byte="9D"/>
        <ModRM mode="#0" reg="0" rm="#0"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="SETNLE" summary="Set byte if not less or equal (ZF == 0 and SF == OF)">
    <InstructionForm gas-name="setnle">
      <Operand type="r8" input="false" output="true"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="0F"/>
        <Opcode byte="9F"/>
        <ModRM mode="11" reg="0" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="setnle">
      <Operand type="m8" input="false" output="true"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0" X="#0"/>
        <Opcode byte="0F"/>
        <Opcode byte="9F"/>
        <ModRM mode="#0" reg="0" rm="#0"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="SETNO" summary="Set byte if not overflow (OF == 0)">
    <InstructionForm gas-name="setno">
      <Operand type="r8" input="false" output="true"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="0F"/>
        <Opcode byte="91"/>
        <ModRM mode="11" reg="0" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="setno">
      <Operand type="m8" input="false" output="true"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0" X="#0"/>
        <Opcode byte="0F"/>
        <Opcode byte="91"/>
        <ModRM mode="#0" reg="0" rm="#0"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="SETNP" summary="Set byte if not parity (PF == 0)">
    <InstructionForm gas-name="setnp">
      <Operand type="r8" input="false" output="true"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="0F"/>
        <Opcode byte="9B"/>
        <ModRM mode="11" reg="0" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="setnp">
      <Operand type="m8" input="false" output="true"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0" X="#0"/>
        <Opcode byte="0F"/>
        <Opcode byte="9B"/>
        <ModRM mode="#0" reg="0" rm="#0"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="SETNS" summary="Set byte if not sign (SF == 0)">
    <InstructionForm gas-name="setns">
      <Operand type="r8" input="false" output="true"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="0F"/>
        <Opcode byte="99"/>
        <ModRM mode="11" reg="0" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="setns">
      <Operand type="m8" input="false" output="true"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0" X="#0"/>
        <Opcode byte="0F"/>
        <Opcode byte="99"/>
        <ModRM mode="#0" reg="0" rm="#0"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="SETNZ" summary="Set byte if not zero (ZF == 0)">
    <InstructionForm gas-name="setnz">
      <Operand type="r8" input="false" output="true"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="0F"/>
        <Opcode byte="95"/>
        <ModRM mode="11" reg="0" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="setnz">
      <Operand type="m8" input="false" output="true"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0" X="#0"/>
        <Opcode byte="0F"/>
        <Opcode byte="95"/>
        <ModRM mode="#0" reg="0" rm="#0"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="SETO" summary="Set byte if overflow (OF == 1)">
    <InstructionForm gas-name="seto">
      <Operand type="r8" input="false" output="true"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="0F"/>
        <Opcode byte="90"/>
        <ModRM mode="11" reg="0" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="seto">
      <Operand type="m8" input="false" output="true"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0" X="#0"/>
        <Opcode byte="0F"/>
        <Opcode byte="90"/>
        <ModRM mode="#0" reg="0" rm="#0"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="SETP" summary="Set byte if parity (PF == 1)">
    <InstructionForm gas-name="setp">
      <Operand type="r8" input="false" output="true"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="0F"/>
        <Opcode byte="9A"/>
        <ModRM mode="11" reg="0" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="setp">
      <Operand type="m8" input="false" output="true"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0" X="#0"/>
        <Opcode byte="0F"/>
        <Opcode byte="9A"/>
        <ModRM mode="#0" reg="0" rm="#0"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="SETPE" summary="Set byte if parity even (PF == 1)">
    <InstructionForm gas-name="setpe">
      <Operand type="r8" input="false" output="true"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="0F"/>
        <Opcode byte="9A"/>
        <ModRM mode="11" reg="0" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="setpe">
      <Operand type="m8" input="false" output="true"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0" X="#0"/>
        <Opcode byte="0F"/>
        <Opcode byte="9A"/>
        <ModRM mode="#0" reg="0" rm="#0"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="SETPO" summary="Set byte if parity odd (PF == 0)">
    <InstructionForm gas-name="setpo">
      <Operand type="r8" input="false" output="true"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="0F"/>
        <Opcode byte="9B"/>
        <ModRM mode="11" reg="0" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="setpo">
      <Operand type="m8" input="false" output="true"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0" X="#0"/>
        <Opcode byte="0F"/>
        <Opcode byte="9B"/>
        <ModRM mode="#0" reg="0" rm="#0"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="SETS" summary="Set byte if sign (SF == 1)">
    <InstructionForm gas-name="sets">
      <Operand type="r8" input="false" output="true"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="0F"/>
        <Opcode byte="98"/>
        <ModRM mode="11" reg="0" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="sets">
      <Operand type="m8" input="false" output="true"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0" X="#0"/>
        <Opcode byte="0F"/>
        <Opcode byte="98"/>
        <ModRM mode="#0" reg="0" rm="#0"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="SETZ" summary="Set byte if zero (ZF == 1)">
    <InstructionForm gas-name="setz">
      <Operand type="r8" input="false" output="true"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="0F"/>
        <Opcode byte="94"/>
        <ModRM mode="11" reg="0" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="setz">
      <Operand type="m8" input="false" output="true"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0" X="#0"/>
        <Opcode byte="0F"/>
        <Opcode byte="94"/>
        <ModRM mode="#0" reg="0" rm="#0"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="SHL" summary="Logical Shift Left">
    <InstructionForm gas-name="shlb">
      <Operand type="r8" input="true" output="true"/>
      <Operand type="1"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="D0"/>
        <ModRM mode="11" reg="4" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="shlb">
      <Operand type="r8" input="true" output="true"/>
      <Operand type="imm8"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="C0"/>
        <ModRM mode="11" reg="4" rm="#0"/>
        <Immediate size="1" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="shlb">
      <Operand type="r8" input="true" output="true"/>
      <Operand type="cl" input="true" output="false"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="D2"/>
        <ModRM mode="11" reg="4" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="shlw">
      <Operand type="r16" input="true" output="true"/>
      <Operand type="1"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="D1"/>
        <ModRM mode="11" reg="4" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="shlw">
      <Operand type="r16" input="true" output="true"/>
      <Operand type="imm8"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="C1"/>
        <ModRM mode="11" reg="4" rm="#0"/>
        <Immediate size="1" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="shlw">
      <Operand type="r16" input="true" output="true"/>
      <Operand type="cl" input="true" output="false"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="D3"/>
        <ModRM mode="11" reg="4" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="shll">
      <Operand type="r32" input="true" output="true"/>
      <Operand type="1"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="D1"/>
        <ModRM mode="11" reg="4" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="shll">
      <Operand type="r32" input="true" output="true"/>
      <Operand type="imm8"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="C1"/>
        <ModRM mode="11" reg="4" rm="#0"/>
        <Immediate size="1" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="shll">
      <Operand type="r32" input="true" output="true"/>
      <Operand type="cl" input="true" output="false"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="D3"/>
        <ModRM mode="11" reg="4" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="shlq">
      <Operand type="r64" input="true" output="true"/>
      <Operand type="1"/>
      <Encoding>
        <REX mandatory="true" W="1" B="#0"/>
        <Opcode byte="D1"/>
        <ModRM mode="11" reg="4" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="shlq">
      <Operand type="r64" input="true" output="true"/>
      <Operand type="imm8"/>
      <Encoding>
        <REX mandatory="true" W="1" B="#0"/>
        <Opcode byte="C1"/>
        <ModRM mode="11" reg="4" rm="#0"/>
        <Immediate size="1" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="shlq">
      <Operand type="r64" input="true" output="true"/>
      <Operand type="cl" input="true" output="false"/>
      <Encoding>
        <REX mandatory="true" W="1" B="#0"/>
        <Opcode byte="D3"/>
        <ModRM mode="11" reg="4" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="shlb">
      <Operand type="m8" input="true" output="true"/>
      <Operand type="1"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0" X="#0"/>
        <Opcode byte="D0"/>
        <ModRM mode="#0" reg="4" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="shlb">
      <Operand type="m8" input="true" output="true"/>
      <Operand type="imm8"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0" X="#0"/>
        <Opcode byte="C0"/>
        <ModRM mode="#0" reg="4" rm="#0"/>
        <Immediate size="1" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="shlb">
      <Operand type="m8" input="true" output="true"/>
      <Operand type="cl" input="true" output="false"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0" X="#0"/>
        <Opcode byte="D2"/>
        <ModRM mode="#0" reg="4" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="shlw">
      <Operand type="m16" input="true" output="true"/>
      <Operand type="1"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" B="#0" X="#0"/>
        <Opcode byte="D1"/>
        <ModRM mode="#0" reg="4" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="shlw">
      <Operand type="m16" input="true" output="true"/>
      <Operand type="imm8"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" B="#0" X="#0"/>
        <Opcode byte="C1"/>
        <ModRM mode="#0" reg="4" rm="#0"/>
        <Immediate size="1" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="shlw">
      <Operand type="m16" input="true" output="true"/>
      <Operand type="cl" input="true" output="false"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" B="#0" X="#0"/>
        <Opcode byte="D3"/>
        <ModRM mode="#0" reg="4" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="shll">
      <Operand type="m32" input="true" output="true"/>
      <Operand type="1"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0" X="#0"/>
        <Opcode byte="D1"/>
        <ModRM mode="#0" reg="4" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="shll">
      <Operand type="m32" input="true" output="true"/>
      <Operand type="imm8"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0" X="#0"/>
        <Opcode byte="C1"/>
        <ModRM mode="#0" reg="4" rm="#0"/>
        <Immediate size="1" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="shll">
      <Operand type="m32" input="true" output="true"/>
      <Operand type="cl" input="true" output="false"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0" X="#0"/>
        <Opcode byte="D3"/>
        <ModRM mode="#0" reg="4" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="shlq">
      <Operand type="m64" input="true" output="true"/>
      <Operand type="1"/>
      <Encoding>
        <REX mandatory="true" W="1" B="#0" X="#0"/>
        <Opcode byte="D1"/>
        <ModRM mode="#0" reg="4" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="shlq">
      <Operand type="m64" input="true" output="true"/>
      <Operand type="imm8"/>
      <Encoding>
        <REX mandatory="true" W="1" B="#0" X="#0"/>
        <Opcode byte="C1"/>
        <ModRM mode="#0" reg="4" rm="#0"/>
        <Immediate size="1" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="shlq">
      <Operand type="m64" input="true" output="true"/>
      <Operand type="cl" input="true" output="false"/>
      <Encoding>
        <REX mandatory="true" W="1" B="#0" X="#0"/>
        <Opcode byte="D3"/>
        <ModRM mode="#0" reg="4" rm="#0"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="SHLD" summary="Integer Double Precision Shift Left">
    <InstructionForm gas-name="shldw">
      <Operand type="r16" input="true" output="true"/>
      <Operand type="r16" input="true" output="false"/>
      <Operand type="imm8"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" R="#1" B="#0"/>
        <Opcode byte="0F"/>
        <Opcode byte="A4"/>
        <ModRM mode="11" reg="#1" rm="#0"/>
        <Immediate size="1" value="#2"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="shldw">
      <Operand type="r16" input="true" output="true"/>
      <Operand type="r16" input="true" output="false"/>
      <Operand type="cl" input="true" output="false"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" R="#1" B="#0"/>
        <Opcode byte="0F"/>
        <Opcode byte="A5"/>
        <ModRM mode="11" reg="#1" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="shldl">
      <Operand type="r32" input="true" output="true"/>
      <Operand type="r32" input="true" output="false"/>
      <Operand type="imm8"/>
      <Encoding>
        <REX mandatory="false" W="0" R="#1" B="#0"/>
        <Opcode byte="0F"/>
        <Opcode byte="A4"/>
        <ModRM mode="11" reg="#1" rm="#0"/>
        <Immediate size="1" value="#2"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="shldl">
      <Operand type="r32" input="true" output="true"/>
      <Operand type="r32" input="true" output="false"/>
      <Operand type="cl" input="true" output="false"/>
      <Encoding>
        <REX mandatory="false" W="0" R="#1" B="#0"/>
        <Opcode byte="0F"/>
        <Opcode byte="A5"/>
        <ModRM mode="11" reg="#1" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="shldq">
      <Operand type="r64" input="true" output="true"/>
      <Operand type="r64" input="true" output="false"/>
      <Operand type="imm8"/>
      <Encoding>
        <REX mandatory="true" W="1" R="#1" B="#0"/>
        <Opcode byte="0F"/>
        <Opcode byte="A4"/>
        <ModRM mode="11" reg="#1" rm="#0"/>
        <Immediate size="1" value="#2"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="shldq">
      <Operand type="r64" input="true" output="true"/>
      <Operand type="r64" input="true" output="false"/>
      <Operand type="cl" input="true" output="false"/>
      <Encoding>
        <REX mandatory="true" W="1" R="#1" B="#0"/>
        <Opcode byte="0F"/>
        <Opcode byte="A5"/>
        <ModRM mode="11" reg="#1" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="shldw">
      <Operand type="m16" input="true" output="true"/>
      <Operand type="r16" input="true" output="false"/>
      <Operand type="imm8"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" R="#1" B="#0" X="#0"/>
        <Opcode byte="0F"/>
        <Opcode byte="A4"/>
        <ModRM mode="#0" reg="#1" rm="#0"/>
        <Immediate size="1" value="#2"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="shldw">
      <Operand type="m16" input="true" output="true"/>
      <Operand type="r16" input="true" output="false"/>
      <Operand type="cl" input="true" output="false"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" R="#1" B="#0" X="#0"/>
        <Opcode byte="0F"/>
        <Opcode byte="A5"/>
        <ModRM mode="#0" reg="#1" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="shldl">
      <Operand type="m32" input="true" output="true"/>
      <Operand type="r32" input="true" output="false"/>
      <Operand type="imm8"/>
      <Encoding>
        <REX mandatory="false" W="0" R="#1" B="#0" X="#0"/>
        <Opcode byte="0F"/>
        <Opcode byte="A4"/>
        <ModRM mode="#0" reg="#1" rm="#0"/>
        <Immediate size="1" value="#2"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="shldl">
      <Operand type="m32" input="true" output="true"/>
      <Operand type="r32" input="true" output="false"/>
      <Operand type="cl" input="true" output="false"/>
      <Encoding>
        <REX mandatory="false" W="0" R="#1" B="#0" X="#0"/>
        <Opcode byte="0F"/>
        <Opcode byte="A5"/>
        <ModRM mode="#0" reg="#1" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="shldq">
      <Operand type="m64" input="true" output="true"/>
      <Operand type="r64" input="true" output="false"/>
      <Operand type="imm8"/>
      <Encoding>
        <REX mandatory="true" W="1" R="#1" B="#0" X="#0"/>
        <Opcode byte="0F"/>
        <Opcode byte="A4"/>
        <ModRM mode="#0" reg="#1" rm="#0"/>
        <Immediate size="1" value="#2"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="shldq">
      <Operand type="m64" input="true" output="true"/>
      <Operand type="r64" input="true" output="false"/>
      <Operand type="cl" input="true" output="false"/>
      <Encoding>
        <REX mandatory="true" W="1" R="#1" B="#0" X="#0"/>
        <Opcode byte="0F"/>
        <Opcode byte="A5"/>
        <ModRM mode="#0" reg="#1" rm="#0"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="SHR" summary="Logical Shift Right">
    <InstructionForm gas-name="shrb">
      <Operand type="r8" input="true" output="true"/>
      <Operand type="1"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="D0"/>
        <ModRM mode="11" reg="5" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="shrb">
      <Operand type="r8" input="true" output="true"/>
      <Operand type="imm8"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="C0"/>
        <ModRM mode="11" reg="5" rm="#0"/>
        <Immediate size="1" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="shrb">
      <Operand type="r8" input="true" output="true"/>
      <Operand type="cl" input="true" output="false"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="D2"/>
        <ModRM mode="11" reg="5" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="shrw">
      <Operand type="r16" input="true" output="true"/>
      <Operand type="1"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="D1"/>
        <ModRM mode="11" reg="5" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="shrw">
      <Operand type="r16" input="true" output="true"/>
      <Operand type="imm8"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="C1"/>
        <ModRM mode="11" reg="5" rm="#0"/>
        <Immediate size="1" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="shrw">
      <Operand type="r16" input="true" output="true"/>
      <Operand type="cl" input="true" output="false"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="D3"/>
        <ModRM mode="11" reg="5" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="shrl">
      <Operand type="r32" input="true" output="true"/>
      <Operand type="1"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="D1"/>
        <ModRM mode="11" reg="5" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="shrl">
      <Operand type="r32" input="true" output="true"/>
      <Operand type="imm8"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="C1"/>
        <ModRM mode="11" reg="5" rm="#0"/>
        <Immediate size="1" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="shrl">
      <Operand type="r32" input="true" output="true"/>
      <Operand type="cl" input="true" output="false"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="D3"/>
        <ModRM mode="11" reg="5" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="shrq">
      <Operand type="r64" input="true" output="true"/>
      <Operand type="1"/>
      <Encoding>
        <REX mandatory="true" W="1" B="#0"/>
        <Opcode byte="D1"/>
        <ModRM mode="11" reg="5" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="shrq">
      <Operand type="r64" input="true" output="true"/>
      <Operand type="imm8"/>
      <Encoding>
        <REX mandatory="true" W="1" B="#0"/>
        <Opcode byte="C1"/>
        <ModRM mode="11" reg="5" rm="#0"/>
        <Immediate size="1" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="shrq">
      <Operand type="r64" input="true" output="true"/>
      <Operand type="cl" input="true" output="false"/>
      <Encoding>
        <REX mandatory="true" W="1" B="#0"/>
        <Opcode byte="D3"/>
        <ModRM mode="11" reg="5" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="shrb">
      <Operand type="m8" input="true" output="true"/>
      <Operand type="1"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0" X="#0"/>
        <Opcode byte="D0"/>
        <ModRM mode="#0" reg="5" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="shrb">
      <Operand type="m8" input="true" output="true"/>
      <Operand type="imm8"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0" X="#0"/>
        <Opcode byte="C0"/>
        <ModRM mode="#0" reg="5" rm="#0"/>
        <Immediate size="1" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="shrb">
      <Operand type="m8" input="true" output="true"/>
      <Operand type="cl" input="true" output="false"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0" X="#0"/>
        <Opcode byte="D2"/>
        <ModRM mode="#0" reg="5" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="shrw">
      <Operand type="m16" input="true" output="true"/>
      <Operand type="1"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" B="#0" X="#0"/>
        <Opcode byte="D1"/>
        <ModRM mode="#0" reg="5" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="shrw">
      <Operand type="m16" input="true" output="true"/>
      <Operand type="imm8"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" B="#0" X="#0"/>
        <Opcode byte="C1"/>
        <ModRM mode="#0" reg="5" rm="#0"/>
        <Immediate size="1" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="shrw">
      <Operand type="m16" input="true" output="true"/>
      <Operand type="cl" input="true" output="false"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" B="#0" X="#0"/>
        <Opcode byte="D3"/>
        <ModRM mode="#0" reg="5" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="shrl">
      <Operand type="m32" input="true" output="true"/>
      <Operand type="1"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0" X="#0"/>
        <Opcode byte="D1"/>
        <ModRM mode="#0" reg="5" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="shrl">
      <Operand type="m32" input="true" output="true"/>
      <Operand type="imm8"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0" X="#0"/>
        <Opcode byte="C1"/>
        <ModRM mode="#0" reg="5" rm="#0"/>
        <Immediate size="1" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="shrl">
      <Operand type="m32" input="true" output="true"/>
      <Operand type="cl" input="true" output="false"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0" X="#0"/>
        <Opcode byte="D3"/>
        <ModRM mode="#0" reg="5" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="shrq">
      <Operand type="m64" input="true" output="true"/>
      <Operand type="1"/>
      <Encoding>
        <REX mandatory="true" W="1" B="#0" X="#0"/>
        <Opcode byte="D1"/>
        <ModRM mode="#0" reg="5" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="shrq">
      <Operand type="m64" input="true" output="true"/>
      <Operand type="imm8"/>
      <Encoding>
        <REX mandatory="true" W="1" B="#0" X="#0"/>
        <Opcode byte="C1"/>
        <ModRM mode="#0" reg="5" rm="#0"/>
        <Immediate size="1" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="shrq">
      <Operand type="m64" input="true" output="true"/>
      <Operand type="cl" input="true" output="false"/>
      <Encoding>
        <REX mandatory="true" W="1" B="#0" X="#0"/>
        <Opcode byte="D3"/>
        <ModRM mode="#0" reg="5" rm="#0"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="SHRD" summary="Integer Double Precision Shift Right">
    <InstructionForm gas-name="shrdw">
      <Operand type="r16" input="true" output="true"/>
      <Operand type="r16" input="true" output="false"/>
      <Operand type="imm8"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" R="#1" B="#0"/>
        <Opcode byte="0F"/>
        <Opcode byte="AC"/>
        <ModRM mode="11" reg="#1" rm="#0"/>
        <Immediate size="1" value="#2"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="shrdw">
      <Operand type="r16" input="true" output="true"/>
      <Operand type="r16" input="true" output="false"/>
      <Operand type="cl" input="true" output="false"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" R="#1" B="#0"/>
        <Opcode byte="0F"/>
        <Opcode byte="AD"/>
        <ModRM mode="11" reg="#1" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="shrdl">
      <Operand type="r32" input="true" output="true"/>
      <Operand type="r32" input="true" output="false"/>
      <Operand type="imm8"/>
      <Encoding>
        <REX mandatory="false" W="0" R="#1" B="#0"/>
        <Opcode byte="0F"/>
        <Opcode byte="AC"/>
        <ModRM mode="11" reg="#1" rm="#0"/>
        <Immediate size="1" value="#2"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="shrdl">
      <Operand type="r32" input="true" output="true"/>
      <Operand type="r32" input="true" output="false"/>
      <Operand type="cl" input="true" output="false"/>
      <Encoding>
        <REX mandatory="false" W="0" R="#1" B="#0"/>
        <Opcode byte="0F"/>
        <Opcode byte="AD"/>
        <ModRM mode="11" reg="#1" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="shrdq">
      <Operand type="r64" input="true" output="true"/>
      <Operand type="r64" input="true" output="false"/>
      <Operand type="imm8"/>
      <Encoding>
        <REX mandatory="true" W="1" R="#1" B="#0"/>
        <Opcode byte="0F"/>
        <Opcode byte="AC"/>
        <ModRM mode="11" reg="#1" rm="#0"/>
        <Immediate size="1" value="#2"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="shrdq">
      <Operand type="r64" input="true" output="true"/>
      <Operand type="r64" input="true" output="false"/>
      <Operand type="cl" input="true" output="false"/>
      <Encoding>
        <REX mandatory="true" W="1" R="#1" B="#0"/>
        <Opcode byte="0F"/>
        <Opcode byte="AD"/>
        <ModRM mode="11" reg="#1" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="shrdw">
      <Operand type="m16" input="true" output="true"/>
      <Operand type="r16" input="true" output="false"/>
      <Operand type="imm8"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" R="#1" B="#0" X="#0"/>
        <Opcode byte="0F"/>
        <Opcode byte="AC"/>
        <ModRM mode="#0" reg="#1" rm="#0"/>
        <Immediate size="1" value="#2"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="shrdw">
      <Operand type="m16" input="true" output="true"/>
      <Operand type="r16" input="true" output="false"/>
      <Operand type="cl" input="true" output="false"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" R="#1" B="#0" X="#0"/>
        <Opcode byte="0F"/>
        <Opcode byte="AD"/>
        <ModRM mode="#0" reg="#1" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="shrdl">
      <Operand type="m32" input="true" output="true"/>
      <Operand type="r32" input="true" output="false"/>
      <Operand type="imm8"/>
      <Encoding>
        <REX mandatory="false" W="0" R="#1" B="#0" X="#0"/>
        <Opcode byte="0F"/>
        <Opcode byte="AC"/>
        <ModRM mode="#0" reg="#1" rm="#0"/>
        <Immediate size="1" value="#2"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="shrdl">
      <Operand type="m32" input="true" output="true"/>
      <Operand type="r32" input="true" output="false"/>
      <Operand type="cl" input="true" output="false"/>
      <Encoding>
        <REX mandatory="false" W="0" R="#1" B="#0" X="#0"/>
        <Opcode byte="0F"/>
        <Opcode byte="AD"/>
        <ModRM mode="#0" reg="#1" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="shrdq">
      <Operand type="m64" input="true" output="true"/>
      <Operand type="r64" input="true" output="false"/>
      <Operand type="imm8"/>
      <Encoding>
        <REX mandatory="true" W="1" R="#1" B="#0" X="#0"/>
        <Opcode byte="0F"/>
        <Opcode byte="AC"/>
        <ModRM mode="#0" reg="#1" rm="#0"/>
        <Immediate size="1" value="#2"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="shrdq">
      <Operand type="m64" input="true" output="true"/>
      <Operand type="r64" input="true" output="false"/>
      <Operand type="cl" input="true" output="false"/>
      <Encoding>
        <REX mandatory="true" W="1" R="#1" B="#0" X="#0"/>
        <Opcode byte="0F"/>
        <Opcode byte="AD"/>
        <ModRM mode="#0" reg="#1" rm="#0"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="SPFLT" summary="Set Performance Monitor Filtering Mask">
    <InstructionForm gas-name="spflt">
      <Operand type="r32" input="true" output="false"/>
      <Encoding>
        <VEX W="0" L="0" m-mmmm="00001" pp="11" B="#0" vvvv="0000"/>
        <Opcode byte="AE"/>
        <ModRM mode="11" reg="6" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="spflt">
      <Operand type="r64" input="true" output="false"/>
      <Encoding>
        <VEX W="1" L="0" m-mmmm="00001" pp="11" B="#0" vvvv="0000"/>
        <Opcode byte="AE"/>
        <ModRM mode="11" reg="6" rm="#0"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="STC" summary="Set Carry Flag">
    <InstructionForm gas-name="stc">
      <Encoding>
        <Opcode byte="F9"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="STD" summary="Set Direction Flag">
    <InstructionForm gas-name="std">
      <Encoding>
        <Opcode byte="FD"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="STMXCSR" summary="Store MXCSR Register State">
    <InstructionForm gas-name="stmxcsr">
      <Operand type="m32" input="false" output="true"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0" X="#0"/>
        <Opcode byte="0F"/>
        <Opcode byte="AE"/>
        <ModRM mode="#0" reg="3" rm="#0"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="SUB" summary="Subtract">
    <InstructionForm gas-name="subb">
      <Operand type="al" input="true" output="true"/>
      <Operand type="imm8"/>
      <Encoding>
        <Opcode byte="2C"/>
        <Immediate size="1" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="subb">
      <Operand type="r8" input="true" output="true"/>
      <Operand type="imm8"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="80"/>
        <ModRM mode="11" reg="5" rm="#0"/>
        <Immediate size="1" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="subb" cancelling-inputs="true">
      <Operand type="r8" input="true" output="true"/>
      <Operand type="r8" input="true" output="false"/>
      <Encoding>
        <REX mandatory="false" W="0" R="#1" B="#0"/>
        <Opcode byte="28"/>
        <ModRM mode="11" reg="#1" rm="#0"/>
      </Encoding>
      <Encoding>
        <REX mandatory="false" W="0" R="#0" B="#1"/>
        <Opcode byte="2A"/>
        <ModRM mode="11" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="subb">
      <Operand type="r8" input="true" output="true"/>
      <Operand type="m8" input="true" output="false"/>
      <Encoding>
        <REX mandatory="false" W="0" R="#0" B="#1" X="#1"/>
        <Opcode byte="2A"/>
        <ModRM mode="#1" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="subw">
      <Operand type="ax" input="true" output="true"/>
      <Operand type="imm16"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <Opcode byte="2D"/>
        <Immediate size="2" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="subw">
      <Operand type="r16" input="true" output="true"/>
      <Operand type="imm8" extended-size="2"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="83"/>
        <ModRM mode="11" reg="5" rm="#0"/>
        <Immediate size="1" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="subw">
      <Operand type="r16" input="true" output="true"/>
      <Operand type="imm16"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="81"/>
        <ModRM mode="11" reg="5" rm="#0"/>
        <Immediate size="2" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="subw" cancelling-inputs="true">
      <Operand type="r16" input="true" output="true"/>
      <Operand type="r16" input="true" output="false"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" R="#1" B="#0"/>
        <Opcode byte="29"/>
        <ModRM mode="11" reg="#1" rm="#0"/>
      </Encoding>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" R="#0" B="#1"/>
        <Opcode byte="2B"/>
        <ModRM mode="11" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="subw">
      <Operand type="r16" input="true" output="true"/>
      <Operand type="m16" input="true" output="false"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" R="#0" B="#1" X="#1"/>
        <Opcode byte="2B"/>
        <ModRM mode="#1" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="subl">
      <Operand type="eax" input="true" output="true"/>
      <Operand type="imm32"/>
      <Encoding>
        <Opcode byte="2D"/>
        <Immediate size="4" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="subl">
      <Operand type="r32" input="true" output="true"/>
      <Operand type="imm8" extended-size="4"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="83"/>
        <ModRM mode="11" reg="5" rm="#0"/>
        <Immediate size="1" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="subl">
      <Operand type="r32" input="true" output="true"/>
      <Operand type="imm32"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="81"/>
        <ModRM mode="11" reg="5" rm="#0"/>
        <Immediate size="4" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="subl" cancelling-inputs="true">
      <Operand type="r32" input="true" output="true"/>
      <Operand type="r32" input="true" output="false"/>
      <Encoding>
        <REX mandatory="false" W="0" R="#1" B="#0"/>
        <Opcode byte="29"/>
        <ModRM mode="11" reg="#1" rm="#0"/>
      </Encoding>
      <Encoding>
        <REX mandatory="false" W="0" R="#0" B="#1"/>
        <Opcode byte="2B"/>
        <ModRM mode="11" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="subl">
      <Operand type="r32" input="true" output="true"/>
      <Operand type="m32" input="true" output="false"/>
      <Encoding>
        <REX mandatory="false" W="0" R="#0" B="#1" X="#1"/>
        <Opcode byte="2B"/>
        <ModRM mode="#1" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="subq">
      <Operand type="rax" input="true" output="true"/>
      <Operand type="imm32"/>
      <Encoding>
        <REX mandatory="true" W="1"/>
        <Opcode byte="2D"/>
        <Immediate size="4" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="subq">
      <Operand type="r64" input="true" output="true"/>
      <Operand type="imm8" extended-size="8"/>
      <Encoding>
        <REX mandatory="true" W="1" B="#0"/>
        <Opcode byte="83"/>
        <ModRM mode="11" reg="5" rm="#0"/>
        <Immediate size="1" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="subq">
      <Operand type="r64" input="true" output="true"/>
      <Operand type="imm32" extended-size="8"/>
      <Encoding>
        <REX mandatory="true" W="1" B="#0"/>
        <Opcode byte="81"/>
        <ModRM mode="11" reg="5" rm="#0"/>
        <Immediate size="4" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="subq" cancelling-inputs="true">
      <Operand type="r64" input="true" output="true"/>
      <Operand type="r64" input="true" output="false"/>
      <Encoding>
        <REX mandatory="true" W="1" R="#1" B="#0"/>
        <Opcode byte="29"/>
        <ModRM mode="11" reg="#1" rm="#0"/>
      </Encoding>
      <Encoding>
        <REX mandatory="true" W="1" R="#0" B="#1"/>
        <Opcode byte="2B"/>
        <ModRM mode="11" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="subq">
      <Operand type="r64" input="true" output="true"/>
      <Operand type="m64" input="true" output="false"/>
      <Encoding>
        <REX mandatory="true" W="1" R="#0" B="#1" X="#1"/>
        <Opcode byte="2B"/>
        <ModRM mode="#1" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="subb">
      <Operand type="m8" input="true" output="true"/>
      <Operand type="imm8"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0" X="#0"/>
        <Opcode byte="80"/>
        <ModRM mode="#0" reg="5" rm="#0"/>
        <Immediate size="1" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="subb">
      <Operand type="m8" input="true" output="true"/>
      <Operand type="r8" input="true" output="false"/>
      <Encoding>
        <REX mandatory="false" W="0" R="#1" B="#0" X="#0"/>
        <Opcode byte="28"/>
        <ModRM mode="#0" reg="#1" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="subw">
      <Operand type="m16" input="true" output="true"/>
      <Operand type="imm8" extended-size="2"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" B="#0" X="#0"/>
        <Opcode byte="83"/>
        <ModRM mode="#0" reg="5" rm="#0"/>
        <Immediate size="1" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="subw">
      <Operand type="m16" input="true" output="true"/>
      <Operand type="imm16"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" B="#0" X="#0"/>
        <Opcode byte="81"/>
        <ModRM mode="#0" reg="5" rm="#0"/>
        <Immediate size="2" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="subw">
      <Operand type="m16" input="true" output="true"/>
      <Operand type="r16" input="true" output="false"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" R="#1" B="#0" X="#0"/>
        <Opcode byte="29"/>
        <ModRM mode="#0" reg="#1" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="subl">
      <Operand type="m32" input="true" output="true"/>
      <Operand type="imm8" extended-size="4"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0" X="#0"/>
        <Opcode byte="83"/>
        <ModRM mode="#0" reg="5" rm="#0"/>
        <Immediate size="1" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="subl">
      <Operand type="m32" input="true" output="true"/>
      <Operand type="imm32"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0" X="#0"/>
        <Opcode byte="81"/>
        <ModRM mode="#0" reg="5" rm="#0"/>
        <Immediate size="4" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="subl">
      <Operand type="m32" input="true" output="true"/>
      <Operand type="r32" input="true" output="false"/>
      <Encoding>
        <REX mandatory="false" W="0" R="#1" B="#0" X="#0"/>
        <Opcode byte="29"/>
        <ModRM mode="#0" reg="#1" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="subq">
      <Operand type="m64" input="true" output="true"/>
      <Operand type="imm8" extended-size="8"/>
      <Encoding>
        <REX mandatory="true" W="1" B="#0" X="#0"/>
        <Opcode byte="83"/>
        <ModRM mode="#0" reg="5" rm="#0"/>
        <Immediate size="1" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="subq">
      <Operand type="m64" input="true" output="true"/>
      <Operand type="imm32" extended-size="8"/>
      <Encoding>
        <REX mandatory="true" W="1" B="#0" X="#0"/>
        <Opcode byte="81"/>
        <ModRM mode="#0" reg="5" rm="#0"/>
        <Immediate size="4" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="subq">
      <Operand type="m64" input="true" output="true"/>
      <Operand type="r64" input="true" output="false"/>
      <Encoding>
        <REX mandatory="true" W="1" R="#1" B="#0" X="#0"/>
        <Opcode byte="29"/>
        <ModRM mode="#0" reg="#1" rm="#0"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="SYSCALL" summary="Fast System Call">
    <InstructionForm gas-name="syscall">
      <ImplicitOperand id="r11" input="false" output="true"/>
      <ImplicitOperand id="rcx" input="false" output="true"/>
      <Encoding>
        <Opcode byte="0F"/>
        <Opcode byte="05"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="TEST" summary="Logical Compare">
    <InstructionForm gas-name="testb">
      <Operand type="al" input="true" output="false"/>
      <Operand type="imm8"/>
      <Encoding>
        <Opcode byte="A8"/>
        <Immediate size="1" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="testb">
      <Operand type="r8" input="true" output="false"/>
      <Operand type="imm8"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="F6"/>
        <ModRM mode="11" reg="0" rm="#0"/>
        <Immediate size="1" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="testb">
      <Operand type="r8" input="true" output="false"/>
      <Operand type="r8" input="true" output="false"/>
      <Encoding>
        <REX mandatory="false" W="0" R="#1" B="#0"/>
        <Opcode byte="84"/>
        <ModRM mode="11" reg="#1" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="testw">
      <Operand type="ax" input="true" output="false"/>
      <Operand type="imm16"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <Opcode byte="A9"/>
        <Immediate size="2" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="testw">
      <Operand type="r16" input="true" output="false"/>
      <Operand type="imm16"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="F7"/>
        <ModRM mode="11" reg="0" rm="#0"/>
        <Immediate size="2" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="testw">
      <Operand type="r16" input="true" output="false"/>
      <Operand type="r16" input="true" output="false"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" R="#1" B="#0"/>
        <Opcode byte="85"/>
        <ModRM mode="11" reg="#1" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="testl">
      <Operand type="eax" input="true" output="false"/>
      <Operand type="imm32"/>
      <Encoding>
        <Opcode byte="A9"/>
        <Immediate size="4" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="testl">
      <Operand type="r32" input="true" output="false"/>
      <Operand type="imm32"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="F7"/>
        <ModRM mode="11" reg="0" rm="#0"/>
        <Immediate size="4" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="testl">
      <Operand type="r32" input="true" output="false"/>
      <Operand type="r32" input="true" output="false"/>
      <Encoding>
        <REX mandatory="false" W="0" R="#1" B="#0"/>
        <Opcode byte="85"/>
        <ModRM mode="11" reg="#1" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="testq">
      <Operand type="rax" input="true" output="false"/>
      <Operand type="imm32"/>
      <Encoding>
        <REX mandatory="true" W="1"/>
        <Opcode byte="A9"/>
        <Immediate size="4" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="testq">
      <Operand type="r64" input="true" output="false"/>
      <Operand type="imm32" extended-size="8"/>
      <Encoding>
        <REX mandatory="true" W="1" B="#0"/>
        <Opcode byte="F7"/>
        <ModRM mode="11" reg="0" rm="#0"/>
        <Immediate size="4" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="testq">
      <Operand type="r64" input="true" output="false"/>
      <Operand type="r64" input="true" output="false"/>
      <Encoding>
        <REX mandatory="true" W="1" R="#1" B="#0"/>
        <Opcode byte="85"/>
        <ModRM mode="11" reg="#1" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="testb">
      <Operand type="m8" input="true" output="false"/>
      <Operand type="imm8"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0" X="#0"/>
        <Opcode byte="F6"/>
        <ModRM mode="#0" reg="0" rm="#0"/>
        <Immediate size="1" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="testb">
      <Operand type="m8" input="true" output="false"/>
      <Operand type="r8" input="true" output="false"/>
      <Encoding>
        <REX mandatory="false" W="0" R="#1" B="#0" X="#0"/>
        <Opcode byte="84"/>
        <ModRM mode="#0" reg="#1" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="testw">
      <Operand type="m16" input="true" output="false"/>
      <Operand type="imm16"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" B="#0" X="#0"/>
        <Opcode byte="F7"/>
        <ModRM mode="#0" reg="0" rm="#0"/>
        <Immediate size="2" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="testw">
      <Operand type="m16" input="true" output="false"/>
      <Operand type="r16" input="true" output="false"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" R="#1" B="#0" X="#0"/>
        <Opcode byte="85"/>
        <ModRM mode="#0" reg="#1" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="testl">
      <Operand type="m32" input="true" output="false"/>
      <Operand type="imm32"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0" X="#0"/>
        <Opcode byte="F7"/>
        <ModRM mode="#0" reg="0" rm="#0"/>
        <Immediate size="4" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="testl">
      <Operand type="m32" input="true" output="false"/>
      <Operand type="r32" input="true" output="false"/>
      <Encoding>
        <REX mandatory="false" W="0" R="#1" B="#0" X="#0"/>
        <Opcode byte="85"/>
        <ModRM mode="#0" reg="#1" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="testq">
      <Operand type="m64" input="true" output="false"/>
      <Operand type="imm32" extended-size="8"/>
      <Encoding>
        <REX mandatory="true" W="1" B="#0" X="#0"/>
        <Opcode byte="F7"/>
        <ModRM mode="#0" reg="0" rm="#0"/>
        <Immediate size="4" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="testq">
      <Operand type="m64" input="true" output="false"/>
      <Operand type="r64" input="true" output="false"/>
      <Encoding>
        <REX mandatory="true" W="1" R="#1" B="#0" X="#0"/>
        <Opcode byte="85"/>
        <ModRM mode="#0" reg="#1" rm="#0"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="TZCNT" summary="Count the Number of Trailing Zero Bits">
    <InstructionForm gas-name="tzcntl">
      <Operand type="r32" input="false" output="true"/>
      <Operand type="r32" input="true" output="false"/>
      <Encoding>
        <VEX W="0" L="0" m-mmmm="00001" pp="10" R="#0" B="#1" vvvv="0000"/>
        <Opcode byte="BC"/>
        <ModRM mode="11" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="tzcntq">
      <Operand type="r64" input="false" output="true"/>
      <Operand type="r64" input="true" output="false"/>
      <Encoding>
        <VEX W="1" L="0" m-mmmm="00001" pp="10" R="#0" B="#1" vvvv="0000"/>
        <Opcode byte="BC"/>
        <ModRM mode="11" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="TZCNTI" summary="Initialized Trailing Zero Count">
    <InstructionForm gas-name="tzcnti">
      <Operand type="r32" input="true" output="true"/>
      <Operand type="r32" input="false" output="true"/>
      <Encoding>
        <VEX W="0" L="0" m-mmmm="00001" pp="11" R="#0" B="#1" vvvv="0000"/>
        <Opcode byte="BC"/>
        <ModRM mode="11" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="tzcnti">
      <Operand type="r64" input="true" output="true"/>
      <Operand type="r64" input="false" output="true"/>
      <Encoding>
        <VEX W="1" L="0" m-mmmm="00001" pp="11" R="#0" B="#1" vvvv="0000"/>
        <Opcode byte="BC"/>
        <ModRM mode="11" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="UD2" summary="Undefined Instruction">
    <InstructionForm gas-name="ud2">
      <Encoding>
        <Opcode byte="0F"/>
        <Opcode byte="0B"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="VADDNPD" summary="Add and Negate Packed Double-Precision Floating-Point Values">
    <InstructionForm gas-name="vaddnpd">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="S(zmm)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="1" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#2" E="0"/>
        <Opcode byte="50"/>
        <ModRM mode="11" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="vaddnpd">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="B64(m512)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="1" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#2" E="#2" disp8xN="64"/>
        <Opcode byte="50"/>
        <ModRM mode="#2" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="vaddnpd">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="{er}"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="1" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#3" E="1"/>
        <Opcode byte="50"/>
        <ModRM mode="11" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="VADDNPS" summary="Add and Negate Packed Single-Precision Floating-Point Values">
    <InstructionForm gas-name="vaddnps">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="S(zmm)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="0" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#2" E="0"/>
        <Opcode byte="50"/>
        <ModRM mode="11" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="vaddnps">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="BCf32(m512)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="0" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#2" E="#2" disp8xN="64"/>
        <Opcode byte="50"/>
        <ModRM mode="#2" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="vaddnps">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="{er}"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="0" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#3" E="1"/>
        <Opcode byte="50"/>
        <ModRM mode="11" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="VADDPD" summary="Add Packed Double-Precision Floating-Point Values">
    <InstructionForm gas-name="vaddpd">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="S(zmm)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0001" pp="01" W="1" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#2" E="0"/>
        <Opcode byte="58"/>
        <ModRM mode="11" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="vaddpd">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="B64(m512)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0001" pp="01" W="1" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#2" E="#2" disp8xN="64"/>
        <Opcode byte="58"/>
        <ModRM mode="#2" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="vaddpd">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="{er}"/>
      <Encoding>
        <MVEX mmmm="0001" pp="01" W="1" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#3" E="1"/>
        <Opcode byte="58"/>
        <ModRM mode="11" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="VADDPS" summary="Add Packed Single-Precision Floating-Point Values">
    <InstructionForm gas-name="vaddps">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="S(zmm)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0001" pp="00" W="0" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#2" E="0"/>
        <Opcode byte="58"/>
        <ModRM mode="11" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="vaddps">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="BCf32(m512)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0001" pp="00" W="0" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#2" E="#2" disp8xN="64"/>
        <Opcode byte="58"/>
        <ModRM mode="#2" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="vaddps">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="{er}"/>
      <Encoding>
        <MVEX mmmm="0001" pp="00" W="0" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#3" E="1"/>
        <Opcode byte="58"/>
        <ModRM mode="11" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="VADDSETSPS" summary="Add Packed Single-Precision Floating-Point Values and Set Mask to Sign">
    <InstructionForm gas-name="vaddsetsps">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="S(zmm)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="0" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#2" E="0"/>
        <Opcode byte="CC"/>
        <ModRM mode="11" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="vaddsetsps">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="BCf32(m512)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="0" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#2" E="#2" disp8xN="64"/>
        <Opcode byte="CC"/>
        <ModRM mode="#2" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="vaddsetsps">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="{er}"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="0" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#3" E="1"/>
        <Opcode byte="CC"/>
        <ModRM mode="11" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="VALIGND" summary="Align Doubleword Vectors">
    <InstructionForm gas-name="valignd">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="imm8"/>
      <Encoding>
        <MVEX mmmm="0011" pp="01" W="0" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="000"/>
        <Opcode byte="03"/>
        <ModRM mode="11" reg="#0" rm="#2"/>
        <Immediate size="1" value="#3"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="valignd">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="m512" input="true" output="false"/>
      <Operand type="imm8"/>
      <Encoding>
        <MVEX mmmm="0011" pp="01" W="0" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="000" E="#2" disp8xN="64"/>
        <Opcode byte="03"/>
        <ModRM mode="#2" reg="#0" rm="#2"/>
        <Immediate size="1" value="#3"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="VBLENDMPD" summary="Blend Packed Double-Precision Floating-Point Vectors Using an OpMask Control">
    <InstructionForm gas-name="vblendmpd">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="S(zmm)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="1" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#2" E="0"/>
        <Opcode byte="65"/>
        <ModRM mode="11" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="vblendmpd">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="B64(m512)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="1" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#2" E="#2" disp8xN="64"/>
        <Opcode byte="65"/>
        <ModRM mode="#2" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="VBLENDMPS" summary="Blend Packed Single-Precision Floating-Point Vectors Using an OpMask Control">
    <InstructionForm gas-name="vblendmps">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="S(zmm)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="0" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#2" E="0"/>
        <Opcode byte="65"/>
        <ModRM mode="11" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="vblendmps">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="BCf32(m512)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="0" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#2" E="#2" disp8xN="64"/>
        <Opcode byte="65"/>
        <ModRM mode="#2" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="VBROADCASTF32X4" summary="Broadcast Four Single-Precision Floating-Point Elements">
    <InstructionForm gas-name="vbroadcastf32x4">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="Cf32(m512)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="0" vvvv="0000" V="0" RR="#0" B="#1" X="#1" aaa="#0" SSS="#1" E="#1" disp8xN="16"/>
        <Opcode byte="1A"/>
        <ModRM mode="#1" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="VBROADCASTF64X4" summary="Broadcast Four Double-Precision Floating-Point Elements">
    <InstructionForm gas-name="vbroadcastf64x4">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="m512" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="1" vvvv="0000" V="0" RR="#0" B="#1" X="#1" aaa="#0" SSS="000" E="#1" disp8xN="64"/>
        <Opcode byte="1B"/>
        <ModRM mode="#1" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="VBROADCASTI32X4" summary="Broadcast Four Doubleword Elements">
    <InstructionForm gas-name="vbroadcasti32x4">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="Ci32(m512)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="0" vvvv="0000" V="0" RR="#0" B="#1" X="#1" aaa="#0" SSS="#1" E="#1" disp8xN="16"/>
        <Opcode byte="5A"/>
        <ModRM mode="#1" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="VBROADCASTI64X4" summary="Broadcast Four Quadword Elements">
    <InstructionForm gas-name="vbroadcasti64x4">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="m512" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="1" vvvv="0000" V="0" RR="#0" B="#1" X="#1" aaa="#0" SSS="000" E="#1" disp8xN="64"/>
        <Opcode byte="5B"/>
        <ModRM mode="#1" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="VBROADCASTSD" summary="Broadcast Double-Precision Floating-Point Element">
    <InstructionForm gas-name="vbroadcastsd">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="m512" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="1" vvvv="0000" V="0" RR="#0" B="#1" X="#1" aaa="#0" SSS="000" E="#1" disp8xN="64"/>
        <Opcode byte="19"/>
        <ModRM mode="#1" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="VBROADCASTSS" summary="Broadcast Single-Precision Floating-Point Element">
    <InstructionForm gas-name="vbroadcastss">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="Cf32(m512)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="0" vvvv="0000" V="0" RR="#0" B="#1" X="#1" aaa="#0" SSS="#1" E="#1" disp8xN="64"/>
        <Opcode byte="18"/>
        <ModRM mode="#1" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="VCMPPD" summary="Compare Packed Double-Precision Floating-Point Values">
    <InstructionForm gas-name="vcmppd">
      <Operand type="k{k}" input="false" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="S(zmm)" input="true" output="false"/>
      <Operand type="imm8"/>
      <Encoding>
        <MVEX mmmm="0001" pp="01" W="1" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#2" E="0"/>
        <Opcode byte="C2"/>
        <ModRM mode="11" reg="#0" rm="#2"/>
        <Immediate size="1" value="#3"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="vcmppd">
      <Operand type="k{k}" input="false" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="B64(m512)" input="true" output="false"/>
      <Operand type="imm8"/>
      <Encoding>
        <MVEX mmmm="0001" pp="01" W="1" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#2" E="#2" disp8xN="64"/>
        <Opcode byte="C2"/>
        <ModRM mode="#2" reg="#0" rm="#2"/>
        <Immediate size="1" value="#3"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="vcmppd">
      <Operand type="k{k}" input="false" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="imm8"/>
      <Operand type="{sae}"/>
      <Encoding>
        <MVEX mmmm="0001" pp="01" W="1" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#4" E="1"/>
        <Opcode byte="C2"/>
        <ModRM mode="11" reg="#0" rm="#2"/>
        <Immediate size="1" value="#3"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="VCMPPS" summary="Compare Packed Single-Precision Floating-Point Values">
    <InstructionForm gas-name="vcmpps">
      <Operand type="k{k}" input="false" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="S(zmm)" input="true" output="false"/>
      <Operand type="imm8"/>
      <Encoding>
        <MVEX mmmm="0001" pp="00" W="0" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#2" E="0"/>
        <Opcode byte="C2"/>
        <ModRM mode="11" reg="#0" rm="#2"/>
        <Immediate size="1" value="#3"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="vcmpps">
      <Operand type="k{k}" input="false" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="BCf32(m512)" input="true" output="false"/>
      <Operand type="imm8"/>
      <Encoding>
        <MVEX mmmm="0001" pp="00" W="0" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#2" E="#2" disp8xN="64"/>
        <Opcode byte="C2"/>
        <ModRM mode="#2" reg="#0" rm="#2"/>
        <Immediate size="1" value="#3"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="vcmpps">
      <Operand type="k{k}" input="false" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="imm8"/>
      <Operand type="{sae}"/>
      <Encoding>
        <MVEX mmmm="0001" pp="00" W="0" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#4" E="1"/>
        <Opcode byte="C2"/>
        <ModRM mode="11" reg="#0" rm="#2"/>
        <Immediate size="1" value="#3"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="VCVTDQ2PD" summary="Convert Packed Dword Integers to Packed Double-Precision FP Values">
    <InstructionForm gas-name="vcvtdq2pd">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="BCi32(m512)" input="true" output="false" allow-conversion="false"/>
      <Encoding>
        <MVEX mmmm="0001" pp="10" W="0" vvvv="0000" V="0" RR="#0" B="#1" X="#1" aaa="#0" SSS="#1" E="#1" disp8xN="32"/>
        <Opcode byte="E6"/>
        <ModRM mode="#1" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="vcvtdq2pd">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0001" pp="10" W="0" vvvv="0000" V="0" RR="#0" B="#1" X="#1" aaa="#0" SSS="000" E="0"/>
        <Opcode byte="E6"/>
        <ModRM mode="11" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="VCVTFXPNTDQ2PS" summary="Convert Fixed Point Signed Doubleword Integer Vector to Single-Precision Floating-Point Vector">
    <InstructionForm gas-name="vcvtfxpntdq2ps">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="S(zmm)" input="true" output="false"/>
      <Operand type="imm8"/>
      <Encoding>
        <MVEX mmmm="0011" pp="00" W="0" vvvv="0000" V="0" RR="#0" B="#1" X="#1" aaa="#0" SSS="#1" E="0"/>
        <Opcode byte="CB"/>
        <ModRM mode="11" reg="#0" rm="#1"/>
        <Immediate size="1" value="#2"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="vcvtfxpntdq2ps">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="BCi32(m512)" input="true" output="false"/>
      <Operand type="imm8"/>
      <Encoding>
        <MVEX mmmm="0011" pp="00" W="0" vvvv="0000" V="0" RR="#0" B="#1" X="#1" aaa="#0" SSS="#1" E="#1" disp8xN="64"/>
        <Opcode byte="CB"/>
        <ModRM mode="#1" reg="#0" rm="#1"/>
        <Immediate size="1" value="#2"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="vcvtfxpntdq2ps">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="imm8"/>
      <Operand type="{sae}"/>
      <Encoding>
        <MVEX mmmm="0011" pp="00" W="0" vvvv="0000" V="0" RR="#0" B="#1" X="#1" aaa="#0" SSS="#3" E="1"/>
        <Opcode byte="CB"/>
        <ModRM mode="11" reg="#0" rm="#1"/>
        <Immediate size="1" value="#2"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="VCVTFXPNTPD2DQ" summary="Convert Double-Precision Floating-Point Vector to Fixed Point Signed Doubleword Integer Vector">
    <InstructionForm gas-name="vcvtfxpntpd2dq">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="S(zmm)" input="true" output="false"/>
      <Operand type="imm8"/>
      <Encoding>
        <MVEX mmmm="0011" pp="11" W="1" vvvv="0000" V="0" RR="#0" B="#1" X="#1" aaa="#0" SSS="#1" E="0"/>
        <Opcode byte="E6"/>
        <ModRM mode="11" reg="#0" rm="#1"/>
        <Immediate size="1" value="#2"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="vcvtfxpntpd2dq">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="B64(m512)" input="true" output="false"/>
      <Operand type="imm8"/>
      <Encoding>
        <MVEX mmmm="0011" pp="11" W="1" vvvv="0000" V="0" RR="#0" B="#1" X="#1" aaa="#0" SSS="#1" E="#1" disp8xN="64"/>
        <Opcode byte="E6"/>
        <ModRM mode="#1" reg="#0" rm="#1"/>
        <Immediate size="1" value="#2"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="vcvtfxpntpd2dq">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="imm8"/>
      <Operand type="{sae}"/>
      <Encoding>
        <MVEX mmmm="0011" pp="11" W="1" vvvv="0000" V="0" RR="#0" B="#1" X="#1" aaa="#0" SSS="#3" E="1"/>
        <Opcode byte="E6"/>
        <ModRM mode="11" reg="#0" rm="#1"/>
        <Immediate size="1" value="#2"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="VCVTFXPNTPD2UDQ" summary="Convert Double-Precision Floating-Point Vector to Fixed Point Unsigned Doubleword Integer Vector">
    <InstructionForm gas-name="vcvtfxpntpd2udq">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="S(zmm)" input="true" output="false"/>
      <Operand type="imm8"/>
      <Encoding>
        <MVEX mmmm="0011" pp="11" W="1" vvvv="0000" V="0" RR="#0" B="#1" X="#1" aaa="#0" SSS="#1" E="0"/>
        <Opcode byte="CA"/>
        <ModRM mode="11" reg="#0" rm="#1"/>
        <Immediate size="1" value="#2"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="vcvtfxpntpd2udq">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="B64(m512)" input="true" output="false"/>
      <Operand type="imm8"/>
      <Encoding>
        <MVEX mmmm="0011" pp="11" W="1" vvvv="0000" V="0" RR="#0" B="#1" X="#1" aaa="#0" SSS="#1" E="#1" disp8xN="64"/>
        <Opcode byte="CA"/>
        <ModRM mode="#1" reg="#0" rm="#1"/>
        <Immediate size="1" value="#2"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="vcvtfxpntpd2udq">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="imm8"/>
      <Operand type="{sae}"/>
      <Encoding>
        <MVEX mmmm="0011" pp="11" W="1" vvvv="0000" V="0" RR="#0" B="#1" X="#1" aaa="#0" SSS="#3" E="1"/>
        <Opcode byte="CA"/>
        <ModRM mode="11" reg="#0" rm="#1"/>
        <Immediate size="1" value="#2"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="VCVTFXPNTPS2DQ" summary="Convert Single-Precision Vector to Fixed Point Signed Doubleword Integer Vector">
    <InstructionForm gas-name="vcvtfxpntps2dq">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="S(zmm)" input="true" output="false"/>
      <Operand type="imm8"/>
      <Encoding>
        <MVEX mmmm="0011" pp="01" W="0" vvvv="0000" V="0" RR="#0" B="#1" X="#1" aaa="#0" SSS="#1" E="0"/>
        <Opcode byte="CB"/>
        <ModRM mode="11" reg="#0" rm="#1"/>
        <Immediate size="1" value="#2"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="vcvtfxpntps2dq">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="BCf32(m512)" input="true" output="false"/>
      <Operand type="imm8"/>
      <Encoding>
        <MVEX mmmm="0011" pp="01" W="0" vvvv="0000" V="0" RR="#0" B="#1" X="#1" aaa="#0" SSS="#1" E="#1" disp8xN="64"/>
        <Opcode byte="CB"/>
        <ModRM mode="#1" reg="#0" rm="#1"/>
        <Immediate size="1" value="#2"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="vcvtfxpntps2dq">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="imm8"/>
      <Operand type="{sae}"/>
      <Encoding>
        <MVEX mmmm="0011" pp="01" W="0" vvvv="0000" V="0" RR="#0" B="#1" X="#1" aaa="#0" SSS="#3" E="1"/>
        <Opcode byte="CB"/>
        <ModRM mode="11" reg="#0" rm="#1"/>
        <Immediate size="1" value="#2"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="VCVTFXPNTPS2UDQ" summary="Convert Single-Precision Vector to Fixed Point Unsigned Doubleword Integer Vector">
    <InstructionForm gas-name="vcvtfxpntps2udq">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="S(zmm)" input="true" output="false"/>
      <Operand type="imm8"/>
      <Encoding>
        <MVEX mmmm="0011" pp="01" W="0" vvvv="0000" V="0" RR="#0" B="#1" X="#1" aaa="#0" SSS="#1" E="0"/>
        <Opcode byte="CA"/>
        <ModRM mode="11" reg="#0" rm="#1"/>
        <Immediate size="1" value="#2"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="vcvtfxpntps2udq">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="BCf32(m512)" input="true" output="false"/>
      <Operand type="imm8"/>
      <Encoding>
        <MVEX mmmm="0011" pp="01" W="0" vvvv="0000" V="0" RR="#0" B="#1" X="#1" aaa="#0" SSS="#1" E="#1" disp8xN="64"/>
        <Opcode byte="CA"/>
        <ModRM mode="#1" reg="#0" rm="#1"/>
        <Immediate size="1" value="#2"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="vcvtfxpntps2udq">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="imm8"/>
      <Operand type="{sae}"/>
      <Encoding>
        <MVEX mmmm="0011" pp="01" W="0" vvvv="0000" V="0" RR="#0" B="#1" X="#1" aaa="#0" SSS="#3" E="1"/>
        <Opcode byte="CA"/>
        <ModRM mode="11" reg="#0" rm="#1"/>
        <Immediate size="1" value="#2"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="VCVTFXPNTUDQ2PS" summary="Convert Fixed Point Unsigned Doubleword Integer Vector to Single-Precision Floating-Point Vector">
    <InstructionForm gas-name="vcvtfxpntudq2ps">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="S(zmm)" input="true" output="false"/>
      <Operand type="imm8"/>
      <Encoding>
        <MVEX mmmm="0011" pp="00" W="0" vvvv="0000" V="0" RR="#0" B="#1" X="#1" aaa="#0" SSS="#1" E="0"/>
        <Opcode byte="CA"/>
        <ModRM mode="11" reg="#0" rm="#1"/>
        <Immediate size="1" value="#2"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="vcvtfxpntudq2ps">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="BCi32(m512)" input="true" output="false"/>
      <Operand type="imm8"/>
      <Encoding>
        <MVEX mmmm="0011" pp="00" W="0" vvvv="0000" V="0" RR="#0" B="#1" X="#1" aaa="#0" SSS="#1" E="#1" disp8xN="64"/>
        <Opcode byte="CA"/>
        <ModRM mode="#1" reg="#0" rm="#1"/>
        <Immediate size="1" value="#2"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="vcvtfxpntudq2ps">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="imm8"/>
      <Operand type="{sae}"/>
      <Encoding>
        <MVEX mmmm="0011" pp="00" W="0" vvvv="0000" V="0" RR="#0" B="#1" X="#1" aaa="#0" SSS="#3" E="1"/>
        <Opcode byte="CA"/>
        <ModRM mode="11" reg="#0" rm="#1"/>
        <Immediate size="1" value="#2"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="VCVTPD2PS" summary="Convert Packed Double-Precision FP Values to Packed Single-Precision FP Values">
    <InstructionForm gas-name="vcvtpd2ps">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="S(zmm)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0001" pp="01" W="1" vvvv="0000" V="0" RR="#0" B="#1" X="#1" aaa="#0" SSS="#1" E="0"/>
        <Opcode byte="5A"/>
        <ModRM mode="11" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="vcvtpd2ps">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="B64(m512)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0001" pp="01" W="1" vvvv="0000" V="0" RR="#0" B="#1" X="#1" aaa="#0" SSS="#1" E="#1" disp8xN="64"/>
        <Opcode byte="5A"/>
        <ModRM mode="#1" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="vcvtpd2ps">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="{er}"/>
      <Encoding>
        <MVEX mmmm="0001" pp="01" W="1" vvvv="0000" V="0" RR="#0" B="#1" X="#1" aaa="#0" SSS="#2" E="1"/>
        <Opcode byte="5A"/>
        <ModRM mode="11" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="VCVTPS2PD" summary="Convert Packed Single-Precision FP Values to Packed Double-Precision FP Values">
    <InstructionForm gas-name="vcvtps2pd">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="BCf32(m512)" input="true" output="false" allow-conversion="false"/>
      <Encoding>
        <MVEX mmmm="0001" pp="00" W="0" vvvv="0000" V="0" RR="#0" B="#1" X="#1" aaa="#0" SSS="#1" E="#1" disp8xN="32"/>
        <Opcode byte="5A"/>
        <ModRM mode="#1" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="vcvtps2pd">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="{er}"/>
      <Encoding>
        <MVEX mmmm="0001" pp="00" W="0" vvvv="0000" V="0" RR="#0" B="#1" X="#1" aaa="#0" SSS="#2" E="1"/>
        <Opcode byte="5A"/>
        <ModRM mode="11" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="VCVTUDQ2PD" summary="Convert Packed Unsigned Doubleword Integers to Packed Double-Precision Floating-Point Values">
    <InstructionForm gas-name="vcvtudq2pd">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="BCi32(m512)" input="true" output="false" allow-conversion="false"/>
      <Encoding>
        <MVEX mmmm="0001" pp="10" W="0" vvvv="0000" V="0" RR="#0" B="#1" X="#1" aaa="#0" SSS="#1" E="#1" disp8xN="32"/>
        <Opcode byte="7A"/>
        <ModRM mode="#1" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="vcvtudq2pd">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0001" pp="10" W="0" vvvv="0000" V="0" RR="#0" B="#1" X="#1" aaa="#0" SSS="000" E="0"/>
        <Opcode byte="7A"/>
        <ModRM mode="11" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="VEXP223PS" summary="Approximation to the Exponential 2^x of Packed Single-Precision Floating-Point Values with Less Than 2^-23 Relative Error">
    <InstructionForm gas-name="vexp223ps">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="0" vvvv="0000" V="0" RR="#0" B="#1" X="#1" aaa="#0" SSS="000"/>
        <Opcode byte="C8"/>
        <ModRM mode="11" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="vexp223ps">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="m512" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="0" vvvv="0000" V="0" RR="#0" B="#1" X="#1" aaa="#0" SSS="000" E="#1" disp8xN="64"/>
        <Opcode byte="C8"/>
        <ModRM mode="#1" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="VFIXUPNANPD" summary="Fix Up Special Double-Precision Floating-Point Numbers With NaN Passthrough">
    <InstructionForm gas-name="vfixupnanpd">
      <Operand type="zmm{k}" input="true" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="S(zmm)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="1" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#2" E="0"/>
        <Opcode byte="55"/>
        <ModRM mode="11" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="vfixupnanpd">
      <Operand type="zmm{k}" input="true" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="B64(m512)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="1" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#2" E="#2" disp8xN="64"/>
        <Opcode byte="55"/>
        <ModRM mode="#2" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="vfixupnanpd">
      <Operand type="zmm{k}" input="true" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="{sae}"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="1" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#3" E="1"/>
        <Opcode byte="55"/>
        <ModRM mode="11" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="VFIXUPNANPS" summary="Fix Up Special Single-Precision Floating-Point Numbers With NaN Passthrough">
    <InstructionForm gas-name="vfixupnanps">
      <Operand type="zmm{k}" input="true" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="S(zmm)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="0" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#2" E="0"/>
        <Opcode byte="55"/>
        <ModRM mode="11" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="vfixupnanps">
      <Operand type="zmm{k}" input="true" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="BCi32(m512)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="0" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#2" E="#2" disp8xN="64"/>
        <Opcode byte="55"/>
        <ModRM mode="#2" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="vfixupnanps">
      <Operand type="zmm{k}" input="true" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="{sae}"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="0" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#3" E="1"/>
        <Opcode byte="55"/>
        <ModRM mode="11" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="VFMADD132PD" summary="Fused Multiply-Add of Packed Double-Precision Floating-Point Values">
    <InstructionForm gas-name="vfmadd132pd">
      <Operand type="zmm{k}" input="true" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="S(zmm)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="1" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#2" E="0"/>
        <Opcode byte="98"/>
        <ModRM mode="11" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="vfmadd132pd">
      <Operand type="zmm{k}" input="true" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="B64(m512)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="1" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#2" E="#2" disp8xN="64"/>
        <Opcode byte="98"/>
        <ModRM mode="#2" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="vfmadd132pd">
      <Operand type="zmm{k}" input="true" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="{er}"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="1" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#3" E="1"/>
        <Opcode byte="98"/>
        <ModRM mode="11" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="VFMADD132PS" summary="Fused Multiply-Add of Packed Single-Precision Floating-Point Values">
    <InstructionForm gas-name="vfmadd132ps">
      <Operand type="zmm{k}" input="true" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="S(zmm)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="0" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#2" E="0"/>
        <Opcode byte="98"/>
        <ModRM mode="11" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="vfmadd132ps">
      <Operand type="zmm{k}" input="true" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="BCf32(m512)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="0" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#2" E="#2" disp8xN="64"/>
        <Opcode byte="98"/>
        <ModRM mode="#2" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="vfmadd132ps">
      <Operand type="zmm{k}" input="true" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="{er}"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="0" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#3" E="1"/>
        <Opcode byte="98"/>
        <ModRM mode="11" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="VFMADD213PD" summary="Fused Multiply-Add of Packed Double-Precision Floating-Point Values">
    <InstructionForm gas-name="vfmadd213pd">
      <Operand type="zmm{k}" input="true" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="S(zmm)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="1" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#2" E="0"/>
        <Opcode byte="A8"/>
        <ModRM mode="11" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="vfmadd213pd">
      <Operand type="zmm{k}" input="true" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="B64(m512)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="1" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#2" E="#2" disp8xN="64"/>
        <Opcode byte="A8"/>
        <ModRM mode="#2" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="vfmadd213pd">
      <Operand type="zmm{k}" input="true" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="{er}"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="1" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#3" E="1"/>
        <Opcode byte="A8"/>
        <ModRM mode="11" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="VFMADD213PS" summary="Fused Multiply-Add of Packed Single-Precision Floating-Point Values">
    <InstructionForm gas-name="vfmadd213ps">
      <Operand type="zmm{k}" input="true" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="S(zmm)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="0" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#2" E="0"/>
        <Opcode byte="A8"/>
        <ModRM mode="11" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="vfmadd213ps">
      <Operand type="zmm{k}" input="true" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="BCf32(m512)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="0" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#2" E="#2" disp8xN="64"/>
        <Opcode byte="A8"/>
        <ModRM mode="#2" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="vfmadd213ps">
      <Operand type="zmm{k}" input="true" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="{er}"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="0" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#3" E="1"/>
        <Opcode byte="A8"/>
        <ModRM mode="11" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="VFMADD231PD" summary="Fused Multiply-Add of Packed Double-Precision Floating-Point Values">
    <InstructionForm gas-name="vfmadd231pd">
      <Operand type="zmm{k}" input="true" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="S(zmm)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="1" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#2" E="0"/>
        <Opcode byte="B8"/>
        <ModRM mode="11" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="vfmadd231pd">
      <Operand type="zmm{k}" input="true" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="B64(m512)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="1" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#2" E="#2" disp8xN="64"/>
        <Opcode byte="B8"/>
        <ModRM mode="#2" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="vfmadd231pd">
      <Operand type="zmm{k}" input="true" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="{er}"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="1" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#3" E="1"/>
        <Opcode byte="B8"/>
        <ModRM mode="11" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="VFMADD231PS" summary="Fused Multiply-Add of Packed Single-Precision Floating-Point Values">
    <InstructionForm gas-name="vfmadd231ps">
      <Operand type="zmm{k}" input="true" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="S(zmm)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="0" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#2" E="0"/>
        <Opcode byte="B8"/>
        <ModRM mode="11" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="vfmadd231ps">
      <Operand type="zmm{k}" input="true" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="BCf32(m512)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="0" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#2" E="#2" disp8xN="64"/>
        <Opcode byte="B8"/>
        <ModRM mode="#2" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="vfmadd231ps">
      <Operand type="zmm{k}" input="true" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="{er}"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="0" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#3" E="1"/>
        <Opcode byte="B8"/>
        <ModRM mode="11" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="VFMADD233PS" summary="Fused Multiply First Source By Specially Swizzled Second Source and Add To Second Source of Single-Precision Floating-Point Values">
    <InstructionForm gas-name="vfmadd233ps">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="BCf32(m512)" input="true" output="false" allow-1to16="false" allow-conversion="false"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="0" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#2" E="#2" disp8xN="64"/>
        <Opcode byte="A4"/>
        <ModRM mode="#2" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="vfmadd233ps">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="{er}"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="0" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#3" E="1"/>
        <Opcode byte="A4"/>
        <ModRM mode="11" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="VFMSUB132PD" summary="Fused Multiply-Subtract of Packed Double-Precision Floating-Point Values">
    <InstructionForm gas-name="vfmsub132pd">
      <Operand type="zmm{k}" input="true" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="S(zmm)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="1" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#2" E="0"/>
        <Opcode byte="9A"/>
        <ModRM mode="11" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="vfmsub132pd">
      <Operand type="zmm{k}" input="true" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="B64(m512)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="1" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#2" E="#2" disp8xN="64"/>
        <Opcode byte="9A"/>
        <ModRM mode="#2" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="vfmsub132pd">
      <Operand type="zmm{k}" input="true" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="{er}"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="1" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#3" E="1"/>
        <Opcode byte="9A"/>
        <ModRM mode="11" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="VFMSUB132PS" summary="Fused Multiply-Subtract of Packed Single-Precision Floating-Point Values">
    <InstructionForm gas-name="vfmsub132ps">
      <Operand type="zmm{k}" input="true" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="S(zmm)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="0" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#2" E="0"/>
        <Opcode byte="9A"/>
        <ModRM mode="11" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="vfmsub132ps">
      <Operand type="zmm{k}" input="true" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="BCf32(m512)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="0" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#2" E="#2" disp8xN="64"/>
        <Opcode byte="9A"/>
        <ModRM mode="#2" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="vfmsub132ps">
      <Operand type="zmm{k}" input="true" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="{er}"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="0" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#3" E="1"/>
        <Opcode byte="9A"/>
        <ModRM mode="11" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="VFMSUB213PD" summary="Fused Multiply-Subtract of Packed Double-Precision Floating-Point Values">
    <InstructionForm gas-name="vfmsub213pd">
      <Operand type="zmm{k}" input="true" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="S(zmm)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="1" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#2" E="0"/>
        <Opcode byte="AA"/>
        <ModRM mode="11" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="vfmsub213pd">
      <Operand type="zmm{k}" input="true" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="B64(m512)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="1" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#2" E="#2" disp8xN="64"/>
        <Opcode byte="AA"/>
        <ModRM mode="#2" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="vfmsub213pd">
      <Operand type="zmm{k}" input="true" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="{er}"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="1" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#3" E="1"/>
        <Opcode byte="AA"/>
        <ModRM mode="11" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="VFMSUB213PS" summary="Fused Multiply-Subtract of Packed Single-Precision Floating-Point Values">
    <InstructionForm gas-name="vfmsub213ps">
      <Operand type="zmm{k}" input="true" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="S(zmm)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="0" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#2" E="0"/>
        <Opcode byte="AA"/>
        <ModRM mode="11" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="vfmsub213ps">
      <Operand type="zmm{k}" input="true" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="BCf32(m512)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="0" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#2" E="#2" disp8xN="64"/>
        <Opcode byte="AA"/>
        <ModRM mode="#2" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="vfmsub213ps">
      <Operand type="zmm{k}" input="true" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="{er}"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="0" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#3" E="1"/>
        <Opcode byte="AA"/>
        <ModRM mode="11" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="VFMSUB231PD" summary="Fused Multiply-Subtract of Packed Double-Precision Floating-Point Values">
    <InstructionForm gas-name="vfmsub231pd">
      <Operand type="zmm{k}" input="true" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="S(zmm)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="1" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#2" E="0"/>
        <Opcode byte="BA"/>
        <ModRM mode="11" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="vfmsub231pd">
      <Operand type="zmm{k}" input="true" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="B64(m512)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="1" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#2" E="#2" disp8xN="64"/>
        <Opcode byte="BA"/>
        <ModRM mode="#2" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="vfmsub231pd">
      <Operand type="zmm{k}" input="true" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="{er}"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="1" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#3" E="1"/>
        <Opcode byte="BA"/>
        <ModRM mode="11" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="VFMSUB231PS" summary="Fused Multiply-Subtract of Packed Single-Precision Floating-Point Values">
    <InstructionForm gas-name="vfmsub231ps">
      <Operand type="zmm{k}" input="true" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="S(zmm)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="0" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#2" E="0"/>
        <Opcode byte="BA"/>
        <ModRM mode="11" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="vfmsub231ps">
      <Operand type="zmm{k}" input="true" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="BCf32(m512)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="0" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#2" E="#2" disp8xN="64"/>
        <Opcode byte="BA"/>
        <ModRM mode="#2" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="vfmsub231ps">
      <Operand type="zmm{k}" input="true" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="{er}"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="0" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#3" E="1"/>
        <Opcode byte="BA"/>
        <ModRM mode="11" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="VFNMADD132PD" summary="Fused Negative Multiply-Add of Packed Double-Precision Floating-Point Values">
    <InstructionForm gas-name="vfnmadd132pd">
      <Operand type="zmm{k}" input="true" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="S(zmm)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="1" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#2" E="0"/>
        <Opcode byte="9C"/>
        <ModRM mode="11" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="vfnmadd132pd">
      <Operand type="zmm{k}" input="true" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="B64(m512)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="1" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#2" E="#2" disp8xN="64"/>
        <Opcode byte="9C"/>
        <ModRM mode="#2" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="vfnmadd132pd">
      <Operand type="zmm{k}" input="true" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="{er}"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="1" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#3" E="1"/>
        <Opcode byte="9C"/>
        <ModRM mode="11" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="VFNMADD132PS" summary="Fused Negative Multiply-Add of Packed Single-Precision Floating-Point Values">
    <InstructionForm gas-name="vfnmadd132ps">
      <Operand type="zmm{k}" input="true" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="S(zmm)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="0" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#2" E="0"/>
        <Opcode byte="9C"/>
        <ModRM mode="11" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="vfnmadd132ps">
      <Operand type="zmm{k}" input="true" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="BCf32(m512)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="0" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#2" E="#2" disp8xN="64"/>
        <Opcode byte="9C"/>
        <ModRM mode="#2" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="vfnmadd132ps">
      <Operand type="zmm{k}" input="true" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="{er}"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="0" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#3" E="1"/>
        <Opcode byte="9C"/>
        <ModRM mode="11" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="VFNMADD213PD" summary="Fused Negative Multiply-Add of Packed Double-Precision Floating-Point Values">
    <InstructionForm gas-name="vfnmadd213pd">
      <Operand type="zmm{k}" input="true" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="S(zmm)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="1" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#2" E="0"/>
        <Opcode byte="AC"/>
        <ModRM mode="11" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="vfnmadd213pd">
      <Operand type="zmm{k}" input="true" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="B64(m512)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="1" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#2" E="#2" disp8xN="64"/>
        <Opcode byte="AC"/>
        <ModRM mode="#2" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="vfnmadd213pd">
      <Operand type="zmm{k}" input="true" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="{er}"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="1" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#3" E="1"/>
        <Opcode byte="AC"/>
        <ModRM mode="11" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="VFNMADD213PS" summary="Fused Negative Multiply-Add of Packed Single-Precision Floating-Point Values">
    <InstructionForm gas-name="vfnmadd213ps">
      <Operand type="zmm{k}" input="true" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="S(zmm)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="0" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#2" E="0"/>
        <Opcode byte="AC"/>
        <ModRM mode="11" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="vfnmadd213ps">
      <Operand type="zmm{k}" input="true" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="BCf32(m512)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="0" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#2" E="#2" disp8xN="64"/>
        <Opcode byte="AC"/>
        <ModRM mode="#2" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="vfnmadd213ps">
      <Operand type="zmm{k}" input="true" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="{er}"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="0" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#3" E="1"/>
        <Opcode byte="AC"/>
        <ModRM mode="11" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="VFNMADD231PD" summary="Fused Negative Multiply-Add of Packed Double-Precision Floating-Point Values">
    <InstructionForm gas-name="vfnmadd231pd">
      <Operand type="zmm{k}" input="true" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="S(zmm)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="1" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#2" E="0"/>
        <Opcode byte="BC"/>
        <ModRM mode="11" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="vfnmadd231pd">
      <Operand type="zmm{k}" input="true" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="B64(m512)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="1" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#2" E="#2" disp8xN="64"/>
        <Opcode byte="BC"/>
        <ModRM mode="#2" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="vfnmadd231pd">
      <Operand type="zmm{k}" input="true" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="{er}"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="1" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#3" E="1"/>
        <Opcode byte="BC"/>
        <ModRM mode="11" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="VFNMADD231PS" summary="Fused Negative Multiply-Add of Packed Single-Precision Floating-Point Values">
    <InstructionForm gas-name="vfnmadd231ps">
      <Operand type="zmm{k}" input="true" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="S(zmm)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="0" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#2" E="0"/>
        <Opcode byte="BC"/>
        <ModRM mode="11" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="vfnmadd231ps">
      <Operand type="zmm{k}" input="true" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="BCf32(m512)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="0" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#2" E="#2" disp8xN="64"/>
        <Opcode byte="BC"/>
        <ModRM mode="#2" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="vfnmadd231ps">
      <Operand type="zmm{k}" input="true" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="{er}"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="0" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#3" E="1"/>
        <Opcode byte="BC"/>
        <ModRM mode="11" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="VFNMSUB132PD" summary="Fused Negative Multiply-Subtract of Packed Double-Precision Floating-Point Values">
    <InstructionForm gas-name="vfnmsub132pd">
      <Operand type="zmm{k}" input="true" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="S(zmm)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="1" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#2" E="0"/>
        <Opcode byte="9E"/>
        <ModRM mode="11" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="vfnmsub132pd">
      <Operand type="zmm{k}" input="true" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="B64(m512)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="1" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#2" E="#2" disp8xN="64"/>
        <Opcode byte="9E"/>
        <ModRM mode="#2" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="vfnmsub132pd">
      <Operand type="zmm{k}" input="true" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="{er}"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="1" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#3" E="1"/>
        <Opcode byte="9E"/>
        <ModRM mode="11" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="VFNMSUB132PS" summary="Fused Negative Multiply-Subtract of Packed Single-Precision Floating-Point Values">
    <InstructionForm gas-name="vfnmsub132ps">
      <Operand type="zmm{k}" input="true" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="S(zmm)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="0" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#2" E="0"/>
        <Opcode byte="9E"/>
        <ModRM mode="11" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="vfnmsub132ps">
      <Operand type="zmm{k}" input="true" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="BCf32(m512)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="0" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#2" E="#2" disp8xN="64"/>
        <Opcode byte="9E"/>
        <ModRM mode="#2" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="vfnmsub132ps">
      <Operand type="zmm{k}" input="true" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="{er}"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="0" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#3" E="1"/>
        <Opcode byte="9E"/>
        <ModRM mode="11" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="VFNMSUB213PD" summary="Fused Negative Multiply-Subtract of Packed Double-Precision Floating-Point Values">
    <InstructionForm gas-name="vfnmsub213pd">
      <Operand type="zmm{k}" input="true" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="S(zmm)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="1" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#2" E="0"/>
        <Opcode byte="AE"/>
        <ModRM mode="11" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="vfnmsub213pd">
      <Operand type="zmm{k}" input="true" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="B64(m512)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="1" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#2" E="#2" disp8xN="64"/>
        <Opcode byte="AE"/>
        <ModRM mode="#2" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="vfnmsub213pd">
      <Operand type="zmm{k}" input="true" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="{er}"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="1" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#3" E="1"/>
        <Opcode byte="AE"/>
        <ModRM mode="11" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="VFNMSUB213PS" summary="Fused Negative Multiply-Subtract of Packed Single-Precision Floating-Point Values">
    <InstructionForm gas-name="vfnmsub213ps">
      <Operand type="zmm{k}" input="true" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="S(zmm)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="0" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#2" E="0"/>
        <Opcode byte="AE"/>
        <ModRM mode="11" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="vfnmsub213ps">
      <Operand type="zmm{k}" input="true" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="BCf32(m512)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="0" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#2" E="#2" disp8xN="64"/>
        <Opcode byte="AE"/>
        <ModRM mode="#2" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="vfnmsub213ps">
      <Operand type="zmm{k}" input="true" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="{er}"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="0" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#3" E="1"/>
        <Opcode byte="AE"/>
        <ModRM mode="11" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="VFNMSUB231PD" summary="Fused Negative Multiply-Subtract of Packed Double-Precision Floating-Point Values">
    <InstructionForm gas-name="vfnmsub231pd">
      <Operand type="zmm{k}" input="true" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="S(zmm)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="1" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#2" E="0"/>
        <Opcode byte="BE"/>
        <ModRM mode="11" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="vfnmsub231pd">
      <Operand type="zmm{k}" input="true" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="B64(m512)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="1" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#2" E="#2" disp8xN="64"/>
        <Opcode byte="BE"/>
        <ModRM mode="#2" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="vfnmsub231pd">
      <Operand type="zmm{k}" input="true" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="{er}"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="1" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#3" E="1"/>
        <Opcode byte="BE"/>
        <ModRM mode="11" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="VFNMSUB231PS" summary="Fused Negative Multiply-Subtract of Packed Single-Precision Floating-Point Values">
    <InstructionForm gas-name="vfnmsub231ps">
      <Operand type="zmm{k}" input="true" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="S(zmm)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="0" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#2" E="0"/>
        <Opcode byte="BE"/>
        <ModRM mode="11" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="vfnmsub231ps">
      <Operand type="zmm{k}" input="true" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="BCf32(m512)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="0" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#2" E="#2" disp8xN="64"/>
        <Opcode byte="BE"/>
        <ModRM mode="#2" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="vfnmsub231ps">
      <Operand type="zmm{k}" input="true" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="{er}"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="0" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#3" E="1"/>
        <Opcode byte="BE"/>
        <ModRM mode="11" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="VGATHERDPD" summary="Gather Packed Double-Precision Floating-Point Values Using Signed Doubleword Indices">
    <InstructionForm gas-name="vgatherdpd">
      <Operand type="zmm{k}" input="true" output="true"/>
      <Operand type="vm32z" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="1" vvvv="0000" V="#1" RR="#0" B="#1" X="#1" aaa="#0" SSS="000" E="#1" disp8xN="8"/>
        <Opcode byte="92"/>
        <ModRM mode="#1" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="VGATHERDPS" summary="Gather Packed Single-Precision Floating-Point Values Using Signed Doubleword Indices">
    <InstructionForm gas-name="vgatherdps">
      <Operand type="zmm{k}" input="true" output="true"/>
      <Operand type="Cf32(vm32z)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="0" vvvv="0000" V="#1" RR="#0" B="#1" X="#1" aaa="#0" SSS="#1" E="#1" disp8xN="4"/>
        <Opcode byte="92"/>
        <ModRM mode="#1" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="VGATHERPF0DPS" summary="Sparse Prefetch Packed Single-Precision Floating-Point Data Values with Signed Doubleword Indices Using T0 Hint">
    <InstructionForm gas-name="vgatherpf0dps">
      <Operand type="Cf32(vm32z){k}" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="0" vvvv="0000" V="#0" B="#0" X="#0" aaa="#0" SSS="#0" E="#0" disp8xN="4"/>
        <Opcode byte="C6"/>
        <ModRM mode="#0" reg="1" rm="#0"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="VGATHERPF0HINTDPD" summary="Sparse Prefetch Hint Packed Double-Precision Floating-Point Data Values with Signed Doubleword Indices">
    <InstructionForm gas-name="vgatherpf0hintdpd">
      <Operand type="vm32z{k}" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="1" vvvv="0000" V="#0" B="#0" X="#0" aaa="#0" SSS="000" E="#0" disp8xN="8"/>
        <Opcode byte="C6"/>
        <ModRM mode="#0" reg="0" rm="#0"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="VGATHERPF0HINTDPS" summary="Sparse Prefetch Hint Packed Single-Precision Floating-Point Data Values with Signed Doubleword Indices">
    <InstructionForm gas-name="vgatherpf0hintdps">
      <Operand type="Cf32(vm32z){k}" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="0" vvvv="0000" V="#0" B="#0" X="#0" aaa="#0" SSS="#0" E="#0" disp8xN="4"/>
        <Opcode byte="C6"/>
        <ModRM mode="#0" reg="0" rm="#0"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="VGATHERPF1DPS" summary="Sparse Prefetch Packed Single-Precision Floating-Point Data Values with Signed Doubleword Indices Using T1 Hint">
    <InstructionForm gas-name="vgatherpf1dps">
      <Operand type="Cf32(vm32z){k}" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="0" vvvv="0000" V="#0" B="#0" X="#0" aaa="#0" SSS="#0" E="#0" disp8xN="4"/>
        <Opcode byte="C6"/>
        <ModRM mode="#0" reg="2" rm="#0"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="VGETEXPPD" summary="Extract Exponents of Packed Double-Precision Floating-Point Values as Double-Precision Floating-Point Values">
    <InstructionForm gas-name="vgetexppd">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="S(zmm)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="1" vvvv="0000" V="0" RR="#0" B="#1" X="#1" aaa="#0" SSS="#1" E="0"/>
        <Opcode byte="42"/>
        <ModRM mode="11" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="vgetexppd">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="B64(m512)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="1" vvvv="0000" V="0" RR="#0" B="#1" X="#1" aaa="#0" SSS="#1" E="#1" disp8xN="64"/>
        <Opcode byte="42"/>
        <ModRM mode="#1" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="vgetexppd">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="{sae}"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="1" vvvv="0000" V="0" RR="#0" B="#1" X="#1" aaa="#0" SSS="#2" E="1"/>
        <Opcode byte="42"/>
        <ModRM mode="11" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="VGETEXPPS" summary="Extract Exponents of Packed Single-Precision Floating-Point Values as Single-Precision Floating-Point Values">
    <InstructionForm gas-name="vgetexpps">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="S(zmm)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="0" vvvv="0000" V="0" RR="#0" B="#1" X="#1" aaa="#0" SSS="#1" E="0"/>
        <Opcode byte="42"/>
        <ModRM mode="11" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="vgetexpps">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="BCf32(m512)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="0" vvvv="0000" V="0" RR="#0" B="#1" X="#1" aaa="#0" SSS="#1" E="#1" disp8xN="64"/>
        <Opcode byte="42"/>
        <ModRM mode="#1" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="vgetexpps">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="{sae}"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="0" vvvv="0000" V="0" RR="#0" B="#1" X="#1" aaa="#0" SSS="#2" E="1"/>
        <Opcode byte="42"/>
        <ModRM mode="11" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="VGETMANTPD" summary="Extract Normalized Mantissas from Packed Double-Precision Floating-Point Values">
    <InstructionForm gas-name="vgetmantpd">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="S(zmm)" input="true" output="false"/>
      <Operand type="imm8"/>
      <Encoding>
        <MVEX mmmm="0011" pp="01" W="1" vvvv="0000" V="0" RR="#0" B="#1" X="#1" aaa="#0" SSS="#1" E="0"/>
        <Opcode byte="26"/>
        <ModRM mode="11" reg="#0" rm="#1"/>
        <Immediate size="1" value="#2"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="vgetmantpd">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="B64(m512)" input="true" output="false"/>
      <Operand type="imm8"/>
      <Encoding>
        <MVEX mmmm="0011" pp="01" W="1" vvvv="0000" V="0" RR="#0" B="#1" X="#1" aaa="#0" SSS="#1" E="#1" disp8xN="64"/>
        <Opcode byte="26"/>
        <ModRM mode="#1" reg="#0" rm="#1"/>
        <Immediate size="1" value="#2"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="vgetmantpd">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="imm8"/>
      <Operand type="{sae}"/>
      <Encoding>
        <MVEX mmmm="0011" pp="01" W="1" vvvv="0000" V="0" RR="#0" B="#1" X="#1" aaa="#0" SSS="#3" E="1"/>
        <Opcode byte="26"/>
        <ModRM mode="11" reg="#0" rm="#1"/>
        <Immediate size="1" value="#2"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="VGETMANTPS" summary="Extract Normalized Mantissas from Packed Single-Precision Floating-Point Values">
    <InstructionForm gas-name="vgetmantps">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="S(zmm)" input="true" output="false"/>
      <Operand type="imm8"/>
      <Encoding>
        <MVEX mmmm="0011" pp="01" W="0" vvvv="0000" V="0" RR="#0" B="#1" X="#1" aaa="#0" SSS="#1" E="0"/>
        <Opcode byte="26"/>
        <ModRM mode="11" reg="#0" rm="#1"/>
        <Immediate size="1" value="#2"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="vgetmantps">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="BCf32(m512)" input="true" output="false"/>
      <Operand type="imm8"/>
      <Encoding>
        <MVEX mmmm="0011" pp="01" W="0" vvvv="0000" V="0" RR="#0" B="#1" X="#1" aaa="#0" SSS="#1" E="#1" disp8xN="64"/>
        <Opcode byte="26"/>
        <ModRM mode="#1" reg="#0" rm="#1"/>
        <Immediate size="1" value="#2"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="vgetmantps">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="imm8"/>
      <Operand type="{sae}"/>
      <Encoding>
        <MVEX mmmm="0011" pp="01" W="0" vvvv="0000" V="0" RR="#0" B="#1" X="#1" aaa="#0" SSS="#3" E="1"/>
        <Opcode byte="26"/>
        <ModRM mode="11" reg="#0" rm="#1"/>
        <Immediate size="1" value="#2"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="VGMAXABSPS" summary="Maximum of Absolute Values of Packed Single-Precision Floating-Point Values">
    <InstructionForm gas-name="vgmaxabsps">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="S(zmm)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="0" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#2" E="0"/>
        <Opcode byte="51"/>
        <ModRM mode="11" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="vgmaxabsps">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="BCf32(m512)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="0" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#2" E="#2" disp8xN="64"/>
        <Opcode byte="51"/>
        <ModRM mode="#2" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="vgmaxabsps">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="{sae}"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="0" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#3" E="1"/>
        <Opcode byte="51"/>
        <ModRM mode="11" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="VGMAXPD" summary="Maximum of Packed Double-Precision Floating-Point Values">
    <InstructionForm gas-name="vgmaxpd">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="S(zmm)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="1" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#2" E="0"/>
        <Opcode byte="53"/>
        <ModRM mode="11" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="vgmaxpd">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="B64(m512)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="1" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#2" E="#2" disp8xN="64"/>
        <Opcode byte="53"/>
        <ModRM mode="#2" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="vgmaxpd">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="{sae}"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="1" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#3" E="1"/>
        <Opcode byte="53"/>
        <ModRM mode="11" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="VGMAXPS" summary="Maximum of Packed Single-Precision Floating-Point Values">
    <InstructionForm gas-name="vgmaxps">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="S(zmm)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="0" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#2" E="0"/>
        <Opcode byte="53"/>
        <ModRM mode="11" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="vgmaxps">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="BCf32(m512)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="0" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#2" E="#2" disp8xN="64"/>
        <Opcode byte="53"/>
        <ModRM mode="#2" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="vgmaxps">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="{sae}"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="0" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#3" E="1"/>
        <Opcode byte="53"/>
        <ModRM mode="11" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="VGMINPD" summary="Minimum of Packed Double-Precision Floating-Point Values">
    <InstructionForm gas-name="vgminpd">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="S(zmm)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="1" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#2" E="0"/>
        <Opcode byte="52"/>
        <ModRM mode="11" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="vgminpd">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="B64(m512)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="1" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#2" E="#2" disp8xN="64"/>
        <Opcode byte="52"/>
        <ModRM mode="#2" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="vgminpd">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="{sae}"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="1" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#3" E="1"/>
        <Opcode byte="52"/>
        <ModRM mode="11" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="VGMINPS" summary="Minimum of Packed Single-Precision Floating-Point Values">
    <InstructionForm gas-name="vgminps">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="S(zmm)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="0" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#2" E="0"/>
        <Opcode byte="52"/>
        <ModRM mode="11" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="vgminps">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="BCf32(m512)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="0" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#2" E="#2" disp8xN="64"/>
        <Opcode byte="52"/>
        <ModRM mode="#2" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="vgminps">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="{sae}"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="0" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#3" E="1"/>
        <Opcode byte="52"/>
        <ModRM mode="11" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="VLOADUNPACKHD" summary="Load Unaligned High And Unpack To Doubleword Vector">
    <InstructionForm gas-name="vloadunpackhd">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="Ci32(m512)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0010" pp="00" W="0" vvvv="0000" V="0" RR="#0" B="#1" X="#1" aaa="#0" SSS="#1" E="#1" disp8xN="8"/>
        <Opcode byte="D4"/>
        <ModRM mode="#1" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="VLOADUNPACKHPD" summary="Load Unaligned High And Unpack To Double-Precision Floating-Point Vector">
    <InstructionForm gas-name="vloadunpackhpd">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="m512" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0010" pp="00" W="1" vvvv="0000" V="0" RR="#0" B="#1" X="#1" aaa="#0" SSS="000" E="#1" disp8xN="8"/>
        <Opcode byte="D5"/>
        <ModRM mode="#1" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="VLOADUNPACKHPS" summary="Load Unaligned High And Unpack To Single-Precision Floating-Point Vector">
    <InstructionForm gas-name="vloadunpackhps">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="Cf32(m512)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0010" pp="00" W="0" vvvv="0000" V="0" RR="#0" B="#1" X="#1" aaa="#0" SSS="#1" E="#1" disp8xN="4"/>
        <Opcode byte="D5"/>
        <ModRM mode="#1" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="VLOADUNPACKHQ" summary="Load Unaligned High And Unpack To Quadword Vector">
    <InstructionForm gas-name="vloadunpackhq">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="m512" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0010" pp="00" W="1" vvvv="0000" V="0" RR="#0" B="#1" X="#1" aaa="#0" SSS="000" E="#1" disp8xN="8"/>
        <Opcode byte="D4"/>
        <ModRM mode="#1" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="VLOADUNPACKLD" summary="Load Unaligned Low And Unpack To Doubleword Vector">
    <InstructionForm gas-name="vloadunpackld">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="Ci32(m512)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0010" pp="00" W="0" vvvv="0000" V="0" RR="#0" B="#1" X="#1" aaa="#0" SSS="#1" E="#1" disp8xN="8"/>
        <Opcode byte="D0"/>
        <ModRM mode="#1" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="VLOADUNPACKLPD" summary="Load Unaligned Low And Unpack To Double-Precision Floating-Point Vector">
    <InstructionForm gas-name="vloadunpacklpd">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="m512" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0010" pp="00" W="1" vvvv="0000" V="0" RR="#0" B="#1" X="#1" aaa="#0" SSS="000" E="#1" disp8xN="8"/>
        <Opcode byte="D1"/>
        <ModRM mode="#1" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="VLOADUNPACKLPS" summary="Load Unaligned Low And Unpack To Single-Precision Floating-Point Vector">
    <InstructionForm gas-name="vloadunpacklps">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="Cf32(m512)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0010" pp="00" W="0" vvvv="0000" V="0" RR="#0" B="#1" X="#1" aaa="#0" SSS="#1" E="#1" disp8xN="4"/>
        <Opcode byte="D1"/>
        <ModRM mode="#1" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="VLOADUNPACKLQ" summary="Load Unaligned Low And Unpack To Quadword Vector">
    <InstructionForm gas-name="vloadunpacklq">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="m512" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0010" pp="00" W="1" vvvv="0000" V="0" RR="#0" B="#1" X="#1" aaa="#0" SSS="000" E="#1" disp8xN="8"/>
        <Opcode byte="D0"/>
        <ModRM mode="#1" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="VLOG2PS" summary="Approximation to the Base-2 Logarithm of Packed Single-Precision Floating-Point Values">
    <InstructionForm gas-name="vlog2ps">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="0" vvvv="0000" V="0" RR="#0" B="#1" X="#1" aaa="#0" SSS="000"/>
        <Opcode byte="C9"/>
        <ModRM mode="11" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="vlog2ps">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="m512" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="0" vvvv="0000" V="0" RR="#0" B="#1" X="#1" aaa="#0" SSS="000" E="#1" disp8xN="64"/>
        <Opcode byte="C9"/>
        <ModRM mode="#1" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="VMOVAPD" summary="Move Aligned Packed Double-Precision Floating-Point Values">
    <InstructionForm gas-name="vmovapd">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="S(zmm)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0001" pp="01" W="1" vvvv="0000" V="0" RR="#0" B="#1" X="#1" aaa="#0" SSS="#1" E="0"/>
        <Opcode byte="28"/>
        <ModRM mode="11" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="vmovapd">
      <Operand type="m512{k}" input="false" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0001" pp="01" W="1" vvvv="0000" V="0" RR="#1" B="#0" X="#0" aaa="#0" SSS="000" E="#0" disp8xN="64"/>
        <Opcode byte="29"/>
        <ModRM mode="#0" reg="#1" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="vmovapd">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="m512" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0001" pp="01" W="1" vvvv="0000" V="0" RR="#0" B="#1" X="#1" aaa="#0" SSS="000" E="#1" disp8xN="64"/>
        <Opcode byte="28"/>
        <ModRM mode="#1" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="VMOVAPS" summary="Move Aligned Packed Single-Precision Floating-Point Values">
    <InstructionForm gas-name="vmovaps">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="Cf32(m512)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0001" pp="00" W="0" vvvv="0000" V="0" RR="#0" B="#1" X="#1" aaa="#0" SSS="#1" E="#1" disp8xN="64"/>
        <Opcode byte="28"/>
        <ModRM mode="#1" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="vmovaps">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="S(zmm)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0001" pp="00" W="0" vvvv="0000" V="0" RR="#0" B="#1" X="#1" aaa="#0" SSS="#1" E="0"/>
        <Opcode byte="28"/>
        <ModRM mode="11" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="vmovaps">
      <Operand type="m512{k}" input="false" output="true"/>
      <Operand type="Cf32(zmm)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0001" pp="00" W="0" vvvv="0000" V="0" RR="#1" B="#0" X="#0" aaa="#0" SSS="#1" E="#0" disp8xN="64"/>
        <Opcode byte="29"/>
        <ModRM mode="#0" reg="#1" rm="#0"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="VMOVDQA32" summary="Move Aligned Doubleword Values">
    <InstructionForm gas-name="vmovdqa32">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="Ci32(m512)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0001" pp="01" W="0" vvvv="0000" V="0" RR="#0" B="#1" X="#1" aaa="#0" SSS="#1" E="#1" disp8xN="64"/>
        <Opcode byte="6F"/>
        <ModRM mode="#1" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="vmovdqa32">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="S(zmm)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0001" pp="01" W="0" vvvv="0000" V="0" RR="#0" B="#1" X="#1" aaa="#0" SSS="#1" E="0"/>
        <Opcode byte="6F"/>
        <ModRM mode="11" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="vmovdqa32">
      <Operand type="m512{k}" input="false" output="true"/>
      <Operand type="Ci32(zmm)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0001" pp="01" W="0" vvvv="0000" V="0" RR="#1" B="#0" X="#0" aaa="#0" SSS="#1" E="#0" disp8xN="64"/>
        <Opcode byte="7F"/>
        <ModRM mode="#0" reg="#1" rm="#0"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="VMOVDQA64" summary="Move Aligned Quadword Values">
    <InstructionForm gas-name="vmovdqa64">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="S(zmm)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0001" pp="01" W="1" vvvv="0000" V="0" RR="#0" B="#1" X="#1" aaa="#0" SSS="#1" E="0"/>
        <Opcode byte="6F"/>
        <ModRM mode="11" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="vmovdqa64">
      <Operand type="m512{k}" input="false" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0001" pp="01" W="1" vvvv="0000" V="0" RR="#1" B="#0" X="#0" aaa="#0" SSS="000" E="#0" disp8xN="64"/>
        <Opcode byte="7F"/>
        <ModRM mode="#0" reg="#1" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="vmovdqa64">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="m512" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0001" pp="01" W="1" vvvv="0000" V="0" RR="#0" B="#1" X="#1" aaa="#0" SSS="000" E="#1" disp8xN="64"/>
        <Opcode byte="6F"/>
        <ModRM mode="#1" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="VMOVNRAPD" summary="Store Aligned Packed Double-Precision Floating-Point Values Using No-Read Hint">
    <InstructionForm gas-name="vmovnrapd">
      <Operand type="m512{k}" input="false" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0001" pp="10" W="1" vvvv="0000" V="0" RR="#1" B="#0" X="#0" aaa="#0" SSS="000" E="#0" disp8xN="64"/>
        <Opcode byte="29"/>
        <ModRM mode="#0" reg="#1" rm="#0"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="VMOVNRAPS" summary="Store Aligned Packed Single-Precision Floating-Point Values Using No-Read Hint">
    <InstructionForm gas-name="vmovnraps">
      <Operand type="m512{k}" input="false" output="true"/>
      <Operand type="Cf32(zmm)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0001" pp="11" W="0" vvvv="0000" V="0" RR="#1" B="#0" X="#0" aaa="#0" SSS="#1" E="#0" disp8xN="64"/>
        <Opcode byte="29"/>
        <ModRM mode="#0" reg="#1" rm="#0"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="VMOVNRNGOAPD" summary="Non-globally Ordered Store Aligned Packed Double-Precision Floating-Point Values Using No-Read Hint">
    <InstructionForm gas-name="vmovnrngoapd">
      <Operand type="m512{k}" input="false" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0001" pp="10" W="1" vvvv="0000" V="0" RR="#1" B="#0" X="#0" aaa="#0" SSS="000" E="#0" disp8xN="64"/>
        <Opcode byte="29"/>
        <ModRM mode="#0" reg="#1" rm="#0"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="VMOVNRNGOAPS" summary="Non-globally Ordered Store Aligned Packed Single-Precision Floating-Point Values Using No-Read Hint">
    <InstructionForm gas-name="vmovnrngoaps">
      <Operand type="m512{k}" input="false" output="true"/>
      <Operand type="Cf32(zmm)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0001" pp="11" W="0" vvvv="0000" V="0" RR="#1" B="#0" X="#0" aaa="#0" SSS="#1" E="#0" disp8xN="64"/>
        <Opcode byte="29"/>
        <ModRM mode="#0" reg="#1" rm="#0"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="VMULPD" summary="Multiply Packed Double-Precision Floating-Point Values">
    <InstructionForm gas-name="vmulpd">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="S(zmm)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0001" pp="01" W="1" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#2" E="0"/>
        <Opcode byte="59"/>
        <ModRM mode="11" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="vmulpd">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="B64(m512)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0001" pp="01" W="1" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#2" E="#2" disp8xN="64"/>
        <Opcode byte="59"/>
        <ModRM mode="#2" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="vmulpd">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="{er}"/>
      <Encoding>
        <MVEX mmmm="0001" pp="01" W="1" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#3" E="1"/>
        <Opcode byte="59"/>
        <ModRM mode="11" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="VMULPS" summary="Multiply Packed Single-Precision Floating-Point Values">
    <InstructionForm gas-name="vmulps">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="S(zmm)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0001" pp="00" W="0" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#2" E="0"/>
        <Opcode byte="59"/>
        <ModRM mode="11" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="vmulps">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="BCf32(m512)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0001" pp="00" W="0" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#2" E="#2" disp8xN="64"/>
        <Opcode byte="59"/>
        <ModRM mode="#2" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="vmulps">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="{er}"/>
      <Encoding>
        <MVEX mmmm="0001" pp="00" W="0" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#3" E="1"/>
        <Opcode byte="59"/>
        <ModRM mode="11" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="VPACKSTOREHD" summary="Pack and Store Unaligned High From Doubleword Vector">
    <InstructionForm gas-name="vpackstorehd">
      <Operand type="m512{k}" input="false" output="true"/>
      <Operand type="Ci32(zmm)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="0" vvvv="0000" V="0" RR="#1" B="#0" X="#0" aaa="#0" SSS="#1" E="#0" disp8xN="8"/>
        <Opcode byte="D4"/>
        <ModRM mode="#0" reg="#1" rm="#0"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="VPACKSTOREHPD" summary="Pack and Store Unaligned High From Double-Precision Floating-Point Vector">
    <InstructionForm gas-name="vpackstorehpd">
      <Operand type="m512{k}" input="false" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="1" vvvv="0000" V="0" RR="#1" B="#0" X="#0" aaa="#0" SSS="000" E="#0" disp8xN="8"/>
        <Opcode byte="D5"/>
        <ModRM mode="#0" reg="#1" rm="#0"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="VPACKSTOREHPS" summary="Pack and Store Unaligned High From Single-Precision Floating-Point Vector">
    <InstructionForm gas-name="vpackstorehps">
      <Operand type="m512{k}" input="false" output="true"/>
      <Operand type="Cf32(zmm)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="0" vvvv="0000" V="0" RR="#1" B="#0" X="#0" aaa="#0" SSS="#1" E="#0" disp8xN="4"/>
        <Opcode byte="D5"/>
        <ModRM mode="#0" reg="#1" rm="#0"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="VPACKSTOREHQ" summary="Pack and Store Unaligned High From Quadword Vector">
    <InstructionForm gas-name="vpackstorehq">
      <Operand type="m512{k}" input="false" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="1" vvvv="0000" V="0" RR="#1" B="#0" X="#0" aaa="#0" SSS="000" E="#0" disp8xN="8"/>
        <Opcode byte="D4"/>
        <ModRM mode="#0" reg="#1" rm="#0"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="VPACKSTORELD" summary="Pack and Store Unaligned Low From Doubleword Vector">
    <InstructionForm gas-name="vpackstoreld">
      <Operand type="m512{k}" input="false" output="true"/>
      <Operand type="Ci32(zmm)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="0" vvvv="0000" V="0" RR="#1" B="#0" X="#0" aaa="#0" SSS="#1" E="#0" disp8xN="8"/>
        <Opcode byte="D0"/>
        <ModRM mode="#0" reg="#1" rm="#0"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="VPACKSTORELPD" summary="Pack and Store Unaligned Low From Double-Precision Floating-Point Vector">
    <InstructionForm gas-name="vpackstorelpd">
      <Operand type="m512{k}" input="false" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="1" vvvv="0000" V="0" RR="#1" B="#0" X="#0" aaa="#0" SSS="000" E="#0" disp8xN="8"/>
        <Opcode byte="D1"/>
        <ModRM mode="#0" reg="#1" rm="#0"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="VPACKSTORELPS" summary="Pack and Store Unaligned Low From Single-Precision Floating-Point Vector">
    <InstructionForm gas-name="vpackstorelps">
      <Operand type="m512{k}" input="false" output="true"/>
      <Operand type="Cf32(zmm)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="0" vvvv="0000" V="0" RR="#1" B="#0" X="#0" aaa="#0" SSS="#1" E="#0" disp8xN="4"/>
        <Opcode byte="D1"/>
        <ModRM mode="#0" reg="#1" rm="#0"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="VPACKSTORELQ" summary="Pack and Store Unaligned Low From Quadword Vector">
    <InstructionForm gas-name="vpackstorelq">
      <Operand type="m512{k}" input="false" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="1" vvvv="0000" V="0" RR="#1" B="#0" X="#0" aaa="#0" SSS="000" E="#0" disp8xN="8"/>
        <Opcode byte="D0"/>
        <ModRM mode="#0" reg="#1" rm="#0"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="VPADCD" summary="Add Packed Doubleword Integers with Carry">
    <InstructionForm gas-name="vpadcd">
      <Operand type="zmm{k}" input="true" output="true"/>
      <Operand type="k" input="true" output="true"/>
      <Operand type="S(zmm)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="0" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#2" E="0"/>
        <Opcode byte="5C"/>
        <ModRM mode="11" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="vpadcd">
      <Operand type="zmm{k}" input="true" output="true"/>
      <Operand type="k" input="true" output="true"/>
      <Operand type="BCi32(m512)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="0" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#2" E="#2" disp8xN="64"/>
        <Opcode byte="5C"/>
        <ModRM mode="#2" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="VPADDD" summary="Add Packed Doubleword Integers">
    <InstructionForm gas-name="vpaddd">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="S(zmm)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0001" pp="01" W="0" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#2" E="0"/>
        <Opcode byte="FE"/>
        <ModRM mode="11" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="vpaddd">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="BCi32(m512)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0001" pp="01" W="0" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#2" E="#2" disp8xN="64"/>
        <Opcode byte="FE"/>
        <ModRM mode="#2" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="VPADDSETCD" summary="Add Packed Doubleword Integers and Set Mask to Carry">
    <InstructionForm gas-name="vpaddsetcd">
      <Operand type="zmm{k}" input="true" output="true"/>
      <Operand type="k" input="false" output="true"/>
      <Operand type="S(zmm)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="0" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#2" E="0"/>
        <Opcode byte="5D"/>
        <ModRM mode="11" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="vpaddsetcd">
      <Operand type="zmm{k}" input="true" output="true"/>
      <Operand type="k" input="false" output="true"/>
      <Operand type="BCi32(m512)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="0" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#2" E="#2" disp8xN="64"/>
        <Opcode byte="5D"/>
        <ModRM mode="#2" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="VPADDSETSD" summary="Add Packed Doubleword Integers and Set Mask to Sign">
    <InstructionForm gas-name="vpaddsetsd">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="S(zmm)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="0" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#2" E="0"/>
        <Opcode byte="CD"/>
        <ModRM mode="11" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="vpaddsetsd">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="BCi32(m512)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="0" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#2" E="#2" disp8xN="64"/>
        <Opcode byte="CD"/>
        <ModRM mode="#2" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="VPANDD" summary="Bitwise Logical AND of Packed Doubleword Integers">
    <InstructionForm gas-name="vpandd">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="S(zmm)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0001" pp="01" W="0" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#2" E="0"/>
        <Opcode byte="DB"/>
        <ModRM mode="11" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="vpandd">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="BCi32(m512)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0001" pp="01" W="0" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#2" E="#2" disp8xN="64"/>
        <Opcode byte="DB"/>
        <ModRM mode="#2" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="VPANDND" summary="Bitwise Logical AND NOT of Packed Doubleword Integers">
    <InstructionForm gas-name="vpandnd">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="S(zmm)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0001" pp="01" W="0" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#2" E="0"/>
        <Opcode byte="DF"/>
        <ModRM mode="11" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="vpandnd">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="BCi32(m512)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0001" pp="01" W="0" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#2" E="#2" disp8xN="64"/>
        <Opcode byte="DF"/>
        <ModRM mode="#2" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="VPANDNQ" summary="Bitwise Logical AND NOT of Packed Quadword Integers">
    <InstructionForm gas-name="vpandnq">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="S(zmm)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0001" pp="01" W="1" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#2" E="0"/>
        <Opcode byte="DF"/>
        <ModRM mode="11" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="vpandnq">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="B64(m512)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0001" pp="01" W="1" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#2" E="#2" disp8xN="64"/>
        <Opcode byte="DF"/>
        <ModRM mode="#2" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="VPANDQ" summary="Bitwise Logical AND of Packed Quadword Integers">
    <InstructionForm gas-name="vpandq">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="S(zmm)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0001" pp="01" W="1" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#2" E="0"/>
        <Opcode byte="DB"/>
        <ModRM mode="11" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="vpandq">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="B64(m512)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0001" pp="01" W="1" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#2" E="#2" disp8xN="64"/>
        <Opcode byte="DB"/>
        <ModRM mode="#2" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="VPBLENDMD" summary="Blend Doubleword Vectors Using an OpMask Control">
    <InstructionForm gas-name="vpblendmd">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="S(zmm)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="0" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#2" E="0"/>
        <Opcode byte="64"/>
        <ModRM mode="11" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="vpblendmd">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="BCi32(m512)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="0" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#2" E="#2" disp8xN="64"/>
        <Opcode byte="64"/>
        <ModRM mode="#2" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="VPBLENDMQ" summary="Blend Quadword Vectors Using an OpMask Control">
    <InstructionForm gas-name="vpblendmq">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="S(zmm)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="1" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#2" E="0"/>
        <Opcode byte="64"/>
        <ModRM mode="11" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="vpblendmq">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="B64(m512)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="1" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#2" E="#2" disp8xN="64"/>
        <Opcode byte="64"/>
        <ModRM mode="#2" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="VPBROADCASTD" summary="Broadcast Doubleword Integer">
    <InstructionForm gas-name="vpbroadcastd">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="Ci32(m512)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="0" vvvv="0000" V="0" RR="#0" B="#1" X="#1" aaa="#0" SSS="#1" E="#1" disp8xN="64"/>
        <Opcode byte="58"/>
        <ModRM mode="#1" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="VPBROADCASTQ" summary="Broadcast Quadword Integer">
    <InstructionForm gas-name="vpbroadcastq">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="m512" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="1" vvvv="0000" V="0" RR="#0" B="#1" X="#1" aaa="#0" SSS="000" E="#1" disp8xN="64"/>
        <Opcode byte="59"/>
        <ModRM mode="#1" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="VPCMPD" summary="Compare Packed Signed Doubleword Values">
    <InstructionForm gas-name="vpcmpd">
      <Operand type="k{k}" input="false" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="S(zmm)" input="true" output="false"/>
      <Operand type="imm8"/>
      <Encoding>
        <MVEX mmmm="0011" pp="01" W="0" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#2" E="0"/>
        <Opcode byte="1F"/>
        <ModRM mode="11" reg="#0" rm="#2"/>
        <Immediate size="1" value="#3"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="vpcmpd">
      <Operand type="k{k}" input="false" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="BCi32(m512)" input="true" output="false"/>
      <Operand type="imm8"/>
      <Encoding>
        <MVEX mmmm="0011" pp="01" W="0" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#2" E="#2" disp8xN="64"/>
        <Opcode byte="1F"/>
        <ModRM mode="#2" reg="#0" rm="#2"/>
        <Immediate size="1" value="#3"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="VPCMPEQD" summary="Compare Packed Doubleword Data for Equality">
    <InstructionForm gas-name="vpcmpeqd">
      <Operand type="k{k}" input="false" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="S(zmm)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0001" pp="01" W="0" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#2" E="0"/>
        <Opcode byte="76"/>
        <ModRM mode="11" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="vpcmpeqd">
      <Operand type="k{k}" input="false" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="BCi32(m512)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0001" pp="01" W="0" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#2" E="#2" disp8xN="64"/>
        <Opcode byte="76"/>
        <ModRM mode="#2" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="VPCMPGTD" summary="Compare Packed Signed Doubleword Integers for Greater Than">
    <InstructionForm gas-name="vpcmpgtd">
      <Operand type="k{k}" input="false" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="S(zmm)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0001" pp="01" W="0" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#2" E="0"/>
        <Opcode byte="66"/>
        <ModRM mode="11" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="vpcmpgtd">
      <Operand type="k{k}" input="false" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="BCi32(m512)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0001" pp="01" W="0" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#2" E="#2" disp8xN="64"/>
        <Opcode byte="66"/>
        <ModRM mode="#2" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="VPCMPLTD" summary="Compare Packed Signed Doubleword Integers for Less Than">
    <InstructionForm gas-name="vpcmpltd">
      <Operand type="k{k}" input="false" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="S(zmm)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="0" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#2" E="0"/>
        <Opcode byte="74"/>
        <ModRM mode="11" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="vpcmpltd">
      <Operand type="k{k}" input="false" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="BCi32(m512)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="0" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#2" E="#2" disp8xN="64"/>
        <Opcode byte="74"/>
        <ModRM mode="#2" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="VPCMPUD" summary="Compare Packed Unsigned Doubleword Values">
    <InstructionForm gas-name="vpcmpud">
      <Operand type="k{k}" input="false" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="S(zmm)" input="true" output="false"/>
      <Operand type="imm8"/>
      <Encoding>
        <MVEX mmmm="0011" pp="01" W="0" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#2" E="0"/>
        <Opcode byte="1E"/>
        <ModRM mode="11" reg="#0" rm="#2"/>
        <Immediate size="1" value="#3"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="vpcmpud">
      <Operand type="k{k}" input="false" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="BCi32(m512)" input="true" output="false"/>
      <Operand type="imm8"/>
      <Encoding>
        <MVEX mmmm="0011" pp="01" W="0" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#2" E="#2" disp8xN="64"/>
        <Opcode byte="1E"/>
        <ModRM mode="#2" reg="#0" rm="#2"/>
        <Immediate size="1" value="#3"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="VPERMD" summary="Permute Doubleword Integers">
    <InstructionForm gas-name="vpermd">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="zmm" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="0" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="000"/>
        <Opcode byte="36"/>
        <ModRM mode="11" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="vpermd">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="m512" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="0" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="000" E="#2" disp8xN="64"/>
        <Opcode byte="36"/>
        <ModRM mode="#2" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="VPERMF32X4" summary="Permute Single-Precision Floating-Point Elements">
    <InstructionForm gas-name="vpermf32x4">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="imm8"/>
      <Encoding>
        <MVEX mmmm="0011" pp="01" W="0" vvvv="0000" V="0" RR="#0" B="#1" X="#1" aaa="#0" SSS="000"/>
        <Opcode byte="07"/>
        <ModRM mode="11" reg="#0" rm="#1"/>
        <Immediate size="1" value="#2"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="vpermf32x4">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="m512" input="true" output="false"/>
      <Operand type="imm8"/>
      <Encoding>
        <MVEX mmmm="0011" pp="01" W="0" vvvv="0000" V="0" RR="#0" B="#1" X="#1" aaa="#0" SSS="000" E="#1" disp8xN="64"/>
        <Opcode byte="07"/>
        <ModRM mode="#1" reg="#0" rm="#1"/>
        <Immediate size="1" value="#2"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="VPGATHERDD" summary="Gather Packed Doubleword Values Using Signed Doubleword Indices">
    <InstructionForm gas-name="vpgatherdd">
      <Operand type="zmm{k}" input="true" output="true"/>
      <Operand type="Ci32(vm32z)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="0" vvvv="0000" V="#1" RR="#0" B="#1" X="#1" aaa="#0" SSS="#1" E="#1" disp8xN="8"/>
        <Opcode byte="90"/>
        <ModRM mode="#1" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="VPGATHERDQ" summary="Gather Packed Quadword Values Using Signed Doubleword Indices">
    <InstructionForm gas-name="vpgatherdq">
      <Operand type="zmm{k}" input="true" output="true"/>
      <Operand type="vm32z" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="1" vvvv="0000" V="#1" RR="#0" B="#1" X="#1" aaa="#0" SSS="000" E="#1" disp8xN="8"/>
        <Opcode byte="90"/>
        <ModRM mode="#1" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="VPMADD231D" summary="Multiply-Accumulate Packed Signed Doubleword Integers">
    <InstructionForm gas-name="vpmadd231d">
      <Operand type="zmm{k}" input="true" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="S(zmm)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="0" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#2" E="0"/>
        <Opcode byte="B5"/>
        <ModRM mode="11" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="vpmadd231d">
      <Operand type="zmm{k}" input="true" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="BCi32(m512)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="0" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#2" E="#2" disp8xN="64"/>
        <Opcode byte="B5"/>
        <ModRM mode="#2" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="VPMADD233D" summary="Multiply First Source By Specially Swizzled Second Source and Add To Second Source of Doubleword Integers">
    <InstructionForm gas-name="vpmadd233d">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="BCi32(m512)" input="true" output="false" allow-1to16="false" allow-conversion="false"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="0" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#2" E="#2" disp8xN="64"/>
        <Opcode byte="B4"/>
        <ModRM mode="#2" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="vpmadd233d">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="zmm" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="0" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="000" E="0"/>
        <Opcode byte="B4"/>
        <ModRM mode="11" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="VPMAXSD" summary="Maximum of Packed Signed Doubleword Integers">
    <InstructionForm gas-name="vpmaxsd">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="S(zmm)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="0" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#2" E="0"/>
        <Opcode byte="3D"/>
        <ModRM mode="11" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="vpmaxsd">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="BCi32(m512)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="0" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#2" E="#2" disp8xN="64"/>
        <Opcode byte="3D"/>
        <ModRM mode="#2" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="VPMAXUD" summary="Maximum of Packed Unsigned Doubleword Integers">
    <InstructionForm gas-name="vpmaxud">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="S(zmm)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="0" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#2" E="0"/>
        <Opcode byte="3F"/>
        <ModRM mode="11" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="vpmaxud">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="BCi32(m512)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="0" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#2" E="#2" disp8xN="64"/>
        <Opcode byte="3F"/>
        <ModRM mode="#2" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="VPMINSD" summary="Minimum of Packed Signed Doubleword Integers">
    <InstructionForm gas-name="vpminsd">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="S(zmm)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="0" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#2" E="0"/>
        <Opcode byte="39"/>
        <ModRM mode="11" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="vpminsd">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="BCi32(m512)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="0" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#2" E="#2" disp8xN="64"/>
        <Opcode byte="39"/>
        <ModRM mode="#2" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="VPMINUD" summary="Minimum of Packed Unsigned Doubleword Integers">
    <InstructionForm gas-name="vpminud">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="S(zmm)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="0" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#2" E="0"/>
        <Opcode byte="3B"/>
        <ModRM mode="11" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="vpminud">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="BCi32(m512)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="0" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#2" E="#2" disp8xN="64"/>
        <Opcode byte="3B"/>
        <ModRM mode="#2" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="VPMULHD" summary="Multiply Packed Signed Doubleword Integers and Store High Result">
    <InstructionForm gas-name="vpmulhd">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="S(zmm)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="0" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#2" E="0"/>
        <Opcode byte="87"/>
        <ModRM mode="11" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="vpmulhd">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="BCi32(m512)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="0" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#2" E="#2" disp8xN="64"/>
        <Opcode byte="87"/>
        <ModRM mode="#2" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="VPMULHUD" summary="Multiply Packed Unsigned Doubleword Integers and Store High Result">
    <InstructionForm gas-name="vpmulhud">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="S(zmm)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="0" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#2" E="0"/>
        <Opcode byte="86"/>
        <ModRM mode="11" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="vpmulhud">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="BCi32(m512)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="0" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#2" E="#2" disp8xN="64"/>
        <Opcode byte="86"/>
        <ModRM mode="#2" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="VPMULLD" summary="Multiply Packed Signed Doubleword Integers and Store Low Result">
    <InstructionForm gas-name="vpmulld">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="S(zmm)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="0" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#2" E="0"/>
        <Opcode byte="40"/>
        <ModRM mode="11" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="vpmulld">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="BCi32(m512)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="0" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#2" E="#2" disp8xN="64"/>
        <Opcode byte="40"/>
        <ModRM mode="#2" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="VPORD" summary="Bitwise Logical OR of Packed Doubleword Integers">
    <InstructionForm gas-name="vpord">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="S(zmm)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0001" pp="01" W="0" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#2" E="0"/>
        <Opcode byte="EB"/>
        <ModRM mode="11" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="vpord">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="BCi32(m512)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0001" pp="01" W="0" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#2" E="#2" disp8xN="64"/>
        <Opcode byte="EB"/>
        <ModRM mode="#2" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="VPORQ" summary="Bitwise Logical OR of Packed Quadword Integers">
    <InstructionForm gas-name="vporq">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="S(zmm)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0001" pp="01" W="1" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#2" E="0"/>
        <Opcode byte="EB"/>
        <ModRM mode="11" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="vporq">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="B64(m512)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0001" pp="01" W="1" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#2" E="#2" disp8xN="64"/>
        <Opcode byte="EB"/>
        <ModRM mode="#2" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="VPREFETCH0" summary="Prefetch Data Into Caches using T0 Hint">
    <InstructionForm gas-name="vprefetch0">
      <Operand type="m8" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0001" pp="00" vvvv="0000" V="0" B="#0" X="#0" aaa="000" SSS="000" disp8xN="64"/>
        <Opcode byte="18"/>
        <ModRM mode="#0" reg="1" rm="#0"/>
      </Encoding>
      <Encoding>
        <VEX L="0" m-mmmm="00001" pp="00" B="#0" X="#0" vvvv="0000"/>
        <Opcode byte="18"/>
        <ModRM mode="#0" reg="1" rm="#0"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="VPREFETCH1" summary="Prefetch Data Into Caches using T1 Hint">
    <InstructionForm gas-name="vprefetch1">
      <Operand type="m8" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0001" pp="00" vvvv="0000" V="0" B="#0" X="#0" aaa="000" SSS="000" disp8xN="64"/>
        <Opcode byte="18"/>
        <ModRM mode="#0" reg="2" rm="#0"/>
      </Encoding>
      <Encoding>
        <VEX L="0" m-mmmm="00001" pp="00" B="#0" X="#0" vvvv="0000"/>
        <Opcode byte="18"/>
        <ModRM mode="#0" reg="2" rm="#0"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="VPREFETCH2" summary="Prefetch Data Into Caches using T2 Hint">
    <InstructionForm gas-name="vprefetch2">
      <Operand type="m8" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0001" pp="00" vvvv="0000" V="0" B="#0" X="#0" aaa="000" SSS="000" disp8xN="64"/>
        <Opcode byte="18"/>
        <ModRM mode="#0" reg="3" rm="#0"/>
      </Encoding>
      <Encoding>
        <VEX L="0" m-mmmm="00001" pp="00" B="#0" X="#0" vvvv="0000"/>
        <Opcode byte="18"/>
        <ModRM mode="#0" reg="3" rm="#0"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="VPREFETCHE0" summary="Prefetch Data Into Caches With Intent to Write using T0 Hint">
    <InstructionForm gas-name="vprefetche0">
      <Operand type="m8" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0001" pp="00" vvvv="0000" V="0" B="#0" X="#0" aaa="000" SSS="000" disp8xN="64"/>
        <Opcode byte="18"/>
        <ModRM mode="#0" reg="5" rm="#0"/>
      </Encoding>
      <Encoding>
        <VEX L="0" m-mmmm="00001" pp="00" B="#0" X="#0" vvvv="0000"/>
        <Opcode byte="18"/>
        <ModRM mode="#0" reg="5" rm="#0"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="VPREFETCHE1" summary="Prefetch Data Into Caches With Intent to Write using T1 Hint">
    <InstructionForm gas-name="vprefetche1">
      <Operand type="m8" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0001" pp="00" vvvv="0000" V="0" B="#0" X="#0" aaa="000" SSS="000" disp8xN="64"/>
        <Opcode byte="18"/>
        <ModRM mode="#0" reg="6" rm="#0"/>
      </Encoding>
      <Encoding>
        <VEX L="0" m-mmmm="00001" pp="00" B="#0" X="#0" vvvv="0000"/>
        <Opcode byte="18"/>
        <ModRM mode="#0" reg="6" rm="#0"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="VPREFETCHE2" summary="Prefetch Data Into Caches With Intent to Write using T2 Hint">
    <InstructionForm gas-name="vprefetche2">
      <Operand type="m8" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0001" pp="00" vvvv="0000" V="0" B="#0" X="#0" aaa="000" SSS="000" disp8xN="64"/>
        <Opcode byte="18"/>
        <ModRM mode="#0" reg="7" rm="#0"/>
      </Encoding>
      <Encoding>
        <VEX L="0" m-mmmm="00001" pp="00" B="#0" X="#0" vvvv="0000"/>
        <Opcode byte="18"/>
        <ModRM mode="#0" reg="7" rm="#0"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="VPREFETCHENTA" summary="Prefetch Data Into Caches With Intent to Write using NTA Hint">
    <InstructionForm gas-name="vprefetchenta">
      <Operand type="m8" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0001" pp="00" vvvv="0000" V="0" B="#0" X="#0" aaa="000" SSS="000" disp8xN="64"/>
        <Opcode byte="18"/>
        <ModRM mode="#0" reg="4" rm="#0"/>
      </Encoding>
      <Encoding>
        <VEX L="0" m-mmmm="00001" pp="00" B="#0" X="#0" vvvv="0000"/>
        <Opcode byte="18"/>
        <ModRM mode="#0" reg="4" rm="#0"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="VPREFETCHNTA" summary="Prefetch Data Into Caches using NTA Hint">
    <InstructionForm gas-name="vprefetchnta">
      <Operand type="m8" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0001" pp="00" vvvv="0000" V="0" B="#0" X="#0" aaa="000" SSS="000" disp8xN="64"/>
        <Opcode byte="18"/>
        <ModRM mode="#0" reg="0" rm="#0"/>
      </Encoding>
      <Encoding>
        <VEX L="0" m-mmmm="00001" pp="00" B="#0" X="#0" vvvv="0000"/>
        <Opcode byte="18"/>
        <ModRM mode="#0" reg="0" rm="#0"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="VPSBBD" summary="Subtract Packed Doubleword Integers with Borrow">
    <InstructionForm gas-name="vpsbbd">
      <Operand type="zmm{k}" input="true" output="true"/>
      <Operand type="k" input="true" output="true"/>
      <Operand type="S(zmm)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="0" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#2" E="0"/>
        <Opcode byte="5E"/>
        <ModRM mode="11" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="vpsbbd">
      <Operand type="zmm{k}" input="true" output="true"/>
      <Operand type="k" input="true" output="true"/>
      <Operand type="BCi32(m512)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="0" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#2" E="#2" disp8xN="64"/>
        <Opcode byte="5E"/>
        <ModRM mode="#2" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="VPSBBRD" summary="Reverse Subtract Packed Doubleword Integers with Borrow">
    <InstructionForm gas-name="vpsbbrd">
      <Operand type="zmm{k}" input="true" output="true"/>
      <Operand type="k" input="true" output="true"/>
      <Operand type="S(zmm)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="0" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#2" E="0"/>
        <Opcode byte="6E"/>
        <ModRM mode="11" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="vpsbbrd">
      <Operand type="zmm{k}" input="true" output="true"/>
      <Operand type="k" input="true" output="true"/>
      <Operand type="BCi32(m512)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="0" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#2" E="#2" disp8xN="64"/>
        <Opcode byte="6E"/>
        <ModRM mode="#2" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="VPSCATTERDD" summary="Scatter Packed Doubleword Values with Signed Doubleword Indices">
    <InstructionForm gas-name="vpscatterdd">
      <Operand type="vm32z{k}" input="false" output="true"/>
      <Operand type="Ci32(zmm)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="0" vvvv="0000" V="#0" RR="#1" B="#0" X="#0" aaa="#0" SSS="#1" E="#0" disp8xN="8"/>
        <Opcode byte="A0"/>
        <ModRM mode="#0" reg="#1" rm="#0"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="VPSCATTERDQ" summary="Scatter Packed Quadword Values with Signed Doubleword Indices">
    <InstructionForm gas-name="vpscatterdq">
      <Operand type="vm32z{k}" input="false" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="1" vvvv="0000" V="#0" RR="#1" B="#0" X="#0" aaa="#0" SSS="000" E="#0" disp8xN="8"/>
        <Opcode byte="A0"/>
        <ModRM mode="#0" reg="#1" rm="#0"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="VPSHUFD" summary="Shuffle Packed Doublewords">
    <InstructionForm gas-name="vpshufd">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="imm8"/>
      <Encoding>
        <MVEX mmmm="0001" pp="01" W="0" vvvv="0000" V="0" RR="#0" B="#1" X="#1" aaa="#0" SSS="000"/>
        <Opcode byte="70"/>
        <ModRM mode="11" reg="#0" rm="#1"/>
        <Immediate size="1" value="#2"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="vpshufd">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="m512" input="true" output="false"/>
      <Operand type="imm8"/>
      <Encoding>
        <MVEX mmmm="0001" pp="01" W="0" vvvv="0000" V="0" RR="#0" B="#1" X="#1" aaa="#0" SSS="000" E="#1" disp8xN="64"/>
        <Opcode byte="70"/>
        <ModRM mode="#1" reg="#0" rm="#1"/>
        <Immediate size="1" value="#2"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="VPSLLD" summary="Shift Packed Doubleword Data Left Logical">
    <InstructionForm gas-name="vpslld">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="S(zmm)" input="true" output="false"/>
      <Operand type="imm8"/>
      <Encoding>
        <MVEX mmmm="0001" pp="01" W="0" vvvv="#0" V="#0" B="#1" X="#1" aaa="#0" SSS="#1" E="0"/>
        <Opcode byte="72"/>
        <ModRM mode="11" reg="6" rm="#1"/>
        <Immediate size="1" value="#2"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="vpslld">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="BCi32(m512)" input="true" output="false"/>
      <Operand type="imm8"/>
      <Encoding>
        <MVEX mmmm="0001" pp="01" W="0" vvvv="#0" V="#0" B="#1" X="#1" aaa="#0" SSS="#1" E="#1" disp8xN="64"/>
        <Opcode byte="72"/>
        <ModRM mode="#1" reg="6" rm="#1"/>
        <Immediate size="1" value="#2"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="VPSLLVD" summary="Variable Shift Packed Doubleword Data Left Logical">
    <InstructionForm gas-name="vpsllvd">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="S(zmm)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="0" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#2" E="0"/>
        <Opcode byte="47"/>
        <ModRM mode="11" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="vpsllvd">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="BCi32(m512)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="0" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#2" E="#2" disp8xN="64"/>
        <Opcode byte="47"/>
        <ModRM mode="#2" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="VPSRAD" summary="Shift Packed Doubleword Data Right Arithmetic">
    <InstructionForm gas-name="vpsrad">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="S(zmm)" input="true" output="false"/>
      <Operand type="imm8"/>
      <Encoding>
        <MVEX mmmm="0001" pp="01" W="0" vvvv="#0" V="#0" B="#1" X="#1" aaa="#0" SSS="#1" E="0"/>
        <Opcode byte="72"/>
        <ModRM mode="11" reg="4" rm="#1"/>
        <Immediate size="1" value="#2"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="vpsrad">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="BCi32(m512)" input="true" output="false"/>
      <Operand type="imm8"/>
      <Encoding>
        <MVEX mmmm="0001" pp="01" W="0" vvvv="#0" V="#0" B="#1" X="#1" aaa="#0" SSS="#1" E="#1" disp8xN="64"/>
        <Opcode byte="72"/>
        <ModRM mode="#1" reg="4" rm="#1"/>
        <Immediate size="1" value="#2"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="VPSRAVD" summary="Variable Shift Packed Doubleword Data Right Arithmetic">
    <InstructionForm gas-name="vpsravd">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="S(zmm)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="0" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#2" E="0"/>
        <Opcode byte="46"/>
        <ModRM mode="11" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="vpsravd">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="BCi32(m512)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="0" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#2" E="#2" disp8xN="64"/>
        <Opcode byte="46"/>
        <ModRM mode="#2" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="VPSRLD" summary="Shift Packed Doubleword Data Right Logical">
    <InstructionForm gas-name="vpsrld">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="S(zmm)" input="true" output="false"/>
      <Operand type="imm8"/>
      <Encoding>
        <MVEX mmmm="0001" pp="01" W="0" vvvv="#0" V="#0" B="#1" X="#1" aaa="#0" SSS="#1" E="0"/>
        <Opcode byte="72"/>
        <ModRM mode="11" reg="2" rm="#1"/>
        <Immediate size="1" value="#2"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="vpsrld">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="BCi32(m512)" input="true" output="false"/>
      <Operand type="imm8"/>
      <Encoding>
        <MVEX mmmm="0001" pp="01" W="0" vvvv="#0" V="#0" B="#1" X="#1" aaa="#0" SSS="#1" E="#1" disp8xN="64"/>
        <Opcode byte="72"/>
        <ModRM mode="#1" reg="2" rm="#1"/>
        <Immediate size="1" value="#2"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="VPSRLVD" summary="Variable Shift Packed Doubleword Data Right Logical">
    <InstructionForm gas-name="vpsrlvd">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="S(zmm)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="0" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#2" E="0"/>
        <Opcode byte="45"/>
        <ModRM mode="11" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="vpsrlvd">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="BCi32(m512)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="0" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#2" E="#2" disp8xN="64"/>
        <Opcode byte="45"/>
        <ModRM mode="#2" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="VPSUBD" summary="Subtract Packed Doubleword Integers">
    <InstructionForm gas-name="vpsubd">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="S(zmm)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0001" pp="01" W="0" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#2" E="0"/>
        <Opcode byte="FA"/>
        <ModRM mode="11" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="vpsubd">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="BCi32(m512)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0001" pp="01" W="0" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#2" E="#2" disp8xN="64"/>
        <Opcode byte="FA"/>
        <ModRM mode="#2" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="VPSUBRD" summary="Reverse Subtract Packed Doubleword Integers">
    <InstructionForm gas-name="vpsubrd">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="S(zmm)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="0" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#2" E="0"/>
        <Opcode byte="6C"/>
        <ModRM mode="11" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="vpsubrd">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="BCi32(m512)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="0" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#2" E="#2" disp8xN="64"/>
        <Opcode byte="6C"/>
        <ModRM mode="#2" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="VPSUBRSETBD" summary="Reverse Subtract Packed Doubleword Integers and Set Mask to Borrow">
    <InstructionForm gas-name="vpsubrsetbd">
      <Operand type="zmm{k}" input="true" output="true"/>
      <Operand type="k" input="false" output="true"/>
      <Operand type="S(zmm)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="0" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#2" E="0"/>
        <Opcode byte="6F"/>
        <ModRM mode="11" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="vpsubrsetbd">
      <Operand type="zmm{k}" input="true" output="true"/>
      <Operand type="k" input="false" output="true"/>
      <Operand type="BCi32(m512)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="0" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#2" E="#2" disp8xN="64"/>
        <Opcode byte="6F"/>
        <ModRM mode="#2" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="VPSUBSETBD" summary="Subtract Packed Doubleword Integers and Set Mask to Borrow">
    <InstructionForm gas-name="vpsubsetbd">
      <Operand type="zmm{k}" input="true" output="true"/>
      <Operand type="k" input="false" output="true"/>
      <Operand type="S(zmm)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="0" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#2" E="0"/>
        <Opcode byte="5F"/>
        <ModRM mode="11" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="vpsubsetbd">
      <Operand type="zmm{k}" input="true" output="true"/>
      <Operand type="k" input="false" output="true"/>
      <Operand type="BCi32(m512)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="0" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#2" E="#2" disp8xN="64"/>
        <Opcode byte="5F"/>
        <ModRM mode="#2" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="VPTESTMD" summary="Logical AND of Packed Doubleword Integer Values and Set Mask">
    <InstructionForm gas-name="vptestmd">
      <Operand type="k{k}" input="false" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="S(zmm)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="0" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#2" E="0"/>
        <Opcode byte="27"/>
        <ModRM mode="11" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="vptestmd">
      <Operand type="k{k}" input="false" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="BCi32(m512)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="0" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#2" E="#2" disp8xN="64"/>
        <Opcode byte="27"/>
        <ModRM mode="#2" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="VPXORD" summary="Bitwise Logical Exclusive OR of Packed Doubleword Integers">
    <InstructionForm gas-name="vpxord">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="S(zmm)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0001" pp="01" W="0" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#2" E="0"/>
        <Opcode byte="EF"/>
        <ModRM mode="11" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="vpxord">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="BCi32(m512)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0001" pp="01" W="0" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#2" E="#2" disp8xN="64"/>
        <Opcode byte="EF"/>
        <ModRM mode="#2" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="VPXORQ" summary="Bitwise Logical Exclusive OR of Packed Quadword Integers">
    <InstructionForm gas-name="vpxorq">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="S(zmm)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0001" pp="01" W="1" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#2" E="0"/>
        <Opcode byte="EF"/>
        <ModRM mode="11" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="vpxorq">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="B64(m512)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0001" pp="01" W="1" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#2" E="#2" disp8xN="64"/>
        <Opcode byte="EF"/>
        <ModRM mode="#2" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="VRCP23PS" summary="Approximation to the Reciprocal of Packed Single-Precision Floating-Point Values with Less Than 2^-23 Relative Error">
    <InstructionForm gas-name="vrcp23ps">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="0" vvvv="0000" V="0" RR="#0" B="#1" X="#1" aaa="#0" SSS="000"/>
        <Opcode byte="CA"/>
        <ModRM mode="11" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="vrcp23ps">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="m512" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="0" vvvv="0000" V="0" RR="#0" B="#1" X="#1" aaa="#0" SSS="000" E="#1" disp8xN="64"/>
        <Opcode byte="CA"/>
        <ModRM mode="#1" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="VRNDFXPNTPD" summary="Round to Fixed Precision Packed Double-Precision Floating-Point Values">
    <InstructionForm gas-name="vrndfxpntpd">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="S(zmm)" input="true" output="false"/>
      <Operand type="imm8"/>
      <Encoding>
        <MVEX mmmm="0011" pp="01" W="1" vvvv="0000" V="0" RR="#0" B="#1" X="#1" aaa="#0" SSS="#1" E="0"/>
        <Opcode byte="52"/>
        <ModRM mode="11" reg="#0" rm="#1"/>
        <Immediate size="1" value="#2"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="vrndfxpntpd">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="B64(m512)" input="true" output="false"/>
      <Operand type="imm8"/>
      <Encoding>
        <MVEX mmmm="0011" pp="01" W="1" vvvv="0000" V="0" RR="#0" B="#1" X="#1" aaa="#0" SSS="#1" E="#1" disp8xN="64"/>
        <Opcode byte="52"/>
        <ModRM mode="#1" reg="#0" rm="#1"/>
        <Immediate size="1" value="#2"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="vrndfxpntpd">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="imm8"/>
      <Operand type="{sae}"/>
      <Encoding>
        <MVEX mmmm="0011" pp="01" W="1" vvvv="0000" V="0" RR="#0" B="#1" X="#1" aaa="#0" SSS="#3" E="1"/>
        <Opcode byte="52"/>
        <ModRM mode="11" reg="#0" rm="#1"/>
        <Immediate size="1" value="#2"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="VRNDFXPNTPS" summary="Round to Fixed Precision Packed Single-Precision Floating-Point Values">
    <InstructionForm gas-name="vrndfxpntps">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="S(zmm)" input="true" output="false"/>
      <Operand type="imm8"/>
      <Encoding>
        <MVEX mmmm="0011" pp="01" W="0" vvvv="0000" V="0" RR="#0" B="#1" X="#1" aaa="#0" SSS="#1" E="0"/>
        <Opcode byte="52"/>
        <ModRM mode="11" reg="#0" rm="#1"/>
        <Immediate size="1" value="#2"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="vrndfxpntps">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="BCf32(m512)" input="true" output="false"/>
      <Operand type="imm8"/>
      <Encoding>
        <MVEX mmmm="0011" pp="01" W="0" vvvv="0000" V="0" RR="#0" B="#1" X="#1" aaa="#0" SSS="#1" E="#1" disp8xN="64"/>
        <Opcode byte="52"/>
        <ModRM mode="#1" reg="#0" rm="#1"/>
        <Immediate size="1" value="#2"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="vrndfxpntps">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="imm8"/>
      <Operand type="{sae}"/>
      <Encoding>
        <MVEX mmmm="0011" pp="01" W="0" vvvv="0000" V="0" RR="#0" B="#1" X="#1" aaa="#0" SSS="#3" E="1"/>
        <Opcode byte="52"/>
        <ModRM mode="11" reg="#0" rm="#1"/>
        <Immediate size="1" value="#2"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="VRSQRT23PS" summary="Approximation to the Reciprocal Square Root of Packed Single-Precision Floating-Point Values with Less Than 2^-23 Relative Error">
    <InstructionForm gas-name="vrsqrt23ps">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="0" vvvv="0000" V="0" RR="#0" B="#1" X="#1" aaa="#0" SSS="000"/>
        <Opcode byte="CB"/>
        <ModRM mode="11" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="vrsqrt23ps">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="m512" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="0" vvvv="0000" V="0" RR="#0" B="#1" X="#1" aaa="#0" SSS="000" E="#1" disp8xN="64"/>
        <Opcode byte="CB"/>
        <ModRM mode="#1" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="VSCALEPS" summary="Scale Packed Single-Precision Floating-Point Values With Signed Doubleword Values">
    <InstructionForm gas-name="vscaleps">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="S(zmm)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="0" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#2" E="0"/>
        <Opcode byte="84"/>
        <ModRM mode="11" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="vscaleps">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="BCi32(m512)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="0" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#2" E="#2" disp8xN="64"/>
        <Opcode byte="84"/>
        <ModRM mode="#2" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="vscaleps">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="{er}"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="0" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#3" E="1"/>
        <Opcode byte="84"/>
        <ModRM mode="11" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="VSCATTERDPD" summary="Scatter Packed Double-Precision Floating-Point Values with Signed Doubleword Indices">
    <InstructionForm gas-name="vscatterdpd">
      <Operand type="vm32z{k}" input="false" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="1" vvvv="0000" V="#0" RR="#1" B="#0" X="#0" aaa="#0" SSS="000" E="#0" disp8xN="8"/>
        <Opcode byte="A2"/>
        <ModRM mode="#0" reg="#1" rm="#0"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="VSCATTERDPS" summary="Scatter Packed Single-Precision Floating-Point Values with Signed Doubleword Indices">
    <InstructionForm gas-name="vscatterdps">
      <Operand type="vm32z{k}" input="false" output="true"/>
      <Operand type="Cf32(zmm)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="0" vvvv="0000" V="#0" RR="#1" B="#0" X="#0" aaa="#0" SSS="#1" E="#0" disp8xN="4"/>
        <Opcode byte="A2"/>
        <ModRM mode="#0" reg="#1" rm="#0"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="VSCATTERPF0DPS" summary="Sparse Prefetch Packed Single-Precision Floating-Point Data Values with Signed Doubleword Indices Using T0 Hint with Intent to Write">
    <InstructionForm gas-name="vscatterpf0dps">
      <Operand type="Cf32(vm32z){k}" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="0" vvvv="0000" V="#0" B="#0" X="#0" aaa="#0" SSS="#0" E="#0" disp8xN="4"/>
        <Opcode byte="C6"/>
        <ModRM mode="#0" reg="5" rm="#0"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="VSCATTERPF0HINTDPD" summary="Sparse Prefetch Packed Double-Precision Floating-Point Data Values with Signed Doubleword Indices Using T0 Hint with Intent to Write">
    <InstructionForm gas-name="vscatterpf0hintdpd">
      <Operand type="vm32z{k}" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="1" vvvv="0000" V="#0" B="#0" X="#0" aaa="#0" SSS="000" E="#0" disp8xN="8"/>
        <Opcode byte="C6"/>
        <ModRM mode="#0" reg="4" rm="#0"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="VSCATTERPF0HINTDPS" summary="Sparse Prefetch Packed Single-Precision Floating-Point Data Values with Signed Doubleword Indices Using T0 Hint with Intent to Write">
    <InstructionForm gas-name="vscatterpf0hintdps">
      <Operand type="Cf32(vm32z){k}" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="0" vvvv="0000" V="#0" B="#0" X="#0" aaa="#0" SSS="#0" E="#0" disp8xN="4"/>
        <Opcode byte="C6"/>
        <ModRM mode="#0" reg="4" rm="#0"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="VSCATTERPF1DPS" summary="Sparse Prefetch Packed Single-Precision Floating-Point Data Values with Signed Doubleword Indices Using T1 Hint with Intent to Write">
    <InstructionForm gas-name="vscatterpf1dps">
      <Operand type="Cf32(vm32z){k}" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="0" vvvv="0000" V="#0" B="#0" X="#0" aaa="#0" SSS="#0" E="#0" disp8xN="4"/>
        <Opcode byte="C6"/>
        <ModRM mode="#0" reg="6" rm="#0"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="VSUBPD" summary="Subtract Packed Double-Precision Floating-Point Values">
    <InstructionForm gas-name="vsubpd">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="S(zmm)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0001" pp="01" W="1" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#2" E="0"/>
        <Opcode byte="5C"/>
        <ModRM mode="11" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="vsubpd">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="B64(m512)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0001" pp="01" W="1" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#2" E="#2" disp8xN="64"/>
        <Opcode byte="5C"/>
        <ModRM mode="#2" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="vsubpd">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="{er}"/>
      <Encoding>
        <MVEX mmmm="0001" pp="01" W="1" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#3" E="1"/>
        <Opcode byte="5C"/>
        <ModRM mode="11" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="VSUBPS" summary="Subtract Packed Single-Precision Floating-Point Values">
    <InstructionForm gas-name="vsubps">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="S(zmm)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0001" pp="00" W="0" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#2" E="0"/>
        <Opcode byte="5C"/>
        <ModRM mode="11" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="vsubps">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="BCf32(m512)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0001" pp="00" W="0" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#2" E="#2" disp8xN="64"/>
        <Opcode byte="5C"/>
        <ModRM mode="#2" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="vsubps">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="{er}"/>
      <Encoding>
        <MVEX mmmm="0001" pp="00" W="0" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#3" E="1"/>
        <Opcode byte="5C"/>
        <ModRM mode="11" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="VSUBRPD" summary="Reverse Subtract Packed Double-Precision Floating-Point Values">
    <InstructionForm gas-name="vsubrpd">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="S(zmm)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="1" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#2" E="0"/>
        <Opcode byte="6D"/>
        <ModRM mode="11" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="vsubrpd">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="B64(m512)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="1" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#2" E="#2" disp8xN="64"/>
        <Opcode byte="6D"/>
        <ModRM mode="#2" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="vsubrpd">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="{er}"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="1" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#3" E="1"/>
        <Opcode byte="6D"/>
        <ModRM mode="11" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="VSUBRPS" summary="Reverse Subtract Packed Single-Precision Floating-Point Values">
    <InstructionForm gas-name="vsubrps">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="S(zmm)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="0" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#2" E="0"/>
        <Opcode byte="6D"/>
        <ModRM mode="11" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="vsubrps">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="BCf32(m512)" input="true" output="false"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="0" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#2" E="#2" disp8xN="64"/>
        <Opcode byte="6D"/>
        <ModRM mode="#2" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="vsubrps">
      <Operand type="zmm{k}" input="false" output="true"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="zmm" input="true" output="false"/>
      <Operand type="{er}"/>
      <Encoding>
        <MVEX mmmm="0010" pp="01" W="0" vvvv="#1" V="#1" RR="#0" B="#2" X="#2" aaa="#0" SSS="#3" E="1"/>
        <Opcode byte="6D"/>
        <ModRM mode="11" reg="#0" rm="#2"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="XADD" summary="Exchange and Add">
    <InstructionForm gas-name="xaddb">
      <Operand type="r8" input="true" output="true"/>
      <Operand type="r8" input="true" output="true"/>
      <Encoding>
        <REX mandatory="false" W="0" R="#1" B="#0"/>
        <Opcode byte="0F"/>
        <Opcode byte="C0"/>
        <ModRM mode="11" reg="#1" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="xaddw">
      <Operand type="r16" input="true" output="true"/>
      <Operand type="r16" input="true" output="true"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" R="#1" B="#0"/>
        <Opcode byte="0F"/>
        <Opcode byte="C1"/>
        <ModRM mode="11" reg="#1" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="xaddl">
      <Operand type="r32" input="true" output="true"/>
      <Operand type="r32" input="true" output="true"/>
      <Encoding>
        <REX mandatory="false" W="0" R="#1" B="#0"/>
        <Opcode byte="0F"/>
        <Opcode byte="C1"/>
        <ModRM mode="11" reg="#1" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="xaddq">
      <Operand type="r64" input="true" output="true"/>
      <Operand type="r64" input="true" output="true"/>
      <Encoding>
        <REX mandatory="true" W="1" R="#1" B="#0"/>
        <Opcode byte="0F"/>
        <Opcode byte="C1"/>
        <ModRM mode="11" reg="#1" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="xaddb">
      <Operand type="m8" input="true" output="true"/>
      <Operand type="r8" input="true" output="true"/>
      <Encoding>
        <REX mandatory="false" W="0" R="#1" B="#0" X="#0"/>
        <Opcode byte="0F"/>
        <Opcode byte="C0"/>
        <ModRM mode="#0" reg="#1" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="xaddw">
      <Operand type="m16" input="true" output="true"/>
      <Operand type="r16" input="true" output="true"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" R="#1" B="#0" X="#0"/>
        <Opcode byte="0F"/>
        <Opcode byte="C1"/>
        <ModRM mode="#0" reg="#1" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="xaddl">
      <Operand type="m32" input="true" output="true"/>
      <Operand type="r32" input="true" output="true"/>
      <Encoding>
        <REX mandatory="false" W="0" R="#1" B="#0" X="#0"/>
        <Opcode byte="0F"/>
        <Opcode byte="C1"/>
        <ModRM mode="#0" reg="#1" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="xaddq">
      <Operand type="m64" input="true" output="true"/>
      <Operand type="r64" input="true" output="true"/>
      <Encoding>
        <REX mandatory="true" W="1" R="#1" B="#0" X="#0"/>
        <Opcode byte="0F"/>
        <Opcode byte="C1"/>
        <ModRM mode="#0" reg="#1" rm="#0"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="XCHG" summary="Exchange Register/Memory with Register">
    <InstructionForm gas-name="xchgb">
      <Operand type="r8" input="true" output="true"/>
      <Operand type="r8" input="true" output="true"/>
      <Encoding>
        <REX mandatory="false" W="0" R="#1" B="#0"/>
        <Opcode byte="86"/>
        <ModRM mode="11" reg="#1" rm="#0"/>
      </Encoding>
      <Encoding>
        <REX mandatory="false" W="0" R="#0" B="#1"/>
        <Opcode byte="86"/>
        <ModRM mode="11" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="xchgb">
      <Operand type="r8" input="true" output="true"/>
      <Operand type="m8" input="true" output="true"/>
      <Encoding>
        <REX mandatory="false" W="0" R="#0" B="#1" X="#1"/>
        <Opcode byte="86"/>
        <ModRM mode="#1" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="xchgw">
      <Operand type="ax" input="true" output="true"/>
      <Operand type="r16" input="true" output="true"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" B="#1"/>
        <Opcode byte="90" addend="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="xchgw">
      <Operand type="r16" input="true" output="true"/>
      <Operand type="ax" input="true" output="true"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="90" addend="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="xchgw">
      <Operand type="r16" input="true" output="true"/>
      <Operand type="r16" input="true" output="true"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" R="#1" B="#0"/>
        <Opcode byte="87"/>
        <ModRM mode="11" reg="#1" rm="#0"/>
      </Encoding>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" R="#0" B="#1"/>
        <Opcode byte="87"/>
        <ModRM mode="11" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="xchgw">
      <Operand type="r16" input="true" output="true"/>
      <Operand type="m16" input="true" output="true"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" R="#0" B="#1" X="#1"/>
        <Opcode byte="87"/>
        <ModRM mode="#1" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="xchgl">
      <Operand type="eax" input="true" output="true"/>
      <Operand type="r32" input="true" output="true"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#1"/>
        <Opcode byte="90" addend="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="xchgl">
      <Operand type="r32" input="true" output="true"/>
      <Operand type="eax" input="true" output="true"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="90" addend="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="xchgl">
      <Operand type="r32" input="true" output="true"/>
      <Operand type="r32" input="true" output="true"/>
      <Encoding>
        <REX mandatory="false" W="0" R="#1" B="#0"/>
        <Opcode byte="87"/>
        <ModRM mode="11" reg="#1" rm="#0"/>
      </Encoding>
      <Encoding>
        <REX mandatory="false" W="0" R="#0" B="#1"/>
        <Opcode byte="87"/>
        <ModRM mode="11" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="xchgl">
      <Operand type="r32" input="true" output="true"/>
      <Operand type="m32" input="true" output="true"/>
      <Encoding>
        <REX mandatory="false" W="0" R="#0" B="#1" X="#1"/>
        <Opcode byte="87"/>
        <ModRM mode="#1" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="xchgq">
      <Operand type="rax" input="true" output="true"/>
      <Operand type="r64" input="true" output="true"/>
      <Encoding>
        <REX mandatory="true" W="1" B="#1"/>
        <Opcode byte="90" addend="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="xchgq">
      <Operand type="r64" input="true" output="true"/>
      <Operand type="rax" input="true" output="true"/>
      <Encoding>
        <REX mandatory="true" W="1" B="#0"/>
        <Opcode byte="90" addend="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="xchgq">
      <Operand type="r64" input="true" output="true"/>
      <Operand type="r64" input="true" output="true"/>
      <Encoding>
        <REX mandatory="true" W="1" R="#1" B="#0"/>
        <Opcode byte="87"/>
        <ModRM mode="11" reg="#1" rm="#0"/>
      </Encoding>
      <Encoding>
        <REX mandatory="true" W="1" R="#0" B="#1"/>
        <Opcode byte="87"/>
        <ModRM mode="11" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="xchgq">
      <Operand type="r64" input="true" output="true"/>
      <Operand type="m64" input="true" output="true"/>
      <Encoding>
        <REX mandatory="true" W="1" R="#0" B="#1" X="#1"/>
        <Opcode byte="87"/>
        <ModRM mode="#1" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="xchgb">
      <Operand type="m8" input="true" output="true"/>
      <Operand type="r8" input="true" output="true"/>
      <Encoding>
        <REX mandatory="false" W="0" R="#1" B="#0" X="#0"/>
        <Opcode byte="86"/>
        <ModRM mode="#0" reg="#1" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="xchgw">
      <Operand type="m16" input="true" output="true"/>
      <Operand type="r16" input="true" output="true"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" R="#1" B="#0" X="#0"/>
        <Opcode byte="87"/>
        <ModRM mode="#0" reg="#1" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="xchgl">
      <Operand type="m32" input="true" output="true"/>
      <Operand type="r32" input="true" output="true"/>
      <Encoding>
        <REX mandatory="false" W="0" R="#1" B="#0" X="#0"/>
        <Opcode byte="87"/>
        <ModRM mode="#0" reg="#1" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="xchgq">
      <Operand type="m64" input="true" output="true"/>
      <Operand type="r64" input="true" output="true"/>
      <Encoding>
        <REX mandatory="true" W="1" R="#1" B="#0" X="#0"/>
        <Opcode byte="87"/>
        <ModRM mode="#0" reg="#1" rm="#0"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="XGETBV" summary="Get Value of Extended Control Register">
    <InstructionForm gas-name="xgetbv">
      <ImplicitOperand id="eax" input="false" output="true"/>
      <ImplicitOperand id="ecx" input="true" output="false"/>
      <ImplicitOperand id="edx" input="false" output="true"/>
      <Encoding>
        <Opcode byte="0F"/>
        <Opcode byte="01"/>
        <Opcode byte="D0"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="XLATB" summary="Table Look-up Translation">
    <InstructionForm gas-name="xlatb">
      <ImplicitOperand id="al" input="true" output="true"/>
      <ImplicitOperand id="ebx" input="true" output="false"/>
      <Encoding>
        <Opcode byte="D7"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="xlatb">
      <ImplicitOperand id="al" input="true" output="true"/>
      <ImplicitOperand id="rbx" input="true" output="false"/>
      <Encoding>
        <REX mandatory="true" W="1"/>
        <Opcode byte="D7"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
  <Instruction name="XOR" summary="Logical Exclusive OR">
    <InstructionForm gas-name="xorb">
      <Operand type="al" input="true" output="true"/>
      <Operand type="imm8"/>
      <Encoding>
        <Opcode byte="34"/>
        <Immediate size="1" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="xorb">
      <Operand type="r8" input="true" output="true"/>
      <Operand type="imm8"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="80"/>
        <ModRM mode="11" reg="6" rm="#0"/>
        <Immediate size="1" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="xorb" cancelling-inputs="true">
      <Operand type="r8" input="true" output="true"/>
      <Operand type="r8" input="true" output="false"/>
      <Encoding>
        <REX mandatory="false" W="0" R="#1" B="#0"/>
        <Opcode byte="30"/>
        <ModRM mode="11" reg="#1" rm="#0"/>
      </Encoding>
      <Encoding>
        <REX mandatory="false" W="0" R="#0" B="#1"/>
        <Opcode byte="32"/>
        <ModRM mode="11" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="xorb">
      <Operand type="r8" input="true" output="true"/>
      <Operand type="m8" input="true" output="false"/>
      <Encoding>
        <REX mandatory="false" W="0" R="#0" B="#1" X="#1"/>
        <Opcode byte="32"/>
        <ModRM mode="#1" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="xorw">
      <Operand type="ax" input="true" output="true"/>
      <Operand type="imm16"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <Opcode byte="35"/>
        <Immediate size="2" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="xorw">
      <Operand type="r16" input="true" output="true"/>
      <Operand type="imm8" extended-size="2"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="83"/>
        <ModRM mode="11" reg="6" rm="#0"/>
        <Immediate size="1" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="xorw">
      <Operand type="r16" input="true" output="true"/>
      <Operand type="imm16"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="81"/>
        <ModRM mode="11" reg="6" rm="#0"/>
        <Immediate size="2" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="xorw" cancelling-inputs="true">
      <Operand type="r16" input="true" output="true"/>
      <Operand type="r16" input="true" output="false"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" R="#1" B="#0"/>
        <Opcode byte="31"/>
        <ModRM mode="11" reg="#1" rm="#0"/>
      </Encoding>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" R="#0" B="#1"/>
        <Opcode byte="33"/>
        <ModRM mode="11" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="xorw">
      <Operand type="r16" input="true" output="true"/>
      <Operand type="m16" input="true" output="false"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" R="#0" B="#1" X="#1"/>
        <Opcode byte="33"/>
        <ModRM mode="#1" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="xorl">
      <Operand type="eax" input="true" output="true"/>
      <Operand type="imm32"/>
      <Encoding>
        <Opcode byte="35"/>
        <Immediate size="4" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="xorl">
      <Operand type="r32" input="true" output="true"/>
      <Operand type="imm8" extended-size="4"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="83"/>
        <ModRM mode="11" reg="6" rm="#0"/>
        <Immediate size="1" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="xorl">
      <Operand type="r32" input="true" output="true"/>
      <Operand type="imm32"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0"/>
        <Opcode byte="81"/>
        <ModRM mode="11" reg="6" rm="#0"/>
        <Immediate size="4" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="xorl" cancelling-inputs="true">
      <Operand type="r32" input="true" output="true"/>
      <Operand type="r32" input="true" output="false"/>
      <Encoding>
        <REX mandatory="false" W="0" R="#1" B="#0"/>
        <Opcode byte="31"/>
        <ModRM mode="11" reg="#1" rm="#0"/>
      </Encoding>
      <Encoding>
        <REX mandatory="false" W="0" R="#0" B="#1"/>
        <Opcode byte="33"/>
        <ModRM mode="11" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="xorl">
      <Operand type="r32" input="true" output="true"/>
      <Operand type="m32" input="true" output="false"/>
      <Encoding>
        <REX mandatory="false" W="0" R="#0" B="#1" X="#1"/>
        <Opcode byte="33"/>
        <ModRM mode="#1" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="xorq">
      <Operand type="rax" input="true" output="true"/>
      <Operand type="imm32"/>
      <Encoding>
        <REX mandatory="true" W="1"/>
        <Opcode byte="35"/>
        <Immediate size="4" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="xorq">
      <Operand type="r64" input="true" output="true"/>
      <Operand type="imm8" extended-size="8"/>
      <Encoding>
        <REX mandatory="true" W="1" B="#0"/>
        <Opcode byte="83"/>
        <ModRM mode="11" reg="6" rm="#0"/>
        <Immediate size="1" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="xorq">
      <Operand type="r64" input="true" output="true"/>
      <Operand type="imm32" extended-size="8"/>
      <Encoding>
        <REX mandatory="true" W="1" B="#0"/>
        <Opcode byte="81"/>
        <ModRM mode="11" reg="6" rm="#0"/>
        <Immediate size="4" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="xorq" cancelling-inputs="true">
      <Operand type="r64" input="true" output="true"/>
      <Operand type="r64" input="true" output="false"/>
      <Encoding>
        <REX mandatory="true" W="1" R="#1" B="#0"/>
        <Opcode byte="31"/>
        <ModRM mode="11" reg="#1" rm="#0"/>
      </Encoding>
      <Encoding>
        <REX mandatory="true" W="1" R="#0" B="#1"/>
        <Opcode byte="33"/>
        <ModRM mode="11" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="xorq">
      <Operand type="r64" input="true" output="true"/>
      <Operand type="m64" input="true" output="false"/>
      <Encoding>
        <REX mandatory="true" W="1" R="#0" B="#1" X="#1"/>
        <Opcode byte="33"/>
        <ModRM mode="#1" reg="#0" rm="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="xorb">
      <Operand type="m8" input="true" output="true"/>
      <Operand type="imm8"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0" X="#0"/>
        <Opcode byte="80"/>
        <ModRM mode="#0" reg="6" rm="#0"/>
        <Immediate size="1" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="xorb">
      <Operand type="m8" input="true" output="true"/>
      <Operand type="r8" input="true" output="false"/>
      <Encoding>
        <REX mandatory="false" W="0" R="#1" B="#0" X="#0"/>
        <Opcode byte="30"/>
        <ModRM mode="#0" reg="#1" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="xorw">
      <Operand type="m16" input="true" output="true"/>
      <Operand type="imm8" extended-size="2"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" B="#0" X="#0"/>
        <Opcode byte="83"/>
        <ModRM mode="#0" reg="6" rm="#0"/>
        <Immediate size="1" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="xorw">
      <Operand type="m16" input="true" output="true"/>
      <Operand type="imm16"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" B="#0" X="#0"/>
        <Opcode byte="81"/>
        <ModRM mode="#0" reg="6" rm="#0"/>
        <Immediate size="2" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="xorw">
      <Operand type="m16" input="true" output="true"/>
      <Operand type="r16" input="true" output="false"/>
      <Encoding>
        <Prefix byte="66" mandatory="false"/>
        <REX mandatory="false" W="0" R="#1" B="#0" X="#0"/>
        <Opcode byte="31"/>
        <ModRM mode="#0" reg="#1" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="xorl">
      <Operand type="m32" input="true" output="true"/>
      <Operand type="imm8" extended-size="4"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0" X="#0"/>
        <Opcode byte="83"/>
        <ModRM mode="#0" reg="6" rm="#0"/>
        <Immediate size="1" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="xorl">
      <Operand type="m32" input="true" output="true"/>
      <Operand type="imm32"/>
      <Encoding>
        <REX mandatory="false" W="0" B="#0" X="#0"/>
        <Opcode byte="81"/>
        <ModRM mode="#0" reg="6" rm="#0"/>
        <Immediate size="4" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="xorl">
      <Operand type="m32" input="true" output="true"/>
      <Operand type="r32" input="true" output="false"/>
      <Encoding>
        <REX mandatory="false" W="0" R="#1" B="#0" X="#0"/>
        <Opcode byte="31"/>
        <ModRM mode="#0" reg="#1" rm="#0"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="xorq">
      <Operand type="m64" input="true" output="true"/>
      <Operand type="imm8" extended-size="8"/>
      <Encoding>
        <REX mandatory="true" W="1" B="#0" X="#0"/>
        <Opcode byte="83"/>
        <ModRM mode="#0" reg="6" rm="#0"/>
        <Immediate size="1" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="xorq">
      <Operand type="m64" input="true" output="true"/>
      <Operand type="imm32" extended-size="8"/>
      <Encoding>
        <REX mandatory="true" W="1" B="#0" X="#0"/>
        <Opcode byte="81"/>
        <ModRM mode="#0" reg="6" rm="#0"/>
        <Immediate size="4" value="#1"/>
      </Encoding>
    </InstructionForm>
    <InstructionForm gas-name="xorq">
      <Operand type="m64" input="true" output="true"/>
      <Operand type="r64" input="true" output="false"/>
      <Encoding>
        <REX mandatory="true" W="1" R="#1" B="#0" X="#0"/>
        <Opcode byte="31"/>
        <ModRM mode="#0" reg="#1" rm="#0"/>
      </Encoding>
    </InstructionForm>
  </Instruction>
</InstructionSet>
