Added AMD (3DNow!,SSE5 and XOP)Instructions.

XML Refactoring.
This commit is contained in:
Mahdi Safsafi 2015-09-03 18:29:55 +02:00
parent e56d77147c
commit 393aac9800
10 changed files with 2416 additions and 16 deletions

210
xml/raw/x86/AMD/3DNow.xml Normal file
View file

@ -0,0 +1,210 @@
<?xml version="1.0" encoding="ASCII"?>
<!DOCTYPE instrs SYSTEM "3DNow_Rules.dtd">
<!-- Copyright (c) 2015 Mahdi Safsafi
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
-->
<!-- https://github.com/MahdiSafsafi/Parsable-Instructions -->
<!--
This XML file includes all instructions found in :
3DNow! Technology Manual 21928G/0-March 2000 document.
-->
<instrs version="1.00">
<common>
<brief>FEMMS</brief>
<ins>
<mnem>FEMMS</mnem>
<args>void</args>
<opc>0F 0E</opc>
<dscrp>Faster Enter/Exit of the MMX or floating-point state.</dscrp>
</ins>
</common>
<common>
<brief>PAVGUSB</brief>
<ins>
<mnem>PAVGUSB</mnem>
<args>mmreg1,mmreg2/mem64</args>
<opc>0F 0F /r BF</opc>
<dscrp>Average of unsigned packed 8-bit values.</dscrp>
</ins>
</common>
<common>
<brief>PF2ID</brief>
<ins>
<mnem>PF2ID</mnem>
<args>mmreg1,mmreg2/mem64</args>
<opc>0F 0F /r 1D</opc>
<dscrp>Converts packed floating-point operand to packed 32-bit integer.</dscrp>
</ins>
</common>
<common>
<brief>PFACC</brief>
<ins>
<mnem>PFACC</mnem>
<args>mmreg1,mmreg2/mem64</args>
<opc>0F 0F /r AE</opc>
<dscrp>Floating-point accumulate.</dscrp>
</ins>
</common>
<common>
<brief>PFADD</brief>
<ins>
<mnem>PFADD</mnem>
<args>mmreg1,mmreg2/mem64</args>
<opc>0F 0F /r 9E</opc>
<dscrp>Packed, floating-point addition.</dscrp>
</ins>
</common>
<common>
<brief>PFCMPEQ</brief>
<ins>
<mnem>PFCMPEQ</mnem>
<args>mmreg1,mmreg2/mem64</args>
<opc>0F 0F /r B0</opc>
<dscrp>Packed floating-point comparison, equal to.</dscrp>
</ins>
</common>
<common>
<brief>PFCMPGE</brief>
<ins>
<mnem>PFCMPGE</mnem>
<args>mmreg1,mmreg2/mem64</args>
<opc>0F 0F /r 90</opc>
<dscrp>Packed floating-point comparison, greater than or equal to.</dscrp>
</ins>
</common>
<common>
<brief>PFCMPGT</brief>
<ins>
<mnem>PFCMPGT</mnem>
<args>mmreg1,mmreg2/mem64</args>
<opc>0F 0F /r A0</opc>
<dscrp>Packed floating-point comparison, greater than.</dscrp>
</ins>
</common>
<common>
<brief>PFMAX</brief>
<ins>
<mnem>PFMAX</mnem>
<args>mmreg1,mmreg2/mem64</args>
<opc>0F 0F /r A4</opc>
<dscrp>Packed floating-point maximum.</dscrp>
</ins>
</common>
<common>
<brief>PFMIN</brief>
<ins>
<mnem>PFMIN</mnem>
<args>mmreg1,mmreg2/mem64</args>
<opc>0F 0F /r 94</opc>
<dscrp>Packed floating-point minimum.</dscrp>
</ins>
</common>
<common>
<brief>PFMUL</brief>
<ins>
<mnem>PFMUL</mnem>
<args>mmreg1,mmreg2/mem64</args>
<opc>0F 0F /r B4</opc>
<dscrp>Packed floating-point multiplication.</dscrp>
</ins>
</common>
<common>
<brief>PFRCP</brief>
<ins>
<mnem>PFRCP</mnem>
<args>mmreg1,mmreg2/mem64</args>
<opc>0F 0F /r 96</opc>
<dscrp>Floating-point reciprocal approximation.</dscrp>
</ins>
</common>
<common>
<brief>PFRCPIT1</brief>
<ins>
<mnem>PFRCPIT1</mnem>
<args>mmreg1,mmreg2/mem64</args>
<opc>0F 0F /r A6</opc>
<dscrp>Packed floating-point reciprocal, first iteration step.</dscrp>
</ins>
</common>
<common>
<brief>PFRCPIT2</brief>
<ins>
<mnem>PFRCPIT2</mnem>
<args>mmreg1,mmreg2/mem64</args>
<opc>0F 0F /r B6</opc>
<dscrp>Packed floating-point reciprocal/reciprocal square root, second iteration step.</dscrp>
</ins>
</common>
<common>
<brief>PFRSQIT1</brief>
<ins>
<mnem>PFRSQIT1</mnem>
<args>mmreg1,mmreg2/mem64</args>
<opc>0F 0F /r A7</opc>
<dscrp>Packed floating-point reciprocal square root, first iteration step.</dscrp>
</ins>
</common>
<common>
<brief>PFRSQRT</brief>
<ins>
<mnem>PFRSQRT</mnem>
<args>mmreg1,mmreg2/mem64</args>
<opc>0F 0F /r 97</opc>
<dscrp>Floating-point reciprocal square root approximation.</dscrp>
</ins>
</common>
<common>
<brief>PFSUB</brief>
<ins>
<mnem>PFSUB</mnem>
<args>mmreg1,mmreg2/mem64</args>
<opc>0F 0F /r 9A</opc>
<dscrp>Packed floating-point subtraction.</dscrp>
</ins>
</common>
<common>
<brief>PFSUBR</brief>
<ins>
<mnem>PFSUBR</mnem>
<args>mmreg1,mmreg2/mem64</args>
<opc>0F 0F /r AA</opc>
<dscrp>Packed floating-point reverse subtraction.</dscrp>
</ins>
</common>
<common>
<brief>PI2FD</brief>
<ins>
<mnem>PI2FD</mnem>
<args>mmreg1,mmreg2/mem64</args>
<opc>0F 0F /r 0D</opc>
<dscrp>Packed 32-bit integer to floating-point conversion.</dscrp>
</ins>
</common>
<common>
<brief>PREFETCHW</brief>
<ins>
<mnem>PREFETCHW</mnem>
<args>mem8</args>
<opc>0F 0D</opc>
<dscrp>Prefetch processor cache line into L1 data cache (Dcache).</dscrp>
</ins>
</common>
</instrs>

View file

@ -0,0 +1,15 @@
<?xml version="1.0" encoding="ASCII"?>
<!-- 3DNow rules -->
<!ELEMENT instrs (common+)>
<!ELEMENT common (brief,ins)>
<!ELEMENT ins (mnem,args,opc,dscrp)>
<!ELEMENT brief (#PCDATA)>
<!ELEMENT mnem (#PCDATA)>
<!ELEMENT args (#PCDATA)>
<!ELEMENT opc (#PCDATA)>
<!ELEMENT dscrp (#PCDATA)>
<!ATTLIST instrs version CDATA #REQUIRED>

1119
xml/raw/x86/AMD/SSE5.xml Normal file

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,17 @@
<?xml version="1.0" encoding="ASCII"?>
<!-- XOP Rules -->
<!ELEMENT instrs (common+)>
<!ELEMENT common (brief,dscrp,ins+)>
<!ELEMENT ins (mnem,args,opc)>
<!ELEMENT brief (#PCDATA)>
<!ELEMENT dscrp (#PCDATA)>
<!ELEMENT mnem (#PCDATA)>
<!ELEMENT args (#PCDATA)>
<!ELEMENT opc (#PCDATA)>
<!ATTLIST instrs version CDATA #REQUIRED>

990
xml/raw/x86/AMD/XOP.xml Normal file
View file

@ -0,0 +1,990 @@
<?xml version="1.0" encoding="ASCII"?>
<!DOCTYPE instrs SYSTEM "XOP_Rules.dtd">
<!-- Copyright (c) 2015 Mahdi Safsafi
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
-->
<!-- https://github.com/MahdiSafsafi/Parsable-Instructions -->
<!--
This XML file includes all instructions found in :
AMD64 Architecture Programmers Manual Volume 6: 128-Bit and 256-Bit XOP and FMA4 Instructions Pub No 43479 Rev 3.04 Date November 2009 document.
-->
<instrs version="1.00">
<common>
<brief>VFMADDPD--Multiply and Add Packed Double-Precision Floating-Point.</brief>
<ins>
<mnem>VFMADDPD</mnem>
<args>xmm1,xmm2,xmm3/mem128,xmm4</args>
<opc>VEX3.mmmmm3.W0.xsrc1.L0.66 69 /r /is4</opc>
</ins>
<ins>
<mnem>VFMADDPD</mnem>
<args>ymm1,ymm2,ymm3/mem256,ymm4</args>
<opc>VEX3.mmmmm3.W0.ysrc1.L1.66 69 /r /is4</opc>
</ins>
<ins>
<mnem>VFMADDPD</mnem>
<args>xmm1,xmm2,xmm3,xmm4/mem128</args>
<opc>VEX3.mmmmm3.W1.xsrc1.L0.66 69 /r /is4</opc>
</ins>
<ins>
<mnem>VFMADDPD</mnem>
<args>ymm1,ymm2,ymm3,ymm4/mem256</args>
<opc>VEX3.mmmmm3.W1.ysrc1.L1.66 69 /r /is4</opc>
</ins>
</common>
<common>
<brief>VFMADDPS--Multiply and Add Packed Single-Precision Floating-Point.</brief>
<ins>
<mnem>VFMADDPS</mnem>
<args>xmm1,xmm2,xmm3/mem128,xmm4</args>
<opc>VEX3.mmmmm3.W0.xsrc1.L0.66 68 /r /is4</opc>
</ins>
<ins>
<mnem>VFMADDPS</mnem>
<args>ymm1,ymm2,ymm3/mem256,ymm4</args>
<opc>VEX3.mmmmm3.W0.ysrc1.L1.66 68 /r /is4</opc>
</ins>
<ins>
<mnem>VFMADDPS</mnem>
<args>xmm1,xmm2,xmm3,xmm4/mem128</args>
<opc>VEX3.mmmmm3.W1.xsrc1.L0.66 68 /r /is4</opc>
</ins>
<ins>
<mnem>VFMADDPS</mnem>
<args>ymm1,ymm2,ymm3,ymm4/mem256</args>
<opc>VEX3.mmmmm3.W1.ysrc1.L1.66 68 /r /is4</opc>
</ins>
</common>
<common>
<brief>VFMADDSD--Multiply and Add Scalar Double-Precision Floating-Point.</brief>
<ins>
<mnem>VFMADDSD</mnem>
<args>xmm1,xmm2,xmm3/mem64,xmm4</args>
<opc>VEX3.mmmmm3.W0.xsrc1.L0.66 6B /r /is4</opc>
</ins>
<ins>
<mnem>VFMADDSD</mnem>
<args>xmm1,xmm2,xmm3,xmm4/mem64</args>
<opc>VEX3.mmmmm3.W1.xsrc1.L0.66 6B /r /is4</opc>
</ins>
</common>
<common>
<brief>VFMADDSS--Multiply and Add Scalar Single-Precision Floating-Point.</brief>
<ins>
<mnem>VFMADDSS</mnem>
<args>xmm1,xmm2,xmm3/mem32,xmm4</args>
<opc>VEX3.mmmmm3.W0.xsrc1.L0.66 6A /r /is4</opc>
</ins>
<ins>
<mnem>VFMADDSS</mnem>
<args>xmm1,xmm2,xmm3,xmm4/mem32</args>
<opc>VEX3.mmmmm3.W1.xsrc1.L0.66 6A /r /is4</opc>
</ins>
</common>
<common>
<brief>VFMADDSUBPD--Multiply with Alternating Add/Subtract of Packed Double-Precision Floating-Point.</brief>
<ins>
<mnem>VFMADDSUBPD</mnem>
<args>xmm1,xmm2,xmm3/mem128,xmm4</args>
<opc>VEX3.mmmmm3.W0.xsrc1.L0.66 5D /r /is4</opc>
</ins>
<ins>
<mnem>VFMADDSUBPD</mnem>
<args>ymm1,ymm2,ymm3/mem256,ymm4</args>
<opc>VEX3.mmmmm3.W0.ysrc1.L1.66 5D /r /is4</opc>
</ins>
<ins>
<mnem>VFMADDSUBPD</mnem>
<args>xmm1,xmm2,xmm3,xmm4/mem128</args>
<opc>VEX3.mmmmm3.W1.xsrc1.L0.66 5D /r /is4</opc>
</ins>
<ins>
<mnem>VFMADDSUBPD</mnem>
<args>ymm1,ymm2,ymm3,ymm4/mem256</args>
<opc>VEX3.mmmmm3.W1.ysrc1.L1.66 5D /r /is4</opc>
</ins>
</common>
<common>
<brief>VFMADDSUBPS--Multiply with Alternating Add/Subtract of Packed Single-Precision Floating-Point.</brief>
<ins>
<mnem>VFMADDSUBPS</mnem>
<args>xmm1,xmm2,xmm3/mem128,xmm4</args>
<opc>VEX3.mmmmm3.W0.xsrc1.L0.66 5C /r /is4</opc>
</ins>
<ins>
<mnem>VFMADDSUBPS</mnem>
<args>ymm1,ymm2,ymm3/mem256,ymm4</args>
<opc>VEX3.mmmmm3.W0.ysrc1.L1.66 5C /r /is4</opc>
</ins>
<ins>
<mnem>VFMADDSUBPS</mnem>
<args>xmm1,xmm2,xmm3,xmm4/mem128</args>
<opc>VEX3.mmmmm3.W1.xsrc1.L0.66 5C /r /is4</opc>
</ins>
<ins>
<mnem>VFMADDSUBPS</mnem>
<args>ymm1,ymm2,ymm3,ymm4/mem256</args>
<opc>VEX3.mmmmm3.W1.ysrc1.L1.66 5C /r /is4</opc>
</ins>
</common>
<common>
<brief>VFMSUBADDPD--Multiply with Alternating Subtract/Add of Packed Double-Precision Floating-Point.</brief>
<ins>
<mnem>VFMSUBADDPD</mnem>
<args>xmm1,xmm2,xmm3/mem128,xmm4</args>
<opc>VEX3.mmmmm3.W0.xsrc1.L0.66 5F /r /is4</opc>
</ins>
<ins>
<mnem>VFMSUBADDPD</mnem>
<args>ymm1,ymm2,ymm3/mem256,ymm4</args>
<opc>VEX3.mmmmm3.W0.ysrc1.L1.66 5F /r /is4</opc>
</ins>
<ins>
<mnem>VFMSUBADDPD</mnem>
<args>xmm1,xmm2,xmm3,xmm4/mem128</args>
<opc>VEX3.mmmmm3.W1.xsrc1.L0.66 5F /r /is4</opc>
</ins>
<ins>
<mnem>VFMSUBADDPD</mnem>
<args>ymm1,ymm2,ymm3,ymm4/mem256</args>
<opc>VEX3.mmmmm3.W1.ysrc1.L1.66 5F /r /is4</opc>
</ins>
</common>
<common>
<brief>VFMSUBADDPS--Multiply with Alternating Subtract/Add of Packed Single-Precision Floating-Point.</brief>
<ins>
<mnem>VFMSUBADDPS</mnem>
<args>xmm1,xmm2,xmm3/mem128,xmm4</args>
<opc>VEX3.mmmmm3.W0.xsrc1.L0.66 5E /r /is4</opc>
</ins>
<ins>
<mnem>VFMSUBADDPS</mnem>
<args>ymm1,ymm2,ymm3/mem256,ymm4</args>
<opc>VEX3.mmmmm3.W0.ysrc1.L1.66 5E /r /is4</opc>
</ins>
<ins>
<mnem>VFMSUBADDPS</mnem>
<args>xmm1,xmm2,xmm3,xmm4/mem128</args>
<opc>VEX3.mmmmm3.W1.xsrc1.L0.66 5E /r /is4</opc>
</ins>
<ins>
<mnem>VFMSUBADDPS</mnem>
<args>ymm1,ymm2,ymm3,ymm4/mem256</args>
<opc>VEX3.mmmmm3.W1.ysrc1.L1.66 5E /r /is4</opc>
</ins>
</common>
<common>
<brief>VFMSUBPD--Multiply and Subtract Packed Double-Precision Floating-Point.</brief>
<ins>
<mnem>VFMSUBPD</mnem>
<args>xmm1,xmm2,xmm3/mem128,xmm4</args>
<opc>VEX3.mmmmm3.W0.xsrc1.L0.66 6D /r /is4</opc>
</ins>
<ins>
<mnem>VFMSUBPD</mnem>
<args>ymm1,ymm2,ymm3/mem256,ymm4</args>
<opc>VEX3.mmmmm3.W0.ysrc1.L1.66 6D /r /is4</opc>
</ins>
<ins>
<mnem>VFMSUBPD</mnem>
<args>xmm1,xmm2,xmm3,xmm4/mem128</args>
<opc>VEX3.mmmmm3.W1.xsrc1.L0.66 6D /r /is4</opc>
</ins>
<ins>
<mnem>VFMSUBPD</mnem>
<args>ymm1,ymm2,ymm3,ymm4/mem256</args>
<opc>VEX3.mmmmm3.W1.ysrc1.L1.66 6D /r /is4</opc>
</ins>
</common>
<common>
<brief>VFMSUBPS--Multiply and Subtract Packed Single-Precision Floating-Point.</brief>
<ins>
<mnem>VFMSUBPS</mnem>
<args>xmm1,xmm2,xmm3/mem128,xmm4</args>
<opc>VEX3.mmmmm3.W0.xsrc1.L0.66 6C /r /is4</opc>
</ins>
<ins>
<mnem>VFMSUBPS</mnem>
<args>ymm1,ymm2,ymm3/mem256,ymm4</args>
<opc>VEX3.mmmmm3.W0.ysrc1.L1.66 6C /r /is4</opc>
</ins>
<ins>
<mnem>VFMSUBPS</mnem>
<args>xmm1,xmm2,xmm3,xmm4/mem128</args>
<opc>VEX3.mmmmm3.W1.xsrc1.L0.66 6C /r /is4</opc>
</ins>
<ins>
<mnem>VFMSUBPS</mnem>
<args>ymm1,ymm2,ymm3,ymm4/mem256</args>
<opc>VEX3.mmmmm3.W1.ysrc1.L1.66 6C /r /is4</opc>
</ins>
</common>
<common>
<brief>VFMSUBSD--Multiply and Subtract Scalar Double-Precision Floating-Point.</brief>
<ins>
<mnem>VFMSUBSD</mnem>
<args>xmm1,xmm2,xmm3/mem64,xmm4</args>
<opc>VEX3.mmmmm3.W0.xsrc1.L0.66 6F /r /is4</opc>
</ins>
<ins>
<mnem>VFMSUBSD</mnem>
<args>xmm1,xmm2,xmm3,xmm4/mem64</args>
<opc>VEX3.mmmmm3.W1.xsrc1.L0.66 6F /r /is4</opc>
</ins>
</common>
<common>
<brief>VFMSUBSS--Multiply and Subtract Scalar Single-Precision Floating-Point.</brief>
<ins>
<mnem>VFMSUBSS</mnem>
<args>xmm1,xmm2,xmm3/mem32,xmm4</args>
<opc>VEX3.mmmmm3.W0.xsrc1.L0.66 6E /r /is4</opc>
</ins>
<ins>
<mnem>VFMSUBSS</mnem>
<args>xmm1,xmm2,xmm3,xmm4/mem32</args>
<opc>VEX3.mmmmm3.W1.xsrc1.L0.66 6E /r /is4</opc>
</ins>
</common>
<common>
<brief>VFNMADDPD--Negative Multiply and Add Packed Double-Precision Floating-Point.</brief>
<ins>
<mnem>VFNMADDPD</mnem>
<args>xmm1,xmm2,xmm3/mem128,xmm4</args>
<opc>VEX3.mmmmm3.W0.xsrc1.L0.66 79 /r /is4</opc>
</ins>
<ins>
<mnem>VFNMADDPD</mnem>
<args>ymm1,ymm2,ymm3/mem256,ymm4</args>
<opc>VEX3.mmmmm3.W0.ysrc1.L1.66 79 /r /is4</opc>
</ins>
<ins>
<mnem>VFNMADDPD</mnem>
<args>xmm1,xmm2,xmm3,xmm4/mem128</args>
<opc>VEX3.mmmmm3.W1.xsrc1.L0.66 79 /r /is4</opc>
</ins>
<ins>
<mnem>VFNMADDPD</mnem>
<args>ymm1,ymm2,ymm3,ymm4/mem256</args>
<opc>VEX3.mmmmm3.W1.ysrc1.L1.66 79 /r /is4</opc>
</ins>
</common>
<common>
<brief>VFNMADDPS--Negative Multiply and Add Packed Single-Precision Floating-Point.</brief>
<ins>
<mnem>VFNMADDPS</mnem>
<args>xmm1,xmm2,xmm3/mem128,xmm4</args>
<opc>VEX3.mmmmm3.W0.xsrc1.L0.66 78 /r /is4</opc>
</ins>
<ins>
<mnem>VFNMADDPS</mnem>
<args>ymm1,ymm2,ymm3/mem256,ymm4</args>
<opc>VEX3.mmmmm3.W0.ysrc1.L1.66 78 /r /is4</opc>
</ins>
<ins>
<mnem>VFNMADDPS</mnem>
<args>xmm1,xmm2,xmm3,xmm4/mem128</args>
<opc>VEX3.mmmmm3.W1.xsrc1.L0.66 78 /r /is4</opc>
</ins>
<ins>
<mnem>VFNMADDPS</mnem>
<args>ymm1,ymm2,ymm3,ymm4/mem256</args>
<opc>VEX3.mmmmm3.W1.ysrc1.L1.66 78 /r /is4</opc>
</ins>
</common>
<common>
<brief>VFNMADDSD--Negative Multiply and Add Scalar Double-Precision Floating-Point.</brief>
<ins>
<mnem>VFNMADDSD</mnem>
<args>xmm1,xmm2,xmm3/mem64,xmm4</args>
<opc>VEX3.mmmmm3.W0.xsrc1.L0.66 7B /r /is4</opc>
</ins>
<ins>
<mnem>VFNMADDSD</mnem>
<args>xmm1,xmm2,xmm3,xmm4/mem64</args>
<opc>VEX3.mmmmm3.W1.xsrc1.L0.66 7B /r /is4</opc>
</ins>
</common>
<common>
<brief>VFNMADDSS--Negative Multiply and Add Scalar Single-Precision Floating-Point.</brief>
<ins>
<mnem>VFNMADDSS</mnem>
<args>xmm1,xmm2,xmm3/mem32,xmm4</args>
<opc>VEX3.mmmmm3.W0.xsrc1.L0.66 7A /r /is4</opc>
</ins>
<ins>
<mnem>VFNMADDSS</mnem>
<args>xmm1,xmm2,xmm3,xmm4/mem32</args>
<opc>VEX3.mmmmm3.W1.xsrc1.L0.66 7A /r /is4</opc>
</ins>
</common>
<common>
<brief>VFNMSUBPD--Negative Multiply and Subtract Packed Double-Precision Floating-Point.</brief>
<ins>
<mnem>VFNMSUBPD</mnem>
<args>xmm1,xmm2,xmm3/mem128,xmm4</args>
<opc>VEX3.mmmmm3.W0.xsrc1.L0.66 7D /r /is4</opc>
</ins>
<ins>
<mnem>VFNMSUBPD</mnem>
<args>ymm1,ymm2,ymm3/mem256,ymm4</args>
<opc>VEX3.mmmmm3.W0.ysrc1.L1.66 7D /r /is4</opc>
</ins>
<ins>
<mnem>VFNMSUBPD</mnem>
<args>xmm1,xmm2,xmm3,xmm4/mem128</args>
<opc>VEX3.mmmmm3.W1.xsrc1.L0.66 7D /r /is4</opc>
</ins>
<ins>
<mnem>VFNMSUBPD</mnem>
<args>ymm1,ymm2,ymm3,ymm4/mem256</args>
<opc>VEX3.mmmmm3.W1.ysrc1.L1.66 7D /r /is4</opc>
</ins>
</common>
<common>
<brief>VFNMSUBPS--Negative Multiply and Subtract Packed Single-Precision Floating-Point.</brief>
<ins>
<mnem>VFNMSUBPS</mnem>
<args>xmm1,xmm2,xmm3/mem128,xmm4</args>
<opc>VEX3.mmmmm3.W0.xsrc1.L0.66 7C /r /is4</opc>
</ins>
<ins>
<mnem>VFNMSUBPS</mnem>
<args>ymm1,ymm2,ymm3/mem256,ymm4</args>
<opc>VEX3.mmmmm3.W0.ysrc1.L1.66 7C /r /is4</opc>
</ins>
<ins>
<mnem>VFNMSUBPS</mnem>
<args>xmm1,xmm2,xmm3,xmm4/mem128</args>
<opc>VEX3.mmmmm3.W1.xsrc1.L0.66 7C /r /is4</opc>
</ins>
<ins>
<mnem>VFNMSUBPS</mnem>
<args>ymm1,ymm2,ymm3,ymm4/mem256</args>
<opc>VEX3.mmmmm3.W1.ysrc1.L1.66 7C /r /is4</opc>
</ins>
</common>
<common>
<brief>VFNMSUBSD--Negative Multiply and Subtract Scalar Double-Precision Floating-Point.</brief>
<ins>
<mnem>VFNMSUBSD</mnem>
<args>xmm1,xmm2,xmm3/mem64,xmm4</args>
<opc>VEX3.mmmmm3.W0.xsrc1.L0.66 7F /r /is4</opc>
</ins>
<ins>
<mnem>VFNMSUBSD</mnem>
<args>xmm1,xmm2,xmm3,xmm4/mem64</args>
<opc>VEX3.mmmmm3.W1.xsrc1.L0.66 7F /r /is4</opc>
</ins>
</common>
<common>
<brief>VFNMSUBSS--Negative Multiply and Subtract Scalar Single-Precision Floating-Point.</brief>
<ins>
<mnem>VFNMSUBSS</mnem>
<args>xmm1,xmm2,xmm3/mem32,xmm4</args>
<opc>VEX3.mmmmm3.W0.xsrc1.L0.66 7E /r /is4</opc>
</ins>
<ins>
<mnem>VFNMSUBSS</mnem>
<args>xmm1,xmm2,xmm3,xmm4/mem32</args>
<opc>VEX3.mmmmm3.W1.xsrc1.L0.66 7E /r /is4</opc>
</ins>
</common>
<common>
<brief>VFRCZPD--Extract Fraction Packed Double-Precision Floating-Point.</brief>
<ins>
<mnem>VFRCZPD</mnem>
<args>xmm1,xmm2/mem128</args>
<opc>XOP.mmmmm9.W0.1111.L0.NA 81 /r</opc>
</ins>
<ins>
<mnem>VFRCZPD</mnem>
<args>ymm1,ymm2/mem256</args>
<opc>XOP.mmmmm9.W0.1111.L1.NA 81 /r</opc>
</ins>
</common>
<common>
<brief>VFRCZPS--Extract Fraction Packed Single-Precision Floating-Point.</brief>
<ins>
<mnem>VFRCZPS</mnem>
<args>xmm1,xmm2/mem128</args>
<opc>XOP.mmmmm9.W0.1111.L0.NA 80 /r</opc>
</ins>
<ins>
<mnem>VFRCZPS</mnem>
<args>ymm1,ymm2/mem256</args>
<opc>XOP.mmmmm9.W0.1111.L1.NA 80 /r</opc>
</ins>
</common>
<common>
<brief>VFRCZSD--Extract Fraction Scalar Double-Precision Floating-Point.</brief>
<ins>
<mnem>VFRCZSD</mnem>
<args>xmm1,xmm2/mem64</args>
<opc>XOP.mmmmm9.W0.1111.L0.NA 83 /r</opc>
</ins>
</common>
<common>
<brief>VFRCZSS--Extract Fraction Scalar Single-Precision Floating Point.</brief>
<ins>
<mnem>VFRCZSS</mnem>
<args>xmm1,xmm2/mem32</args>
<opc>XOP.mmmmm9.W0.1111.L0.NA 82 /r</opc>
</ins>
</common>
<common>
<brief>VPCMOV--Vector Conditional Moves.</brief>
<ins>
<mnem>VPCMOV</mnem>
<args>xmm1,xmm2,xmm3/mem128,xmm4</args>
<opc>XOP.mmmmm8.W0.xsrc1.L0.NA A2 /r imm[7:4]</opc>
</ins>
<ins>
<mnem>VPCMOV</mnem>
<args>ymm1,ymm2,ymm3/mem256,ymm4</args>
<opc>XOP.mmmmm8.W0.ysrc1.L1.NA A2 /r imm[7:4]</opc>
</ins>
<ins>
<mnem>VPCMOV</mnem>
<args>xmm1,xmm2,xmm3,xmm4/mem128</args>
<opc>XOP.mmmmm8.W1.xsrc1.L0.NA A2 /r imm[7:4]</opc>
</ins>
<ins>
<mnem>VPCMOV</mnem>
<args>ymm1,ymm2,ymm3,ymm4/mem256</args>
<opc>XOP.mmmmm8.W1.ysrc1.L1.NA A2 /r imm[7:4]</opc>
</ins>
</common>
<common>
<brief>VPCOMB--Compare Vector Signed Bytes.</brief>
<ins>
<mnem>VPCOMB</mnem>
<args>xmm1,xmm2,xmm3/mem128,imm8</args>
<opc>XOP.mmmmm8.W0.xsrc1.L0.NA CC /r /imm8</opc>
</ins>
</common>
<common>
<brief>VPCOMD--Compare Vector Signed Doublewords.</brief>
<ins>
<mnem>VPCOMD</mnem>
<args>xmm1,xmm2,xmm3/mem128,imm8</args>
<opc>XOP.mmmmm8.W0.xsrc1.L0.NA CE /r /imm8</opc>
</ins>
</common>
<common>
<brief>VPCOMQ--Compare Vector Signed Quadwords.</brief>
<ins>
<mnem>VPCOMQ</mnem>
<args>xmm1,xmm2,xmm3/mem128,imm8</args>
<opc>XOP.mmmmm8.W0.xsrc1.L0.NA CF /r imm8</opc>
</ins>
</common>
<common>
<brief>VPCOMUB--Compare Vector Unsigned Bytes.</brief>
<ins>
<mnem>VPCOMUB</mnem>
<args>xmm1,xmm2,xmm3/mem128,imm8</args>
<opc>XOP.mmmmm8.W0.xsrc1.L0.NA EC /r imm8</opc>
</ins>
</common>
<common>
<brief>VPCOMUD--Compare Vector Unsigned Doublewords.</brief>
<ins>
<mnem>VPCOMUD</mnem>
<args>xmm1,xmm2,xmm3/mem128,imm8</args>
<opc>XOP.mmmmm8.W0.xsrc1.L0.NA EE /r imm8</opc>
</ins>
</common>
<common>
<brief>VPCOMUQ--Compare Vector Unsigned Quadwords.</brief>
<ins>
<mnem>VPCOMUQ</mnem>
<args>xmm1,xmm2,xmm3/mem128,imm8</args>
<opc>XOP.mmmmm8.W0.xsrc1.L0.NA EF /r imm8</opc>
</ins>
</common>
<common>
<brief>VPCOMUW--Compare Vector Unsigned Words.</brief>
<ins>
<mnem>VPCOMUW</mnem>
<args>xmm1,xmm2,xmm3/mem128,imm8</args>
<opc>XOP.mmmmm8.W0.xsrc1.L0.NA ED /r imm8</opc>
</ins>
</common>
<common>
<brief>VPCOMW--Compare Vector Signed Words.</brief>
<ins>
<mnem>VPCOMW</mnem>
<args>xmm1,xmm2,xmm3/mem128,imm8</args>
<opc>XOP.mmmmm8.W0.xsrc1.L0.NA CD /r imm8</opc>
</ins>
</common>
<common>
<brief>VPERMIL2PD--Permute Two-Source Double-Precision Floating- Point Values.</brief>
<ins>
<mnem>VPERMIL2PD</mnem>
<args>xmm1,xmm2,xmm3/mem128,xmm4,imm8</args>
<opc>VEX3.mmmmm3.W0.xsrc1.L0.NA 49 /r imm8</opc>
</ins>
<ins>
<mnem>VPERMIL2PD</mnem>
<args>xmm1,xmm2,xmm3,xmm4/mem128,imm8</args>
<opc>VEX3.mmmmm3.W1.xsrc1.L0.NA 49 /r imm8</opc>
</ins>
<ins>
<mnem>VPERMIL2PD</mnem>
<args>ymm1,ymm2,ymm3/mem256,ymm4,imm8</args>
<opc>VEX3.mmmmm3.W0.ysrc1.L1.NA 49 /r imm8</opc>
</ins>
<ins>
<mnem>VPERMIL2PD</mnem>
<args>ymm1,ymm2,ymm3,ymm4/mem256,imm8</args>
<opc>VEX3.mmmmm3.W1.ysrc1.L1.NA 49 /r imm8</opc>
</ins>
</common>
<common>
<brief>VPERMIL2PS--Permute Two-Source Single-Precision Floating-Point Values.</brief>
<ins>
<mnem>VPERMIL2PS</mnem>
<args>xmm1,xmm2,xmm3/mem128,xmm4,imm8</args>
<opc>VEX3.mmmmm3.W0.xsrc1.L0.NA 48 /r imm8</opc>
</ins>
<ins>
<mnem>VPERMIL2PS</mnem>
<args>xmm1,xmm2,xmm3,xmm4/mem128,imm8</args>
<opc>VEX3.mmmmm3.W1.xsrc1.L0.NA 48 /r imm8</opc>
</ins>
<ins>
<mnem>VPERMIL2PS</mnem>
<args>ymm1,ymm2,ymm3/mem256,ymm4,imm8</args>
<opc>VEX3.mmmmm3.W0.ysrc1.L1.NA 48 /r imm8</opc>
</ins>
<ins>
<mnem>VPERMIL2PS</mnem>
<args>ymm1,ymm2,ymm3,ymm4/mem256,imm8</args>
<opc>VEX3.mmmmm3.W1.ysrc1.L1.NA 48 /r imm8</opc>
</ins>
</common>
<common>
<brief>VPHADDBD--Packed Horizontal Add Signed Byte to Signed Doubleword.</brief>
<ins>
<mnem>VPHADDBD</mnem>
<args>xmm1,xmm2/mem128</args>
<opc>XOP.mmmmm9.W0.1111.L0.NA C2 /r</opc>
</ins>
</common>
<common>
<brief>VPHADDBQ--Packed Horizontal Add Signed Byte to Signed Quadword.</brief>
<ins>
<mnem>VPHADDBQ</mnem>
<args>xmm1,xmm2/mem128</args>
<opc>XOP.mmmmm9.W0.1111.L0.NA C3 /r</opc>
</ins>
</common>
<common>
<brief>VPHADDBW--Packed Horizontal Add Signed Byte to Signed Word.</brief>
<ins>
<mnem>VPHADDBW</mnem>
<args>xmm1,xmm2/mem128</args>
<opc>XOP.mmmmm9.W0.1111.L0.NA C1 /r</opc>
</ins>
</common>
<common>
<brief>VPHADDDQ--Packed Horizontal Add Signed Doubleword to Signed Quadword.</brief>
<ins>
<mnem>VPHADDDQ</mnem>
<args>xmm1,xmm2/mem128</args>
<opc>XOP.mmmmm9.W0.1111.L0.NA CB /r</opc>
</ins>
</common>
<common>
<brief>VPHADDUBD--Packed Horizontal Add Unsigned Byte to Doubleword.</brief>
<ins>
<mnem>VPHADDUBD</mnem>
<args>xmm1,xmm2/mem128</args>
<opc>XOP.mmmmm9.W0.1111.L0.NA D2 /r</opc>
</ins>
</common>
<common>
<brief>VPHADDUBQ--Packed Horizontal Add Unsigned Byte to Quadword.</brief>
<ins>
<mnem>VPHADDUBQ</mnem>
<args>xmm1,xmm2/mem128</args>
<opc>XOP.mmmmm9.W0.1111.L0.NA D3 /r</opc>
</ins>
</common>
<common>
<brief>VPHADDUBW--Packed Horizontal Add Unsigned Byte to Word.</brief>
<ins>
<mnem>VPHADDUBWD</mnem>
<args>xmm1,xmm2/mem128</args>
<opc>XOP.mmmmm9.W0.1111.L0.NA D1 /r</opc>
</ins>
</common>
<common>
<brief>VPHADDUDQ--Packed Horizontal Add Unsigned Doubleword to Quadword.</brief>
<ins>
<mnem>VPHADDUDQ</mnem>
<args>xmm1,xmm2/mem128</args>
<opc>XOP.mmmmm9.W0.1111.L0.NA DB /r</opc>
</ins>
</common>
<common>
<brief>VPHADDUWDPacked--Horizontal Add Unsigned Word to Doubleword.</brief>
<ins>
<mnem>VPHADDUWD</mnem>
<args>xmm1,xmm2/mem128</args>
<opc>XOP.mmmmm9.W0.1111.L0.NA D6 /r</opc>
</ins>
</common>
<common>
<brief>VPHADDUWQ--Packed Horizontal Add Unsigned Word to Quadword.</brief>
<ins>
<mnem>VPHADDUWQ</mnem>
<args>xmm1,xmm2/mem128</args>
<opc>XOP.mmmmm9.W0.1111.L0.NA D7 /r</opc>
</ins>
</common>
<common>
<brief>VPHADDWD--Packed Horizontal Add Signed Word to Signed Doubleword.</brief>
<ins>
<mnem>VPHADDWD</mnem>
<args>xmm1,xmm2/mem128</args>
<opc>XOP.mmmmm9.W0.1111.L0.NA C6 /r</opc>
</ins>
</common>
<common>
<brief>VPHADDWQ--Packed Horizontal Add Signed Word to Signed Quadword.</brief>
<ins>
<mnem>VPHADDWQ</mnem>
<args>xmm1,xmm2/mem128</args>
<opc>XOP.mmmmm9.W0.1111.L0.NA C7 /r</opc>
</ins>
</common>
<common>
<brief>VPHSUBBW--Packed Horizontal Subtract Signed Byte to Signed Word.</brief>
<ins>
<mnem>VPHSUBBW</mnem>
<args>xmm1,xmm2/mem128</args>
<opc>XOP.mmmmm9.W0.1111.L0.NA E1 /r</opc>
</ins>
</common>
<common>
<brief>VPHSUBDQ--Packed Horizontal Subtract Signed Doubleword to Signed Quadword.</brief>
<ins>
<mnem>VPHSUBDQ</mnem>
<args>xmm1,xmm2/mem128</args>
<opc>XOP.mmmmm9.W0.1111.L0.NA E3 /r</opc>
</ins>
</common>
<common>
<brief>VPHSUBWD--Packed Horizontal Subtract Signed Word to Signed Doubleword.</brief>
<ins>
<mnem>VPHSUBWD</mnem>
<args>xmm1,xmm2/mem128</args>
<opc>XOP.mmmmm9.W0.1111.L0.NA E2 /r</opc>
</ins>
</common>
<common>
<brief>VPMACSDD--Packed Multiply Accumulate Signed Doubleword to Signed Doubleword.</brief>
<ins>
<mnem>VPMACSDD</mnem>
<args>xmm1,xmm2,xmm3/mem128,xmm4</args>
<opc>XOP.mmmmm8.W0.xsrc1.L0.NA 9E /r /is4</opc>
</ins>
</common>
<common>
<brief>VPMACSDQH--Packed Multiply Accumulate Signed High Doubleword to Signed Quadword.</brief>
<ins>
<mnem>VPMACSDQH</mnem>
<args>xmm1,xmm2,xmm3/mem128,xmm4</args>
<opc>XOP.mmmmm8.W0.xsrc1.L0.NA 9F /r /is4</opc>
</ins>
</common>
<common>
<brief>VPMACSDQL--Packed Multiply Accumulate Signed Low Doubleword to Signed Quadword.</brief>
<ins>
<mnem>VPMACSDQL</mnem>
<args>xmm1,xmm2,xmm3/mem128,xmm4</args>
<opc>XOP.mmmmm8.W0.xsrc1.L0.NA 97 /r /is4</opc>
</ins>
</common>
<common>
<brief>VPMACSSDD--Packed Multiply Accumulate Signed Doubleword to Signed Doubleword with Saturation.</brief>
<ins>
<mnem>VPMACSSDD</mnem>
<args>xmm1,xmm2,xmm3/mem128,xmm4</args>
<opc>XOP.mmmmm8.W0.xsrc1.L0.NA 8E /r /is4</opc>
</ins>
</common>
<common>
<brief>VPMACSSDQH--Packed Multiply Accumulate Signed High Doubleword to Signed Quadword with.</brief>
<ins>
<mnem>VPMACSSDQH</mnem>
<args>xmm1,xmm2,xmm3/mem128,xmm4</args>
<opc>XOP.mmmmm8.W0.xsrc1.L0.NA 8F /r is4</opc>
</ins>
</common>
<common>
<brief>VPMACSSDQL--Packed Multiply Accumulate Signed Low Doubleword to Signed Quadword with.</brief>
<ins>
<mnem>PMACSSDQL</mnem>
<args>xmm1,xmm2,xmm3/mem128,xmm4</args>
<opc>XOP.mmmmm8.W0.xsrc1.L0.NA 87 /r /is4</opc>
</ins>
</common>
<common>
<brief>VPMACSSWD--Packed Multiply Accumulate Signed Word to Signed Doubleword with Saturation.</brief>
<ins>
<mnem>VPMACSSWD</mnem>
<args>xmm1,xmm2,xmm3/mem128,xmm4</args>
<opc>XOP.mmmmm8.W0.xsrc1.L0.NA 86 /r /is4</opc>
</ins>
</common>
<common>
<brief>VPMACSSWW--Packed Multiply Accumulate Signed Word to Signed Word with Saturation.</brief>
<ins>
<mnem>PMACSSWW</mnem>
<args>xmm1,xmm2,xmm3/mem128,xmm4</args>
<opc>XOP.mmmmm8.W0.xsrc1.L0.NA 85 /r /is4</opc>
</ins>
</common>
<common>
<brief>VPMACSWD--Packed Multiply Accumulate Signed Word to Signed Doubleword.</brief>
<ins>
<mnem>VPMACSWD</mnem>
<args>xmm1,xmm2,xmm3/mem128,xmm4</args>
<opc>XOP.mmmmm8.W0.xsrc1.L0.NA 96 /r /is4</opc>
</ins>
</common>
<common>
<brief>VPMACSWW--Packed Multiply Accumulate Signed Word to Signed Word.</brief>
<ins>
<mnem>VPMACSWW</mnem>
<args>xmm1,xmm2,xmm3/mem128,xmm4</args>
<opc>XOP.mmmmm8.W0.xsrc1.L0.NA 95 /r /is4</opc>
</ins>
</common>
<common>
<brief>VPMADCSSWD--Packed Multiply, Add and Accumulate Signed Word to Signed Doubleword with Saturation.</brief>
<ins>
<mnem>VPMADCSSWD</mnem>
<args>xmm1,xmm2,xmm3/mem128,xmm4</args>
<opc>XOP.mmmmm8.W0.xsrc1.L0.NA A6 /r /is4</opc>
</ins>
</common>
<common>
<brief>VPMADCSWD--Packed Multiply Add and Accumulate Signed Word to Signed Doubleword.</brief>
<ins>
<mnem>PMADCSWD</mnem>
<args>xmm1,xmm2,xmm3/mem128,xmm4</args>
<opc>XOP.mmmmm8.W0.xsrc1.L0.NA B6 /r /is4</opc>
</ins>
</common>
<common>
<brief>VPPERM--Packed Permute Bytes.</brief>
<ins>
<mnem>VPPERM</mnem>
<args>xmm1,xmm2,xmm3,xmm4/mem128</args>
<opc>XOP.mmmmm8.W1.xsrc1.L0.NA A3 /r is4</opc>
</ins>
<ins>
<mnem>VPPERM</mnem>
<args>xmm1,xmm2,xmm3/mem128,xmm4</args>
<opc>XOP.mmmmm8.W0.xsrc1.L0.NA A3 /r is4</opc>
</ins>
</common>
<common>
<brief>VPROTB--Packed Rotate Bytes.</brief>
<ins>
<mnem>VPROTB</mnem>
<args>xmm1,xmm2/mem128,xmm8</args>
<opc>XOP.mmmmm9.W0.xcnt.L0.NA 90 /r</opc>
</ins>
<ins>
<mnem>VPROTB</mnem>
<args>xmm1,xmm2,xmm3/mem128</args>
<opc>XOP.mmmmm9.W1.xsrc.L0.NA 90 /r</opc>
</ins>
<ins>
<mnem>VPROTB</mnem>
<args>xmm1,xmm2/mem128,imm8</args>
<opc>XOP.mmmmm8.W0.1111.L0.NA C0 /r /ib</opc>
</ins>
</common>
<common>
<brief>VPROTD--Packed Rotate Doublewords.</brief>
<ins>
<mnem>VPROTD</mnem>
<args>xmm1,xmm2/mem128,xmm3</args>
<opc>XOP.mmmmm9.W0.xcnt.L0.NA 92 /r</opc>
</ins>
<ins>
<mnem>VPROTD</mnem>
<args>xmm1,xmm2,xmm3/mem128</args>
<opc>XOP.mmmmm9.W1.xsrc.L0.NA 92 /r</opc>
</ins>
<ins>
<mnem>VPROTD</mnem>
<args>xmm1,xmm2/mem128,imm8</args>
<opc>XOP.mmmmm8.W0.1111.L0.NA C2 /ib</opc>
</ins>
</common>
<common>
<brief>VPROTQ--Packed Rotate Quadwords.</brief>
<ins>
<mnem>VPROTQ</mnem>
<args>xmm1,xmm2/mem128,xmm3</args>
<opc>XOP.mmmmm9.W0.xcnt.L0.NA 93 /r</opc>
</ins>
<ins>
<mnem>VPROTQ</mnem>
<args>xmm1,xmm2,xmm3/mem128</args>
<opc>XOP.mmmmm9.W1.xsrc.L0.NA 93 /r</opc>
</ins>
<ins>
<mnem>VPROTQ</mnem>
<args>xmm1,xmm2/mem128,imm8</args>
<opc>XOP.mmmmm8.W0.1111.L0.NA C3 /ib</opc>
</ins>
</common>
<common>
<brief>VPROTW--Packed Rotate Words.</brief>
<ins>
<mnem>VPROTW</mnem>
<args>xmm1,xmm2/mem128,xmm3</args>
<opc>XOP.mmmmm9.W0.xcnt.L0.NA 91 /r</opc>
</ins>
<ins>
<mnem>VPROTW</mnem>
<args>xmm1,xmm2,xmm3/mem128</args>
<opc>XOP.mmmmm9.W1.xsrc.L0.NA 91 /r</opc>
</ins>
<ins>
<mnem>VPROTW</mnem>
<args>xmm1,xmm2/mem128,imm8</args>
<opc>XOP.mmmmm8.W0.1111.L0.NA C1 /r /ib</opc>
</ins>
</common>
<common>
<brief>VPSHAB--Packed Shift Arithmetic Bytes.</brief>
<ins>
<mnem>VPSHAB</mnem>
<args>xmm1,xmm2/mem128,xmm3</args>
<opc>XOP.mmmmm9.W0.xcnt.L0.NA 98 /r</opc>
</ins>
<ins>
<mnem>VPSHAB</mnem>
<args>xmm1,xmm2,xmm3/mem128</args>
<opc>XOP.mmmmm9.W1.xsrc.L0.NA 98 /r</opc>
</ins>
</common>
<common>
<brief>VPSHAD--Packed Shift Arithmetic Doublewords.</brief>
<ins>
<mnem>VPSHAD</mnem>
<args>xmm1,xmm2/mem128,xmm3</args>
<opc>XOP.mmmmm9.W0.xcnt.L0.NA 9A /r</opc>
</ins>
<ins>
<mnem>VPSHAD</mnem>
<args>xmm1,xmm2,xmm3/mem128</args>
<opc>XOP.mmmmm9.W1.xsrc.L0.NA 9A /r</opc>
</ins>
</common>
<common>
<brief>VPSHAQ--Packed Shift Arithmetic Quadwords.</brief>
<ins>
<mnem>VPSHAQ</mnem>
<args>xmm1,xmm2/mem128,xmm3</args>
<opc>XOP.mmmmm9.W0.xcnt.L0.NA 9B /r</opc>
</ins>
<ins>
<mnem>VPSHAQ</mnem>
<args>xmm1,xmm2,xmm3/mem128</args>
<opc>XOP.mmmmm9.W1.xsrc.L0.NA 9B /r</opc>
</ins>
</common>
<common>
<brief>VPSHAW--Packed Shift Arithmetic Words.</brief>
<ins>
<mnem>VPSHAW</mnem>
<args>xmm1,xmm2/mem128,xmm3</args>
<opc>XOP.mmmmm9.W0.xcnt.L0.NA 99 /r</opc>
</ins>
<ins>
<mnem>VPSHAW</mnem>
<args>xmm1,xmm2,xmm3/mem128</args>
<opc>XOP.mmmmm9.W1.xsrc.L0.NA 99 /r</opc>
</ins>
</common>
<common>
<brief>VPSHLB--Packed Shift Logical Bytes.</brief>
<ins>
<mnem>VPSHLB</mnem>
<args>xmm1,xmm2/mem128,xmm3</args>
<opc>XOP.mmmmm9.W0.xcnt.L0.NA 94 /r</opc>
</ins>
<ins>
<mnem>VPSHLB</mnem>
<args>xmm1,xmm2,xmm3/mem128</args>
<opc>XOP.mmmmm9.W1.xsrc.L0.NA 94 /r</opc>
</ins>
</common>
<common>
<brief>VPSHLD--Packed Shift Logical Doublewords.</brief>
<ins>
<mnem>VPSHLD</mnem>
<args>xmm1,xmm3/mem128,xmm2</args>
<opc>XOP.mmmmm9.W0.xcnt.L0.NA 96 /r</opc>
</ins>
<ins>
<mnem>VPSHLD</mnem>
<args>xmm1,xmm2,xmm3/mem128</args>
<opc>XOP.mmmmm9.W1.xsrc.L0.NA 96 /r</opc>
</ins>
</common>
<common>
<brief>VPSHLQ--Packed Shift Logical Quadwords.</brief>
<ins>
<mnem>VPSHLQ</mnem>
<args>xmm1,xmm3/mem128,xmm2</args>
<opc>XOP.mmmmm9.W0.xcnt.L0.NA 97 /r</opc>
</ins>
<ins>
<mnem>VPSHLQ</mnem>
<args>xmm1,xmm2,xmm3/mem128</args>
<opc>XOP.mmmmm9.W1.xsrc.L0.NA 97 /r</opc>
</ins>
</common>
<common>
<brief>VPSHLW--Packed Shift Logical Words.</brief>
<ins>
<mnem>VPSHLW</mnem>
<args>xmm1,xmm3/mem128,xmm2</args>
<opc>XOP.mmmmm9.W0.xcnt.L0.NA 95 /r</opc>
</ins>
<ins>
<mnem>VPSHLW</mnem>
<args>xmm1,xmm2,xmm3/mem128</args>
<opc>XOP.mmmmm9.W1.xsrc.L0.NA 95 /r</opc>
</ins>
</common>
</instrs>

View file

@ -0,0 +1,15 @@
<?xml version="1.0" encoding="ASCII"?>
<!-- XOP Rules -->
<!ELEMENT instrs (common+)>
<!ELEMENT common (brief,ins+)>
<!ELEMENT ins (mnem,args,opc)>
<!ELEMENT brief (#PCDATA)>
<!ELEMENT mnem (#PCDATA)>
<!ELEMENT args (#PCDATA)>
<!ELEMENT opc (#PCDATA)>
<!ATTLIST instrs version CDATA #REQUIRED>

View file

@ -1,8 +1,5 @@
<?xml version="1.0" encoding="ASCII"?>
<!DOCTYPE x86ins SYSTEM "ins_rules.dtd">
<!--
https://github.com/MahdiSafsafi/Parsable-Instructions
-->
<!DOCTYPE instrs SYSTEM "AVX512_Rules.dtd">
<!-- Copyright (c) 2015 Mahdi Safsafi
Permission is hereby granted, free of charge, to any person obtaining a copy
@ -24,6 +21,7 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
-->
<!-- https://github.com/MahdiSafsafi/Parsable-Instructions -->
<!--
This XML file includes all instructions found in :
Intel Architecture Instruction Set Extensions Programming Reference 319433-022 document.
@ -45,7 +43,7 @@ THE SOFTWARE.
****FOR THE REST OF KEYS YOU SHOULD REFER TO INTEL DOCUMENTATIONS!****
-->
<x86ins version="1.00">
<instrs version="1.00">
<common>
<brief>ADDPD--Add Packed Double-Precision Floating-Point Values.</brief>
<ins x32m="V" x64m="V">
@ -25901,4 +25899,4 @@ THE SOFTWARE.
<oprnd4>NA</oprnd4>
</oprndenc>
</common>
</x86ins>
</instrs>

View file

@ -1,4 +1,5 @@
<?xml version="1.0" encoding="ASCII"?>
<!-- AZ Rules -->
<!--
https://github.com/MahdiSafsafi/Parsable-Instructions
-->
@ -7,7 +8,7 @@ https://github.com/MahdiSafsafi/Parsable-Instructions
If XML validation failed ,you probably have a corrupted data !
-->
<!ELEMENT x86ins (common+)>
<!ELEMENT instrs (common+)>
<!ELEMENT common (brief,ins+,oprndenc*)>
@ -30,9 +31,8 @@ https://github.com/MahdiSafsafi/Parsable-Instructions
<!ELEMENT oprnd4 (#PCDATA)>
<!-- version attribute must be specified !-->
<!ATTLIST x86ins version CDATA #REQUIRED>
<!ATTLIST instrs version CDATA #REQUIRED>
<!ATTLIST ins x32m CDATA "V"> <!-- x32m default to Valid if not specified.-->
<!ATTLIST ins x64m CDATA "V"> <!-- x64m default to Valid if not specified.-->
<!ATTLIST opc openc CDATA "">
<!ATTLIST oprndenc openc CDATA #REQUIRED>

View file

@ -1,8 +1,5 @@
<?xml version="1.0" encoding="ASCII"?>
<!DOCTYPE x86ins SYSTEM "ins_rules.dtd">
<!--
https://github.com/MahdiSafsafi/Parsable-Instructions
-->
<!DOCTYPE instrs SYSTEM "AZ_Rules.dtd">
<!-- Copyright (c) 2015 Mahdi Safsafi
Permission is hereby granted, free of charge, to any person obtaining a copy
@ -24,6 +21,7 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
-->
<!-- https://github.com/MahdiSafsafi/Parsable-Instructions -->
<!--
This XML file includes all instructions found in :
Intel 64 and IA-32 Architectures Software Developers Manuals Volume 2 document.
@ -45,7 +43,7 @@ THE SOFTWARE.
****FOR THE REST OF KEYS YOU SHOULD REFER TO INTEL DOCUMENTATIONS!****
-->
<x86ins version="1.00">
<instrs version="1.00">
<common>
<brief>AAA--ASCII Adjust After Addition.</brief>
<ins x32m="V" x64m="I">
@ -22781,4 +22779,4 @@ THE SOFTWARE.
<oprnd4>NA</oprnd4>
</oprndenc>
</common>
</x86ins>
</instrs>

View file

@ -0,0 +1,38 @@
<?xml version="1.0" encoding="ASCII"?>
<!-- AZ Rules -->
<!--
https://github.com/MahdiSafsafi/Parsable-Instructions
-->
<!-- XML data must be validated.
If XML validation failed ,you probably have a corrupted data !
-->
<!ELEMENT instrs (common+)>
<!ELEMENT common (brief,ins+,oprndenc*)>
<!-- cpuid and dscrp elements are optional. -->
<!ELEMENT ins (mnem,args,opc,cpuid*,dscrp*)>
<!-- If cpuid tag found , flag tag must exists. -->
<!ELEMENT cpuid (flag+)>
<!-- If oprndenc tag found , all oprndX must exists. -->
<!ELEMENT oprndenc (oprnd1,oprnd2,oprnd3,oprnd4)>
<!ELEMENT brief (#PCDATA)>
<!ELEMENT mnem (#PCDATA)>
<!ELEMENT args (#PCDATA)>
<!ELEMENT opc (#PCDATA)>
<!ELEMENT flag (#PCDATA)>
<!ELEMENT dscrp (#PCDATA)>
<!ELEMENT oprnd1 (#PCDATA)>
<!ELEMENT oprnd2 (#PCDATA)>
<!ELEMENT oprnd3 (#PCDATA)>
<!ELEMENT oprnd4 (#PCDATA)>
<!-- version attribute must be specified !-->
<!ATTLIST instrs version CDATA #REQUIRED>
<!ATTLIST ins x32m CDATA "V"> <!-- x32m default to Valid if not specified.-->
<!ATTLIST ins x64m CDATA "V"> <!-- x64m default to Valid if not specified.-->
<!ATTLIST opc openc CDATA "">
<!ATTLIST oprndenc openc CDATA #REQUIRED>