<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[198832] trunk/Source/JavaScriptCore</title>
</head>
<body>

<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt;  }
#msg dl a { font-weight: bold}
#msg dl a:link    { color:#fc3; }
#msg dl a:active  { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff  {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="http://trac.webkit.org/projects/webkit/changeset/198832">198832</a></dd>
<dt>Author</dt> <dd>benjamin@webkit.org</dd>
<dt>Date</dt> <dd>2016-03-30 00:17:14 -0700 (Wed, 30 Mar 2016)</dd>
</dl>

<h3>Log Message</h3>
<pre>[JSC] Update udis86
https://bugs.webkit.org/show_bug.cgi?id=156005

Reviewed by Geoffrey Garen.

* CMakeLists.txt:
* DerivedSources.make:
* JavaScriptCore.xcodeproj/project.pbxproj:
* disassembler/udis86/differences.txt:
* disassembler/udis86/itab.py: Removed.
* disassembler/udis86/optable.xml:
* disassembler/udis86/ud_itab.py: Added.
* disassembler/udis86/ud_opcode.py:
* disassembler/udis86/ud_optable.py: Removed.
* disassembler/udis86/udis86.c:
* disassembler/udis86/udis86_decode.c:
* disassembler/udis86/udis86_decode.h:
* disassembler/udis86/udis86_extern.h:
* disassembler/udis86/udis86_input.c: Removed.
* disassembler/udis86/udis86_input.h: Removed.
* disassembler/udis86/udis86_syn-att.c:
* disassembler/udis86/udis86_syn.h:
* disassembler/udis86/udis86_types.h:
* disassembler/udis86/udis86_udint.h:</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourceJavaScriptCoreCMakeListstxt">trunk/Source/JavaScriptCore/CMakeLists.txt</a></li>
<li><a href="#trunkSourceJavaScriptCoreChangeLog">trunk/Source/JavaScriptCore/ChangeLog</a></li>
<li><a href="#trunkSourceJavaScriptCoreDerivedSourcesmake">trunk/Source/JavaScriptCore/DerivedSources.make</a></li>
<li><a href="#trunkSourceJavaScriptCoreJavaScriptCorexcodeprojprojectpbxproj">trunk/Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj</a></li>
<li><a href="#trunkSourceJavaScriptCoredisassemblerudis86differencestxt">trunk/Source/JavaScriptCore/disassembler/udis86/differences.txt</a></li>
<li><a href="#trunkSourceJavaScriptCoredisassemblerudis86optablexml">trunk/Source/JavaScriptCore/disassembler/udis86/optable.xml</a></li>
<li><a href="#trunkSourceJavaScriptCoredisassemblerudis86ud_opcodepy">trunk/Source/JavaScriptCore/disassembler/udis86/ud_opcode.py</a></li>
<li><a href="#trunkSourceJavaScriptCoredisassemblerudis86udis86c">trunk/Source/JavaScriptCore/disassembler/udis86/udis86.c</a></li>
<li><a href="#trunkSourceJavaScriptCoredisassemblerudis86udis86_decodec">trunk/Source/JavaScriptCore/disassembler/udis86/udis86_decode.c</a></li>
<li><a href="#trunkSourceJavaScriptCoredisassemblerudis86udis86_decodeh">trunk/Source/JavaScriptCore/disassembler/udis86/udis86_decode.h</a></li>
<li><a href="#trunkSourceJavaScriptCoredisassemblerudis86udis86_externh">trunk/Source/JavaScriptCore/disassembler/udis86/udis86_extern.h</a></li>
<li><a href="#trunkSourceJavaScriptCoredisassemblerudis86udis86_synattc">trunk/Source/JavaScriptCore/disassembler/udis86/udis86_syn-att.c</a></li>
<li><a href="#trunkSourceJavaScriptCoredisassemblerudis86udis86_synintelc">trunk/Source/JavaScriptCore/disassembler/udis86/udis86_syn-intel.c</a></li>
<li><a href="#trunkSourceJavaScriptCoredisassemblerudis86udis86_sync">trunk/Source/JavaScriptCore/disassembler/udis86/udis86_syn.c</a></li>
<li><a href="#trunkSourceJavaScriptCoredisassemblerudis86udis86_synh">trunk/Source/JavaScriptCore/disassembler/udis86/udis86_syn.h</a></li>
<li><a href="#trunkSourceJavaScriptCoredisassemblerudis86udis86_typesh">trunk/Source/JavaScriptCore/disassembler/udis86/udis86_types.h</a></li>
</ul>

<h3>Added Paths</h3>
<ul>
<li><a href="#trunkSourceJavaScriptCoredisassemblerudis86ud_itabpy">trunk/Source/JavaScriptCore/disassembler/udis86/ud_itab.py</a></li>
<li><a href="#trunkSourceJavaScriptCoredisassemblerudis86udis86_udinth">trunk/Source/JavaScriptCore/disassembler/udis86/udis86_udint.h</a></li>
</ul>

<h3>Removed Paths</h3>
<ul>
<li><a href="#trunkSourceJavaScriptCoredisassemblerudis86itabpy">trunk/Source/JavaScriptCore/disassembler/udis86/itab.py</a></li>
<li><a href="#trunkSourceJavaScriptCoredisassemblerudis86ud_optablepy">trunk/Source/JavaScriptCore/disassembler/udis86/ud_optable.py</a></li>
<li><a href="#trunkSourceJavaScriptCoredisassemblerudis86udis86_inputc">trunk/Source/JavaScriptCore/disassembler/udis86/udis86_input.c</a></li>
<li><a href="#trunkSourceJavaScriptCoredisassemblerudis86udis86_inputh">trunk/Source/JavaScriptCore/disassembler/udis86/udis86_input.h</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceJavaScriptCoreCMakeListstxt"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/CMakeLists.txt (198831 => 198832)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/CMakeLists.txt        2016-03-30 07:14:10 UTC (rev 198831)
+++ trunk/Source/JavaScriptCore/CMakeLists.txt        2016-03-30 07:17:14 UTC (rev 198832)
</span><span class="lines">@@ -388,7 +388,6 @@
</span><span class="cx"> 
</span><span class="cx">     disassembler/udis86/udis86.c
</span><span class="cx">     disassembler/udis86/udis86_decode.c
</span><del>-    disassembler/udis86/udis86_input.c
</del><span class="cx">     disassembler/udis86/udis86_itab_holder.c
</span><span class="cx">     disassembler/udis86/udis86_syn-att.c
</span><span class="cx">     disassembler/udis86/udis86_syn-intel.c
</span><span class="lines">@@ -912,14 +911,13 @@
</span><span class="cx"> 
</span><span class="cx"> set(UDIS_GEN_DEP
</span><span class="cx">     disassembler/udis86/ud_opcode.py
</span><del>-    disassembler/udis86/ud_optable.py
</del><span class="cx"> )
</span><span class="cx"> 
</span><span class="cx"> add_custom_command(
</span><span class="cx">     OUTPUT ${DERIVED_SOURCES_JAVASCRIPTCORE_DIR}/udis86_itab.c ${DERIVED_SOURCES_JAVASCRIPTCORE_DIR}/udis86_itab.h
</span><span class="cx">     DEPENDS ${UDIS_GEN_DEP}
</span><span class="cx">     WORKING_DIRECTORY ${DERIVED_SOURCES_JAVASCRIPTCORE_DIR}
</span><del>-    COMMAND ${PYTHON_EXECUTABLE} ${JAVASCRIPTCORE_DIR}/disassembler/udis86/itab.py ${JAVASCRIPTCORE_DIR}/disassembler/udis86/optable.xml
</del><ins>+    COMMAND ${PYTHON_EXECUTABLE} ${JAVASCRIPTCORE_DIR}/disassembler/udis86/ud_itab.py ${JAVASCRIPTCORE_DIR}/disassembler/udis86/optable.xml ${DERIVED_SOURCES_JAVASCRIPTCORE_DIR}
</ins><span class="cx">     VERBATIM)
</span><span class="cx"> 
</span><span class="cx"> list(APPEND JavaScriptCore_HEADERS
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/ChangeLog (198831 => 198832)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/ChangeLog        2016-03-30 07:14:10 UTC (rev 198831)
+++ trunk/Source/JavaScriptCore/ChangeLog        2016-03-30 07:17:14 UTC (rev 198832)
</span><span class="lines">@@ -1,3 +1,30 @@
</span><ins>+2016-03-30  Benjamin Poulain  &lt;benjamin@webkit.org&gt;
+
+        [JSC] Update udis86
+        https://bugs.webkit.org/show_bug.cgi?id=156005
+
+        Reviewed by Geoffrey Garen.
+
+        * CMakeLists.txt:
+        * DerivedSources.make:
+        * JavaScriptCore.xcodeproj/project.pbxproj:
+        * disassembler/udis86/differences.txt:
+        * disassembler/udis86/itab.py: Removed.
+        * disassembler/udis86/optable.xml:
+        * disassembler/udis86/ud_itab.py: Added.
+        * disassembler/udis86/ud_opcode.py:
+        * disassembler/udis86/ud_optable.py: Removed.
+        * disassembler/udis86/udis86.c:
+        * disassembler/udis86/udis86_decode.c:
+        * disassembler/udis86/udis86_decode.h:
+        * disassembler/udis86/udis86_extern.h:
+        * disassembler/udis86/udis86_input.c: Removed.
+        * disassembler/udis86/udis86_input.h: Removed.
+        * disassembler/udis86/udis86_syn-att.c:
+        * disassembler/udis86/udis86_syn.h:
+        * disassembler/udis86/udis86_types.h:
+        * disassembler/udis86/udis86_udint.h:
+
</ins><span class="cx"> 2016-03-30  Benjamin Poulain  &lt;bpoulain@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         [JSC] Get rid of operationInitGlobalConst(), it is useless
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreDerivedSourcesmake"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/DerivedSources.make (198831 => 198832)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/DerivedSources.make        2016-03-30 07:14:10 UTC (rev 198831)
+++ trunk/Source/JavaScriptCore/DerivedSources.make        2016-03-30 07:17:14 UTC (rev 198832)
</span><span class="lines">@@ -172,8 +172,8 @@
</span><span class="cx"> 
</span><span class="cx"> # udis86 instruction tables
</span><span class="cx"> 
</span><del>-udis86_itab.h: $(JavaScriptCore)/disassembler/udis86/itab.py $(JavaScriptCore)/disassembler/udis86/optable.xml
-        $(PYTHON) $(JavaScriptCore)/disassembler/udis86/itab.py $(JavaScriptCore)/disassembler/udis86/optable.xml
</del><ins>+udis86_itab.h: $(JavaScriptCore)/disassembler/udis86/ud_itab.py $(JavaScriptCore)/disassembler/udis86/optable.xml
+        $(PYTHON) $(JavaScriptCore)/disassembler/udis86/ud_itab.py $(JavaScriptCore)/disassembler/udis86/optable.xml .
</ins><span class="cx"> 
</span><span class="cx"> # Bytecode files
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreJavaScriptCorexcodeprojprojectpbxproj"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj (198831 => 198832)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj        2016-03-30 07:14:10 UTC (rev 198831)
+++ trunk/Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj        2016-03-30 07:17:14 UTC (rev 198832)
</span><span class="lines">@@ -894,8 +894,6 @@
</span><span class="cx">                 0FF42740158EBE8B004CB9FF /* udis86_decode.c in Sources */ = {isa = PBXBuildFile; fileRef = 0FF42734158EBD94004CB9FF /* udis86_decode.c */; };
</span><span class="cx">                 0FF42741158EBE8D004CB9FF /* udis86_decode.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FF42735158EBD94004CB9FF /* udis86_decode.h */; };
</span><span class="cx">                 0FF42742158EBE91004CB9FF /* udis86_extern.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FF42736158EBD94004CB9FF /* udis86_extern.h */; };
</span><del>-                0FF42743158EBE91004CB9FF /* udis86_input.c in Sources */ = {isa = PBXBuildFile; fileRef = 0FF42737158EBD94004CB9FF /* udis86_input.c */; };
-                0FF42744158EBE91004CB9FF /* udis86_input.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FF42738158EBD94004CB9FF /* udis86_input.h */; };
</del><span class="cx">                 0FF42745158EBE91004CB9FF /* udis86_syn-att.c in Sources */ = {isa = PBXBuildFile; fileRef = 0FF42739158EBD94004CB9FF /* udis86_syn-att.c */; };
</span><span class="cx">                 0FF42746158EBE91004CB9FF /* udis86_syn-intel.c in Sources */ = {isa = PBXBuildFile; fileRef = 0FF4273A158EBD94004CB9FF /* udis86_syn-intel.c */; };
</span><span class="cx">                 0FF42747158EBE91004CB9FF /* udis86_syn.c in Sources */ = {isa = PBXBuildFile; fileRef = 0FF4273B158EBD94004CB9FF /* udis86_syn.c */; };
</span><span class="lines">@@ -3053,8 +3051,6 @@
</span><span class="cx">                 0FF42734158EBD94004CB9FF /* udis86_decode.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = udis86_decode.c; path = disassembler/udis86/udis86_decode.c; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 0FF42735158EBD94004CB9FF /* udis86_decode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = udis86_decode.h; path = disassembler/udis86/udis86_decode.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 0FF42736158EBD94004CB9FF /* udis86_extern.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = udis86_extern.h; path = disassembler/udis86/udis86_extern.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><del>-                0FF42737158EBD94004CB9FF /* udis86_input.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = udis86_input.c; path = disassembler/udis86/udis86_input.c; sourceTree = &quot;&lt;group&gt;&quot;; };
-                0FF42738158EBD94004CB9FF /* udis86_input.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = udis86_input.h; path = disassembler/udis86/udis86_input.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</del><span class="cx">                 0FF42739158EBD94004CB9FF /* udis86_syn-att.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = &quot;udis86_syn-att.c&quot;; path = &quot;disassembler/udis86/udis86_syn-att.c&quot;; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 0FF4273A158EBD94004CB9FF /* udis86_syn-intel.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = &quot;udis86_syn-intel.c&quot;; path = &quot;disassembler/udis86/udis86_syn-intel.c&quot;; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 0FF4273B158EBD94004CB9FF /* udis86_syn.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = udis86_syn.c; path = disassembler/udis86/udis86_syn.c; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="lines">@@ -3281,6 +3277,7 @@
</span><span class="cx">                 43AB26C41C1A52F700D82AE6 /* B3MathExtras.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = B3MathExtras.cpp; path = b3/B3MathExtras.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 43AB26C51C1A52F700D82AE6 /* B3MathExtras.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = B3MathExtras.h; path = b3/B3MathExtras.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 43C392AA1C3BEB0000241F53 /* AssemblerCommon.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AssemblerCommon.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><ins>+                43CBA1601CAB67BA00328A5C /* udis86_udint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = udis86_udint.h; path = disassembler/udis86/udis86_udint.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</ins><span class="cx">                 449097EE0F8F81B50076A327 /* FeatureDefines.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = FeatureDefines.xcconfig; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 451539B812DC994500EF7AC4 /* Yarr.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Yarr.h; path = yarr/Yarr.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 45E12D8806A49B0F00E9DF84 /* jsc.cpp */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.cpp.cpp; path = jsc.cpp; sourceTree = &quot;&lt;group&gt;&quot;; tabWidth = 4; };
</span><span class="lines">@@ -4884,9 +4881,8 @@
</span><span class="cx">                                 0FF42734158EBD94004CB9FF /* udis86_decode.c */,
</span><span class="cx">                                 0FF42735158EBD94004CB9FF /* udis86_decode.h */,
</span><span class="cx">                                 0FF42736158EBD94004CB9FF /* udis86_extern.h */,
</span><del>-                                0FF42737158EBD94004CB9FF /* udis86_input.c */,
-                                0FF42738158EBD94004CB9FF /* udis86_input.h */,
</del><span class="cx">                                 0FF4274C158EBFE1004CB9FF /* udis86_itab_holder.c */,
</span><ins>+                                43CBA1601CAB67BA00328A5C /* udis86_udint.h */,
</ins><span class="cx">                                 0FF42739158EBD94004CB9FF /* udis86_syn-att.c */,
</span><span class="cx">                                 0FF4273A158EBD94004CB9FF /* udis86_syn-intel.c */,
</span><span class="cx">                                 0FF4273B158EBD94004CB9FF /* udis86_syn.c */,
</span><span class="lines">@@ -8016,7 +8012,6 @@
</span><span class="cx">                                 0FF4274B158EBE91004CB9FF /* udis86.h in Headers */,
</span><span class="cx">                                 0FF42741158EBE8D004CB9FF /* udis86_decode.h in Headers */,
</span><span class="cx">                                 0FF42742158EBE91004CB9FF /* udis86_extern.h in Headers */,
</span><del>-                                0FF42744158EBE91004CB9FF /* udis86_input.h in Headers */,
</del><span class="cx">                                 0FF42748158EBE91004CB9FF /* udis86_syn.h in Headers */,
</span><span class="cx">                                 0FF42749158EBE91004CB9FF /* udis86_types.h in Headers */,
</span><span class="cx">                                 A7E5AB391799E4B200D2833D /* UDis86Disassembler.h in Headers */,
</span><span class="lines">@@ -9328,7 +9323,6 @@
</span><span class="cx">                                 0F6B8AE41C4EFE1700969052 /* B3FixSSA.cpp in Sources */,
</span><span class="cx">                                 0FF4274A158EBE91004CB9FF /* udis86.c in Sources */,
</span><span class="cx">                                 0FF42740158EBE8B004CB9FF /* udis86_decode.c in Sources */,
</span><del>-                                0FF42743158EBE91004CB9FF /* udis86_input.c in Sources */,
</del><span class="cx">                                 FEA1E4391C213A2B00277A16 /* ValueProfile.cpp in Sources */,
</span><span class="cx">                                 0FF4274D158EBFE6004CB9FF /* udis86_itab_holder.c in Sources */,
</span><span class="cx">                                 0FF42745158EBE91004CB9FF /* udis86_syn-att.c in Sources */,
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoredisassemblerudis86differencestxt"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/disassembler/udis86/differences.txt (198831 => 198832)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/disassembler/udis86/differences.txt        2016-03-30 07:14:10 UTC (rev 198831)
+++ trunk/Source/JavaScriptCore/disassembler/udis86/differences.txt        2016-03-30 07:17:14 UTC (rev 198832)
</span><span class="lines">@@ -5,20 +5,5 @@
</span><span class="cx"> 
</span><span class="cx"> - assert() has been changed to ASSERT()
</span><span class="cx"> 
</span><del>-- Mass rename of udis86_input.h inp_ prefixed functions and macros to ud_inp_ to
-  avoid namespace pollution.
-
-- Removal of KERNEL checks.
-
-- Added #include of udis86_extern.h in udis86_decode.c.
-
-- Removed s_ie__pause and s_ie__nop from udis86_decode.c, since they weren't used.
-
-- Made udis86_syn.h use WTF_ATTRIBUTE_PRINTF. This required making a bunch of little
-  fixes to make the compiler's format string warnings go away.
-
-- Made the code in udis86_syn.h use vsnprintf() instead of vsprintf().
-
</del><span class="cx"> - Fixed udis86_syn-att.c's jump destination printing to work correctly in 64-bit mode.
</span><span class="cx"> 
</span><del>-- Add --outputDir option to itab.py.
</del></span></pre></div>
<a id="trunkSourceJavaScriptCoredisassemblerudis86itabpy"></a>
<div class="delfile"><h4>Deleted: trunk/Source/JavaScriptCore/disassembler/udis86/itab.py (198831 => 198832)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/disassembler/udis86/itab.py        2016-03-30 07:14:10 UTC (rev 198831)
+++ trunk/Source/JavaScriptCore/disassembler/udis86/itab.py        2016-03-30 07:17:14 UTC (rev 198832)
</span><span class="lines">@@ -1,360 +0,0 @@
</span><del>-# udis86 - scripts/itab.py
-# 
-# Copyright (c) 2009 Vivek Thampi
-# All rights reserved.
-# 
-# Redistribution and use in source and binary forms, with or without modification, 
-# are permitted provided that the following conditions are met:
-# 
-#     * Redistributions of source code must retain the above copyright notice, 
-#       this list of conditions and the following disclaimer.
-#     * Redistributions in binary form must reproduce the above copyright notice, 
-#       this list of conditions and the following disclaimer in the documentation 
-#       and/or other materials provided with the distribution.
-# 
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS &quot;AS IS&quot; AND 
-# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
-# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 
-# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR 
-# ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
-# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 
-# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON 
-# ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 
-# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-from optparse import OptionParser
-import os
-import sys
-
-sys.path.append( '../scripts' );
-
-import ud_optable
-import ud_opcode
-
-class UdItabGenerator( ud_opcode.UdOpcodeTables ):
-
-    OperandDict = {
-        &quot;Ap&quot;       : [    &quot;OP_A&quot;        , &quot;SZ_P&quot;     ],
-        &quot;E&quot;        : [    &quot;OP_E&quot;        , &quot;SZ_NA&quot;    ],
-        &quot;Eb&quot;       : [    &quot;OP_E&quot;        , &quot;SZ_B&quot;     ],
-        &quot;Ew&quot;       : [    &quot;OP_E&quot;        , &quot;SZ_W&quot;     ],
-        &quot;Ev&quot;       : [    &quot;OP_E&quot;        , &quot;SZ_V&quot;     ],
-        &quot;Ed&quot;       : [    &quot;OP_E&quot;        , &quot;SZ_D&quot;     ],
-        &quot;Eq&quot;       : [    &quot;OP_E&quot;        , &quot;SZ_Q&quot;     ],
-        &quot;Ez&quot;       : [    &quot;OP_E&quot;        , &quot;SZ_Z&quot;     ],
-        &quot;Ex&quot;       : [    &quot;OP_E&quot;        , &quot;SZ_MDQ&quot;   ],
-        &quot;Ep&quot;       : [    &quot;OP_E&quot;        , &quot;SZ_P&quot;     ],
-        &quot;G&quot;        : [    &quot;OP_G&quot;        , &quot;SZ_NA&quot;    ],
-        &quot;Gb&quot;       : [    &quot;OP_G&quot;        , &quot;SZ_B&quot;     ],
-        &quot;Gw&quot;       : [    &quot;OP_G&quot;        , &quot;SZ_W&quot;     ],
-        &quot;Gv&quot;       : [    &quot;OP_G&quot;        , &quot;SZ_V&quot;     ],
-        &quot;Gy&quot;       : [    &quot;OP_G&quot;        , &quot;SZ_MDQ&quot;   ],
-        &quot;Gy&quot;       : [    &quot;OP_G&quot;        , &quot;SZ_MDQ&quot;   ],
-        &quot;Gd&quot;       : [    &quot;OP_G&quot;        , &quot;SZ_D&quot;     ],
-        &quot;Gq&quot;       : [    &quot;OP_G&quot;        , &quot;SZ_Q&quot;     ],
-        &quot;Gx&quot;       : [    &quot;OP_G&quot;        , &quot;SZ_MDQ&quot;   ],
-        &quot;Gz&quot;       : [    &quot;OP_G&quot;        , &quot;SZ_Z&quot;     ],
-        &quot;M&quot;        : [    &quot;OP_M&quot;        , &quot;SZ_NA&quot;    ],
-        &quot;Mb&quot;       : [    &quot;OP_M&quot;        , &quot;SZ_B&quot;     ],
-        &quot;Mw&quot;       : [    &quot;OP_M&quot;        , &quot;SZ_W&quot;     ],
-        &quot;Ms&quot;       : [    &quot;OP_M&quot;        , &quot;SZ_W&quot;     ],
-        &quot;Md&quot;       : [    &quot;OP_M&quot;        , &quot;SZ_D&quot;     ],
-        &quot;Mq&quot;       : [    &quot;OP_M&quot;        , &quot;SZ_Q&quot;     ],
-        &quot;Mt&quot;       : [    &quot;OP_M&quot;        , &quot;SZ_T&quot;     ],
-        &quot;Mo&quot;       : [    &quot;OP_M&quot;        , &quot;SZ_O&quot;     ],
-        &quot;MwRv&quot;     : [    &quot;OP_MR&quot;       , &quot;SZ_WV&quot;    ],
-        &quot;MdRy&quot;     : [    &quot;OP_MR&quot;       , &quot;SZ_DY&quot;    ],
-        &quot;MbRv&quot;     : [    &quot;OP_MR&quot;       , &quot;SZ_BV&quot;    ],
-        &quot;I1&quot;       : [    &quot;OP_I1&quot;       , &quot;SZ_NA&quot;    ],
-        &quot;I3&quot;       : [    &quot;OP_I3&quot;       , &quot;SZ_NA&quot;    ],
-        &quot;Ib&quot;       : [    &quot;OP_I&quot;        , &quot;SZ_B&quot;     ],
-        &quot;Isb&quot;      : [    &quot;OP_I&quot;        , &quot;SZ_SB&quot;    ],
-        &quot;Iw&quot;       : [    &quot;OP_I&quot;        , &quot;SZ_W&quot;     ],
-        &quot;Iv&quot;       : [    &quot;OP_I&quot;        , &quot;SZ_V&quot;     ],
-        &quot;Iz&quot;       : [    &quot;OP_I&quot;        , &quot;SZ_Z&quot;     ],
-        &quot;Jv&quot;       : [    &quot;OP_J&quot;        , &quot;SZ_V&quot;     ],
-        &quot;Jz&quot;       : [    &quot;OP_J&quot;        , &quot;SZ_Z&quot;     ],
-        &quot;Jb&quot;       : [    &quot;OP_J&quot;        , &quot;SZ_B&quot;     ],
-        &quot;R&quot;        : [    &quot;OP_R&quot;        , &quot;SZ_RDQ&quot;   ], 
-        &quot;C&quot;        : [    &quot;OP_C&quot;        , &quot;SZ_NA&quot;    ],
-        &quot;D&quot;        : [    &quot;OP_D&quot;        , &quot;SZ_NA&quot;    ],
-        &quot;S&quot;        : [    &quot;OP_S&quot;        , &quot;SZ_NA&quot;    ],
-        &quot;Ob&quot;       : [    &quot;OP_O&quot;        , &quot;SZ_B&quot;     ],
-        &quot;Ow&quot;       : [    &quot;OP_O&quot;        , &quot;SZ_W&quot;     ],
-        &quot;Ov&quot;       : [    &quot;OP_O&quot;        , &quot;SZ_V&quot;     ],
-        &quot;V&quot;        : [    &quot;OP_V&quot;        , &quot;SZ_O&quot;     ],
-        &quot;W&quot;        : [    &quot;OP_W&quot;        , &quot;SZ_O&quot;     ],
-        &quot;Wsd&quot;      : [    &quot;OP_W&quot;        , &quot;SZ_O&quot;     ],
-        &quot;Wss&quot;      : [    &quot;OP_W&quot;        , &quot;SZ_O&quot;     ],
-        &quot;P&quot;        : [    &quot;OP_P&quot;        , &quot;SZ_Q&quot;     ],
-        &quot;Q&quot;        : [    &quot;OP_Q&quot;        , &quot;SZ_Q&quot;     ],
-        &quot;VR&quot;       : [    &quot;OP_VR&quot;       , &quot;SZ_O&quot;     ],
-        &quot;PR&quot;       : [    &quot;OP_PR&quot;       , &quot;SZ_Q&quot;     ],
-        &quot;AL&quot;       : [    &quot;OP_AL&quot;       , &quot;SZ_NA&quot;    ],
-        &quot;CL&quot;       : [    &quot;OP_CL&quot;       , &quot;SZ_NA&quot;    ],
-        &quot;DL&quot;       : [    &quot;OP_DL&quot;       , &quot;SZ_NA&quot;    ],
-        &quot;BL&quot;       : [    &quot;OP_BL&quot;       , &quot;SZ_NA&quot;    ],
-        &quot;AH&quot;       : [    &quot;OP_AH&quot;       , &quot;SZ_NA&quot;    ],
-        &quot;CH&quot;       : [    &quot;OP_CH&quot;       , &quot;SZ_NA&quot;    ],
-        &quot;DH&quot;       : [    &quot;OP_DH&quot;       , &quot;SZ_NA&quot;    ],
-        &quot;BH&quot;       : [    &quot;OP_BH&quot;       , &quot;SZ_NA&quot;    ],
-        &quot;AX&quot;       : [    &quot;OP_AX&quot;       , &quot;SZ_NA&quot;    ],
-        &quot;CX&quot;       : [    &quot;OP_CX&quot;       , &quot;SZ_NA&quot;    ],
-        &quot;DX&quot;       : [    &quot;OP_DX&quot;       , &quot;SZ_NA&quot;    ],
-        &quot;BX&quot;       : [    &quot;OP_BX&quot;       , &quot;SZ_NA&quot;    ],
-        &quot;SI&quot;       : [    &quot;OP_SI&quot;       , &quot;SZ_NA&quot;    ],
-        &quot;DI&quot;       : [    &quot;OP_DI&quot;       , &quot;SZ_NA&quot;    ],
-        &quot;SP&quot;       : [    &quot;OP_SP&quot;       , &quot;SZ_NA&quot;    ],
-        &quot;BP&quot;       : [    &quot;OP_BP&quot;       , &quot;SZ_NA&quot;    ],
-        &quot;eAX&quot;      : [    &quot;OP_eAX&quot;      , &quot;SZ_NA&quot;    ],
-        &quot;eCX&quot;      : [    &quot;OP_eCX&quot;      , &quot;SZ_NA&quot;    ],
-        &quot;eDX&quot;      : [    &quot;OP_eDX&quot;      , &quot;SZ_NA&quot;    ],
-        &quot;eBX&quot;      : [    &quot;OP_eBX&quot;      , &quot;SZ_NA&quot;    ],
-        &quot;eSI&quot;      : [    &quot;OP_eSI&quot;      , &quot;SZ_NA&quot;    ],
-        &quot;eDI&quot;      : [    &quot;OP_eDI&quot;      , &quot;SZ_NA&quot;    ],
-        &quot;eSP&quot;      : [    &quot;OP_eSP&quot;      , &quot;SZ_NA&quot;    ],
-        &quot;eBP&quot;      : [    &quot;OP_eBP&quot;      , &quot;SZ_NA&quot;    ],
-        &quot;rAX&quot;      : [    &quot;OP_rAX&quot;      , &quot;SZ_NA&quot;    ],
-        &quot;rCX&quot;      : [    &quot;OP_rCX&quot;      , &quot;SZ_NA&quot;    ],
-        &quot;rBX&quot;      : [    &quot;OP_rBX&quot;      , &quot;SZ_NA&quot;    ],
-        &quot;rDX&quot;      : [    &quot;OP_rDX&quot;      , &quot;SZ_NA&quot;    ],
-        &quot;rSI&quot;      : [    &quot;OP_rSI&quot;      , &quot;SZ_NA&quot;    ],
-        &quot;rDI&quot;      : [    &quot;OP_rDI&quot;      , &quot;SZ_NA&quot;    ],
-        &quot;rSP&quot;      : [    &quot;OP_rSP&quot;      , &quot;SZ_NA&quot;    ],
-        &quot;rBP&quot;      : [    &quot;OP_rBP&quot;      , &quot;SZ_NA&quot;    ],
-        &quot;ES&quot;       : [    &quot;OP_ES&quot;       , &quot;SZ_NA&quot;    ],
-        &quot;CS&quot;       : [    &quot;OP_CS&quot;       , &quot;SZ_NA&quot;    ],
-        &quot;DS&quot;       : [    &quot;OP_DS&quot;       , &quot;SZ_NA&quot;    ],
-        &quot;SS&quot;       : [    &quot;OP_SS&quot;       , &quot;SZ_NA&quot;    ],
-        &quot;GS&quot;       : [    &quot;OP_GS&quot;       , &quot;SZ_NA&quot;    ],
-        &quot;FS&quot;       : [    &quot;OP_FS&quot;       , &quot;SZ_NA&quot;    ],
-        &quot;ST0&quot;      : [    &quot;OP_ST0&quot;      , &quot;SZ_NA&quot;    ],
-        &quot;ST1&quot;      : [    &quot;OP_ST1&quot;      , &quot;SZ_NA&quot;    ],
-        &quot;ST2&quot;      : [    &quot;OP_ST2&quot;      , &quot;SZ_NA&quot;    ],
-        &quot;ST3&quot;      : [    &quot;OP_ST3&quot;      , &quot;SZ_NA&quot;    ],
-        &quot;ST4&quot;      : [    &quot;OP_ST4&quot;      , &quot;SZ_NA&quot;    ],
-        &quot;ST5&quot;      : [    &quot;OP_ST5&quot;      , &quot;SZ_NA&quot;    ],
-        &quot;ST6&quot;      : [    &quot;OP_ST6&quot;      , &quot;SZ_NA&quot;    ],
-        &quot;ST7&quot;      : [    &quot;OP_ST7&quot;      , &quot;SZ_NA&quot;    ],
-        &quot;NONE&quot;     : [    &quot;OP_NONE&quot;     , &quot;SZ_NA&quot;    ],
-        &quot;ALr8b&quot;    : [    &quot;OP_ALr8b&quot;    , &quot;SZ_NA&quot;    ],
-        &quot;CLr9b&quot;    : [    &quot;OP_CLr9b&quot;    , &quot;SZ_NA&quot;    ],
-        &quot;DLr10b&quot;   : [    &quot;OP_DLr10b&quot;   , &quot;SZ_NA&quot;    ],
-        &quot;BLr11b&quot;   : [    &quot;OP_BLr11b&quot;   , &quot;SZ_NA&quot;    ],
-        &quot;AHr12b&quot;   : [    &quot;OP_AHr12b&quot;   , &quot;SZ_NA&quot;    ],
-        &quot;CHr13b&quot;   : [    &quot;OP_CHr13b&quot;   , &quot;SZ_NA&quot;    ],
-        &quot;DHr14b&quot;   : [    &quot;OP_DHr14b&quot;   , &quot;SZ_NA&quot;    ],
-        &quot;BHr15b&quot;   : [    &quot;OP_BHr15b&quot;   , &quot;SZ_NA&quot;    ],
-        &quot;rAXr8&quot;    : [    &quot;OP_rAXr8&quot;    , &quot;SZ_NA&quot;    ],
-        &quot;rCXr9&quot;    : [    &quot;OP_rCXr9&quot;    , &quot;SZ_NA&quot;    ],
-        &quot;rDXr10&quot;   : [    &quot;OP_rDXr10&quot;   , &quot;SZ_NA&quot;    ],
-        &quot;rBXr11&quot;   : [    &quot;OP_rBXr11&quot;   , &quot;SZ_NA&quot;    ],
-        &quot;rSPr12&quot;   : [    &quot;OP_rSPr12&quot;   , &quot;SZ_NA&quot;    ],
-        &quot;rBPr13&quot;   : [    &quot;OP_rBPr13&quot;   , &quot;SZ_NA&quot;    ],
-        &quot;rSIr14&quot;   : [    &quot;OP_rSIr14&quot;   , &quot;SZ_NA&quot;    ],
-        &quot;rDIr15&quot;   : [    &quot;OP_rDIr15&quot;   , &quot;SZ_NA&quot;    ],
-        &quot;jWP&quot;      : [    &quot;OP_J&quot;        , &quot;SZ_WP&quot;    ],
-        &quot;jDP&quot;      : [    &quot;OP_J&quot;        , &quot;SZ_DP&quot;    ],
-
-    }
-
-    #
-    # opcode prefix dictionary
-    # 
-    PrefixDict = { 
-        &quot;aso&quot;      : &quot;P_aso&quot;,   
-        &quot;oso&quot;      : &quot;P_oso&quot;,   
-        &quot;rexw&quot;     : &quot;P_rexw&quot;, 
-        &quot;rexb&quot;     : &quot;P_rexb&quot;,  
-        &quot;rexx&quot;     : &quot;P_rexx&quot;,  
-        &quot;rexr&quot;     : &quot;P_rexr&quot;,
-        &quot;seg&quot;      : &quot;P_seg&quot;,
-        &quot;inv64&quot;    : &quot;P_inv64&quot;, 
-        &quot;def64&quot;    : &quot;P_def64&quot;, 
-        &quot;depM&quot;     : &quot;P_depM&quot;,
-        &quot;cast1&quot;    : &quot;P_c1&quot;,    
-        &quot;cast2&quot;    : &quot;P_c2&quot;,    
-        &quot;cast3&quot;    : &quot;P_c3&quot;,
-        &quot;cast&quot;     : &quot;P_cast&quot;,
-        &quot;sext&quot;     : &quot;P_sext&quot;
-    }
-
-    InvalidEntryIdx = 0 
-    InvalidEntry = { 'type'     : 'invalid', 
-                     'mnemonic' : 'invalid', 
-                     'operands' : '', 
-                     'prefixes' : '',
-                     'meta'     : '' }
-
-    Itab     = []   # instruction table
-    ItabIdx  = 1    # instruction table index
-    GtabIdx  = 0    # group table index
-    GtabMeta = []
-
-    ItabLookup = {}
-
-    MnemonicAliases = ( &quot;invalid&quot;, &quot;3dnow&quot;, &quot;none&quot;, &quot;db&quot;, &quot;pause&quot; )
-    
-    def __init__( self, outputDir ):
-        # first itab entry (0) is Invalid
-        self.Itab.append( self.InvalidEntry )
-        self.MnemonicsTable.extend( self.MnemonicAliases )
-        self.outputDir = outputDir
-
-    def toGroupId( self, id ):
-        return 0x8000 | id
-
-    def genLookupTable( self, table, scope = '' ):
-        idxArray = [ ]
-        ( tabIdx, self.GtabIdx ) = ( self.GtabIdx, self.GtabIdx + 1 )
-        self.GtabMeta.append( { 'type' : table[ 'type' ], 'meta' : table[ 'meta' ] } )
-
-        for _idx in range( self.sizeOfTable( table[ 'type' ] ) ):
-            idx = &quot;%02x&quot; % _idx 
-
-            e   = self.InvalidEntry
-            i   = self.InvalidEntryIdx
-
-            if idx in table[ 'entries' ].keys():
-                e = table[ 'entries' ][ idx ]
-
-            # leaf node (insn)
-            if e[ 'type' ] == 'insn':
-                ( i, self.ItabIdx ) = ( self.ItabIdx, self.ItabIdx + 1 )
-                self.Itab.append( e )
-            elif e[ 'type' ] != 'invalid':
-                i = self.genLookupTable( e, 'static' )
-
-            idxArray.append( i )
-
-        name = &quot;ud_itab__%s&quot; % tabIdx
-        self.ItabLookup[ tabIdx ] = name
-
-        self.ItabC.write( &quot;\n&quot; );
-        if len( scope ):
-            self.ItabC.write( scope + ' ' )
-        self.ItabC.write( &quot;const uint16_t %s[] = {\n&quot; % name )
-        for i in range( len( idxArray ) ):
-            if i &gt; 0 and i % 4 == 0: 
-                self.ItabC.write( &quot;\n&quot; )
-            if ( i%4 == 0 ):
-                self.ItabC.write( &quot;  /* %2x */&quot; % i)
-            if idxArray[ i ] &gt;= 0x8000:
-                self.ItabC.write( &quot;%12s,&quot; % (&quot;GROUP(%d)&quot; % ( ~0x8000 &amp; idxArray[ i ] )))
-            else:
-                self.ItabC.write( &quot;%12d,&quot; % ( idxArray[ i ] ))
-        self.ItabC.write( &quot;\n&quot; )
-        self.ItabC.write( &quot;};\n&quot; )
-
-        return self.toGroupId( tabIdx )
-
-    def genLookupTableList( self ):
-        self.ItabC.write( &quot;\n\n&quot;  );
-        self.ItabC.write( &quot;struct ud_lookup_table_list_entry ud_lookup_table_list[] = {\n&quot; )
-        for i in range( len( self.GtabMeta ) ):
-            f0 = self.ItabLookup[ i ] + &quot;,&quot;
-            f1 = ( self.nameOfTable( self.GtabMeta[ i ][ 'type' ] ) ) + &quot;,&quot;
-            f2 = &quot;\&quot;%s\&quot;&quot; % self.GtabMeta[ i ][ 'meta' ]
-            self.ItabC.write( &quot;    /* %03d */ { %s %s %s },\n&quot; % ( i, f0, f1, f2 ) )
-        self.ItabC.write( &quot;};&quot; )
-
-    def genInsnTable( self ):
-        self.ItabC.write( &quot;struct ud_itab_entry ud_itab[] = {\n&quot; );
-        idx = 0
-        for e in self.Itab:
-            opr_c = [ &quot;O_NONE&quot;, &quot;O_NONE&quot;, &quot;O_NONE&quot; ]
-            pfx_c = []
-            opr   = e[ 'operands' ]
-            for i in range(len(opr)): 
-                if not (opr[i] in self.OperandDict.keys()):
-                    print(&quot;error: invalid operand declaration: %s\n&quot; % opr[i])
-                opr_c[i] = &quot;O_&quot; + opr[i]
-            opr = &quot;%s %s %s&quot; % (opr_c[0] + &quot;,&quot;, opr_c[1] + &quot;,&quot;, opr_c[2])
-
-            for p in e['prefixes']:
-                if not ( p in self.PrefixDict.keys() ):
-                    print(&quot;error: invalid prefix specification: %s \n&quot; % pfx)
-                pfx_c.append( self.PrefixDict[p] )
-            if len(e['prefixes']) == 0:
-                pfx_c.append( &quot;P_none&quot; )
-            pfx = &quot;|&quot;.join( pfx_c )
-
-            self.ItabC.write( &quot;  /* %04d */ { UD_I%s %s, %s },\n&quot; \
-                        % ( idx, e[ 'mnemonic' ] + ',', opr, pfx ) )
-            idx += 1
-        self.ItabC.write( &quot;};\n&quot; )
-
-        self.ItabC.write( &quot;\n\n&quot;  );
-        self.ItabC.write( &quot;const char * ud_mnemonics_str[] = {\n&quot; )
-        self.ItabC.write( &quot;,\n    &quot;.join( [ &quot;\&quot;%s\&quot;&quot; % m for m in self.MnemonicsTable ] ) )
-        self.ItabC.write( &quot;\n};\n&quot; )

-
-    def genItabH( self ):
-        self.ItabH = open( os.path.join(self.outputDir, &quot;udis86_itab.h&quot;), &quot;w&quot; )
-
-        # Generate Table Type Enumeration
-        self.ItabH.write( &quot;#ifndef UD_ITAB_H\n&quot; )
-        self.ItabH.write( &quot;#define UD_ITAB_H\n\n&quot; )
-
-        # table type enumeration
-        self.ItabH.write( &quot;/* ud_table_type -- lookup table types (see lookup.c) */\n&quot; )
-        self.ItabH.write( &quot;enum ud_table_type {\n    &quot; )
-        enum = [ self.TableInfo[ k ][ 'name' ] for k in self.TableInfo.keys() ]
-        self.ItabH.write( &quot;,\n    &quot;.join( enum ) )
-        self.ItabH.write( &quot;\n};\n\n&quot; );
-
-        # mnemonic enumeration
-        self.ItabH.write( &quot;/* ud_mnemonic -- mnemonic constants */\n&quot; )
-        enum  = &quot;enum ud_mnemonic_code {\n    &quot;
-        enum += &quot;,\n    &quot;.join( [ &quot;UD_I%s&quot; % m for m in self.MnemonicsTable ] )
-        enum += &quot;\n} UD_ATTR_PACKED;\n&quot;
-        self.ItabH.write( enum )
-        self.ItabH.write( &quot;\n&quot; )
-
-        self.ItabH.write(&quot;\n/* itab entry operand definitions */\n&quot;);
-        operands = self.OperandDict.keys()
-        operands.sort()
-        for o in operands:
-            self.ItabH.write(&quot;#define O_%-7s { %-12s %-8s }\n&quot; %
-                    (o, self.OperandDict[o][0] + &quot;,&quot;, self.OperandDict[o][1]));
-        self.ItabH.write(&quot;\n\n&quot;);
-
-        self.ItabH.write( &quot;extern const char * ud_mnemonics_str[];\n&quot; )
-
-        self.ItabH.write( &quot;#define GROUP(n) (0x8000 | (n))&quot; )
-
-        self.ItabH.write( &quot;\n#endif /* UD_ITAB_H */\n&quot; )
-    
-        self.ItabH.close()
-
-
-    def genItabC( self ):
-        self.ItabC = open( os.path.join(self.outputDir, &quot;udis86_itab.c&quot;), &quot;w&quot; )
-        self.ItabC.write( &quot;/* itab.c -- generated by itab.py, do no edit&quot; )
-        self.ItabC.write( &quot; */\n&quot; );
-        self.ItabC.write( &quot;#include \&quot;udis86_decode.h\&quot;\n\n&quot; );
-
-        self.genLookupTable( self.OpcodeTable0 ) 
-        self.genLookupTableList()
-        self.genInsnTable()
-
-        self.ItabC.close()
-
-    def genItab( self ):
-        self.genItabC()
-        self.genItabH()
-
-def main():
-    parser = OptionParser()
-    parser.add_option(&quot;--outputDir&quot;, dest=&quot;outputDir&quot;, default=&quot;&quot;)
-    options, args = parser.parse_args()
-    generator = UdItabGenerator(os.path.normpath(options.outputDir))
-    optableXmlParser = ud_optable.UdOptableXmlParser()
-    optableXmlParser.parse( args[ 0 ], generator.addInsnDef )
-
-    generator.genItab()
-
-if __name__ == '__main__':
-    main()
</del></span></pre></div>
<a id="trunkSourceJavaScriptCoredisassemblerudis86optablexml"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/disassembler/udis86/optable.xml (198831 => 198832)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/disassembler/udis86/optable.xml        2016-03-30 07:14:10 UTC (rev 198831)
+++ trunk/Source/JavaScriptCore/disassembler/udis86/optable.xml        2016-03-30 07:17:14 UTC (rev 198832)
</span><span class="lines">@@ -2,37 +2,132 @@
</span><span class="cx"> &lt;?xml-stylesheet href=&quot;optable.xsl&quot; type=&quot;text/xsl&quot;?&gt;
</span><span class="cx"> &lt;x86optable&gt;
</span><span class="cx"> 
</span><ins>+  &lt;!--
+      The most important elements of each instruction definition are the
+      pfx (prefix), opc (opcode), and opr (operand) elements.  Each is a
+      CDATA element consisting of blank-separated words.  Upper and lower
+      case are equivalent.
+
+      &lt;pfx&gt;&lt;/pfx&gt;
+
+      pfx describes the set of valid prefixes that can precede the main
+      opcode without turning it into a different instruction. These may
+      be:
+
+      aso   accepts address size override
+      oso   accepts operand size override
+      seg   accepts a segment override
+      rexw, rexr, rexx, rexb
+            uses the indicated REX bit
+      vexl  accepts the vex.L prefix bit, in other words, the vexl
+            bit can be used in the decoding of the avx instruction.
+
+      &lt;opr&gt;&lt;/opr&gt;
+
+      [T][s]
+
+      Size Suffix
+      ===========
+
+      x     - If vex.L = 1 =&gt; m256/YMM
+                 vex.L = 0 =&gt; m128/XMM
+
+      opc words may be actual byte values (two hex digits), or may be one of
+      the following:
+      /sse=66,f3,f2 - required prefix (always first, and always
+        followed by 0f)
+      /3dnow=00-ff - this is a 3DNow opcode (only in a definition of the
+        form 0f 0f 3dnow=&lt;byte&gt;)
+      /a=16,32,64 - has this address size
+      /m=16,32,64,!64 - applicable only when the CPU is in this mode
+      /o=16,32,64 - has this operand size
+      /mod=11,!11 - has ModR/M with 11 or not-11 in the Mod field
+      /reg=0-7 - has ModR/M with this value in the reg field
+      /rm=0-7 - has ModR/M with this value in the R/M field (only with
+        /mod=11)
+      /x87=00-3f - X87 opcode with this value in the low 6 bits of the
+        following &quot;ModR/M&quot; byte (only with /mod=11 and no other modifiers)
+
+      opr words follow the Intel documentation somewhat, and specify the
+      location and the size of the operand.  The OperandDict table in
+      ud_itab.py maps these words to named OP_ and SZ_ constants for the
+      location and size respectively.  These constants are defined in
+      decode.h, q.v. for details.
+
+      The mode element affects instruction semantics but not decoding:
+          inv64 - invalid in 64-bit mode
+      def64 - default operand size is 64 bits in 64-bit mode
+
+      cpuid
+
+        The cpuid element maybe applied to an instruction or a specific
+        definition of the instruction. One ore more strings define the
+        cpuid features that the instruction (or a definition belongs to)
+
+        Values are: sse, sse2, sse3, sse4, sse4.1, sse4.2, avx
+
+      AVX Instructions
+
+      AVX instructions can be described in two ways. One, the explicit
+      form, and the other that promotes an existing sse instruction
+      definition to its avx form.
+
+      If an instruction is defined to be in cpuid=avx, but is defined in
+      the legacy form (using /sse= extensions), then the opcode generator
+      will infer that as two definitions, one the see instruction and the
+      other, an inferred avx instruction.
+
+      In generating the sse definition from the above, the following
+      transformations happen,
+
+        - /vexw and /vexl extensions (if any) are removed
+        - The operands H and L are removed. Operands specified on
+          the right to removed operands are shifted to the left
+          position.
+        - The vexl prefix is removed.
+        - &quot;avx&quot; is removed form the cpuid definition.
+
+     In generating the avx definition from the above, the following
+     transformations happen,
+
+        - c4 is inserted in the 0th position of the opcode string
+        - /sse extension is removed
+        - A new /vex extension is constructed using /sse, 0f, 38 and
+          3a opcodes (if any).
+        - Operands V, W, H, and U are marked explicitly to have the
+          size suffix &quot;x&quot;
+
+     If the above transformations do not generate the required
+     definitions, the instructions will need to be defined separately.
+  --&gt;
+
</ins><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;aaa&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><del>-            &lt;opc&gt;37&lt;/opc&gt;
-            &lt;mode&gt;inv64&lt;/mode&gt;
</del><ins>+            &lt;opc&gt;37 /m=!64&lt;/opc&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;aad&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><del>-            &lt;opc&gt;d5&lt;/opc&gt;
</del><ins>+            &lt;opc&gt;d5 /m=!64&lt;/opc&gt;
</ins><span class="cx">             &lt;opr&gt;Ib&lt;/opr&gt;
</span><del>-            &lt;mode&gt;inv64&lt;/mode&gt;
</del><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;aam&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><del>-            &lt;opc&gt;d4&lt;/opc&gt;
</del><ins>+            &lt;opc&gt;d4 /m=!64&lt;/opc&gt;
</ins><span class="cx">             &lt;opr&gt;Ib&lt;/opr&gt;
</span><del>-            &lt;mode&gt;inv64&lt;/mode&gt;
</del><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;aas&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><del>-            &lt;opc&gt;3f&lt;/opc&gt;
-            &lt;mode&gt;inv64&lt;/mode&gt;
</del><ins>+            &lt;opc&gt;3f /m=!64&lt;/opc&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -65,8 +160,7 @@
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;oso rexw&lt;/pfx&gt;
</span><span class="cx">             &lt;opc&gt;15&lt;/opc&gt;
</span><del>-            &lt;opr&gt;rAX Iz&lt;/opr&gt;
-            &lt;syn&gt;sext&lt;/syn&gt;
</del><ins>+            &lt;opr&gt;rAX sIz&lt;/opr&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><span class="lines">@@ -75,21 +169,19 @@
</span><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><del>-            &lt;opc&gt;82 /reg=2&lt;/opc&gt;
</del><ins>+            &lt;opc&gt;82 /reg=2 /m=!64&lt;/opc&gt;
</ins><span class="cx">             &lt;opr&gt;Eb Ib&lt;/opr&gt;
</span><span class="cx">             &lt;mode&gt;inv64&lt;/mode&gt;
</span><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso oso rexw rexr rexx rexb&lt;/pfx&gt;
</span><span class="cx">             &lt;opc&gt;81 /reg=2&lt;/opc&gt;
</span><del>-            &lt;opr&gt;Ev Iz&lt;/opr&gt;
-            &lt;syn&gt;sext&lt;/syn&gt;
</del><ins>+            &lt;opr&gt;Ev sIz&lt;/opr&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso oso rexw rexr rexx rexb&lt;/pfx&gt;
</span><span class="cx">             &lt;opc&gt;83 /reg=2&lt;/opc&gt;
</span><del>-            &lt;opr&gt;Ev Ib&lt;/opr&gt;
-            &lt;syn&gt;sext&lt;/syn&gt;
</del><ins>+            &lt;opr&gt;Ev sIb&lt;/opr&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -122,8 +214,7 @@
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;oso rexw&lt;/pfx&gt;
</span><span class="cx">             &lt;opc&gt;05&lt;/opc&gt;
</span><del>-            &lt;opr&gt;rAX Iz&lt;/opr&gt;
-            &lt;syn&gt;sext&lt;/syn&gt;
</del><ins>+            &lt;opr&gt;rAX sIz&lt;/opr&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><span class="lines">@@ -132,43 +223,39 @@
</span><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><del>-            &lt;opc&gt;82 /reg=0&lt;/opc&gt;
</del><ins>+            &lt;opc&gt;82 /reg=0 /m=!64&lt;/opc&gt;
</ins><span class="cx">             &lt;opr&gt;Eb Ib&lt;/opr&gt;
</span><span class="cx">             &lt;mode&gt;inv64&lt;/mode&gt;
</span><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso oso rexw rexr rexx rexb&lt;/pfx&gt;
</span><span class="cx">             &lt;opc&gt;81 /reg=0&lt;/opc&gt;
</span><del>-            &lt;opr&gt;Ev Iz&lt;/opr&gt;
-            &lt;syn&gt;sext&lt;/syn&gt;
</del><ins>+            &lt;opr&gt;Ev sIz&lt;/opr&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso oso rexw rexr rexx rexb&lt;/pfx&gt;
</span><span class="cx">             &lt;opc&gt;83 /reg=0&lt;/opc&gt;
</span><del>-            &lt;opr&gt;Ev Ib&lt;/opr&gt;
-            &lt;syn&gt;sext&lt;/syn&gt;
</del><ins>+            &lt;opr&gt;Ev sIb&lt;/opr&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><del>-    &lt;!--
-     SSE2
-     --&gt;
-
</del><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;addpd&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><del>-            &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
-            &lt;opc&gt;sse66 0f 58&lt;/opc&gt;
-            &lt;opr&gt;V W&lt;/opr&gt;
</del><ins>+            &lt;pfx&gt;aso rexr rexx rexb vexl&lt;/pfx&gt;
+            &lt;opc&gt;/sse=66 0f 58&lt;/opc&gt;
+            &lt;opr&gt;V H W&lt;/opr&gt;
+            &lt;cpuid&gt;sse2 avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;addps&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><del>-            &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</del><ins>+            &lt;pfx&gt;aso rexr rexx rexb vexl&lt;/pfx&gt;
</ins><span class="cx">             &lt;opc&gt;0f 58&lt;/opc&gt;
</span><del>-            &lt;opr&gt;V W&lt;/opr&gt;
</del><ins>+            &lt;opr&gt;V H W&lt;/opr&gt;
+            &lt;cpuid&gt;sse avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -176,8 +263,9 @@
</span><span class="cx">         &lt;mnemonic&gt;addsd&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><del>-            &lt;opc&gt;ssef2 0f 58&lt;/opc&gt;
-            &lt;opr&gt;V W&lt;/opr&gt;
</del><ins>+            &lt;opc&gt;/sse=f2 0f 58&lt;/opc&gt;
+            &lt;opr&gt;V H W&lt;/opr&gt;
+            &lt;cpuid&gt;sse2 avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -185,12 +273,94 @@
</span><span class="cx">         &lt;mnemonic&gt;addss&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><del>-            &lt;opc&gt;ssef3 0f 58&lt;/opc&gt;
</del><ins>+            &lt;opc&gt;/sse=f3 0f 58&lt;/opc&gt;
+            &lt;opr&gt;V H W&lt;/opr&gt;
+            &lt;cpuid&gt;sse avx&lt;/cpuid&gt;
+        &lt;/def&gt;
+    &lt;/instruction&gt;
+
+    &lt;instruction&gt;
+        &lt;mnemonic&gt;addsubpd&lt;/mnemonic&gt;
+        &lt;def&gt;
+            &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
+            &lt;opc&gt;/sse=66 0f d0&lt;/opc&gt;
+            &lt;opr&gt;V H W&lt;/opr&gt;
+            &lt;cpuid&gt;sse3 avx&lt;/cpuid&gt;
+        &lt;/def&gt;
+    &lt;/instruction&gt;
+
+    &lt;instruction&gt;
+        &lt;mnemonic&gt;addsubps&lt;/mnemonic&gt;
+        &lt;def&gt;
+            &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
+            &lt;opc&gt;/sse=f2 0f d0&lt;/opc&gt;
+            &lt;opr&gt;V H W&lt;/opr&gt;
+            &lt;cpuid&gt;sse3 avx&lt;/cpuid&gt;
+        &lt;/def&gt;
+    &lt;/instruction&gt;
+
+    &lt;instruction&gt;
+        &lt;mnemonic&gt;aesdec&lt;/mnemonic&gt;
+        &lt;def&gt;
+            &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
+            &lt;opc&gt;/sse=66 0f 38 de&lt;/opc&gt;
+            &lt;opr&gt;V H W&lt;/opr&gt;
+            &lt;cpuid&gt;aesni avx&lt;/cpuid&gt;
+        &lt;/def&gt;
+    &lt;/instruction&gt;
+
+    &lt;instruction&gt;
+        &lt;mnemonic&gt;aesdeclast&lt;/mnemonic&gt;
+        &lt;def&gt;
+            &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
+            &lt;opc&gt;/sse=66 0f 38 df&lt;/opc&gt;
</ins><span class="cx">             &lt;opr&gt;V W&lt;/opr&gt;
</span><ins>+            &lt;cpuid&gt;aesni avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><del>-     &lt;instruction&gt;
</del><ins>+    &lt;instruction&gt;
+        &lt;mnemonic&gt;aesenc&lt;/mnemonic&gt;
+        &lt;cpuid&gt;aesni&lt;/cpuid&gt;
+        &lt;def&gt;
+            &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
+            &lt;opc&gt;/sse=66 0f 38 dc&lt;/opc&gt;
+            &lt;opr&gt;V W&lt;/opr&gt;
+            &lt;cpuid&gt;aesni avx&lt;/cpuid&gt;
+        &lt;/def&gt;
+    &lt;/instruction&gt;
+
+    &lt;instruction&gt;
+        &lt;mnemonic&gt;aesenclast&lt;/mnemonic&gt;
+        &lt;cpuid&gt;aesni avx&lt;/cpuid&gt;
+        &lt;def&gt;
+            &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
+            &lt;opc&gt;/sse=66 0f 38 dd&lt;/opc&gt;
+            &lt;opr&gt;V H W&lt;/opr&gt;
+        &lt;/def&gt;
+    &lt;/instruction&gt;
+
+    &lt;instruction&gt;
+        &lt;mnemonic&gt;aesimc&lt;/mnemonic&gt;
+        &lt;def&gt;
+            &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
+            &lt;opc&gt;/sse=66 0f 38 db&lt;/opc&gt;
+            &lt;opr&gt;V W&lt;/opr&gt;
+            &lt;cpuid&gt;aesni avx&lt;/cpuid&gt;
+        &lt;/def&gt;
+    &lt;/instruction&gt;
+
+    &lt;instruction&gt;
+        &lt;mnemonic&gt;aeskeygenassist&lt;/mnemonic&gt;
+        &lt;def&gt;
+            &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
+            &lt;opc&gt;/sse=66 0f 3a df&lt;/opc&gt;
+            &lt;opr&gt;V W Ib&lt;/opr&gt;
+            &lt;cpuid&gt;aesni avx&lt;/cpuid&gt;
+        &lt;/def&gt;
+    &lt;/instruction&gt;
+
+    &lt;instruction&gt;
</ins><span class="cx">         &lt;mnemonic&gt;and&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><span class="lines">@@ -219,8 +389,7 @@
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;oso rexw&lt;/pfx&gt;
</span><span class="cx">             &lt;opc&gt;25&lt;/opc&gt;
</span><del>-            &lt;opr&gt;rAX Iz&lt;/opr&gt;
-            &lt;syn&gt;sext&lt;/syn&gt;
</del><ins>+            &lt;opr&gt;rAX sIz&lt;/opr&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexw rexr rexx rexb&lt;/pfx&gt;
</span><span class="lines">@@ -229,30 +398,29 @@
</span><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><del>-            &lt;opc&gt;82 /reg=4&lt;/opc&gt;
</del><ins>+            &lt;opc&gt;82 /reg=4 /m=!64&lt;/opc&gt;
</ins><span class="cx">             &lt;opr&gt;Eb Ib&lt;/opr&gt;
</span><span class="cx">             &lt;mode&gt;inv64&lt;/mode&gt;
</span><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso oso rexw rexr rexx rexb&lt;/pfx&gt;
</span><span class="cx">             &lt;opc&gt;81 /reg=4&lt;/opc&gt;
</span><del>-            &lt;opr&gt;Ev Iz&lt;/opr&gt;
-            &lt;syn&gt;sext&lt;/syn&gt;
</del><ins>+            &lt;opr&gt;Ev sIz&lt;/opr&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso oso rexw rexr rexx rexb&lt;/pfx&gt;
</span><span class="cx">             &lt;opc&gt;83 /reg=4&lt;/opc&gt;
</span><del>-            &lt;opr&gt;Ev Ib&lt;/opr&gt;
-            &lt;syn&gt;sext&lt;/syn&gt;
</del><ins>+            &lt;opr&gt;Ev sIb&lt;/opr&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;andpd&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><del>-            &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
-            &lt;opc&gt;sse66 0f 54&lt;/opc&gt;
-            &lt;opr&gt;V W&lt;/opr&gt;
</del><ins>+            &lt;pfx&gt;aso rexr rexx rexb vexl&lt;/pfx&gt;
+            &lt;opc&gt;/sse=66 0f 54&lt;/opc&gt;
+            &lt;opr&gt;V H W&lt;/opr&gt;
+            &lt;cpuid&gt;sse2 avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -261,7 +429,8 @@
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><span class="cx">             &lt;opc&gt;0f 54&lt;/opc&gt;
</span><del>-            &lt;opr&gt;V W&lt;/opr&gt;
</del><ins>+            &lt;opr&gt;V H W&lt;/opr&gt;
+            &lt;cpuid&gt;sse avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -269,8 +438,9 @@
</span><span class="cx">         &lt;mnemonic&gt;andnpd&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><del>-            &lt;opc&gt;sse66 0f 55&lt;/opc&gt;
-            &lt;opr&gt;V W&lt;/opr&gt;
</del><ins>+            &lt;opc&gt;/sse=66 0f 55&lt;/opc&gt;
+            &lt;opr&gt;V H W&lt;/opr&gt;
+            &lt;cpuid&gt;sse2 avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -279,7 +449,8 @@
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><span class="cx">             &lt;opc&gt;0f 55&lt;/opc&gt;
</span><del>-            &lt;opr&gt;V W&lt;/opr&gt;
</del><ins>+            &lt;opr&gt;V H W&lt;/opr&gt;
+            &lt;cpuid&gt;sse2 avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -287,16 +458,9 @@
</span><span class="cx">         &lt;mnemonic&gt;arpl&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso&lt;/pfx&gt;
</span><del>-            &lt;opc&gt;63 /m=16&lt;/opc&gt;
</del><ins>+            &lt;opc&gt;63 /m=!64&lt;/opc&gt;
</ins><span class="cx">             &lt;opr&gt;Ew Gw&lt;/opr&gt;
</span><del>-            &lt;mode&gt;inv64&lt;/mode&gt;
</del><span class="cx">         &lt;/def&gt;
</span><del>-        &lt;def&gt;
-            &lt;pfx&gt;aso&lt;/pfx&gt;
-            &lt;opc&gt;63 /m=32&lt;/opc&gt;
-            &lt;opr&gt;Ew Gw&lt;/opr&gt;
-            &lt;mode&gt;inv64&lt;/mode&gt;
-        &lt;/def&gt;
</del><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="cx">     &lt;instruction&gt;
</span><span class="lines">@@ -304,150 +468,27 @@
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso oso rexw rexx rexr rexb&lt;/pfx&gt;
</span><span class="cx">             &lt;opc&gt;63 /m=64&lt;/opc&gt;
</span><del>-            &lt;opr&gt;Gv Ed&lt;/opr&gt;
</del><ins>+            &lt;opr&gt;Gq Ed&lt;/opr&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="cx">     &lt;instruction&gt;
</span><del>-        &lt;mnemonic&gt;bound&lt;/mnemonic&gt;
</del><ins>+        &lt;mnemonic&gt;call&lt;/mnemonic&gt;
</ins><span class="cx">         &lt;def&gt;
</span><del>-            &lt;pfx&gt;aso oso&lt;/pfx&gt;
-            &lt;opc&gt;62&lt;/opc&gt;
-            &lt;opr&gt;Gv M&lt;/opr&gt;
-            &lt;mode&gt;inv64&lt;/mode&gt;
-        &lt;/def&gt;
-    &lt;/instruction&gt;
-
-    &lt;instruction&gt;
-        &lt;mnemonic&gt;bsf&lt;/mnemonic&gt;
-        &lt;def&gt;
</del><span class="cx">             &lt;pfx&gt;aso oso rexw rexr rexx rexb&lt;/pfx&gt;
</span><del>-            &lt;opc&gt;0f bc&lt;/opc&gt;
-            &lt;opr&gt;Gv Ev&lt;/opr&gt;
</del><ins>+            &lt;opc&gt;ff /reg=2 /m=!64&lt;/opc&gt;
+            &lt;opr&gt;Ev&lt;/opr&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><del>-    &lt;/instruction&gt;
-
-    &lt;instruction&gt;
-        &lt;mnemonic&gt;bsr&lt;/mnemonic&gt;
</del><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso oso rexw rexr rexx rexb&lt;/pfx&gt;
</span><del>-            &lt;opc&gt;0f bd&lt;/opc&gt;
-            &lt;opr&gt;Gv Ev&lt;/opr&gt;
-        &lt;/def&gt;
-    &lt;/instruction&gt;
-
-    &lt;instruction&gt;
-        &lt;mnemonic&gt;bswap&lt;/mnemonic&gt;
-        &lt;def&gt;
-            &lt;pfx&gt;oso rexw rexb&lt;/pfx&gt;
-            &lt;opc&gt;0f c8&lt;/opc&gt;
-            &lt;opr&gt;rAXr8&lt;/opr&gt;
-        &lt;/def&gt;
-        &lt;def&gt;
-            &lt;pfx&gt;oso rexw rexb&lt;/pfx&gt;
-            &lt;opc&gt;0f c9&lt;/opc&gt;
-            &lt;opr&gt;rCXr9&lt;/opr&gt;
-        &lt;/def&gt;
-        &lt;def&gt;
-            &lt;pfx&gt;oso rexw rexb&lt;/pfx&gt;
-            &lt;opc&gt;0f ca&lt;/opc&gt;
-            &lt;opr&gt;rDXr10&lt;/opr&gt;
-        &lt;/def&gt;
-        &lt;def&gt;
-            &lt;pfx&gt;oso rexw rexb&lt;/pfx&gt;
-            &lt;opc&gt;0f cb&lt;/opc&gt;
-            &lt;opr&gt;rBXr11&lt;/opr&gt;
-        &lt;/def&gt;
-        &lt;def&gt;
-            &lt;pfx&gt;oso rexw rexb&lt;/pfx&gt;
-            &lt;opc&gt;0f cc&lt;/opc&gt;
-            &lt;opr&gt;rSPr12&lt;/opr&gt;
-        &lt;/def&gt;
-        &lt;def&gt;
-            &lt;pfx&gt;oso rexw rexb&lt;/pfx&gt;
-            &lt;opc&gt;0f cd&lt;/opc&gt;
-            &lt;opr&gt;rBPr13&lt;/opr&gt;
-        &lt;/def&gt;
-        &lt;def&gt;
-            &lt;pfx&gt;oso rexw rexb&lt;/pfx&gt;
-            &lt;opc&gt;0f ce&lt;/opc&gt;
-            &lt;opr&gt;rSIr14&lt;/opr&gt;
-        &lt;/def&gt;
-        &lt;def&gt;
-            &lt;pfx&gt;oso rexw rexb&lt;/pfx&gt;
-            &lt;opc&gt;0f cf&lt;/opc&gt;
-            &lt;opr&gt;rDIr15&lt;/opr&gt;
-        &lt;/def&gt;
-    &lt;/instruction&gt;
-
-    &lt;instruction&gt;
-        &lt;mnemonic&gt;bt&lt;/mnemonic&gt;
-        &lt;def&gt;
-            &lt;pfx&gt;aso oso rexw rexr rexx rexb&lt;/pfx&gt;
-            &lt;opc&gt;0f ba /reg=4&lt;/opc&gt;
-            &lt;opr&gt;Ev Ib&lt;/opr&gt;
-        &lt;/def&gt;
-        &lt;def&gt;
-            &lt;pfx&gt;aso oso rexw rexr rexx rexb&lt;/pfx&gt;
-            &lt;opc&gt;0f a3&lt;/opc&gt;
-            &lt;opr&gt;Ev Gv&lt;/opr&gt;
-        &lt;/def&gt;
-    &lt;/instruction&gt;
-
-    &lt;instruction&gt;
-        &lt;mnemonic&gt;btc&lt;/mnemonic&gt;
-        &lt;def&gt;
-            &lt;pfx&gt;aso oso rexw rexr rexx rexb&lt;/pfx&gt;
-            &lt;opc&gt;0f bb&lt;/opc&gt;
-            &lt;opr&gt;Ev Gv&lt;/opr&gt;
-        &lt;/def&gt;
-        &lt;def&gt;
-            &lt;pfx&gt;aso oso rexw rexr rexx rexb&lt;/pfx&gt;
-            &lt;opc&gt;0f ba /reg=7&lt;/opc&gt;
-            &lt;opr&gt;Ev Ib&lt;/opr&gt;
-        &lt;/def&gt;
-    &lt;/instruction&gt;
-
-    &lt;instruction&gt;
-        &lt;mnemonic&gt;btr&lt;/mnemonic&gt;
-        &lt;def&gt;
-            &lt;pfx&gt;aso oso rexw rexr rexx rexb&lt;/pfx&gt;
-            &lt;opc&gt;0f b3&lt;/opc&gt;
-            &lt;opr&gt;Ev Gv&lt;/opr&gt;
-        &lt;/def&gt;
-        &lt;def&gt;
-            &lt;pfx&gt;aso oso rexw rexr rexx rexb&lt;/pfx&gt;
-            &lt;opc&gt;0f ba /reg=6&lt;/opc&gt;
-            &lt;opr&gt;Ev Ib&lt;/opr&gt;
-        &lt;/def&gt;
-    &lt;/instruction&gt;
-
-    &lt;instruction&gt;
-        &lt;mnemonic&gt;bts&lt;/mnemonic&gt;
-        &lt;def&gt;
-            &lt;pfx&gt;aso oso rexw rexr rexx rexb&lt;/pfx&gt;
-            &lt;opc&gt;0f ab&lt;/opc&gt;
-            &lt;opr&gt;Ev Gv&lt;/opr&gt;
-        &lt;/def&gt;
-        &lt;def&gt;
-            &lt;pfx&gt;aso oso rexw rexr rexx rexb&lt;/pfx&gt;
-            &lt;opc&gt;0f ba /reg=5&lt;/opc&gt;
-            &lt;opr&gt;Ev Ib&lt;/opr&gt;
-        &lt;/def&gt;
-    &lt;/instruction&gt;
-
-    &lt;instruction&gt;
-        &lt;mnemonic&gt;call&lt;/mnemonic&gt;
-        &lt;def&gt;
-            &lt;pfx&gt;aso oso rexw rexr rexx rexb&lt;/pfx&gt;
-            &lt;opc&gt;ff /reg=2&lt;/opc&gt;
-            &lt;opr&gt;Ev&lt;/opr&gt;
</del><ins>+            &lt;opc&gt;ff /reg=2 /m=64&lt;/opc&gt;
+            &lt;opr&gt;Eq&lt;/opr&gt;
</ins><span class="cx">             &lt;mode&gt;def64&lt;/mode&gt;
</span><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso oso rexw rexr rexx rexb&lt;/pfx&gt;
</span><span class="cx">             &lt;opc&gt;ff /reg=3&lt;/opc&gt;
</span><del>-            &lt;opr&gt;Ep&lt;/opr&gt;
</del><ins>+            &lt;opr&gt;Fv&lt;/opr&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;oso&lt;/pfx&gt;
</span><span class="lines">@@ -457,9 +498,8 @@
</span><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;oso&lt;/pfx&gt;
</span><del>-            &lt;opc&gt;9a&lt;/opc&gt;
-            &lt;opr&gt;Ap&lt;/opr&gt;
-            &lt;mode&gt;inv64&lt;/mode&gt;
</del><ins>+            &lt;opc&gt;9a /m=!64&lt;/opc&gt;
+            &lt;opr&gt;Av&lt;/opr&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -712,7 +752,7 @@
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;oso rexw&lt;/pfx&gt;
</span><span class="cx">             &lt;opc&gt;3d&lt;/opc&gt;
</span><del>-            &lt;opr&gt;rAX Iz&lt;/opr&gt;
</del><ins>+            &lt;opr&gt;rAX sIz&lt;/opr&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><span class="lines">@@ -721,43 +761,46 @@
</span><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><del>-            &lt;opc&gt;82 /reg=7&lt;/opc&gt;
</del><ins>+            &lt;opc&gt;82 /reg=7 /m=!64&lt;/opc&gt;
</ins><span class="cx">             &lt;opr&gt;Eb Ib&lt;/opr&gt;
</span><span class="cx">             &lt;mode&gt;inv64&lt;/mode&gt;
</span><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso oso rexw rexr rexx rexb&lt;/pfx&gt;
</span><span class="cx">             &lt;opc&gt;81 /reg=7&lt;/opc&gt;
</span><del>-            &lt;opr&gt;Ev Iz&lt;/opr&gt;
</del><ins>+            &lt;opr&gt;Ev sIz&lt;/opr&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso oso rexw rexr rexx rexb&lt;/pfx&gt;
</span><span class="cx">             &lt;opc&gt;83 /reg=7&lt;/opc&gt;
</span><del>-            &lt;opr&gt;Ev Ib&lt;/opr&gt;
</del><ins>+            &lt;opr&gt;Ev sIb&lt;/opr&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;cmppd&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><del>-            &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
-            &lt;opc&gt;sse66 0f c2&lt;/opc&gt;
-            &lt;opr&gt;V W Ib&lt;/opr&gt;
</del><ins>+            &lt;pfx&gt;aso rexr rexx rexb vexl&lt;/pfx&gt;
+            &lt;opc&gt;/sse=66 0f c2&lt;/opc&gt;
+            &lt;opr&gt;V H W Ib&lt;/opr&gt;
+            &lt;cpuid&gt;sse2 avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;cmpps&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><del>-            &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</del><ins>+            &lt;pfx&gt;aso rexr rexx rexb vexl&lt;/pfx&gt;
</ins><span class="cx">             &lt;opc&gt;0f c2&lt;/opc&gt;
</span><del>-            &lt;opr&gt;V W Ib&lt;/opr&gt;
</del><ins>+            &lt;opr&gt;V H W Ib&lt;/opr&gt;
+            &lt;cpuid&gt;sse2 avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;cmpsb&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><ins>+            &lt;pfx&gt;repz seg&lt;/pfx&gt;
</ins><span class="cx">             &lt;opc&gt;a6&lt;/opc&gt;
</span><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="lines">@@ -765,7 +808,7 @@
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;cmpsw&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><del>-            &lt;pfx&gt;oso rexw&lt;/pfx&gt;
</del><ins>+            &lt;pfx&gt;repz oso rexw seg&lt;/pfx&gt;
</ins><span class="cx">             &lt;opc&gt;a7 /o=16&lt;/opc&gt;
</span><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="lines">@@ -773,20 +816,21 @@
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;cmpsd&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><del>-            &lt;pfx&gt;oso rexw&lt;/pfx&gt;
</del><ins>+            &lt;pfx&gt;repz oso rexw seg&lt;/pfx&gt;
</ins><span class="cx">             &lt;opc&gt;a7 /o=32&lt;/opc&gt;
</span><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><del>-            &lt;opc&gt;ssef2 0f c2&lt;/opc&gt;
-            &lt;opr&gt;V W Ib&lt;/opr&gt;
</del><ins>+            &lt;opc&gt;/sse=f2 0f c2&lt;/opc&gt;
+            &lt;opr&gt;V H W Ib&lt;/opr&gt;
+            &lt;cpuid&gt;sse2 avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;cmpsq&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><del>-            &lt;pfx&gt;oso rexw&lt;/pfx&gt;
</del><ins>+            &lt;pfx&gt;repz oso rexw seg&lt;/pfx&gt;
</ins><span class="cx">             &lt;opc&gt;a7 /o=64&lt;/opc&gt;
</span><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="lines">@@ -795,8 +839,9 @@
</span><span class="cx">         &lt;mnemonic&gt;cmpss&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><del>-            &lt;opc&gt;ssef3 0f c2&lt;/opc&gt;
-            &lt;opr&gt;V W Ib&lt;/opr&gt;
</del><ins>+            &lt;opc&gt;/sse=f3 0f c2&lt;/opc&gt;
+            &lt;opr&gt;V H W Ib&lt;/opr&gt;
+            &lt;cpuid&gt;sse2 avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -818,17 +863,32 @@
</span><span class="cx">         &lt;mnemonic&gt;cmpxchg8b&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><del>-            &lt;opc&gt;0f c7 /reg=1&lt;/opc&gt;
</del><ins>+            &lt;opc&gt;0f c7 /mod=!11 /reg=1 /o=16&lt;/opc&gt;
</ins><span class="cx">             &lt;opr&gt;M&lt;/opr&gt;
</span><span class="cx">         &lt;/def&gt;
</span><ins>+        &lt;def&gt;
+            &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
+            &lt;opc&gt;0f c7 /mod=!11 /reg=1 /o=32&lt;/opc&gt;
+            &lt;opr&gt;M&lt;/opr&gt;
+        &lt;/def&gt;
</ins><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="cx">     &lt;instruction&gt;
</span><ins>+        &lt;mnemonic&gt;cmpxchg16b&lt;/mnemonic&gt;
+        &lt;def&gt;
+            &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
+            &lt;opc&gt;0f c7 /mod=!11 /reg=1 /o=64&lt;/opc&gt;
+            &lt;opr&gt;M&lt;/opr&gt;
+        &lt;/def&gt;
+    &lt;/instruction&gt;
+
+    &lt;instruction&gt;
</ins><span class="cx">         &lt;mnemonic&gt;comisd&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><del>-            &lt;opc&gt;sse66 0f 2f&lt;/opc&gt;
-            &lt;opr&gt;V W&lt;/opr&gt;
</del><ins>+            &lt;opc&gt;/sse=66 0f 2f&lt;/opc&gt;
+            &lt;opr&gt;Vsd Wsd&lt;/opr&gt;
+            &lt;cpuid&gt;sse2 avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -838,6 +898,7 @@
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><span class="cx">             &lt;opc&gt;0f 2f&lt;/opc&gt;
</span><span class="cx">             &lt;opr&gt;V W&lt;/opr&gt;
</span><ins>+            &lt;cpuid&gt;sse2 avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -851,9 +912,10 @@
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;cvtdq2pd&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><del>-            &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
-            &lt;opc&gt;ssef3 0f e6&lt;/opc&gt;
-            &lt;opr&gt;V W&lt;/opr&gt;
</del><ins>+            &lt;pfx&gt;aso rexr rexx rexb vexl&lt;/pfx&gt;
+            &lt;opc&gt;/sse=f3 0f e6&lt;/opc&gt;
+            &lt;opr&gt;V Wdq&lt;/opr&gt;
+            &lt;cpuid&gt;sse2 avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -863,15 +925,17 @@
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><span class="cx">             &lt;opc&gt;0f 5b&lt;/opc&gt;
</span><span class="cx">             &lt;opr&gt;V W&lt;/opr&gt;
</span><ins>+            &lt;cpuid&gt;sse2 avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;cvtpd2dq&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><del>-            &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
-            &lt;opc&gt;ssef2 0f e6&lt;/opc&gt;
-            &lt;opr&gt;V W&lt;/opr&gt;
</del><ins>+            &lt;pfx&gt;aso rexr rexx rexb vexl&lt;/pfx&gt;
+            &lt;opc&gt;/sse=f2 0f e6&lt;/opc&gt;
+            &lt;opr&gt;Vdq W&lt;/opr&gt;
+            &lt;cpuid&gt;sse2 avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -879,7 +943,7 @@
</span><span class="cx">         &lt;mnemonic&gt;cvtpd2pi&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><del>-            &lt;opc&gt;sse66 0f 2d&lt;/opc&gt;
</del><ins>+            &lt;opc&gt;/sse=66 0f 2d&lt;/opc&gt;
</ins><span class="cx">             &lt;opr&gt;P W&lt;/opr&gt;
</span><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="lines">@@ -887,9 +951,10 @@
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;cvtpd2ps&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><del>-            &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
-            &lt;opc&gt;sse66 0f 5a&lt;/opc&gt;
-            &lt;opr&gt;V W&lt;/opr&gt;
</del><ins>+            &lt;pfx&gt;aso rexr rexx rexb vexl&lt;/pfx&gt;
+            &lt;opc&gt;/sse=66 0f 5a&lt;/opc&gt;
+            &lt;opr&gt;Vdq W&lt;/opr&gt;
+            &lt;cpuid&gt;sse2 avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -906,7 +971,7 @@
</span><span class="cx">         &lt;mnemonic&gt;cvtpi2pd&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><del>-            &lt;opc&gt;sse66 0f 2a&lt;/opc&gt;
</del><ins>+            &lt;opc&gt;/sse=66 0f 2a&lt;/opc&gt;
</ins><span class="cx">             &lt;opr&gt;V Q&lt;/opr&gt;
</span><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="lines">@@ -914,27 +979,29 @@
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;cvtps2dq&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><del>-            &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
-            &lt;opc&gt;sse66 0f 5b&lt;/opc&gt;
</del><ins>+            &lt;pfx&gt;aso rexr rexx rexb vexl&lt;/pfx&gt;
+            &lt;opc&gt;/sse=66 0f 5b&lt;/opc&gt;
</ins><span class="cx">             &lt;opr&gt;V W&lt;/opr&gt;
</span><ins>+            &lt;cpuid&gt;sse2 avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="cx">     &lt;instruction&gt;
</span><del>-        &lt;mnemonic&gt;cvtps2pi&lt;/mnemonic&gt;
</del><ins>+        &lt;mnemonic&gt;cvtps2pd&lt;/mnemonic&gt;
</ins><span class="cx">         &lt;def&gt;
</span><del>-            &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
-            &lt;opc&gt;0f 2d&lt;/opc&gt;
-            &lt;opr&gt;P W&lt;/opr&gt;
</del><ins>+            &lt;pfx&gt;aso rexr rexx rexb vexl&lt;/pfx&gt;
+            &lt;opc&gt;0f 5a&lt;/opc&gt;
+            &lt;opr&gt;V Wdq&lt;/opr&gt;
+            &lt;cpuid&gt;sse2 avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="cx">     &lt;instruction&gt;
</span><del>-        &lt;mnemonic&gt;cvtps2pd&lt;/mnemonic&gt;
</del><ins>+        &lt;mnemonic&gt;cvtps2pi&lt;/mnemonic&gt;
</ins><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><del>-            &lt;opc&gt;0f 5a&lt;/opc&gt;
-            &lt;opr&gt;V W&lt;/opr&gt;
</del><ins>+            &lt;opc&gt;0f 2d&lt;/opc&gt;
+            &lt;opr&gt;P MqU&lt;/opr&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -942,8 +1009,9 @@
</span><span class="cx">         &lt;mnemonic&gt;cvtsd2si&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexw rexr rexx rexb&lt;/pfx&gt;
</span><del>-            &lt;opc&gt;ssef2 0f 2d&lt;/opc&gt;
-            &lt;opr&gt;Gy W&lt;/opr&gt;
</del><ins>+            &lt;opc&gt;/sse=f2 0f 2d&lt;/opc&gt;
+            &lt;opr&gt;Gy MqU&lt;/opr&gt;
+            &lt;cpuid&gt;sse2 avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -951,26 +1019,29 @@
</span><span class="cx">         &lt;mnemonic&gt;cvtsd2ss&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><del>-            &lt;opc&gt;ssef2 0f 5a&lt;/opc&gt;
-            &lt;opr&gt;V W&lt;/opr&gt;
</del><ins>+            &lt;opc&gt;/sse=f2 0f 5a&lt;/opc&gt;
+            &lt;opr&gt;V H W&lt;/opr&gt;
+            &lt;cpuid&gt;sse2 avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="cx">     &lt;instruction&gt;
</span><del>-        &lt;mnemonic&gt;cvtsi2ss&lt;/mnemonic&gt;
</del><ins>+        &lt;mnemonic&gt;cvtsi2sd&lt;/mnemonic&gt;
</ins><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexw rexr rexx rexb&lt;/pfx&gt;
</span><del>-            &lt;opc&gt;ssef3 0f 2a&lt;/opc&gt;
-            &lt;opr&gt;V Ex&lt;/opr&gt;
</del><ins>+            &lt;opc&gt;/sse=f2 0f 2a&lt;/opc&gt;
+            &lt;opr&gt;V H Ey&lt;/opr&gt;
+            &lt;cpuid&gt;sse2 avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="cx">     &lt;instruction&gt;
</span><del>-        &lt;mnemonic&gt;cvtss2si&lt;/mnemonic&gt;
</del><ins>+        &lt;mnemonic&gt;cvtsi2ss&lt;/mnemonic&gt;
</ins><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexw rexr rexx rexb&lt;/pfx&gt;
</span><del>-            &lt;opc&gt;ssef3 0f 2d&lt;/opc&gt;
-            &lt;opr&gt;Gy W&lt;/opr&gt;
</del><ins>+            &lt;opc&gt;/sse=f3 0f 2a&lt;/opc&gt;
+            &lt;opr&gt;V H Ey&lt;/opr&gt;
+            &lt;cpuid&gt;sse avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -978,35 +1049,48 @@
</span><span class="cx">         &lt;mnemonic&gt;cvtss2sd&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><del>-            &lt;opc&gt;ssef3 0f 5a&lt;/opc&gt;
-            &lt;opr&gt;V W&lt;/opr&gt;
</del><ins>+            &lt;opc&gt;/sse=f3 0f 5a&lt;/opc&gt;
+            &lt;opr&gt;V H W&lt;/opr&gt;
+            &lt;cpuid&gt;sse2 avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="cx">     &lt;instruction&gt;
</span><del>-        &lt;mnemonic&gt;cvttpd2pi&lt;/mnemonic&gt;
</del><ins>+        &lt;mnemonic&gt;cvtss2si&lt;/mnemonic&gt;
</ins><span class="cx">         &lt;def&gt;
</span><del>-            &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
-            &lt;opc&gt;sse66 0f 2c&lt;/opc&gt;
-            &lt;opr&gt;P W&lt;/opr&gt;
</del><ins>+            &lt;pfx&gt;aso rexw rexr rexx rexb&lt;/pfx&gt;
+            &lt;opc&gt;/sse=f3 0f 2d&lt;/opc&gt;
+            &lt;opr&gt;Gy MdU&lt;/opr&gt;
+            &lt;cpuid&gt;sse avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;cvttpd2dq&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><ins>+            &lt;pfx&gt;aso rexr rexx rexb vexl&lt;/pfx&gt;
+            &lt;opc&gt;/sse=66 0f e6&lt;/opc&gt;
+            &lt;opr&gt;Vdq W&lt;/opr&gt;
+            &lt;cpuid&gt;sse2 avx&lt;/cpuid&gt;
+        &lt;/def&gt;
+    &lt;/instruction&gt;
+
+    &lt;instruction&gt;
+        &lt;mnemonic&gt;cvttpd2pi&lt;/mnemonic&gt;
+        &lt;def&gt;
</ins><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><del>-            &lt;opc&gt;sse66 0f e6&lt;/opc&gt;
-            &lt;opr&gt;V W&lt;/opr&gt;
</del><ins>+            &lt;opc&gt;/sse=66 0f 2c&lt;/opc&gt;
+            &lt;opr&gt;P W&lt;/opr&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;cvttps2dq&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><del>-            &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
-            &lt;opc&gt;ssef3 0f 5b&lt;/opc&gt;
</del><ins>+            &lt;pfx&gt;aso rexr rexx rexb vexl&lt;/pfx&gt;
+            &lt;opc&gt;/sse=f3 0f 5b&lt;/opc&gt;
</ins><span class="cx">             &lt;opr&gt;V W&lt;/opr&gt;
</span><ins>+            &lt;cpuid&gt;sse2 avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -1023,26 +1107,19 @@
</span><span class="cx">         &lt;mnemonic&gt;cvttsd2si&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexw rexr rexx rexb&lt;/pfx&gt;
</span><del>-            &lt;opc&gt;ssef2 0f 2c&lt;/opc&gt;
-            &lt;opr&gt;Gy Wsd&lt;/opr&gt;
</del><ins>+            &lt;opc&gt;/sse=f2 0f 2c&lt;/opc&gt;
+            &lt;opr&gt;Gy MqU&lt;/opr&gt;
+            &lt;cpuid&gt;sse2 avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="cx">     &lt;instruction&gt;
</span><del>-        &lt;mnemonic&gt;cvtsi2sd&lt;/mnemonic&gt;
-        &lt;def&gt;
-            &lt;pfx&gt;aso rexw rexr rexx rexb&lt;/pfx&gt;
-            &lt;opc&gt;ssef2 0f 2a&lt;/opc&gt;
-            &lt;opr&gt;V Ex&lt;/opr&gt;
-        &lt;/def&gt;
-    &lt;/instruction&gt;
-
-    &lt;instruction&gt;
</del><span class="cx">         &lt;mnemonic&gt;cvttss2si&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexw rexr rexx rexb&lt;/pfx&gt;
</span><del>-            &lt;opc&gt;ssef3 0f 2c&lt;/opc&gt;
-            &lt;opr&gt;Gy Wsd&lt;/opr&gt;
</del><ins>+            &lt;opc&gt;/sse=f3 0f 2c&lt;/opc&gt;
+            &lt;opr&gt;Gy MdU&lt;/opr&gt;
+            &lt;cpuid&gt;sse2 avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -1073,7 +1150,7 @@
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;daa&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><del>-            &lt;opc&gt;27&lt;/opc&gt;
</del><ins>+            &lt;opc&gt;27 /m=!64&lt;/opc&gt;
</ins><span class="cx">             &lt;mode&gt;inv64&lt;/mode&gt;
</span><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="lines">@@ -1081,7 +1158,7 @@
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;das&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><del>-            &lt;opc&gt;2f&lt;/opc&gt;
</del><ins>+            &lt;opc&gt;2f /m=!64&lt;/opc&gt;
</ins><span class="cx">             &lt;mode&gt;inv64&lt;/mode&gt;
</span><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="lines">@@ -1091,42 +1168,42 @@
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;oso&lt;/pfx&gt;
</span><span class="cx">             &lt;opc&gt;48&lt;/opc&gt;
</span><del>-            &lt;opr&gt;eAX&lt;/opr&gt;
</del><ins>+            &lt;opr&gt;R0z&lt;/opr&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;oso&lt;/pfx&gt;
</span><span class="cx">             &lt;opc&gt;49&lt;/opc&gt;
</span><del>-            &lt;opr&gt;eCX&lt;/opr&gt;
</del><ins>+            &lt;opr&gt;R1z&lt;/opr&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;oso&lt;/pfx&gt;
</span><span class="cx">             &lt;opc&gt;4a&lt;/opc&gt;
</span><del>-            &lt;opr&gt;eDX&lt;/opr&gt;
</del><ins>+            &lt;opr&gt;R2z&lt;/opr&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;oso&lt;/pfx&gt;
</span><span class="cx">             &lt;opc&gt;4b&lt;/opc&gt;
</span><del>-            &lt;opr&gt;eBX&lt;/opr&gt;
</del><ins>+            &lt;opr&gt;R3z&lt;/opr&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;oso&lt;/pfx&gt;
</span><span class="cx">             &lt;opc&gt;4c&lt;/opc&gt;
</span><del>-            &lt;opr&gt;eSP&lt;/opr&gt;
</del><ins>+            &lt;opr&gt;R4z&lt;/opr&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;oso&lt;/pfx&gt;
</span><span class="cx">             &lt;opc&gt;4d&lt;/opc&gt;
</span><del>-            &lt;opr&gt;eBP&lt;/opr&gt;
</del><ins>+            &lt;opr&gt;R5z&lt;/opr&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;oso&lt;/pfx&gt;
</span><span class="cx">             &lt;opc&gt;4e&lt;/opc&gt;
</span><del>-            &lt;opr&gt;eSI&lt;/opr&gt;
</del><ins>+            &lt;opr&gt;R6z&lt;/opr&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;oso&lt;/pfx&gt;
</span><span class="cx">             &lt;opc&gt;4f&lt;/opc&gt;
</span><del>-            &lt;opr&gt;eDI&lt;/opr&gt;
</del><ins>+            &lt;opr&gt;R7z&lt;/opr&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexw rexr rexx rexb&lt;/pfx&gt;
</span><span class="lines">@@ -1157,9 +1234,10 @@
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;divpd&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><del>-            &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
-            &lt;opc&gt;sse66 0f 5e&lt;/opc&gt;
-            &lt;opr&gt;V W&lt;/opr&gt;
</del><ins>+            &lt;pfx&gt;aso rexr rexx rexb vexl&lt;/pfx&gt;
+            &lt;opc&gt;/sse=66 0f 5e&lt;/opc&gt;
+            &lt;opr&gt;V H W&lt;/opr&gt;
+            &lt;cpuid&gt;sse2 avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -1168,7 +1246,8 @@
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><span class="cx">             &lt;opc&gt;0f 5e&lt;/opc&gt;
</span><del>-            &lt;opr&gt;V W&lt;/opr&gt;
</del><ins>+            &lt;opr&gt;V H W&lt;/opr&gt;
+            &lt;cpuid&gt;sse avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -1176,8 +1255,9 @@
</span><span class="cx">         &lt;mnemonic&gt;divsd&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><del>-            &lt;opc&gt;ssef2 0f 5e&lt;/opc&gt;
-            &lt;opr&gt;V W&lt;/opr&gt;
</del><ins>+            &lt;opc&gt;/sse=f2 0f 5e&lt;/opc&gt;
+            &lt;opr&gt;V H MqU&lt;/opr&gt;
+            &lt;cpuid&gt;sse2 avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -1185,12 +1265,33 @@
</span><span class="cx">         &lt;mnemonic&gt;divss&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><del>-            &lt;opc&gt;ssef3 0f 5e&lt;/opc&gt;
-            &lt;opr&gt;V W&lt;/opr&gt;
</del><ins>+            &lt;opc&gt;/sse=f3 0f 5e&lt;/opc&gt;
+            &lt;opr&gt;V H MdU&lt;/opr&gt;
+            &lt;cpuid&gt;sse avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="cx">     &lt;instruction&gt;
</span><ins>+        &lt;mnemonic&gt;dppd&lt;/mnemonic&gt;
+        &lt;def&gt;
+            &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
+            &lt;opc&gt;/sse=66 0f 3a 41&lt;/opc&gt;
+            &lt;opr&gt;V H W Ib&lt;/opr&gt;
+            &lt;cpuid&gt;sse4.1 avx&lt;/cpuid&gt;
+        &lt;/def&gt;
+    &lt;/instruction&gt;
+
+    &lt;instruction&gt;
+        &lt;mnemonic&gt;dpps&lt;/mnemonic&gt;
+        &lt;def&gt;
+            &lt;pfx&gt;aso rexr rexx rexb vexl&lt;/pfx&gt;
+            &lt;opc&gt;/sse=66 0f 3a 40&lt;/opc&gt;
+            &lt;opr&gt;V H W Ib&lt;/opr&gt;
+            &lt;cpuid&gt;sse4.1 avx&lt;/cpuid&gt;
+        &lt;/def&gt;
+    &lt;/instruction&gt;
+
+    &lt;instruction&gt;
</ins><span class="cx">         &lt;mnemonic&gt;emms&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;opc&gt;0f 77&lt;/opc&gt;
</span><span class="lines">@@ -1202,13 +1303,23 @@
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;opc&gt;c8&lt;/opc&gt;
</span><span class="cx">             &lt;opr&gt;Iw Ib&lt;/opr&gt;
</span><del>-            &lt;mode&gt;def64 depM&lt;/mode&gt;
</del><ins>+            &lt;mode&gt;def64&lt;/mode&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="cx">     &lt;instruction&gt;
</span><ins>+        &lt;mnemonic&gt;extractps&lt;/mnemonic&gt;
+        &lt;def&gt;
+            &lt;pfx&gt;aso rexr rexw rexx rexb&lt;/pfx&gt;
+            &lt;opc&gt;/sse=66 0f 3a 17&lt;/opc&gt;
+            &lt;opr&gt;MdRy V Ib&lt;/opr&gt;
+            &lt;cpuid&gt;sse4.1 avx&lt;/cpuid&gt;
+        &lt;/def&gt;
+    &lt;/instruction&gt;
+
+    &lt;instruction&gt;
</ins><span class="cx">         &lt;mnemonic&gt;f2xm1&lt;/mnemonic&gt;
</span><del>-        &lt;class&gt;X87&lt;/class&gt;
</del><ins>+        &lt;cpuid&gt;X87&lt;/cpuid&gt;
</ins><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;opc&gt;d9 /mod=11 /x87=30&lt;/opc&gt;
</span><span class="cx">         &lt;/def&gt;
</span><span class="lines">@@ -1216,7 +1327,7 @@
</span><span class="cx"> 
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;fabs&lt;/mnemonic&gt;
</span><del>-        &lt;class&gt;X87&lt;/class&gt;
</del><ins>+        &lt;cpuid&gt;X87&lt;/cpuid&gt;
</ins><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;opc&gt;d9 /mod=11 /x87=21&lt;/opc&gt;
</span><span class="cx">         &lt;/def&gt;
</span><span class="lines">@@ -1224,7 +1335,7 @@
</span><span class="cx"> 
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;fadd&lt;/mnemonic&gt;
</span><del>-        &lt;class&gt;X87&lt;/class&gt;
</del><ins>+        &lt;cpuid&gt;X87&lt;/cpuid&gt;
</ins><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><span class="cx">             &lt;opc&gt;dc /mod=!11 /reg=0&lt;/opc&gt;
</span><span class="lines">@@ -1303,7 +1414,7 @@
</span><span class="cx"> 
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;faddp&lt;/mnemonic&gt;
</span><del>-        &lt;class&gt;X87&lt;/class&gt;
</del><ins>+        &lt;cpuid&gt;X87&lt;/cpuid&gt;
</ins><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;opc&gt;de /mod=11 /x87=00&lt;/opc&gt;
</span><span class="cx">             &lt;opr&gt;ST0 ST0&lt;/opr&gt;
</span><span class="lines">@@ -1340,7 +1451,7 @@
</span><span class="cx"> 
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;fbld&lt;/mnemonic&gt;
</span><del>-        &lt;class&gt;X87&lt;/class&gt;
</del><ins>+        &lt;cpuid&gt;X87&lt;/cpuid&gt;
</ins><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><span class="cx">             &lt;opc&gt;df /mod=!11 /reg=4&lt;/opc&gt;
</span><span class="lines">@@ -1350,7 +1461,7 @@
</span><span class="cx"> 
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;fbstp&lt;/mnemonic&gt;
</span><del>-        &lt;class&gt;X87&lt;/class&gt;
</del><ins>+        &lt;cpuid&gt;X87&lt;/cpuid&gt;
</ins><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><span class="cx">             &lt;opc&gt;df /mod=!11 /reg=6&lt;/opc&gt;
</span><span class="lines">@@ -1360,7 +1471,7 @@
</span><span class="cx"> 
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;fchs&lt;/mnemonic&gt;
</span><del>-        &lt;class&gt;X87&lt;/class&gt;
</del><ins>+        &lt;cpuid&gt;X87&lt;/cpuid&gt;
</ins><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;opc&gt;d9 /mod=11 /x87=20&lt;/opc&gt;
</span><span class="cx">         &lt;/def&gt;
</span><span class="lines">@@ -1368,7 +1479,7 @@
</span><span class="cx"> 
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;fclex&lt;/mnemonic&gt;
</span><del>-        &lt;class&gt;X87&lt;/class&gt;
</del><ins>+        &lt;cpuid&gt;X87&lt;/cpuid&gt;
</ins><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;opc&gt;db /mod=11 /x87=22&lt;/opc&gt;
</span><span class="cx">         &lt;/def&gt;
</span><span class="lines">@@ -1376,7 +1487,7 @@
</span><span class="cx"> 
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;fcmovb&lt;/mnemonic&gt;
</span><del>-        &lt;class&gt;X87&lt;/class&gt;
</del><ins>+        &lt;cpuid&gt;X87&lt;/cpuid&gt;
</ins><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;opc&gt;da /mod=11 /x87=00&lt;/opc&gt;
</span><span class="cx">             &lt;opr&gt;ST0 ST0&lt;/opr&gt;
</span><span class="lines">@@ -1413,7 +1524,7 @@
</span><span class="cx"> 
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;fcmove&lt;/mnemonic&gt;
</span><del>-        &lt;class&gt;X87&lt;/class&gt;
</del><ins>+        &lt;cpuid&gt;X87&lt;/cpuid&gt;
</ins><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;opc&gt;da /mod=11 /x87=08&lt;/opc&gt;
</span><span class="cx">             &lt;opr&gt;ST0 ST0&lt;/opr&gt;
</span><span class="lines">@@ -1450,7 +1561,7 @@
</span><span class="cx"> 
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;fcmovbe&lt;/mnemonic&gt;
</span><del>-        &lt;class&gt;X87&lt;/class&gt;
</del><ins>+        &lt;cpuid&gt;X87&lt;/cpuid&gt;
</ins><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;opc&gt;da /mod=11 /x87=10&lt;/opc&gt;
</span><span class="cx">             &lt;opr&gt;ST0 ST0&lt;/opr&gt;
</span><span class="lines">@@ -1487,7 +1598,7 @@
</span><span class="cx"> 
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;fcmovu&lt;/mnemonic&gt;
</span><del>-        &lt;class&gt;X87&lt;/class&gt;
</del><ins>+        &lt;cpuid&gt;X87&lt;/cpuid&gt;
</ins><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;opc&gt;da /mod=11 /x87=18&lt;/opc&gt;
</span><span class="cx">             &lt;opr&gt;ST0 ST0&lt;/opr&gt;
</span><span class="lines">@@ -1524,7 +1635,7 @@
</span><span class="cx"> 
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;fcmovnb&lt;/mnemonic&gt;
</span><del>-        &lt;class&gt;X87&lt;/class&gt;
</del><ins>+        &lt;cpuid&gt;X87&lt;/cpuid&gt;
</ins><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;opc&gt;db /mod=11 /x87=00&lt;/opc&gt;
</span><span class="cx">             &lt;opr&gt;ST0 ST0&lt;/opr&gt;
</span><span class="lines">@@ -1561,7 +1672,7 @@
</span><span class="cx"> 
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;fcmovne&lt;/mnemonic&gt;
</span><del>-        &lt;class&gt;X87&lt;/class&gt;
</del><ins>+        &lt;cpuid&gt;X87&lt;/cpuid&gt;
</ins><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;opc&gt;db /mod=11 /x87=08&lt;/opc&gt;
</span><span class="cx">             &lt;opr&gt;ST0 ST0&lt;/opr&gt;
</span><span class="lines">@@ -1598,7 +1709,7 @@
</span><span class="cx"> 
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;fcmovnbe&lt;/mnemonic&gt;
</span><del>-        &lt;class&gt;X87&lt;/class&gt;
</del><ins>+        &lt;cpuid&gt;X87&lt;/cpuid&gt;
</ins><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;opc&gt;db /mod=11 /x87=10&lt;/opc&gt;
</span><span class="cx">             &lt;opr&gt;ST0 ST0&lt;/opr&gt;
</span><span class="lines">@@ -1635,7 +1746,7 @@
</span><span class="cx"> 
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;fcmovnu&lt;/mnemonic&gt;
</span><del>-        &lt;class&gt;X87&lt;/class&gt;
</del><ins>+        &lt;cpuid&gt;X87&lt;/cpuid&gt;
</ins><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;opc&gt;db /mod=11 /x87=18&lt;/opc&gt;
</span><span class="cx">             &lt;opr&gt;ST0 ST0&lt;/opr&gt;
</span><span class="lines">@@ -1672,7 +1783,7 @@
</span><span class="cx"> 
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;fucomi&lt;/mnemonic&gt;
</span><del>-        &lt;class&gt;X87&lt;/class&gt;
</del><ins>+        &lt;cpuid&gt;X87&lt;/cpuid&gt;
</ins><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;opc&gt;db /mod=11 /x87=28&lt;/opc&gt;
</span><span class="cx">             &lt;opr&gt;ST0 ST0&lt;/opr&gt;
</span><span class="lines">@@ -1709,7 +1820,7 @@
</span><span class="cx"> 
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;fcom&lt;/mnemonic&gt;
</span><del>-        &lt;class&gt;X87&lt;/class&gt;
</del><ins>+        &lt;cpuid&gt;X87&lt;/cpuid&gt;
</ins><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><span class="cx">             &lt;opc&gt;d8 /mod=!11 /reg=2&lt;/opc&gt;
</span><span class="lines">@@ -1756,7 +1867,7 @@
</span><span class="cx"> 
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;fcom2&lt;/mnemonic&gt;
</span><del>-        &lt;class&gt;X87 UNDOC&lt;/class&gt;
</del><ins>+        &lt;cpuid&gt;X87 UNDOC&lt;/cpuid&gt;
</ins><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;opc&gt;dc /mod=11 /x87=10&lt;/opc&gt;
</span><span class="cx">             &lt;opr&gt;ST0&lt;/opr&gt;
</span><span class="lines">@@ -1793,7 +1904,7 @@
</span><span class="cx"> 
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;fcomp3&lt;/mnemonic&gt;
</span><del>-        &lt;class&gt;X87 UNDOC&lt;/class&gt;
</del><ins>+        &lt;cpuid&gt;X87 UNDOC&lt;/cpuid&gt;
</ins><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;opc&gt;dc /mod=11 /x87=18&lt;/opc&gt;
</span><span class="cx">             &lt;opr&gt;ST0&lt;/opr&gt;
</span><span class="lines">@@ -1830,7 +1941,7 @@
</span><span class="cx"> 
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;fcomi&lt;/mnemonic&gt;
</span><del>-        &lt;class&gt;X87&lt;/class&gt;
</del><ins>+        &lt;cpuid&gt;X87&lt;/cpuid&gt;
</ins><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;opc&gt;db /mod=11 /x87=30&lt;/opc&gt;
</span><span class="cx">             &lt;opr&gt;ST0 ST0&lt;/opr&gt;
</span><span class="lines">@@ -1867,7 +1978,7 @@
</span><span class="cx"> 
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;fucomip&lt;/mnemonic&gt;
</span><del>-        &lt;class&gt;X87&lt;/class&gt;
</del><ins>+        &lt;cpuid&gt;X87&lt;/cpuid&gt;
</ins><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;opc&gt;df /mod=11 /x87=28&lt;/opc&gt;
</span><span class="cx">             &lt;opr&gt;ST0 ST0&lt;/opr&gt;
</span><span class="lines">@@ -1904,7 +2015,7 @@
</span><span class="cx"> 
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;fcomip&lt;/mnemonic&gt;
</span><del>-        &lt;class&gt;X87&lt;/class&gt;
</del><ins>+        &lt;cpuid&gt;X87&lt;/cpuid&gt;
</ins><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;opc&gt;df /mod=11 /x87=30&lt;/opc&gt;
</span><span class="cx">             &lt;opr&gt;ST0 ST0&lt;/opr&gt;
</span><span class="lines">@@ -1941,7 +2052,7 @@
</span><span class="cx"> 
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;fcomp&lt;/mnemonic&gt;
</span><del>-        &lt;class&gt;X87&lt;/class&gt;
</del><ins>+        &lt;cpuid&gt;X87&lt;/cpuid&gt;
</ins><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><span class="cx">             &lt;opc&gt;d8 /mod=!11 /reg=3&lt;/opc&gt;
</span><span class="lines">@@ -1988,7 +2099,7 @@
</span><span class="cx"> 
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;fcomp5&lt;/mnemonic&gt;
</span><del>-        &lt;class&gt;X87 UNDOC&lt;/class&gt;
</del><ins>+        &lt;cpuid&gt;X87 UNDOC&lt;/cpuid&gt;
</ins><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;opc&gt;de /mod=11 /x87=10&lt;/opc&gt;
</span><span class="cx">             &lt;opr&gt;ST0&lt;/opr&gt;
</span><span class="lines">@@ -2025,7 +2136,7 @@
</span><span class="cx"> 
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;fcompp&lt;/mnemonic&gt;
</span><del>-        &lt;class&gt;X87&lt;/class&gt;
</del><ins>+        &lt;cpuid&gt;X87&lt;/cpuid&gt;
</ins><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;opc&gt;de /mod=11 /x87=19&lt;/opc&gt;
</span><span class="cx">         &lt;/def&gt;
</span><span class="lines">@@ -2033,7 +2144,7 @@
</span><span class="cx"> 
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;fcos&lt;/mnemonic&gt;
</span><del>-        &lt;class&gt;X87&lt;/class&gt;
</del><ins>+        &lt;cpuid&gt;X87&lt;/cpuid&gt;
</ins><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;opc&gt;d9 /mod=11 /x87=3f&lt;/opc&gt;
</span><span class="cx">         &lt;/def&gt;
</span><span class="lines">@@ -2041,7 +2152,7 @@
</span><span class="cx"> 
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;fdecstp&lt;/mnemonic&gt;
</span><del>-        &lt;class&gt;X87&lt;/class&gt;
</del><ins>+        &lt;cpuid&gt;X87&lt;/cpuid&gt;
</ins><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;opc&gt;d9 /mod=11 /x87=36&lt;/opc&gt;
</span><span class="cx">         &lt;/def&gt;
</span><span class="lines">@@ -2049,7 +2160,7 @@
</span><span class="cx"> 
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;fdiv&lt;/mnemonic&gt;
</span><del>-        &lt;class&gt;X87&lt;/class&gt;
</del><ins>+        &lt;cpuid&gt;X87&lt;/cpuid&gt;
</ins><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><span class="cx">             &lt;opc&gt;dc /mod=!11 /reg=6&lt;/opc&gt;
</span><span class="lines">@@ -2128,7 +2239,7 @@
</span><span class="cx"> 
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;fdivp&lt;/mnemonic&gt;
</span><del>-        &lt;class&gt;X87&lt;/class&gt;
</del><ins>+        &lt;cpuid&gt;X87&lt;/cpuid&gt;
</ins><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;opc&gt;de /mod=11 /x87=38&lt;/opc&gt;
</span><span class="cx">             &lt;opr&gt;ST0 ST0&lt;/opr&gt;
</span><span class="lines">@@ -2165,7 +2276,7 @@
</span><span class="cx"> 
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;fdivr&lt;/mnemonic&gt;
</span><del>-        &lt;class&gt;X87&lt;/class&gt;
</del><ins>+        &lt;cpuid&gt;X87&lt;/cpuid&gt;
</ins><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><span class="cx">             &lt;opc&gt;dc /mod=!11 /reg=7&lt;/opc&gt;
</span><span class="lines">@@ -2244,7 +2355,7 @@
</span><span class="cx"> 
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;fdivrp&lt;/mnemonic&gt;
</span><del>-        &lt;class&gt;X87&lt;/class&gt;
</del><ins>+        &lt;cpuid&gt;X87&lt;/cpuid&gt;
</ins><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;opc&gt;de /mod=11 /x87=30&lt;/opc&gt;
</span><span class="cx">             &lt;opr&gt;ST0 ST0&lt;/opr&gt;
</span><span class="lines">@@ -2288,7 +2399,7 @@
</span><span class="cx"> 
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;ffree&lt;/mnemonic&gt;
</span><del>-        &lt;class&gt;X87&lt;/class&gt;
</del><ins>+        &lt;cpuid&gt;X87&lt;/cpuid&gt;
</ins><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;opc&gt;dd /mod=11 /x87=00&lt;/opc&gt;
</span><span class="cx">             &lt;opr&gt;ST0&lt;/opr&gt;
</span><span class="lines">@@ -2325,7 +2436,7 @@
</span><span class="cx"> 
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;ffreep&lt;/mnemonic&gt;
</span><del>-        &lt;class&gt;X87&lt;/class&gt;
</del><ins>+        &lt;cpuid&gt;X87&lt;/cpuid&gt;
</ins><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;opc&gt;df /mod=11 /x87=00&lt;/opc&gt;
</span><span class="cx">             &lt;opr&gt;ST0&lt;/opr&gt;
</span><span class="lines">@@ -2362,7 +2473,7 @@
</span><span class="cx"> 
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;ficom&lt;/mnemonic&gt;
</span><del>-        &lt;class&gt;X87&lt;/class&gt;
</del><ins>+        &lt;cpuid&gt;X87&lt;/cpuid&gt;
</ins><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><span class="cx">             &lt;opc&gt;de /mod=!11 /reg=2&lt;/opc&gt;
</span><span class="lines">@@ -2377,7 +2488,7 @@
</span><span class="cx"> 
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;ficomp&lt;/mnemonic&gt;
</span><del>-        &lt;class&gt;X87&lt;/class&gt;
</del><ins>+        &lt;cpuid&gt;X87&lt;/cpuid&gt;
</ins><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><span class="cx">             &lt;opc&gt;de /mod=!11 /reg=3&lt;/opc&gt;
</span><span class="lines">@@ -2392,7 +2503,7 @@
</span><span class="cx"> 
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;fild&lt;/mnemonic&gt;
</span><del>-        &lt;class&gt;X87&lt;/class&gt;
</del><ins>+        &lt;cpuid&gt;X87&lt;/cpuid&gt;
</ins><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><span class="cx">             &lt;opc&gt;df /mod=!11 /reg=0&lt;/opc&gt;
</span><span class="lines">@@ -2411,8 +2522,8 @@
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="cx">     &lt;instruction&gt;
</span><del>-        &lt;mnemonic&gt;fncstp&lt;/mnemonic&gt;
-        &lt;class&gt;X87&lt;/class&gt;
</del><ins>+        &lt;mnemonic&gt;fincstp&lt;/mnemonic&gt;
+        &lt;cpuid&gt;X87&lt;/cpuid&gt;
</ins><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;opc&gt;d9 /mod=11 /x87=37&lt;/opc&gt;
</span><span class="cx">         &lt;/def&gt;
</span><span class="lines">@@ -2420,7 +2531,7 @@
</span><span class="cx"> 
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;fninit&lt;/mnemonic&gt;
</span><del>-        &lt;class&gt;X87&lt;/class&gt;
</del><ins>+        &lt;cpuid&gt;X87&lt;/cpuid&gt;
</ins><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;opc&gt;db /mod=11 /x87=23&lt;/opc&gt;
</span><span class="cx">         &lt;/def&gt;
</span><span class="lines">@@ -2428,7 +2539,7 @@
</span><span class="cx"> 
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;fiadd&lt;/mnemonic&gt;
</span><del>-        &lt;class&gt;X87&lt;/class&gt;
</del><ins>+        &lt;cpuid&gt;X87&lt;/cpuid&gt;
</ins><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><span class="cx">             &lt;opc&gt;da /mod=!11 /reg=0&lt;/opc&gt;
</span><span class="lines">@@ -2443,7 +2554,7 @@
</span><span class="cx"> 
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;fidivr&lt;/mnemonic&gt;
</span><del>-        &lt;class&gt;X87&lt;/class&gt;
</del><ins>+        &lt;cpuid&gt;X87&lt;/cpuid&gt;
</ins><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><span class="cx">             &lt;opc&gt;da /mod=!11 /reg=7&lt;/opc&gt;
</span><span class="lines">@@ -2458,7 +2569,7 @@
</span><span class="cx"> 
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;fidiv&lt;/mnemonic&gt;
</span><del>-        &lt;class&gt;X87&lt;/class&gt;
</del><ins>+        &lt;cpuid&gt;X87&lt;/cpuid&gt;
</ins><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><span class="cx">             &lt;opc&gt;da /mod=!11 /reg=6&lt;/opc&gt;
</span><span class="lines">@@ -2473,7 +2584,7 @@
</span><span class="cx"> 
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;fisub&lt;/mnemonic&gt;
</span><del>-        &lt;class&gt;X87&lt;/class&gt;
</del><ins>+        &lt;cpuid&gt;X87&lt;/cpuid&gt;
</ins><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><span class="cx">             &lt;opc&gt;da /mod=!11 /reg=4&lt;/opc&gt;
</span><span class="lines">@@ -2488,7 +2599,7 @@
</span><span class="cx"> 
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;fisubr&lt;/mnemonic&gt;
</span><del>-        &lt;class&gt;X87&lt;/class&gt;
</del><ins>+        &lt;cpuid&gt;X87&lt;/cpuid&gt;
</ins><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><span class="cx">             &lt;opc&gt;da /mod=!11 /reg=5&lt;/opc&gt;
</span><span class="lines">@@ -2503,7 +2614,7 @@
</span><span class="cx"> 
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;fist&lt;/mnemonic&gt;
</span><del>-        &lt;class&gt;X87&lt;/class&gt;
</del><ins>+        &lt;cpuid&gt;X87&lt;/cpuid&gt;
</ins><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><span class="cx">             &lt;opc&gt;df /mod=!11 /reg=2&lt;/opc&gt;
</span><span class="lines">@@ -2518,7 +2629,7 @@
</span><span class="cx"> 
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;fistp&lt;/mnemonic&gt;
</span><del>-        &lt;class&gt;X87&lt;/class&gt;
</del><ins>+        &lt;cpuid&gt;X87&lt;/cpuid&gt;
</ins><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><span class="cx">             &lt;opc&gt;df /mod=!11 /reg=3&lt;/opc&gt;
</span><span class="lines">@@ -2538,7 +2649,7 @@
</span><span class="cx"> 
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;fisttp&lt;/mnemonic&gt;
</span><del>-        &lt;class&gt;X87&lt;/class&gt;
</del><ins>+        &lt;cpuid&gt;X87&lt;/cpuid&gt;
</ins><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><span class="cx">             &lt;opc&gt;db /mod=!11 /reg=1&lt;/opc&gt;
</span><span class="lines">@@ -2558,7 +2669,7 @@
</span><span class="cx"> 
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;fld&lt;/mnemonic&gt;
</span><del>-        &lt;class&gt;X87&lt;/class&gt;
</del><ins>+        &lt;cpuid&gt;X87&lt;/cpuid&gt;
</ins><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><span class="cx">             &lt;opc&gt;db /mod=!11 /reg=5&lt;/opc&gt;
</span><span class="lines">@@ -2610,7 +2721,7 @@
</span><span class="cx"> 
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;fld1&lt;/mnemonic&gt;
</span><del>-        &lt;class&gt;X87&lt;/class&gt;
</del><ins>+        &lt;cpuid&gt;X87&lt;/cpuid&gt;
</ins><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;opc&gt;d9 /mod=11 /x87=28&lt;/opc&gt;
</span><span class="cx">         &lt;/def&gt;
</span><span class="lines">@@ -2618,7 +2729,7 @@
</span><span class="cx"> 
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;fldl2t&lt;/mnemonic&gt;
</span><del>-        &lt;class&gt;X87&lt;/class&gt;
</del><ins>+        &lt;cpuid&gt;X87&lt;/cpuid&gt;
</ins><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;opc&gt;d9 /mod=11 /x87=29&lt;/opc&gt;
</span><span class="cx">         &lt;/def&gt;
</span><span class="lines">@@ -2626,15 +2737,15 @@
</span><span class="cx"> 
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;fldl2e&lt;/mnemonic&gt;
</span><del>-        &lt;class&gt;X87&lt;/class&gt;
</del><ins>+        &lt;cpuid&gt;X87&lt;/cpuid&gt;
</ins><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;opc&gt;d9 /mod=11 /x87=2a&lt;/opc&gt;
</span><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="cx">     &lt;instruction&gt;
</span><del>-        &lt;mnemonic&gt;fldlpi&lt;/mnemonic&gt;
-        &lt;class&gt;X87&lt;/class&gt;
</del><ins>+        &lt;mnemonic&gt;fldpi&lt;/mnemonic&gt;
+        &lt;cpuid&gt;X87&lt;/cpuid&gt;
</ins><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;opc&gt;d9 /mod=11 /x87=2b&lt;/opc&gt;
</span><span class="cx">         &lt;/def&gt;
</span><span class="lines">@@ -2642,7 +2753,7 @@
</span><span class="cx"> 
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;fldlg2&lt;/mnemonic&gt;
</span><del>-        &lt;class&gt;X87&lt;/class&gt;
</del><ins>+        &lt;cpuid&gt;X87&lt;/cpuid&gt;
</ins><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;opc&gt;d9 /mod=11 /x87=2c&lt;/opc&gt;
</span><span class="cx">         &lt;/def&gt;
</span><span class="lines">@@ -2650,7 +2761,7 @@
</span><span class="cx"> 
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;fldln2&lt;/mnemonic&gt;
</span><del>-        &lt;class&gt;X87&lt;/class&gt;
</del><ins>+        &lt;cpuid&gt;X87&lt;/cpuid&gt;
</ins><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;opc&gt;d9 /mod=11 /x87=2d&lt;/opc&gt;
</span><span class="cx">         &lt;/def&gt;
</span><span class="lines">@@ -2658,7 +2769,7 @@
</span><span class="cx"> 
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;fldz&lt;/mnemonic&gt;
</span><del>-        &lt;class&gt;X87&lt;/class&gt;
</del><ins>+        &lt;cpuid&gt;X87&lt;/cpuid&gt;
</ins><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;opc&gt;d9 /mod=11 /x87=2e&lt;/opc&gt;
</span><span class="cx">         &lt;/def&gt;
</span><span class="lines">@@ -2666,7 +2777,7 @@
</span><span class="cx"> 
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;fldcw&lt;/mnemonic&gt;
</span><del>-        &lt;class&gt;X87&lt;/class&gt;
</del><ins>+        &lt;cpuid&gt;X87&lt;/cpuid&gt;
</ins><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><span class="cx">             &lt;opc&gt;d9 /mod=!11 /reg=5&lt;/opc&gt;
</span><span class="lines">@@ -2676,7 +2787,7 @@
</span><span class="cx"> 
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;fldenv&lt;/mnemonic&gt;
</span><del>-        &lt;class&gt;X87&lt;/class&gt;
</del><ins>+        &lt;cpuid&gt;X87&lt;/cpuid&gt;
</ins><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><span class="cx">             &lt;opc&gt;d9 /mod=!11 /reg=4&lt;/opc&gt;
</span><span class="lines">@@ -2686,7 +2797,7 @@
</span><span class="cx"> 
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;fmul&lt;/mnemonic&gt;
</span><del>-        &lt;class&gt;X87&lt;/class&gt;
</del><ins>+        &lt;cpuid&gt;X87&lt;/cpuid&gt;
</ins><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><span class="cx">             &lt;opc&gt;dc /mod=!11 /reg=1&lt;/opc&gt;
</span><span class="lines">@@ -2765,7 +2876,7 @@
</span><span class="cx"> 
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;fmulp&lt;/mnemonic&gt;
</span><del>-        &lt;class&gt;X87&lt;/class&gt;
</del><ins>+        &lt;cpuid&gt;X87&lt;/cpuid&gt;
</ins><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;opc&gt;de /mod=11 /x87=08&lt;/opc&gt;
</span><span class="cx">             &lt;opr&gt;ST0 ST0&lt;/opr&gt;
</span><span class="lines">@@ -2802,7 +2913,7 @@
</span><span class="cx"> 
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;fimul&lt;/mnemonic&gt;
</span><del>-        &lt;class&gt;X87&lt;/class&gt;
</del><ins>+        &lt;cpuid&gt;X87&lt;/cpuid&gt;
</ins><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><span class="cx">             &lt;opc&gt;da /mod=!11 /reg=1&lt;/opc&gt;
</span><span class="lines">@@ -2817,15 +2928,39 @@
</span><span class="cx"> 
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;fnop&lt;/mnemonic&gt;
</span><del>-        &lt;class&gt;X87&lt;/class&gt;
</del><ins>+        &lt;cpuid&gt;X87&lt;/cpuid&gt;
</ins><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;opc&gt;d9 /mod=11 /x87=10&lt;/opc&gt;
</span><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><ins>+        
+    &lt;instruction&gt;
+        &lt;mnemonic&gt;fndisi&lt;/mnemonic&gt;
+        &lt;cpuid&gt;X87&lt;/cpuid&gt;
+        &lt;def&gt;
+            &lt;opc&gt;db /mod=11 /x87=21&lt;/opc&gt;
+        &lt;/def&gt;
+    &lt;/instruction&gt;
+        
+    &lt;instruction&gt;
+        &lt;mnemonic&gt;fneni&lt;/mnemonic&gt;
+        &lt;cpuid&gt;X87&lt;/cpuid&gt;
+        &lt;def&gt;
+            &lt;opc&gt;db /mod=11 /x87=20&lt;/opc&gt;
+        &lt;/def&gt;
+    &lt;/instruction&gt;
+        
+    &lt;instruction&gt;
+        &lt;mnemonic&gt;fnsetpm&lt;/mnemonic&gt;
+        &lt;cpuid&gt;X87&lt;/cpuid&gt;
+        &lt;def&gt;
+            &lt;opc&gt;db /mod=11 /x87=24&lt;/opc&gt;
+        &lt;/def&gt;
+    &lt;/instruction&gt;
</ins><span class="cx"> 
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;fpatan&lt;/mnemonic&gt;
</span><del>-        &lt;class&gt;X87&lt;/class&gt;
</del><ins>+        &lt;cpuid&gt;X87&lt;/cpuid&gt;
</ins><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;opc&gt;d9 /mod=11 /x87=33&lt;/opc&gt;
</span><span class="cx">         &lt;/def&gt;
</span><span class="lines">@@ -2833,7 +2968,7 @@
</span><span class="cx"> 
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;fprem&lt;/mnemonic&gt;
</span><del>-        &lt;class&gt;X87&lt;/class&gt;
</del><ins>+        &lt;cpuid&gt;X87&lt;/cpuid&gt;
</ins><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;opc&gt;d9 /mod=11 /x87=38&lt;/opc&gt;
</span><span class="cx">         &lt;/def&gt;
</span><span class="lines">@@ -2841,7 +2976,7 @@
</span><span class="cx"> 
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;fprem1&lt;/mnemonic&gt;
</span><del>-        &lt;class&gt;X87&lt;/class&gt;
</del><ins>+        &lt;cpuid&gt;X87&lt;/cpuid&gt;
</ins><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;opc&gt;d9 /mod=11 /x87=35&lt;/opc&gt;
</span><span class="cx">         &lt;/def&gt;
</span><span class="lines">@@ -2849,7 +2984,7 @@
</span><span class="cx"> 
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;fptan&lt;/mnemonic&gt;
</span><del>-        &lt;class&gt;X87&lt;/class&gt;
</del><ins>+        &lt;cpuid&gt;X87&lt;/cpuid&gt;
</ins><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;opc&gt;d9 /mod=11 /x87=32&lt;/opc&gt;
</span><span class="cx">         &lt;/def&gt;
</span><span class="lines">@@ -2857,7 +2992,7 @@
</span><span class="cx"> 
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;frndint&lt;/mnemonic&gt;
</span><del>-        &lt;class&gt;X87&lt;/class&gt;
</del><ins>+        &lt;cpuid&gt;X87&lt;/cpuid&gt;
</ins><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;opc&gt;d9 /mod=11 /x87=3c&lt;/opc&gt;
</span><span class="cx">         &lt;/def&gt;
</span><span class="lines">@@ -2865,17 +3000,25 @@
</span><span class="cx"> 
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;frstor&lt;/mnemonic&gt;
</span><del>-        &lt;class&gt;X87&lt;/class&gt;
</del><ins>+        &lt;cpuid&gt;X87&lt;/cpuid&gt;
</ins><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><span class="cx">             &lt;opc&gt;dd /mod=!11 /reg=4&lt;/opc&gt;
</span><span class="cx">             &lt;opr&gt;M&lt;/opr&gt;
</span><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><ins>+        
+    &lt;instruction&gt;
+        &lt;mnemonic&gt;frstpm&lt;/mnemonic&gt;
+        &lt;cpuid&gt;X87&lt;/cpuid&gt;
+        &lt;def&gt;
+            &lt;opc&gt;db /mod=11 /x87=25&lt;/opc&gt;
+        &lt;/def&gt;
+    &lt;/instruction&gt;
</ins><span class="cx"> 
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;fnsave&lt;/mnemonic&gt;
</span><del>-        &lt;class&gt;X87&lt;/class&gt;
</del><ins>+        &lt;cpuid&gt;X87&lt;/cpuid&gt;
</ins><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><span class="cx">             &lt;opc&gt;dd /mod=!11 /reg=6&lt;/opc&gt;
</span><span class="lines">@@ -2885,7 +3028,7 @@
</span><span class="cx"> 
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;fscale&lt;/mnemonic&gt;
</span><del>-        &lt;class&gt;X87&lt;/class&gt;
</del><ins>+        &lt;cpuid&gt;X87&lt;/cpuid&gt;
</ins><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;opc&gt;d9 /mod=11 /x87=3d&lt;/opc&gt;
</span><span class="cx">         &lt;/def&gt;
</span><span class="lines">@@ -2893,7 +3036,7 @@
</span><span class="cx"> 
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;fsin&lt;/mnemonic&gt;
</span><del>-        &lt;class&gt;X87&lt;/class&gt;
</del><ins>+        &lt;cpuid&gt;X87&lt;/cpuid&gt;
</ins><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;opc&gt;d9 /mod=11 /x87=3e&lt;/opc&gt;
</span><span class="cx">         &lt;/def&gt;
</span><span class="lines">@@ -2901,7 +3044,7 @@
</span><span class="cx"> 
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;fsincos&lt;/mnemonic&gt;
</span><del>-        &lt;class&gt;X87&lt;/class&gt;
</del><ins>+        &lt;cpuid&gt;X87&lt;/cpuid&gt;
</ins><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;opc&gt;d9 /mod=11 /x87=3b&lt;/opc&gt;
</span><span class="cx">         &lt;/def&gt;
</span><span class="lines">@@ -2909,7 +3052,7 @@
</span><span class="cx"> 
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;fsqrt&lt;/mnemonic&gt;
</span><del>-        &lt;class&gt;X87&lt;/class&gt;
</del><ins>+        &lt;cpuid&gt;X87&lt;/cpuid&gt;
</ins><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;opc&gt;d9 /mod=11 /x87=3a&lt;/opc&gt;
</span><span class="cx">         &lt;/def&gt;
</span><span class="lines">@@ -2917,7 +3060,7 @@
</span><span class="cx"> 
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;fstp&lt;/mnemonic&gt;
</span><del>-        &lt;class&gt;X87&lt;/class&gt;
</del><ins>+        &lt;cpuid&gt;X87&lt;/cpuid&gt;
</ins><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><span class="cx">             &lt;opc&gt;db /mod=!11 /reg=7&lt;/opc&gt;
</span><span class="lines">@@ -3077,7 +3220,7 @@
</span><span class="cx"> 
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;fst&lt;/mnemonic&gt;
</span><del>-        &lt;class&gt;X87&lt;/class&gt;
</del><ins>+        &lt;cpuid&gt;X87&lt;/cpuid&gt;
</ins><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><span class="cx">             &lt;opc&gt;d9 /mod=!11 /reg=2&lt;/opc&gt;
</span><span class="lines">@@ -3124,7 +3267,7 @@
</span><span class="cx"> 
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;fnstcw&lt;/mnemonic&gt;
</span><del>-        &lt;class&gt;X87&lt;/class&gt;
</del><ins>+        &lt;cpuid&gt;X87&lt;/cpuid&gt;
</ins><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><span class="cx">             &lt;opc&gt;d9 /mod=!11 /reg=7&lt;/opc&gt;
</span><span class="lines">@@ -3134,7 +3277,7 @@
</span><span class="cx"> 
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;fnstenv&lt;/mnemonic&gt;
</span><del>-        &lt;class&gt;X87&lt;/class&gt;
</del><ins>+        &lt;cpuid&gt;X87&lt;/cpuid&gt;
</ins><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><span class="cx">             &lt;opc&gt;d9 /mod=!11 /reg=6&lt;/opc&gt;
</span><span class="lines">@@ -3144,7 +3287,7 @@
</span><span class="cx"> 
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;fnstsw&lt;/mnemonic&gt;
</span><del>-        &lt;class&gt;X87&lt;/class&gt;
</del><ins>+        &lt;cpuid&gt;X87&lt;/cpuid&gt;
</ins><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><span class="cx">             &lt;opc&gt;dd /mod=!11 /reg=7&lt;/opc&gt;
</span><span class="lines">@@ -3158,7 +3301,7 @@
</span><span class="cx"> 
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;fsub&lt;/mnemonic&gt;
</span><del>-        &lt;class&gt;X87&lt;/class&gt;
</del><ins>+        &lt;cpuid&gt;X87&lt;/cpuid&gt;
</ins><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><span class="cx">             &lt;opc&gt;d8 /mod=!11 /reg=4&lt;/opc&gt;
</span><span class="lines">@@ -3237,7 +3380,7 @@
</span><span class="cx"> 
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;fsubp&lt;/mnemonic&gt;
</span><del>-        &lt;class&gt;X87&lt;/class&gt;
</del><ins>+        &lt;cpuid&gt;X87&lt;/cpuid&gt;
</ins><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;opc&gt;de /mod=11 /x87=28&lt;/opc&gt;
</span><span class="cx">             &lt;opr&gt;ST0 ST0&lt;/opr&gt;
</span><span class="lines">@@ -3274,7 +3417,7 @@
</span><span class="cx"> 
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;fsubr&lt;/mnemonic&gt;
</span><del>-        &lt;class&gt;X87&lt;/class&gt;
</del><ins>+        &lt;cpuid&gt;X87&lt;/cpuid&gt;
</ins><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><span class="cx">             &lt;opc&gt;dc /mod=!11 /reg=5&lt;/opc&gt;
</span><span class="lines">@@ -3353,7 +3496,7 @@
</span><span class="cx"> 
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;fsubrp&lt;/mnemonic&gt;
</span><del>-        &lt;class&gt;X87&lt;/class&gt;
</del><ins>+        &lt;cpuid&gt;X87&lt;/cpuid&gt;
</ins><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;opc&gt;de /mod=11 /x87=20&lt;/opc&gt;
</span><span class="cx">             &lt;opr&gt;ST0 ST0&lt;/opr&gt;
</span><span class="lines">@@ -3390,7 +3533,7 @@
</span><span class="cx"> 
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;ftst&lt;/mnemonic&gt;
</span><del>-        &lt;class&gt;X87&lt;/class&gt;
</del><ins>+        &lt;cpuid&gt;X87&lt;/cpuid&gt;
</ins><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;opc&gt;d9 /mod=11 /x87=24&lt;/opc&gt;
</span><span class="cx">         &lt;/def&gt;
</span><span class="lines">@@ -3398,7 +3541,7 @@
</span><span class="cx"> 
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;fucom&lt;/mnemonic&gt;
</span><del>-        &lt;class&gt;X87&lt;/class&gt;
</del><ins>+        &lt;cpuid&gt;X87&lt;/cpuid&gt;
</ins><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;opc&gt;dd /mod=11 /x87=20&lt;/opc&gt;
</span><span class="cx">             &lt;opr&gt;ST0&lt;/opr&gt;
</span><span class="lines">@@ -3435,7 +3578,7 @@
</span><span class="cx"> 
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;fucomp&lt;/mnemonic&gt;
</span><del>-        &lt;class&gt;X87&lt;/class&gt;
</del><ins>+        &lt;cpuid&gt;X87&lt;/cpuid&gt;
</ins><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;opc&gt;dd /mod=11 /x87=28&lt;/opc&gt;
</span><span class="cx">             &lt;opr&gt;ST0&lt;/opr&gt;
</span><span class="lines">@@ -3472,7 +3615,7 @@
</span><span class="cx"> 
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;fucompp&lt;/mnemonic&gt;
</span><del>-        &lt;class&gt;X87&lt;/class&gt;
</del><ins>+        &lt;cpuid&gt;X87&lt;/cpuid&gt;
</ins><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;opc&gt;da /mod=11 /x87=29&lt;/opc&gt;
</span><span class="cx">         &lt;/def&gt;
</span><span class="lines">@@ -3480,7 +3623,7 @@
</span><span class="cx"> 
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;fxam&lt;/mnemonic&gt;
</span><del>-        &lt;class&gt;X87&lt;/class&gt;
</del><ins>+        &lt;cpuid&gt;X87&lt;/cpuid&gt;
</ins><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;opc&gt;d9 /mod=11 /x87=25&lt;/opc&gt;
</span><span class="cx">         &lt;/def&gt;
</span><span class="lines">@@ -3488,7 +3631,7 @@
</span><span class="cx"> 
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;fxch&lt;/mnemonic&gt;
</span><del>-        &lt;class&gt;X87&lt;/class&gt;
</del><ins>+        &lt;cpuid&gt;X87&lt;/cpuid&gt;
</ins><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;opc&gt;d9 /mod=11 /x87=08&lt;/opc&gt;
</span><span class="cx">             &lt;opr&gt;ST0 ST0&lt;/opr&gt;
</span><span class="lines">@@ -3525,7 +3668,7 @@
</span><span class="cx"> 
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;fxch4&lt;/mnemonic&gt;
</span><del>-        &lt;class&gt;X87&lt;/class&gt;
</del><ins>+        &lt;cpuid&gt;X87&lt;/cpuid&gt;
</ins><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;opc&gt;dd /mod=11 /x87=08&lt;/opc&gt;
</span><span class="cx">             &lt;opr&gt;ST0&lt;/opr&gt;
</span><span class="lines">@@ -3562,7 +3705,7 @@
</span><span class="cx"> 
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;fxch7&lt;/mnemonic&gt;
</span><del>-        &lt;class&gt;X87&lt;/class&gt;
</del><ins>+        &lt;cpuid&gt;X87&lt;/cpuid&gt;
</ins><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;opc&gt;df /mod=11 /x87=08&lt;/opc&gt;
</span><span class="cx">             &lt;opr&gt;ST0&lt;/opr&gt;
</span><span class="lines">@@ -3601,7 +3744,7 @@
</span><span class="cx">         &lt;mnemonic&gt;fxrstor&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexw rexr rexx rexb&lt;/pfx&gt;
</span><del>-            &lt;opc&gt;0f ae /mod=11 /reg=1&lt;/opc&gt;
</del><ins>+            &lt;opc&gt;0f ae /mod=!11 /reg=1&lt;/opc&gt;
</ins><span class="cx">             &lt;opr&gt;M&lt;/opr&gt;
</span><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="lines">@@ -3610,14 +3753,14 @@
</span><span class="cx">         &lt;mnemonic&gt;fxsave&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexw rexr rexx rexb&lt;/pfx&gt;
</span><del>-            &lt;opc&gt;0f ae /mod=11 /reg=0&lt;/opc&gt;
</del><ins>+            &lt;opc&gt;0f ae /mod=!11 /reg=0&lt;/opc&gt;
</ins><span class="cx">             &lt;opr&gt;M&lt;/opr&gt;
</span><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="cx">     &lt;instruction&gt;
</span><del>-        &lt;mnemonic&gt;fpxtract&lt;/mnemonic&gt;
-        &lt;class&gt;X87&lt;/class&gt;
</del><ins>+        &lt;mnemonic&gt;fxtract&lt;/mnemonic&gt;
+        &lt;cpuid&gt;X87&lt;/cpuid&gt;
</ins><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;opc&gt;d9 /mod=11 /x87=34&lt;/opc&gt;
</span><span class="cx">         &lt;/def&gt;
</span><span class="lines">@@ -3625,7 +3768,7 @@
</span><span class="cx"> 
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;fyl2x&lt;/mnemonic&gt;
</span><del>-        &lt;class&gt;X87&lt;/class&gt;
</del><ins>+        &lt;cpuid&gt;X87&lt;/cpuid&gt;
</ins><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;opc&gt;d9 /mod=11 /x87=31&lt;/opc&gt;
</span><span class="cx">         &lt;/def&gt;
</span><span class="lines">@@ -3633,7 +3776,7 @@
</span><span class="cx"> 
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;fyl2xp1&lt;/mnemonic&gt;
</span><del>-        &lt;class&gt;X87&lt;/class&gt;
</del><ins>+        &lt;cpuid&gt;X87&lt;/cpuid&gt;
</ins><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;opc&gt;d9 /mod=11 /x87=39&lt;/opc&gt;
</span><span class="cx">         &lt;/def&gt;
</span><span class="lines">@@ -3703,13 +3846,11 @@
</span><span class="cx">             &lt;pfx&gt;aso oso rexw rexr rexx rexb&lt;/pfx&gt;
</span><span class="cx">             &lt;opc&gt;69&lt;/opc&gt;
</span><span class="cx">             &lt;opr&gt;Gv Ev Iz&lt;/opr&gt;
</span><del>-            &lt;syn&gt;sext&lt;/syn&gt;
</del><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso oso rexw rexr rexx rexb&lt;/pfx&gt;
</span><span class="cx">             &lt;opc&gt;6b&lt;/opc&gt;
</span><del>-            &lt;opr&gt;Gv Ev Ib&lt;/opr&gt;
-            &lt;syn&gt;sext&lt;/syn&gt;
</del><ins>+            &lt;opr&gt;Gv Ev sIb&lt;/opr&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -3718,42 +3859,42 @@
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;oso&lt;/pfx&gt;
</span><span class="cx">             &lt;opc&gt;40&lt;/opc&gt;
</span><del>-            &lt;opr&gt;eAX&lt;/opr&gt;
</del><ins>+            &lt;opr&gt;R0z&lt;/opr&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;oso&lt;/pfx&gt;
</span><span class="cx">             &lt;opc&gt;41&lt;/opc&gt;
</span><del>-            &lt;opr&gt;eCX&lt;/opr&gt;
</del><ins>+            &lt;opr&gt;R1z&lt;/opr&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;oso&lt;/pfx&gt;
</span><span class="cx">             &lt;opc&gt;42&lt;/opc&gt;
</span><del>-            &lt;opr&gt;eDX&lt;/opr&gt;
</del><ins>+            &lt;opr&gt;R2z&lt;/opr&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;oso&lt;/pfx&gt;
</span><span class="cx">             &lt;opc&gt;43&lt;/opc&gt;
</span><del>-            &lt;opr&gt;eBX&lt;/opr&gt;
</del><ins>+            &lt;opr&gt;R3z&lt;/opr&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;oso&lt;/pfx&gt;
</span><span class="cx">             &lt;opc&gt;44&lt;/opc&gt;
</span><del>-            &lt;opr&gt;eSP&lt;/opr&gt;
</del><ins>+            &lt;opr&gt;R4z&lt;/opr&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;oso&lt;/pfx&gt;
</span><span class="cx">             &lt;opc&gt;45&lt;/opc&gt;
</span><del>-            &lt;opr&gt;eBP&lt;/opr&gt;
</del><ins>+            &lt;opr&gt;R5z&lt;/opr&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;oso&lt;/pfx&gt;
</span><span class="cx">             &lt;opc&gt;46&lt;/opc&gt;
</span><del>-            &lt;opr&gt;eSI&lt;/opr&gt;
</del><ins>+            &lt;opr&gt;R6z&lt;/opr&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;oso&lt;/pfx&gt;
</span><span class="cx">             &lt;opc&gt;47&lt;/opc&gt;
</span><del>-            &lt;opr&gt;eDI&lt;/opr&gt;
</del><ins>+            &lt;opr&gt;R7z&lt;/opr&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso oso rexw rexr rexx rexb&lt;/pfx&gt;
</span><span class="lines">@@ -3770,6 +3911,7 @@
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;insb&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><ins>+            &lt;pfx&gt;rep seg&lt;/pfx&gt;
</ins><span class="cx">             &lt;opc&gt;6c&lt;/opc&gt;
</span><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="lines">@@ -3777,7 +3919,7 @@
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;insw&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><del>-            &lt;pfx&gt;oso&lt;/pfx&gt;
</del><ins>+            &lt;pfx&gt;rep oso seg&lt;/pfx&gt;
</ins><span class="cx">             &lt;opc&gt;6d /o=16&lt;/opc&gt;
</span><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="lines">@@ -3785,7 +3927,7 @@
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;insd&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><del>-            &lt;pfx&gt;oso&lt;/pfx&gt;
</del><ins>+            &lt;pfx&gt;rep oso seg&lt;/pfx&gt;
</ins><span class="cx">             &lt;opc&gt;6d /o=32&lt;/opc&gt;
</span><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="lines">@@ -3815,7 +3957,7 @@
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;into&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><del>-            &lt;opc&gt;ce&lt;/opc&gt;
</del><ins>+            &lt;opc&gt;ce /m=!64&lt;/opc&gt;
</ins><span class="cx">             &lt;mode&gt;inv64&lt;/mode&gt;
</span><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="lines">@@ -3831,11 +3973,11 @@
</span><span class="cx">         &lt;mnemonic&gt;invept&lt;/mnemonic&gt;
</span><span class="cx">         &lt;vendor&gt;intel&lt;/vendor&gt;
</span><span class="cx">         &lt;def&gt;
</span><del>-            &lt;opc&gt;sse66 0f 38 80 /m=32&lt;/opc&gt;
</del><ins>+            &lt;opc&gt;/sse=66 0f 38 80 /m=32&lt;/opc&gt;
</ins><span class="cx">             &lt;opr&gt;Gd Mo&lt;/opr&gt;
</span><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><del>-            &lt;opc&gt;sse66 0f 38 80 /m=64&lt;/opc&gt;
</del><ins>+            &lt;opc&gt;/sse=66 0f 38 80 /m=64&lt;/opc&gt;
</ins><span class="cx">             &lt;opr&gt;Gq Mo&lt;/opr&gt;
</span><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="lines">@@ -3861,11 +4003,11 @@
</span><span class="cx">         &lt;mnemonic&gt;invvpid&lt;/mnemonic&gt;
</span><span class="cx">         &lt;vendor&gt;intel&lt;/vendor&gt;
</span><span class="cx">         &lt;def&gt;
</span><del>-            &lt;opc&gt;sse66 0f 38 81 /m=32&lt;/opc&gt;
</del><ins>+            &lt;opc&gt;/sse=66 0f 38 81 /m=32&lt;/opc&gt;
</ins><span class="cx">             &lt;opr&gt;Gd Mo&lt;/opr&gt;
</span><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><del>-            &lt;opc&gt;sse66 0f 38 81 /m=64&lt;/opc&gt;
</del><ins>+            &lt;opc&gt;/sse=66 0f 38 81 /m=64&lt;/opc&gt;
</ins><span class="cx">             &lt;opr&gt;Gq Mo&lt;/opr&gt;
</span><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="lines">@@ -3904,7 +4046,7 @@
</span><span class="cx">             &lt;pfx&gt;oso&lt;/pfx&gt;
</span><span class="cx">             &lt;opc&gt;0f 80&lt;/opc&gt;
</span><span class="cx">             &lt;opr&gt;Jz&lt;/opr&gt;
</span><del>-            &lt;mode&gt;def64 depM&lt;/mode&gt;
</del><ins>+            &lt;mode&gt;def64&lt;/mode&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -3918,7 +4060,7 @@
</span><span class="cx">             &lt;pfx&gt;oso&lt;/pfx&gt;
</span><span class="cx">             &lt;opc&gt;0f 81&lt;/opc&gt;
</span><span class="cx">             &lt;opr&gt;Jz&lt;/opr&gt;
</span><del>-            &lt;mode&gt;def64 depM&lt;/mode&gt;
</del><ins>+            &lt;mode&gt;def64&lt;/mode&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -3932,7 +4074,7 @@
</span><span class="cx">             &lt;pfx&gt;oso&lt;/pfx&gt;
</span><span class="cx">             &lt;opc&gt;0f 82&lt;/opc&gt;
</span><span class="cx">             &lt;opr&gt;Jz&lt;/opr&gt;
</span><del>-            &lt;mode&gt;def64 depM&lt;/mode&gt;
</del><ins>+            &lt;mode&gt;def64&lt;/mode&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -3946,7 +4088,7 @@
</span><span class="cx">             &lt;pfx&gt;oso&lt;/pfx&gt;
</span><span class="cx">             &lt;opc&gt;0f 83&lt;/opc&gt;
</span><span class="cx">             &lt;opr&gt;Jz&lt;/opr&gt;
</span><del>-            &lt;mode&gt;def64 depM&lt;/mode&gt;
</del><ins>+            &lt;mode&gt;def64&lt;/mode&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -3960,7 +4102,7 @@
</span><span class="cx">             &lt;pfx&gt;oso&lt;/pfx&gt;
</span><span class="cx">             &lt;opc&gt;0f 84&lt;/opc&gt;
</span><span class="cx">             &lt;opr&gt;Jz&lt;/opr&gt;
</span><del>-            &lt;mode&gt;def64 depM&lt;/mode&gt;
</del><ins>+            &lt;mode&gt;def64&lt;/mode&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -3974,7 +4116,7 @@
</span><span class="cx">             &lt;pfx&gt;oso&lt;/pfx&gt;
</span><span class="cx">             &lt;opc&gt;0f 85&lt;/opc&gt;
</span><span class="cx">             &lt;opr&gt;Jz&lt;/opr&gt;
</span><del>-            &lt;mode&gt;def64 depM&lt;/mode&gt;
</del><ins>+            &lt;mode&gt;def64&lt;/mode&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -3988,7 +4130,7 @@
</span><span class="cx">             &lt;pfx&gt;oso&lt;/pfx&gt;
</span><span class="cx">             &lt;opc&gt;0f 86&lt;/opc&gt;
</span><span class="cx">             &lt;opr&gt;Jz&lt;/opr&gt;
</span><del>-            &lt;mode&gt;def64 depM&lt;/mode&gt;
</del><ins>+            &lt;mode&gt;def64&lt;/mode&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -4002,7 +4144,7 @@
</span><span class="cx">             &lt;pfx&gt;oso&lt;/pfx&gt;
</span><span class="cx">             &lt;opc&gt;0f 87&lt;/opc&gt;
</span><span class="cx">             &lt;opr&gt;Jz&lt;/opr&gt;
</span><del>-            &lt;mode&gt;def64 depM&lt;/mode&gt;
</del><ins>+            &lt;mode&gt;def64&lt;/mode&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -4016,7 +4158,7 @@
</span><span class="cx">             &lt;pfx&gt;oso&lt;/pfx&gt;
</span><span class="cx">             &lt;opc&gt;0f 88&lt;/opc&gt;
</span><span class="cx">             &lt;opr&gt;Jz&lt;/opr&gt;
</span><del>-            &lt;mode&gt;def64 depM&lt;/mode&gt;
</del><ins>+            &lt;mode&gt;def64&lt;/mode&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -4030,7 +4172,7 @@
</span><span class="cx">             &lt;pfx&gt;oso&lt;/pfx&gt;
</span><span class="cx">             &lt;opc&gt;0f 89&lt;/opc&gt;
</span><span class="cx">             &lt;opr&gt;Jz&lt;/opr&gt;
</span><del>-            &lt;mode&gt;def64 depM&lt;/mode&gt;
</del><ins>+            &lt;mode&gt;def64&lt;/mode&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -4044,7 +4186,7 @@
</span><span class="cx">             &lt;pfx&gt;oso&lt;/pfx&gt;
</span><span class="cx">             &lt;opc&gt;0f 8a&lt;/opc&gt;
</span><span class="cx">             &lt;opr&gt;Jz&lt;/opr&gt;
</span><del>-            &lt;mode&gt;def64 depM&lt;/mode&gt;
</del><ins>+            &lt;mode&gt;def64&lt;/mode&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -4058,7 +4200,7 @@
</span><span class="cx">             &lt;pfx&gt;oso&lt;/pfx&gt;
</span><span class="cx">             &lt;opc&gt;0f 8b&lt;/opc&gt;
</span><span class="cx">             &lt;opr&gt;Jz&lt;/opr&gt;
</span><del>-            &lt;mode&gt;def64 depM&lt;/mode&gt;
</del><ins>+            &lt;mode&gt;def64&lt;/mode&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -4072,7 +4214,7 @@
</span><span class="cx">             &lt;pfx&gt;oso&lt;/pfx&gt;
</span><span class="cx">             &lt;opc&gt;0f 8c&lt;/opc&gt;
</span><span class="cx">             &lt;opr&gt;Jz&lt;/opr&gt;
</span><del>-            &lt;mode&gt;def64 depM&lt;/mode&gt;
</del><ins>+            &lt;mode&gt;def64&lt;/mode&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -4086,7 +4228,7 @@
</span><span class="cx">             &lt;pfx&gt;oso&lt;/pfx&gt;
</span><span class="cx">             &lt;opc&gt;0f 8d&lt;/opc&gt;
</span><span class="cx">             &lt;opr&gt;Jz&lt;/opr&gt;
</span><del>-            &lt;mode&gt;def64 depM&lt;/mode&gt;
</del><ins>+            &lt;mode&gt;def64&lt;/mode&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -4100,7 +4242,7 @@
</span><span class="cx">             &lt;pfx&gt;oso&lt;/pfx&gt;
</span><span class="cx">             &lt;opc&gt;0f 8e&lt;/opc&gt;
</span><span class="cx">             &lt;opr&gt;Jz&lt;/opr&gt;
</span><del>-            &lt;mode&gt;def64 depM&lt;/mode&gt;
</del><ins>+            &lt;mode&gt;def64&lt;/mode&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -4114,7 +4256,7 @@
</span><span class="cx">             &lt;pfx&gt;oso&lt;/pfx&gt;
</span><span class="cx">             &lt;opc&gt;0f 8f&lt;/opc&gt;
</span><span class="cx">             &lt;opr&gt;Jz&lt;/opr&gt;
</span><del>-            &lt;mode&gt;def64 depM&lt;/mode&gt;
</del><ins>+            &lt;mode&gt;def64&lt;/mode&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -4151,28 +4293,28 @@
</span><span class="cx">             &lt;pfx&gt;aso oso rexw rexr rexx rexb&lt;/pfx&gt;
</span><span class="cx">             &lt;opc&gt;ff /reg=4&lt;/opc&gt;
</span><span class="cx">             &lt;opr&gt;Ev&lt;/opr&gt;
</span><del>-            &lt;mode&gt;def64 depM&lt;/mode&gt;
</del><ins>+            &lt;mode&gt;def64&lt;/mode&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso oso rexw rexr rexx rexb&lt;/pfx&gt;
</span><span class="cx">             &lt;opc&gt;ff /reg=5&lt;/opc&gt;
</span><del>-            &lt;opr&gt;Ep&lt;/opr&gt;
</del><ins>+            &lt;opr&gt;Fv&lt;/opr&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;oso&lt;/pfx&gt;
</span><span class="cx">             &lt;opc&gt;e9&lt;/opc&gt;
</span><span class="cx">             &lt;opr&gt;Jz&lt;/opr&gt;
</span><del>-            &lt;mode&gt;def64 depM&lt;/mode&gt;
-            &lt;syn&gt;cast&lt;/syn&gt;
</del><ins>+            &lt;mode&gt;def64&lt;/mode&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><del>-            &lt;opc&gt;ea&lt;/opc&gt;
-            &lt;opr&gt;Ap&lt;/opr&gt;
-            &lt;mode&gt;inv64&lt;/mode&gt;
</del><ins>+            &lt;pfx&gt;oso&lt;/pfx&gt;
+            &lt;opc&gt;ea /m=!64&lt;/opc&gt;
+            &lt;opr&gt;Av&lt;/opr&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;opc&gt;eb&lt;/opc&gt;
</span><span class="cx">             &lt;opr&gt;Jb&lt;/opr&gt;
</span><ins>+            &lt;mode&gt;def64&lt;/mode&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -4193,19 +4335,10 @@
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="cx">     &lt;instruction&gt;
</span><del>-        &lt;mnemonic&gt;lddqu&lt;/mnemonic&gt;
-        &lt;def&gt;
-            &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
-            &lt;opc&gt;ssef2 0f f0&lt;/opc&gt;
-            &lt;opr&gt;V M&lt;/opr&gt;
-        &lt;/def&gt;
-    &lt;/instruction&gt;
-
-    &lt;instruction&gt;
</del><span class="cx">         &lt;mnemonic&gt;ldmxcsr&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexw rexr rexx rexb&lt;/pfx&gt;
</span><del>-            &lt;opc&gt;0f ae /reg=2 /mod=11&lt;/opc&gt;
</del><ins>+            &lt;opc&gt;0f ae /reg=2 /mod=!11&lt;/opc&gt;
</ins><span class="cx">             &lt;opr&gt;Md&lt;/opr&gt;
</span><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="lines">@@ -4214,9 +4347,8 @@
</span><span class="cx">         &lt;mnemonic&gt;lds&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso oso&lt;/pfx&gt;
</span><del>-            &lt;opc&gt;c5&lt;/opc&gt;
</del><ins>+            &lt;opc&gt;c5 /vex=none /m=!64&lt;/opc&gt;
</ins><span class="cx">             &lt;opr&gt;Gv M&lt;/opr&gt;
</span><del>-            &lt;mode&gt;inv64&lt;/mode&gt;
</del><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -4233,9 +4365,8 @@
</span><span class="cx">         &lt;mnemonic&gt;les&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso oso&lt;/pfx&gt;
</span><del>-            &lt;opc&gt;c4&lt;/opc&gt;
</del><ins>+            &lt;opc&gt;c4 /m=!64&lt;/opc&gt;
</ins><span class="cx">             &lt;opr&gt;Gv M&lt;/opr&gt;
</span><del>-            &lt;mode&gt;inv64&lt;/mode&gt;
</del><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -4271,7 +4402,7 @@
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso oso rexw rexr rexx rexb&lt;/pfx&gt;
</span><span class="cx">             &lt;opc&gt;0f b2&lt;/opc&gt;
</span><del>-            &lt;opr&gt;Gz M&lt;/opr&gt;
</del><ins>+            &lt;opr&gt;Gv M&lt;/opr&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -4335,6 +4466,11 @@
</span><span class="cx">             &lt;opc&gt;0f 01 /reg=6 /mod=!11&lt;/opc&gt;
</span><span class="cx">             &lt;opr&gt;Ew&lt;/opr&gt;
</span><span class="cx">         &lt;/def&gt;
</span><ins>+        &lt;def&gt;
+            &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
+            &lt;opc&gt;0f 01 /reg=6 /mod=11&lt;/opc&gt;
+            &lt;opr&gt;Ew&lt;/opr&gt;
+        &lt;/def&gt;
</ins><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="cx">     &lt;instruction&gt;
</span><span class="lines">@@ -4347,7 +4483,7 @@
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;lodsb&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><del>-            &lt;pfx&gt;seg&lt;/pfx&gt;
</del><ins>+            &lt;pfx&gt;rep seg&lt;/pfx&gt;
</ins><span class="cx">             &lt;opc&gt;ac&lt;/opc&gt;
</span><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="lines">@@ -4355,7 +4491,7 @@
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;lodsw&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><del>-            &lt;pfx&gt;seg oso rexw&lt;/pfx&gt;
</del><ins>+            &lt;pfx&gt;rep seg oso rexw&lt;/pfx&gt;
</ins><span class="cx">             &lt;opc&gt;ad /o=16&lt;/opc&gt;
</span><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="lines">@@ -4363,7 +4499,7 @@
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;lodsd&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><del>-            &lt;pfx&gt;seg oso rexw&lt;/pfx&gt;
</del><ins>+            &lt;pfx&gt;rep seg oso rexw&lt;/pfx&gt;
</ins><span class="cx">             &lt;opc&gt;ad /o=32&lt;/opc&gt;
</span><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="lines">@@ -4371,13 +4507,13 @@
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;lodsq&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><del>-            &lt;pfx&gt;seg oso rexw&lt;/pfx&gt;
</del><ins>+            &lt;pfx&gt;rep seg oso rexw&lt;/pfx&gt;
</ins><span class="cx">             &lt;opc&gt;ad /o=64&lt;/opc&gt;
</span><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="cx">     &lt;instruction&gt;
</span><del>-        &lt;mnemonic&gt;loopnz&lt;/mnemonic&gt;
</del><ins>+        &lt;mnemonic&gt;loopne&lt;/mnemonic&gt;
</ins><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;opc&gt;e0&lt;/opc&gt;
</span><span class="cx">             &lt;opr&gt;Jb&lt;/opr&gt;
</span><span class="lines">@@ -4422,26 +4558,28 @@
</span><span class="cx">         &lt;mnemonic&gt;maskmovq&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><del>-            &lt;opc&gt;0f f7&lt;/opc&gt;
-            &lt;opr&gt;P PR&lt;/opr&gt;
</del><ins>+            &lt;opc&gt;0f f7 /mod=11&lt;/opc&gt;
+            &lt;opr&gt;P N&lt;/opr&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;maxpd&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><del>-            &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
-            &lt;opc&gt;sse66 0f 5f&lt;/opc&gt;
-            &lt;opr&gt;V W&lt;/opr&gt;
</del><ins>+            &lt;pfx&gt;aso rexr rexx rexb vexl&lt;/pfx&gt;
+            &lt;opc&gt;/sse=66 0f 5f&lt;/opc&gt;
+            &lt;opr&gt;V H W&lt;/opr&gt;
+            &lt;cpuid&gt;sse2 avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;maxps&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><del>-            &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</del><ins>+            &lt;pfx&gt;aso rexr rexx rexb vexl&lt;/pfx&gt;
</ins><span class="cx">             &lt;opc&gt;0f 5f&lt;/opc&gt;
</span><del>-            &lt;opr&gt;V W&lt;/opr&gt;
</del><ins>+            &lt;opr&gt;V H W&lt;/opr&gt;
+            &lt;cpuid&gt;sse avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -4449,8 +4587,9 @@
</span><span class="cx">         &lt;mnemonic&gt;maxsd&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><del>-            &lt;opc&gt;ssef2 0f 5f&lt;/opc&gt;
-            &lt;opr&gt;V W&lt;/opr&gt;
</del><ins>+            &lt;opc&gt;/sse=f2 0f 5f&lt;/opc&gt;
+            &lt;opr&gt;V H W&lt;/opr&gt;
+            &lt;cpuid&gt;sse2 avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -4458,8 +4597,9 @@
</span><span class="cx">         &lt;mnemonic&gt;maxss&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><del>-            &lt;opc&gt;ssef3 0f 5f&lt;/opc&gt;
-            &lt;opr&gt;V W&lt;/opr&gt;
</del><ins>+            &lt;opc&gt;/sse=f3 0f 5f&lt;/opc&gt;
+            &lt;opr&gt;V H W&lt;/opr&gt;
+            &lt;cpuid&gt;sse avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -4494,9 +4634,10 @@
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;minpd&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><del>-            &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
-            &lt;opc&gt;sse66 0f 5d&lt;/opc&gt;
-            &lt;opr&gt;V W&lt;/opr&gt;
</del><ins>+            &lt;pfx&gt;aso rexr rexx rexb vexl&lt;/pfx&gt;
+            &lt;opc&gt;/sse=66 0f 5d&lt;/opc&gt;
+            &lt;opr&gt;V H W&lt;/opr&gt;
+            &lt;cpuid&gt;sse2 avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -4505,7 +4646,8 @@
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><span class="cx">             &lt;opc&gt;0f 5d&lt;/opc&gt;
</span><del>-            &lt;opr&gt;V W&lt;/opr&gt;
</del><ins>+            &lt;opr&gt;V H W&lt;/opr&gt;
+            &lt;cpuid&gt;sse2 avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -4513,8 +4655,9 @@
</span><span class="cx">         &lt;mnemonic&gt;minsd&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><del>-            &lt;opc&gt;ssef2 0f 5d&lt;/opc&gt;
-            &lt;opr&gt;V W&lt;/opr&gt;
</del><ins>+            &lt;opc&gt;/sse=f2 0f 5d&lt;/opc&gt;
+            &lt;opr&gt;V H MqU&lt;/opr&gt;
+            &lt;cpuid&gt;sse2 avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -4522,8 +4665,9 @@
</span><span class="cx">         &lt;mnemonic&gt;minss&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><del>-            &lt;opc&gt;ssef3 0f 5d&lt;/opc&gt;
-            &lt;opr&gt;V W&lt;/opr&gt;
</del><ins>+            &lt;opc&gt;/sse=f3 0f 5d&lt;/opc&gt;
+            &lt;opr&gt;V H MdU&lt;/opr&gt;
+            &lt;cpuid&gt;sse avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -4551,7 +4695,7 @@
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso oso rexw rexr rexx rexb&lt;/pfx&gt;
</span><span class="cx">             &lt;opc&gt;c7 /reg=0&lt;/opc&gt;
</span><del>-            &lt;opr&gt;Ev Iz&lt;/opr&gt;
</del><ins>+            &lt;opr&gt;Ev sIz&lt;/opr&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><span class="lines">@@ -4574,14 +4718,14 @@
</span><span class="cx">             &lt;opr&gt;Gv Ev&lt;/opr&gt;
</span><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><del>-            &lt;pfx&gt;aso oso rexr rexx rexb&lt;/pfx&gt;
</del><ins>+            &lt;pfx&gt;aso oso rexw rexr rexx rexb&lt;/pfx&gt;
</ins><span class="cx">             &lt;opc&gt;8c&lt;/opc&gt;
</span><del>-            &lt;opr&gt;Ev S&lt;/opr&gt;
</del><ins>+            &lt;opr&gt;MwRv S&lt;/opr&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><del>-            &lt;pfx&gt;aso oso rexr rexx rexb&lt;/pfx&gt;
</del><ins>+            &lt;pfx&gt;aso oso rexw rexr rexx rexb&lt;/pfx&gt;
</ins><span class="cx">             &lt;opc&gt;8e&lt;/opc&gt;
</span><del>-            &lt;opr&gt;S Ev&lt;/opr&gt;
</del><ins>+            &lt;opr&gt;S MwRv&lt;/opr&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;opc&gt;a0&lt;/opc&gt;
</span><span class="lines">@@ -4604,100 +4748,100 @@
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;rexb&lt;/pfx&gt;
</span><span class="cx">             &lt;opc&gt;b0&lt;/opc&gt;
</span><del>-            &lt;opr&gt;ALr8b Ib&lt;/opr&gt;
</del><ins>+            &lt;opr&gt;R0b Ib&lt;/opr&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;rexb&lt;/pfx&gt;
</span><span class="cx">             &lt;opc&gt;b1&lt;/opc&gt;
</span><del>-            &lt;opr&gt;CLr9b Ib&lt;/opr&gt;
</del><ins>+            &lt;opr&gt;R1b Ib&lt;/opr&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;rexb&lt;/pfx&gt;
</span><span class="cx">             &lt;opc&gt;b2&lt;/opc&gt;
</span><del>-            &lt;opr&gt;DLr10b Ib&lt;/opr&gt;
</del><ins>+            &lt;opr&gt;R2b Ib&lt;/opr&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;rexb&lt;/pfx&gt;
</span><span class="cx">             &lt;opc&gt;b3&lt;/opc&gt;
</span><del>-            &lt;opr&gt;BLr11b Ib&lt;/opr&gt;
</del><ins>+            &lt;opr&gt;R3b Ib&lt;/opr&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;rexb&lt;/pfx&gt;
</span><span class="cx">             &lt;opc&gt;b4&lt;/opc&gt;
</span><del>-            &lt;opr&gt;AHr12b Ib&lt;/opr&gt;
</del><ins>+            &lt;opr&gt;R4b Ib&lt;/opr&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;rexb&lt;/pfx&gt;
</span><span class="cx">             &lt;opc&gt;b5&lt;/opc&gt;
</span><del>-            &lt;opr&gt;CHr13b Ib&lt;/opr&gt;
</del><ins>+            &lt;opr&gt;R5b Ib&lt;/opr&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;rexb&lt;/pfx&gt;
</span><span class="cx">             &lt;opc&gt;b6&lt;/opc&gt;
</span><del>-            &lt;opr&gt;DHr14b Ib&lt;/opr&gt;
</del><ins>+            &lt;opr&gt;R6b Ib&lt;/opr&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;rexb&lt;/pfx&gt;
</span><span class="cx">             &lt;opc&gt;b7&lt;/opc&gt;
</span><del>-            &lt;opr&gt;BHr15b Ib&lt;/opr&gt;
</del><ins>+            &lt;opr&gt;R7b Ib&lt;/opr&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;oso rexw rexb&lt;/pfx&gt;
</span><span class="cx">             &lt;opc&gt;b8&lt;/opc&gt;
</span><del>-            &lt;opr&gt;rAXr8 Iv&lt;/opr&gt;
</del><ins>+            &lt;opr&gt;R0v Iv&lt;/opr&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;oso rexw rexb&lt;/pfx&gt;
</span><span class="cx">             &lt;opc&gt;b9&lt;/opc&gt;
</span><del>-            &lt;opr&gt;rCXr9 Iv&lt;/opr&gt;
</del><ins>+            &lt;opr&gt;R1v Iv&lt;/opr&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;oso rexw rexb&lt;/pfx&gt;
</span><span class="cx">             &lt;opc&gt;ba&lt;/opc&gt;
</span><del>-            &lt;opr&gt;rDXr10 Iv&lt;/opr&gt;
</del><ins>+            &lt;opr&gt;R2v Iv&lt;/opr&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;oso rexw rexb&lt;/pfx&gt;
</span><span class="cx">             &lt;opc&gt;bb&lt;/opc&gt;
</span><del>-            &lt;opr&gt;rBXr11 Iv&lt;/opr&gt;
</del><ins>+            &lt;opr&gt;R3v Iv&lt;/opr&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;oso rexw rexb&lt;/pfx&gt;
</span><span class="cx">             &lt;opc&gt;bc&lt;/opc&gt;
</span><del>-            &lt;opr&gt;rSPr12 Iv&lt;/opr&gt;
</del><ins>+            &lt;opr&gt;R4v Iv&lt;/opr&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;oso rexw rexb&lt;/pfx&gt;
</span><span class="cx">             &lt;opc&gt;bd&lt;/opc&gt;
</span><del>-            &lt;opr&gt;rBPr13 Iv&lt;/opr&gt;
</del><ins>+            &lt;opr&gt;R5v Iv&lt;/opr&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;oso rexw rexb&lt;/pfx&gt;
</span><span class="cx">             &lt;opc&gt;be&lt;/opc&gt;
</span><del>-            &lt;opr&gt;rSIr14 Iv&lt;/opr&gt;
</del><ins>+            &lt;opr&gt;R6v Iv&lt;/opr&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;oso rexw rexb&lt;/pfx&gt;
</span><span class="cx">             &lt;opc&gt;bf&lt;/opc&gt;
</span><del>-            &lt;opr&gt;rDIr15 Iv&lt;/opr&gt;
</del><ins>+            &lt;opr&gt;R7v Iv&lt;/opr&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><del>-            &lt;pfx&gt;rexr&lt;/pfx&gt;
</del><ins>+            &lt;pfx&gt;rexr rexw rexb&lt;/pfx&gt;
</ins><span class="cx">             &lt;opc&gt;0f 20&lt;/opc&gt;
</span><span class="cx">             &lt;opr&gt;R C&lt;/opr&gt;
</span><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><del>-            &lt;pfx&gt;rexr&lt;/pfx&gt;
</del><ins>+            &lt;pfx&gt;rexr rexw rexb&lt;/pfx&gt;
</ins><span class="cx">             &lt;opc&gt;0f 21&lt;/opc&gt;
</span><span class="cx">             &lt;opr&gt;R D&lt;/opr&gt;
</span><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><del>-            &lt;pfx&gt;rexr&lt;/pfx&gt;
</del><ins>+            &lt;pfx&gt;rexr rexw rexb&lt;/pfx&gt;
</ins><span class="cx">             &lt;opc&gt;0f 22&lt;/opc&gt;
</span><span class="cx">             &lt;opr&gt;C R&lt;/opr&gt;
</span><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><del>-            &lt;pfx&gt;rexr&lt;/pfx&gt;
</del><ins>+            &lt;pfx&gt;rexr rexw rexb&lt;/pfx&gt;
</ins><span class="cx">             &lt;opc&gt;0f 23&lt;/opc&gt;
</span><span class="cx">             &lt;opr&gt;D R&lt;/opr&gt;
</span><span class="cx">         &lt;/def&gt;
</span><span class="lines">@@ -4706,28 +4850,32 @@
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;movapd&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><del>-            &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
-            &lt;opc&gt;sse66 0f 28&lt;/opc&gt;
</del><ins>+            &lt;pfx&gt;aso rexr rexx rexb vexl&lt;/pfx&gt;
+            &lt;opc&gt;/sse=66 0f 28&lt;/opc&gt;
</ins><span class="cx">             &lt;opr&gt;V W&lt;/opr&gt;
</span><ins>+            &lt;cpuid&gt;sse2 avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><del>-            &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
-            &lt;opc&gt;sse66 0f 29&lt;/opc&gt;
</del><ins>+            &lt;pfx&gt;aso rexr rexx rexb vexl&lt;/pfx&gt;
+            &lt;opc&gt;/sse=66 0f 29&lt;/opc&gt;
</ins><span class="cx">             &lt;opr&gt;W V&lt;/opr&gt;
</span><ins>+            &lt;cpuid&gt;sse2 avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;movaps&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><del>-            &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</del><ins>+            &lt;pfx&gt;aso rexr rexx rexb vexl&lt;/pfx&gt;
</ins><span class="cx">             &lt;opc&gt;0f 28&lt;/opc&gt;
</span><span class="cx">             &lt;opr&gt;V W&lt;/opr&gt;
</span><ins>+            &lt;cpuid&gt;sse avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><del>-            &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</del><ins>+            &lt;pfx&gt;aso rexr rexx rexb vexl&lt;/pfx&gt;
</ins><span class="cx">             &lt;opc&gt;0f 29&lt;/opc&gt;
</span><span class="cx">             &lt;opr&gt;W V&lt;/opr&gt;
</span><ins>+            &lt;cpuid&gt;sse avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -4735,37 +4883,68 @@
</span><span class="cx">         &lt;mnemonic&gt;movd&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexw rexr rexx rexb&lt;/pfx&gt;
</span><del>-            &lt;opc&gt;sse66 0f 6e&lt;/opc&gt;
-            &lt;opr&gt;V Ex&lt;/opr&gt;
</del><ins>+            &lt;opc&gt;0f 6e /o=16&lt;/opc&gt;
+            &lt;opr&gt;P Ey&lt;/opr&gt;
+            &lt;cpuid&gt;mmx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><del>-            &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
-            &lt;opc&gt;0f 6e&lt;/opc&gt;
-            &lt;opr&gt;P Ex&lt;/opr&gt;
</del><ins>+            &lt;pfx&gt;aso rexw rexr rexx rexb&lt;/pfx&gt;
+            &lt;opc&gt;0f 6e /o=32&lt;/opc&gt;
+            &lt;opr&gt;P Ey&lt;/opr&gt;
+            &lt;cpuid&gt;mmx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><ins>+
</ins><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexw rexr rexx rexb&lt;/pfx&gt;
</span><del>-            &lt;opc&gt;sse66 0f 7e&lt;/opc&gt;
-            &lt;opr&gt;Ex V&lt;/opr&gt;
</del><ins>+            &lt;opc&gt;/sse=66 0f 6e /o=16&lt;/opc&gt;
+            &lt;opr&gt;V Ey&lt;/opr&gt;
+            &lt;cpuid&gt;sse2 avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><del>-            &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
-            &lt;opc&gt;0f 7e&lt;/opc&gt;
-            &lt;opr&gt;Ex P&lt;/opr&gt;
</del><ins>+            &lt;pfx&gt;aso rexw rexr rexx rexb&lt;/pfx&gt;
+            &lt;opc&gt;/sse=66 0f 6e /o=32&lt;/opc&gt;
+            &lt;opr&gt;V Ey&lt;/opr&gt;
+            &lt;cpuid&gt;sse2 avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><ins>+        &lt;def&gt;
+            &lt;pfx&gt;aso rexw rexr rexx rexb&lt;/pfx&gt;
+            &lt;opc&gt;0f 7e /o=16&lt;/opc&gt;
+            &lt;opr&gt;Ey P&lt;/opr&gt;
+            &lt;cpuid&gt;mmx&lt;/cpuid&gt;
+        &lt;/def&gt;
+        &lt;def&gt;
+            &lt;pfx&gt;aso rexw rexr rexx rexb&lt;/pfx&gt;
+            &lt;opc&gt;0f 7e /o=32&lt;/opc&gt;
+            &lt;opr&gt;Ey P&lt;/opr&gt;
+            &lt;cpuid&gt;mmx&lt;/cpuid&gt;
+        &lt;/def&gt;
+        &lt;def&gt;
+            &lt;pfx&gt;aso rexw rexr rexx rexb&lt;/pfx&gt;
+            &lt;opc&gt;/sse=66 0f 7e /o=16&lt;/opc&gt;
+            &lt;opr&gt;Ey V&lt;/opr&gt;
+            &lt;cpuid&gt;sse2 avx&lt;/cpuid&gt;
+        &lt;/def&gt;
+        &lt;def&gt;
+            &lt;pfx&gt;aso rexw rexr rexx rexb&lt;/pfx&gt;
+            &lt;opc&gt;/sse=66 0f 7e /o=32&lt;/opc&gt;
+            &lt;opr&gt;Ey V&lt;/opr&gt;
+            &lt;cpuid&gt;sse2 avx&lt;/cpuid&gt;
+        &lt;/def&gt;
</ins><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;movhpd&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><del>-            &lt;opc&gt;sse66 0f 16 /mod=!11&lt;/opc&gt;
-            &lt;opr&gt;V M&lt;/opr&gt;
</del><ins>+            &lt;opc&gt;/sse=66 0f 16 /mod=!11&lt;/opc&gt;
+            &lt;opr&gt;V H M&lt;/opr&gt;
+            &lt;cpuid&gt;sse2 avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><del>-            &lt;opc&gt;sse66 0f 17&lt;/opc&gt;
</del><ins>+            &lt;opc&gt;/sse=66 0f 17&lt;/opc&gt;
</ins><span class="cx">             &lt;opr&gt;M V&lt;/opr&gt;
</span><ins>+            &lt;cpuid&gt;sse2 avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -4774,12 +4953,14 @@
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><span class="cx">             &lt;opc&gt;0f 16 /mod=!11&lt;/opc&gt;
</span><del>-            &lt;opr&gt;V M&lt;/opr&gt;
</del><ins>+            &lt;opr&gt;V H M&lt;/opr&gt;
+            &lt;cpuid&gt;sse avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><span class="cx">             &lt;opc&gt;0f 17&lt;/opc&gt;
</span><span class="cx">             &lt;opr&gt;M V&lt;/opr&gt;
</span><ins>+            &lt;cpuid&gt;sse avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -4788,7 +4969,8 @@
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><span class="cx">             &lt;opc&gt;0f 16 /mod=11&lt;/opc&gt;
</span><del>-            &lt;opr&gt;V VR&lt;/opr&gt;
</del><ins>+            &lt;opr&gt;V H U&lt;/opr&gt;
+            &lt;cpuid&gt;sse avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -4796,14 +4978,15 @@
</span><span class="cx">         &lt;mnemonic&gt;movlpd&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><del>-            &lt;opc&gt;sse66 0f 12 /mod=!11&lt;/opc&gt;
</del><ins>+            &lt;opc&gt;/sse=66 0f 12 /mod=!11&lt;/opc&gt;
</ins><span class="cx">             &lt;opr&gt;V M&lt;/opr&gt;
</span><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><del>-            &lt;opc&gt;sse66 0f 13&lt;/opc&gt;
</del><ins>+            &lt;opc&gt;/sse=66 0f 13&lt;/opc&gt;
</ins><span class="cx">             &lt;opr&gt;M V&lt;/opr&gt;
</span><span class="cx">         &lt;/def&gt;
</span><ins>+        &lt;cpuid&gt;sse2 avx&lt;/cpuid&gt;
</ins><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="cx">     &lt;instruction&gt;
</span><span class="lines">@@ -4818,6 +5001,7 @@
</span><span class="cx">             &lt;opc&gt;0f 13&lt;/opc&gt;
</span><span class="cx">             &lt;opr&gt;M V&lt;/opr&gt;
</span><span class="cx">         &lt;/def&gt;
</span><ins>+        &lt;cpuid&gt;sse avx&lt;/cpuid&gt;
</ins><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="cx">     &lt;instruction&gt;
</span><span class="lines">@@ -4825,16 +5009,18 @@
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><span class="cx">             &lt;opc&gt;0f 12 /mod=11&lt;/opc&gt;
</span><del>-            &lt;opr&gt;V VR&lt;/opr&gt;
</del><ins>+            &lt;opr&gt;V U&lt;/opr&gt;
+            &lt;cpuid&gt;sse avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;movmskpd&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><del>-            &lt;pfx&gt;oso rexr rexb&lt;/pfx&gt;
-            &lt;opc&gt;sse66 0f 50&lt;/opc&gt;
-            &lt;opr&gt;Gd VR&lt;/opr&gt;
</del><ins>+            &lt;pfx&gt;oso rexr rexb vexl&lt;/pfx&gt;
+            &lt;opc&gt;/sse=66 0f 50&lt;/opc&gt;
+            &lt;opr&gt;Gd U&lt;/opr&gt;
+            &lt;cpuid&gt;sse2 avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -4843,16 +5029,18 @@
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;oso rexr rexb&lt;/pfx&gt;
</span><span class="cx">             &lt;opc&gt;0f 50&lt;/opc&gt;
</span><del>-            &lt;opr&gt;Gd VR&lt;/opr&gt;
</del><ins>+            &lt;opr&gt;Gd U&lt;/opr&gt;
+            &lt;cpuid&gt;sse2 avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;movntdq&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><del>-            &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
-            &lt;opc&gt;sse66 0f e7&lt;/opc&gt;
</del><ins>+            &lt;pfx&gt;aso rexr rexx rexb vexl&lt;/pfx&gt;
+            &lt;opc&gt;/sse=66 0f e7&lt;/opc&gt;
</ins><span class="cx">             &lt;opr&gt;M V&lt;/opr&gt;
</span><ins>+            &lt;cpuid&gt;sse2 avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -4868,24 +5056,27 @@
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;movntpd&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><del>-            &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
-            &lt;opc&gt;sse66 0f 2b&lt;/opc&gt;
</del><ins>+            &lt;pfx&gt;aso rexr rexx rexb vexl&lt;/pfx&gt;
+            &lt;opc&gt;/sse=66 0f 2b&lt;/opc&gt;
</ins><span class="cx">             &lt;opr&gt;M V&lt;/opr&gt;
</span><ins>+            &lt;cpuid&gt;sse2 avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;movntps&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><del>-            &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</del><ins>+            &lt;pfx&gt;aso rexr rexx rexb vexl&lt;/pfx&gt;
</ins><span class="cx">             &lt;opc&gt;0f 2b&lt;/opc&gt;
</span><span class="cx">             &lt;opr&gt;M V&lt;/opr&gt;
</span><ins>+            &lt;cpuid&gt;sse2 avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;movntq&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><ins>+            &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</ins><span class="cx">             &lt;opc&gt;0f e7&lt;/opc&gt;
</span><span class="cx">             &lt;opr&gt;M P&lt;/opr&gt;
</span><span class="cx">         &lt;/def&gt;
</span><span class="lines">@@ -4894,31 +5085,59 @@
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;movq&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><del>-            &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
-            &lt;opc&gt;0f 6f&lt;/opc&gt;
-            &lt;opr&gt;P Q&lt;/opr&gt;
</del><ins>+            &lt;pfx&gt;aso rexw rexr rexx rexb&lt;/pfx&gt;
+            &lt;opc&gt;0f 6e /o=64&lt;/opc&gt;
+            &lt;opr&gt;P Eq&lt;/opr&gt;
+            &lt;cpuid&gt;mmx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><del>-            &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
-            &lt;opc&gt;sse66 0f d6&lt;/opc&gt;
-            &lt;opr&gt;W V&lt;/opr&gt;
</del><ins>+            &lt;pfx&gt;aso rexw rexr rexx rexb&lt;/pfx&gt;
+            &lt;opc&gt;/sse=66 0f 6e /o=64&lt;/opc&gt;
+            &lt;opr&gt;V Eq&lt;/opr&gt;
+            &lt;cpuid&gt;sse2 avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><del>-            &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
-            &lt;opc&gt;ssef3 0f 7e&lt;/opc&gt;
</del><ins>+            &lt;pfx&gt;aso rexw rexr rexx rexb&lt;/pfx&gt;
+            &lt;opc&gt;0f 7e /o=64&lt;/opc&gt;
+            &lt;opr&gt;Eq P&lt;/opr&gt;
+            &lt;cpuid&gt;mmx&lt;/cpuid&gt;
+        &lt;/def&gt;
+        &lt;def&gt;
+            &lt;pfx&gt;aso rexw rexr rexx rexb&lt;/pfx&gt;
+            &lt;opc&gt;/sse=66 0f 7e /o=64&lt;/opc&gt;
+            &lt;opr&gt;Eq V&lt;/opr&gt;
+            &lt;cpuid&gt;sse2 avx&lt;/cpuid&gt;
+        &lt;/def&gt;
+        &lt;def&gt;
+            &lt;pfx&gt;aso rexw rexr rexx rexb&lt;/pfx&gt;
+            &lt;opc&gt;/sse=f3 0f 7e&lt;/opc&gt;
</ins><span class="cx">             &lt;opr&gt;V W&lt;/opr&gt;
</span><ins>+            &lt;cpuid&gt;sse2 avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><del>-            &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</del><ins>+            &lt;pfx&gt;aso rexw rexr rexx rexb&lt;/pfx&gt;
+            &lt;opc&gt;/sse=66 0f d6&lt;/opc&gt;
+            &lt;opr&gt;W V&lt;/opr&gt;
+            &lt;cpuid&gt;sse2 avx&lt;/cpuid&gt;
+        &lt;/def&gt;
+        &lt;def&gt;
+            &lt;pfx&gt;aso rexw rexr rexx rexb&lt;/pfx&gt;
+            &lt;opc&gt;0f 6f&lt;/opc&gt;
+            &lt;opr&gt;P Q&lt;/opr&gt;
+            &lt;cpuid&gt;mmx&lt;/cpuid&gt;
+        &lt;/def&gt;
+        &lt;def&gt;
+            &lt;pfx&gt;aso rexw rexr rexx rexb&lt;/pfx&gt;
</ins><span class="cx">             &lt;opc&gt;0f 7f&lt;/opc&gt;
</span><span class="cx">             &lt;opr&gt;Q P&lt;/opr&gt;
</span><ins>+            &lt;cpuid&gt;mmx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;movsb&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><del>-            &lt;pfx&gt;seg&lt;/pfx&gt;
</del><ins>+            &lt;pfx&gt;rep seg&lt;/pfx&gt;
</ins><span class="cx">             &lt;opc&gt;a4&lt;/opc&gt;
</span><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="lines">@@ -4926,7 +5145,7 @@
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;movsw&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><del>-            &lt;pfx&gt;seg oso rexw&lt;/pfx&gt;
</del><ins>+            &lt;pfx&gt;rep seg oso rexw&lt;/pfx&gt;
</ins><span class="cx">             &lt;opc&gt;a5 /o=16&lt;/opc&gt;
</span><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="lines">@@ -4934,25 +5153,27 @@
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;movsd&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><del>-            &lt;pfx&gt;seg oso rexw&lt;/pfx&gt;
</del><ins>+            &lt;pfx&gt;rep seg oso rexw&lt;/pfx&gt;
</ins><span class="cx">             &lt;opc&gt;a5 /o=32&lt;/opc&gt;
</span><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><del>-            &lt;opc&gt;ssef2 0f 10&lt;/opc&gt;
-            &lt;opr&gt;V W&lt;/opr&gt;
</del><ins>+            &lt;opc&gt;/sse=f2 0f 10&lt;/opc&gt;
+            &lt;opr&gt;V MqU&lt;/opr&gt;
+            &lt;cpuid&gt;sse2&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><del>-            &lt;opc&gt;ssef2 0f 11&lt;/opc&gt;
</del><ins>+            &lt;opc&gt;/sse=f2 0f 11&lt;/opc&gt;
</ins><span class="cx">             &lt;opr&gt;W V&lt;/opr&gt;
</span><ins>+            &lt;cpuid&gt;sse2&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;movsq&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><del>-            &lt;pfx&gt;seg oso rexw&lt;/pfx&gt;
</del><ins>+            &lt;pfx&gt;rep seg oso rexw&lt;/pfx&gt;
</ins><span class="cx">             &lt;opc&gt;a5 /o=64&lt;/opc&gt;
</span><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="lines">@@ -4961,13 +5182,15 @@
</span><span class="cx">         &lt;mnemonic&gt;movss&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><del>-            &lt;opc&gt;ssef3 0f 10&lt;/opc&gt;
-            &lt;opr&gt;V W&lt;/opr&gt;
</del><ins>+            &lt;opc&gt;/sse=f3 0f 10&lt;/opc&gt;
+            &lt;opr&gt;V MdU&lt;/opr&gt;
+            &lt;cpuid&gt;sse&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><del>-            &lt;opc&gt;ssef3 0f 11&lt;/opc&gt;
</del><ins>+            &lt;opc&gt;/sse=f3 0f 11&lt;/opc&gt;
</ins><span class="cx">             &lt;opr&gt;W V&lt;/opr&gt;
</span><ins>+            &lt;cpuid&gt;sse&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -4981,35 +5204,39 @@
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso oso rexw rexr rexx rexb&lt;/pfx&gt;
</span><span class="cx">             &lt;opc&gt;0f bf&lt;/opc&gt;
</span><del>-            &lt;opr&gt;Gv Ew&lt;/opr&gt;
</del><ins>+            &lt;opr&gt;Gy Ew&lt;/opr&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;movupd&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><del>-            &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
-            &lt;opc&gt;sse66 0f 10&lt;/opc&gt;
</del><ins>+            &lt;pfx&gt;aso rexr rexx rexb vexl&lt;/pfx&gt;
+            &lt;opc&gt;/sse=66 0f 10&lt;/opc&gt;
</ins><span class="cx">             &lt;opr&gt;V W&lt;/opr&gt;
</span><ins>+            &lt;cpuid&gt;sse2 avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><del>-            &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
-            &lt;opc&gt;sse66 0f 11&lt;/opc&gt;
</del><ins>+            &lt;pfx&gt;aso rexr rexx rexb vexl&lt;/pfx&gt;
+            &lt;opc&gt;/sse=66 0f 11&lt;/opc&gt;
</ins><span class="cx">             &lt;opr&gt;W V&lt;/opr&gt;
</span><ins>+            &lt;cpuid&gt;sse2 avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;movups&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><del>-            &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</del><ins>+            &lt;pfx&gt;aso rexr rexx rexb vexl&lt;/pfx&gt;
</ins><span class="cx">             &lt;opc&gt;0f 10&lt;/opc&gt;
</span><span class="cx">             &lt;opr&gt;V W&lt;/opr&gt;
</span><ins>+            &lt;cpuid&gt;sse2 avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><del>-            &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</del><ins>+            &lt;pfx&gt;aso rexr rexx rexb vexl&lt;/pfx&gt;
</ins><span class="cx">             &lt;opc&gt;0f 11&lt;/opc&gt;
</span><span class="cx">             &lt;opr&gt;W V&lt;/opr&gt;
</span><ins>+            &lt;cpuid&gt;sse2 avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -5023,7 +5250,7 @@
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso oso rexw rexr rexx rexb&lt;/pfx&gt;
</span><span class="cx">             &lt;opc&gt;0f b7&lt;/opc&gt;
</span><del>-            &lt;opr&gt;Gv Ew&lt;/opr&gt;
</del><ins>+            &lt;opr&gt;Gy Ew&lt;/opr&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -5044,18 +5271,20 @@
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;mulpd&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><del>-            &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
-            &lt;opc&gt;sse66 0f 59&lt;/opc&gt;
-            &lt;opr&gt;V W&lt;/opr&gt;
</del><ins>+            &lt;pfx&gt;aso rexr rexx rexb vexl&lt;/pfx&gt;
+            &lt;opc&gt;/sse=66 0f 59&lt;/opc&gt;
+            &lt;opr&gt;V H W&lt;/opr&gt;
+            &lt;cpuid&gt;sse2 avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;mulps&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><del>-            &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</del><ins>+            &lt;pfx&gt;aso rexr rexx rexb vexl&lt;/pfx&gt;
</ins><span class="cx">             &lt;opc&gt;0f 59&lt;/opc&gt;
</span><del>-            &lt;opr&gt;V W&lt;/opr&gt;
</del><ins>+            &lt;opr&gt;V H W&lt;/opr&gt;
+            &lt;cpuid&gt;sse2 avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -5063,8 +5292,9 @@
</span><span class="cx">         &lt;mnemonic&gt;mulsd&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><del>-            &lt;opc&gt;ssef2 0f 59&lt;/opc&gt;
-            &lt;opr&gt;V W&lt;/opr&gt;
</del><ins>+            &lt;opc&gt;/sse=f2 0f 59&lt;/opc&gt;
+            &lt;opr&gt;V H W&lt;/opr&gt;
+            &lt;cpuid&gt;sse2 avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -5072,8 +5302,9 @@
</span><span class="cx">         &lt;mnemonic&gt;mulss&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><del>-            &lt;opc&gt;ssef3 0f 59&lt;/opc&gt;
-            &lt;opr&gt;V W&lt;/opr&gt;
</del><ins>+            &lt;opc&gt;/sse=f3 0f 59&lt;/opc&gt;
+            &lt;opr&gt;V H W&lt;/opr&gt;
+            &lt;cpuid&gt;sse avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -5101,9 +5332,6 @@
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;nop&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><del>-            &lt;opc&gt;90&lt;/opc&gt;
-        &lt;/def&gt;
-        &lt;def&gt;
</del><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><span class="cx">             &lt;opc&gt;0f 19&lt;/opc&gt;
</span><span class="cx">             &lt;opr&gt;M&lt;/opr&gt;
</span><span class="lines">@@ -5183,8 +5411,7 @@
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;oso rexw&lt;/pfx&gt;
</span><span class="cx">             &lt;opc&gt;0d&lt;/opc&gt;
</span><del>-            &lt;opr&gt;rAX Iz&lt;/opr&gt;
-            &lt;syn&gt;sext&lt;/syn&gt;
</del><ins>+            &lt;opr&gt;rAX sIz&lt;/opr&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><span class="lines">@@ -5194,38 +5421,37 @@
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso oso rexw rexr rexx rexb&lt;/pfx&gt;
</span><span class="cx">             &lt;opc&gt;81 /reg=1&lt;/opc&gt;
</span><del>-            &lt;opr&gt;Ev Iz&lt;/opr&gt;
-            &lt;syn&gt;sext&lt;/syn&gt;
</del><ins>+            &lt;opr&gt;Ev sIz&lt;/opr&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><del>-            &lt;opc&gt;82 /reg=1&lt;/opc&gt;
</del><ins>+            &lt;opc&gt;82 /reg=1 /m=!64&lt;/opc&gt;
</ins><span class="cx">             &lt;opr&gt;Eb Ib&lt;/opr&gt;
</span><del>-            &lt;mode&gt;inv64&lt;/mode&gt;
</del><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso oso rexw rexr rexx rexb&lt;/pfx&gt;
</span><span class="cx">             &lt;opc&gt;83 /reg=1&lt;/opc&gt;
</span><del>-            &lt;opr&gt;Ev Ib&lt;/opr&gt;
-            &lt;syn&gt;sext&lt;/syn&gt;
</del><ins>+            &lt;opr&gt;Ev sIb&lt;/opr&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;orpd&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><del>-            &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
-            &lt;opc&gt;sse66 0f 56&lt;/opc&gt;
-            &lt;opr&gt;V W&lt;/opr&gt;
</del><ins>+            &lt;pfx&gt;aso rexr rexx rexb vexl&lt;/pfx&gt;
+            &lt;opc&gt;/sse=66 0f 56&lt;/opc&gt;
+            &lt;opr&gt;V H W&lt;/opr&gt;
+            &lt;cpuid&gt;sse2 avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;orps&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><del>-            &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</del><ins>+            &lt;pfx&gt;aso rexr rexx rexb vexl&lt;/pfx&gt;
</ins><span class="cx">             &lt;opc&gt;0f 56&lt;/opc&gt;
</span><del>-            &lt;opr&gt;V W&lt;/opr&gt;
</del><ins>+            &lt;opr&gt;V H W&lt;/opr&gt;
+            &lt;cpuid&gt;sse avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -5254,6 +5480,7 @@
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;outsb&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><ins>+            &lt;pfx&gt;rep seg&lt;/pfx&gt;
</ins><span class="cx">             &lt;opc&gt;6e&lt;/opc&gt;
</span><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="lines">@@ -5261,7 +5488,7 @@
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;outsw&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><del>-            &lt;pfx&gt;oso&lt;/pfx&gt;
</del><ins>+            &lt;pfx&gt;rep oso seg&lt;/pfx&gt;
</ins><span class="cx">             &lt;opc&gt;6f /o=16&lt;/opc&gt;
</span><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="lines">@@ -5269,72 +5496,72 @@
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;outsd&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><del>-            &lt;pfx&gt;oso&lt;/pfx&gt;
</del><ins>+            &lt;pfx&gt;rep oso seg&lt;/pfx&gt;
</ins><span class="cx">             &lt;opc&gt;6f /o=32&lt;/opc&gt;
</span><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="cx">     &lt;instruction&gt;
</span><del>-        &lt;mnemonic&gt;outsq&lt;/mnemonic&gt;
-        &lt;def&gt;
-            &lt;pfx&gt;oso&lt;/pfx&gt;
-            &lt;opc&gt;6f /o=64&lt;/opc&gt;
-        &lt;/def&gt;
-    &lt;/instruction&gt;
-
-    &lt;instruction&gt;
</del><span class="cx">         &lt;mnemonic&gt;packsswb&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><del>-            &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
-            &lt;opc&gt;sse66 0f 63&lt;/opc&gt;
-            &lt;opr&gt;V W&lt;/opr&gt;
</del><ins>+            &lt;pfx&gt;aso rexr rexx rexb vexl&lt;/pfx&gt;
+            &lt;opc&gt;/sse=66 0f 63&lt;/opc&gt;
+            &lt;opr&gt;V H W&lt;/opr&gt;
+            &lt;cpuid&gt;sse2 avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><span class="cx">             &lt;opc&gt;0f 63&lt;/opc&gt;
</span><span class="cx">             &lt;opr&gt;P Q&lt;/opr&gt;
</span><ins>+            &lt;cpuid&gt;mmx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;packssdw&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><del>-            &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
-            &lt;opc&gt;sse66 0f 6b&lt;/opc&gt;
-            &lt;opr&gt;V W&lt;/opr&gt;
</del><ins>+            &lt;pfx&gt;aso rexr rexx rexb vexl&lt;/pfx&gt;
+            &lt;opc&gt;/sse=66 0f 6b&lt;/opc&gt;
+            &lt;opr&gt;V H W&lt;/opr&gt;
+            &lt;cpuid&gt;sse2 avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><span class="cx">             &lt;opc&gt;0f 6b&lt;/opc&gt;
</span><span class="cx">             &lt;opr&gt;P Q&lt;/opr&gt;
</span><ins>+            &lt;cpuid&gt;mmx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;packuswb&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><del>-            &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
-            &lt;opc&gt;sse66 0f 67&lt;/opc&gt;
-            &lt;opr&gt;V W&lt;/opr&gt;
</del><ins>+            &lt;pfx&gt;aso rexr rexx rexb vexl&lt;/pfx&gt;
+            &lt;opc&gt;/sse=66 0f 67&lt;/opc&gt;
+            &lt;opr&gt;V H W&lt;/opr&gt;
+            &lt;cpuid&gt;sse2 avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><span class="cx">             &lt;opc&gt;0f 67&lt;/opc&gt;
</span><span class="cx">             &lt;opr&gt;P Q&lt;/opr&gt;
</span><ins>+            &lt;cpuid&gt;mmx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;paddb&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><del>-            &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
-            &lt;opc&gt;sse66 0f fc&lt;/opc&gt;
-            &lt;opr&gt;V W&lt;/opr&gt;
</del><ins>+            &lt;pfx&gt;aso rexr rexx rexb vexl&lt;/pfx&gt;
+            &lt;opc&gt;/sse=66 0f fc&lt;/opc&gt;
+            &lt;opr&gt;V H W&lt;/opr&gt;
+            &lt;cpuid&gt;sse2 avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><span class="cx">             &lt;opc&gt;0f fc&lt;/opc&gt;
</span><span class="cx">             &lt;opr&gt;P Q&lt;/opr&gt;
</span><ins>+            &lt;cpuid&gt;mmx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -5344,11 +5571,13 @@
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><span class="cx">             &lt;opc&gt;0f fd&lt;/opc&gt;
</span><span class="cx">             &lt;opr&gt;P Q&lt;/opr&gt;
</span><ins>+            &lt;cpuid&gt;mmx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><del>-            &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
-            &lt;opc&gt;sse66 0f fd&lt;/opc&gt;
-            &lt;opr&gt;V W&lt;/opr&gt;
</del><ins>+            &lt;pfx&gt;aso rexr rexx rexb vexl&lt;/pfx&gt;
+            &lt;opc&gt;/sse=66 0f fd&lt;/opc&gt;
+            &lt;opr&gt;V H W&lt;/opr&gt;
+            &lt;cpuid&gt;sse2 avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -5358,11 +5587,13 @@
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><span class="cx">             &lt;opc&gt;0f fe&lt;/opc&gt;
</span><span class="cx">             &lt;opr&gt;P Q&lt;/opr&gt;
</span><ins>+            &lt;cpuid&gt;mmx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><del>-            &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
-            &lt;opc&gt;sse66 0f fe&lt;/opc&gt;
-            &lt;opr&gt;V W&lt;/opr&gt;
</del><ins>+            &lt;pfx&gt;aso rexr rexx rexb vexl&lt;/pfx&gt;
+            &lt;opc&gt;/sse=66 0f fe&lt;/opc&gt;
+            &lt;opr&gt;V H W&lt;/opr&gt;
+            &lt;cpuid&gt;sse2 avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -5376,8 +5607,9 @@
</span><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><del>-            &lt;opc&gt;sse66 0f ec&lt;/opc&gt;
-            &lt;opr&gt;V W&lt;/opr&gt;
</del><ins>+            &lt;opc&gt;/sse=66 0f ec&lt;/opc&gt;
+            &lt;opr&gt;V H W&lt;/opr&gt;
+            &lt;cpuid&gt;sse2 avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -5390,8 +5622,9 @@
</span><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><del>-            &lt;opc&gt;sse66 0f ed&lt;/opc&gt;
-            &lt;opr&gt;V W&lt;/opr&gt;
</del><ins>+            &lt;opc&gt;/sse=66 0f ed&lt;/opc&gt;
+            &lt;opr&gt;V H W&lt;/opr&gt;
+            &lt;cpuid&gt;sse2 avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -5404,8 +5637,9 @@
</span><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><del>-            &lt;opc&gt;sse66 0f dc&lt;/opc&gt;
-            &lt;opr&gt;V W&lt;/opr&gt;
</del><ins>+            &lt;opc&gt;/sse=66 0f dc&lt;/opc&gt;
+            &lt;opr&gt;V H W&lt;/opr&gt;
+            &lt;cpuid&gt;sse2 avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -5418,8 +5652,9 @@
</span><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><del>-            &lt;opc&gt;sse66 0f dd&lt;/opc&gt;
-            &lt;opr&gt;V W&lt;/opr&gt;
</del><ins>+            &lt;opc&gt;/sse=66 0f dd&lt;/opc&gt;
+            &lt;opr&gt;V H W&lt;/opr&gt;
+            &lt;cpuid&gt;sse2 avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -5427,8 +5662,9 @@
</span><span class="cx">         &lt;mnemonic&gt;pand&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><del>-            &lt;opc&gt;sse66 0f db&lt;/opc&gt;
-            &lt;opr&gt;V W&lt;/opr&gt;
</del><ins>+            &lt;opc&gt;/sse=66 0f db&lt;/opc&gt;
+            &lt;opr&gt;V H W&lt;/opr&gt;
+            &lt;cpuid&gt;sse2 avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><span class="lines">@@ -5441,8 +5677,9 @@
</span><span class="cx">         &lt;mnemonic&gt;pandn&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><del>-            &lt;opc&gt;sse66 0f df&lt;/opc&gt;
-            &lt;opr&gt;V W&lt;/opr&gt;
</del><ins>+            &lt;opc&gt;/sse=66 0f df&lt;/opc&gt;
+            &lt;opr&gt;V H W&lt;/opr&gt;
+            &lt;cpuid&gt;sse2 avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><span class="lines">@@ -5455,8 +5692,9 @@
</span><span class="cx">         &lt;mnemonic&gt;pavgb&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><del>-            &lt;opc&gt;sse66 0f e0&lt;/opc&gt;
-            &lt;opr&gt;V W&lt;/opr&gt;
</del><ins>+            &lt;opc&gt;/sse=66 0f e0&lt;/opc&gt;
+            &lt;opr&gt;V H W&lt;/opr&gt;
+            &lt;cpuid&gt;sse2 avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><span class="lines">@@ -5469,8 +5707,9 @@
</span><span class="cx">         &lt;mnemonic&gt;pavgw&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><del>-            &lt;opc&gt;sse66 0f e3&lt;/opc&gt;
-            &lt;opr&gt;V W&lt;/opr&gt;
</del><ins>+            &lt;opc&gt;/sse=66 0f e3&lt;/opc&gt;
+            &lt;opr&gt;V H W&lt;/opr&gt;
+            &lt;cpuid&gt;sse2 avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><span class="lines">@@ -5488,8 +5727,9 @@
</span><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><del>-            &lt;opc&gt;sse66 0f 74&lt;/opc&gt;
-            &lt;opr&gt;V W&lt;/opr&gt;
</del><ins>+            &lt;opc&gt;/sse=66 0f 74&lt;/opc&gt;
+            &lt;opr&gt;V H W&lt;/opr&gt;
+            &lt;cpuid&gt;sse2 avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -5502,8 +5742,9 @@
</span><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><del>-            &lt;opc&gt;sse66 0f 75&lt;/opc&gt;
-            &lt;opr&gt;V W&lt;/opr&gt;
</del><ins>+            &lt;opc&gt;/sse=66 0f 75&lt;/opc&gt;
+            &lt;opr&gt;V H W&lt;/opr&gt;
+            &lt;cpuid&gt;sse2 avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -5516,8 +5757,9 @@
</span><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><del>-            &lt;opc&gt;sse66 0f 76&lt;/opc&gt;
-            &lt;opr&gt;V W&lt;/opr&gt;
</del><ins>+            &lt;opc&gt;/sse=66 0f 76&lt;/opc&gt;
+            &lt;opr&gt;V H W&lt;/opr&gt;
+            &lt;cpuid&gt;sse2 avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -5525,8 +5767,9 @@
</span><span class="cx">         &lt;mnemonic&gt;pcmpgtb&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><del>-            &lt;opc&gt;sse66 0f 64&lt;/opc&gt;
-            &lt;opr&gt;V W&lt;/opr&gt;
</del><ins>+            &lt;opc&gt;/sse=66 0f 64&lt;/opc&gt;
+            &lt;opr&gt;V H W&lt;/opr&gt;
+            &lt;cpuid&gt;sse2 avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><span class="lines">@@ -5539,8 +5782,9 @@
</span><span class="cx">         &lt;mnemonic&gt;pcmpgtw&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><del>-            &lt;opc&gt;sse66 0f 65&lt;/opc&gt;
-            &lt;opr&gt;V W&lt;/opr&gt;
</del><ins>+            &lt;opc&gt;/sse=66 0f 65&lt;/opc&gt;
+            &lt;opr&gt;V H W&lt;/opr&gt;
+            &lt;cpuid&gt;sse2 avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><span class="lines">@@ -5553,8 +5797,9 @@
</span><span class="cx">         &lt;mnemonic&gt;pcmpgtd&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><del>-            &lt;opc&gt;sse66 0f 66&lt;/opc&gt;
-            &lt;opr&gt;V W&lt;/opr&gt;
</del><ins>+            &lt;opc&gt;/sse=66 0f 66&lt;/opc&gt;
+            &lt;opr&gt;V H W&lt;/opr&gt;
+            &lt;cpuid&gt;sse2 avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><span class="lines">@@ -5566,24 +5811,27 @@
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;pextrb&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><del>-            &lt;pfx&gt;aso rexr rexb&lt;/pfx&gt;
-            &lt;opc&gt;sse66 0f 3a 14&lt;/opc&gt;
</del><ins>+            &lt;pfx&gt;aso rexx rexr rexb&lt;/pfx&gt;
+            &lt;opc&gt;/sse=66 0f 3a 14 /vexw=0&lt;/opc&gt;
</ins><span class="cx">             &lt;opr&gt;MbRv V Ib&lt;/opr&gt;
</span><span class="cx">             &lt;mode&gt;def64&lt;/mode&gt;
</span><ins>+            &lt;cpuid&gt;sse4.1 avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;pextrd&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><del>-            &lt;pfx&gt;aso rexr rexw rexb&lt;/pfx&gt;
-            &lt;opc&gt;sse66 0f 3a 16 /o=16&lt;/opc&gt;
-            &lt;opr&gt;Ev V Ib&lt;/opr&gt;
</del><ins>+            &lt;pfx&gt;aso rexr rexx rexw rexb&lt;/pfx&gt;
+            &lt;opc&gt;/sse=66 0f 3a 16 /o=16 /vexw=0&lt;/opc&gt;
+            &lt;opr&gt;Ed V Ib&lt;/opr&gt;
+            &lt;cpuid&gt;sse4.1 avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><del>-            &lt;pfx&gt;aso rexr rexw rexb&lt;/pfx&gt;
-            &lt;opc&gt;sse66 0f 3a 16 /o=32&lt;/opc&gt;
-            &lt;opr&gt;Ev V Ib&lt;/opr&gt;
</del><ins>+            &lt;pfx&gt;aso rexr rexx rexw rexb&lt;/pfx&gt;
+            &lt;opc&gt;/sse=66 0f 3a 16 /o=32 /vexw=0&lt;/opc&gt;
+            &lt;opr&gt;Ed V Ib&lt;/opr&gt;
+            &lt;cpuid&gt;sse4.1 avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -5591,41 +5839,127 @@
</span><span class="cx">         &lt;mnemonic&gt;pextrq&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexw rexb&lt;/pfx&gt;
</span><del>-            &lt;opc&gt;sse66 0f 3a 16 /o=64&lt;/opc&gt;
-            &lt;opr&gt;Ev V Ib&lt;/opr&gt;
</del><ins>+            &lt;opc&gt;/sse=66 0f 3a 16 /o=64 /vexw=1&lt;/opc&gt;
+            &lt;opr&gt;Eq V Ib&lt;/opr&gt;
</ins><span class="cx">             &lt;mode&gt;def64&lt;/mode&gt;
</span><ins>+            &lt;cpuid&gt;sse4.1 avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="cx">    &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;pextrw&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><del>-            &lt;pfx&gt;aso rexr rexb&lt;/pfx&gt;
-            &lt;opc&gt;sse66 0f c5&lt;/opc&gt;
-            &lt;opr&gt;Gd VR Ib&lt;/opr&gt;
</del><ins>+            &lt;pfx&gt;aso rexw rexr rexb&lt;/pfx&gt;
+            &lt;opc&gt;/sse=66 0f c5&lt;/opc&gt;
+            &lt;opr&gt;Gd U Ib&lt;/opr&gt;
+            &lt;cpuid&gt;sse avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><del>-            &lt;pfx&gt;aso oso rexw rexr rexx rexb&lt;/pfx&gt;
</del><ins>+            &lt;pfx&gt;aso rexw rexr rexx rexb&lt;/pfx&gt;
</ins><span class="cx">             &lt;opc&gt;0f c5&lt;/opc&gt;
</span><del>-            &lt;opr&gt;Gd PR Ib&lt;/opr&gt;
</del><ins>+            &lt;opr&gt;Gd N Ib&lt;/opr&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><ins>+        &lt;def&gt;
+            &lt;pfx&gt;aso rexw rexx rexr rexb&lt;/pfx&gt;
+            &lt;opc&gt;/sse=66 0f 3a 15&lt;/opc&gt;
+            &lt;opr&gt;MwRd V Ib&lt;/opr&gt;
+            &lt;cpuid&gt;sse4.1 avx&lt;/cpuid&gt;
+        &lt;/def&gt;
</ins><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="cx">     &lt;instruction&gt;
</span><ins>+        &lt;mnemonic&gt;pinsrb&lt;/mnemonic&gt;
+        &lt;def&gt;
+            &lt;pfx&gt;aso rexw rexr rexx rexb&lt;/pfx&gt;
+            &lt;opc&gt;/sse=66 0f 3a 20&lt;/opc&gt;
+            &lt;opr&gt;V MbRd Ib&lt;/opr&gt;
+            &lt;cpuid&gt;sse4.1&lt;/cpuid&gt;
+        &lt;/def&gt;
+    &lt;/instruction&gt;
+
+    &lt;instruction&gt;
</ins><span class="cx">         &lt;mnemonic&gt;pinsrw&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><del>-            &lt;pfx&gt;aso oso rexw rexr rexx rexb&lt;/pfx&gt;
</del><ins>+            &lt;pfx&gt;aso rexw rexr rexx rexb&lt;/pfx&gt;
</ins><span class="cx">             &lt;opc&gt;0f c4&lt;/opc&gt;
</span><del>-            &lt;opr&gt;P Ew Ib&lt;/opr&gt;
</del><ins>+            &lt;opr&gt;P MwRy Ib&lt;/opr&gt;
+            &lt;mode&gt;def64&lt;/mode&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexw rexr rexx rexb&lt;/pfx&gt;
</span><del>-            &lt;opc&gt;sse66 0f c4&lt;/opc&gt;
-            &lt;opr&gt;V Ew Ib&lt;/opr&gt;
</del><ins>+            &lt;opc&gt;/sse=66 0f c4&lt;/opc&gt;
+            &lt;opr&gt;V MwRy Ib&lt;/opr&gt;
+            &lt;mode&gt;def64&lt;/mode&gt;
+            &lt;cpuid&gt;sse2 avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="cx">     &lt;instruction&gt;
</span><ins>+        &lt;mnemonic&gt;pinsrd&lt;/mnemonic&gt;
+        &lt;def&gt;
+            &lt;pfx&gt;aso rexw rexr rexx rexb&lt;/pfx&gt;
+            &lt;opc&gt;/sse=66 0f 3a 22 /o=16&lt;/opc&gt;
+            &lt;opr&gt;V Ed Ib&lt;/opr&gt;
+            &lt;cpuid&gt;sse4.1&lt;/cpuid&gt;
+        &lt;/def&gt;

+        &lt;def&gt;
+            &lt;pfx&gt;aso rexw rexr rexx rexb&lt;/pfx&gt;
+            &lt;opc&gt;/sse=66 0f 3a 22 /o=32&lt;/opc&gt;
+            &lt;opr&gt;V Ed Ib&lt;/opr&gt;
+            &lt;cpuid&gt;sse4.1&lt;/cpuid&gt;
+        &lt;/def&gt;
+    &lt;/instruction&gt;
+
+    &lt;instruction&gt;
+        &lt;mnemonic&gt;pinsrq&lt;/mnemonic&gt;
+        &lt;def&gt;
+            &lt;pfx&gt;aso oso rexw rexr rexx rexb&lt;/pfx&gt;
+            &lt;opc&gt;/sse=66 0f 3a 22 /o=64&lt;/opc&gt;
+            &lt;opr&gt;V Eq Ib&lt;/opr&gt;
+            &lt;cpuid&gt;sse4.1&lt;/cpuid&gt;
+        &lt;/def&gt;
+    &lt;/instruction&gt;
+
+    &lt;instruction&gt;
+        &lt;mnemonic&gt;vpinsrb&lt;/mnemonic&gt;
+        &lt;def&gt;
+            &lt;pfx&gt;aso rexw rexr rexx rexb&lt;/pfx&gt;
+            &lt;opc&gt;/vex=66_0f3a 20 /vexw=0 /vexl=0&lt;/opc&gt;
+            &lt;opr&gt;V H MbRd Ib&lt;/opr&gt;
+            &lt;cpuid&gt;avx&lt;/cpuid&gt;
+        &lt;/def&gt;
+    &lt;/instruction&gt;
+
+    &lt;instruction&gt;
+        &lt;mnemonic&gt;vpinsrd&lt;/mnemonic&gt;
+        &lt;def&gt;
+            &lt;pfx&gt;aso oso rexw rexr rexx rexb&lt;/pfx&gt;
+            &lt;opc&gt;/vex=66_0f3a 22 /m=!64 /vexw=0 /vexl=0&lt;/opc&gt;
+            &lt;opr&gt;V H Ed Ib&lt;/opr&gt;
+            &lt;cpuid&gt;avx&lt;/cpuid&gt;
+        &lt;/def&gt;
+        &lt;def&gt;
+            &lt;pfx&gt;aso oso rexw rexr rexx rexb&lt;/pfx&gt;
+            &lt;opc&gt;/vex=66_0f3a 22 /m=64 /vexw=0 /vexl=0&lt;/opc&gt;
+            &lt;opr&gt;V H Ed Ib&lt;/opr&gt;
+            &lt;cpuid&gt;avx&lt;/cpuid&gt;
+        &lt;/def&gt;
+    &lt;/instruction&gt;
+
+
+    &lt;instruction&gt;
+        &lt;mnemonic&gt;vpinsrq&lt;/mnemonic&gt;
+        &lt;def&gt;
+            &lt;pfx&gt;aso oso rexw rexr rexx rexb&lt;/pfx&gt;
+            &lt;opc&gt;/vex=66_0f3a 22 /m=64 /vexw=1 /vexl=0&lt;/opc&gt;
+            &lt;opr&gt;V H Eq Ib&lt;/opr&gt;
+            &lt;cpuid&gt;avx&lt;/cpuid&gt;
+        &lt;/def&gt;
+    &lt;/instruction&gt;
+
+
+    &lt;instruction&gt;
</ins><span class="cx">         &lt;mnemonic&gt;pmaddwd&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><span class="lines">@@ -5634,8 +5968,9 @@
</span><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><del>-            &lt;opc&gt;sse66 0f f5&lt;/opc&gt;
-            &lt;opr&gt;V W&lt;/opr&gt;
</del><ins>+            &lt;opc&gt;/sse=66 0f f5&lt;/opc&gt;
+            &lt;opr&gt;V H W&lt;/opr&gt;
+            &lt;cpuid&gt;sse4.1 avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -5643,8 +5978,9 @@
</span><span class="cx">         &lt;mnemonic&gt;pmaxsw&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><del>-            &lt;opc&gt;sse66 0f ee&lt;/opc&gt;
-            &lt;opr&gt;V W&lt;/opr&gt;
</del><ins>+            &lt;opc&gt;/sse=66 0f ee&lt;/opc&gt;
+            &lt;opr&gt;V H W&lt;/opr&gt;
+            &lt;cpuid&gt;sse4.1 avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><span class="lines">@@ -5662,8 +5998,9 @@
</span><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><del>-            &lt;opc&gt;sse66 0f de&lt;/opc&gt;
-            &lt;opr&gt;V W&lt;/opr&gt;
</del><ins>+            &lt;opc&gt;/sse=66 0f de&lt;/opc&gt;
+            &lt;opr&gt;V H W&lt;/opr&gt;
+            &lt;cpuid&gt;sse2 avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -5671,8 +6008,9 @@
</span><span class="cx">         &lt;mnemonic&gt;pminsw&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><del>-            &lt;opc&gt;sse66 0f ea&lt;/opc&gt;
-            &lt;opr&gt;V W&lt;/opr&gt;
</del><ins>+            &lt;opc&gt;/sse=66 0f ea&lt;/opc&gt;
+            &lt;opr&gt;V H W&lt;/opr&gt;
+            &lt;cpuid&gt;sse2 avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><span class="lines">@@ -5685,8 +6023,9 @@
</span><span class="cx">         &lt;mnemonic&gt;pminub&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><del>-            &lt;opc&gt;sse66 0f da&lt;/opc&gt;
-            &lt;opr&gt;V W&lt;/opr&gt;
</del><ins>+            &lt;opc&gt;/sse=66 0f da&lt;/opc&gt;
+            &lt;opr&gt;V H W&lt;/opr&gt;
+            &lt;cpuid&gt;sse2 avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><span class="lines">@@ -5698,14 +6037,15 @@
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;pmovmskb&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><del>-            &lt;pfx&gt;rexr rexb&lt;/pfx&gt;
-            &lt;opc&gt;sse66 0f d7&lt;/opc&gt;
-            &lt;opr&gt;Gd VR&lt;/opr&gt;
</del><ins>+            &lt;pfx&gt;oso rexr rexw rexb&lt;/pfx&gt;
+            &lt;opc&gt;/sse=66 0f d7 /vexl=0&lt;/opc&gt;
+            &lt;opr&gt;Gd U&lt;/opr&gt;
+            &lt;cpuid&gt;sse2 avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><del>-            &lt;pfx&gt;oso rexr rexb&lt;/pfx&gt;
</del><ins>+            &lt;pfx&gt;oso rexr rexw rexb&lt;/pfx&gt;
</ins><span class="cx">             &lt;opc&gt;0f d7&lt;/opc&gt;
</span><del>-            &lt;opr&gt;Gd PR&lt;/opr&gt;
</del><ins>+            &lt;opr&gt;Gd N&lt;/opr&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -5718,8 +6058,9 @@
</span><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><del>-            &lt;opc&gt;sse66 0f e4&lt;/opc&gt;
-            &lt;opr&gt;V W&lt;/opr&gt;
</del><ins>+            &lt;opc&gt;/sse=66 0f e4&lt;/opc&gt;
+            &lt;opr&gt;V H W&lt;/opr&gt;
+            &lt;cpuid&gt;sse2 avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -5727,8 +6068,9 @@
</span><span class="cx">         &lt;mnemonic&gt;pmulhw&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><del>-            &lt;opc&gt;sse66 0f e5&lt;/opc&gt;
-            &lt;opr&gt;V W&lt;/opr&gt;
</del><ins>+            &lt;opc&gt;/sse=66 0f e5&lt;/opc&gt;
+            &lt;opr&gt;V H W&lt;/opr&gt;
+            &lt;cpuid&gt;sse2 avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><span class="lines">@@ -5746,25 +6088,26 @@
</span><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><del>-            &lt;opc&gt;sse66 0f d5&lt;/opc&gt;
-            &lt;opr&gt;V W&lt;/opr&gt;
</del><ins>+            &lt;opc&gt;/sse=66 0f d5&lt;/opc&gt;
+            &lt;opr&gt;V H W&lt;/opr&gt;
+            &lt;cpuid&gt;sse2 avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;pop&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><del>-            &lt;opc&gt;07&lt;/opc&gt;
</del><ins>+            &lt;opc&gt;07 /m=!64&lt;/opc&gt;
</ins><span class="cx">             &lt;opr&gt;ES&lt;/opr&gt;
</span><span class="cx">             &lt;mode&gt;inv64&lt;/mode&gt;
</span><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><del>-            &lt;opc&gt;17&lt;/opc&gt;
</del><ins>+            &lt;opc&gt;17 /m=!64&lt;/opc&gt;
</ins><span class="cx">             &lt;opr&gt;SS&lt;/opr&gt;
</span><span class="cx">             &lt;mode&gt;inv64&lt;/mode&gt;
</span><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><del>-            &lt;opc&gt;1f&lt;/opc&gt;
</del><ins>+            &lt;opc&gt;1f /m=!64&lt;/opc&gt;
</ins><span class="cx">             &lt;opr&gt;DS&lt;/opr&gt;
</span><span class="cx">             &lt;mode&gt;inv64&lt;/mode&gt;
</span><span class="cx">         &lt;/def&gt;
</span><span class="lines">@@ -5779,56 +6122,56 @@
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;oso rexb&lt;/pfx&gt;
</span><span class="cx">             &lt;opc&gt;58&lt;/opc&gt;
</span><del>-            &lt;opr&gt;rAXr8&lt;/opr&gt;
-            &lt;mode&gt;def64 depM&lt;/mode&gt;
</del><ins>+            &lt;opr&gt;R0v&lt;/opr&gt;
+            &lt;mode&gt;def64&lt;/mode&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;oso rexb&lt;/pfx&gt;
</span><span class="cx">             &lt;opc&gt;59&lt;/opc&gt;
</span><del>-            &lt;opr&gt;rCXr9&lt;/opr&gt;
-            &lt;mode&gt;def64 depM&lt;/mode&gt;
</del><ins>+            &lt;opr&gt;R1v&lt;/opr&gt;
+            &lt;mode&gt;def64&lt;/mode&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;oso rexb&lt;/pfx&gt;
</span><span class="cx">             &lt;opc&gt;5a&lt;/opc&gt;
</span><del>-            &lt;opr&gt;rDXr10&lt;/opr&gt;
-            &lt;mode&gt;def64 depM&lt;/mode&gt;
</del><ins>+            &lt;opr&gt;R2v&lt;/opr&gt;
+            &lt;mode&gt;def64&lt;/mode&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;oso rexb&lt;/pfx&gt;
</span><span class="cx">             &lt;opc&gt;5b&lt;/opc&gt;
</span><del>-            &lt;opr&gt;rBXr11&lt;/opr&gt;
-            &lt;mode&gt;def64 depM&lt;/mode&gt;
</del><ins>+            &lt;opr&gt;R3v&lt;/opr&gt;
+            &lt;mode&gt;def64&lt;/mode&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;oso rexb&lt;/pfx&gt;
</span><span class="cx">             &lt;opc&gt;5c&lt;/opc&gt;
</span><del>-            &lt;opr&gt;rSPr12&lt;/opr&gt;
-            &lt;mode&gt;def64 depM&lt;/mode&gt;
</del><ins>+            &lt;opr&gt;R4v&lt;/opr&gt;
+            &lt;mode&gt;def64&lt;/mode&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;oso rexb&lt;/pfx&gt;
</span><span class="cx">             &lt;opc&gt;5d&lt;/opc&gt;
</span><del>-            &lt;opr&gt;rBPr13&lt;/opr&gt;
-            &lt;mode&gt;def64 depM&lt;/mode&gt;
</del><ins>+            &lt;opr&gt;R5v&lt;/opr&gt;
+            &lt;mode&gt;def64&lt;/mode&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;oso rexb&lt;/pfx&gt;
</span><span class="cx">             &lt;opc&gt;5e&lt;/opc&gt;
</span><del>-            &lt;opr&gt;rSIr14&lt;/opr&gt;
-            &lt;mode&gt;def64 depM&lt;/mode&gt;
</del><ins>+            &lt;opr&gt;R6v&lt;/opr&gt;
+            &lt;mode&gt;def64&lt;/mode&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;oso rexb&lt;/pfx&gt;
</span><span class="cx">             &lt;opc&gt;5f&lt;/opc&gt;
</span><del>-            &lt;opr&gt;rDIr15&lt;/opr&gt;
-            &lt;mode&gt;def64 depM&lt;/mode&gt;
</del><ins>+            &lt;opr&gt;R7v&lt;/opr&gt;
+            &lt;mode&gt;def64&lt;/mode&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso oso rexw rexr rexx rexb&lt;/pfx&gt;
</span><span class="cx">             &lt;opc&gt;8f /reg=0&lt;/opc&gt;
</span><span class="cx">             &lt;opr&gt;Ev&lt;/opr&gt;
</span><del>-            &lt;mode&gt;def64 depM&lt;/mode&gt;
</del><ins>+            &lt;mode&gt;def64&lt;/mode&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -5836,7 +6179,7 @@
</span><span class="cx">         &lt;mnemonic&gt;popa&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;oso&lt;/pfx&gt;
</span><del>-            &lt;opc&gt;61 /o=16&lt;/opc&gt;
</del><ins>+            &lt;opc&gt;61 /o=16 /m=!64&lt;/opc&gt;
</ins><span class="cx">             &lt;mode&gt;inv64&lt;/mode&gt;
</span><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="lines">@@ -5845,7 +6188,7 @@
</span><span class="cx">         &lt;mnemonic&gt;popad&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;oso&lt;/pfx&gt;
</span><del>-            &lt;opc&gt;61 /o=32&lt;/opc&gt;
</del><ins>+            &lt;opc&gt;61 /o=32 /m=!64&lt;/opc&gt;
</ins><span class="cx">             &lt;mode&gt;inv64&lt;/mode&gt;
</span><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="lines">@@ -5854,36 +6197,29 @@
</span><span class="cx">         &lt;mnemonic&gt;popfw&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;oso&lt;/pfx&gt;
</span><del>-            &lt;opc&gt;9d /m=32 /o=16&lt;/opc&gt;
-            &lt;mode&gt;def64 depM&lt;/mode&gt;
</del><ins>+            &lt;opc&gt;9d /m=!64 /o=16&lt;/opc&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><del>-        &lt;def&gt;
-            &lt;pfx&gt;oso&lt;/pfx&gt;
-            &lt;opc&gt;9d /m=16 /o=16&lt;/opc&gt;
-            &lt;mode&gt;def64 depM&lt;/mode&gt;
-        &lt;/def&gt;
</del><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;popfd&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;oso&lt;/pfx&gt;
</span><del>-            &lt;opc&gt;9d /m=16 /o=32&lt;/opc&gt;
-            &lt;mode&gt;def64 depM&lt;/mode&gt;
</del><ins>+            &lt;opc&gt;9d /m=!64 /o=32&lt;/opc&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><del>-        &lt;def&gt;
-            &lt;pfx&gt;oso&lt;/pfx&gt;
-            &lt;opc&gt;9d /m=32 /o=32&lt;/opc&gt;
-            &lt;mode&gt;def64 depM&lt;/mode&gt;
-        &lt;/def&gt;
</del><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;popfq&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;oso&lt;/pfx&gt;
</span><ins>+            &lt;opc&gt;9d /m=64 /o=32&lt;/opc&gt;
+            &lt;mode&gt;def64&lt;/mode&gt;
+        &lt;/def&gt;
+        &lt;def&gt;
+            &lt;pfx&gt;oso&lt;/pfx&gt;
</ins><span class="cx">             &lt;opc&gt;9d /m=64 /o=64&lt;/opc&gt;
</span><del>-            &lt;mode&gt;def64 depM&lt;/mode&gt;
</del><ins>+            &lt;mode&gt;def64&lt;/mode&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -5891,8 +6227,9 @@
</span><span class="cx">         &lt;mnemonic&gt;por&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><del>-            &lt;opc&gt;sse66 0f eb&lt;/opc&gt;
-            &lt;opr&gt;V W&lt;/opr&gt;
</del><ins>+            &lt;opc&gt;/sse=66 0f eb&lt;/opc&gt;
+            &lt;opr&gt;V H W&lt;/opr&gt;
+            &lt;cpuid&gt;sse2 avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><span class="lines">@@ -5985,8 +6322,9 @@
</span><span class="cx">         &lt;mnemonic&gt;psadbw&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><del>-            &lt;opc&gt;sse66 0f f6&lt;/opc&gt;
-            &lt;opr&gt;V W&lt;/opr&gt;
</del><ins>+            &lt;opc&gt;/sse=66 0f f6&lt;/opc&gt;
+            &lt;opr&gt;V H W&lt;/opr&gt;
+            &lt;cpuid&gt;sse2 avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><span class="lines">@@ -6004,12 +6342,13 @@
</span><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><del>-    &lt;instruction&gt;
</del><ins>+     &lt;instruction&gt;
</ins><span class="cx">         &lt;mnemonic&gt;psllw&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><del>-            &lt;opc&gt;sse66 0f f1&lt;/opc&gt;
</del><ins>+            &lt;opc&gt;/sse=66 0f f1&lt;/opc&gt;
</ins><span class="cx">             &lt;opr&gt;V W&lt;/opr&gt;
</span><ins>+            &lt;cpuid&gt;sse2&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><span class="lines">@@ -6018,12 +6357,13 @@
</span><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;rexb&lt;/pfx&gt;
</span><del>-            &lt;opc&gt;sse66 0f 71 /reg=6&lt;/opc&gt;
-            &lt;opr&gt;VR Ib&lt;/opr&gt;
</del><ins>+            &lt;opc&gt;/sse=66 0f 71 /reg=6&lt;/opc&gt;
+            &lt;opr&gt;U Ib&lt;/opr&gt;
+            &lt;cpuid&gt;sse2&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;opc&gt;0f 71 /reg=6&lt;/opc&gt;
</span><del>-            &lt;opr&gt;PR Ib&lt;/opr&gt;
</del><ins>+            &lt;opr&gt;N Ib&lt;/opr&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -6031,8 +6371,9 @@
</span><span class="cx">         &lt;mnemonic&gt;pslld&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><del>-            &lt;opc&gt;sse66 0f f2&lt;/opc&gt;
</del><ins>+            &lt;opc&gt;/sse=66 0f f2&lt;/opc&gt;
</ins><span class="cx">             &lt;opr&gt;V W&lt;/opr&gt;
</span><ins>+            &lt;cpuid&gt;sse2&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><span class="lines">@@ -6041,12 +6382,13 @@
</span><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;rexb&lt;/pfx&gt;
</span><del>-            &lt;opc&gt;sse66 0f 72 /reg=6&lt;/opc&gt;
-            &lt;opr&gt;VR Ib&lt;/opr&gt;
</del><ins>+            &lt;opc&gt;/sse=66 0f 72 /reg=6&lt;/opc&gt;
+            &lt;opr&gt;U Ib&lt;/opr&gt;
+            &lt;cpuid&gt;sse2&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;opc&gt;0f 72 /reg=6&lt;/opc&gt;
</span><del>-            &lt;opr&gt;PR Ib&lt;/opr&gt;
</del><ins>+            &lt;opr&gt;N Ib&lt;/opr&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -6054,8 +6396,9 @@
</span><span class="cx">         &lt;mnemonic&gt;psllq&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><del>-            &lt;opc&gt;sse66 0f f3&lt;/opc&gt;
</del><ins>+            &lt;opc&gt;/sse=66 0f f3&lt;/opc&gt;
</ins><span class="cx">             &lt;opr&gt;V W&lt;/opr&gt;
</span><ins>+            &lt;cpuid&gt;sse2&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><span class="lines">@@ -6064,12 +6407,13 @@
</span><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;rexb&lt;/pfx&gt;
</span><del>-            &lt;opc&gt;sse66 0f 73 /reg=6&lt;/opc&gt;
-            &lt;opr&gt;VR Ib&lt;/opr&gt;
</del><ins>+            &lt;opc&gt;/sse=66 0f 73 /reg=6&lt;/opc&gt;
+            &lt;opr&gt;U Ib&lt;/opr&gt;
+            &lt;cpuid&gt;sse2&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;opc&gt;0f 73 /reg=6&lt;/opc&gt;
</span><del>-            &lt;opr&gt;PR Ib&lt;/opr&gt;
</del><ins>+            &lt;opr&gt;N Ib&lt;/opr&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -6082,17 +6426,19 @@
</span><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><del>-            &lt;opc&gt;sse66 0f e1&lt;/opc&gt;
-            &lt;opr&gt;V W&lt;/opr&gt;
</del><ins>+            &lt;opc&gt;/sse=66 0f e1&lt;/opc&gt;
+            &lt;opr&gt;V H W&lt;/opr&gt;
+            &lt;cpuid&gt;sse2 avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;rexb&lt;/pfx&gt;
</span><del>-            &lt;opc&gt;sse66 0f 71 /reg=4&lt;/opc&gt;
-            &lt;opr&gt;VR Ib&lt;/opr&gt;
</del><ins>+            &lt;opc&gt;/sse=66 0f 71 /reg=4&lt;/opc&gt;
+            &lt;opr&gt;H U Ib&lt;/opr&gt;
+            &lt;cpuid&gt;sse2 avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;opc&gt;0f 71 /reg=4&lt;/opc&gt;
</span><del>-            &lt;opr&gt;PR Ib&lt;/opr&gt;
</del><ins>+            &lt;opr&gt;N Ib&lt;/opr&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -6100,12 +6446,13 @@
</span><span class="cx">         &lt;mnemonic&gt;psrad&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;opc&gt;0f 72 /reg=4&lt;/opc&gt;
</span><del>-            &lt;opr&gt;PR Ib&lt;/opr&gt;
</del><ins>+            &lt;opr&gt;N Ib&lt;/opr&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><del>-            &lt;opc&gt;sse66 0f e2&lt;/opc&gt;
-            &lt;opr&gt;V W&lt;/opr&gt;
</del><ins>+            &lt;opc&gt;/sse=66 0f e2&lt;/opc&gt;
+            &lt;opr&gt;V H W&lt;/opr&gt;
+            &lt;cpuid&gt;sse2 avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><span class="lines">@@ -6114,8 +6461,9 @@
</span><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;rexb&lt;/pfx&gt;
</span><del>-            &lt;opc&gt;sse66 0f 72 /reg=4&lt;/opc&gt;
-            &lt;opr&gt;VR Ib&lt;/opr&gt;
</del><ins>+            &lt;opc&gt;/sse=66 0f 72 /reg=4&lt;/opc&gt;
+            &lt;opr&gt;H U Ib&lt;/opr&gt;
+            &lt;cpuid&gt;sse2 avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -6123,7 +6471,7 @@
</span><span class="cx">         &lt;mnemonic&gt;psrlw&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;opc&gt;0f 71 /reg=2&lt;/opc&gt;
</span><del>-            &lt;opr&gt;PR Ib&lt;/opr&gt;
</del><ins>+            &lt;opr&gt;N Ib&lt;/opr&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><span class="lines">@@ -6132,13 +6480,15 @@
</span><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><del>-            &lt;opc&gt;sse66 0f d1&lt;/opc&gt;
-            &lt;opr&gt;V W&lt;/opr&gt;
</del><ins>+            &lt;opc&gt;/sse=66 0f d1&lt;/opc&gt;
+            &lt;opr&gt;V H W&lt;/opr&gt;
+            &lt;cpuid&gt;sse2 avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;rexb&lt;/pfx&gt;
</span><del>-            &lt;opc&gt;sse66 0f 71 /reg=2&lt;/opc&gt;
-            &lt;opr&gt;VR Ib&lt;/opr&gt;
</del><ins>+            &lt;opc&gt;/sse=66 0f 71 /reg=2&lt;/opc&gt;
+            &lt;opr&gt;H U Ib&lt;/opr&gt;
+            &lt;cpuid&gt;sse2 avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -6146,7 +6496,7 @@
</span><span class="cx">         &lt;mnemonic&gt;psrld&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;opc&gt;0f 72 /reg=2&lt;/opc&gt;
</span><del>-            &lt;opr&gt;PR Ib&lt;/opr&gt;
</del><ins>+            &lt;opr&gt;N Ib&lt;/opr&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><span class="lines">@@ -6155,13 +6505,15 @@
</span><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><del>-            &lt;opc&gt;sse66 0f d2&lt;/opc&gt;
-            &lt;opr&gt;V W&lt;/opr&gt;
</del><ins>+            &lt;opc&gt;/sse=66 0f d2&lt;/opc&gt;
+            &lt;opr&gt;V H W&lt;/opr&gt;
+            &lt;cpuid&gt;sse2 avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;rexb&lt;/pfx&gt;
</span><del>-            &lt;opc&gt;sse66 0f 72 /reg=2&lt;/opc&gt;
-            &lt;opr&gt;VR Ib&lt;/opr&gt;
</del><ins>+            &lt;opc&gt;/sse=66 0f 72 /reg=2&lt;/opc&gt;
+            &lt;opr&gt;H U Ib&lt;/opr&gt;
+            &lt;cpuid&gt;sse2 avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -6169,7 +6521,7 @@
</span><span class="cx">         &lt;mnemonic&gt;psrlq&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;opc&gt;0f 73 /reg=2&lt;/opc&gt;
</span><del>-            &lt;opr&gt;PR Ib&lt;/opr&gt;
</del><ins>+            &lt;opr&gt;N Ib&lt;/opr&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><span class="lines">@@ -6178,13 +6530,15 @@
</span><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><del>-            &lt;opc&gt;sse66 0f d3&lt;/opc&gt;
-            &lt;opr&gt;V W&lt;/opr&gt;
</del><ins>+            &lt;opc&gt;/sse=66 0f d3&lt;/opc&gt;
+            &lt;opr&gt;V H W&lt;/opr&gt;
+            &lt;cpuid&gt;sse2 avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;rexb&lt;/pfx&gt;
</span><del>-            &lt;opc&gt;sse66 0f 73 /reg=2&lt;/opc&gt;
-            &lt;opr&gt;VR Ib&lt;/opr&gt;
</del><ins>+            &lt;opc&gt;/sse=66 0f 73 /reg=2&lt;/opc&gt;
+            &lt;opr&gt;H U Ib&lt;/opr&gt;
+            &lt;cpuid&gt;sse2 avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -6192,8 +6546,9 @@
</span><span class="cx">         &lt;mnemonic&gt;psubb&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><del>-            &lt;opc&gt;sse66 0f f8&lt;/opc&gt;
-            &lt;opr&gt;V W&lt;/opr&gt;
</del><ins>+            &lt;opc&gt;/sse=66 0f f8&lt;/opc&gt;
+            &lt;opr&gt;V H W&lt;/opr&gt;
+            &lt;cpuid&gt;sse2 avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><span class="lines">@@ -6206,8 +6561,9 @@
</span><span class="cx">         &lt;mnemonic&gt;psubw&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><del>-            &lt;opc&gt;sse66 0f f9&lt;/opc&gt;
-            &lt;opr&gt;V W&lt;/opr&gt;
</del><ins>+            &lt;opc&gt;/sse=66 0f f9&lt;/opc&gt;
+            &lt;opr&gt;V H W&lt;/opr&gt;
+            &lt;cpuid&gt;sse2 avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><span class="lines">@@ -6225,8 +6581,9 @@
</span><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><del>-            &lt;opc&gt;sse66 0f fa&lt;/opc&gt;
-            &lt;opr&gt;V W&lt;/opr&gt;
</del><ins>+            &lt;opc&gt;/sse=66 0f fa&lt;/opc&gt;
+            &lt;opr&gt;V H W&lt;/opr&gt;
+            &lt;cpuid&gt;sse2 avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -6239,8 +6596,9 @@
</span><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><del>-            &lt;opc&gt;sse66 0f e8&lt;/opc&gt;
-            &lt;opr&gt;V W&lt;/opr&gt;
</del><ins>+            &lt;opc&gt;/sse=66 0f e8&lt;/opc&gt;
+            &lt;opr&gt;V H W&lt;/opr&gt;
+            &lt;cpuid&gt;sse2 avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -6253,8 +6611,9 @@
</span><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><del>-            &lt;opc&gt;sse66 0f e9&lt;/opc&gt;
-            &lt;opr&gt;V W&lt;/opr&gt;
</del><ins>+            &lt;opc&gt;/sse=66 0f e9&lt;/opc&gt;
+            &lt;opr&gt;V H W&lt;/opr&gt;
+            &lt;cpuid&gt;sse2 avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -6267,8 +6626,9 @@
</span><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><del>-            &lt;opc&gt;sse66 0f d8&lt;/opc&gt;
-            &lt;opr&gt;V W&lt;/opr&gt;
</del><ins>+            &lt;opc&gt;/sse=66 0f d8&lt;/opc&gt;
+            &lt;opr&gt;V H W&lt;/opr&gt;
+            &lt;cpuid&gt;sse2 avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -6281,8 +6641,9 @@
</span><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><del>-            &lt;opc&gt;sse66 0f d9&lt;/opc&gt;
-            &lt;opr&gt;V W&lt;/opr&gt;
</del><ins>+            &lt;opc&gt;/sse=66 0f d9&lt;/opc&gt;
+            &lt;opr&gt;V H W&lt;/opr&gt;
+            &lt;cpuid&gt;sse2 avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -6290,8 +6651,9 @@
</span><span class="cx">         &lt;mnemonic&gt;punpckhbw&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><del>-            &lt;opc&gt;sse66 0f 68&lt;/opc&gt;
-            &lt;opr&gt;V W&lt;/opr&gt;
</del><ins>+            &lt;opc&gt;/sse=66 0f 68&lt;/opc&gt;
+            &lt;opr&gt;V H W&lt;/opr&gt;
+            &lt;cpuid&gt;sse2 avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><span class="lines">@@ -6304,8 +6666,9 @@
</span><span class="cx">         &lt;mnemonic&gt;punpckhwd&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><del>-            &lt;opc&gt;sse66 0f 69&lt;/opc&gt;
-            &lt;opr&gt;V W&lt;/opr&gt;
</del><ins>+            &lt;opc&gt;/sse=66 0f 69&lt;/opc&gt;
+            &lt;opr&gt;V H W&lt;/opr&gt;
+            &lt;cpuid&gt;sse2 avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><span class="lines">@@ -6318,8 +6681,9 @@
</span><span class="cx">         &lt;mnemonic&gt;punpckhdq&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><del>-            &lt;opc&gt;sse66 0f 6a&lt;/opc&gt;
-            &lt;opr&gt;V W&lt;/opr&gt;
</del><ins>+            &lt;opc&gt;/sse=66 0f 6a&lt;/opc&gt;
+            &lt;opr&gt;V H W&lt;/opr&gt;
+            &lt;cpuid&gt;sse2 avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><span class="lines">@@ -6332,8 +6696,9 @@
</span><span class="cx">         &lt;mnemonic&gt;punpcklbw&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><del>-            &lt;opc&gt;sse66 0f 60&lt;/opc&gt;
-            &lt;opr&gt;V W&lt;/opr&gt;
</del><ins>+            &lt;opc&gt;/sse=66 0f 60&lt;/opc&gt;
+            &lt;opr&gt;V H W&lt;/opr&gt;
+            &lt;cpuid&gt;sse2 avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><span class="lines">@@ -6346,8 +6711,9 @@
</span><span class="cx">         &lt;mnemonic&gt;punpcklwd&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><del>-            &lt;opc&gt;sse66 0f 61&lt;/opc&gt;
-            &lt;opr&gt;V W&lt;/opr&gt;
</del><ins>+            &lt;opc&gt;/sse=66 0f 61&lt;/opc&gt;
+            &lt;opr&gt;V H W&lt;/opr&gt;
+            &lt;cpuid&gt;sse2 avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><span class="lines">@@ -6360,8 +6726,9 @@
</span><span class="cx">         &lt;mnemonic&gt;punpckldq&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><del>-            &lt;opc&gt;sse66 0f 62&lt;/opc&gt;
-            &lt;opr&gt;V W&lt;/opr&gt;
</del><ins>+            &lt;opc&gt;/sse=66 0f 62&lt;/opc&gt;
+            &lt;opr&gt;V H W&lt;/opr&gt;
+            &lt;cpuid&gt;sse2 avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><span class="lines">@@ -6373,6 +6740,7 @@
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;pi2fw&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><ins>+            &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</ins><span class="cx">             &lt;opc&gt;0f 0f /3dnow=0c&lt;/opc&gt;
</span><span class="cx">             &lt;opr&gt;P Q&lt;/opr&gt;
</span><span class="cx">         &lt;/def&gt;
</span><span class="lines">@@ -6381,6 +6749,7 @@
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;pi2fd&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><ins>+            &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</ins><span class="cx">             &lt;opc&gt;0f 0f /3dnow=0d&lt;/opc&gt;
</span><span class="cx">             &lt;opr&gt;P Q&lt;/opr&gt;
</span><span class="cx">         &lt;/def&gt;
</span><span class="lines">@@ -6389,6 +6758,7 @@
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;pf2iw&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><ins>+            &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</ins><span class="cx">             &lt;opc&gt;0f 0f /3dnow=1c&lt;/opc&gt;
</span><span class="cx">             &lt;opr&gt;P Q&lt;/opr&gt;
</span><span class="cx">         &lt;/def&gt;
</span><span class="lines">@@ -6397,6 +6767,7 @@
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;pf2id&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><ins>+            &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</ins><span class="cx">             &lt;opc&gt;0f 0f /3dnow=1d&lt;/opc&gt;
</span><span class="cx">             &lt;opr&gt;P Q&lt;/opr&gt;
</span><span class="cx">         &lt;/def&gt;
</span><span class="lines">@@ -6405,6 +6776,7 @@
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;pfnacc&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><ins>+            &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</ins><span class="cx">             &lt;opc&gt;0f 0f /3dnow=8a&lt;/opc&gt;
</span><span class="cx">             &lt;opr&gt;P Q&lt;/opr&gt;
</span><span class="cx">         &lt;/def&gt;
</span><span class="lines">@@ -6413,6 +6785,7 @@
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;pfpnacc&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><ins>+            &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</ins><span class="cx">             &lt;opc&gt;0f 0f /3dnow=8e&lt;/opc&gt;
</span><span class="cx">             &lt;opr&gt;P Q&lt;/opr&gt;
</span><span class="cx">         &lt;/def&gt;
</span><span class="lines">@@ -6421,6 +6794,7 @@
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;pfcmpge&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><ins>+            &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</ins><span class="cx">             &lt;opc&gt;0f 0f /3dnow=90&lt;/opc&gt;
</span><span class="cx">             &lt;opr&gt;P Q&lt;/opr&gt;
</span><span class="cx">         &lt;/def&gt;
</span><span class="lines">@@ -6429,6 +6803,7 @@
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;pfmin&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><ins>+            &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</ins><span class="cx">             &lt;opc&gt;0f 0f /3dnow=94&lt;/opc&gt;
</span><span class="cx">             &lt;opr&gt;P Q&lt;/opr&gt;
</span><span class="cx">         &lt;/def&gt;
</span><span class="lines">@@ -6437,6 +6812,7 @@
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;pfrcp&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><ins>+            &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</ins><span class="cx">             &lt;opc&gt;0f 0f /3dnow=96&lt;/opc&gt;
</span><span class="cx">             &lt;opr&gt;P Q&lt;/opr&gt;
</span><span class="cx">         &lt;/def&gt;
</span><span class="lines">@@ -6445,6 +6821,7 @@
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;pfrsqrt&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><ins>+            &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</ins><span class="cx">             &lt;opc&gt;0f 0f /3dnow=97&lt;/opc&gt;
</span><span class="cx">             &lt;opr&gt;P Q&lt;/opr&gt;
</span><span class="cx">         &lt;/def&gt;
</span><span class="lines">@@ -6453,6 +6830,7 @@
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;pfsub&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><ins>+            &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</ins><span class="cx">             &lt;opc&gt;0f 0f /3dnow=9a&lt;/opc&gt;
</span><span class="cx">             &lt;opr&gt;P Q&lt;/opr&gt;
</span><span class="cx">         &lt;/def&gt;
</span><span class="lines">@@ -6461,6 +6839,7 @@
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;pfadd&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><ins>+            &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</ins><span class="cx">             &lt;opc&gt;0f 0f /3dnow=9e&lt;/opc&gt;
</span><span class="cx">             &lt;opr&gt;P Q&lt;/opr&gt;
</span><span class="cx">         &lt;/def&gt;
</span><span class="lines">@@ -6469,6 +6848,7 @@
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;pfcmpgt&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><ins>+            &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</ins><span class="cx">             &lt;opc&gt;0f 0f /3dnow=a0&lt;/opc&gt;
</span><span class="cx">             &lt;opr&gt;P Q&lt;/opr&gt;
</span><span class="cx">         &lt;/def&gt;
</span><span class="lines">@@ -6477,6 +6857,7 @@
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;pfmax&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><ins>+            &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</ins><span class="cx">             &lt;opc&gt;0f 0f /3dnow=a4&lt;/opc&gt;
</span><span class="cx">             &lt;opr&gt;P Q&lt;/opr&gt;
</span><span class="cx">         &lt;/def&gt;
</span><span class="lines">@@ -6485,6 +6866,7 @@
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;pfrcpit1&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><ins>+            &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</ins><span class="cx">             &lt;opc&gt;0f 0f /3dnow=a6&lt;/opc&gt;
</span><span class="cx">             &lt;opr&gt;P Q&lt;/opr&gt;
</span><span class="cx">         &lt;/def&gt;
</span><span class="lines">@@ -6493,6 +6875,7 @@
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;pfrsqit1&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><ins>+            &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</ins><span class="cx">             &lt;opc&gt;0f 0f /3dnow=a7&lt;/opc&gt;
</span><span class="cx">             &lt;opr&gt;P Q&lt;/opr&gt;
</span><span class="cx">         &lt;/def&gt;
</span><span class="lines">@@ -6501,6 +6884,7 @@
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;pfsubr&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><ins>+            &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</ins><span class="cx">             &lt;opc&gt;0f 0f /3dnow=aa&lt;/opc&gt;
</span><span class="cx">             &lt;opr&gt;P Q&lt;/opr&gt;
</span><span class="cx">         &lt;/def&gt;
</span><span class="lines">@@ -6509,6 +6893,7 @@
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;pfacc&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><ins>+            &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</ins><span class="cx">             &lt;opc&gt;0f 0f /3dnow=ae&lt;/opc&gt;
</span><span class="cx">             &lt;opr&gt;P Q&lt;/opr&gt;
</span><span class="cx">         &lt;/def&gt;
</span><span class="lines">@@ -6517,6 +6902,7 @@
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;pfcmpeq&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><ins>+            &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</ins><span class="cx">             &lt;opc&gt;0f 0f /3dnow=b0&lt;/opc&gt;
</span><span class="cx">             &lt;opr&gt;P Q&lt;/opr&gt;
</span><span class="cx">         &lt;/def&gt;
</span><span class="lines">@@ -6525,6 +6911,7 @@
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;pfmul&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><ins>+            &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</ins><span class="cx">             &lt;opc&gt;0f 0f /3dnow=b4&lt;/opc&gt;
</span><span class="cx">             &lt;opr&gt;P Q&lt;/opr&gt;
</span><span class="cx">         &lt;/def&gt;
</span><span class="lines">@@ -6533,6 +6920,7 @@
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;pfrcpit2&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><ins>+            &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</ins><span class="cx">             &lt;opc&gt;0f 0f /3dnow=b6&lt;/opc&gt;
</span><span class="cx">             &lt;opr&gt;P Q&lt;/opr&gt;
</span><span class="cx">         &lt;/def&gt;
</span><span class="lines">@@ -6541,6 +6929,7 @@
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;pmulhrw&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><ins>+            &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</ins><span class="cx">             &lt;opc&gt;0f 0f /3dnow=b7&lt;/opc&gt;
</span><span class="cx">             &lt;opr&gt;P Q&lt;/opr&gt;
</span><span class="cx">         &lt;/def&gt;
</span><span class="lines">@@ -6549,6 +6938,7 @@
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;pswapd&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><ins>+            &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</ins><span class="cx">             &lt;opc&gt;0f 0f /3dnow=bb&lt;/opc&gt;
</span><span class="cx">             &lt;opr&gt;P Q&lt;/opr&gt;
</span><span class="cx">         &lt;/def&gt;
</span><span class="lines">@@ -6557,6 +6947,7 @@
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;pavgusb&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><ins>+            &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</ins><span class="cx">             &lt;opc&gt;0f 0f /3dnow=bf&lt;/opc&gt;
</span><span class="cx">             &lt;opr&gt;P Q&lt;/opr&gt;
</span><span class="cx">         &lt;/def&gt;
</span><span class="lines">@@ -6565,22 +6956,22 @@
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;push&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><del>-            &lt;opc&gt;06&lt;/opc&gt;
</del><ins>+            &lt;opc&gt;06 /m=!64&lt;/opc&gt;
</ins><span class="cx">             &lt;opr&gt;ES&lt;/opr&gt;
</span><span class="cx">             &lt;mode&gt;inv64&lt;/mode&gt;
</span><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><del>-            &lt;opc&gt;0e&lt;/opc&gt;
</del><ins>+            &lt;opc&gt;0e /m=!64&lt;/opc&gt;
</ins><span class="cx">             &lt;opr&gt;CS&lt;/opr&gt;
</span><span class="cx">             &lt;mode&gt;inv64&lt;/mode&gt;
</span><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><del>-            &lt;opc&gt;16&lt;/opc&gt;
</del><ins>+            &lt;opc&gt;16 /m=!64&lt;/opc&gt;
</ins><span class="cx">             &lt;opr&gt;SS&lt;/opr&gt;
</span><span class="cx">             &lt;mode&gt;inv64&lt;/mode&gt;
</span><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><del>-            &lt;opc&gt;1e&lt;/opc&gt;
</del><ins>+            &lt;opc&gt;1e /m=!64&lt;/opc&gt;
</ins><span class="cx">             &lt;opr&gt;DS&lt;/opr&gt;
</span><span class="cx">             &lt;mode&gt;inv64&lt;/mode&gt;
</span><span class="cx">         &lt;/def&gt;
</span><span class="lines">@@ -6595,56 +6986,56 @@
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;oso rexb&lt;/pfx&gt;
</span><span class="cx">             &lt;opc&gt;50&lt;/opc&gt;
</span><del>-            &lt;opr&gt;rAXr8&lt;/opr&gt;
-            &lt;mode&gt;def64 depM&lt;/mode&gt;
</del><ins>+            &lt;opr&gt;R0v&lt;/opr&gt;
+            &lt;mode&gt;def64&lt;/mode&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;oso rexb&lt;/pfx&gt;
</span><span class="cx">             &lt;opc&gt;51&lt;/opc&gt;
</span><del>-            &lt;opr&gt;rCXr9&lt;/opr&gt;
-            &lt;mode&gt;def64 depM&lt;/mode&gt;
</del><ins>+            &lt;opr&gt;R1v&lt;/opr&gt;
+            &lt;mode&gt;def64&lt;/mode&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;oso rexb&lt;/pfx&gt;
</span><span class="cx">             &lt;opc&gt;52&lt;/opc&gt;
</span><del>-            &lt;opr&gt;rDXr10&lt;/opr&gt;
-            &lt;mode&gt;def64 depM&lt;/mode&gt;
</del><ins>+            &lt;opr&gt;R2v&lt;/opr&gt;
+            &lt;mode&gt;def64&lt;/mode&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;oso rexb&lt;/pfx&gt;
</span><span class="cx">             &lt;opc&gt;53&lt;/opc&gt;
</span><del>-            &lt;opr&gt;rBXr11&lt;/opr&gt;
-            &lt;mode&gt;def64 depM&lt;/mode&gt;
</del><ins>+            &lt;opr&gt;R3v&lt;/opr&gt;
+            &lt;mode&gt;def64&lt;/mode&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;oso rexb&lt;/pfx&gt;
</span><span class="cx">             &lt;opc&gt;54&lt;/opc&gt;
</span><del>-            &lt;opr&gt;rSPr12&lt;/opr&gt;
-            &lt;mode&gt;def64 depM&lt;/mode&gt;
</del><ins>+            &lt;opr&gt;R4v&lt;/opr&gt;
+            &lt;mode&gt;def64&lt;/mode&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;oso rexb&lt;/pfx&gt;
</span><span class="cx">             &lt;opc&gt;55&lt;/opc&gt;
</span><del>-            &lt;opr&gt;rBPr13&lt;/opr&gt;
-            &lt;mode&gt;def64 depM&lt;/mode&gt;
</del><ins>+            &lt;opr&gt;R5v&lt;/opr&gt;
+            &lt;mode&gt;def64&lt;/mode&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;oso rexb&lt;/pfx&gt;
</span><span class="cx">             &lt;opc&gt;56&lt;/opc&gt;
</span><del>-            &lt;opr&gt;rSIr14&lt;/opr&gt;
-            &lt;mode&gt;def64 depM&lt;/mode&gt;
</del><ins>+            &lt;opr&gt;R6v&lt;/opr&gt;
+            &lt;mode&gt;def64&lt;/mode&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;oso rexb&lt;/pfx&gt;
</span><span class="cx">             &lt;opc&gt;57&lt;/opc&gt;
</span><del>-            &lt;opr&gt;rDIr15&lt;/opr&gt;
-            &lt;mode&gt;def64 depM&lt;/mode&gt;
</del><ins>+            &lt;opr&gt;R7v&lt;/opr&gt;
+            &lt;mode&gt;def64&lt;/mode&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;oso&lt;/pfx&gt;
</span><span class="cx">             &lt;opc&gt;68&lt;/opc&gt;
</span><del>-            &lt;opr&gt;Iz&lt;/opr&gt;
-            &lt;syn&gt;cast&lt;/syn&gt;
</del><ins>+            &lt;opr&gt;sIz&lt;/opr&gt;
+            &lt;mode&gt;def64&lt;/mode&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso oso rexw rexr rexx rexb&lt;/pfx&gt;
</span><span class="lines">@@ -6653,9 +7044,10 @@
</span><span class="cx">             &lt;mode&gt;def64&lt;/mode&gt;
</span><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><ins>+            &lt;pfx&gt;oso&lt;/pfx&gt;
</ins><span class="cx">             &lt;opc&gt;6a&lt;/opc&gt;
</span><del>-            &lt;opr&gt;Ib&lt;/opr&gt;
-            &lt;syn&gt;sext&lt;/syn&gt;
</del><ins>+            &lt;opr&gt;sIb&lt;/opr&gt;
+            &lt;mode&gt;def64&lt;/mode&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -6663,7 +7055,7 @@
</span><span class="cx">         &lt;mnemonic&gt;pusha&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;oso&lt;/pfx&gt;
</span><del>-            &lt;opc&gt;60 /o=16&lt;/opc&gt;
</del><ins>+            &lt;opc&gt;60 /o=16 /m=!64&lt;/opc&gt;
</ins><span class="cx">             &lt;mode&gt;inv64&lt;/mode&gt;
</span><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="lines">@@ -6672,7 +7064,7 @@
</span><span class="cx">         &lt;mnemonic&gt;pushad&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;oso&lt;/pfx&gt;
</span><del>-            &lt;opc&gt;60 /o=32&lt;/opc&gt;
</del><ins>+            &lt;opc&gt;60 /o=32 /m=!64&lt;/opc&gt;
</ins><span class="cx">             &lt;mode&gt;inv64&lt;/mode&gt;
</span><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="lines">@@ -6681,15 +7073,9 @@
</span><span class="cx">         &lt;mnemonic&gt;pushfw&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;oso&lt;/pfx&gt;
</span><del>-            &lt;opc&gt;9c /m=32 /o=16&lt;/opc&gt;
-            &lt;mode&gt;def64&lt;/mode&gt;
</del><ins>+            &lt;opc&gt;9c /m=!64 /o=16&lt;/opc&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><del>-            &lt;pfx&gt;oso&lt;/pfx&gt;
-            &lt;opc&gt;9c /m=16 /o=16&lt;/opc&gt;
-            &lt;mode&gt;def64&lt;/mode&gt;
-        &lt;/def&gt;
-        &lt;def&gt;
</del><span class="cx">             &lt;pfx&gt;oso rexw&lt;/pfx&gt;
</span><span class="cx">             &lt;opc&gt;9c /m=64 /o=16&lt;/opc&gt;
</span><span class="cx">             &lt;mode&gt;def64&lt;/mode&gt;
</span><span class="lines">@@ -6700,14 +7086,8 @@
</span><span class="cx">         &lt;mnemonic&gt;pushfd&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;oso&lt;/pfx&gt;
</span><del>-            &lt;opc&gt;9c /m=16 /o=32&lt;/opc&gt;
-            &lt;mode&gt;def64&lt;/mode&gt;
</del><ins>+            &lt;opc&gt;9c /m=!64 /o=32&lt;/opc&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><del>-        &lt;def&gt;
-            &lt;pfx&gt;oso&lt;/pfx&gt;
-            &lt;opc&gt;9c /m=32 /o=32&lt;/opc&gt;
-            &lt;mode&gt;def64&lt;/mode&gt;
-        &lt;/def&gt;
</del><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="cx">     &lt;instruction&gt;
</span><span class="lines">@@ -6728,8 +7108,9 @@
</span><span class="cx">         &lt;mnemonic&gt;pxor&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><del>-            &lt;opc&gt;sse66 0f ef&lt;/opc&gt;
-            &lt;opr&gt;V W&lt;/opr&gt;
</del><ins>+            &lt;opc&gt;/sse=66 0f ef&lt;/opc&gt;
+            &lt;opr&gt;V H W&lt;/opr&gt;
+            &lt;cpuid&gt;sse2 avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><span class="lines">@@ -6759,13 +7140,11 @@
</span><span class="cx">             &lt;pfx&gt;aso rexw rexr rexx rexb&lt;/pfx&gt;
</span><span class="cx">             &lt;opc&gt;d2 /reg=2&lt;/opc&gt;
</span><span class="cx">             &lt;opr&gt;Eb CL&lt;/opr&gt;
</span><del>-            &lt;syn&gt;cast&lt;/syn&gt;
</del><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso oso rexw rexr rexx rexb&lt;/pfx&gt;
</span><span class="cx">             &lt;opc&gt;d3 /reg=2&lt;/opc&gt;
</span><span class="cx">             &lt;opr&gt;Ev CL&lt;/opr&gt;
</span><del>-            &lt;syn&gt;cast&lt;/syn&gt;
</del><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso oso rexw rexr rexx rexb&lt;/pfx&gt;
</span><span class="lines">@@ -6800,13 +7179,11 @@
</span><span class="cx">             &lt;pfx&gt;aso rexw rexr rexx rexb&lt;/pfx&gt;
</span><span class="cx">             &lt;opc&gt;d2 /reg=3&lt;/opc&gt;
</span><span class="cx">             &lt;opr&gt;Eb CL&lt;/opr&gt;
</span><del>-            &lt;syn&gt;cast&lt;/syn&gt;
</del><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso oso rexw rexr rexx rexb&lt;/pfx&gt;
</span><span class="cx">             &lt;opc&gt;d3 /reg=3&lt;/opc&gt;
</span><span class="cx">             &lt;opr&gt;Ev CL&lt;/opr&gt;
</span><del>-            &lt;syn&gt;cast&lt;/syn&gt;
</del><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -6831,13 +7208,11 @@
</span><span class="cx">             &lt;pfx&gt;aso rexw rexr rexx rexb&lt;/pfx&gt;
</span><span class="cx">             &lt;opc&gt;d2 /reg=0&lt;/opc&gt;
</span><span class="cx">             &lt;opr&gt;Eb CL&lt;/opr&gt;
</span><del>-            &lt;syn&gt;cast&lt;/syn&gt; 
</del><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso oso rexw rexr rexx rexb&lt;/pfx&gt;
</span><span class="cx">             &lt;opc&gt;d3 /reg=0&lt;/opc&gt;
</span><span class="cx">             &lt;opr&gt;Ev CL&lt;/opr&gt;
</span><del>-            &lt;syn&gt;cast&lt;/syn&gt; 
</del><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso oso rexw rexr rexx rexb&lt;/pfx&gt;
</span><span class="lines">@@ -6872,22 +7247,21 @@
</span><span class="cx">             &lt;pfx&gt;aso rexw rexr rexx rexb&lt;/pfx&gt;
</span><span class="cx">             &lt;opc&gt;d2 /reg=1&lt;/opc&gt;
</span><span class="cx">             &lt;opr&gt;Eb CL&lt;/opr&gt;
</span><del>-            &lt;syn&gt;cast&lt;/syn&gt;
</del><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso oso rexw rexr rexx rexb&lt;/pfx&gt;
</span><span class="cx">             &lt;opc&gt;d3 /reg=1&lt;/opc&gt;
</span><span class="cx">             &lt;opr&gt;Ev CL&lt;/opr&gt;
</span><del>-            &lt;syn&gt;cast&lt;/syn&gt;
</del><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;rcpps&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><del>-            &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</del><ins>+            &lt;pfx&gt;aso rexr rexx rexb vexl&lt;/pfx&gt;
</ins><span class="cx">             &lt;opc&gt;0f 53&lt;/opc&gt;
</span><span class="cx">             &lt;opr&gt;V W&lt;/opr&gt;
</span><ins>+            &lt;cpuid&gt;sse avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -6895,8 +7269,9 @@
</span><span class="cx">         &lt;mnemonic&gt;rcpss&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><del>-            &lt;opc&gt;ssef3 0f 53&lt;/opc&gt;
</del><ins>+            &lt;opc&gt;/sse=f3 0f 53&lt;/opc&gt;
</ins><span class="cx">             &lt;opr&gt;V W&lt;/opr&gt;
</span><ins>+            &lt;cpuid&gt;sse avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -6975,9 +7350,10 @@
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;rsqrtps&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><del>-            &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</del><ins>+            &lt;pfx&gt;aso rexr rexx rexb vexl&lt;/pfx&gt;
</ins><span class="cx">             &lt;opc&gt;0f 52&lt;/opc&gt;
</span><span class="cx">             &lt;opr&gt;V W&lt;/opr&gt;
</span><ins>+            &lt;cpuid&gt;sse avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -6985,8 +7361,9 @@
</span><span class="cx">         &lt;mnemonic&gt;rsqrtss&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><del>-            &lt;opc&gt;ssef3 0f 52&lt;/opc&gt;
</del><ins>+            &lt;opc&gt;/sse=f3 0f 52&lt;/opc&gt;
</ins><span class="cx">             &lt;opr&gt;V W&lt;/opr&gt;
</span><ins>+            &lt;cpuid&gt;sse avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -7004,7 +7381,7 @@
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;salc&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><del>-            &lt;opc&gt;d6&lt;/opc&gt;
</del><ins>+            &lt;opc&gt;d6 /m=!64&lt;/opc&gt;
</ins><span class="cx">             &lt;mode&gt;inv64&lt;/mode&gt;
</span><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="lines">@@ -7035,13 +7412,11 @@
</span><span class="cx">             &lt;pfx&gt;aso rexw rexr rexx rexb&lt;/pfx&gt;
</span><span class="cx">             &lt;opc&gt;d2 /reg=7&lt;/opc&gt;
</span><span class="cx">             &lt;opr&gt;Eb CL&lt;/opr&gt;
</span><del>-            &lt;syn&gt;cast&lt;/syn&gt;
</del><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso oso rexw rexr rexx rexb&lt;/pfx&gt;
</span><span class="cx">             &lt;opc&gt;d3 /reg=7&lt;/opc&gt;
</span><span class="cx">             &lt;opr&gt;Ev CL&lt;/opr&gt;
</span><del>-            &lt;syn&gt;cast&lt;/syn&gt;
</del><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -7066,13 +7441,11 @@
</span><span class="cx">             &lt;pfx&gt;aso rexw rexr rexx rexb&lt;/pfx&gt;
</span><span class="cx">             &lt;opc&gt;d2 /reg=6&lt;/opc&gt;
</span><span class="cx">             &lt;opr&gt;Eb CL&lt;/opr&gt;
</span><del>-            &lt;syn&gt;cast&lt;/syn&gt;
</del><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso oso rexw rexr rexx rexb&lt;/pfx&gt;
</span><span class="cx">             &lt;opc&gt;d3 /reg=6&lt;/opc&gt;
</span><span class="cx">             &lt;opr&gt;Ev CL&lt;/opr&gt;
</span><del>-            &lt;syn&gt;cast&lt;/syn&gt;
</del><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso oso rexw rexr rexx rexb&lt;/pfx&gt;
</span><span class="lines">@@ -7083,7 +7456,6 @@
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><span class="cx">             &lt;opc&gt;d2 /reg=4&lt;/opc&gt;
</span><span class="cx">             &lt;opr&gt;Eb CL&lt;/opr&gt;
</span><del>-            &lt;syn&gt;cast&lt;/syn&gt;
</del><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso oso rexw rexr rexx rexb&lt;/pfx&gt;
</span><span class="lines">@@ -7123,7 +7495,6 @@
</span><span class="cx">             &lt;pfx&gt;aso rexw rexr rexx rexb&lt;/pfx&gt;
</span><span class="cx">             &lt;opc&gt;d2 /reg=5&lt;/opc&gt;
</span><span class="cx">             &lt;opr&gt;Eb CL&lt;/opr&gt;
</span><del>-            &lt;syn&gt;cast&lt;/syn&gt;
</del><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso oso rexw rexr rexx rexb&lt;/pfx&gt;
</span><span class="lines">@@ -7144,7 +7515,6 @@
</span><span class="cx">             &lt;pfx&gt;aso oso rexw rexr rexx rexb&lt;/pfx&gt;
</span><span class="cx">             &lt;opc&gt;d3 /reg=5&lt;/opc&gt;
</span><span class="cx">             &lt;opr&gt;Ev CL&lt;/opr&gt;
</span><del>-            &lt;syn&gt;cast&lt;/syn&gt;
</del><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -7177,8 +7547,7 @@
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;oso rexw&lt;/pfx&gt;
</span><span class="cx">             &lt;opc&gt;1d&lt;/opc&gt;
</span><del>-            &lt;opr&gt;rAX Iz&lt;/opr&gt;
-            &lt;syn&gt;sext&lt;/syn&gt;
</del><ins>+            &lt;opr&gt;rAX sIz&lt;/opr&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><span class="lines">@@ -7188,26 +7557,25 @@
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso oso rexw rexr rexx rexb&lt;/pfx&gt;
</span><span class="cx">             &lt;opc&gt;81 /reg=3&lt;/opc&gt;
</span><del>-            &lt;opr&gt;Ev Iz&lt;/opr&gt;
-            &lt;syn&gt;sext&lt;/syn&gt;
</del><ins>+            &lt;opr&gt;Ev sIz&lt;/opr&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><del>-            &lt;opc&gt;82 /reg=3&lt;/opc&gt;
</del><ins>+            &lt;opc&gt;82 /reg=3 /m=!64&lt;/opc&gt;
</ins><span class="cx">             &lt;opr&gt;Eb Ib&lt;/opr&gt;
</span><span class="cx">             &lt;mode&gt;inv64&lt;/mode&gt;
</span><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso oso rexw rexr rexx rexb&lt;/pfx&gt;
</span><span class="cx">             &lt;opc&gt;83 /reg=3&lt;/opc&gt;
</span><del>-            &lt;opr&gt;Ev Ib&lt;/opr&gt;
-            &lt;syn&gt;sext&lt;/syn&gt;
</del><ins>+            &lt;opr&gt;Ev sIb&lt;/opr&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;scasb&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><ins>+            &lt;pfx&gt;repz&lt;/pfx&gt;
</ins><span class="cx">             &lt;opc&gt;ae&lt;/opc&gt;
</span><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="lines">@@ -7215,7 +7583,7 @@
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;scasw&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><del>-            &lt;pfx&gt;oso rexw&lt;/pfx&gt;
</del><ins>+            &lt;pfx&gt;repz oso rexw&lt;/pfx&gt;
</ins><span class="cx">             &lt;opc&gt;af /o=16&lt;/opc&gt;
</span><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="lines">@@ -7223,7 +7591,7 @@
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;scasd&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><del>-            &lt;pfx&gt;oso rexw&lt;/pfx&gt;
</del><ins>+            &lt;pfx&gt;repz oso rexw&lt;/pfx&gt;
</ins><span class="cx">             &lt;opc&gt;af /o=32&lt;/opc&gt;
</span><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="lines">@@ -7231,7 +7599,7 @@
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;scasq&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><del>-            &lt;pfx&gt;oso rexw&lt;/pfx&gt;
</del><ins>+            &lt;pfx&gt;repz oso rexw&lt;/pfx&gt;
</ins><span class="cx">             &lt;opc&gt;af /o=64&lt;/opc&gt;
</span><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="lines">@@ -7264,7 +7632,7 @@
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="cx">     &lt;instruction&gt;
</span><del>-        &lt;mnemonic&gt;setnb&lt;/mnemonic&gt;
</del><ins>+        &lt;mnemonic&gt;setae&lt;/mnemonic&gt;
</ins><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><span class="cx">             &lt;opc&gt;0f 93&lt;/opc&gt;
</span><span class="lines">@@ -7448,9 +7816,10 @@
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;shufpd&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><del>-            &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
-            &lt;opc&gt;sse66 0f c6&lt;/opc&gt;
-            &lt;opr&gt;V W Ib&lt;/opr&gt;
</del><ins>+            &lt;pfx&gt;aso rexr rexx rexb vexl&lt;/pfx&gt;
+            &lt;opc&gt;/sse=66 0f c6&lt;/opc&gt;
+            &lt;opr&gt;V H W Ib&lt;/opr&gt;
+            &lt;cpuid&gt;sse2 avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -7459,7 +7828,8 @@
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><span class="cx">             &lt;opc&gt;0f c6&lt;/opc&gt;
</span><del>-            &lt;opr&gt;V W Ib&lt;/opr&gt;
</del><ins>+            &lt;opr&gt;V H W Ib&lt;/opr&gt;
+            &lt;cpuid&gt;sse2 avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -7475,7 +7845,7 @@
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;sldt&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><del>-            &lt;pfx&gt;aso oso rexr rexx rexb&lt;/pfx&gt;
</del><ins>+            &lt;pfx&gt;aso oso rexr rexw rexx rexb&lt;/pfx&gt;
</ins><span class="cx">             &lt;opc&gt;0f 00 /reg=0&lt;/opc&gt;
</span><span class="cx">             &lt;opr&gt;MwRv&lt;/opr&gt;
</span><span class="cx">         &lt;/def&gt;
</span><span class="lines">@@ -7484,18 +7854,24 @@
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;smsw&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><del>-            &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</del><ins>+            &lt;pfx&gt;aso oso rexr rexw rexx rexb&lt;/pfx&gt;
</ins><span class="cx">             &lt;opc&gt;0f 01 /reg=4 /mod=!11&lt;/opc&gt;
</span><del>-            &lt;opr&gt;M&lt;/opr&gt;
</del><ins>+            &lt;opr&gt;MwRv&lt;/opr&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><ins>+        &lt;def&gt;
+            &lt;pfx&gt;aso oso rexr rexw rexx rexb&lt;/pfx&gt;
+            &lt;opc&gt;0f 01 /reg=4 /mod=11&lt;/opc&gt;
+            &lt;opr&gt;MwRv&lt;/opr&gt;
+        &lt;/def&gt;
</ins><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;sqrtps&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><del>-            &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</del><ins>+            &lt;pfx&gt;aso rexr rexx rexb vexl&lt;/pfx&gt;
</ins><span class="cx">             &lt;opc&gt;0f 51&lt;/opc&gt;
</span><span class="cx">             &lt;opr&gt;V W&lt;/opr&gt;
</span><ins>+            &lt;cpuid&gt;sse avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -7503,8 +7879,9 @@
</span><span class="cx">         &lt;mnemonic&gt;sqrtpd&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><del>-            &lt;opc&gt;sse66 0f 51&lt;/opc&gt;
</del><ins>+            &lt;opc&gt;/sse=66 0f 51&lt;/opc&gt;
</ins><span class="cx">             &lt;opr&gt;V W&lt;/opr&gt;
</span><ins>+            &lt;cpuid&gt;sse2 avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -7512,8 +7889,9 @@
</span><span class="cx">         &lt;mnemonic&gt;sqrtsd&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><del>-            &lt;opc&gt;ssef2 0f 51&lt;/opc&gt;
-            &lt;opr&gt;V W&lt;/opr&gt;
</del><ins>+            &lt;opc&gt;/sse=f2 0f 51&lt;/opc&gt;
+            &lt;opr&gt;V H W&lt;/opr&gt;
+            &lt;cpuid&gt;sse2 avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -7521,8 +7899,9 @@
</span><span class="cx">         &lt;mnemonic&gt;sqrtss&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><del>-            &lt;opc&gt;ssef3 0f 51&lt;/opc&gt;
-            &lt;opr&gt;V W&lt;/opr&gt;
</del><ins>+            &lt;opc&gt;/sse=f3 0f 51&lt;/opc&gt;
+            &lt;opr&gt;V H W&lt;/opr&gt;
+            &lt;cpuid&gt;sse avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -7567,15 +7946,16 @@
</span><span class="cx">         &lt;mnemonic&gt;stmxcsr&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexw rexr rexx rexb&lt;/pfx&gt;
</span><del>-            &lt;opc&gt;0f ae /mod=11 /reg=3&lt;/opc&gt;
</del><ins>+            &lt;opc&gt;0f ae /mod=!11 /reg=3&lt;/opc&gt;
</ins><span class="cx">             &lt;opr&gt;Md&lt;/opr&gt;
</span><ins>+            &lt;cpuid&gt;sse avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;stosb&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><del>-            &lt;pfx&gt;seg&lt;/pfx&gt;
</del><ins>+            &lt;pfx&gt;rep seg&lt;/pfx&gt;
</ins><span class="cx">             &lt;opc&gt;aa&lt;/opc&gt;
</span><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="lines">@@ -7583,7 +7963,7 @@
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;stosw&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><del>-            &lt;pfx&gt;seg oso rexw&lt;/pfx&gt;
</del><ins>+            &lt;pfx&gt;rep seg oso rexw&lt;/pfx&gt;
</ins><span class="cx">             &lt;opc&gt;ab /o=16&lt;/opc&gt;
</span><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="lines">@@ -7591,7 +7971,7 @@
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;stosd&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><del>-            &lt;pfx&gt;seg oso rexw&lt;/pfx&gt;
</del><ins>+            &lt;pfx&gt;rep seg oso rexw&lt;/pfx&gt;
</ins><span class="cx">             &lt;opc&gt;ab /o=32&lt;/opc&gt;
</span><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="lines">@@ -7599,7 +7979,7 @@
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;stosq&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><del>-            &lt;pfx&gt;seg oso rexw&lt;/pfx&gt;
</del><ins>+            &lt;pfx&gt;rep seg oso rexw&lt;/pfx&gt;
</ins><span class="cx">             &lt;opc&gt;ab /o=64&lt;/opc&gt;
</span><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="lines">@@ -7607,9 +7987,9 @@
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;str&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><del>-            &lt;pfx&gt;aso oso rexr rexx rexb&lt;/pfx&gt;
</del><ins>+            &lt;pfx&gt;aso oso rexr rexw rexx rexb&lt;/pfx&gt;
</ins><span class="cx">             &lt;opc&gt;0f 00 /reg=1&lt;/opc&gt;
</span><del>-            &lt;opr&gt;Ev&lt;/opr&gt;
</del><ins>+            &lt;opr&gt;MwRv&lt;/opr&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -7642,8 +8022,7 @@
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;oso rexw&lt;/pfx&gt;
</span><span class="cx">             &lt;opc&gt;2d&lt;/opc&gt;
</span><del>-            &lt;opr&gt;rAX Iz&lt;/opr&gt;
-            &lt;syn&gt;sext&lt;/syn&gt;
</del><ins>+            &lt;opr&gt;rAX sIz&lt;/opr&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><span class="lines">@@ -7653,38 +8032,38 @@
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso oso rexw rexr rexx rexb&lt;/pfx&gt;
</span><span class="cx">             &lt;opc&gt;81 /reg=5&lt;/opc&gt;
</span><del>-            &lt;opr&gt;Ev Iz&lt;/opr&gt;
-            &lt;syn&gt;sext&lt;/syn&gt;
</del><ins>+            &lt;opr&gt;Ev sIz&lt;/opr&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><del>-            &lt;opc&gt;82 /reg=5&lt;/opc&gt;
</del><ins>+            &lt;opc&gt;82 /reg=5 /m=!64&lt;/opc&gt;
</ins><span class="cx">             &lt;opr&gt;Eb Ib&lt;/opr&gt;
</span><span class="cx">             &lt;mode&gt;inv64&lt;/mode&gt;
</span><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso oso rexw rexr rexx rexb&lt;/pfx&gt;
</span><span class="cx">             &lt;opc&gt;83 /reg=5&lt;/opc&gt;
</span><del>-            &lt;opr&gt;Ev Ib&lt;/opr&gt;
-            &lt;syn&gt;sext&lt;/syn&gt;
</del><ins>+            &lt;opr&gt;Ev sIb&lt;/opr&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;subpd&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><del>-            &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
-            &lt;opc&gt;sse66 0f 5c&lt;/opc&gt;
-            &lt;opr&gt;V W&lt;/opr&gt;
</del><ins>+            &lt;pfx&gt;aso rexr rexx rexb vexl&lt;/pfx&gt;
+            &lt;opc&gt;/sse=66 0f 5c&lt;/opc&gt;
+            &lt;opr&gt;V H W&lt;/opr&gt;
+            &lt;cpuid&gt;sse2 avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;subps&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><del>-            &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</del><ins>+            &lt;pfx&gt;aso rexr rexx rexb vexl&lt;/pfx&gt;
</ins><span class="cx">             &lt;opc&gt;0f 5c&lt;/opc&gt;
</span><del>-            &lt;opr&gt;V W&lt;/opr&gt;
</del><ins>+            &lt;opr&gt;V H W&lt;/opr&gt;
+            &lt;cpuid&gt;sse avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -7692,8 +8071,9 @@
</span><span class="cx">         &lt;mnemonic&gt;subsd&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><del>-            &lt;opc&gt;ssef2 0f 5c&lt;/opc&gt;
-            &lt;opr&gt;V W&lt;/opr&gt;
</del><ins>+            &lt;opc&gt;/sse=f2 0f 5c&lt;/opc&gt;
+            &lt;opr&gt;V H W&lt;/opr&gt;
+            &lt;cpuid&gt;sse2 avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -7701,8 +8081,9 @@
</span><span class="cx">         &lt;mnemonic&gt;subss&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><del>-            &lt;opc&gt;ssef3 0f 5c&lt;/opc&gt;
-            &lt;opr&gt;V W&lt;/opr&gt;
</del><ins>+            &lt;opc&gt;/sse=f3 0f 5c&lt;/opc&gt;
+            &lt;opr&gt;V H W&lt;/opr&gt;
+            &lt;cpuid&gt;sse avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -7723,16 +8104,23 @@
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;sysenter&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><del>-            &lt;opc&gt;0f 34&lt;/opc&gt;
-            &lt;mode&gt;inv64&lt;/mode&gt;
</del><ins>+            &lt;opc&gt;0f 34 /m=!64&lt;/opc&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><ins>+        &lt;def&gt;
+            &lt;opc&gt;0f 34 /m=64&lt;/opc&gt;
+            &lt;vendor&gt;intel&lt;/vendor&gt;
+        &lt;/def&gt;
</ins><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;sysexit&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><del>-            &lt;opc&gt;0f 35&lt;/opc&gt;
</del><ins>+            &lt;opc&gt;0f 35 /m=!64&lt;/opc&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><ins>+        &lt;def&gt;
+            &lt;opc&gt;0f 35 /m=64&lt;/opc&gt;
+            &lt;vendor&gt;intel&lt;/vendor&gt;
+        &lt;/def&gt;
</ins><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="cx">     &lt;instruction&gt;
</span><span class="lines">@@ -7766,8 +8154,7 @@
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;oso rexw&lt;/pfx&gt;
</span><span class="cx">             &lt;opc&gt;a9&lt;/opc&gt;
</span><del>-            &lt;opr&gt;rAX Iz&lt;/opr&gt;
-            &lt;syn&gt;sext&lt;/syn&gt;
</del><ins>+            &lt;opr&gt;rAX sIz&lt;/opr&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexw rexr rexx rexb&lt;/pfx&gt;
</span><span class="lines">@@ -7777,14 +8164,12 @@
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso oso rexw rexr rexx rexb&lt;/pfx&gt;
</span><span class="cx">             &lt;opc&gt;f7 /reg=0&lt;/opc&gt;
</span><del>-            &lt;opr&gt;Ev Iz&lt;/opr&gt;
-            &lt;syn&gt;sext&lt;/syn&gt;
</del><ins>+            &lt;opr&gt;Ev sIz&lt;/opr&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso oso rexw rexr rexx rexb&lt;/pfx&gt;
</span><span class="cx">             &lt;opc&gt;f7 /reg=1&lt;/opc&gt;
</span><span class="cx">             &lt;opr&gt;Ev Iz&lt;/opr&gt;
</span><del>-            &lt;syn&gt;sext&lt;/syn&gt;
</del><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -7792,8 +8177,9 @@
</span><span class="cx">         &lt;mnemonic&gt;ucomisd&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><del>-            &lt;opc&gt;sse66 0f 2e&lt;/opc&gt;
</del><ins>+            &lt;opc&gt;/sse=66 0f 2e&lt;/opc&gt;
</ins><span class="cx">             &lt;opr&gt;V W&lt;/opr&gt;
</span><ins>+            &lt;cpuid&gt;sse2 avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -7803,6 +8189,7 @@
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><span class="cx">             &lt;opc&gt;0f 2e&lt;/opc&gt;
</span><span class="cx">             &lt;opr&gt;V W&lt;/opr&gt;
</span><ins>+            &lt;cpuid&gt;sse avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -7816,9 +8203,10 @@
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;unpckhpd&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><del>-            &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
-            &lt;opc&gt;sse66 0f 15&lt;/opc&gt;
-            &lt;opr&gt;V W&lt;/opr&gt;
</del><ins>+            &lt;pfx&gt;aso rexr rexx rexb vexl&lt;/pfx&gt;
+            &lt;opc&gt;/sse=66 0f 15&lt;/opc&gt;
+            &lt;opr&gt;V H W&lt;/opr&gt;
+            &lt;cpuid&gt;sse2 avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -7827,7 +8215,8 @@
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><span class="cx">             &lt;opc&gt;0f 15&lt;/opc&gt;
</span><del>-            &lt;opr&gt;V W&lt;/opr&gt;
</del><ins>+            &lt;opr&gt;V H W&lt;/opr&gt;
+            &lt;cpuid&gt;sse avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -7836,16 +8225,18 @@
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><span class="cx">             &lt;opc&gt;0f 14&lt;/opc&gt;
</span><del>-            &lt;opr&gt;V W&lt;/opr&gt;
</del><ins>+            &lt;opr&gt;V H W&lt;/opr&gt;
+            &lt;cpuid&gt;sse avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;unpcklpd&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><del>-            &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
-            &lt;opc&gt;sse66 0f 14&lt;/opc&gt;
-            &lt;opr&gt;V W&lt;/opr&gt;
</del><ins>+            &lt;pfx&gt;aso rexr rexx rexb vexl&lt;/pfx&gt;
+            &lt;opc&gt;/sse=66 0f 14&lt;/opc&gt;
+            &lt;opr&gt;V H W&lt;/opr&gt;
+            &lt;cpuid&gt;sse2 avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -7876,11 +8267,21 @@
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="cx">     &lt;instruction&gt;
</span><ins>+        &lt;mnemonic&gt;rdrand&lt;/mnemonic&gt;
+        &lt;def&gt;
+            &lt;pfx&gt;oso rexr rexw rexx rexb&lt;/pfx&gt;
+            &lt;opc&gt;0f c7 /mod=11 /reg=6&lt;/opc&gt;
+            &lt;opr&gt;R&lt;/opr&gt;
+        &lt;/def&gt;
+        &lt;cpuid&gt;rdrand&lt;/cpuid&gt;
+    &lt;/instruction&gt;
+
+    &lt;instruction&gt;
</ins><span class="cx">         &lt;mnemonic&gt;vmclear&lt;/mnemonic&gt;
</span><span class="cx">         &lt;vendor&gt;intel&lt;/vendor&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><del>-            &lt;opc&gt;sse66 0f c7 /reg=6&lt;/opc&gt;
</del><ins>+            &lt;opc&gt;/sse=66 0f c7 /mod=!11 /reg=6&lt;/opc&gt;
</ins><span class="cx">             &lt;opr&gt;Mq&lt;/opr&gt;
</span><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="lines">@@ -7890,7 +8291,7 @@
</span><span class="cx">         &lt;vendor&gt;intel&lt;/vendor&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><del>-            &lt;opc&gt;ssef3 0f c7 /reg=6&lt;/opc&gt;
</del><ins>+            &lt;opc&gt;/sse=f3 0f c7 /mod=!11 /reg=6&lt;/opc&gt;
</ins><span class="cx">             &lt;opr&gt;Mq&lt;/opr&gt;
</span><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="lines">@@ -7900,7 +8301,7 @@
</span><span class="cx">         &lt;vendor&gt;intel&lt;/vendor&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><del>-            &lt;opc&gt;0f c7 /reg=6&lt;/opc&gt;
</del><ins>+            &lt;opc&gt;0f c7 /mod=!11 /reg=6&lt;/opc&gt;
</ins><span class="cx">             &lt;opr&gt;Mq&lt;/opr&gt;
</span><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="lines">@@ -7910,7 +8311,7 @@
</span><span class="cx">         &lt;vendor&gt;intel&lt;/vendor&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><del>-            &lt;opc&gt;0f c7 /reg=7&lt;/opc&gt;
</del><ins>+            &lt;opc&gt;0f c7 /mod=!11 /reg=7&lt;/opc&gt;
</ins><span class="cx">             &lt;opr&gt;Mq&lt;/opr&gt;
</span><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="lines">@@ -7944,22 +8345,10 @@
</span><span class="cx">         &lt;vendor&gt;intel&lt;/vendor&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><del>-            &lt;opc&gt;0f 78 /m=16&lt;/opc&gt;
-            &lt;opr&gt;Ed Gd&lt;/opr&gt;
</del><ins>+            &lt;opc&gt;0f 78&lt;/opc&gt;
+            &lt;opr&gt;Ey Gy&lt;/opr&gt;
</ins><span class="cx">             &lt;mode&gt;def64&lt;/mode&gt;
</span><span class="cx">         &lt;/def&gt;
</span><del>-        &lt;def&gt;
-            &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
-            &lt;opc&gt;0f 78 /m=32&lt;/opc&gt;
-            &lt;opr&gt;Ed Gd&lt;/opr&gt;
-            &lt;mode&gt;def64&lt;/mode&gt;
-        &lt;/def&gt;
-        &lt;def&gt;
-            &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
-            &lt;opc&gt;0f 78 /m=64&lt;/opc&gt;
-            &lt;opr&gt;Eq Gq&lt;/opr&gt;
-            &lt;mode&gt;def64&lt;/mode&gt;
-        &lt;/def&gt;
</del><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="cx">     &lt;instruction&gt;
</span><span class="lines">@@ -7967,22 +8356,10 @@
</span><span class="cx">         &lt;vendor&gt;intel&lt;/vendor&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><del>-            &lt;opc&gt;0f 79 /m=16&lt;/opc&gt;
-            &lt;opr&gt;Gd Ed&lt;/opr&gt;
</del><ins>+            &lt;opc&gt;0f 79&lt;/opc&gt;
+            &lt;opr&gt;Gy Ey&lt;/opr&gt;
</ins><span class="cx">             &lt;mode&gt;def64&lt;/mode&gt;
</span><span class="cx">         &lt;/def&gt;
</span><del>-        &lt;def&gt;
-            &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
-            &lt;opc&gt;0f 79 /m=32&lt;/opc&gt;
-            &lt;opr&gt;Gd Ed&lt;/opr&gt;
-            &lt;mode&gt;def64&lt;/mode&gt;
-        &lt;/def&gt;
-        &lt;def&gt;
-            &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
-            &lt;opc&gt;0f 79 /m=64&lt;/opc&gt;
-            &lt;opr&gt;Gq Eq&lt;/opr&gt;
-            &lt;mode&gt;def64&lt;/mode&gt;
-        &lt;/def&gt;
</del><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="cx">     &lt;instruction&gt;
</span><span class="lines">@@ -8067,49 +8444,56 @@
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;oso rexw rexb&lt;/pfx&gt;
</span><span class="cx">             &lt;opc&gt;90&lt;/opc&gt;
</span><del>-            &lt;opr&gt;rAXr8 rAX&lt;/opr&gt;
</del><ins>+            &lt;opr&gt;R0v rAX&lt;/opr&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;oso rexw rexb&lt;/pfx&gt;
</span><span class="cx">             &lt;opc&gt;91&lt;/opc&gt;
</span><del>-            &lt;opr&gt;rCXr9 rAX&lt;/opr&gt;
</del><ins>+            &lt;opr&gt;R1v rAX&lt;/opr&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;oso rexw rexb&lt;/pfx&gt;
</span><span class="cx">             &lt;opc&gt;92&lt;/opc&gt;
</span><del>-            &lt;opr&gt;rDXr10 rAX&lt;/opr&gt;
</del><ins>+            &lt;opr&gt;R2v rAX&lt;/opr&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;oso rexw rexb&lt;/pfx&gt;
</span><span class="cx">             &lt;opc&gt;93&lt;/opc&gt;
</span><del>-            &lt;opr&gt;rBXr11 rAX&lt;/opr&gt;
</del><ins>+            &lt;opr&gt;R3v rAX&lt;/opr&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;oso rexw rexb&lt;/pfx&gt;
</span><span class="cx">             &lt;opc&gt;94&lt;/opc&gt;
</span><del>-            &lt;opr&gt;rSPr12 rAX&lt;/opr&gt;
</del><ins>+            &lt;opr&gt;R4v rAX&lt;/opr&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;oso rexw rexb&lt;/pfx&gt;
</span><span class="cx">             &lt;opc&gt;95&lt;/opc&gt;
</span><del>-            &lt;opr&gt;rBPr13 rAX&lt;/opr&gt;
</del><ins>+            &lt;opr&gt;R5v rAX&lt;/opr&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;oso rexw rexb&lt;/pfx&gt;
</span><span class="cx">             &lt;opc&gt;96&lt;/opc&gt;
</span><del>-            &lt;opr&gt;rSIr14 rAX&lt;/opr&gt;
</del><ins>+            &lt;opr&gt;R6v rAX&lt;/opr&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;oso rexw rexb&lt;/pfx&gt;
</span><span class="cx">             &lt;opc&gt;97&lt;/opc&gt;
</span><del>-            &lt;opr&gt;rDIr15 rAX&lt;/opr&gt;
</del><ins>+            &lt;opr&gt;R7v rAX&lt;/opr&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="cx">     &lt;instruction&gt;
</span><ins>+        &lt;mnemonic&gt;xgetbv&lt;/mnemonic&gt;
+    &lt;def&gt;
+        &lt;opc&gt;0f 01 /mod=11 /reg=2 /rm=0&lt;/opc&gt;
+    &lt;/def&gt;
+    &lt;/instruction&gt;
+
+    &lt;instruction&gt;
</ins><span class="cx">         &lt;mnemonic&gt;xlatb&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><del>-            &lt;pfx&gt;rexw&lt;/pfx&gt;
</del><ins>+            &lt;pfx&gt;rexw seg&lt;/pfx&gt;
</ins><span class="cx">             &lt;opc&gt;d7&lt;/opc&gt;
</span><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="lines">@@ -8143,8 +8527,7 @@
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;oso rexw&lt;/pfx&gt;
</span><span class="cx">             &lt;opc&gt;35&lt;/opc&gt;
</span><del>-            &lt;opr&gt;rAX Iz&lt;/opr&gt;
-            &lt;syn&gt;sext&lt;/syn&gt;
</del><ins>+            &lt;opr&gt;rAX sIz&lt;/opr&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><span class="lines">@@ -8154,29 +8537,28 @@
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso oso rexw rexr rexx rexb&lt;/pfx&gt;
</span><span class="cx">             &lt;opc&gt;81 /reg=6&lt;/opc&gt;
</span><del>-            &lt;opr&gt;Ev Iz&lt;/opr&gt;
-            &lt;syn&gt;sext&lt;/syn&gt;
</del><ins>+            &lt;opr&gt;Ev sIz&lt;/opr&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><del>-            &lt;opc&gt;82 /reg=6&lt;/opc&gt;
</del><ins>+            &lt;opc&gt;82 /reg=6 /m=!64&lt;/opc&gt;
</ins><span class="cx">             &lt;opr&gt;Eb Ib&lt;/opr&gt;
</span><span class="cx">             &lt;mode&gt;inv64&lt;/mode&gt;
</span><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso oso rexw rexr rexx rexb&lt;/pfx&gt;
</span><span class="cx">             &lt;opc&gt;83 /reg=6&lt;/opc&gt;
</span><del>-            &lt;opr&gt;Ev Ib&lt;/opr&gt;
-            &lt;syn&gt;sext&lt;/syn&gt;
</del><ins>+            &lt;opr&gt;Ev sIb&lt;/opr&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;xorpd&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><del>-            &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
-            &lt;opc&gt;sse66 0f 57&lt;/opc&gt;
-            &lt;opr&gt;V W&lt;/opr&gt;
</del><ins>+            &lt;pfx&gt;aso rexr rexx rexb vexl&lt;/pfx&gt;
+            &lt;opc&gt;/sse=66 0f 57&lt;/opc&gt;
+            &lt;opr&gt;V H W&lt;/opr&gt;
+            &lt;cpuid&gt;sse2 avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -8185,7 +8567,8 @@
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><span class="cx">             &lt;opc&gt;0f 57&lt;/opc&gt;
</span><del>-            &lt;opr&gt;V W&lt;/opr&gt;
</del><ins>+            &lt;opr&gt;V H W&lt;/opr&gt;
+            &lt;cpuid&gt;sse2 avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -8225,6 +8608,31 @@
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="cx">     &lt;instruction&gt;
</span><ins>+        &lt;mnemonic&gt;xrstor&lt;/mnemonic&gt;
+    &lt;def&gt;
+        &lt;pfx&gt;aso rexw rexr rexx rexb&lt;/pfx&gt;
+        &lt;opc&gt;0f ae /reg=5 /mod=!11&lt;/opc&gt;
+        &lt;opr&gt;M&lt;/opr&gt;
+    &lt;/def&gt;
+    &lt;/instruction&gt;
+
+    &lt;instruction&gt;
+        &lt;mnemonic&gt;xsave&lt;/mnemonic&gt;
+    &lt;def&gt;
+        &lt;pfx&gt;aso rexw rexr rexx rexb&lt;/pfx&gt;
+        &lt;opc&gt;0f ae /reg=4 /mod=!11&lt;/opc&gt;
+        &lt;opr&gt;M&lt;/opr&gt;
+    &lt;/def&gt;
+    &lt;/instruction&gt;
+
+    &lt;instruction&gt;
+        &lt;mnemonic&gt;xsetbv&lt;/mnemonic&gt;
+    &lt;def&gt;
+        &lt;opc&gt;0f 01 /mod=11 /reg=2 /rm=1&lt;/opc&gt;
+    &lt;/def&gt;
+    &lt;/instruction&gt;
+
+    &lt;instruction&gt;
</ins><span class="cx">         &lt;mnemonic&gt;xsha1&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;opc&gt;0f a6 /mod=11 /rm=0 /reg=1&lt;/opc&gt;
</span><span class="lines">@@ -8246,56 +8654,86 @@
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="cx">     &lt;instruction&gt;
</span><del>-        &lt;mnemonic&gt;db&lt;/mnemonic&gt;
</del><ins>+        &lt;mnemonic&gt;pclmulqdq&lt;/mnemonic&gt;
+        &lt;def&gt;
+            &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
+            &lt;opc&gt;/sse=66 0f 3a 44&lt;/opc&gt;
+            &lt;opr&gt;V H W Ib&lt;/opr&gt;
+            &lt;cpuid&gt;aesni avx&lt;/cpuid&gt;
+        &lt;/def&gt;
</ins><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="cx">     &lt;!--
</span><ins>+    SMX
+      --&gt;
+
+    &lt;instruction&gt;
+        &lt;mnemonic&gt;getsec&lt;/mnemonic&gt;
+    &lt;cpuid&gt;smx&lt;/cpuid&gt;
+    &lt;def&gt;
+        &lt;opc&gt;0f 37&lt;/opc&gt;
+    &lt;/def&gt;
+    &lt;/instruction&gt;
+
+    &lt;!--
</ins><span class="cx">          SSE 2 
</span><span class="cx">      --&gt;
</span><span class="cx"> 
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;movdqa&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><del>-            &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
-            &lt;opc&gt;sse66 0f 7f&lt;/opc&gt;
</del><ins>+            &lt;pfx&gt;aso rexr rexx rexb vexl&lt;/pfx&gt;
+            &lt;opc&gt;/sse=66 0f 7f&lt;/opc&gt;
</ins><span class="cx">             &lt;opr&gt;W V&lt;/opr&gt;
</span><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><del>-            &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
-            &lt;opc&gt;sse66 0f 6f&lt;/opc&gt;
</del><ins>+            &lt;pfx&gt;aso rexr rexx rexb vexl&lt;/pfx&gt;
+            &lt;opc&gt;/sse=66 0f 6f&lt;/opc&gt;
</ins><span class="cx">             &lt;opr&gt;V W&lt;/opr&gt;
</span><span class="cx">         &lt;/def&gt;
</span><ins>+        &lt;cpuid&gt;sse2 avx&lt;/cpuid&gt;
</ins><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="cx">     &lt;instruction&gt;
</span><ins>+        &lt;mnemonic&gt;maskmovdqu&lt;/mnemonic&gt;
+        &lt;def&gt;
+            &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
+            &lt;opc&gt;/sse=66 0f f7 /mod=11&lt;/opc&gt;
+            &lt;opr&gt;V U&lt;/opr&gt;
+            &lt;cpuid&gt;sse2 avx&lt;/cpuid&gt;
+        &lt;/def&gt;
+    &lt;/instruction&gt;
+
+    &lt;instruction&gt;
</ins><span class="cx">         &lt;mnemonic&gt;movdq2q&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexb&lt;/pfx&gt;
</span><del>-            &lt;opc&gt;ssef2 0f d6&lt;/opc&gt;
-            &lt;opr&gt;P VR&lt;/opr&gt;
</del><ins>+            &lt;opc&gt;/sse=f2 0f d6&lt;/opc&gt;
+            &lt;opr&gt;P U&lt;/opr&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;movdqu&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><del>-            &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
-            &lt;opc&gt;ssef3 0f 6f&lt;/opc&gt;
</del><ins>+            &lt;pfx&gt;aso rexr rexx rexb vexl&lt;/pfx&gt;
+            &lt;opc&gt;/sse=f3 0f 6f&lt;/opc&gt;
</ins><span class="cx">             &lt;opr&gt;V W&lt;/opr&gt;
</span><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><del>-            &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
-            &lt;opc&gt;ssef3 0f 7f&lt;/opc&gt;
</del><ins>+            &lt;pfx&gt;aso rexr rexx rexb vexl&lt;/pfx&gt;
+            &lt;opc&gt;/sse=f3 0f 7f&lt;/opc&gt;
</ins><span class="cx">             &lt;opr&gt;W V&lt;/opr&gt;
</span><span class="cx">         &lt;/def&gt;
</span><ins>+                &lt;cpuid&gt;sse2 avx&lt;/cpuid&gt;
</ins><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;movq2dq&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><del>-            &lt;pfx&gt;aso&lt;/pfx&gt;
-            &lt;opc&gt;ssef3 0f d6&lt;/opc&gt;
-            &lt;opr&gt;V PR&lt;/opr&gt;
</del><ins>+            &lt;pfx&gt;aso rexr&lt;/pfx&gt;
+            &lt;opc&gt;/sse=f3 0f d6&lt;/opc&gt;
+            &lt;opr&gt;V N&lt;/opr&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -8308,8 +8746,9 @@
</span><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><del>-            &lt;opc&gt;sse66 0f d4&lt;/opc&gt;
-            &lt;opr&gt;V W&lt;/opr&gt;
</del><ins>+            &lt;opc&gt;/sse=66 0f d4&lt;/opc&gt;
+            &lt;opr&gt;V H W&lt;/opr&gt;
+            &lt;cpuid&gt;sse2 avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -8317,8 +8756,9 @@
</span><span class="cx">         &lt;mnemonic&gt;psubq&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><del>-            &lt;opc&gt;sse66 0f fb&lt;/opc&gt;
-            &lt;opr&gt;V W&lt;/opr&gt;
</del><ins>+            &lt;opc&gt;/sse=66 0f fb&lt;/opc&gt;
+            &lt;opr&gt;V H W&lt;/opr&gt;
+            &lt;cpuid&gt;sse2 avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><span class="lines">@@ -8336,7 +8776,7 @@
</span><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><del>-            &lt;opc&gt;sse66 0f f4&lt;/opc&gt;
</del><ins>+            &lt;opc&gt;/sse=66 0f f4&lt;/opc&gt;
</ins><span class="cx">             &lt;opr&gt;V W&lt;/opr&gt;
</span><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="lines">@@ -8345,8 +8785,9 @@
</span><span class="cx">         &lt;mnemonic&gt;pshufhw&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><del>-            &lt;opc&gt;ssef3 0f 70&lt;/opc&gt;
</del><ins>+            &lt;opc&gt;/sse=f3 0f 70&lt;/opc&gt;
</ins><span class="cx">             &lt;opr&gt;V W Ib&lt;/opr&gt;
</span><ins>+            &lt;cpuid&gt;sse2 avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -8354,8 +8795,9 @@
</span><span class="cx">         &lt;mnemonic&gt;pshuflw&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><del>-            &lt;opc&gt;ssef2 0f 70&lt;/opc&gt;
</del><ins>+            &lt;opc&gt;/sse=f2 0f 70&lt;/opc&gt;
</ins><span class="cx">             &lt;opr&gt;V W Ib&lt;/opr&gt;
</span><ins>+            &lt;cpuid&gt;sse2 avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -8363,8 +8805,9 @@
</span><span class="cx">         &lt;mnemonic&gt;pshufd&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><del>-            &lt;opc&gt;sse66 0f 70&lt;/opc&gt;
</del><ins>+            &lt;opc&gt;/sse=66 0f 70&lt;/opc&gt;
</ins><span class="cx">             &lt;opr&gt;V W Ib&lt;/opr&gt;
</span><ins>+            &lt;cpuid&gt;sse2 avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -8372,8 +8815,9 @@
</span><span class="cx">         &lt;mnemonic&gt;pslldq&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;rexb&lt;/pfx&gt;
</span><del>-            &lt;opc&gt;sse66 0f 73 /reg=7&lt;/opc&gt;
-            &lt;opr&gt;VR Ib&lt;/opr&gt;
</del><ins>+            &lt;opc&gt;/sse=66 0f 73 /reg=7&lt;/opc&gt;
+            &lt;opr&gt;H U Ib&lt;/opr&gt;
+            &lt;cpuid&gt;sse2 avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -8381,8 +8825,9 @@
</span><span class="cx">         &lt;mnemonic&gt;psrldq&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;rexb&lt;/pfx&gt;
</span><del>-            &lt;opc&gt;sse66 0f 73 /reg=3&lt;/opc&gt;
-            &lt;opr&gt;VR Ib&lt;/opr&gt;
</del><ins>+            &lt;opc&gt;/sse=66 0f 73 /reg=3&lt;/opc&gt;
+            &lt;opr&gt;H U Ib&lt;/opr&gt;
+            &lt;cpuid&gt;sse2 avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -8390,8 +8835,9 @@
</span><span class="cx">         &lt;mnemonic&gt;punpckhqdq&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><del>-            &lt;opc&gt;sse66 0f 6d&lt;/opc&gt;
-            &lt;opr&gt;V W&lt;/opr&gt;
</del><ins>+            &lt;opc&gt;/sse=66 0f 6d&lt;/opc&gt;
+            &lt;opr&gt;V H W&lt;/opr&gt;
+            &lt;cpuid&gt;sse2 avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -8399,66 +8845,69 @@
</span><span class="cx">         &lt;mnemonic&gt;punpcklqdq&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><del>-            &lt;opc&gt;sse66 0f 6c&lt;/opc&gt;
-            &lt;opr&gt;V W&lt;/opr&gt;
</del><ins>+            &lt;opc&gt;/sse=66 0f 6c&lt;/opc&gt;
+            &lt;opr&gt;V H W&lt;/opr&gt;
+            &lt;cpuid&gt;sse2 avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><del>-    &lt;!--
-         SSE 3
-      --&gt;
-
</del><span class="cx">     &lt;instruction&gt;
</span><del>-        &lt;mnemonic&gt;addsubpd&lt;/mnemonic&gt;
</del><ins>+        &lt;mnemonic&gt;haddpd&lt;/mnemonic&gt;
</ins><span class="cx">         &lt;def&gt;
</span><del>-            &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
-            &lt;opc&gt;sse66 0f d0&lt;/opc&gt;
-            &lt;opr&gt;V W&lt;/opr&gt;
</del><ins>+            &lt;pfx&gt;aso rexr rexx rexb vexl&lt;/pfx&gt;
+            &lt;opc&gt;/sse=66 0f 7c&lt;/opc&gt;
+            &lt;opr&gt;V H W&lt;/opr&gt;
+            &lt;cpuid&gt;sse3 avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="cx">     &lt;instruction&gt;
</span><del>-        &lt;mnemonic&gt;addsubps&lt;/mnemonic&gt;
</del><ins>+        &lt;mnemonic&gt;haddps&lt;/mnemonic&gt;
</ins><span class="cx">         &lt;def&gt;
</span><del>-            &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
-            &lt;opc&gt;ssef2 0f d0&lt;/opc&gt;
-            &lt;opr&gt;V W&lt;/opr&gt;
</del><ins>+            &lt;pfx&gt;aso rexr rexx rexb vexl&lt;/pfx&gt;
+            &lt;opc&gt;/sse=f2 0f 7c&lt;/opc&gt;
+            &lt;opr&gt;V H W&lt;/opr&gt;
+            &lt;cpuid&gt;sse3 avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="cx">     &lt;instruction&gt;
</span><del>-        &lt;mnemonic&gt;haddpd&lt;/mnemonic&gt;
</del><ins>+        &lt;mnemonic&gt;hsubpd&lt;/mnemonic&gt;
</ins><span class="cx">         &lt;def&gt;
</span><del>-            &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
-            &lt;opc&gt;sse66 0f 7c&lt;/opc&gt;
-            &lt;opr&gt;V W&lt;/opr&gt;
</del><ins>+            &lt;pfx&gt;aso rexr rexx rexb vexl&lt;/pfx&gt;
+            &lt;opc&gt;/sse=66 0f 7d&lt;/opc&gt;
+            &lt;opr&gt;V H W&lt;/opr&gt;
+            &lt;cpuid&gt;sse3 avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="cx">     &lt;instruction&gt;
</span><del>-        &lt;mnemonic&gt;haddps&lt;/mnemonic&gt;
</del><ins>+        &lt;mnemonic&gt;hsubps&lt;/mnemonic&gt;
</ins><span class="cx">         &lt;def&gt;
</span><del>-            &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
-            &lt;opc&gt;ssef2 0f 7c&lt;/opc&gt;
-            &lt;opr&gt;V W&lt;/opr&gt;
</del><ins>+            &lt;pfx&gt;aso rexr rexx rexb vexl&lt;/pfx&gt;
+            &lt;opc&gt;/sse=f2 0f 7d&lt;/opc&gt;
+            &lt;opr&gt;V H W&lt;/opr&gt;
+            &lt;cpuid&gt;sse3 avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="cx">     &lt;instruction&gt;
</span><del>-        &lt;mnemonic&gt;hsubpd&lt;/mnemonic&gt;
</del><ins>+        &lt;mnemonic&gt;insertps&lt;/mnemonic&gt;
</ins><span class="cx">         &lt;def&gt;
</span><del>-            &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
-            &lt;opc&gt;sse66 0f 7d&lt;/opc&gt;
-            &lt;opr&gt;V W&lt;/opr&gt;
</del><ins>+            &lt;pfx&gt;aso rexr rexw rexx rexb&lt;/pfx&gt;
+            &lt;opc&gt;/sse=66 0f 3a 21&lt;/opc&gt;
+            &lt;opr&gt;V H Md Ib&lt;/opr&gt;
+            &lt;cpuid&gt;sse4.1 avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="cx">     &lt;instruction&gt;
</span><del>-        &lt;mnemonic&gt;hsubps&lt;/mnemonic&gt;
</del><ins>+        &lt;mnemonic&gt;lddqu&lt;/mnemonic&gt;
</ins><span class="cx">         &lt;def&gt;
</span><del>-            &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
-            &lt;opc&gt;ssef2 0f 7d&lt;/opc&gt;
-            &lt;opr&gt;V W&lt;/opr&gt;
</del><ins>+            &lt;pfx&gt;aso rexr rexx rexb vexl&lt;/pfx&gt;
+            &lt;opc&gt;/sse=f2 0f f0&lt;/opc&gt;
+            &lt;opr&gt;V M&lt;/opr&gt;
+            &lt;cpuid&gt;sse3 avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -8466,41 +8915,46 @@
</span><span class="cx">         &lt;mnemonic&gt;movddup&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><del>-            &lt;opc&gt;ssef2 0f 12 /mod=11&lt;/opc&gt;
</del><ins>+            &lt;opc&gt;/sse=f2 0f 12 /mod=11&lt;/opc&gt;
</ins><span class="cx">             &lt;opr&gt;V W&lt;/opr&gt;
</span><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><del>-            &lt;opc&gt;ssef2 0f 12 /mod=!11&lt;/opc&gt;
</del><ins>+            &lt;opc&gt;/sse=f2 0f 12 /mod=!11&lt;/opc&gt;
</ins><span class="cx">             &lt;opr&gt;V W&lt;/opr&gt;
</span><span class="cx">         &lt;/def&gt;
</span><ins>+        &lt;cpuid&gt;sse3 avx&lt;/cpuid&gt;
</ins><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;movshdup&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><del>-            &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
-            &lt;opc&gt;ssef3 0f 16 /mod=11&lt;/opc&gt;
</del><ins>+            &lt;pfx&gt;aso rexr rexx rexb vexl&lt;/pfx&gt;
+            &lt;opc&gt;/sse=f3 0f 16 /mod=11&lt;/opc&gt;
</ins><span class="cx">             &lt;opr&gt;V W&lt;/opr&gt;
</span><ins>+            &lt;cpuid&gt;sse3 avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><del>-            &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
-            &lt;opc&gt;ssef3 0f 16 /mod=!11&lt;/opc&gt;
</del><ins>+            &lt;pfx&gt;aso rexr rexx rexb vexl&lt;/pfx&gt;
+            &lt;opc&gt;/sse=f3 0f 16 /mod=!11&lt;/opc&gt;
</ins><span class="cx">             &lt;opr&gt;V W&lt;/opr&gt;
</span><ins>+            &lt;cpuid&gt;sse3 avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;movsldup&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><del>-            &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
-            &lt;opc&gt;ssef3 0f 12 /mod=11&lt;/opc&gt;
</del><ins>+            &lt;pfx&gt;aso rexr rexx rexb vexl&lt;/pfx&gt;
+            &lt;opc&gt;/sse=f3 0f 12 /mod=11&lt;/opc&gt;
</ins><span class="cx">             &lt;opr&gt;V W&lt;/opr&gt;
</span><ins>+            &lt;cpuid&gt;sse3 avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><del>-            &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
-            &lt;opc&gt;ssef3 0f 12 /mod=!11&lt;/opc&gt;
</del><ins>+            &lt;pfx&gt;aso rexr rexx rexb vexl&lt;/pfx&gt;
+            &lt;opc&gt;/sse=f3 0f 12 /mod=!11&lt;/opc&gt;
</ins><span class="cx">             &lt;opr&gt;V W&lt;/opr&gt;
</span><ins>+            &lt;cpuid&gt;sse3 avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -8514,11 +8968,13 @@
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><span class="cx">             &lt;opc&gt;0f 38 1c&lt;/opc&gt;
</span><span class="cx">             &lt;opr&gt;P Q&lt;/opr&gt;
</span><ins>+            &lt;cpuid&gt;ssse3&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><del>-            &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
-            &lt;opc&gt;sse66 0f 38 1c&lt;/opc&gt;
</del><ins>+            &lt;pfx&gt;aso rexr rexx rexb vexl&lt;/pfx&gt;
+            &lt;opc&gt;/sse=66 0f 38 1c&lt;/opc&gt;
</ins><span class="cx">             &lt;opr&gt;V W&lt;/opr&gt;
</span><ins>+            &lt;cpuid&gt;ssse3 avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -8528,11 +8984,13 @@
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><span class="cx">             &lt;opc&gt;0f 38 1d&lt;/opc&gt;
</span><span class="cx">             &lt;opr&gt;P Q&lt;/opr&gt;
</span><ins>+            &lt;cpuid&gt;ssse3&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><del>-            &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
-            &lt;opc&gt;sse66 0f 38 1d&lt;/opc&gt;
</del><ins>+            &lt;pfx&gt;aso rexr rexx rexb vexl&lt;/pfx&gt;
+            &lt;opc&gt;/sse=66 0f 38 1d&lt;/opc&gt;
</ins><span class="cx">             &lt;opr&gt;V W&lt;/opr&gt;
</span><ins>+            &lt;cpuid&gt;ssse3 avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -8542,16 +9000,18 @@
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><span class="cx">             &lt;opc&gt;0f 38 1e&lt;/opc&gt;
</span><span class="cx">             &lt;opr&gt;P Q&lt;/opr&gt;
</span><ins>+            &lt;cpuid&gt;ssse3&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><del>-            &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
-            &lt;opc&gt;sse66 0f 38 1e&lt;/opc&gt;
</del><ins>+            &lt;pfx&gt;aso rexr rexx rexb vexl&lt;/pfx&gt;
+            &lt;opc&gt;/sse=66 0f 38 1e&lt;/opc&gt;
</ins><span class="cx">             &lt;opr&gt;V W&lt;/opr&gt;
</span><ins>+            &lt;cpuid&gt;ssse3 avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="cx">     &lt;instruction&gt;
</span><del>-        &lt;mnemonic&gt;psignb&lt;/mnemonic&gt;
</del><ins>+        &lt;mnemonic&gt;pshufb&lt;/mnemonic&gt;
</ins><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><span class="cx">             &lt;opc&gt;0f 38 00&lt;/opc&gt;
</span><span class="lines">@@ -8559,8 +9019,9 @@
</span><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><del>-            &lt;opc&gt;sse66 0f 38 00&lt;/opc&gt;
-            &lt;opr&gt;V W&lt;/opr&gt;
</del><ins>+            &lt;opc&gt;/sse=66 0f 38 00&lt;/opc&gt;
+            &lt;opr&gt;V H W&lt;/opr&gt;
+            &lt;cpuid&gt;ssse3 avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -8573,8 +9034,9 @@
</span><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><del>-            &lt;opc&gt;sse66 0f 38 01&lt;/opc&gt;
-            &lt;opr&gt;V W&lt;/opr&gt;
</del><ins>+            &lt;opc&gt;/sse=66 0f 38 01&lt;/opc&gt;
+            &lt;opr&gt;V H W&lt;/opr&gt;
+            &lt;cpuid&gt;ssse3 avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -8587,8 +9049,9 @@
</span><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><del>-            &lt;opc&gt;sse66 0f 38 02&lt;/opc&gt;
-            &lt;opr&gt;V W&lt;/opr&gt;
</del><ins>+            &lt;opc&gt;/sse=66 0f 38 02&lt;/opc&gt;
+            &lt;opr&gt;V H W&lt;/opr&gt;
+            &lt;cpuid&gt;ssse3 avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -8601,8 +9064,9 @@
</span><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><del>-            &lt;opc&gt;sse66 0f 38 03&lt;/opc&gt;
-            &lt;opr&gt;V W&lt;/opr&gt;
</del><ins>+            &lt;opc&gt;/sse=66 0f 38 03&lt;/opc&gt;
+            &lt;opr&gt;V H W&lt;/opr&gt;
+            &lt;cpuid&gt;ssse3 avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -8615,8 +9079,9 @@
</span><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><del>-            &lt;opc&gt;sse66 0f 38 04&lt;/opc&gt;
-            &lt;opr&gt;V W&lt;/opr&gt;
</del><ins>+            &lt;opc&gt;/sse=66 0f 38 04&lt;/opc&gt;
+            &lt;opr&gt;V H W&lt;/opr&gt;
+            &lt;cpuid&gt;ssse3 avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -8629,8 +9094,9 @@
</span><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><del>-            &lt;opc&gt;sse66 0f 38 05&lt;/opc&gt;
-            &lt;opr&gt;V W&lt;/opr&gt;
</del><ins>+            &lt;opc&gt;/sse=66 0f 38 05&lt;/opc&gt;
+            &lt;opr&gt;V H W&lt;/opr&gt;
+            &lt;cpuid&gt;ssse3 avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -8643,8 +9109,9 @@
</span><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><del>-            &lt;opc&gt;sse66 0f 38 06&lt;/opc&gt;
-            &lt;opr&gt;V W&lt;/opr&gt;
</del><ins>+            &lt;opc&gt;/sse=66 0f 38 06&lt;/opc&gt;
+            &lt;opr&gt;V H W&lt;/opr&gt;
+            &lt;cpuid&gt;ssse3 avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -8657,8 +9124,9 @@
</span><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><del>-            &lt;opc&gt;sse66 0f 38 07&lt;/opc&gt;
-            &lt;opr&gt;V W&lt;/opr&gt;
</del><ins>+            &lt;opc&gt;/sse=66 0f 38 07&lt;/opc&gt;
+            &lt;opr&gt;V H W&lt;/opr&gt;
+            &lt;cpuid&gt;ssse3 avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -8671,8 +9139,9 @@
</span><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><del>-            &lt;opc&gt;sse66 0f 38 08&lt;/opc&gt;
-            &lt;opr&gt;V W&lt;/opr&gt;
</del><ins>+            &lt;opc&gt;/sse=66 0f 38 08&lt;/opc&gt;
+            &lt;opr&gt;V H W&lt;/opr&gt;
+            &lt;cpuid&gt;ssse3 avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -8685,8 +9154,9 @@
</span><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><del>-            &lt;opc&gt;sse66 0f 38 0a&lt;/opc&gt;
-            &lt;opr&gt;V W&lt;/opr&gt;
</del><ins>+            &lt;opc&gt;/sse=66 0f 38 0a&lt;/opc&gt;
+            &lt;opr&gt;V H W&lt;/opr&gt;
+            &lt;cpuid&gt;ssse3 avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -8699,8 +9169,9 @@
</span><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><del>-            &lt;opc&gt;sse66 0f 38 09&lt;/opc&gt;
-            &lt;opr&gt;V W&lt;/opr&gt;
</del><ins>+            &lt;opc&gt;/sse=66 0f 38 09&lt;/opc&gt;
+            &lt;opr&gt;V H W&lt;/opr&gt;
+            &lt;cpuid&gt;ssse3 avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -8713,8 +9184,9 @@
</span><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><del>-            &lt;opc&gt;sse66 0f 38 0b&lt;/opc&gt;
-            &lt;opr&gt;V W&lt;/opr&gt;
</del><ins>+            &lt;opc&gt;/sse=66 0f 38 0b&lt;/opc&gt;
+            &lt;opr&gt;V H W&lt;/opr&gt;
+            &lt;cpuid&gt;ssse3 avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -8727,8 +9199,9 @@
</span><span class="cx">         &lt;/def&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><del>-            &lt;opc&gt;sse66 0f 3a 0f&lt;/opc&gt;
-            &lt;opr&gt;V W Ib&lt;/opr&gt;
</del><ins>+            &lt;opc&gt;/sse=66 0f 3a 0f&lt;/opc&gt;
+            &lt;opr&gt;V H W Ib&lt;/opr&gt;
+            &lt;cpuid&gt;ssse3 avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -8740,8 +9213,9 @@
</span><span class="cx">         &lt;mnemonic&gt;pblendvb&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><del>-            &lt;opc&gt;sse66 0f 38 10&lt;/opc&gt;
</del><ins>+            &lt;opc&gt;/sse=66 0f 38 10&lt;/opc&gt;
</ins><span class="cx">             &lt;opr&gt;V W&lt;/opr&gt;
</span><ins>+            &lt;cpuid&gt;sse4.1&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -8749,8 +9223,9 @@
</span><span class="cx">         &lt;mnemonic&gt;pmuldq&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><del>-            &lt;opc&gt;sse66 0f 38 28&lt;/opc&gt;
-            &lt;opr&gt;V W&lt;/opr&gt;
</del><ins>+            &lt;opc&gt;/sse=66 0f 38 28&lt;/opc&gt;
+            &lt;opr&gt;V H W&lt;/opr&gt;
+            &lt;cpuid&gt;sse4.1 avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -8758,8 +9233,9 @@
</span><span class="cx">         &lt;mnemonic&gt;pminsb&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><del>-            &lt;opc&gt;sse66 0f 38 38&lt;/opc&gt;
-            &lt;opr&gt;V W&lt;/opr&gt;
</del><ins>+            &lt;opc&gt;/sse=66 0f 38 38&lt;/opc&gt;
+            &lt;opr&gt;V H W&lt;/opr&gt;
+            &lt;cpuid&gt;sse4.1 avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -8767,8 +9243,9 @@
</span><span class="cx">         &lt;mnemonic&gt;pminsd&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><del>-            &lt;opc&gt;sse66 0f 38 39&lt;/opc&gt;
-            &lt;opr&gt;V W&lt;/opr&gt;
</del><ins>+            &lt;opc&gt;/sse=66 0f 38 39&lt;/opc&gt;
+            &lt;opr&gt;V H W&lt;/opr&gt;
+            &lt;cpuid&gt;sse4.1 avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -8776,8 +9253,9 @@
</span><span class="cx">         &lt;mnemonic&gt;pminuw&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><del>-            &lt;opc&gt;sse66 0f 38 3a&lt;/opc&gt;
-            &lt;opr&gt;V W&lt;/opr&gt;
</del><ins>+            &lt;opc&gt;/sse=66 0f 38 3a&lt;/opc&gt;
+            &lt;opr&gt;V H W&lt;/opr&gt;
+            &lt;cpuid&gt;sse4.1 avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -8785,8 +9263,9 @@
</span><span class="cx">         &lt;mnemonic&gt;pminud&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><del>-            &lt;opc&gt;sse66 0f 38 3b&lt;/opc&gt;
-            &lt;opr&gt;V W&lt;/opr&gt;
</del><ins>+            &lt;opc&gt;/sse=66 0f 38 3b&lt;/opc&gt;
+            &lt;opr&gt;V H W&lt;/opr&gt;
+            &lt;cpuid&gt;sse4.1 avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -8794,8 +9273,9 @@
</span><span class="cx">         &lt;mnemonic&gt;pmaxsb&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><del>-            &lt;opc&gt;sse66 0f 38 3c&lt;/opc&gt;
-            &lt;opr&gt;V W&lt;/opr&gt;
</del><ins>+            &lt;opc&gt;/sse=66 0f 38 3c&lt;/opc&gt;
+            &lt;opr&gt;V H W&lt;/opr&gt;
+            &lt;cpuid&gt;sse4.1 avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -8803,8 +9283,9 @@
</span><span class="cx">         &lt;mnemonic&gt;pmaxsd&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><del>-            &lt;opc&gt;sse66 0f 38 3d&lt;/opc&gt;
-            &lt;opr&gt;V W&lt;/opr&gt;
</del><ins>+            &lt;opc&gt;/sse=66 0f 38 3d&lt;/opc&gt;
+            &lt;opr&gt;V H W&lt;/opr&gt;
+            &lt;cpuid&gt;sse4.1 avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -8812,17 +9293,29 @@
</span><span class="cx">         &lt;mnemonic&gt;pmaxud&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><del>-            &lt;opc&gt;sse66 0f 38 3f&lt;/opc&gt;
-            &lt;opr&gt;V W&lt;/opr&gt;
</del><ins>+            &lt;opc&gt;/sse=66 0f 38 3f&lt;/opc&gt;
+            &lt;opr&gt;V H W&lt;/opr&gt;
+            &lt;cpuid&gt;sse4.1 avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="cx">     &lt;instruction&gt;
</span><ins>+        &lt;mnemonic&gt;pmaxuw&lt;/mnemonic&gt;
+        &lt;def&gt;
+            &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
+            &lt;opc&gt;/sse=66 0f 38 3e&lt;/opc&gt;
+            &lt;opr&gt;V H W&lt;/opr&gt;
+            &lt;cpuid&gt;sse4.1 avx&lt;/cpuid&gt;
+        &lt;/def&gt;
+    &lt;/instruction&gt;
+
+    &lt;instruction&gt;
</ins><span class="cx">         &lt;mnemonic&gt;pmulld&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><del>-            &lt;opc&gt;sse66 0f 38 40&lt;/opc&gt;
-            &lt;opr&gt;V W&lt;/opr&gt;
</del><ins>+            &lt;opc&gt;/sse=66 0f 38 40&lt;/opc&gt;
+            &lt;opr&gt;V H W&lt;/opr&gt;
+            &lt;cpuid&gt;sse4.1 avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -8830,26 +9323,29 @@
</span><span class="cx">         &lt;mnemonic&gt;phminposuw&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><del>-            &lt;opc&gt;sse66 0f 38 41&lt;/opc&gt;
</del><ins>+            &lt;opc&gt;/sse=66 0f 38 41&lt;/opc&gt;
</ins><span class="cx">             &lt;opr&gt;V W&lt;/opr&gt;
</span><ins>+            &lt;cpuid&gt;sse4.1 avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;roundps&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><del>-            &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
-            &lt;opc&gt;sse66 0f 3a 08&lt;/opc&gt;
</del><ins>+            &lt;pfx&gt;aso rexr rexx rexb vexl&lt;/pfx&gt;
+            &lt;opc&gt;/sse=66 0f 3a 08&lt;/opc&gt;
</ins><span class="cx">             &lt;opr&gt;V W Ib&lt;/opr&gt;
</span><ins>+            &lt;cpuid&gt;sse avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;roundpd&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><del>-            &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
-            &lt;opc&gt;sse66 0f 3a 09&lt;/opc&gt;
</del><ins>+            &lt;pfx&gt;aso rexr rexx rexb vexl&lt;/pfx&gt;
+            &lt;opc&gt;/sse=66 0f 3a 09&lt;/opc&gt;
</ins><span class="cx">             &lt;opr&gt;V W Ib&lt;/opr&gt;
</span><ins>+            &lt;cpuid&gt;sse4.1 avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -8857,8 +9353,9 @@
</span><span class="cx">         &lt;mnemonic&gt;roundss&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><del>-            &lt;opc&gt;sse66 0f 3a 0a&lt;/opc&gt;
-            &lt;opr&gt;V W Ib&lt;/opr&gt;
</del><ins>+            &lt;opc&gt;/sse=66 0f 3a 0a&lt;/opc&gt;
+            &lt;opr&gt;V H W Ib&lt;/opr&gt;
+            &lt;cpuid&gt;sse4.1 avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -8866,94 +9363,737 @@
</span><span class="cx">         &lt;mnemonic&gt;roundsd&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><del>-            &lt;opc&gt;sse66 0f 3a 0b&lt;/opc&gt;
-            &lt;opr&gt;V W Ib&lt;/opr&gt;
</del><ins>+            &lt;opc&gt;/sse=66 0f 3a 0b&lt;/opc&gt;
+            &lt;opr&gt;V H W Ib&lt;/opr&gt;
+            &lt;cpuid&gt;sse4.1 avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="cx">     &lt;instruction&gt;
</span><span class="cx">         &lt;mnemonic&gt;blendpd&lt;/mnemonic&gt;
</span><span class="cx">         &lt;def&gt;
</span><del>-            &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
-            &lt;opc&gt;sse66 0f 3a 0d&lt;/opc&gt;
-            &lt;opr&gt;V W Ib&lt;/opr&gt;
</del><ins>+            &lt;pfx&gt;aso rexr rexx rexb vexl&lt;/pfx&gt;
+            &lt;opc&gt;/sse=66 0f 3a 0d&lt;/opc&gt;
+            &lt;opr&gt;V H W Ib&lt;/opr&gt;
+            &lt;cpuid&gt;sse4.1 avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="cx">     &lt;instruction&gt;
</span><del>-        &lt;mnemonic&gt;pblendw&lt;/mnemonic&gt;
</del><ins>+        &lt;mnemonic&gt;blendps&lt;/mnemonic&gt;
</ins><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><del>-            &lt;opc&gt;sse66 0f 3a 0e&lt;/opc&gt;
-            &lt;opr&gt;V W Ib&lt;/opr&gt;
</del><ins>+            &lt;opc&gt;/sse=66 0f 3a 0c&lt;/opc&gt;
+            &lt;opr&gt;V H W Ib&lt;/opr&gt;
+            &lt;cpuid&gt;sse4.1 avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="cx">     &lt;instruction&gt;
</span><del>-        &lt;mnemonic&gt;blendps&lt;/mnemonic&gt;
</del><ins>+        &lt;mnemonic&gt;blendvpd&lt;/mnemonic&gt;
</ins><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><del>-            &lt;opc&gt;sse66 0f 3a 0c&lt;/opc&gt;
-            &lt;opr&gt;V W Ib&lt;/opr&gt;
</del><ins>+            &lt;opc&gt;/sse=66 0f 38 15&lt;/opc&gt;
+            &lt;opr&gt;V W&lt;/opr&gt;
+            &lt;cpuid&gt;sse4.1&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="cx">     &lt;instruction&gt;
</span><del>-        &lt;mnemonic&gt;blendvpd&lt;/mnemonic&gt;
</del><ins>+        &lt;mnemonic&gt;blendvps&lt;/mnemonic&gt;
</ins><span class="cx">         &lt;def&gt;
</span><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><del>-            &lt;opc&gt;sse66 0f 38 15&lt;/opc&gt;
</del><ins>+            &lt;opc&gt;/sse=66 0f 38 14&lt;/opc&gt;
</ins><span class="cx">             &lt;opr&gt;V W&lt;/opr&gt;
</span><ins>+            &lt;cpuid&gt;sse4.1&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="cx">     &lt;instruction&gt;
</span><del>-        &lt;mnemonic&gt;blendvps&lt;/mnemonic&gt;
</del><ins>+        &lt;mnemonic&gt;bound&lt;/mnemonic&gt;
</ins><span class="cx">         &lt;def&gt;
</span><ins>+            &lt;pfx&gt;aso oso&lt;/pfx&gt;
+            &lt;opc&gt;62 /m=!64&lt;/opc&gt;
+            &lt;opr&gt;Gv M&lt;/opr&gt;
+        &lt;/def&gt;
+    &lt;/instruction&gt;
+
+    &lt;instruction&gt;
+        &lt;mnemonic&gt;bsf&lt;/mnemonic&gt;
+        &lt;def&gt;
+            &lt;pfx&gt;aso oso rexw rexr rexx rexb&lt;/pfx&gt;
+            &lt;opc&gt;0f bc&lt;/opc&gt;
+            &lt;opr&gt;Gv Ev&lt;/opr&gt;
+        &lt;/def&gt;
+    &lt;/instruction&gt;
+
+    &lt;instruction&gt;
+        &lt;mnemonic&gt;bsr&lt;/mnemonic&gt;
+        &lt;def&gt;
+            &lt;pfx&gt;aso oso rexw rexr rexx rexb&lt;/pfx&gt;
+            &lt;opc&gt;0f bd&lt;/opc&gt;
+            &lt;opr&gt;Gv Ev&lt;/opr&gt;
+        &lt;/def&gt;
+    &lt;/instruction&gt;
+
+    &lt;instruction&gt;
+        &lt;mnemonic&gt;bswap&lt;/mnemonic&gt;
+        &lt;def&gt;
+            &lt;pfx&gt;oso rexw rexb&lt;/pfx&gt;
+            &lt;opc&gt;0f c8&lt;/opc&gt;
+            &lt;opr&gt;R0y&lt;/opr&gt;
+        &lt;/def&gt;
+        &lt;def&gt;
+            &lt;pfx&gt;oso rexw rexb&lt;/pfx&gt;
+            &lt;opc&gt;0f c9&lt;/opc&gt;
+            &lt;opr&gt;R1y&lt;/opr&gt;
+        &lt;/def&gt;
+        &lt;def&gt;
+            &lt;pfx&gt;oso rexw rexb&lt;/pfx&gt;
+            &lt;opc&gt;0f ca&lt;/opc&gt;
+            &lt;opr&gt;R2y&lt;/opr&gt;
+        &lt;/def&gt;
+        &lt;def&gt;
+            &lt;pfx&gt;oso rexw rexb&lt;/pfx&gt;
+            &lt;opc&gt;0f cb&lt;/opc&gt;
+            &lt;opr&gt;R3y&lt;/opr&gt;
+        &lt;/def&gt;
+        &lt;def&gt;
+            &lt;pfx&gt;oso rexw rexb&lt;/pfx&gt;
+            &lt;opc&gt;0f cc&lt;/opc&gt;
+            &lt;opr&gt;R4y&lt;/opr&gt;
+        &lt;/def&gt;
+        &lt;def&gt;
+            &lt;pfx&gt;oso rexw rexb&lt;/pfx&gt;
+            &lt;opc&gt;0f cd&lt;/opc&gt;
+            &lt;opr&gt;R5y&lt;/opr&gt;
+        &lt;/def&gt;
+        &lt;def&gt;
+            &lt;pfx&gt;oso rexw rexb&lt;/pfx&gt;
+            &lt;opc&gt;0f ce&lt;/opc&gt;
+            &lt;opr&gt;R6y&lt;/opr&gt;
+        &lt;/def&gt;
+        &lt;def&gt;
+            &lt;pfx&gt;oso rexw rexb&lt;/pfx&gt;
+            &lt;opc&gt;0f cf&lt;/opc&gt;
+            &lt;opr&gt;R7y&lt;/opr&gt;
+        &lt;/def&gt;
+    &lt;/instruction&gt;
+
+    &lt;instruction&gt;
+        &lt;mnemonic&gt;bt&lt;/mnemonic&gt;
+        &lt;def&gt;
+            &lt;pfx&gt;aso oso rexw rexr rexx rexb&lt;/pfx&gt;
+            &lt;opc&gt;0f ba /reg=4&lt;/opc&gt;
+            &lt;opr&gt;Ev Ib&lt;/opr&gt;
+        &lt;/def&gt;
+        &lt;def&gt;
+            &lt;pfx&gt;aso oso rexw rexr rexx rexb&lt;/pfx&gt;
+            &lt;opc&gt;0f a3&lt;/opc&gt;
+            &lt;opr&gt;Ev Gv&lt;/opr&gt;
+        &lt;/def&gt;
+    &lt;/instruction&gt;
+
+    &lt;instruction&gt;
+        &lt;mnemonic&gt;btc&lt;/mnemonic&gt;
+        &lt;def&gt;
+            &lt;pfx&gt;aso oso rexw rexr rexx rexb&lt;/pfx&gt;
+            &lt;opc&gt;0f bb&lt;/opc&gt;
+            &lt;opr&gt;Ev Gv&lt;/opr&gt;
+        &lt;/def&gt;
+        &lt;def&gt;
+            &lt;pfx&gt;aso oso rexw rexr rexx rexb&lt;/pfx&gt;
+            &lt;opc&gt;0f ba /reg=7&lt;/opc&gt;
+            &lt;opr&gt;Ev Ib&lt;/opr&gt;
+        &lt;/def&gt;
+    &lt;/instruction&gt;
+
+    &lt;instruction&gt;
+        &lt;mnemonic&gt;btr&lt;/mnemonic&gt;
+        &lt;def&gt;
+            &lt;pfx&gt;aso oso rexw rexr rexx rexb&lt;/pfx&gt;
+            &lt;opc&gt;0f b3&lt;/opc&gt;
+            &lt;opr&gt;Ev Gv&lt;/opr&gt;
+        &lt;/def&gt;
+        &lt;def&gt;
+            &lt;pfx&gt;aso oso rexw rexr rexx rexb&lt;/pfx&gt;
+            &lt;opc&gt;0f ba /reg=6&lt;/opc&gt;
+            &lt;opr&gt;Ev Ib&lt;/opr&gt;
+        &lt;/def&gt;
+    &lt;/instruction&gt;
+
+    &lt;instruction&gt;
+        &lt;mnemonic&gt;bts&lt;/mnemonic&gt;
+        &lt;def&gt;
+            &lt;pfx&gt;aso oso rexw rexr rexx rexb&lt;/pfx&gt;
+            &lt;opc&gt;0f ab&lt;/opc&gt;
+            &lt;opr&gt;Ev Gv&lt;/opr&gt;
+        &lt;/def&gt;
+        &lt;def&gt;
+            &lt;pfx&gt;aso oso rexw rexr rexx rexb&lt;/pfx&gt;
+            &lt;opc&gt;0f ba /reg=5&lt;/opc&gt;
+            &lt;opr&gt;Ev Ib&lt;/opr&gt;
+        &lt;/def&gt;
+    &lt;/instruction&gt;
+
+    &lt;instruction&gt;
+        &lt;mnemonic&gt;pblendw&lt;/mnemonic&gt;
+        &lt;def&gt;
</ins><span class="cx">             &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
</span><del>-            &lt;opc&gt;sse66 0f 38 14&lt;/opc&gt;
</del><ins>+            &lt;opc&gt;/sse=66 0f 3a 0e&lt;/opc&gt;
+            &lt;opr&gt;V H W Ib&lt;/opr&gt;
+            &lt;cpuid&gt;sse4.1 avx&lt;/cpuid&gt;
+        &lt;/def&gt;
+    &lt;/instruction&gt;
+
+    &lt;instruction&gt;
+        &lt;mnemonic&gt;mpsadbw&lt;/mnemonic&gt;
+        &lt;def&gt;
+            &lt;pfx&gt;aso rexr rexx rexb vexl&lt;/pfx&gt;
+            &lt;opc&gt;/sse=66 0f 3a 42&lt;/opc&gt;
+            &lt;opr&gt;V H W Ib&lt;/opr&gt;
+            &lt;cpuid&gt;sse4.1 avx&lt;/cpuid&gt;
+        &lt;/def&gt;
+    &lt;/instruction&gt;
+
+    &lt;instruction&gt;
+        &lt;mnemonic&gt;movntdqa&lt;/mnemonic&gt;
+        &lt;def&gt;
+            &lt;pfx&gt;aso rexr rexw rexx rexb vexl&lt;/pfx&gt;
+            &lt;opc&gt;/sse=66 0f 38 2a&lt;/opc&gt;
+            &lt;opr&gt;V M&lt;/opr&gt;
+            &lt;cpuid&gt;sse4.1 avx&lt;/cpuid&gt;
+        &lt;/def&gt;
+    &lt;/instruction&gt;
+
+    &lt;instruction&gt;
+        &lt;mnemonic&gt;packusdw&lt;/mnemonic&gt;
+        &lt;def&gt;
+            &lt;pfx&gt;aso rexr rexw rexx rexb vexl&lt;/pfx&gt;
+            &lt;opc&gt;/sse=66 0f 38 2b&lt;/opc&gt;
+            &lt;opr&gt;V H W&lt;/opr&gt;
+            &lt;cpuid&gt;sse2 avx&lt;/cpuid&gt;
+        &lt;/def&gt;
+    &lt;/instruction&gt;
+
+    &lt;instruction&gt;
+        &lt;mnemonic&gt;pmovsxbw&lt;/mnemonic&gt;
+        &lt;def&gt;
+            &lt;pfx&gt;aso rexr rexw rexx rexb&lt;/pfx&gt;
+            &lt;opc&gt;/sse=66 0f 38 20&lt;/opc&gt;
+            &lt;opr&gt;V MqU&lt;/opr&gt;
+            &lt;cpuid&gt;sse4.1 avx&lt;/cpuid&gt;
+        &lt;/def&gt;
+    &lt;/instruction&gt;
+
+    &lt;instruction&gt;
+        &lt;mnemonic&gt;pmovsxbd&lt;/mnemonic&gt;
+        &lt;def&gt;
+            &lt;pfx&gt;aso rexr rexw rexx rexb&lt;/pfx&gt;
+            &lt;opc&gt;/sse=66 0f 38 21&lt;/opc&gt;
+            &lt;opr&gt;V MdU&lt;/opr&gt;
+            &lt;cpuid&gt;sse4.1 avx&lt;/cpuid&gt;
+        &lt;/def&gt;
+    &lt;/instruction&gt;
+
+    &lt;instruction&gt;
+        &lt;mnemonic&gt;pmovsxbq&lt;/mnemonic&gt;
+        &lt;def&gt;
+            &lt;pfx&gt;aso rexr rexw rexx rexb&lt;/pfx&gt;
+            &lt;opc&gt;/sse=66 0f 38 22&lt;/opc&gt;
+            &lt;opr&gt;V MwU&lt;/opr&gt;
+            &lt;cpuid&gt;sse4.1 avx&lt;/cpuid&gt;
+        &lt;/def&gt;
+    &lt;/instruction&gt;
+
+    &lt;instruction&gt;
+        &lt;mnemonic&gt;pmovsxwd&lt;/mnemonic&gt;
+        &lt;def&gt;
+            &lt;pfx&gt;aso rexr rexw rexx rexb&lt;/pfx&gt;
+            &lt;opc&gt;/sse=66 0f 38 23&lt;/opc&gt;
+            &lt;opr&gt;V MqU&lt;/opr&gt;
+            &lt;cpuid&gt;sse4.1 avx&lt;/cpuid&gt;
+        &lt;/def&gt;
+    &lt;/instruction&gt;
+
+    &lt;instruction&gt;
+        &lt;mnemonic&gt;pmovsxwq&lt;/mnemonic&gt;
+        &lt;def&gt;
+            &lt;pfx&gt;aso rexr rexw rexx rexb&lt;/pfx&gt;
+            &lt;opc&gt;/sse=66 0f 38 24&lt;/opc&gt;
+            &lt;opr&gt;V MdU&lt;/opr&gt;
+            &lt;cpuid&gt;sse4.1 avx&lt;/cpuid&gt;
+        &lt;/def&gt;
+    &lt;/instruction&gt;
+
+    &lt;instruction&gt;
+        &lt;mnemonic&gt;pmovsxdq&lt;/mnemonic&gt;
+        &lt;def&gt;
+            &lt;pfx&gt;aso rexr rexw rexx rexb&lt;/pfx&gt;
+            &lt;opc&gt;/sse=66 0f 38 25&lt;/opc&gt;
+            &lt;opr&gt;V MqU&lt;/opr&gt;
+            &lt;cpuid&gt;sse4.1&lt;/cpuid&gt;
+        &lt;/def&gt;
+    &lt;/instruction&gt;
+
+    &lt;instruction&gt;
+        &lt;mnemonic&gt;pmovzxbw&lt;/mnemonic&gt;
+        &lt;def&gt;
+            &lt;pfx&gt;aso rexr rexw rexx rexb&lt;/pfx&gt;
+            &lt;opc&gt;/sse=66 0f 38 30&lt;/opc&gt;
+            &lt;opr&gt;V MqU&lt;/opr&gt;
+            &lt;cpuid&gt;sse4.1 avx&lt;/cpuid&gt;
+        &lt;/def&gt;
+    &lt;/instruction&gt;
+
+    &lt;instruction&gt;
+        &lt;mnemonic&gt;pmovzxbd&lt;/mnemonic&gt;
+        &lt;def&gt;
+            &lt;pfx&gt;aso rexr rexw rexx rexb&lt;/pfx&gt;
+            &lt;opc&gt;/sse=66 0f 38 31&lt;/opc&gt;
+            &lt;opr&gt;V MdU&lt;/opr&gt;
+            &lt;cpuid&gt;sse4.1 avx&lt;/cpuid&gt;
+        &lt;/def&gt;
+    &lt;/instruction&gt;
+
+    &lt;instruction&gt;
+        &lt;mnemonic&gt;pmovzxbq&lt;/mnemonic&gt;
+        &lt;def&gt;
+            &lt;pfx&gt;aso rexr rexw rexx rexb&lt;/pfx&gt;
+            &lt;opc&gt;/sse=66 0f 38 32&lt;/opc&gt;
+            &lt;opr&gt;V MwU&lt;/opr&gt;
+            &lt;cpuid&gt;sse4.1 avx&lt;/cpuid&gt;
+        &lt;/def&gt;
+    &lt;/instruction&gt;
+
+    &lt;instruction&gt;
+        &lt;mnemonic&gt;pmovzxwd&lt;/mnemonic&gt;
+        &lt;def&gt;
+            &lt;pfx&gt;aso rexr rexw rexx rexb&lt;/pfx&gt;
+            &lt;opc&gt;/sse=66 0f 38 33&lt;/opc&gt;
+            &lt;opr&gt;V MqU&lt;/opr&gt;
+            &lt;cpuid&gt;sse4.1 avx&lt;/cpuid&gt;
+        &lt;/def&gt;
+    &lt;/instruction&gt;
+
+    &lt;instruction&gt;
+        &lt;mnemonic&gt;pmovzxwq&lt;/mnemonic&gt;
+        &lt;def&gt;
+            &lt;pfx&gt;aso rexr rexw rexx rexb&lt;/pfx&gt;
+            &lt;opc&gt;/sse=66 0f 38 34&lt;/opc&gt;
+            &lt;opr&gt;V MdU&lt;/opr&gt;
+            &lt;cpuid&gt;sse4.1 avx&lt;/cpuid&gt;
+        &lt;/def&gt;
+    &lt;/instruction&gt;
+
+    &lt;instruction&gt;
+        &lt;mnemonic&gt;pmovzxdq&lt;/mnemonic&gt;
+        &lt;def&gt;
+            &lt;pfx&gt;aso rexr rexw rexx rexb&lt;/pfx&gt;
+            &lt;opc&gt;/sse=66 0f 38 35&lt;/opc&gt;
+            &lt;opr&gt;V MqU&lt;/opr&gt;
+            &lt;cpuid&gt;sse4.1 avx&lt;/cpuid&gt;
+        &lt;/def&gt;
+    &lt;/instruction&gt;
+
+    &lt;instruction&gt;
+        &lt;mnemonic&gt;pcmpeqq&lt;/mnemonic&gt;
+        &lt;def&gt;
+            &lt;pfx&gt;aso rexr rexw rexx rexb&lt;/pfx&gt;
+            &lt;opc&gt;/sse=66 0f 38 29&lt;/opc&gt;
+            &lt;opr&gt;V H W&lt;/opr&gt;
+            &lt;cpuid&gt;sse4.1 avx&lt;/cpuid&gt;
+        &lt;/def&gt;
+    &lt;/instruction&gt;
+
+     &lt;instruction&gt;
+        &lt;mnemonic&gt;popcnt&lt;/mnemonic&gt;
+        &lt;def&gt;
+            &lt;pfx&gt;aso oso rexr rexw rexx rexb&lt;/pfx&gt;
+            &lt;opc&gt;/sse=f3 0f b8&lt;/opc&gt;
+            &lt;opr&gt;Gv Ev&lt;/opr&gt;
+        &lt;/def&gt;
+        &lt;cpuid&gt;sse4.2&lt;/cpuid&gt;
+    &lt;/instruction&gt;
+
+    &lt;instruction&gt;
+        &lt;mnemonic&gt;ptest&lt;/mnemonic&gt;
+        &lt;def&gt;
+            &lt;pfx&gt;aso rexr rexw rexx rexb vexl&lt;/pfx&gt;
+            &lt;opc&gt;/sse=66 0f 38 17&lt;/opc&gt;
</ins><span class="cx">             &lt;opr&gt;V W&lt;/opr&gt;
</span><ins>+            &lt;cpuid&gt;sse4.1 avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="cx">     &lt;instruction&gt;
</span><del>-        &lt;mnemonic&gt;dpps&lt;/mnemonic&gt;
</del><ins>+        &lt;mnemonic&gt;pcmpestri&lt;/mnemonic&gt;
</ins><span class="cx">         &lt;def&gt;
</span><del>-            &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
-            &lt;opc&gt;sse66 0f 3a 40&lt;/opc&gt;
</del><ins>+            &lt;pfx&gt;aso rexr rexw rexx rexb&lt;/pfx&gt;
+            &lt;opc&gt;/sse=66 0f 3a 61&lt;/opc&gt;
</ins><span class="cx">             &lt;opr&gt;V W Ib&lt;/opr&gt;
</span><ins>+            &lt;cpuid&gt;sse4.2 avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="cx">     &lt;instruction&gt;
</span><del>-        &lt;mnemonic&gt;dppd&lt;/mnemonic&gt;
</del><ins>+        &lt;mnemonic&gt;pcmpestrm&lt;/mnemonic&gt;
</ins><span class="cx">         &lt;def&gt;
</span><del>-            &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
-            &lt;opc&gt;sse66 0f 3a 41&lt;/opc&gt;
</del><ins>+            &lt;pfx&gt;aso rexr rexw rexx rexb&lt;/pfx&gt;
+            &lt;opc&gt;/sse=66 0f 3a 60&lt;/opc&gt;
</ins><span class="cx">             &lt;opr&gt;V W Ib&lt;/opr&gt;
</span><ins>+            &lt;cpuid&gt;sse4.2 avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="cx">     &lt;instruction&gt;
</span><del>-        &lt;mnemonic&gt;mpsadbw&lt;/mnemonic&gt;
</del><ins>+        &lt;mnemonic&gt;pcmpgtq&lt;/mnemonic&gt;
</ins><span class="cx">         &lt;def&gt;
</span><del>-            &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
-            &lt;opc&gt;sse66 0f 3a 42&lt;/opc&gt;
</del><ins>+            &lt;pfx&gt;aso rexr rexw rexx rexb&lt;/pfx&gt;
+            &lt;opc&gt;/sse=66 0f 38 37&lt;/opc&gt;
+            &lt;opr&gt;V H W&lt;/opr&gt;
+            &lt;cpuid&gt;sse4.2 avx&lt;/cpuid&gt;
+        &lt;/def&gt;
+    &lt;/instruction&gt;
+
+    &lt;instruction&gt;
+        &lt;mnemonic&gt;pcmpistri&lt;/mnemonic&gt;
+        &lt;def&gt;
+            &lt;pfx&gt;aso rexr rexw rexx rexb&lt;/pfx&gt;
+            &lt;opc&gt;/sse=66 0f 3a 63&lt;/opc&gt;
</ins><span class="cx">             &lt;opr&gt;V W Ib&lt;/opr&gt;
</span><ins>+            &lt;cpuid&gt;sse4.2 avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="cx">     &lt;instruction&gt;
</span><del>-        &lt;mnemonic&gt;extractps&lt;/mnemonic&gt;
</del><ins>+        &lt;mnemonic&gt;pcmpistrm&lt;/mnemonic&gt;
</ins><span class="cx">         &lt;def&gt;
</span><del>-            &lt;pfx&gt;aso rexr rexw rexb&lt;/pfx&gt;
-            &lt;opc&gt;sse66 0f 3a 17&lt;/opc&gt;
-            &lt;opr&gt;MdRy V Ib&lt;/opr&gt;
</del><ins>+            &lt;pfx&gt;aso rexr rexw rexx rexb&lt;/pfx&gt;
+            &lt;opc&gt;/sse=66 0f 3a 62&lt;/opc&gt;
+            &lt;opr&gt;V W Ib&lt;/opr&gt;
+            &lt;cpuid&gt;sse4.2 avx&lt;/cpuid&gt;
</ins><span class="cx">         &lt;/def&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><span class="cx">     &lt;instruction&gt;
</span><ins>+        &lt;mnemonic&gt;movbe&lt;/mnemonic&gt;
+        &lt;def&gt;
+            &lt;pfx&gt;aso oso rexr rexw rexx rexb&lt;/pfx&gt;
+            &lt;opc&gt;0f 38 f0&lt;/opc&gt;
+            &lt;opr&gt;Gv Mv&lt;/opr&gt;
+            &lt;cpuid&gt;sse3 atom&lt;/cpuid&gt;
+        &lt;/def&gt;
+        &lt;def&gt;
+            &lt;pfx&gt;aso oso rexr rexw rexx rexb&lt;/pfx&gt;
+            &lt;opc&gt;0f 38 f1&lt;/opc&gt;
+            &lt;opr&gt;Mv Gv&lt;/opr&gt;
+            &lt;cpuid&gt;sse3 atom&lt;/cpuid&gt;
+        &lt;/def&gt;
+    &lt;/instruction&gt;
+
+    &lt;instruction&gt;
+        &lt;mnemonic&gt;crc32&lt;/mnemonic&gt;
+        &lt;def&gt;
+            &lt;pfx&gt;aso oso rexr rexw rexx rexb&lt;/pfx&gt;
+            &lt;opc&gt;/sse=f2 0f 38 f0&lt;/opc&gt;
+            &lt;opr&gt;Gy Eb&lt;/opr&gt;
+            &lt;cpuid&gt;sse4.2&lt;/cpuid&gt;
+        &lt;/def&gt;
+        &lt;def&gt;
+            &lt;pfx&gt;aso oso rexr rexw rexx rexb&lt;/pfx&gt;
+            &lt;opc&gt;/sse=f2 0f 38 f1&lt;/opc&gt;
+            &lt;opr&gt;Gy Ev&lt;/opr&gt;
+            &lt;cpuid&gt;sse4.2&lt;/cpuid&gt;
+        &lt;/def&gt;
+    &lt;/instruction&gt;
+
+    &lt;instruction&gt;
</ins><span class="cx">         &lt;mnemonic&gt;invalid&lt;/mnemonic&gt;
</span><span class="cx">     &lt;/instruction&gt;
</span><span class="cx"> 
</span><ins>+    &lt;instruction&gt;
+        &lt;mnemonic&gt;vbroadcastss&lt;/mnemonic&gt;
+        &lt;def&gt;
+            &lt;pfx&gt;aso rexr rexx rexb vexl&lt;/pfx&gt;
+            &lt;opc&gt;/vex=66_0f38 18 /vexw=0&lt;/opc&gt;
+            &lt;opr&gt;V Md&lt;/opr&gt;
+            &lt;cpuid&gt;avx&lt;/cpuid&gt;
+        &lt;/def&gt;
+    &lt;/instruction&gt;
+
+    &lt;instruction&gt;
+        &lt;mnemonic&gt;vbroadcastsd&lt;/mnemonic&gt;
+        &lt;def&gt;
+            &lt;pfx&gt;aso rexr rexx rexb vexl&lt;/pfx&gt;
+            &lt;opc&gt;/vex=66_0f38 19 /vexw=0 /vexl=1&lt;/opc&gt;
+            &lt;opr&gt;Vqq Mq&lt;/opr&gt;
+            &lt;cpuid&gt;avx&lt;/cpuid&gt;
+        &lt;/def&gt;
+    &lt;/instruction&gt;
+
+    &lt;instruction&gt;
+        &lt;mnemonic&gt;vextractf128&lt;/mnemonic&gt;
+        &lt;def&gt;
+            &lt;pfx&gt;aso rexr rexx rexb vexl&lt;/pfx&gt;
+            &lt;opc&gt;/vex=66_0f3a 19 /vexw=0 /vexl=1&lt;/opc&gt;
+            &lt;opr&gt;Wdq Vqq Ib&lt;/opr&gt;
+            &lt;cpuid&gt;avx&lt;/cpuid&gt;
+        &lt;/def&gt;
+    &lt;/instruction&gt;
+
+    &lt;instruction&gt;
+        &lt;mnemonic&gt;vinsertf128&lt;/mnemonic&gt;
+        &lt;def&gt;
+            &lt;pfx&gt;aso rexr rexx rexb vexl&lt;/pfx&gt;
+            &lt;opc&gt;/vex=66_0f3a 18 /vexw=0 /vexl=1&lt;/opc&gt;
+            &lt;opr&gt;Vqq Hqq Wdq Ib&lt;/opr&gt;
+            &lt;cpuid&gt;avx&lt;/cpuid&gt;
+        &lt;/def&gt;
+    &lt;/instruction&gt;
+
+    &lt;instruction&gt;
+        &lt;mnemonic&gt;vmaskmovps&lt;/mnemonic&gt;
+        &lt;def&gt;
+            &lt;pfx&gt;aso rexr rexx rexb vexl&lt;/pfx&gt;
+            &lt;opc&gt;/vex=66_0f38 2c /vexw=0&lt;/opc&gt;
+            &lt;opr&gt;V H M&lt;/opr&gt;
+            &lt;cpuid&gt;avx&lt;/cpuid&gt;
+        &lt;/def&gt;
+        &lt;def&gt;
+            &lt;pfx&gt;aso rexr rexx rexb vexl&lt;/pfx&gt;
+            &lt;opc&gt;/vex=66_0f38 2e /vexw=0&lt;/opc&gt;
+            &lt;opr&gt;M H V&lt;/opr&gt;
+            &lt;cpuid&gt;avx&lt;/cpuid&gt;
+        &lt;/def&gt;
+    &lt;/instruction&gt;
+
+    &lt;instruction&gt;
+        &lt;mnemonic&gt;vmaskmovpd&lt;/mnemonic&gt;
+        &lt;def&gt;
+            &lt;pfx&gt;aso rexr rexx rexb vexl&lt;/pfx&gt;
+            &lt;opc&gt;/vex=66_0f38 2d /vexw=0&lt;/opc&gt;
+            &lt;opr&gt;V H M&lt;/opr&gt;
+            &lt;cpuid&gt;avx&lt;/cpuid&gt;
+        &lt;/def&gt;
+        &lt;def&gt;
+            &lt;pfx&gt;aso rexr rexx rexb vexl&lt;/pfx&gt;
+            &lt;opc&gt;/vex=66_0f38 2f /vexw=0&lt;/opc&gt;
+            &lt;opr&gt;M H V&lt;/opr&gt;
+            &lt;cpuid&gt;avx&lt;/cpuid&gt;
+        &lt;/def&gt;
+    &lt;/instruction&gt;
+
+    &lt;instruction&gt;
+        &lt;mnemonic&gt;vpermilpd&lt;/mnemonic&gt;
+        &lt;def&gt;
+            &lt;pfx&gt;aso rexr rexx rexb vexl&lt;/pfx&gt;
+            &lt;opc&gt;/vex=66_0f38 0d /vexw=0&lt;/opc&gt;
+            &lt;opr&gt;Vx Hx Wx&lt;/opr&gt;
+            &lt;cpuid&gt;avx&lt;/cpuid&gt;
+        &lt;/def&gt;
+        &lt;def&gt;
+            &lt;pfx&gt;aso rexr rexx rexb vexl&lt;/pfx&gt;
+            &lt;opc&gt;/vex=66_0f3a 05 /vexw=0&lt;/opc&gt;
+            &lt;opr&gt;V W Ib&lt;/opr&gt;
+            &lt;cpuid&gt;avx&lt;/cpuid&gt;
+        &lt;/def&gt;
+    &lt;/instruction&gt;
+
+    &lt;instruction&gt;
+        &lt;mnemonic&gt;vpermilps&lt;/mnemonic&gt;
+        &lt;def&gt;
+            &lt;pfx&gt;aso rexr rexx rexb vexl&lt;/pfx&gt;
+            &lt;opc&gt;/vex=66_0f38 0c /vexw=0&lt;/opc&gt;
+            &lt;opr&gt;Vx Hx Wx&lt;/opr&gt;
+            &lt;cpuid&gt;avx&lt;/cpuid&gt;
+        &lt;/def&gt;
+        &lt;def&gt;
+            &lt;pfx&gt;aso rexr rexx rexb vexl&lt;/pfx&gt;
+            &lt;opc&gt;/vex=66_0f3a 04 /vexw=0&lt;/opc&gt;
+            &lt;opr&gt;Vx Wx Ib&lt;/opr&gt;
+            &lt;cpuid&gt;avx&lt;/cpuid&gt;
+        &lt;/def&gt;
+    &lt;/instruction&gt;
+
+    &lt;instruction&gt;
+        &lt;mnemonic&gt;vperm2f128&lt;/mnemonic&gt;
+        &lt;def&gt;
+            &lt;pfx&gt;aso rexr rexx rexb vexl&lt;/pfx&gt;
+            &lt;opc&gt;/vex=66_0f3a 06 /vexw=0 /vexl=1&lt;/opc&gt;
+            &lt;opr&gt;Vqq Hqq Wqq Ib&lt;/opr&gt;
+            &lt;cpuid&gt;avx&lt;/cpuid&gt;
+        &lt;/def&gt;
+    &lt;/instruction&gt;
+
+    &lt;instruction&gt;
+        &lt;mnemonic&gt;vtestps&lt;/mnemonic&gt;
+        &lt;def&gt;
+            &lt;pfx&gt;aso rexr rexx rexb vexl&lt;/pfx&gt;
+            &lt;opc&gt;/vex=66_0f38 0e /vexw=0&lt;/opc&gt;
+            &lt;opr&gt;Vx Wx&lt;/opr&gt;
+            &lt;cpuid&gt;avx&lt;/cpuid&gt;
+        &lt;/def&gt;
+    &lt;/instruction&gt;
+
+    &lt;instruction&gt;
+        &lt;mnemonic&gt;vtestpd&lt;/mnemonic&gt;
+        &lt;def&gt;
+            &lt;pfx&gt;aso rexr rexx rexb vexl&lt;/pfx&gt;
+            &lt;opc&gt;/vex=66_0f38 0f /vexw=0&lt;/opc&gt;
+            &lt;opr&gt;Vx Wx&lt;/opr&gt;
+            &lt;cpuid&gt;avx&lt;/cpuid&gt;
+        &lt;/def&gt;
+    &lt;/instruction&gt;
+
+    &lt;instruction&gt;
+        &lt;mnemonic&gt;vzeroupper&lt;/mnemonic&gt;
+        &lt;def&gt;
+            &lt;opc&gt;/vex=0f 77 /vexl=0&lt;/opc&gt;
+            &lt;cpuid&gt;avx&lt;/cpuid&gt;
+        &lt;/def&gt;
+    &lt;/instruction&gt;
+
+    &lt;instruction&gt;
+        &lt;mnemonic&gt;vzeroall&lt;/mnemonic&gt;
+        &lt;def&gt;
+            &lt;opc&gt;/vex=0f 77 /vexl=1&lt;/opc&gt;
+            &lt;cpuid&gt;avx&lt;/cpuid&gt;
+        &lt;/def&gt;
+    &lt;/instruction&gt;
+
+    &lt;instruction&gt;
+        &lt;mnemonic&gt;vblendvpd&lt;/mnemonic&gt;
+        &lt;def&gt;
+            &lt;pfx&gt;aso rexr rexx rexb vexl&lt;/pfx&gt;
+            &lt;opc&gt;/vex=66_0f3a 4b /vexw=0&lt;/opc&gt;
+            &lt;opr&gt;Vx Hx Wx Lx&lt;/opr&gt;
+            &lt;cpuid&gt;avx&lt;/cpuid&gt;
+        &lt;/def&gt;
+    &lt;/instruction&gt;
+
+    &lt;instruction&gt;
+        &lt;mnemonic&gt;vblendvps&lt;/mnemonic&gt;
+        &lt;def&gt;
+            &lt;pfx&gt;aso rexr rexx rexb vexl&lt;/pfx&gt;
+            &lt;opc&gt;/vex=66_0f3a 4a /vexw=0&lt;/opc&gt;
+            &lt;opr&gt;Vx Hx Wx Lx&lt;/opr&gt;
+            &lt;cpuid&gt;avx&lt;/cpuid&gt;
+        &lt;/def&gt;
+    &lt;/instruction&gt;
+
+    &lt;instruction&gt;
+        &lt;mnemonic&gt;vmovsd&lt;/mnemonic&gt;
+        &lt;def&gt;
+            &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
+            &lt;opc&gt;/vex=f2_0f 10 /mod=11&lt;/opc&gt;
+            &lt;opr&gt;V H U&lt;/opr&gt;
+            &lt;cpuid&gt;avx&lt;/cpuid&gt;
+        &lt;/def&gt;
+        &lt;def&gt;
+            &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
+            &lt;opc&gt;/vex=f2_0f 10 /mod=!11&lt;/opc&gt;
+            &lt;opr&gt;V Mq&lt;/opr&gt;
+            &lt;cpuid&gt;avx&lt;/cpuid&gt;
+        &lt;/def&gt;
+        &lt;def&gt;
+            &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
+            &lt;opc&gt;/vex=f2_0f 11 /mod=11&lt;/opc&gt;
+            &lt;opr&gt;U H V&lt;/opr&gt;
+            &lt;cpuid&gt;avx&lt;/cpuid&gt;
+        &lt;/def&gt;
+        &lt;def&gt;
+            &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
+            &lt;opc&gt;/vex=f2_0f 11 /mod=!11&lt;/opc&gt;
+            &lt;opr&gt;Mq V&lt;/opr&gt;
+            &lt;cpuid&gt;avx&lt;/cpuid&gt;
+        &lt;/def&gt;
+    &lt;/instruction&gt;
+
+    &lt;instruction&gt;
+        &lt;mnemonic&gt;vmovss&lt;/mnemonic&gt;
+        &lt;def&gt;
+            &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
+            &lt;opc&gt;/vex=f3_0f 10 /mod=11&lt;/opc&gt;
+            &lt;opr&gt;V H U&lt;/opr&gt;
+            &lt;cpuid&gt;avx&lt;/cpuid&gt;
+        &lt;/def&gt;
+        &lt;def&gt;
+            &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
+            &lt;opc&gt;/vex=f3_0f 10 /mod=!11&lt;/opc&gt;
+            &lt;opr&gt;V Md&lt;/opr&gt;
+            &lt;cpuid&gt;avx&lt;/cpuid&gt;
+        &lt;/def&gt;
+        &lt;def&gt;
+            &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
+            &lt;opc&gt;/vex=f3_0f 11 /mod=11&lt;/opc&gt;
+            &lt;opr&gt;U H V&lt;/opr&gt;
+            &lt;cpuid&gt;avx&lt;/cpuid&gt;
+        &lt;/def&gt;
+        &lt;def&gt;
+            &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
+            &lt;opc&gt;/vex=f3_0f 11 /mod=!11&lt;/opc&gt;
+            &lt;opr&gt;Md V&lt;/opr&gt;
+            &lt;cpuid&gt;avx&lt;/cpuid&gt;
+        &lt;/def&gt;
+    &lt;/instruction&gt;
+
+    &lt;instruction&gt;
+        &lt;mnemonic&gt;vpblendvb&lt;/mnemonic&gt;
+        &lt;def&gt;
+            &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
+            &lt;opc&gt;/vex=66_0f3a 4c /vexw=0&lt;/opc&gt;
+            &lt;opr&gt;V H W L&lt;/opr&gt;
+            &lt;cpuid&gt;avx&lt;/cpuid&gt;
+        &lt;/def&gt;
+    &lt;/instruction&gt;
+
+    &lt;instruction&gt;
+        &lt;mnemonic&gt;vpsllw&lt;/mnemonic&gt;
+        &lt;def&gt;
+            &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
+            &lt;opc&gt;/vex=66_0f f1 /vexl=0&lt;/opc&gt;
+            &lt;opr&gt;V H W&lt;/opr&gt;
+            &lt;cpuid&gt;avx&lt;/cpuid&gt;
+        &lt;/def&gt;
+        &lt;def&gt;
+            &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
+            &lt;opc&gt;/vex=66_0f 71 /reg=6 /vexl=0&lt;/opc&gt;
+            &lt;opr&gt;H V W&lt;/opr&gt;
+            &lt;cpuid&gt;avx&lt;/cpuid&gt;
+        &lt;/def&gt;
+    &lt;/instruction&gt;
+
+     &lt;instruction&gt;
+        &lt;mnemonic&gt;vpslld&lt;/mnemonic&gt;
+        &lt;def&gt;
+            &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
+            &lt;opc&gt;/vex=66_0f f2 /vexl=0&lt;/opc&gt;
+            &lt;opr&gt;V H W&lt;/opr&gt;
+            &lt;cpuid&gt;avx&lt;/cpuid&gt;
+        &lt;/def&gt;
+        &lt;def&gt;
+            &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
+            &lt;opc&gt;/vex=66_0f 72 /reg=6 /vexl=0&lt;/opc&gt;
+            &lt;opr&gt;H V W&lt;/opr&gt;
+            &lt;cpuid&gt;avx&lt;/cpuid&gt;
+        &lt;/def&gt;
+    &lt;/instruction&gt;
+
+      &lt;instruction&gt;
+        &lt;mnemonic&gt;vpsllq&lt;/mnemonic&gt;
+        &lt;def&gt;
+            &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
+            &lt;opc&gt;/vex=66_0f f3 /vexl=0&lt;/opc&gt;
+            &lt;opr&gt;V H W&lt;/opr&gt;
+            &lt;cpuid&gt;avx&lt;/cpuid&gt;
+        &lt;/def&gt;
+        &lt;def&gt;
+            &lt;pfx&gt;aso rexr rexx rexb&lt;/pfx&gt;
+            &lt;opc&gt;/vex=66_0f 73 /reg=6 /vexl=0&lt;/opc&gt;
+            &lt;opr&gt;H V W&lt;/opr&gt;
+            &lt;cpuid&gt;avx&lt;/cpuid&gt;
+        &lt;/def&gt;
+    &lt;/instruction&gt;

</ins><span class="cx"> &lt;/x86optable&gt;
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoredisassemblerudis86ud_itabpy"></a>
<div class="addfile"><h4>Added: trunk/Source/JavaScriptCore/disassembler/udis86/ud_itab.py (0 => 198832)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/disassembler/udis86/ud_itab.py                                (rev 0)
+++ trunk/Source/JavaScriptCore/disassembler/udis86/ud_itab.py        2016-03-30 07:17:14 UTC (rev 198832)
</span><span class="lines">@@ -0,0 +1,379 @@
</span><ins>+# udis86 - scripts/ud_itab.py
+# 
+# Copyright (c) 2009, 2013 Vivek Thampi
+# All rights reserved.
+# 
+# Redistribution and use in source and binary forms, with or without modification, 
+# are permitted provided that the following conditions are met:
+# 
+#     * Redistributions of source code must retain the above copyright notice, 
+#       this list of conditions and the following disclaimer.
+#     * Redistributions in binary form must reproduce the above copyright notice, 
+#       this list of conditions and the following disclaimer in the documentation 
+#       and/or other materials provided with the distribution.
+# 
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS &quot;AS IS&quot; AND 
+# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
+# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 
+# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR 
+# ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
+# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 
+# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON 
+# ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 
+# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+import os
+import sys
+from ud_opcode import UdOpcodeTable, UdOpcodeTables, UdInsnDef
+
+class UdItabGenerator:
+
+    OperandDict = {
+        &quot;Av&quot;       : [    &quot;OP_A&quot;        , &quot;SZ_V&quot;     ],
+        &quot;E&quot;        : [    &quot;OP_E&quot;        , &quot;SZ_NA&quot;    ],
+        &quot;Eb&quot;       : [    &quot;OP_E&quot;        , &quot;SZ_B&quot;     ],
+        &quot;Ew&quot;       : [    &quot;OP_E&quot;        , &quot;SZ_W&quot;     ],
+        &quot;Ev&quot;       : [    &quot;OP_E&quot;        , &quot;SZ_V&quot;     ],
+        &quot;Ed&quot;       : [    &quot;OP_E&quot;        , &quot;SZ_D&quot;     ],
+        &quot;Ey&quot;       : [    &quot;OP_E&quot;        , &quot;SZ_Y&quot;     ],
+        &quot;Eq&quot;       : [    &quot;OP_E&quot;        , &quot;SZ_Q&quot;     ],
+        &quot;Ez&quot;       : [    &quot;OP_E&quot;        , &quot;SZ_Z&quot;     ],
+        &quot;Fv&quot;       : [    &quot;OP_F&quot;        , &quot;SZ_V&quot;     ],
+        &quot;G&quot;        : [    &quot;OP_G&quot;        , &quot;SZ_NA&quot;    ],
+        &quot;Gb&quot;       : [    &quot;OP_G&quot;        , &quot;SZ_B&quot;     ],
+        &quot;Gw&quot;       : [    &quot;OP_G&quot;        , &quot;SZ_W&quot;     ],
+        &quot;Gv&quot;       : [    &quot;OP_G&quot;        , &quot;SZ_V&quot;     ],
+        &quot;Gy&quot;       : [    &quot;OP_G&quot;        , &quot;SZ_Y&quot;     ],
+        &quot;Gd&quot;       : [    &quot;OP_G&quot;        , &quot;SZ_D&quot;     ],
+        &quot;Gq&quot;       : [    &quot;OP_G&quot;        , &quot;SZ_Q&quot;     ],
+        &quot;Gz&quot;       : [    &quot;OP_G&quot;        , &quot;SZ_Z&quot;     ],
+        &quot;M&quot;        : [    &quot;OP_M&quot;        , &quot;SZ_NA&quot;    ],
+        &quot;Mb&quot;       : [    &quot;OP_M&quot;        , &quot;SZ_B&quot;     ],
+        &quot;Mw&quot;       : [    &quot;OP_M&quot;        , &quot;SZ_W&quot;     ],
+        &quot;Ms&quot;       : [    &quot;OP_M&quot;        , &quot;SZ_W&quot;     ],
+        &quot;Md&quot;       : [    &quot;OP_M&quot;        , &quot;SZ_D&quot;     ],
+        &quot;Mq&quot;       : [    &quot;OP_M&quot;        , &quot;SZ_Q&quot;     ],
+        &quot;Mdq&quot;      : [    &quot;OP_M&quot;        , &quot;SZ_DQ&quot;    ],
+        &quot;Mv&quot;       : [    &quot;OP_M&quot;        , &quot;SZ_V&quot;     ],
+        &quot;Mt&quot;       : [    &quot;OP_M&quot;        , &quot;SZ_T&quot;     ],
+        &quot;Mo&quot;       : [    &quot;OP_M&quot;        , &quot;SZ_O&quot;     ],
+        &quot;MbRd&quot;     : [    &quot;OP_MR&quot;       , &quot;SZ_BD&quot;    ],
+        &quot;MbRv&quot;     : [    &quot;OP_MR&quot;       , &quot;SZ_BV&quot;    ],
+        &quot;MwRv&quot;     : [    &quot;OP_MR&quot;       , &quot;SZ_WV&quot;    ],
+        &quot;MwRd&quot;     : [    &quot;OP_MR&quot;       , &quot;SZ_WD&quot;    ],
+        &quot;MwRy&quot;     : [    &quot;OP_MR&quot;       , &quot;SZ_WY&quot;    ],
+        &quot;MdRy&quot;     : [    &quot;OP_MR&quot;       , &quot;SZ_DY&quot;    ],
+        &quot;I1&quot;       : [    &quot;OP_I1&quot;       , &quot;SZ_NA&quot;    ],
+        &quot;I3&quot;       : [    &quot;OP_I3&quot;       , &quot;SZ_NA&quot;    ],
+        &quot;Ib&quot;       : [    &quot;OP_I&quot;        , &quot;SZ_B&quot;     ],
+        &quot;Iw&quot;       : [    &quot;OP_I&quot;        , &quot;SZ_W&quot;     ],
+        &quot;Iv&quot;       : [    &quot;OP_I&quot;        , &quot;SZ_V&quot;     ],
+        &quot;Iz&quot;       : [    &quot;OP_I&quot;        , &quot;SZ_Z&quot;     ],
+        &quot;sIb&quot;      : [    &quot;OP_sI&quot;       , &quot;SZ_B&quot;     ],
+        &quot;sIz&quot;      : [    &quot;OP_sI&quot;       , &quot;SZ_Z&quot;     ],
+        &quot;sIv&quot;      : [    &quot;OP_sI&quot;       , &quot;SZ_V&quot;     ],
+        &quot;Jv&quot;       : [    &quot;OP_J&quot;        , &quot;SZ_V&quot;     ],
+        &quot;Jz&quot;       : [    &quot;OP_J&quot;        , &quot;SZ_Z&quot;     ],
+        &quot;Jb&quot;       : [    &quot;OP_J&quot;        , &quot;SZ_B&quot;     ],
+        &quot;R&quot;        : [    &quot;OP_R&quot;        , &quot;SZ_RDQ&quot;   ], 
+        &quot;C&quot;        : [    &quot;OP_C&quot;        , &quot;SZ_NA&quot;    ],
+        &quot;D&quot;        : [    &quot;OP_D&quot;        , &quot;SZ_NA&quot;    ],
+        &quot;S&quot;        : [    &quot;OP_S&quot;        , &quot;SZ_W&quot;     ],
+        &quot;Ob&quot;       : [    &quot;OP_O&quot;        , &quot;SZ_B&quot;     ],
+        &quot;Ow&quot;       : [    &quot;OP_O&quot;        , &quot;SZ_W&quot;     ],
+        &quot;Ov&quot;       : [    &quot;OP_O&quot;        , &quot;SZ_V&quot;     ],
+        &quot;U&quot;        : [    &quot;OP_U&quot;        , &quot;SZ_O&quot;     ],
+        &quot;Ux&quot;       : [    &quot;OP_U&quot;        , &quot;SZ_X&quot;     ],
+        &quot;V&quot;        : [    &quot;OP_V&quot;        , &quot;SZ_DQ&quot;    ],
+        &quot;Vdq&quot;      : [    &quot;OP_V&quot;        , &quot;SZ_DQ&quot;    ],
+        &quot;Vqq&quot;      : [    &quot;OP_V&quot;        , &quot;SZ_QQ&quot;    ],
+        &quot;Vsd&quot;      : [    &quot;OP_V&quot;        , &quot;SZ_Q&quot;     ],
+        &quot;Vx&quot;       : [    &quot;OP_V&quot;        , &quot;SZ_X&quot;     ],
+        &quot;H&quot;        : [    &quot;OP_H&quot;        , &quot;SZ_X&quot;     ],
+        &quot;Hx&quot;       : [    &quot;OP_H&quot;        , &quot;SZ_X&quot;     ],
+        &quot;Hqq&quot;      : [    &quot;OP_H&quot;        , &quot;SZ_QQ&quot;    ],
+        &quot;W&quot;        : [    &quot;OP_W&quot;        , &quot;SZ_DQ&quot;    ],
+        &quot;Wdq&quot;      : [    &quot;OP_W&quot;        , &quot;SZ_DQ&quot;    ],
+        &quot;Wqq&quot;      : [    &quot;OP_W&quot;        , &quot;SZ_QQ&quot;    ],
+        &quot;Wsd&quot;      : [    &quot;OP_W&quot;        , &quot;SZ_Q&quot;     ],
+        &quot;Wx&quot;       : [    &quot;OP_W&quot;        , &quot;SZ_X&quot;     ],
+        &quot;L&quot;        : [    &quot;OP_L&quot;        , &quot;SZ_O&quot;     ],
+        &quot;Lx&quot;       : [    &quot;OP_L&quot;        , &quot;SZ_X&quot;     ],
+        &quot;MwU&quot;      : [    &quot;OP_MU&quot;       , &quot;SZ_WO&quot;    ],
+        &quot;MdU&quot;      : [    &quot;OP_MU&quot;       , &quot;SZ_DO&quot;    ],
+        &quot;MqU&quot;      : [    &quot;OP_MU&quot;       , &quot;SZ_QO&quot;    ],
+        &quot;N&quot;        : [    &quot;OP_N&quot;        , &quot;SZ_Q&quot;     ],
+        &quot;P&quot;        : [    &quot;OP_P&quot;        , &quot;SZ_Q&quot;     ],
+        &quot;Q&quot;        : [    &quot;OP_Q&quot;        , &quot;SZ_Q&quot;     ],
+        &quot;AL&quot;       : [    &quot;OP_AL&quot;       , &quot;SZ_B&quot;     ],
+        &quot;AX&quot;       : [    &quot;OP_AX&quot;       , &quot;SZ_W&quot;     ],
+        &quot;eAX&quot;      : [    &quot;OP_eAX&quot;      , &quot;SZ_Z&quot;     ],
+        &quot;rAX&quot;      : [    &quot;OP_rAX&quot;      , &quot;SZ_V&quot;     ],
+        &quot;CL&quot;       : [    &quot;OP_CL&quot;       , &quot;SZ_B&quot;     ],
+        &quot;CX&quot;       : [    &quot;OP_CX&quot;       , &quot;SZ_W&quot;     ],
+        &quot;eCX&quot;      : [    &quot;OP_eCX&quot;      , &quot;SZ_Z&quot;     ],
+        &quot;rCX&quot;      : [    &quot;OP_rCX&quot;      , &quot;SZ_V&quot;     ],
+        &quot;DL&quot;       : [    &quot;OP_DL&quot;       , &quot;SZ_B&quot;     ],
+        &quot;DX&quot;       : [    &quot;OP_DX&quot;       , &quot;SZ_W&quot;     ],
+        &quot;eDX&quot;      : [    &quot;OP_eDX&quot;      , &quot;SZ_Z&quot;     ],
+        &quot;rDX&quot;      : [    &quot;OP_rDX&quot;      , &quot;SZ_V&quot;     ],
+        &quot;R0b&quot;      : [    &quot;OP_R0&quot;       , &quot;SZ_B&quot;     ],
+        &quot;R1b&quot;      : [    &quot;OP_R1&quot;       , &quot;SZ_B&quot;     ],
+        &quot;R2b&quot;      : [    &quot;OP_R2&quot;       , &quot;SZ_B&quot;     ],
+        &quot;R3b&quot;      : [    &quot;OP_R3&quot;       , &quot;SZ_B&quot;     ],
+        &quot;R4b&quot;      : [    &quot;OP_R4&quot;       , &quot;SZ_B&quot;     ],
+        &quot;R5b&quot;      : [    &quot;OP_R5&quot;       , &quot;SZ_B&quot;     ],
+        &quot;R6b&quot;      : [    &quot;OP_R6&quot;       , &quot;SZ_B&quot;     ],
+        &quot;R7b&quot;      : [    &quot;OP_R7&quot;       , &quot;SZ_B&quot;     ],
+        &quot;R0w&quot;      : [    &quot;OP_R0&quot;       , &quot;SZ_W&quot;     ],
+        &quot;R1w&quot;      : [    &quot;OP_R1&quot;       , &quot;SZ_W&quot;     ],
+        &quot;R2w&quot;      : [    &quot;OP_R2&quot;       , &quot;SZ_W&quot;     ],
+        &quot;R3w&quot;      : [    &quot;OP_R3&quot;       , &quot;SZ_W&quot;     ],
+        &quot;R4w&quot;      : [    &quot;OP_R4&quot;       , &quot;SZ_W&quot;     ],
+        &quot;R5w&quot;      : [    &quot;OP_R5&quot;       , &quot;SZ_W&quot;     ],
+        &quot;R6w&quot;      : [    &quot;OP_R6&quot;       , &quot;SZ_W&quot;     ],
+        &quot;R7w&quot;      : [    &quot;OP_R7&quot;       , &quot;SZ_W&quot;     ],
+        &quot;R0v&quot;      : [    &quot;OP_R0&quot;       , &quot;SZ_V&quot;     ],
+        &quot;R1v&quot;      : [    &quot;OP_R1&quot;       , &quot;SZ_V&quot;     ],
+        &quot;R2v&quot;      : [    &quot;OP_R2&quot;       , &quot;SZ_V&quot;     ],
+        &quot;R3v&quot;      : [    &quot;OP_R3&quot;       , &quot;SZ_V&quot;     ],
+        &quot;R4v&quot;      : [    &quot;OP_R4&quot;       , &quot;SZ_V&quot;     ],
+        &quot;R5v&quot;      : [    &quot;OP_R5&quot;       , &quot;SZ_V&quot;     ],
+        &quot;R6v&quot;      : [    &quot;OP_R6&quot;       , &quot;SZ_V&quot;     ],
+        &quot;R7v&quot;      : [    &quot;OP_R7&quot;       , &quot;SZ_V&quot;     ],
+        &quot;R0z&quot;      : [    &quot;OP_R0&quot;       , &quot;SZ_Z&quot;     ],
+        &quot;R1z&quot;      : [    &quot;OP_R1&quot;       , &quot;SZ_Z&quot;     ],
+        &quot;R2z&quot;      : [    &quot;OP_R2&quot;       , &quot;SZ_Z&quot;     ],
+        &quot;R3z&quot;      : [    &quot;OP_R3&quot;       , &quot;SZ_Z&quot;     ],
+        &quot;R4z&quot;      : [    &quot;OP_R4&quot;       , &quot;SZ_Z&quot;     ],
+        &quot;R5z&quot;      : [    &quot;OP_R5&quot;       , &quot;SZ_Z&quot;     ],
+        &quot;R6z&quot;      : [    &quot;OP_R6&quot;       , &quot;SZ_Z&quot;     ],
+        &quot;R7z&quot;      : [    &quot;OP_R7&quot;       , &quot;SZ_Z&quot;     ],
+        &quot;R0y&quot;      : [    &quot;OP_R0&quot;       , &quot;SZ_Y&quot;     ],
+        &quot;R1y&quot;      : [    &quot;OP_R1&quot;       , &quot;SZ_Y&quot;     ],
+        &quot;R2y&quot;      : [    &quot;OP_R2&quot;       , &quot;SZ_Y&quot;     ],
+        &quot;R3y&quot;      : [    &quot;OP_R3&quot;       , &quot;SZ_Y&quot;     ],
+        &quot;R4y&quot;      : [    &quot;OP_R4&quot;       , &quot;SZ_Y&quot;     ],
+        &quot;R5y&quot;      : [    &quot;OP_R5&quot;       , &quot;SZ_Y&quot;     ],
+        &quot;R6y&quot;      : [    &quot;OP_R6&quot;       , &quot;SZ_Y&quot;     ],
+        &quot;R7y&quot;      : [    &quot;OP_R7&quot;       , &quot;SZ_Y&quot;     ],
+        &quot;ES&quot;       : [    &quot;OP_ES&quot;       , &quot;SZ_NA&quot;    ],
+        &quot;CS&quot;       : [    &quot;OP_CS&quot;       , &quot;SZ_NA&quot;    ],
+        &quot;DS&quot;       : [    &quot;OP_DS&quot;       , &quot;SZ_NA&quot;    ],
+        &quot;SS&quot;       : [    &quot;OP_SS&quot;       , &quot;SZ_NA&quot;    ],
+        &quot;GS&quot;       : [    &quot;OP_GS&quot;       , &quot;SZ_NA&quot;    ],
+        &quot;FS&quot;       : [    &quot;OP_FS&quot;       , &quot;SZ_NA&quot;    ],
+        &quot;ST0&quot;      : [    &quot;OP_ST0&quot;      , &quot;SZ_NA&quot;    ],
+        &quot;ST1&quot;      : [    &quot;OP_ST1&quot;      , &quot;SZ_NA&quot;    ],
+        &quot;ST2&quot;      : [    &quot;OP_ST2&quot;      , &quot;SZ_NA&quot;    ],
+        &quot;ST3&quot;      : [    &quot;OP_ST3&quot;      , &quot;SZ_NA&quot;    ],
+        &quot;ST4&quot;      : [    &quot;OP_ST4&quot;      , &quot;SZ_NA&quot;    ],
+        &quot;ST5&quot;      : [    &quot;OP_ST5&quot;      , &quot;SZ_NA&quot;    ],
+        &quot;ST6&quot;      : [    &quot;OP_ST6&quot;      , &quot;SZ_NA&quot;    ],
+        &quot;ST7&quot;      : [    &quot;OP_ST7&quot;      , &quot;SZ_NA&quot;    ],
+        &quot;NONE&quot;     : [    &quot;OP_NONE&quot;     , &quot;SZ_NA&quot;    ],
+    }
+
+    #
+    # opcode prefix dictionary
+    # 
+    PrefixDict = { 
+        &quot;rep&quot;      : &quot;P_str&quot;,   
+        &quot;repz&quot;     : &quot;P_strz&quot;,   
+        &quot;aso&quot;      : &quot;P_aso&quot;,   
+        &quot;oso&quot;      : &quot;P_oso&quot;,   
+        &quot;rexw&quot;     : &quot;P_rexw&quot;, 
+        &quot;rexb&quot;     : &quot;P_rexb&quot;,  
+        &quot;rexx&quot;     : &quot;P_rexx&quot;,  
+        &quot;rexr&quot;     : &quot;P_rexr&quot;,
+        &quot;vexl&quot;     : &quot;P_vexl&quot;,
+        &quot;vexw&quot;     : &quot;P_vexw&quot;,
+        &quot;seg&quot;      : &quot;P_seg&quot;,
+        &quot;inv64&quot;    : &quot;P_inv64&quot;, 
+        &quot;def64&quot;    : &quot;P_def64&quot;, 
+        &quot;cast&quot;     : &quot;P_cast&quot;,
+    }
+
+    MnemonicAliases = ( &quot;invalid&quot;, &quot;3dnow&quot;, &quot;none&quot;, &quot;db&quot;, &quot;pause&quot; )
+    
+    def __init__(self, tables):
+        self.tables = tables
+        self._insnIndexMap, i = {}, 0
+        for insn in tables.getInsnList():
+            self._insnIndexMap[insn], i = i, i + 1
+
+        self._tableIndexMap, i = {}, 0
+        for table in tables.getTableList():
+            self._tableIndexMap[table], i = i, i + 1
+
+    def getInsnIndex(self, insn):
+        assert isinstance(insn, UdInsnDef)
+        return self._insnIndexMap[insn]
+
+    def getTableIndex(self, table):
+        assert isinstance(table, UdOpcodeTable)
+        return self._tableIndexMap[table]
+
+    def getTableName(self, table):
+        return &quot;ud_itab__%d&quot; % self.getTableIndex(table)
+
+    def genOpcodeTable(self, table, isGlobal=False):
+        &quot;&quot;&quot;Emit Opcode Table in C.
+        &quot;&quot;&quot;
+        self.ItabC.write( &quot;\n&quot; );
+        if not isGlobal:
+            self.ItabC.write('static ')
+        self.ItabC.write( &quot;const uint16_t %s[] = {\n&quot; % self.getTableName(table))
+        for i in range(table.size()):
+            if i &gt; 0 and i % 4 == 0: 
+                self.ItabC.write( &quot;\n&quot; )
+            if i % 4 == 0:
+                self.ItabC.write( &quot;  /* %2x */&quot; % i)
+            e = table.entryAt(i)
+            if e is None:
+                self.ItabC.write(&quot;%12s,&quot; % &quot;INVALID&quot;)
+            elif isinstance(e, UdOpcodeTable):
+                self.ItabC.write(&quot;%12s,&quot; % (&quot;GROUP(%d)&quot; % self.getTableIndex(e)))
+            elif isinstance(e, UdInsnDef):
+                self.ItabC.write(&quot;%12s,&quot; % self.getInsnIndex(e))
+        self.ItabC.write( &quot;\n&quot; )
+        self.ItabC.write( &quot;};\n&quot; )
+
+
+    def genOpcodeTables(self):
+        tables = self.tables.getTableList()
+        for table in tables:
+            self.genOpcodeTable(table, table is self.tables.root)
+
+
+    def genOpcodeTablesLookupIndex(self):
+        self.ItabC.write( &quot;\n\n&quot;  );
+        self.ItabC.write( &quot;struct ud_lookup_table_list_entry ud_lookup_table_list[] = {\n&quot; )
+        for table in self.tables.getTableList():
+            f0 = self.getTableName(table) + &quot;,&quot;
+            f1 = table.label() + &quot;,&quot;
+            f2 = &quot;\&quot;%s\&quot;&quot; % table.meta()
+            self.ItabC.write(&quot;    /* %03d */ { %s %s %s },\n&quot; % 
+                             (self.getTableIndex(table), f0, f1, f2))
+        self.ItabC.write( &quot;};&quot; )
+
+
+    def genInsnTable( self ):
+        self.ItabC.write( &quot;struct ud_itab_entry ud_itab[] = {\n&quot; );
+        for insn in self.tables.getInsnList():
+            opr_c = [ &quot;O_NONE&quot;, &quot;O_NONE&quot;, &quot;O_NONE&quot;, &quot;O_NONE&quot; ]
+            pfx_c = []
+            opr   = insn.operands
+            for i in range(len(opr)): 
+                if not (opr[i] in self.OperandDict.keys()):
+                    print(&quot;error: invalid operand declaration: %s\n&quot; % opr[i])
+                opr_c[i] = &quot;O_&quot; + opr[i]
+            opr = &quot;%s %s %s %s&quot; % (opr_c[0] + &quot;,&quot;, opr_c[1] + &quot;,&quot;,
+                                   opr_c[2] + &quot;,&quot;, opr_c[3])
+
+            for p in insn.prefixes:
+                if not ( p in self.PrefixDict.keys() ):
+                    print(&quot;error: invalid prefix specification: %s \n&quot; % pfx)
+                pfx_c.append( self.PrefixDict[p] )
+            if len(insn.prefixes) == 0:
+                pfx_c.append( &quot;P_none&quot; )
+            pfx = &quot;|&quot;.join( pfx_c )
+
+            self.ItabC.write( &quot;  /* %04d */ { UD_I%s %s, %s },\n&quot; \
+                        % ( self.getInsnIndex(insn), insn.mnemonic + ',', opr, pfx ) )
+        self.ItabC.write( &quot;};\n&quot; )
+
+   
+    def getMnemonicsList(self):
+        mnemonics = self.tables.getMnemonicsList()
+        mnemonics.extend(self.MnemonicAliases)
+        return mnemonics
+
+    def genMnemonicsList(self):
+        mnemonics = self.getMnemonicsList()
+        self.ItabC.write( &quot;\n\n&quot;  );
+        self.ItabC.write( &quot;const char* ud_mnemonics_str[] = {\n    &quot; )
+        self.ItabC.write( &quot;,\n    &quot;.join( [ &quot;\&quot;%s\&quot;&quot; % m for m in mnemonics ] ) )
+        self.ItabC.write( &quot;\n};\n&quot; )

+
+    def genItabH( self, filePath ):
+        self.ItabH = open( filePath, &quot;w&quot; )
+
+        # Generate Table Type Enumeration
+        self.ItabH.write( &quot;#ifndef UD_ITAB_H\n&quot; )
+        self.ItabH.write( &quot;#define UD_ITAB_H\n\n&quot; )
+
+        self.ItabH.write(&quot;/* itab.h -- generated by udis86:scripts/ud_itab.py, do no edit */\n\n&quot;)
+
+        # table type enumeration
+        self.ItabH.write( &quot;/* ud_table_type -- lookup table types (see decode.c) */\n&quot; )
+        self.ItabH.write( &quot;enum ud_table_type {\n    &quot; )
+        enum = UdOpcodeTable.getLabels()
+        self.ItabH.write( &quot;,\n    &quot;.join( enum ) )
+        self.ItabH.write( &quot;\n};\n\n&quot; );
+
+        # mnemonic enumeration
+        self.ItabH.write( &quot;/* ud_mnemonic -- mnemonic constants */\n&quot; )
+        enum  = &quot;enum ud_mnemonic_code {\n    &quot;
+        enum += &quot;,\n    &quot;.join( [ &quot;UD_I%s&quot; % m for m in self.getMnemonicsList() ] )
+        enum += &quot;,\n    UD_MAX_MNEMONIC_CODE&quot;
+        enum += &quot;\n};\n&quot;
+        self.ItabH.write( enum )
+        self.ItabH.write( &quot;\n&quot; )
+
+        self.ItabH.write( &quot;extern const char * ud_mnemonics_str[];\n&quot; )
+
+        self.ItabH.write( &quot;\n#endif /* UD_ITAB_H */\n&quot; )
+    
+        self.ItabH.close()
+
+
+    def genItabC(self, filePath):
+        self.ItabC = open(filePath, &quot;w&quot;)
+        self.ItabC.write(&quot;/* itab.c -- generated by udis86:scripts/ud_itab.py, do no edit&quot;)
+        self.ItabC.write(&quot; */\n&quot;);
+        self.ItabC.write(&quot;#include \&quot;udis86_decode.h\&quot;\n\n&quot;);
+
+        self.ItabC.write(&quot;#define GROUP(n) (0x8000 | (n))\n&quot;)
+        self.ItabC.write(&quot;#define INVALID  %d\n\n&quot; % self.getInsnIndex(self.tables.invalidInsn))
+
+        self.genOpcodeTables() 
+        self.genOpcodeTablesLookupIndex()
+
+        #
+        # Macros defining short-names for operands
+        #
+        self.ItabC.write(&quot;\n\n/* itab entry operand definitions (for readability) */\n&quot;);
+        operands = self.OperandDict.keys()
+        operands = sorted(operands)
+        for o in operands:
+            self.ItabC.write(&quot;#define O_%-7s { %-12s %-8s }\n&quot; %
+                    (o, self.OperandDict[o][0] + &quot;,&quot;, self.OperandDict[o][1]));
+        self.ItabC.write(&quot;\n&quot;);
+
+        self.genInsnTable()
+        self.genMnemonicsList()
+
+        self.ItabC.close()
+
+    def genItab( self, location ):
+        self.genItabC(os.path.join(location, &quot;udis86_itab.c&quot;))
+        self.genItabH(os.path.join(location, &quot;udis86_itab.h&quot;))
+
+def usage():
+    print(&quot;usage: ud_itab.py &lt;optable.xml&gt; &lt;output-path&gt;&quot;)
+
+def main():
+
+    if len(sys.argv) != 3:
+        usage()
+        sys.exit(1)
+    
+    tables = UdOpcodeTables(xml=sys.argv[1])
+    itab   = UdItabGenerator(tables)
+    itab.genItab(sys.argv[2])
+
+if __name__ == '__main__':
+    main()
</ins></span></pre></div>
<a id="trunkSourceJavaScriptCoredisassemblerudis86ud_opcodepy"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/disassembler/udis86/ud_opcode.py (198831 => 198832)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/disassembler/udis86/ud_opcode.py        2016-03-30 07:14:10 UTC (rev 198831)
+++ trunk/Source/JavaScriptCore/disassembler/udis86/ud_opcode.py        2016-03-30 07:17:14 UTC (rev 198832)
</span><span class="lines">@@ -1,6 +1,6 @@
</span><span class="cx"> # udis86 - scripts/ud_opcode.py
</span><span class="cx"> # 
</span><del>-# Copyright (c) 2009 Vivek Thampi
</del><ins>+# Copyright (c) 2009, 2013 Vivek Thampi
</ins><span class="cx"> # All rights reserved.
</span><span class="cx"> # 
</span><span class="cx"> # Redistribution and use in source and binary forms, with or without modification, 
</span><span class="lines">@@ -23,213 +23,600 @@
</span><span class="cx"> # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 
</span><span class="cx"> # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
</span><span class="cx"> 
</span><del>-class UdOpcodeTables:
</del><ins>+import os
</ins><span class="cx"> 
</span><del>-    TableInfo = {
-        'opctbl'    : { 'name' : 'UD_TAB__OPC_TABLE',   'size' : 256 },
-        '/sse'      : { 'name' : 'UD_TAB__OPC_SSE',     'size' : 4 },
-        '/reg'      : { 'name' : 'UD_TAB__OPC_REG',     'size' : 8 },
-        '/rm'       : { 'name' : 'UD_TAB__OPC_RM',      'size' : 8 },
-        '/mod'      : { 'name' : 'UD_TAB__OPC_MOD',     'size' : 2 },
-        '/m'        : { 'name' : 'UD_TAB__OPC_MODE',    'size' : 3 },
-        '/x87'      : { 'name' : 'UD_TAB__OPC_X87',     'size' : 64 },
-        '/a'        : { 'name' : 'UD_TAB__OPC_ASIZE',   'size' : 3 },
-        '/o'        : { 'name' : 'UD_TAB__OPC_OSIZE',   'size' : 3 },
-        '/3dnow'    : { 'name' : 'UD_TAB__OPC_3DNOW',   'size' : 256 },
-        'vendor'    : { 'name' : 'UD_TAB__OPC_VENDOR',  'size' : 3 },
-    }
</del><ins>+# Some compatibility stuff for supporting python 2.x as well as python 3.x
+def itemslist(dict):
+    try:
+        return dict.iteritems() # python 2.x
+    except AttributeError:
+        return list(dict.items()) # python 3.x
</ins><span class="cx"> 
</span><del>-    OpcodeTable0 = {
-        'type'      : 'opctbl',
-        'entries'   : {},
-        'meta'      : 'table0'
-    }
</del><ins>+class UdInsnDef:
+    &quot;&quot;&quot;An x86 instruction definition
+    &quot;&quot;&quot;
+    def __init__(self, **insnDef):
+        self.mnemonic  = insnDef['mnemonic']
+        self.prefixes  = insnDef['prefixes']
+        self.opcodes   = insnDef['opcodes']
+        self.operands  = insnDef['operands']
+        self._cpuid    = insnDef['cpuid']
+        self._opcexts  = {}
</ins><span class="cx"> 
</span><del>-    OpcExtIndex = {
</del><ins>+        for opc in self.opcodes:
+            if opc.startswith('/'):
+                e, v = opc.split('=')
+                self._opcexts[e] = v
</ins><span class="cx"> 
</span><del>-        # ssef2, ssef3, sse66
-        'sse': {
-            'none' : '00', 
-            'f2'   : '01', 
-            'f3'   : '02', 
-            '66'   : '03'
-        },
</del><ins>+    def lookupPrefix(self, pfx):
+        &quot;&quot;&quot;Lookup prefix (if any, None otherwise), by name&quot;&quot;&quot;
+        return True if pfx in self.prefixes else None
</ins><span class="cx"> 
</span><del>-        # /mod=
-        'mod': {
-            '!11'   : '00', 
-            '11'    : '01'
-        },
</del><span class="cx"> 
</span><del>-        # /m=, /o=, /a=
-        'mode': { 
-            '16'    : '00', 
-            '32'    : '01', 
-            '64'    : '02'
-        },
</del><ins>+    @property
+    def vendor(self):
+        return self._opcexts.get('/vendor', None)
</ins><span class="cx"> 
</span><del>-        'vendor' : {
-            'amd'   : '00',
-            'intel' : '01',
-            'any'   : '02'
</del><ins>+    @property
+    def mode(self):
+        return self._opcexts.get('/m', None)
+
+    @property
+    def osize(self):
+        return self._opcexts.get('/o', None)
+
+    def isDef64(self):
+        return 'def64' in self.prefixes
+
+    def __str__(self):
+        return self.mnemonic + &quot; &quot; + ', '.join(self.operands) + \
+               &quot; &quot; + ' '.join(self.opcodes)
+
+
+class UdOpcodeTable:
+    &quot;&quot;&quot;A single table of instruction definitions, indexed by
+       a decode field. 
+    &quot;&quot;&quot;
+
+    class CollisionError(Exception):
+        pass
+
+    class IndexError(Exception):
+        &quot;&quot;&quot;Invalid Index Error&quot;&quot;&quot;
+        pass
+
+    @classmethod
+    def vendor2idx(cls, v):
+        return (0 if v == 'amd' 
+                  else (1 if v == 'intel'
+                          else 2))
+
+    @classmethod
+    def vex2idx(cls, v):
+        if v.startswith(&quot;none_&quot;):
+            v = v[5:]
+        vexOpcExtMap = {
+            'none'      : 0x0, 
+            '0f'        : 0x1, 
+            '0f38'      : 0x2, 
+            '0f3a'      : 0x3,
+            '66'        : 0x4, 
+            '66_0f'     : 0x5, 
+            '66_0f38'   : 0x6, 
+            '66_0f3a'   : 0x7,
+            'f3'        : 0x8, 
+            'f3_0f'     : 0x9, 
+            'f3_0f38'   : 0xa, 
+            'f3_0f3a'   : 0xb,
+            'f2'        : 0xc, 
+            'f2_0f'     : 0xd, 
+            'f2_0f38'   : 0xe, 
+            'f2_0f3a'   : 0xf,
</ins><span class="cx">         }
</span><ins>+        return vexOpcExtMap[v]
+
+
+    # A mapping of opcode extensions to their representational
+    # values used in the opcode map.
+    OpcExtMap = {
+        '/rm'    : lambda v: int(v, 16),
+        '/x87'   : lambda v: int(v, 16),
+        '/3dnow' : lambda v: int(v, 16),
+        '/reg'   : lambda v: int(v, 16),
+        # modrm.mod
+        # (!11, 11)    =&gt; (00b, 01b)
+        '/mod'   : lambda v: 0 if v == '!11' else 1,
+        # Mode extensions:
+        # (16, 32, 64) =&gt; (00, 01, 02)
+        '/o'     : lambda v: (int(v) / 32),
+        '/a'     : lambda v: (int(v) / 32),
+        # Disassembly mode 
+        # (!64, 64)    =&gt; (00b, 01b)
+        '/m'     : lambda v: 1 if v == '64' else 0,
+        # SSE
+        # none =&gt; 0
+        # f2   =&gt; 1
+        # f3   =&gt; 2
+        # 66   =&gt; 3
+        '/sse'   : lambda v: (0 if v == 'none'
+                                else (((int(v, 16) &amp; 0xf) + 1) / 2)),
+        # AVX
+        '/vex'   : lambda v: UdOpcodeTable.vex2idx(v),
+        '/vexw'  : lambda v: 0 if v == '0' else 1,
+        '/vexl'  : lambda v: 0 if v == '0' else 1,
+        # Vendor
+        '/vendor': lambda v: UdOpcodeTable.vendor2idx(v)
</ins><span class="cx">     }
</span><span class="cx"> 
</span><del>-    InsnTable = []
-    MnemonicsTable = []
</del><span class="cx"> 
</span><del>-    ThreeDNowTable = {}
</del><ins>+    _TableInfo = {
+        'opctbl'    : { 'label' : 'UD_TAB__OPC_TABLE',   'size' : 256 },
+        '/sse'      : { 'label' : 'UD_TAB__OPC_SSE',     'size' : 4 },
+        '/reg'      : { 'label' : 'UD_TAB__OPC_REG',     'size' : 8 },
+        '/rm'       : { 'label' : 'UD_TAB__OPC_RM',      'size' : 8 },
+        '/mod'      : { 'label' : 'UD_TAB__OPC_MOD',     'size' : 2 },
+        '/m'        : { 'label' : 'UD_TAB__OPC_MODE',    'size' : 2 },
+        '/x87'      : { 'label' : 'UD_TAB__OPC_X87',     'size' : 64 },
+        '/a'        : { 'label' : 'UD_TAB__OPC_ASIZE',   'size' : 3 },
+        '/o'        : { 'label' : 'UD_TAB__OPC_OSIZE',   'size' : 3 },
+        '/3dnow'    : { 'label' : 'UD_TAB__OPC_3DNOW',   'size' : 256 },
+        '/vendor'   : { 'label' : 'UD_TAB__OPC_VENDOR',  'size' : 3 },
+        '/vex'      : { 'label' : 'UD_TAB__OPC_VEX',     'size' : 16 },
+        '/vexw'     : { 'label' : 'UD_TAB__OPC_VEX_W',   'size' : 2 },
+        '/vexl'     : { 'label' : 'UD_TAB__OPC_VEX_L',   'size' : 2 },
+    }
</ins><span class="cx"> 
</span><del>-    def sizeOfTable( self, t ): 
-        return self.TableInfo[ t ][ 'size' ]
</del><span class="cx"> 
</span><del>-    def nameOfTable( self, t ): 
-        return self.TableInfo[ t ][ 'name' ]
</del><ins>+    def __init__(self, typ):
+        assert typ in self._TableInfo
+        self._typ     = typ
+        self._entries = {}
</ins><span class="cx"> 
</span><del>-    #
-    # Updates a table entry: If the entry doesn't exist
-    # it will create the entry, otherwise, it will walk
-    # while validating the path.
-    #
-    def updateTable( self, table, index, type, meta ):
-        if not index in table[ 'entries' ]:
-            table[ 'entries' ][ index ] = { 'type' : type, 'entries' : {}, 'meta' : meta } 
-        if table[ 'entries' ][ index ][ 'type' ] != type:
-            raise NameError( &quot;error: violation in opcode mapping (overwrite) %s with %s.&quot; % 
-                                ( table[ 'entries' ][ index ][ 'type' ], type) )
-        return table[ 'entries' ][ index ]
</del><span class="cx"> 
</span><del>-    class Insn:
-        &quot;&quot;&quot;An abstract type representing an instruction in the opcode map.
</del><ins>+    def size(self):
+        return self._TableInfo[self._typ]['size']
+
+    def entries(self):
+        return itemslist(self._entries)
+
+    def numEntries(self):
+        return len(self._entries.keys())
+
+    def label(self):
+        return self._TableInfo[self._typ]['label']
+
+    def typ(self):
+        return self._typ
+
+    def meta(self):
+        return self._typ
+
+
+    def __str__(self):
+        return &quot;table-%s&quot; % self._typ
+
+
+    def add(self, opc, obj):
+        typ = UdOpcodeTable.getOpcodeTyp(opc)
+        idx = UdOpcodeTable.getOpcodeIdx(opc)
+        if self._typ != typ or idx in self._entries:
+            raise CollisionError()
+        self._entries[idx] = obj
+
+
+    def lookup(self, opc):
+        typ = UdOpcodeTable.getOpcodeTyp(opc)
+        idx = UdOpcodeTable.getOpcodeIdx(opc)
+        if self._typ != typ:
+            raise UdOpcodeTable.CollisionError(&quot;%s &lt;-&gt; %s&quot; % (self._typ, typ))
+        return self._entries.get(idx, None)
+
+    
+    def entryAt(self, index):
+        &quot;&quot;&quot;Returns the entry at a given index of the table,
+           None if there is none. Raises an exception if the
+           index is out of bounds.
</ins><span class="cx">         &quot;&quot;&quot;
</span><ins>+        if index &lt; self.size():
+            return self._entries.get(index, None)
+        raise self.IndexError(&quot;index out of bounds: %s&quot; % index)
</ins><span class="cx"> 
</span><del>-        # A mapping of opcode extensions to their representational
-        # values used in the opcode map.
-        OpcExtMap = {
-            '/rm'    : lambda v: &quot;%02x&quot; % int(v, 16),
-            '/x87'   : lambda v: &quot;%02x&quot; % int(v, 16),
-            '/3dnow' : lambda v: &quot;%02x&quot; % int(v, 16),
-            '/reg'   : lambda v: &quot;%02x&quot; % int(v, 16),
-            # modrm.mod
-            # (!11, 11)    =&gt; (00, 01)
-            '/mod'   : lambda v: '00' if v == '!11' else '01',
-            # Mode extensions:
-            # (16, 32, 64) =&gt; (00, 01, 02)
-            '/o'     : lambda v: &quot;%02x&quot; % (int(v) / 32),
-            '/a'     : lambda v: &quot;%02x&quot; % (int(v) / 32),
-            '/m'     : lambda v: &quot;%02x&quot; % (int(v) / 32),
-            '/sse'   : lambda v: UdOpcodeTables.OpcExtIndex['sse'][v]
-        }
</del><ins>+    def setEntryAt(self, index, obj):
+        if index &lt; self.size():
+            self._entries[index] = obj
+        else:
+            raise self.IndexError(&quot;index out of bounds: %s&quot; % index)
</ins><span class="cx"> 
</span><del>-        def __init__(self, prefixes, mnemonic, opcodes, operands, vendor):
-            self.opcodes  = opcodes
-            self.prefixes = prefixes
-            self.mnemonic = mnemonic
-            self.operands = operands
-            self.vendor   = vendor
-            self.opcext   = {}
</del><ins>+    @classmethod
+    def getOpcodeTyp(cls, opc):
+        if opc.startswith('/'):
+            return opc.split('=')[0]
+        else:
+            return 'opctbl'
</ins><span class="cx"> 
</span><del>-            ssePrefix = None
-            if self.opcodes[0] in ('ssef2', 'ssef3', 'sse66'):
-                ssePrefix = self.opcodes[0][3:]
-                self.opcodes.pop(0)
</del><span class="cx"> 
</span><del>-            # do some preliminary decoding of the instruction type
-            # 1byte, 2byte or 3byte instruction?
-            self.nByteInsn = 1
-            if self.opcodes[0] == '0f': # 2byte
-                # 2+ byte opcodes are always disambiguated by an
-                # sse prefix, unless it is a 3d now instruction
-                # which is 0f 0f ...
-                if self.opcodes[1] != '0f' and ssePrefix is None:
-                    ssePrefix = 'none'
-                if self.opcodes[1] in ('38', '3a'): # 3byte
-                    self.nByteInsn = 3
</del><ins>+    @classmethod
+    def getOpcodeIdx(cls, opc):
+        if opc.startswith('/'):
+            typ, v = opc.split('=')
+            return cls.OpcExtMap[typ](v)
+        else:
+            # plain opctbl opcode
+            return int(opc, 16)
+
+
+    @classmethod
+    def getLabels(cls):
+        &quot;&quot;&quot;Returns a list of all labels&quot;&quot;&quot;
+        return [cls._TableInfo[k]['label'] for k in cls._TableInfo.keys()]
+
+
+class UdOpcodeTables(object):
+    &quot;&quot;&quot;Collection of opcode tables
+    &quot;&quot;&quot;
+
+    class CollisionError(Exception):
+        def __init__(self, obj1, obj2):
+            self.obj1, self.obj2 = obj1, obj2
+
+    def newTable(self, typ):
+        &quot;&quot;&quot;Create a new opcode table of a give type `typ`. &quot;&quot;&quot;
+        tbl = UdOpcodeTable(typ)
+        self._tables.append(tbl)
+        return tbl
+
+    def mkTrie(self, opcodes, obj):
+        &quot;&quot;&quot;Recursively contruct a trie entry mapping a string of
+           opcodes to an object.
+        &quot;&quot;&quot;
+        if len(opcodes) == 0:
+            return obj
+        opc = opcodes[0]
+        tbl = self.newTable(UdOpcodeTable.getOpcodeTyp(opc))
+        tbl.add(opc, self.mkTrie(opcodes[1:], obj))
+        return tbl
+
+    def walk(self, tbl, opcodes):
+        &quot;&quot;&quot;Walk down the opcode trie, starting at a given opcode
+           table, given a string of opcodes. Return None if unable
+           to walk, the object at the leaf otherwise.
+        &quot;&quot;&quot;
+        opc = opcodes[0]
+        e   = tbl.lookup(opc)
+        if e is None:
+            return None
+        elif isinstance(e, UdOpcodeTable) and len(opcodes[1:]):
+            return self.walk(e, opcodes[1:])
+        return e
+
+    def map(self, tbl, opcodes, obj):
+        &quot;&quot;&quot;Create a mapping from a given string of opcodes to an
+           object in the opcode trie. Constructs trie branches as
+           needed.
+        &quot;&quot;&quot;
+        opc = opcodes[0]
+        e   =  tbl.lookup(opc)
+        if e is None:
+            tbl.add(opc, self.mkTrie(opcodes[1:], obj))
+        else:
+            if len(opcodes[1:]) == 0:
+                raise self.CollisionError(e, obj)
+            self.map(e, opcodes[1:], obj)
+
+    def __init__(self, xml):
+        self._tables    = []
+        self._insns     = []
+        self._mnemonics = {}
+
+        # The root table is always a 256 entry opctbl, indexed
+        # by a plain opcode byte
+        self.root       = self.newTable('opctbl')
+
+        if os.getenv(&quot;UD_OPCODE_DEBUG&quot;):
+            self._logFh     = open(&quot;opcodeTables.log&quot;, &quot;w&quot;)
+
+        # add an invalid instruction entry without any mapping
+        # in the opcode tables.
+        self.invalidInsn = UdInsnDef(mnemonic=&quot;invalid&quot;, opcodes=[], cpuid=[],
+                                     operands=[], prefixes=[])
+        self._insns.append(self.invalidInsn)
+
+        # Construct UdOpcodeTables object from the given
+        # udis86 optable.xml
+        for insn in self.__class__.parseOptableXML(xml):
+            self.addInsnDef(insn)
+        self.patchAvx2byte()
+        self.mergeSSENONE()
+        self.printStats()
+
+    def log(self, s):
+        if os.getenv(&quot;UD_OPCODE_DEBUG&quot;):
+            self._logFh.write(s + &quot;\n&quot;)
+
+
+    def mergeSSENONE(self):
+        &quot;&quot;&quot;Merge sse tables with only one entry for /sse=none
+        &quot;&quot;&quot;
+        for table in self._tables:
+            for k, e in table.entries():
+                if isinstance(e, UdOpcodeTable) and e.typ() == '/sse':
+                    if e.numEntries() == 1:
+                        sse = e.lookup(&quot;/sse=none&quot;)
+                        if sse:
+                            table.setEntryAt(k, sse)
+        uniqTables = {}
+        def genTableList(tbl):
+            if tbl not in uniqTables:
+                self._tables.append(tbl)
+            uniqTables[tbl] = 1
+            for k, e in tbl.entries():
+                if isinstance(e, UdOpcodeTable):
+                    genTableList(e)
+        self._tables = []
+        genTableList(self.root)
+                
+
+    def patchAvx2byte(self):
+        # create avx tables
+        for pp in (None, 'f2', 'f3', '66'):
+            for m in (None, '0f', '0f38', '0f3a'):
+                if pp is None and m is None:
+                    continue
+                if pp is None:
+                    vex = m
+                elif m is None:
+                    vex = pp
</ins><span class="cx">                 else:
</span><del>-                    self.nByteInsn = 2
-           
-            # The opcode that indexes into the opcode table.
-            self.opcode = self.opcodes[self.nByteInsn - 1]
-            
-            # Record opcode extensions
-            for opcode in self.opcodes[self.nByteInsn:]:
-                arg, val = opcode.split('=')
-                self.opcext[arg] = self.OpcExtMap[arg](val)
</del><ins>+                    vex = pp + '_' + m
+                table = self.walk(self.root, ('c4', '/vex=' + vex))
+                self.map(self.root, ('c5', '/vex=' + vex), table)
</ins><span class="cx"> 
</span><del>-            # Record sse extension: the reason sse extension is handled 
-            # separately is that historically sse was handled as a first
-            # class opcode, not as an extension. Now that sse is handled
-            # as an extension, we do the manual conversion here, as opposed
-            # to modifying the opcode xml file.
-            if ssePrefix is not None:
-                self.opcext['/sse'] = self.OpcExtMap['/sse'](ssePrefix)
</del><span class="cx"> 
</span><del>-    def parse(self, table, insn):
-        index = insn.opcodes[0];
-        if insn.nByteInsn &gt; 1:
-            assert index == '0f'
-            table = self.updateTable(table, index, 'opctbl', '0f')
-            index = insn.opcodes[1]
</del><ins>+    def addInsn(self, **insnDef):
</ins><span class="cx"> 
</span><del>-            if insn.nByteInsn == 3:
-                table = self.updateTable(table, index, 'opctbl', index)
-                index = insn.opcodes[2]
</del><ins>+        # Canonicalize opcode list
+        opcexts = insnDef['opcexts']
+        opcodes = list(insnDef['opcodes'])
</ins><span class="cx"> 
</span><del>-        # Walk down the tree, create levels as needed, for opcode
-        # extensions. The order is important, and determines how
</del><ins>+        # Re-order vex
+        if '/vex' in opcexts:
+            assert opcodes[0] == 'c4' or opcodes[0] == 'c5'
+            opcodes.insert(1, '/vex=' + opcexts['/vex'])
+
+        # Add extensions. The order is important, and determines how
</ins><span class="cx">         # well the opcode table is packed. Also note, /sse must be
</span><span class="cx">         # before /o, because /sse may consume operand size prefix
</span><span class="cx">         # affect the outcome of /o.
</span><del>-        for ext in ('/mod', '/x87', '/reg', '/rm', '/sse',
-                    '/o',   '/a',   '/m',   '/3dnow'):
-            if ext in insn.opcext:
-                table = self.updateTable(table, index, ext, ext)
-                index = insn.opcext[ext]
</del><ins>+        for ext in ('/mod', '/x87', '/reg', '/rm', '/sse', '/o', '/a', '/m',
+                    '/vexw', '/vexl', '/3dnow', '/vendor'):
+            if ext in opcexts:
+                opcodes.append(ext + '=' + opcexts[ext])
</ins><span class="cx"> 
</span><del>-        # additional table for disambiguating vendor
-        if len(insn.vendor):
-            table = self.updateTable(table, index, 'vendor', insn.vendor)
-            index = self.OpcExtIndex['vendor'][insn.vendor]
</del><ins>+        insn = UdInsnDef(mnemonic = insnDef['mnemonic'],
+                         prefixes = insnDef['prefixes'],
+                         operands = insnDef['operands'],
+                         opcodes  = opcodes,
+                         cpuid    = insnDef['cpuid'])
+        try:
+            self.map(self.root, opcodes, insn)
+        except self.CollisionError as e:
+            self.pprint()
+            print(opcodes, insn, str(e.obj1), str(e.obj2))
+            raise
+        except Exception as e:
+            self.pprint()
+            raise
+        self._insns.append(insn)
+        # add to lookup by mnemonic structure
+        if insn.mnemonic not in self._mnemonics:
+            self._mnemonics[insn.mnemonic] = [ insn ]
+        else:
+            self._mnemonics[insn.mnemonic].append(insn)
</ins><span class="cx"> 
</span><del>-        # make leaf node entries
-        leaf = self.updateTable(table, index, 'insn', '')
</del><span class="cx"> 
</span><del>-        leaf['mnemonic'] = insn.mnemonic
-        leaf['prefixes'] = insn.prefixes
-        leaf['operands'] = insn.operands
</del><ins>+    def addInsnDef(self, insnDef):
+        opcodes  = []
+        opcexts  = {}
</ins><span class="cx"> 
</span><del>-        # add instruction to linear table of instruction forms
-        self.InsnTable.append({ 'prefixes' : insn.prefixes,  
-                                'mnemonic' : insn.mnemonic, 
-                                'operands' : insn.operands })
</del><ins>+        # pack plain opcodes first, and collect opcode
+        # extensions
+        for opc in insnDef['opcodes']:
+            if not opc.startswith('/'):
+                opcodes.append(opc)
+            else:
+                e, v = opc.split('=')
+                opcexts[e] = v
</ins><span class="cx"> 
</span><del>-        # add mnemonic to mnemonic table
-        if not insn.mnemonic in self.MnemonicsTable:
-            self.MnemonicsTable.append(insn.mnemonic)
</del><ins>+        # treat vendor as an opcode extension
+        if len(insnDef['vendor']):
+            opcexts['/vendor'] = insnDef['vendor'][0]
</ins><span class="cx"> 
</span><ins>+        if insnDef['mnemonic'] in ('lds', 'les'):
+            #
+            # Massage lds and les, which share the same prefix as AVX
+            # instructions, to work well with the opcode tree.
+            #
+            opcexts['/vex'] = 'none'
+        elif '/vex' in opcexts:
+            # A proper avx instruction definition; make sure there are
+            # no legacy opcode extensions
+            assert '/sse' not in opcodes
</ins><span class="cx"> 
</span><del>-    # Adds an instruction definition to the opcode tables
-    def addInsnDef( self, prefixes, mnemonic, opcodes, operands, vendor ):
-        insn = self.Insn(prefixes=prefixes,
-                    mnemonic=mnemonic,
-                    opcodes=opcodes,
-                    operands=operands,
-                    vendor=vendor)
-        self.parse(self.OpcodeTable0, insn)
</del><ins>+            # make sure the opcode definitions don't already include
+            # the avx prefixes.
+            assert opcodes[0] not in ('c4', 'c5')
</ins><span class="cx"> 
</span><del>-    def print_table( self, table, pfxs ):
-        print(&quot;%s   |&quot; % pfxs)
-        keys = table[ 'entries' ].keys()
-        if ( len( keys ) ):
-            keys.sort()
-        for idx in keys:
-            e = table[ 'entries' ][ idx ]
-            if e[ 'type' ] == 'insn':
-                print(&quot;%s   |-&lt;%s&gt;&quot; % ( pfxs, idx )),
-                print(&quot;%s %s&quot; % ( e[ 'mnemonic' ], ' '.join( e[ 'operands'] )))
-            else:
-                print(&quot;%s   |-&lt;%s&gt; %s&quot; % ( pfxs, idx, e['type'] ))
-                self.print_table( e, pfxs + '   |' )
</del><ins>+            # An avx only instruction is defined by the /vex= opcode
+            # extension. They do not include the c4 (long form) or
+            # c5 (short form) prefix. As part of opcode table generate,
+            # here we create the long form definition, and then patch
+            # the table for c5 in a later stage.
+            # Construct a long-form definition of the avx instruction
+            opcodes.insert(0, 'c4')
+        elif (opcodes[0] == '0f' and opcodes[1] != '0f' and
+            '/sse' not in opcexts):
+            # Make all 2-byte opcode form isntructions play nice with sse
+            # opcode maps.
+            opcexts['/sse'] = 'none'
</ins><span class="cx"> 
</span><del>-    def print_tree( self ): 
-        self.print_table( self.OpcodeTable0, '' )
</del><ins>+        # legacy sse defs that get promoted to avx
+        fn = self.addInsn
+        if 'avx' in insnDef['cpuid'] and '/sse' in opcexts:
+            fn = self.addSSE2AVXInsn
+
+        fn(mnemonic = insnDef['mnemonic'],
+           prefixes = insnDef['prefixes'],
+           opcodes  = opcodes,
+           opcexts  = opcexts,
+           operands = insnDef['operands'],
+           cpuid    = insnDef['cpuid'])
+
+
+    def addSSE2AVXInsn(self, **insnDef):
+        &quot;&quot;&quot;Add an instruction definition containing an avx cpuid bit, but
+           declared in its legacy SSE form. The function splits the
+           definition to create two new definitions, one for SSE and one
+           promoted to an AVX form.
+        &quot;&quot;&quot;
+
+        # SSE
+        ssemnemonic = insnDef['mnemonic']
+        sseopcodes  = insnDef['opcodes']
+        # remove vex opcode extensions
+        sseopcexts  = dict([(e, v) for e, v in itemslist(insnDef['opcexts'])
+                                  if not e.startswith('/vex')])
+        # strip out avx operands, preserving relative ordering
+        # of remaining operands
+        sseoperands = [opr for opr in insnDef['operands']
+                        if opr not in ('H', 'L')]
+        # strip out avx prefixes
+        sseprefixes = [pfx for pfx in insnDef['prefixes']
+                        if not pfx.startswith('vex')]
+        # strip out avx bits from cpuid
+        ssecpuid    = [flag for flag in insnDef['cpuid']
+                        if not flag.startswith('avx')]
+
+        self.addInsn(mnemonic = ssemnemonic,
+                     prefixes = sseprefixes,
+                     opcodes  = sseopcodes,
+                     opcexts  = sseopcexts,
+                     operands = sseoperands,
+                     cpuid    = ssecpuid)
+
+        # AVX
+        vexmnemonic = 'v' + insnDef['mnemonic']
+        vexprefixes = insnDef['prefixes']
+        vexopcodes  = ['c4']
+        vexopcexts  = dict([(e, insnDef['opcexts'][e])
+                              for e in insnDef['opcexts'] if e != '/sse'])
+        vexopcexts['/vex'] = insnDef['opcexts']['/sse'] + '_' + '0f'
+        if insnDef['opcodes'][1] == '38' or insnDef['opcodes'][1] == '3a':
+            vexopcexts['/vex'] += insnDef['opcodes'][1]
+            vexopcodes.extend(insnDef['opcodes'][2:])
+        else:
+            vexopcodes.extend(insnDef['opcodes'][1:])
+        vexoperands = []
+        for o in insnDef['operands']:
+            # make the operand size explicit: x
+            if o in ('V', 'W', 'H', 'U'):
+                o = o + 'x'
+            vexoperands.append(o)
+        vexcpuid    = [flag for flag in insnDef['cpuid']
+                        if not flag.startswith('sse')]
+
+        self.addInsn(mnemonic = vexmnemonic,
+                     prefixes = vexprefixes,
+                     opcodes  = vexopcodes,
+                     opcexts  = vexopcexts,
+                     operands = vexoperands,
+                     cpuid    = vexcpuid)
+
+    def getInsnList(self):
+        &quot;&quot;&quot;Returns a list of all instructions in the collection&quot;&quot;&quot;
+        return self._insns
+
+
+    def getTableList(self):
+        &quot;&quot;&quot;Returns a list of all tables in the collection&quot;&quot;&quot;
+        return self._tables
+
+    def getMnemonicsList(self):
+        &quot;&quot;&quot;Returns a sorted list of mnemonics&quot;&quot;&quot;
+        return sorted(self._mnemonics.keys())
+
+
+    def pprint(self):
+        def printWalk(tbl, indent=&quot;&quot;):
+            entries = tbl.entries()
+            for k, e in entries:
+                if isinstance(e, UdOpcodeTable):
+                    self.log(&quot;%s    |-&lt;%02x&gt; %s&quot; % (indent, k, e))
+                    printWalk(e, indent + &quot;    |&quot;)
+                elif isinstance(e, UdInsnDef):
+                    self.log(&quot;%s    |-&lt;%02x&gt; %s&quot; % (indent, k, e))
+        printWalk(self.root)
+
+
+    def printStats(self):
+        tables = self.getTableList()
+        self.log(&quot;stats: &quot;)
+        self.log(&quot;  Num tables    = %d&quot; % len(tables))
+        self.log(&quot;  Num insnDefs  = %d&quot; % len(self.getInsnList()))
+        self.log(&quot;  Num insns     = %d&quot; % len(self.getMnemonicsList()))
+
+        totalSize = 0
+        totalEntries = 0
+        for table in tables:
+            totalSize += table.size()
+            totalEntries += table.numEntries()
+        self.log(&quot;  Packing Ratio = %d%%&quot; % ((totalEntries * 100) / totalSize))
+        self.log(&quot;--------------------&quot;)
+
+        self.pprint()
+
+
+    @staticmethod
+    def parseOptableXML(xml):
+        &quot;&quot;&quot;Parse udis86 optable.xml file and return list of
+           instruction definitions.
+        &quot;&quot;&quot;
+        from xml.dom import minidom
+
+        xmlDoc = minidom.parse(xml)
+        tlNode = xmlDoc.firstChild
+        insns  = []
+
+        while tlNode and tlNode.localName != &quot;x86optable&quot;: 
+            tlNode = tlNode.nextSibling
+
+        for insnNode in tlNode.childNodes:
+            if not insnNode.localName:
+                continue
+            if insnNode.localName != &quot;instruction&quot;:
+                raise Exception(&quot;warning: invalid insn node - %s&quot; % insnNode.localName)
+            mnemonic = insnNode.getElementsByTagName('mnemonic')[0].firstChild.data
+            vendor, cpuid = '', []
+
+            for node in insnNode.childNodes:
+                if node.localName == 'vendor':
+                    vendor = node.firstChild.data.split()
+                elif node.localName == 'cpuid':
+                    cpuid = node.firstChild.data.split()
+
+            for node in insnNode.childNodes:
+                if node.localName == 'def':
+                    insnDef = { 'pfx' : [] }
+                    for node in node.childNodes:
+                        if not node.localName:
+                            continue
+                        if node.localName in ('pfx', 'opc', 'opr', 'vendor', 'cpuid'):
+                            insnDef[node.localName] = node.firstChild.data.split()
+                        elif node.localName == 'mode':
+                            insnDef['pfx'].extend(node.firstChild.data.split())
+                    insns.append({'prefixes' : insnDef.get('pfx', []),
+                                  'mnemonic' : mnemonic,
+                                  'opcodes'  : insnDef.get('opc', []),
+                                  'operands' : insnDef.get('opr', []),
+                                  'vendor'   : insnDef.get('vendor', vendor),
+                                  'cpuid'    : insnDef.get('cpuid', cpuid)})
+        return insns
</ins></span></pre></div>
<a id="trunkSourceJavaScriptCoredisassemblerudis86ud_optablepy"></a>
<div class="delfile"><h4>Deleted: trunk/Source/JavaScriptCore/disassembler/udis86/ud_optable.py (198831 => 198832)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/disassembler/udis86/ud_optable.py        2016-03-30 07:14:10 UTC (rev 198831)
+++ trunk/Source/JavaScriptCore/disassembler/udis86/ud_optable.py        2016-03-30 07:17:14 UTC (rev 198832)
</span><span class="lines">@@ -1,103 +0,0 @@
</span><del>-# udis86 - scripts/ud_optable.py (optable.xml parser)
-# 
-# Copyright (c) 2009 Vivek Thampi
-# All rights reserved.
-# 
-# Redistribution and use in source and binary forms, with or without modification, 
-# are permitted provided that the following conditions are met:
-# 
-#     * Redistributions of source code must retain the above copyright notice, 
-#       this list of conditions and the following disclaimer.
-#     * Redistributions in binary form must reproduce the above copyright notice, 
-#       this list of conditions and the following disclaimer in the documentation 
-#       and/or other materials provided with the distribution.
-# 
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS &quot;AS IS&quot; AND 
-# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
-# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 
-# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR 
-# ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
-# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 
-# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON 
-# ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 
-# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-import os
-import sys
-from xml.dom import minidom
-
-class UdOptableXmlParser:
-
-    def parseDef( self, node ):
-        ven = '' 
-        pfx = [] 
-        opc = [] 
-        opr = []
-        for def_node in node.childNodes:
-            if not def_node.localName:
-                continue
-            if def_node.localName == 'pfx':
-                pfx = def_node.firstChild.data.split();
-            elif def_node.localName == 'opc':
-                opc = def_node.firstChild.data.split();
-            elif def_node.localName == 'opr':
-                opr = def_node.firstChild.data.split();
-            elif def_node.localName == 'mode':
-                pfx.extend( def_node.firstChild.data.split() );
-            elif def_node.localName == 'syn':
-                pfx.extend( def_node.firstChild.data.split() );
-            elif def_node.localName == 'vendor':
-                ven = ( def_node.firstChild.data );
-            else:
-                print(&quot;warning: invalid node - %s&quot; % def_node.localName)
-                continue
-        return ( pfx, opc, opr, ven )
-
-    def parse( self, xml, fn ):
-        xmlDoc = minidom.parse( xml )
-        self.TlNode = xmlDoc.firstChild
-
-        while self.TlNode and self.TlNode.localName != &quot;x86optable&quot;: 
-            self.TlNode = self.TlNode.nextSibling
-
-        for insnNode in self.TlNode.childNodes:
-            if not insnNode.localName:
-                continue
-            if insnNode.localName != &quot;instruction&quot;:
-                print(&quot;warning: invalid insn node - %s&quot; % insnNode.localName)
-                continue
-
-            mnemonic = insnNode.getElementsByTagName( 'mnemonic' )[ 0 ].firstChild.data
-            vendor   = ''
-
-            for node in insnNode.childNodes:
-                if node.localName == 'vendor':
-                    vendor = node.firstChild.data
-                elif node.localName == 'def':
-                    ( prefixes, opcodes, operands, local_vendor ) = \
-                        self.parseDef( node )
-                    if ( len( local_vendor ) ):
-                        vendor = local_vendor
-                    # callback
-                    fn( prefixes, mnemonic, opcodes, operands, vendor )
-
-
-def printFn( pfx, mnm, opc, opr, ven ):
-    print('def: '),
-    if len( pfx ):
-        print(' '.join( pfx )),
-    print(&quot;%s %s %s %s&quot; % \
-            ( mnm, ' '.join( opc ), ' '.join( opr ), ven ))
-
-
-def parse( xml, callback ):
-    parser = UdOptableXmlParser()  
-    parser.parse( xml, callback )
-
-def main():
-    parser = UdOptableXmlParser()  
-    parser.parse( sys.argv[ 1 ], printFn )
-
-if __name__ == &quot;__main__&quot;:
-    main() 
</del></span></pre></div>
<a id="trunkSourceJavaScriptCoredisassemblerudis86udis86c"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/disassembler/udis86/udis86.c (198831 => 198832)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/disassembler/udis86/udis86.c        2016-03-30 07:14:10 UTC (rev 198831)
+++ trunk/Source/JavaScriptCore/disassembler/udis86/udis86.c        2016-03-30 07:17:14 UTC (rev 198832)
</span><span class="lines">@@ -1,6 +1,6 @@
</span><span class="cx"> /* udis86 - libudis86/udis86.c
</span><span class="cx">  *
</span><del>- * Copyright (c) 2002-2009 Vivek Thampi
</del><ins>+ * Copyright (c) 2002-2013 Vivek Thampi
</ins><span class="cx">  * All rights reserved.
</span><span class="cx">  * 
</span><span class="cx">  * Redistribution and use in source and binary forms, with or without modification, 
</span><span class="lines">@@ -28,16 +28,19 @@
</span><span class="cx"> 
</span><span class="cx"> #if USE(UDIS86)
</span><span class="cx"> 
</span><del>-#include &quot;udis86_input.h&quot;
</del><ins>+#include &quot;udis86_udint.h&quot;
</ins><span class="cx"> #include &quot;udis86_extern.h&quot;
</span><ins>+#include &quot;udis86_decode.h&quot;
</ins><span class="cx"> 
</span><del>-#ifndef __UD_STANDALONE__
-# include &lt;stdlib.h&gt;
-# include &lt;string.h&gt;
-#endif /* __UD_STANDALONE__ */
</del><ins>+#if !defined(__UD_STANDALONE__)
+#include &lt;string.h&gt;
+#endif /* !__UD_STANDALONE__ */
</ins><span class="cx"> 
</span><ins>+static void ud_inp_init(struct ud *u);
+
</ins><span class="cx"> /* =============================================================================
</span><del>- * ud_init() - Initializes ud_t object.
</del><ins>+ * ud_init
+ *    Initializes ud_t object.
</ins><span class="cx">  * =============================================================================
</span><span class="cx">  */
</span><span class="cx"> extern void 
</span><span class="lines">@@ -50,30 +53,34 @@
</span><span class="cx"> #ifndef __UD_STANDALONE__
</span><span class="cx">   ud_set_input_file(u, stdin);
</span><span class="cx"> #endif /* __UD_STANDALONE__ */
</span><ins>+
+  ud_set_asm_buffer(u, u-&gt;asm_buf_int, sizeof(u-&gt;asm_buf_int));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><ins>+
</ins><span class="cx"> /* =============================================================================
</span><del>- * ud_disassemble() - disassembles one instruction and returns the number of 
- * bytes disassembled. A zero means end of disassembly.
</del><ins>+ * ud_disassemble
+ *    Disassembles one instruction and returns the number of 
+ *    bytes disassembled. A zero means end of disassembly.
</ins><span class="cx">  * =============================================================================
</span><span class="cx">  */
</span><span class="cx"> extern unsigned int
</span><span class="cx"> ud_disassemble(struct ud* u)
</span><span class="cx"> {
</span><del>-  if (ud_input_end(u))
-        return 0;
</del><ins>+  int len;
+  if (u-&gt;inp_end) {
+    return 0;
+  }
+  if ((len = ud_decode(u)) &gt; 0) {
+    if (u-&gt;translator != NULL) {
+      u-&gt;asm_buf[0] = '\0';
+      u-&gt;translator(u);
+    }
+  }
+  return len;
+}
</ins><span class="cx"> 
</span><del>- 
-  u-&gt;insn_buffer[0] = u-&gt;insn_hexcode[0] = 0;
</del><span class="cx"> 
</span><del>- 
-  if (ud_decode(u) == 0)
-        return 0;
-  if (u-&gt;translator)
-        u-&gt;translator(u);
-  return ud_insn_len(u);
-}
-
</del><span class="cx"> /* =============================================================================
</span><span class="cx">  * ud_set_mode() - Set Disassemly Mode.
</span><span class="cx">  * =============================================================================
</span><span class="lines">@@ -82,10 +89,10 @@
</span><span class="cx"> ud_set_mode(struct ud* u, uint8_t m)
</span><span class="cx"> {
</span><span class="cx">   switch(m) {
</span><del>-        case 16:
-        case 32:
-        case 64: u-&gt;dis_mode = m ; return;
-        default: u-&gt;dis_mode = 16; return;
</del><ins>+  case 16:
+  case 32:
+  case 64: u-&gt;dis_mode = m ; return;
+  default: u-&gt;dis_mode = 16; return;
</ins><span class="cx">   }
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -97,14 +104,14 @@
</span><span class="cx"> ud_set_vendor(struct ud* u, unsigned v)
</span><span class="cx"> {
</span><span class="cx">   switch(v) {
</span><del>-        case UD_VENDOR_INTEL:
-                u-&gt;vendor = v;
-                break;
-        case UD_VENDOR_ANY:
-                u-&gt;vendor = v;
-                break;
-        default:
-                u-&gt;vendor = UD_VENDOR_AMD;
</del><ins>+  case UD_VENDOR_INTEL:
+    u-&gt;vendor = v;
+    break;
+  case UD_VENDOR_ANY:
+    u-&gt;vendor = v;
+    break;
+  default:
+    u-&gt;vendor = UD_VENDOR_AMD;
</ins><span class="cx">   }
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -132,18 +139,18 @@
</span><span class="cx">  * ud_insn() - returns the disassembled instruction
</span><span class="cx">  * =============================================================================
</span><span class="cx">  */
</span><del>-extern char* 
-ud_insn_asm(struct ud* u) 
</del><ins>+const char* 
+ud_insn_asm(const struct ud* u) 
</ins><span class="cx"> {
</span><del>-  return u-&gt;insn_buffer;
</del><ins>+  return u-&gt;asm_buf;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> /* =============================================================================
</span><span class="cx">  * ud_insn_offset() - Returns the offset.
</span><span class="cx">  * =============================================================================
</span><span class="cx">  */
</span><del>-extern uint64_t
-ud_insn_off(struct ud* u) 
</del><ins>+uint64_t
+ud_insn_off(const struct ud* u) 
</ins><span class="cx"> {
</span><span class="cx">   return u-&gt;insn_offset;
</span><span class="cx"> }
</span><span class="lines">@@ -153,30 +160,303 @@
</span><span class="cx">  * ud_insn_hex() - Returns hex form of disassembled instruction.
</span><span class="cx">  * =============================================================================
</span><span class="cx">  */
</span><del>-extern char* 
</del><ins>+const char* 
</ins><span class="cx"> ud_insn_hex(struct ud* u) 
</span><span class="cx"> {
</span><ins>+  u-&gt;insn_hexcode[0] = 0;
+  if (!u-&gt;error) {
+    unsigned int i;
+    const unsigned char *src_ptr = ud_insn_ptr(u);
+    char* src_hex;
+    src_hex = (char*) u-&gt;insn_hexcode;
+    /* for each byte used to decode instruction */
+    for (i = 0; i &lt; ud_insn_len(u) &amp;&amp; i &lt; sizeof(u-&gt;insn_hexcode) / 2;
+         ++i, ++src_ptr) {
+      sprintf(src_hex, &quot;%02x&quot;, *src_ptr &amp; 0xFF);
+      src_hex += 2;
+    }
+  }
</ins><span class="cx">   return u-&gt;insn_hexcode;
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+
</ins><span class="cx"> /* =============================================================================
</span><del>- * ud_insn_ptr() - Returns code disassembled.
</del><ins>+ * ud_insn_ptr
+ *    Returns a pointer to buffer containing the bytes that were
+ *    disassembled.
</ins><span class="cx">  * =============================================================================
</span><span class="cx">  */
</span><del>-extern uint8_t* 
-ud_insn_ptr(struct ud* u) 
</del><ins>+extern const uint8_t* 
+ud_insn_ptr(const struct ud* u) 
</ins><span class="cx"> {
</span><del>-  return u-&gt;inp_sess;
</del><ins>+  return (u-&gt;inp_buf == NULL) ? 
+            u-&gt;inp_sess : u-&gt;inp_buf + (u-&gt;inp_buf_index - u-&gt;inp_ctr);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><ins>+
</ins><span class="cx"> /* =============================================================================
</span><del>- * ud_insn_len() - Returns the count of bytes disassembled.
</del><ins>+ * ud_insn_len
+ *    Returns the count of bytes disassembled.
</ins><span class="cx">  * =============================================================================
</span><span class="cx">  */
</span><span class="cx"> extern unsigned int 
</span><del>-ud_insn_len(struct ud* u) 
</del><ins>+ud_insn_len(const struct ud* u) 
</ins><span class="cx"> {
</span><span class="cx">   return u-&gt;inp_ctr;
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+
+/* =============================================================================
+ * ud_insn_get_opr
+ *    Return the operand struct representing the nth operand of
+ *    the currently disassembled instruction. Returns NULL if
+ *    there's no such operand.
+ * =============================================================================
+ */
+const struct ud_operand*
+ud_insn_opr(const struct ud *u, unsigned int n)
+{
+  if (n &gt; 3 || u-&gt;operand[n].type == UD_NONE) {
+    return NULL; 
+  } else {
+    return &amp;u-&gt;operand[n];
+  }
+}
+
+
+/* =============================================================================
+ * ud_opr_is_sreg
+ *    Returns non-zero if the given operand is of a segment register type.
+ * =============================================================================
+ */
+int
+ud_opr_is_sreg(const struct ud_operand *opr)
+{
+  return opr-&gt;type == UD_OP_REG &amp;&amp; 
+         opr-&gt;base &gt;= UD_R_ES   &amp;&amp;
+         opr-&gt;base &lt;= UD_R_GS;
+}
+
+
+/* =============================================================================
+ * ud_opr_is_sreg
+ *    Returns non-zero if the given operand is of a general purpose
+ *    register type.
+ * =============================================================================
+ */
+int
+ud_opr_is_gpr(const struct ud_operand *opr)
+{
+  return opr-&gt;type == UD_OP_REG &amp;&amp; 
+         opr-&gt;base &gt;= UD_R_AL   &amp;&amp;
+         opr-&gt;base &lt;= UD_R_R15;
+}
+
+
+/* =============================================================================
+ * ud_set_user_opaque_data
+ * ud_get_user_opaque_data
+ *    Get/set user opaqute data pointer
+ * =============================================================================
+ */
+void
+ud_set_user_opaque_data(struct ud * u, void* opaque)
+{
+  u-&gt;user_opaque_data = opaque;
+}
+
+void*
+ud_get_user_opaque_data(const struct ud *u)
+{
+  return u-&gt;user_opaque_data;
+}
+
+
+/* =============================================================================
+ * ud_set_asm_buffer
+ *    Allow the user to set an assembler output buffer. If `buf` is NULL,
+ *    we switch back to the internal buffer.
+ * =============================================================================
+ */
+void
+ud_set_asm_buffer(struct ud *u, char *buf, size_t size)
+{
+  if (buf == NULL) {
+    ud_set_asm_buffer(u, u-&gt;asm_buf_int, sizeof(u-&gt;asm_buf_int));
+  } else {
+    u-&gt;asm_buf = buf;
+    u-&gt;asm_buf_size = size;
+  }
+}
+
+
+/* =============================================================================
+ * ud_set_sym_resolver
+ *    Set symbol resolver for relative targets used in the translation
+ *    phase.
+ *
+ *    The resolver is a function that takes a uint64_t address and returns a
+ *    symbolic name for the that address. The function also takes a second
+ *    argument pointing to an integer that the client can optionally set to a
+ *    non-zero value for offsetted targets. (symbol+offset) The function may
+ *    also return NULL, in which case the translator only prints the target
+ *    address.
+ *
+ *    The function pointer maybe NULL which resets symbol resolution.
+ * =============================================================================
+ */
+void
+ud_set_sym_resolver(struct ud *u, const char* (*resolver)(struct ud*, 
+                                                          uint64_t addr,
+                                                          int64_t *offset))
+{
+  u-&gt;sym_resolver = resolver;
+}
+
+
+/* =============================================================================
+ * ud_insn_mnemonic
+ *    Return the current instruction mnemonic.
+ * =============================================================================
+ */
+enum ud_mnemonic_code
+ud_insn_mnemonic(const struct ud *u)
+{
+  return u-&gt;mnemonic;
+}
+
+
+/* =============================================================================
+ * ud_lookup_mnemonic
+ *    Looks up mnemonic code in the mnemonic string table.
+ *    Returns NULL if the mnemonic code is invalid.
+ * =============================================================================
+ */
+const char*
+ud_lookup_mnemonic(enum ud_mnemonic_code c)
+{
+  if (c &lt; UD_MAX_MNEMONIC_CODE) {
+    return ud_mnemonics_str[c];
+  } else {
+    return NULL;
+  }
+}
+
+
+/* 
+ * ud_inp_init
+ *    Initializes the input system.
+ */
+static void
+ud_inp_init(struct ud *u)
+{
+  u-&gt;inp_hook      = NULL;
+  u-&gt;inp_buf       = NULL;
+  u-&gt;inp_buf_size  = 0;
+  u-&gt;inp_buf_index = 0;
+  u-&gt;inp_curr      = 0;
+  u-&gt;inp_ctr       = 0;
+  u-&gt;inp_end       = 0;
+  u-&gt;inp_peek      = UD_EOI;
+  UD_NON_STANDALONE(u-&gt;inp_file = NULL);
+}
+
+
+/* =============================================================================
+ * ud_inp_set_hook
+ *    Sets input hook.
+ * =============================================================================
+ */
+void 
+ud_set_input_hook(register struct ud* u, int (*hook)(struct ud*))
+{
+  ud_inp_init(u);
+  u-&gt;inp_hook = hook;
+}
+
+/* =============================================================================
+ * ud_inp_set_buffer
+ *    Set buffer as input.
+ * =============================================================================
+ */
+void 
+ud_set_input_buffer(register struct ud* u, const uint8_t* buf, size_t len)
+{
+  ud_inp_init(u);
+  u-&gt;inp_buf = buf;
+  u-&gt;inp_buf_size = len;
+  u-&gt;inp_buf_index = 0;
+}
+
+
+#ifndef __UD_STANDALONE__
+/* =============================================================================
+ * ud_input_set_file
+ *    Set FILE as input.
+ * =============================================================================
+ */
+static int 
+inp_file_hook(struct ud* u)
+{
+  return fgetc(u-&gt;inp_file);
+}
+
+void 
+ud_set_input_file(register struct ud* u, FILE* f)
+{
+  ud_inp_init(u);
+  u-&gt;inp_hook = inp_file_hook;
+  u-&gt;inp_file = f;
+}
+#endif /* __UD_STANDALONE__ */
+
+
+/* =============================================================================
+ * ud_input_skip
+ *    Skip n input bytes.
+ * ============================================================================
+ */
+void 
+ud_input_skip(struct ud* u, size_t n)
+{
+  if (u-&gt;inp_end) {
+    return;
+  }
+  if (u-&gt;inp_buf == NULL) {
+    while (n--) {
+      int c = u-&gt;inp_hook(u);
+      if (c == UD_EOI) {
+        goto eoi;
+      }
+    }
+    return;
+  } else {
+    if (n &gt; u-&gt;inp_buf_size ||
+        u-&gt;inp_buf_index &gt; u-&gt;inp_buf_size - n) {
+      u-&gt;inp_buf_index = u-&gt;inp_buf_size; 
+      goto eoi;
+    }
+    u-&gt;inp_buf_index += n; 
+    return;
+  }
+eoi:
+  u-&gt;inp_end = 1;
+  UDERR(u, &quot;cannot skip, eoi received\b&quot;);
+  return;
+}
+
+
+/* =============================================================================
+ * ud_input_end
+ *    Returns non-zero on end-of-input.
+ * =============================================================================
+ */
+int
+ud_input_end(const struct ud *u)
+{
+  return u-&gt;inp_end;
+}
+
</ins><span class="cx"> #endif // USE(UDIS86)
</span><ins>+
+/* vim:set ts=2 sw=2 expandtab */
</ins></span></pre></div>
<a id="trunkSourceJavaScriptCoredisassemblerudis86udis86_decodec"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/disassembler/udis86/udis86_decode.c (198831 => 198832)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/disassembler/udis86/udis86_decode.c        2016-03-30 07:14:10 UTC (rev 198831)
+++ trunk/Source/JavaScriptCore/disassembler/udis86/udis86_decode.c        2016-03-30 07:17:14 UTC (rev 198832)
</span><span class="lines">@@ -28,15 +28,11 @@
</span><span class="cx"> 
</span><span class="cx"> #if USE(UDIS86)
</span><span class="cx"> 
</span><ins>+#include &quot;udis86_udint.h&quot;
+#include &quot;udis86_types.h&quot;
</ins><span class="cx"> #include &quot;udis86_extern.h&quot;
</span><del>-#include &quot;udis86_types.h&quot;
-#include &quot;udis86_input.h&quot;
</del><span class="cx"> #include &quot;udis86_decode.h&quot;
</span><del>-#include &lt;wtf/Assertions.h&gt;
</del><span class="cx"> 
</span><del>-#define dbg(x, n...)
-/* #define dbg printf */
-
</del><span class="cx"> #ifndef __UD_STANDALONE__
</span><span class="cx"> # include &lt;string.h&gt;
</span><span class="cx"> #endif /* __UD_STANDALONE__ */
</span><span class="lines">@@ -44,15 +40,164 @@
</span><span class="cx"> /* The max number of prefixes to an instruction */
</span><span class="cx"> #define MAX_PREFIXES    15
</span><span class="cx"> 
</span><del>-/* instruction aliases and special cases */
-static struct ud_itab_entry s_ie__invalid = 
-    { UD_Iinvalid, O_NONE, O_NONE, O_NONE, P_none };
</del><ins>+/* rex prefix bits */
+#define REX_W(r)        ( ( 0xF &amp; ( r ) )  &gt;&gt; 3 )
+#define REX_R(r)        ( ( 0x7 &amp; ( r ) )  &gt;&gt; 2 )
+#define REX_X(r)        ( ( 0x3 &amp; ( r ) )  &gt;&gt; 1 )
+#define REX_B(r)        ( ( 0x1 &amp; ( r ) )  &gt;&gt; 0 )
+#define REX_PFX_MASK(n) ( ( P_REXW(n) &lt;&lt; 3 ) | \
+                          ( P_REXR(n) &lt;&lt; 2 ) | \
+                          ( P_REXX(n) &lt;&lt; 1 ) | \
+                          ( P_REXB(n) &lt;&lt; 0 ) )
</ins><span class="cx"> 
</span><del>-static int
-decode_ext(struct ud *u, uint16_t ptr);
</del><ins>+/* scable-index-base bits */
+#define SIB_S(b)        ( ( b ) &gt;&gt; 6 )
+#define SIB_I(b)        ( ( ( b ) &gt;&gt; 3 ) &amp; 7 )
+#define SIB_B(b)        ( ( b ) &amp; 7 )
</ins><span class="cx"> 
</span><ins>+/* modrm bits */
+#define MODRM_REG(b)    ( ( ( b ) &gt;&gt; 3 ) &amp; 7 )
+#define MODRM_NNN(b)    ( ( ( b ) &gt;&gt; 3 ) &amp; 7 )
+#define MODRM_MOD(b)    ( ( ( b ) &gt;&gt; 6 ) &amp; 3 )
+#define MODRM_RM(b)     ( ( b ) &amp; 7 )
</ins><span class="cx"> 
</span><del>-static inline int
</del><ins>+static int decode_ext(struct ud *u, uint16_t ptr);
+static int decode_opcode(struct ud *u);
+
+enum reg_class { /* register classes */
+  REGCLASS_GPR,
+  REGCLASS_MMX,
+  REGCLASS_CR,
+  REGCLASS_DB,
+  REGCLASS_SEG,
+  REGCLASS_XMM
+};
+
+ /* 
+ * inp_start
+ *    Should be called before each de-code operation.
+ */
+static void
+inp_start(struct ud *u)
+{
+  u-&gt;inp_ctr = 0;
+}
+
+static uint8_t
+inp_peek(struct ud *u)
+{
+  if (u-&gt;inp_end == 0) {
+    if (u-&gt;inp_buf != NULL) {
+      if (u-&gt;inp_buf_index &lt; u-&gt;inp_buf_size) {
+        return u-&gt;inp_buf[u-&gt;inp_buf_index];
+      }
+    } else if (u-&gt;inp_peek != UD_EOI) {
+      return u-&gt;inp_peek;
+    } else {
+      int c;
+      if ((c = u-&gt;inp_hook(u)) != UD_EOI) {
+        u-&gt;inp_peek = c;
+        return u-&gt;inp_peek;
+      }
+    }
+  }
+  u-&gt;inp_end = 1;
+  UDERR(u, &quot;byte expected, eoi received\n&quot;);
+  return 0;
+}
+   
+static uint8_t
+inp_next(struct ud *u)
+{
+  if (u-&gt;inp_end == 0) {
+    if (u-&gt;inp_buf != NULL) {
+      if (u-&gt;inp_buf_index &lt; u-&gt;inp_buf_size) {
+        u-&gt;inp_ctr++;
+        return (u-&gt;inp_curr = u-&gt;inp_buf[u-&gt;inp_buf_index++]);
+      }
+    } else {
+      int c = u-&gt;inp_peek;
+      if (c != UD_EOI || (c = u-&gt;inp_hook(u)) != UD_EOI) {
+        u-&gt;inp_peek = UD_EOI;
+        u-&gt;inp_curr = c;
+        u-&gt;inp_sess[u-&gt;inp_ctr++] = u-&gt;inp_curr;
+        return u-&gt;inp_curr;
+      }
+    }
+  }
+  u-&gt;inp_end = 1;
+  UDERR(u, &quot;byte expected, eoi received\n&quot;);
+  return 0;
+}
+
+static uint8_t
+inp_curr(struct ud *u)
+{
+  return u-&gt;inp_curr;
+}
+
+
+/*
+ * inp_uint8
+ * int_uint16
+ * int_uint32
+ * int_uint64
+ *    Load little-endian values from input
+ */
+static uint8_t 
+inp_uint8(struct ud* u)
+{
+  return inp_next(u);
+}
+
+static uint16_t 
+inp_uint16(struct ud* u)
+{
+  uint16_t r, ret;
+
+  ret = inp_next(u);
+  r = inp_next(u);
+  return ret | (r &lt;&lt; 8);
+}
+
+static uint32_t 
+inp_uint32(struct ud* u)
+{
+  uint32_t r, ret;
+
+  ret = inp_next(u);
+  r = inp_next(u);
+  ret = ret | (r &lt;&lt; 8);
+  r = inp_next(u);
+  ret = ret | (r &lt;&lt; 16);
+  r = inp_next(u);
+  return ret | (r &lt;&lt; 24);
+}
+
+static uint64_t 
+inp_uint64(struct ud* u)
+{
+  uint64_t r, ret;
+
+  ret = inp_next(u);
+  r = inp_next(u);
+  ret = ret | (r &lt;&lt; 8);
+  r = inp_next(u);
+  ret = ret | (r &lt;&lt; 16);
+  r = inp_next(u);
+  ret = ret | (r &lt;&lt; 24);
+  r = inp_next(u);
+  ret = ret | (r &lt;&lt; 32);
+  r = inp_next(u);
+  ret = ret | (r &lt;&lt; 40);
+  r = inp_next(u);
+  ret = ret | (r &lt;&lt; 48);
+  r = inp_next(u);
+  return ret | (r &lt;&lt; 56);
+}
+
+
+static UD_INLINE int
</ins><span class="cx"> eff_opr_mode(int dis_mode, int rex_w, int pfx_opr)
</span><span class="cx"> {
</span><span class="cx">   if (dis_mode == 64) {
</span><span class="lines">@@ -60,13 +205,13 @@
</span><span class="cx">   } else if (dis_mode == 32) {
</span><span class="cx">     return pfx_opr ? 16 : 32;
</span><span class="cx">   } else {
</span><del>-    ASSERT(dis_mode == 16);
</del><ins>+    UD_ASSERT(dis_mode == 16);
</ins><span class="cx">     return pfx_opr ? 32 : 16;
</span><span class="cx">   }
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-static inline int
</del><ins>+static UD_INLINE int
</ins><span class="cx"> eff_adr_mode(int dis_mode, int pfx_adr)
</span><span class="cx"> {
</span><span class="cx">   if (dis_mode == 64) {
</span><span class="lines">@@ -74,21 +219,12 @@
</span><span class="cx">   } else if (dis_mode == 32) {
</span><span class="cx">     return pfx_adr ? 16 : 32;
</span><span class="cx">   } else {
</span><del>-    ASSERT(dis_mode == 16);
</del><ins>+    UD_ASSERT(dis_mode == 16);
</ins><span class="cx">     return pfx_adr ? 32 : 16;
</span><span class="cx">   }
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-/* Looks up mnemonic code in the mnemonic string table
- * Returns NULL if the mnemonic code is invalid
- */
-const char * ud_lookup_mnemonic( enum ud_mnemonic_code c )
-{
-    return ud_mnemonics_str[ c ];
-}
-
-
</del><span class="cx"> /* 
</span><span class="cx">  * decode_prefixes
</span><span class="cx">  *
</span><span class="lines">@@ -97,164 +233,128 @@
</span><span class="cx"> static int 
</span><span class="cx"> decode_prefixes(struct ud *u)
</span><span class="cx"> {
</span><del>-    unsigned int have_pfx = 1;
-    unsigned int i;
-    uint8_t curr;
</del><ins>+  int done = 0;
+  uint8_t curr = 0, last = 0;
+  UD_RETURN_ON_ERROR(u);
</ins><span class="cx"> 
</span><del>-    /* if in error state, bail out */
-    if ( u-&gt;error ) 
-        return -1; 
-
-    /* keep going as long as there are prefixes available */
-    for ( i = 0; have_pfx ; ++i ) {
-
-        /* Get next byte. */
-        ud_inp_next(u); 
-        if ( u-&gt;error ) 
-            return -1;
-        curr = ud_inp_curr( u );
-
-        /* rex prefixes in 64bit mode */
-        if ( u-&gt;dis_mode == 64 &amp;&amp; ( curr &amp; 0xF0 ) == 0x40 ) {
-            u-&gt;pfx_rex = curr;  
-        } else {
-            switch ( curr )  
-            {
-            case 0x2E : 
-                u-&gt;pfx_seg = UD_R_CS; 
-                u-&gt;pfx_rex = 0;
-                break;
-            case 0x36 :     
-                u-&gt;pfx_seg = UD_R_SS; 
-                u-&gt;pfx_rex = 0;
-                break;
-            case 0x3E : 
-                u-&gt;pfx_seg = UD_R_DS; 
-                u-&gt;pfx_rex = 0;
-                break;
-            case 0x26 : 
-                u-&gt;pfx_seg = UD_R_ES; 
-                u-&gt;pfx_rex = 0;
-                break;
-            case 0x64 : 
-                u-&gt;pfx_seg = UD_R_FS; 
-                u-&gt;pfx_rex = 0;
-                break;
-            case 0x65 : 
-                u-&gt;pfx_seg = UD_R_GS; 
-                u-&gt;pfx_rex = 0;
-                break;
-            case 0x67 : /* adress-size override prefix */ 
-                u-&gt;pfx_adr = 0x67;
-                u-&gt;pfx_rex = 0;
-                break;
-            case 0xF0 : 
-                u-&gt;pfx_lock = 0xF0;
-                u-&gt;pfx_rex  = 0;
-                break;
-            case 0x66: 
-                /* the 0x66 sse prefix is only effective if no other sse prefix
-                 * has already been specified.
-                 */
-                if ( !u-&gt;pfx_insn ) u-&gt;pfx_insn = 0x66;
-                u-&gt;pfx_opr = 0x66;           
-                u-&gt;pfx_rex = 0;
-                break;
-            case 0xF2:
-                u-&gt;pfx_insn  = 0xF2;
-                u-&gt;pfx_repne = 0xF2; 
-                u-&gt;pfx_rex   = 0;
-                break;
-            case 0xF3:
-                u-&gt;pfx_insn = 0xF3;
-                u-&gt;pfx_rep  = 0xF3; 
-                u-&gt;pfx_repe = 0xF3; 
-                u-&gt;pfx_rex  = 0;
-                break;
-            default : 
-                /* No more prefixes */
-                have_pfx = 0;
-                break;
-            }
-        }
-
-        /* check if we reached max instruction length */
-        if ( i + 1 == MAX_INSN_LENGTH ) {
-            u-&gt;error = 1;
-            break;
-        }
</del><ins>+  do {
+    last = curr;
+    curr = inp_next(u); 
+    UD_RETURN_ON_ERROR(u);
+    if (u-&gt;inp_ctr == MAX_INSN_LENGTH) {
+      UD_RETURN_WITH_ERROR(u, &quot;max instruction length&quot;);
</ins><span class="cx">     }
</span><ins>+   
+    switch (curr)  
+    {
+    case 0x2E: 
+      u-&gt;pfx_seg = UD_R_CS; 
+      break;
+    case 0x36:     
+      u-&gt;pfx_seg = UD_R_SS; 
+      break;
+    case 0x3E: 
+      u-&gt;pfx_seg = UD_R_DS; 
+      break;
+    case 0x26: 
+      u-&gt;pfx_seg = UD_R_ES; 
+      break;
+    case 0x64: 
+      u-&gt;pfx_seg = UD_R_FS; 
+      break;
+    case 0x65: 
+      u-&gt;pfx_seg = UD_R_GS; 
+      break;
+    case 0x67: /* adress-size override prefix */ 
+      u-&gt;pfx_adr = 0x67;
+      break;
+    case 0xF0: 
+      u-&gt;pfx_lock = 0xF0;
+      break;
+    case 0x66: 
+      u-&gt;pfx_opr = 0x66;
+      break;
+    case 0xF2:
+      u-&gt;pfx_str = 0xf2;
+      break;
+    case 0xF3:
+      u-&gt;pfx_str = 0xf3;
+      break;
+    default:
+      /* consume if rex */
+      done = (u-&gt;dis_mode == 64 &amp;&amp; (curr &amp; 0xF0) == 0x40) ? 0 : 1;
+      break;
+    }
+  } while (!done);
+  /* rex prefixes in 64bit mode, must be the last prefix */
+  if (u-&gt;dis_mode == 64 &amp;&amp; (last &amp; 0xF0) == 0x40) {
+    u-&gt;pfx_rex = last;  
+  }
+  return 0;
+}
</ins><span class="cx"> 
</span><del>-    /* return status */
-    if ( u-&gt;error ) 
-        return -1; 
</del><span class="cx"> 
</span><del>-    /* rewind back one byte in stream, since the above loop 
-     * stops with a non-prefix byte. 
-     */
-    ud_inp_back(u);
-    return 0;
</del><ins>+/*
+ * vex_l, vex_w
+ *  Return the vex.L and vex.W bits
+ */
+static UD_INLINE uint8_t
+vex_l(const struct ud *u)
+{
+  UD_ASSERT(u-&gt;vex_op != 0);
+  return ((u-&gt;vex_op == 0xc4 ? u-&gt;vex_b2 : u-&gt;vex_b1) &gt;&gt; 2) &amp; 1;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><ins>+static UD_INLINE uint8_t
+vex_w(const struct ud *u)
+{
+  UD_ASSERT(u-&gt;vex_op != 0);
+  return u-&gt;vex_op == 0xc4 ? ((u-&gt;vex_b2 &gt;&gt; 7) &amp; 1) : 0;
+}
</ins><span class="cx"> 
</span><del>-static inline unsigned int modrm( struct ud * u )
</del><ins>+
+static UD_INLINE uint8_t
+modrm(struct ud * u)
</ins><span class="cx"> {
</span><span class="cx">     if ( !u-&gt;have_modrm ) {
</span><del>-        u-&gt;modrm = ud_inp_next( u );
</del><ins>+        u-&gt;modrm = inp_next( u );
+        u-&gt;modrm_offset = (uint8_t) (u-&gt;inp_ctr - 1);
</ins><span class="cx">         u-&gt;have_modrm = 1;
</span><span class="cx">     }
</span><span class="cx">     return u-&gt;modrm;
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-static unsigned int resolve_operand_size( const struct ud * u, unsigned int s )
</del><ins>+static unsigned int
+resolve_operand_size(const struct ud* u, ud_operand_size_t osize)
</ins><span class="cx"> {
</span><del>-    switch ( s ) 
-    {
-    case SZ_V:
-        return ( u-&gt;opr_mode );
-    case SZ_Z:  
-        return ( u-&gt;opr_mode == 16 ) ? 16 : 32;
-    case SZ_P:  
-        return ( u-&gt;opr_mode == 16 ) ? SZ_WP : SZ_DP;
-    case SZ_MDQ:
-        return ( u-&gt;opr_mode == 16 ) ? 32 : u-&gt;opr_mode;
-    case SZ_RDQ:
-        return ( u-&gt;dis_mode == 64 ) ? 64 : 32;
-    default:
-        return s;
-    }
</del><ins>+  switch (osize) {
+  case SZ_V:
+    return u-&gt;opr_mode;
+  case SZ_Z:  
+    return u-&gt;opr_mode == 16 ? 16 : 32;
+  case SZ_Y:
+    return u-&gt;opr_mode == 16 ? 32 : u-&gt;opr_mode;
+  case SZ_RDQ:
+    return u-&gt;dis_mode == 64 ? 64 : 32;
+  case SZ_X:
+    UD_ASSERT(u-&gt;vex_op != 0);
+    return (P_VEXL(u-&gt;itab_entry-&gt;prefix) &amp;&amp; vex_l(u)) ?  SZ_QQ : SZ_DQ;
+  default:
+    return osize;
+  }
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><span class="cx"> static int resolve_mnemonic( struct ud* u )
</span><span class="cx"> {
</span><del>-  /* far/near flags */
-  u-&gt;br_far = 0;
-  u-&gt;br_near = 0;
-  /* readjust operand sizes for call/jmp instrcutions */
-  if ( u-&gt;mnemonic == UD_Icall || u-&gt;mnemonic == UD_Ijmp ) {
-    /* WP: 16:16 pointer */
-    if ( u-&gt;operand[ 0 ].size == SZ_WP ) {
-        u-&gt;operand[ 0 ].size = 16;
-        u-&gt;br_far = 1;
-        u-&gt;br_near= 0;
-    /* DP: 32:32 pointer */
-    } else if ( u-&gt;operand[ 0 ].size == SZ_DP ) {
-        u-&gt;operand[ 0 ].size = 32;
-        u-&gt;br_far = 1;
-        u-&gt;br_near= 0;
-    } else {
-        u-&gt;br_far = 0;
-        u-&gt;br_near= 1;
-    }
</del><span class="cx">   /* resolve 3dnow weirdness. */
</span><del>-  } else if ( u-&gt;mnemonic == UD_I3dnow ) {
-    u-&gt;mnemonic = ud_itab[ u-&gt;le-&gt;table[ ud_inp_curr( u )  ] ].mnemonic;
</del><ins>+  if ( u-&gt;mnemonic == UD_I3dnow ) {
+    u-&gt;mnemonic = ud_itab[ u-&gt;le-&gt;table[ inp_curr( u )  ] ].mnemonic;
</ins><span class="cx">   }
</span><span class="cx">   /* SWAPGS is only valid in 64bits mode */
</span><span class="cx">   if ( u-&gt;mnemonic == UD_Iswapgs &amp;&amp; u-&gt;dis_mode != 64 ) {
</span><del>-    u-&gt;error = 1;
</del><ins>+    UDERR(u, &quot;swapgs invalid in 64bits mode\n&quot;);
</ins><span class="cx">     return -1;
</span><span class="cx">   }
</span><span class="cx"> 
</span><span class="lines">@@ -269,8 +369,8 @@
</span><span class="cx">     }
</span><span class="cx">   }
</span><span class="cx"> 
</span><del>-  if (u-&gt;mnemonic == UD_Inop &amp;&amp; u-&gt;pfx_rep) {
-    u-&gt;pfx_rep = 0;
</del><ins>+  if (u-&gt;mnemonic == UD_Inop &amp;&amp; u-&gt;pfx_repe) {
+    u-&gt;pfx_repe = 0;
</ins><span class="cx">     u-&gt;mnemonic = UD_Ipause;
</span><span class="cx">   }
</span><span class="cx">   return 0;
</span><span class="lines">@@ -288,14 +388,14 @@
</span><span class="cx">     /* seg16:off16 */
</span><span class="cx">     op-&gt;type = UD_OP_PTR;
</span><span class="cx">     op-&gt;size = 32;
</span><del>-    op-&gt;lval.ptr.off = ud_inp_uint16(u);
-    op-&gt;lval.ptr.seg = ud_inp_uint16(u);
</del><ins>+    op-&gt;lval.ptr.off = inp_uint16(u);
+    op-&gt;lval.ptr.seg = inp_uint16(u);
</ins><span class="cx">   } else {
</span><span class="cx">     /* seg16:off32 */
</span><span class="cx">     op-&gt;type = UD_OP_PTR;
</span><span class="cx">     op-&gt;size = 48;
</span><del>-    op-&gt;lval.ptr.off = ud_inp_uint32(u);
-    op-&gt;lval.ptr.seg = ud_inp_uint16(u);
</del><ins>+    op-&gt;lval.ptr.off = inp_uint32(u);
+    op-&gt;lval.ptr.seg = inp_uint16(u);
</ins><span class="cx">   }
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -306,15 +406,11 @@
</span><span class="cx"> static enum ud_type 
</span><span class="cx"> decode_gpr(register struct ud* u, unsigned int s, unsigned char rm)
</span><span class="cx"> {
</span><del>-  s = resolve_operand_size(u, s);
-        
</del><span class="cx">   switch (s) {
</span><span class="cx">     case 64:
</span><span class="cx">         return UD_R_RAX + rm;
</span><del>-    case SZ_DP:
</del><span class="cx">     case 32:
</span><span class="cx">         return UD_R_EAX + rm;
</span><del>-    case SZ_WP:
</del><span class="cx">     case 16:
</span><span class="cx">         return UD_R_AX  + rm;
</span><span class="cx">     case  8:
</span><span class="lines">@@ -323,119 +419,121 @@
</span><span class="cx">                 return UD_R_SPL + (rm-4);
</span><span class="cx">             return UD_R_AL + rm;
</span><span class="cx">         } else return UD_R_AL + rm;
</span><ins>+    case 0:
+        /* invalid size in case of a decode error */
+        UD_ASSERT(u-&gt;error);
+        return UD_NONE;
</ins><span class="cx">     default:
</span><del>-        return 0;
</del><ins>+        UD_ASSERT(!&quot;invalid operand size&quot;);
+        return UD_NONE;
</ins><span class="cx">   }
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-/* -----------------------------------------------------------------------------
- * resolve_gpr64() - 64bit General Purpose Register-Selection. 
- * -----------------------------------------------------------------------------
- */
-static enum ud_type 
-resolve_gpr64(struct ud* u, enum ud_operand_code gpr_op, enum ud_operand_size * size)
</del><ins>+static void
+decode_reg(struct ud *u, 
+           struct ud_operand *opr,
+           int type,
+           int num,
+           int size)
</ins><span class="cx"> {
</span><del>-  if (gpr_op &gt;= OP_rAXr8 &amp;&amp; gpr_op &lt;= OP_rDIr15)
-    gpr_op = (gpr_op - OP_rAXr8) | (REX_B(u-&gt;pfx_rex) &lt;&lt; 3);          
-  else  gpr_op = (gpr_op - OP_rAX);
-
-  if (u-&gt;opr_mode == 16) {
-    *size = 16;
-    return gpr_op + UD_R_AX;
-  }
-  if (u-&gt;dis_mode == 32 || 
-    (u-&gt;opr_mode == 32 &amp;&amp; ! (REX_W(u-&gt;pfx_rex) || u-&gt;default64))) {
-    *size = 32;
-    return gpr_op + UD_R_EAX;
-  }
-
-  *size = 64;
-  return gpr_op + UD_R_RAX;
-}
-
-/* -----------------------------------------------------------------------------
- * resolve_gpr32 () - 32bit General Purpose Register-Selection. 
- * -----------------------------------------------------------------------------
- */
-static enum ud_type 
-resolve_gpr32(struct ud* u, enum ud_operand_code gpr_op)
-{
-  gpr_op = gpr_op - OP_eAX;
-
-  if (u-&gt;opr_mode == 16) 
-    return gpr_op + UD_R_AX;
-
-  return gpr_op +  UD_R_EAX;
-}
-
-/* -----------------------------------------------------------------------------
- * resolve_reg() - Resolves the register type 
- * -----------------------------------------------------------------------------
- */
-static enum ud_type 
-resolve_reg(struct ud* u, unsigned int type, unsigned char i)
-{
</del><ins>+  int reg;
+  size = resolve_operand_size(u, size);
</ins><span class="cx">   switch (type) {
</span><del>-    case T_MMX :    return UD_R_MM0  + (i &amp; 7);
-    case T_XMM :    return UD_R_XMM0 + i;
-    case T_CRG :    return UD_R_CR0  + i;
-    case T_DBG :    return UD_R_DR0  + i;
-    case T_SEG : {
</del><ins>+    case REGCLASS_GPR : reg = decode_gpr(u, size, num); break;
+    case REGCLASS_MMX : reg = UD_R_MM0  + (num &amp; 7); break;
+    case REGCLASS_XMM :
+      reg = num + (size == SZ_QQ ? UD_R_YMM0 : UD_R_XMM0);
+      break;
+    case REGCLASS_CR : reg = UD_R_CR0  + num; break;
+    case REGCLASS_DB : reg = UD_R_DR0  + num; break;
+    case REGCLASS_SEG : {
</ins><span class="cx">       /*
</span><span class="cx">        * Only 6 segment registers, anything else is an error.
</span><span class="cx">        */
</span><del>-      if ((i &amp; 7) &gt; 5) {
-        u-&gt;error = 1;
</del><ins>+      if ((num &amp; 7) &gt; 5) {
+        UDERR(u, &quot;invalid segment register value\n&quot;);
+        return;
</ins><span class="cx">       } else {
</span><del>-        return UD_R_ES + (i &amp; 7);
</del><ins>+        reg = UD_R_ES + (num &amp; 7);
</ins><span class="cx">       }
</span><ins>+      break;
</ins><span class="cx">     }
</span><del>-    case T_NONE:
-    default:    return UD_NONE;
</del><ins>+    default:
+      UD_ASSERT(!&quot;invalid register type&quot;);
+      return;
</ins><span class="cx">   }
</span><ins>+  opr-&gt;type = UD_OP_REG;
+  opr-&gt;base = reg;
+  opr-&gt;size = size;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-/* -----------------------------------------------------------------------------
- * decode_imm() - Decodes Immediate values.
- * -----------------------------------------------------------------------------
</del><ins>+
+/*
+ * decode_imm 
+ *
+ *    Decode Immediate values.
</ins><span class="cx">  */
</span><span class="cx"> static void 
</span><del>-decode_imm(struct ud* u, unsigned int s, struct ud_operand *op)
</del><ins>+decode_imm(struct ud* u, unsigned int size, struct ud_operand *op)
</ins><span class="cx"> {
</span><del>-  op-&gt;size = resolve_operand_size(u, s);
</del><ins>+  op-&gt;size = resolve_operand_size(u, size);
</ins><span class="cx">   op-&gt;type = UD_OP_IMM;
</span><span class="cx"> 
</span><span class="cx">   switch (op-&gt;size) {
</span><del>-    case  8: op-&gt;lval.sbyte = ud_inp_uint8(u);   break;
-    case 16: op-&gt;lval.uword = ud_inp_uint16(u);  break;
-    case 32: op-&gt;lval.udword = ud_inp_uint32(u); break;
-    case 64: op-&gt;lval.uqword = ud_inp_uint64(u); break;
-    default: return;
</del><ins>+  case  8: op-&gt;lval.sbyte = inp_uint8(u);   break;
+  case 16: op-&gt;lval.uword = inp_uint16(u);  break;
+  case 32: op-&gt;lval.udword = inp_uint32(u); break;
+  case 64: op-&gt;lval.uqword = inp_uint64(u); break;
+  default: return;
</ins><span class="cx">   }
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><ins>+/* 
+ * decode_mem_disp
+ *
+ *    Decode mem address displacement.
+ */
+static void 
+decode_mem_disp(struct ud* u, unsigned int size, struct ud_operand *op)
+{
+  switch (size) {
+  case 8:
+    op-&gt;offset = 8; 
+    op-&gt;lval.ubyte  = inp_uint8(u);
+    break;
+  case 16:
+    op-&gt;offset = 16; 
+    op-&gt;lval.uword  = inp_uint16(u); 
+    break;
+  case 32:
+    op-&gt;offset = 32; 
+    op-&gt;lval.udword = inp_uint32(u); 
+    break;
+  case 64:
+    op-&gt;offset = 64; 
+    op-&gt;lval.uqword = inp_uint64(u); 
+    break;
+  default:
+      return;
+  }
+}
+
+
</ins><span class="cx"> /*
</span><span class="cx">  * decode_modrm_reg
</span><span class="cx">  *
</span><span class="cx">  *    Decodes reg field of mod/rm byte
</span><span class="cx">  * 
</span><span class="cx">  */
</span><del>-static void
</del><ins>+static UD_INLINE void
</ins><span class="cx"> decode_modrm_reg(struct ud         *u, 
</span><span class="cx">                  struct ud_operand *operand,
</span><span class="cx">                  unsigned int       type,
</span><span class="cx">                  unsigned int       size)
</span><span class="cx"> {
</span><del>-  uint8_t reg = (REX_R(u-&gt;pfx_rex) &lt;&lt; 3) | MODRM_REG(modrm(u));
-  operand-&gt;type = UD_OP_REG;
-  operand-&gt;size = resolve_operand_size(u, size);
-
-  if (type == T_GPR) {
-    operand-&gt;base = decode_gpr(u, operand-&gt;size, reg);
-  } else {
-    operand-&gt;base = resolve_reg(u, type, reg);
-  }
</del><ins>+  uint8_t reg = (REX_R(u-&gt;_rex) &lt;&lt; 3) | MODRM_REG(modrm(u));
+  decode_reg(u, operand, type, reg, size);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><span class="lines">@@ -448,67 +546,58 @@
</span><span class="cx"> static void 
</span><span class="cx"> decode_modrm_rm(struct ud         *u, 
</span><span class="cx">                 struct ud_operand *op,
</span><del>-                unsigned char      type,
-                unsigned int       size)
</del><ins>+                unsigned char      type,    /* register type */
+                unsigned int       size)    /* operand size */
</ins><span class="cx"> 
</span><span class="cx"> {
</span><del>-  unsigned char mod, rm, reg;
</del><ins>+  size_t offset = 0;
+  unsigned char mod, rm;
</ins><span class="cx"> 
</span><span class="cx">   /* get mod, r/m and reg fields */
</span><span class="cx">   mod = MODRM_MOD(modrm(u));
</span><del>-  rm  = (REX_B(u-&gt;pfx_rex) &lt;&lt; 3) | MODRM_RM(modrm(u));
-  reg = (REX_R(u-&gt;pfx_rex) &lt;&lt; 3) | MODRM_REG(modrm(u));
</del><ins>+  rm  = (REX_B(u-&gt;_rex) &lt;&lt; 3) | MODRM_RM(modrm(u));
</ins><span class="cx"> 
</span><del>-  UNUSED_PARAM(reg);
-  
-  op-&gt;size = resolve_operand_size(u, size);
-
</del><span class="cx">   /* 
</span><span class="cx">    * If mod is 11b, then the modrm.rm specifies a register.
</span><span class="cx">    *
</span><span class="cx">    */
</span><span class="cx">   if (mod == 3) {
</span><del>-    op-&gt;type = UD_OP_REG;
-    if (type ==  T_GPR) {
-      op-&gt;base = decode_gpr(u, op-&gt;size, rm);
-    } else {
-      op-&gt;base = resolve_reg(u, type, (REX_B(u-&gt;pfx_rex) &lt;&lt; 3) | (rm &amp; 7));
-    }
</del><ins>+    decode_reg(u, op, type, rm, size);
</ins><span class="cx">     return;
</span><del>-  } 
</del><ins>+  }
</ins><span class="cx"> 
</span><del>-
</del><span class="cx">   /* 
</span><del>-   * !11 =&gt; Memory Address
</del><ins>+   * !11b =&gt; Memory Address
</ins><span class="cx">    */  
</span><span class="cx">   op-&gt;type = UD_OP_MEM;
</span><ins>+  op-&gt;size = resolve_operand_size(u, size);
</ins><span class="cx"> 
</span><span class="cx">   if (u-&gt;adr_mode == 64) {
</span><span class="cx">     op-&gt;base = UD_R_RAX + rm;
</span><span class="cx">     if (mod == 1) {
</span><del>-      op-&gt;offset = 8;
</del><ins>+      offset = 8;
</ins><span class="cx">     } else if (mod == 2) {
</span><del>-      op-&gt;offset = 32;
</del><ins>+      offset = 32;
</ins><span class="cx">     } else if (mod == 0 &amp;&amp; (rm &amp; 7) == 5) {           
</span><span class="cx">       op-&gt;base = UD_R_RIP;
</span><del>-      op-&gt;offset = 32;
</del><ins>+      offset = 32;
</ins><span class="cx">     } else {
</span><del>-      op-&gt;offset = 0;
</del><ins>+      offset = 0;
</ins><span class="cx">     }
</span><span class="cx">     /* 
</span><span class="cx">      * Scale-Index-Base (SIB) 
</span><span class="cx">      */
</span><span class="cx">     if ((rm &amp; 7) == 4) {
</span><del>-      ud_inp_next(u);
</del><ins>+      inp_next(u);
</ins><span class="cx">       
</span><del>-      op-&gt;scale = (1 &lt;&lt; SIB_S(ud_inp_curr(u))) &amp; ~1;
-      op-&gt;index = UD_R_RAX + (SIB_I(ud_inp_curr(u)) | (REX_X(u-&gt;pfx_rex) &lt;&lt; 3));
-      op-&gt;base  = UD_R_RAX + (SIB_B(ud_inp_curr(u)) | (REX_B(u-&gt;pfx_rex) &lt;&lt; 3));
-
</del><ins>+      op-&gt;base  = UD_R_RAX + (SIB_B(inp_curr(u)) | (REX_B(u-&gt;_rex) &lt;&lt; 3));
+      op-&gt;index = UD_R_RAX + (SIB_I(inp_curr(u)) | (REX_X(u-&gt;_rex) &lt;&lt; 3));
</ins><span class="cx">       /* special conditions for base reference */
</span><span class="cx">       if (op-&gt;index == UD_R_RSP) {
</span><span class="cx">         op-&gt;index = UD_NONE;
</span><span class="cx">         op-&gt;scale = UD_NONE;
</span><ins>+      } else {
+        op-&gt;scale = (1 &lt;&lt; SIB_S(inp_curr(u))) &amp; ~1;
</ins><span class="cx">       }
</span><span class="cx"> 
</span><span class="cx">       if (op-&gt;base == UD_R_RBP || op-&gt;base == UD_R_R13) {
</span><span class="lines">@@ -516,32 +605,35 @@
</span><span class="cx">           op-&gt;base = UD_NONE;
</span><span class="cx">         } 
</span><span class="cx">         if (mod == 1) {
</span><del>-          op-&gt;offset = 8;
</del><ins>+          offset = 8;
</ins><span class="cx">         } else {
</span><del>-          op-&gt;offset = 32;
</del><ins>+          offset = 32;
</ins><span class="cx">         }
</span><span class="cx">       }
</span><ins>+    } else {
+        op-&gt;scale = UD_NONE;
+        op-&gt;index = UD_NONE;
</ins><span class="cx">     }
</span><span class="cx">   } else if (u-&gt;adr_mode == 32) {
</span><span class="cx">     op-&gt;base = UD_R_EAX + rm;
</span><span class="cx">     if (mod == 1) {
</span><del>-      op-&gt;offset = 8;
</del><ins>+      offset = 8;
</ins><span class="cx">     } else if (mod == 2) {
</span><del>-      op-&gt;offset = 32;
</del><ins>+      offset = 32;
</ins><span class="cx">     } else if (mod == 0 &amp;&amp; rm == 5) {
</span><span class="cx">       op-&gt;base = UD_NONE;
</span><del>-      op-&gt;offset = 32;
</del><ins>+      offset = 32;
</ins><span class="cx">     } else {
</span><del>-      op-&gt;offset = 0;
</del><ins>+      offset = 0;
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     /* Scale-Index-Base (SIB) */
</span><span class="cx">     if ((rm &amp; 7) == 4) {
</span><del>-      ud_inp_next(u);
</del><ins>+      inp_next(u);
</ins><span class="cx"> 
</span><del>-      op-&gt;scale = (1 &lt;&lt; SIB_S(ud_inp_curr(u))) &amp; ~1;
-      op-&gt;index = UD_R_EAX + (SIB_I(ud_inp_curr(u)) | (REX_X(u-&gt;pfx_rex) &lt;&lt; 3));
-      op-&gt;base  = UD_R_EAX + (SIB_B(ud_inp_curr(u)) | (REX_B(u-&gt;pfx_rex) &lt;&lt; 3));
</del><ins>+      op-&gt;scale = (1 &lt;&lt; SIB_S(inp_curr(u))) &amp; ~1;
+      op-&gt;index = UD_R_EAX + (SIB_I(inp_curr(u)) | (REX_X(u-&gt;pfx_rex) &lt;&lt; 3));
+      op-&gt;base  = UD_R_EAX + (SIB_B(inp_curr(u)) | (REX_B(u-&gt;pfx_rex) &lt;&lt; 3));
</ins><span class="cx"> 
</span><span class="cx">       if (op-&gt;index == UD_R_ESP) {
</span><span class="cx">         op-&gt;index = UD_NONE;
</span><span class="lines">@@ -554,11 +646,14 @@
</span><span class="cx">           op-&gt;base = UD_NONE;
</span><span class="cx">         } 
</span><span class="cx">         if (mod == 1) {
</span><del>-          op-&gt;offset = 8;
</del><ins>+          offset = 8;
</ins><span class="cx">         } else {
</span><del>-          op-&gt;offset = 32;
</del><ins>+          offset = 32;
</ins><span class="cx">         }
</span><span class="cx">       }
</span><ins>+    } else {
+      op-&gt;scale = UD_NONE;
+      op-&gt;index = UD_NONE;
</ins><span class="cx">     }
</span><span class="cx">   } else {
</span><span class="cx">     const unsigned int bases[]   = { UD_R_BX, UD_R_BX, UD_R_BP, UD_R_BP,
</span><span class="lines">@@ -567,94 +662,106 @@
</span><span class="cx">                                      UD_NONE, UD_NONE, UD_NONE, UD_NONE };
</span><span class="cx">     op-&gt;base  = bases[rm &amp; 7];
</span><span class="cx">     op-&gt;index = indices[rm &amp; 7];
</span><ins>+    op-&gt;scale = UD_NONE;
</ins><span class="cx">     if (mod == 0 &amp;&amp; rm == 6) {
</span><del>-      op-&gt;offset= 16;
</del><ins>+      offset = 16;
</ins><span class="cx">       op-&gt;base = UD_NONE;
</span><span class="cx">     } else if (mod == 1) {
</span><del>-      op-&gt;offset = 8;
</del><ins>+      offset = 8;
</ins><span class="cx">     } else if (mod == 2) { 
</span><del>-      op-&gt;offset = 16;
</del><ins>+      offset = 16;
</ins><span class="cx">     }
</span><span class="cx">   }
</span><span class="cx"> 
</span><del>-  /* 
-   * extract offset, if any 
-   */
-  switch (op-&gt;offset) {
-    case 8 : op-&gt;lval.ubyte  = ud_inp_uint8(u);  break;
-    case 16: op-&gt;lval.uword  = ud_inp_uint16(u); break;
-    case 32: op-&gt;lval.udword = ud_inp_uint32(u); break;
-    case 64: op-&gt;lval.uqword = ud_inp_uint64(u); break;
-    default: break;
</del><ins>+  if (offset) {
+    decode_mem_disp(u, offset, op);
+  } else {
+    op-&gt;offset = 0;
</ins><span class="cx">   }
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-/* -----------------------------------------------------------------------------
- * decode_o() - Decodes offset
- * -----------------------------------------------------------------------------
</del><ins>+
+/* 
+ * decode_moffset
+ *    Decode offset-only memory operand
</ins><span class="cx">  */
</span><del>-static void 
-decode_o(struct ud* u, unsigned int s, struct ud_operand *op)
</del><ins>+static void
+decode_moffset(struct ud *u, unsigned int size, struct ud_operand *opr)
</ins><span class="cx"> {
</span><del>-  switch (u-&gt;adr_mode) {
-    case 64:
-        op-&gt;offset = 64; 
-        op-&gt;lval.uqword = ud_inp_uint64(u); 
-        break;
-    case 32:
-        op-&gt;offset = 32; 
-        op-&gt;lval.udword = ud_inp_uint32(u); 
-        break;
-    case 16:
-        op-&gt;offset = 16; 
-        op-&gt;lval.uword  = ud_inp_uint16(u); 
-        break;
-    default:
-        return;
-  }
-  op-&gt;type = UD_OP_MEM;
-  op-&gt;size = resolve_operand_size(u, s);
</del><ins>+  opr-&gt;type  = UD_OP_MEM;
+  opr-&gt;base  = UD_NONE;
+  opr-&gt;index = UD_NONE;
+  opr-&gt;scale = UD_NONE;
+  opr-&gt;size  = resolve_operand_size(u, size);
+  decode_mem_disp(u, u-&gt;adr_mode, opr);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-/* -----------------------------------------------------------------------------
- * decode_operands() - Disassembles Operands.
- * -----------------------------------------------------------------------------
</del><ins>+
+static void
+decode_vex_vvvv(struct ud *u, struct ud_operand *opr, unsigned size)
+{
+  uint8_t vvvv;
+  UD_ASSERT(u-&gt;vex_op != 0);
+  vvvv = ((u-&gt;vex_op == 0xc4 ? u-&gt;vex_b2 : u-&gt;vex_b1) &gt;&gt; 3) &amp; 0xf;
+  decode_reg(u, opr, REGCLASS_XMM, (0xf &amp; ~vvvv), size);
+}
+
+
+/* 
+ * decode_vex_immreg
+ *    Decode source operand encoded in immediate byte [7:4]
</ins><span class="cx">  */
</span><span class="cx"> static int
</span><ins>+decode_vex_immreg(struct ud *u, struct ud_operand *opr, unsigned size)
+{
+  uint8_t imm  = inp_next(u);
+  uint8_t mask = u-&gt;dis_mode == 64 ? 0xf : 0x7;
+  UD_RETURN_ON_ERROR(u);
+  UD_ASSERT(u-&gt;vex_op != 0);
+  decode_reg(u, opr, REGCLASS_XMM, mask &amp; (imm &gt;&gt; 4), size);
+  return 0;
+}
+
+
+/* 
+ * decode_operand
+ *
+ *      Decodes a single operand.
+ *      Returns the type of the operand (UD_NONE if none)
+ */
+static int
</ins><span class="cx"> decode_operand(struct ud           *u, 
</span><span class="cx">                struct ud_operand   *operand,
</span><span class="cx">                enum ud_operand_code type,
</span><span class="cx">                unsigned int         size)
</span><span class="cx"> {
</span><ins>+  operand-&gt;type = UD_NONE;
+  operand-&gt;_oprcode = type;
+
</ins><span class="cx">   switch (type) {
</span><span class="cx">     case OP_A :
</span><span class="cx">       decode_a(u, operand);
</span><span class="cx">       break;
</span><span class="cx">     case OP_MR:
</span><del>-      if (MODRM_MOD(modrm(u)) == 3) {
-        decode_modrm_rm(u, operand, T_GPR, 
-                        size == SZ_DY ? SZ_MDQ : SZ_V);
-      } else if (size == SZ_WV) {
-        decode_modrm_rm( u, operand, T_GPR, SZ_W);
-      } else if (size == SZ_BV) {
-        decode_modrm_rm( u, operand, T_GPR, SZ_B);
-      } else if (size == SZ_DY) {
-        decode_modrm_rm( u, operand, T_GPR, SZ_D);
-      } else {
-        ASSERT(!&quot;unexpected size&quot;);
-      }
</del><ins>+      decode_modrm_rm(u, operand, REGCLASS_GPR, 
+                      MODRM_MOD(modrm(u)) == 3 ? 
+                        Mx_reg_size(size) : Mx_mem_size(size));
</ins><span class="cx">       break;
</span><ins>+    case OP_F:
+      u-&gt;br_far  = 1;
+      /* intended fall through */
</ins><span class="cx">     case OP_M:
</span><span class="cx">       if (MODRM_MOD(modrm(u)) == 3) {
</span><del>-          u-&gt;error = 1;
</del><ins>+        UDERR(u, &quot;expected modrm.mod != 3\n&quot;);
</ins><span class="cx">       }
</span><span class="cx">       /* intended fall through */
</span><span class="cx">     case OP_E:
</span><del>-      decode_modrm_rm(u, operand, T_GPR, size);
</del><ins>+      decode_modrm_rm(u, operand, REGCLASS_GPR, size);
</ins><span class="cx">       break;
</span><span class="cx">     case OP_G:
</span><del>-      decode_modrm_reg(u, operand, T_GPR, size);
</del><ins>+      decode_modrm_reg(u, operand, REGCLASS_GPR, size);
</ins><span class="cx">       break;
</span><ins>+    case OP_sI:
</ins><span class="cx">     case OP_I:
</span><span class="cx">       decode_imm(u, size, operand);
</span><span class="cx">       break;
</span><span class="lines">@@ -662,97 +769,69 @@
</span><span class="cx">       operand-&gt;type = UD_OP_CONST;
</span><span class="cx">       operand-&gt;lval.udword = 1;
</span><span class="cx">       break;
</span><del>-    case OP_PR:
</del><ins>+    case OP_N:
</ins><span class="cx">       if (MODRM_MOD(modrm(u)) != 3) {
</span><del>-          u-&gt;error = 1;
</del><ins>+        UDERR(u, &quot;expected modrm.mod == 3\n&quot;);
</ins><span class="cx">       }
</span><del>-      decode_modrm_rm(u, operand, T_MMX, size);
</del><ins>+      /* intended fall through */
+    case OP_Q:
+      decode_modrm_rm(u, operand, REGCLASS_MMX, size);
</ins><span class="cx">       break;
</span><span class="cx">     case OP_P:
</span><del>-      decode_modrm_reg(u, operand, T_MMX, size);
</del><ins>+      decode_modrm_reg(u, operand, REGCLASS_MMX, size);
</ins><span class="cx">       break;
</span><del>-    case OP_VR:
</del><ins>+    case OP_U:
</ins><span class="cx">       if (MODRM_MOD(modrm(u)) != 3) {
</span><del>-          u-&gt;error = 1;
</del><ins>+        UDERR(u, &quot;expected modrm.mod == 3\n&quot;);
</ins><span class="cx">       }
</span><span class="cx">       /* intended fall through */
</span><span class="cx">     case OP_W:
</span><del>-      decode_modrm_rm(u, operand, T_XMM, size);
</del><ins>+      decode_modrm_rm(u, operand, REGCLASS_XMM, size);
</ins><span class="cx">       break;
</span><span class="cx">     case OP_V:
</span><del>-      decode_modrm_reg(u, operand, T_XMM, size);
</del><ins>+      decode_modrm_reg(u, operand, REGCLASS_XMM, size);
</ins><span class="cx">       break;
</span><del>-    case OP_S:
-      decode_modrm_reg(u, operand, T_SEG, size);
</del><ins>+    case OP_H:
+      decode_vex_vvvv(u, operand, size);
</ins><span class="cx">       break;
</span><del>-    case OP_AL:
-    case OP_CL:
-    case OP_DL:
-    case OP_BL:
-    case OP_AH:
-    case OP_CH:
-    case OP_DH:
-    case OP_BH:
-      operand-&gt;type = UD_OP_REG;
-      operand-&gt;base = UD_R_AL + (type - OP_AL);
-      operand-&gt;size = 8;
</del><ins>+    case OP_MU:
+      decode_modrm_rm(u, operand, REGCLASS_XMM, 
+                      MODRM_MOD(modrm(u)) == 3 ? 
+                        Mx_reg_size(size) : Mx_mem_size(size));
</ins><span class="cx">       break;
</span><del>-    case OP_DX:
-      operand-&gt;type = UD_OP_REG;
-      operand-&gt;base = UD_R_DX;
-      operand-&gt;size = 16;
</del><ins>+    case OP_S:
+      decode_modrm_reg(u, operand, REGCLASS_SEG, size);
</ins><span class="cx">       break;
</span><span class="cx">     case OP_O:
</span><del>-      decode_o(u, size, operand);
</del><ins>+      decode_moffset(u, size, operand);
</ins><span class="cx">       break;
</span><del>-    case OP_rAXr8: 
-    case OP_rCXr9: 
-    case OP_rDXr10: 
-    case OP_rBXr11:
-    case OP_rSPr12: 
-    case OP_rBPr13: 
-    case OP_rSIr14: 
-    case OP_rDIr15:
-    case OP_rAX: 
-    case OP_rCX: 
-    case OP_rDX: 
-    case OP_rBX:
-    case OP_rSP: 
-    case OP_rBP: 
-    case OP_rSI: 
-    case OP_rDI:
-      operand-&gt;type = UD_OP_REG;
-      operand-&gt;base = resolve_gpr64(u, type, &amp;operand-&gt;size);
</del><ins>+    case OP_R0: 
+    case OP_R1: 
+    case OP_R2: 
+    case OP_R3: 
+    case OP_R4: 
+    case OP_R5: 
+    case OP_R6: 
+    case OP_R7:
+      decode_reg(u, operand, REGCLASS_GPR, 
+                 (REX_B(u-&gt;_rex) &lt;&lt; 3) | (type - OP_R0), size);
</ins><span class="cx">       break;
</span><del>-    case OP_ALr8b:
-    case OP_CLr9b: 
-    case OP_DLr10b: 
-    case OP_BLr11b:
-    case OP_AHr12b:
-    case OP_CHr13b:
-    case OP_DHr14b:
-    case OP_BHr15b: {
-      ud_type_t gpr = (type - OP_ALr8b) + UD_R_AL
-                        + (REX_B(u-&gt;pfx_rex) &lt;&lt; 3);
-      if (UD_R_AH &lt;= gpr &amp;&amp; u-&gt;pfx_rex) {
-        gpr = gpr + 4;
-      }
-      operand-&gt;type = UD_OP_REG;
-      operand-&gt;base = gpr;
</del><ins>+    case OP_AL:
+    case OP_AX:
+    case OP_eAX:
+    case OP_rAX:
+      decode_reg(u, operand, REGCLASS_GPR, 0, size);
</ins><span class="cx">       break;
</span><del>-    }
-    case OP_eAX: 
-    case OP_eCX: 
-    case OP_eDX: 
-    case OP_eBX:
-    case OP_eSP: 
-    case OP_eBP: 
-    case OP_eSI: 
-    case OP_eDI:
-      operand-&gt;type = UD_OP_REG;
-      operand-&gt;base = resolve_gpr32(u, type);
-      operand-&gt;size = u-&gt;opr_mode == 16 ? 16 : 32;
</del><ins>+    case OP_CL:
+    case OP_CX:
+    case OP_eCX:
+      decode_reg(u, operand, REGCLASS_GPR, 1, size);
</ins><span class="cx">       break;
</span><ins>+    case OP_DL:
+    case OP_DX:
+    case OP_eDX:
+      decode_reg(u, operand, REGCLASS_GPR, 2, size);
+      break;
</ins><span class="cx">     case OP_ES: 
</span><span class="cx">     case OP_CS: 
</span><span class="cx">     case OP_DS:
</span><span class="lines">@@ -762,7 +841,7 @@
</span><span class="cx">       /* in 64bits mode, only fs and gs are allowed */
</span><span class="cx">       if (u-&gt;dis_mode == 64) {
</span><span class="cx">         if (type != OP_FS &amp;&amp; type != OP_GS) {
</span><del>-          u-&gt;error= 1;
</del><ins>+          UDERR(u, &quot;invalid segment register in 64bits\n&quot;);
</ins><span class="cx">         }
</span><span class="cx">       }
</span><span class="cx">       operand-&gt;type = UD_OP_REG;
</span><span class="lines">@@ -773,17 +852,17 @@
</span><span class="cx">       decode_imm(u, size, operand);
</span><span class="cx">       operand-&gt;type = UD_OP_JIMM;
</span><span class="cx">       break ;
</span><del>-    case OP_Q:
-      decode_modrm_rm(u, operand, T_MMX, size);
-      break;
</del><span class="cx">     case OP_R :
</span><del>-      decode_modrm_rm(u, operand, T_GPR, size);
</del><ins>+      if (MODRM_MOD(modrm(u)) != 3) {
+        UDERR(u, &quot;expected modrm.mod == 3\n&quot;);
+      }
+      decode_modrm_rm(u, operand, REGCLASS_GPR, size);
</ins><span class="cx">       break;
</span><span class="cx">     case OP_C:
</span><del>-      decode_modrm_reg(u, operand, T_CRG, size);
</del><ins>+      decode_modrm_reg(u, operand, REGCLASS_CR, size);
</ins><span class="cx">       break;
</span><span class="cx">     case OP_D:
</span><del>-      decode_modrm_reg(u, operand, T_DBG, size);
</del><ins>+      decode_modrm_reg(u, operand, REGCLASS_DB, size);
</ins><span class="cx">       break;
</span><span class="cx">     case OP_I3 :
</span><span class="cx">       operand-&gt;type = UD_OP_CONST;
</span><span class="lines">@@ -799,18 +878,16 @@
</span><span class="cx">     case OP_ST7:
</span><span class="cx">       operand-&gt;type = UD_OP_REG;
</span><span class="cx">       operand-&gt;base = (type - OP_ST0) + UD_R_ST0;
</span><del>-      operand-&gt;size = 0;
</del><ins>+      operand-&gt;size = 80;
</ins><span class="cx">       break;
</span><del>-    case OP_AX:
-      operand-&gt;type = UD_OP_REG;
-      operand-&gt;base = UD_R_AX;
-      operand-&gt;size = 16;
</del><ins>+    case OP_L:
+      decode_vex_immreg(u, operand, size);
</ins><span class="cx">       break;
</span><span class="cx">     default :
</span><span class="cx">       operand-&gt;type = UD_NONE;
</span><span class="cx">       break;
</span><span class="cx">   }
</span><del>-  return 0;
</del><ins>+  return operand-&gt;type;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><span class="lines">@@ -827,12 +904,21 @@
</span><span class="cx">   decode_operand(u, &amp;u-&gt;operand[0],
</span><span class="cx">                     u-&gt;itab_entry-&gt;operand1.type,
</span><span class="cx">                     u-&gt;itab_entry-&gt;operand1.size);
</span><del>-  decode_operand(u, &amp;u-&gt;operand[1],
-                    u-&gt;itab_entry-&gt;operand2.type,
-                    u-&gt;itab_entry-&gt;operand2.size);
-  decode_operand(u, &amp;u-&gt;operand[2],
-                    u-&gt;itab_entry-&gt;operand3.type,
-                    u-&gt;itab_entry-&gt;operand3.size);
</del><ins>+  if (u-&gt;operand[0].type != UD_NONE) {
+      decode_operand(u, &amp;u-&gt;operand[1],
+                        u-&gt;itab_entry-&gt;operand2.type,
+                        u-&gt;itab_entry-&gt;operand2.size);
+  }
+  if (u-&gt;operand[1].type != UD_NONE) {
+      decode_operand(u, &amp;u-&gt;operand[2],
+                        u-&gt;itab_entry-&gt;operand3.type,
+                        u-&gt;itab_entry-&gt;operand3.size);
+  }
+  if (u-&gt;operand[2].type != UD_NONE) {
+      decode_operand(u, &amp;u-&gt;operand[3],
+                        u-&gt;itab_entry-&gt;operand4.type,
+                        u-&gt;itab_entry-&gt;operand4.size);
+  }
</ins><span class="cx">   return 0;
</span><span class="cx"> }
</span><span class="cx">     
</span><span class="lines">@@ -852,19 +938,40 @@
</span><span class="cx">   u-&gt;pfx_rep   = 0;
</span><span class="cx">   u-&gt;pfx_repe  = 0;
</span><span class="cx">   u-&gt;pfx_rex   = 0;
</span><del>-  u-&gt;pfx_insn  = 0;
</del><ins>+  u-&gt;pfx_str   = 0;
</ins><span class="cx">   u-&gt;mnemonic  = UD_Inone;
</span><span class="cx">   u-&gt;itab_entry = NULL;
</span><span class="cx">   u-&gt;have_modrm = 0;
</span><ins>+  u-&gt;br_far    = 0;
+  u-&gt;vex_op    = 0;
+  u-&gt;_rex      = 0;
+  u-&gt;operand[0].type = UD_NONE;
+  u-&gt;operand[1].type = UD_NONE;
+  u-&gt;operand[2].type = UD_NONE;
+  u-&gt;operand[3].type = UD_NONE;
+}
</ins><span class="cx"> 
</span><del>-  memset( &amp;u-&gt;operand[ 0 ], 0, sizeof( struct ud_operand ) );
-  memset( &amp;u-&gt;operand[ 1 ], 0, sizeof( struct ud_operand ) );
-  memset( &amp;u-&gt;operand[ 2 ], 0, sizeof( struct ud_operand ) );
</del><ins>+
+static UD_INLINE int
+resolve_pfx_str(struct ud* u)
+{
+  if (u-&gt;pfx_str == 0xf3) {
+    if (P_STR(u-&gt;itab_entry-&gt;prefix)) {
+        u-&gt;pfx_rep  = 0xf3;
+    } else {
+        u-&gt;pfx_repe = 0xf3;
+    }
+  } else if (u-&gt;pfx_str == 0xf2) {
+    u-&gt;pfx_repne = 0xf3;
+  }
+  return 0;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><ins>+
</ins><span class="cx"> static int
</span><span class="cx"> resolve_mode( struct ud* u )
</span><span class="cx"> {
</span><ins>+  int default64;
</ins><span class="cx">   /* if in error state, bail out */
</span><span class="cx">   if ( u-&gt;error ) return -1; 
</span><span class="cx"> 
</span><span class="lines">@@ -873,22 +980,34 @@
</span><span class="cx"> 
</span><span class="cx">     /* Check validity of  instruction m64 */
</span><span class="cx">     if ( P_INV64( u-&gt;itab_entry-&gt;prefix ) ) {
</span><del>-        u-&gt;error = 1;
-        return -1;
</del><ins>+      UDERR(u, &quot;instruction invalid in 64bits\n&quot;);
+      return -1;
</ins><span class="cx">     }
</span><span class="cx"> 
</span><del>-    /* effective rex prefix is the  effective mask for the 
-     * instruction hard-coded in the opcode map.
</del><ins>+    /* compute effective rex based on,
+     *  - vex prefix (if any)
+     *  - rex prefix (if any, and not vex)
+     *  - allowed prefixes specified by the opcode map
</ins><span class="cx">      */
</span><del>-    u-&gt;pfx_rex = ( u-&gt;pfx_rex &amp; 0x40 ) | 
-                 ( u-&gt;pfx_rex &amp; REX_PFX_MASK( u-&gt;itab_entry-&gt;prefix ) ); 
</del><ins>+    if (u-&gt;vex_op == 0xc4) {
+        /* vex has rex.rxb in 1's complement */
+        u-&gt;_rex = ((~(u-&gt;vex_b1 &gt;&gt; 5) &amp; 0x7) /* rex.0rxb */ | 
+                   ((u-&gt;vex_b2  &gt;&gt; 4) &amp; 0x8) /* rex.w000 */);
+    } else if (u-&gt;vex_op == 0xc5) {
+        /* vex has rex.r in 1's complement */
+        u-&gt;_rex = (~(u-&gt;vex_b1 &gt;&gt; 5)) &amp; 4;
+    } else {
+        UD_ASSERT(u-&gt;vex_op == 0);
+        u-&gt;_rex = u-&gt;pfx_rex;
+    }
+    u-&gt;_rex &amp;= REX_PFX_MASK(u-&gt;itab_entry-&gt;prefix);
</ins><span class="cx"> 
</span><span class="cx">     /* whether this instruction has a default operand size of 
</span><span class="cx">      * 64bit, also hardcoded into the opcode map.
</span><span class="cx">      */
</span><del>-    u-&gt;default64 = P_DEF64( u-&gt;itab_entry-&gt;prefix ); 
</del><ins>+    default64 = P_DEF64( u-&gt;itab_entry-&gt;prefix ); 
</ins><span class="cx">     /* calculate effective operand size */
</span><del>-    if ( REX_W( u-&gt;pfx_rex ) ) {
</del><ins>+    if (REX_W(u-&gt;_rex)) {
</ins><span class="cx">         u-&gt;opr_mode = 64;
</span><span class="cx">     } else if ( u-&gt;pfx_opr ) {
</span><span class="cx">         u-&gt;opr_mode = 16;
</span><span class="lines">@@ -897,7 +1016,7 @@
</span><span class="cx">          * the effective operand size in the absence of rex.w
</span><span class="cx">          * prefix is 32.
</span><span class="cx">          */
</span><del>-        u-&gt;opr_mode = ( u-&gt;default64 ) ? 64 : 32;
</del><ins>+        u-&gt;opr_mode = default64 ? 64 : 32;
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     /* calculate effective address size */
</span><span class="lines">@@ -910,45 +1029,18 @@
</span><span class="cx">     u-&gt;adr_mode = ( u-&gt;pfx_adr ) ? 32 : 16;
</span><span class="cx">   }
</span><span class="cx"> 
</span><del>-  /* These flags determine which operand to apply the operand size
-   * cast to.
-   */
-  u-&gt;c1 = ( P_C1( u-&gt;itab_entry-&gt;prefix ) ) ? 1 : 0;
-  u-&gt;c2 = ( P_C2( u-&gt;itab_entry-&gt;prefix ) ) ? 1 : 0;
-  u-&gt;c3 = ( P_C3( u-&gt;itab_entry-&gt;prefix ) ) ? 1 : 0;
-
-  /* set flags for implicit addressing */
-  u-&gt;implicit_addr = P_IMPADDR( u-&gt;itab_entry-&gt;prefix );
-
</del><span class="cx">   return 0;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-static int gen_hex( struct ud *u )
-{
-  unsigned int i;
-  unsigned char *src_ptr = ud_inp_sess( u );
-  char* src_hex;
</del><span class="cx"> 
</span><del>-  /* bail out if in error stat. */
-  if ( u-&gt;error ) return -1; 
-  /* output buffer pointe */
-  src_hex = ( char* ) u-&gt;insn_hexcode;
-  /* for each byte used to decode instruction */
-  for ( i = 0; i &lt; u-&gt;inp_ctr; ++i, ++src_ptr) {
-    sprintf( src_hex, &quot;%02x&quot;, *src_ptr &amp; 0xFF );
-    src_hex += 2;
-  }
-  return 0;
-}
-
-
-static inline int
</del><ins>+static UD_INLINE int
</ins><span class="cx"> decode_insn(struct ud *u, uint16_t ptr)
</span><span class="cx"> {
</span><del>-  ASSERT((ptr &amp; 0x8000) == 0);
</del><ins>+  UD_ASSERT((ptr &amp; 0x8000) == 0);
</ins><span class="cx">   u-&gt;itab_entry = &amp;ud_itab[ ptr ];
</span><span class="cx">   u-&gt;mnemonic = u-&gt;itab_entry-&gt;mnemonic;
</span><del>-  return (resolve_mode(u)     == 0 &amp;&amp;
</del><ins>+  return (resolve_pfx_str(u)  == 0 &amp;&amp;
+          resolve_mode(u)     == 0 &amp;&amp;
</ins><span class="cx">           decode_operands(u)  == 0 &amp;&amp;
</span><span class="cx">           resolve_mnemonic(u) == 0) ? 0 : -1;
</span><span class="cx"> }
</span><span class="lines">@@ -965,19 +1057,19 @@
</span><span class="cx">  *    valid entry in the table, decode the operands, and read the final
</span><span class="cx">  *    byte to resolve the menmonic.
</span><span class="cx">  */
</span><del>-static inline int
</del><ins>+static UD_INLINE int
</ins><span class="cx"> decode_3dnow(struct ud* u)
</span><span class="cx"> {
</span><span class="cx">   uint16_t ptr;
</span><del>-  ASSERT(u-&gt;le-&gt;type == UD_TAB__OPC_3DNOW);
-  ASSERT(u-&gt;le-&gt;table[0xc] != 0);
</del><ins>+  UD_ASSERT(u-&gt;le-&gt;type == UD_TAB__OPC_3DNOW);
+  UD_ASSERT(u-&gt;le-&gt;table[0xc] != 0);
</ins><span class="cx">   decode_insn(u, u-&gt;le-&gt;table[0xc]);
</span><del>-  ud_inp_next(u); 
</del><ins>+  inp_next(u); 
</ins><span class="cx">   if (u-&gt;error) {
</span><span class="cx">     return -1;
</span><span class="cx">   }
</span><del>-  ptr = u-&gt;le-&gt;table[ud_inp_curr(u)]; 
-  ASSERT((ptr &amp; 0x8000) == 0);
</del><ins>+  ptr = u-&gt;le-&gt;table[inp_curr(u)]; 
+  UD_ASSERT((ptr &amp; 0x8000) == 0);
</ins><span class="cx">   u-&gt;mnemonic = ud_itab[ptr].mnemonic;
</span><span class="cx">   return 0;
</span><span class="cx"> }
</span><span class="lines">@@ -986,7 +1078,18 @@
</span><span class="cx"> static int
</span><span class="cx"> decode_ssepfx(struct ud *u)
</span><span class="cx"> {
</span><del>-  uint8_t idx = ((u-&gt;pfx_insn &amp; 0xf) + 1) / 2;
</del><ins>+  uint8_t idx;
+  uint8_t pfx;

+  /*
+   * String prefixes (f2, f3) take precedence over operand
+   * size prefix (66).
+   */
+  pfx = u-&gt;pfx_str;
+  if (pfx == 0) {
+    pfx = u-&gt;pfx_opr;
+  }
+  idx = ((pfx &amp; 0xf) + 1) / 2;
</ins><span class="cx">   if (u-&gt;le-&gt;table[idx] == 0) {
</span><span class="cx">     idx = 0;
</span><span class="cx">   }
</span><span class="lines">@@ -995,23 +1098,50 @@
</span><span class="cx">      * &quot;Consume&quot; the prefix as a part of the opcode, so it is no
</span><span class="cx">      * longer exported as an instruction prefix.
</span><span class="cx">      */
</span><del>-    switch (u-&gt;pfx_insn) {
-      case 0xf2: 
-        u-&gt;pfx_repne = 0;
-        break;
-      case 0xf3: 
-        u-&gt;pfx_rep = 0;
-        u-&gt;pfx_repe = 0;
-        break;
-      case 0x66: 
</del><ins>+    u-&gt;pfx_str = 0;
+    if (pfx == 0x66) {
+        /* 
+         * consume &quot;66&quot; only if it was used for decoding, leaving
+         * it to be used as an operands size override for some
+         * simd instructions.
+         */
</ins><span class="cx">         u-&gt;pfx_opr = 0;
</span><del>-        break;
</del><span class="cx">     }
</span><span class="cx">   }
</span><span class="cx">   return decode_ext(u, u-&gt;le-&gt;table[idx]);
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><ins>+static int
+decode_vex(struct ud *u)
+{
+  uint8_t index;
+  if (u-&gt;dis_mode != 64 &amp;&amp; MODRM_MOD(inp_peek(u)) != 0x3) {
+    index = 0;
+  } else {
+    u-&gt;vex_op = inp_curr(u);
+    u-&gt;vex_b1 = inp_next(u);
+    if (u-&gt;vex_op == 0xc4) {
+      uint8_t pp, m;
+      /* 3-byte vex */
+      u-&gt;vex_b2 = inp_next(u);
+      UD_RETURN_ON_ERROR(u);
+      m  = u-&gt;vex_b1 &amp; 0x1f;
+      if (m == 0 || m &gt; 3) {
+        UD_RETURN_WITH_ERROR(u, &quot;reserved vex.m-mmmm value&quot;);
+      }
+      pp = u-&gt;vex_b2 &amp; 0x3;
+      index = (pp &lt;&lt; 2) | m;
+    } else {
+      /* 2-byte vex */
+      UD_ASSERT(u-&gt;vex_op == 0xc5);
+      index = 0x1 | ((u-&gt;vex_b1 &amp; 0x3) &lt;&lt; 2);
+    }
+  }
+  return decode_ext(u, u-&gt;le-&gt;table[index]); 
+}
+
+
</ins><span class="cx"> /*
</span><span class="cx">  * decode_ext()
</span><span class="cx">  *
</span><span class="lines">@@ -1038,7 +1168,7 @@
</span><span class="cx">        * 16 = 0,, 32 = 1, 64 = 2
</span><span class="cx">        */
</span><span class="cx">     case UD_TAB__OPC_MODE:
</span><del>-      idx = u-&gt;dis_mode / 32;
</del><ins>+      idx = u-&gt;dis_mode != 64 ? 0 : 1;
</ins><span class="cx">       break;
</span><span class="cx">     case UD_TAB__OPC_OSIZE:
</span><span class="cx">       idx = eff_opr_mode(u-&gt;dis_mode, REX_W(u-&gt;pfx_rex), u-&gt;pfx_opr) / 32;
</span><span class="lines">@@ -1067,8 +1197,19 @@
</span><span class="cx">       break;
</span><span class="cx">     case UD_TAB__OPC_SSE:
</span><span class="cx">       return decode_ssepfx(u);
</span><ins>+    case UD_TAB__OPC_VEX:
+      return decode_vex(u);
+    case UD_TAB__OPC_VEX_W:
+      idx = vex_w(u);
+      break;
+    case UD_TAB__OPC_VEX_L:
+      idx = vex_l(u);
+      break;
+    case UD_TAB__OPC_TABLE:
+      inp_next(u);
+      return decode_opcode(u);
</ins><span class="cx">     default:
</span><del>-      ASSERT(!&quot;not reached&quot;);
</del><ins>+      UD_ASSERT(!&quot;not reached&quot;);
</ins><span class="cx">       break;
</span><span class="cx">   }
</span><span class="cx"> 
</span><span class="lines">@@ -1076,22 +1217,13 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-static inline int
</del><ins>+static int
</ins><span class="cx"> decode_opcode(struct ud *u)
</span><span class="cx"> {
</span><span class="cx">   uint16_t ptr;
</span><del>-  ASSERT(u-&gt;le-&gt;type == UD_TAB__OPC_TABLE);
-  ud_inp_next(u); 
-  if (u-&gt;error) {
-    return -1;
-  }
-  ptr = u-&gt;le-&gt;table[ud_inp_curr(u)];
-  if (ptr &amp; 0x8000) {
-    u-&gt;le = &amp;ud_lookup_table_list[ptr &amp; ~0x8000];
-    if (u-&gt;le-&gt;type == UD_TAB__OPC_TABLE) {
-      return decode_opcode(u);
-    }
-  }
</del><ins>+  UD_ASSERT(u-&gt;le-&gt;type == UD_TAB__OPC_TABLE);
+  UD_RETURN_ON_ERROR(u);
+  ptr = u-&gt;le-&gt;table[inp_curr(u)];
</ins><span class="cx">   return decode_ext(u, ptr);
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -1103,7 +1235,7 @@
</span><span class="cx"> unsigned int
</span><span class="cx"> ud_decode(struct ud *u)
</span><span class="cx"> {
</span><del>-  ud_inp_start(u);
</del><ins>+  inp_start(u);
</ins><span class="cx">   clear_insn(u);
</span><span class="cx">   u-&gt;le = &amp;ud_lookup_table_list[0];
</span><span class="cx">   u-&gt;error = decode_prefixes(u) == -1 || 
</span><span class="lines">@@ -1114,7 +1246,7 @@
</span><span class="cx">     /* clear out the decode data. */
</span><span class="cx">     clear_insn(u);
</span><span class="cx">     /* mark the sequence of bytes as invalid. */
</span><del>-    u-&gt;itab_entry = &amp; s_ie__invalid;
</del><ins>+    u-&gt;itab_entry = &amp;ud_itab[0]; /* entry 0 is invalid */
</ins><span class="cx">     u-&gt;mnemonic = u-&gt;itab_entry-&gt;mnemonic;
</span><span class="cx">   } 
</span><span class="cx"> 
</span><span class="lines">@@ -1127,16 +1259,15 @@
</span><span class="cx">         u-&gt;pfx_seg = 0;
</span><span class="cx"> 
</span><span class="cx">   u-&gt;insn_offset = u-&gt;pc; /* set offset of instruction */
</span><del>-  u-&gt;insn_fill = 0;   /* set translation buffer index to 0 */
</del><ins>+  u-&gt;asm_buf_fill = 0;   /* set translation buffer index to 0 */
</ins><span class="cx">   u-&gt;pc += u-&gt;inp_ctr;    /* move program counter by bytes decoded */
</span><del>-  gen_hex( u );       /* generate hex code */
</del><span class="cx"> 
</span><span class="cx">   /* return number of bytes disassembled. */
</span><span class="cx">   return u-&gt;inp_ctr;
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+#endif // USE(UDIS86)
+
</ins><span class="cx"> /*
</span><span class="cx"> vim: set ts=2 sw=2 expandtab
</span><span class="cx"> */
</span><del>-
-#endif // USE(UDIS86)
</del></span></pre></div>
<a id="trunkSourceJavaScriptCoredisassemblerudis86udis86_decodeh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/disassembler/udis86/udis86_decode.h (198831 => 198832)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/disassembler/udis86/udis86_decode.h        2016-03-30 07:14:10 UTC (rev 198831)
+++ trunk/Source/JavaScriptCore/disassembler/udis86/udis86_decode.h        2016-03-30 07:17:14 UTC (rev 198832)
</span><span class="lines">@@ -27,74 +27,45 @@
</span><span class="cx"> #define UD_DECODE_H
</span><span class="cx"> 
</span><span class="cx"> #include &quot;udis86_types.h&quot;
</span><ins>+#include &quot;udis86_udint.h&quot;
</ins><span class="cx"> #include &quot;udis86_itab.h&quot;
</span><span class="cx"> 
</span><span class="cx"> #define MAX_INSN_LENGTH 15
</span><span class="cx"> 
</span><del>-/* register classes */
-#define T_NONE  0
-#define T_GPR   1
-#define T_MMX   2
-#define T_CRG   3
-#define T_DBG   4
-#define T_SEG   5
-#define T_XMM   6
-
</del><span class="cx"> /* itab prefix bits */
</span><span class="cx"> #define P_none          ( 0 )
</span><del>-#define P_cast          ( 1 &lt;&lt; 0 )
-#define P_CAST(n)       ( ( n &gt;&gt; 0 ) &amp; 1 )
-#define P_c1            ( 1 &lt;&lt; 0 )
-#define P_C1(n)         ( ( n &gt;&gt; 0 ) &amp; 1 )
-#define P_rexb          ( 1 &lt;&lt; 1 )
-#define P_REXB(n)       ( ( n &gt;&gt; 1 ) &amp; 1 )
-#define P_depM          ( 1 &lt;&lt; 2 )
-#define P_DEPM(n)       ( ( n &gt;&gt; 2 ) &amp; 1 )
-#define P_c3            ( 1 &lt;&lt; 3 )
-#define P_C3(n)         ( ( n &gt;&gt; 3 ) &amp; 1 )
-#define P_inv64         ( 1 &lt;&lt; 4 )
-#define P_INV64(n)      ( ( n &gt;&gt; 4 ) &amp; 1 )
</del><ins>+
+#define P_inv64         ( 1 &lt;&lt; 0 )
+#define P_INV64(n)      ( ( n &gt;&gt; 0 ) &amp; 1 )
+#define P_def64         ( 1 &lt;&lt; 1 )
+#define P_DEF64(n)      ( ( n &gt;&gt; 1 ) &amp; 1 )
+
+#define P_oso           ( 1 &lt;&lt; 2 )
+#define P_OSO(n)        ( ( n &gt;&gt; 2 ) &amp; 1 )
+#define P_aso           ( 1 &lt;&lt; 3 )
+#define P_ASO(n)        ( ( n &gt;&gt; 3 ) &amp; 1 )
+
+#define P_rexb          ( 1 &lt;&lt; 4 )
+#define P_REXB(n)       ( ( n &gt;&gt; 4 ) &amp; 1 )
</ins><span class="cx"> #define P_rexw          ( 1 &lt;&lt; 5 )
</span><span class="cx"> #define P_REXW(n)       ( ( n &gt;&gt; 5 ) &amp; 1 )
</span><del>-#define P_c2            ( 1 &lt;&lt; 6 )
-#define P_C2(n)         ( ( n &gt;&gt; 6 ) &amp; 1 )
-#define P_def64         ( 1 &lt;&lt; 7 )
-#define P_DEF64(n)      ( ( n &gt;&gt; 7 ) &amp; 1 )
-#define P_rexr          ( 1 &lt;&lt; 8 )
-#define P_REXR(n)       ( ( n &gt;&gt; 8 ) &amp; 1 )
-#define P_oso           ( 1 &lt;&lt; 9 )
-#define P_OSO(n)        ( ( n &gt;&gt; 9 ) &amp; 1 )
-#define P_aso           ( 1 &lt;&lt; 10 )
-#define P_ASO(n)        ( ( n &gt;&gt; 10 ) &amp; 1 )
-#define P_rexx          ( 1 &lt;&lt; 11 )
-#define P_REXX(n)       ( ( n &gt;&gt; 11 ) &amp; 1 )
-#define P_ImpAddr       ( 1 &lt;&lt; 12 )
-#define P_IMPADDR(n)    ( ( n &gt;&gt; 12 ) &amp; 1 )
-#define P_seg           ( 1 &lt;&lt; 13 )
-#define P_SEG(n)        ( ( n &gt;&gt; 13 ) &amp; 1 )
-#define P_sext          ( 1 &lt;&lt; 14 )
-#define P_SEXT(n)       ( ( n &gt;&gt; 14 ) &amp; 1 )
</del><ins>+#define P_rexr          ( 1 &lt;&lt; 6 )
+#define P_REXR(n)       ( ( n &gt;&gt; 6 ) &amp; 1 )
+#define P_rexx          ( 1 &lt;&lt; 7 )
+#define P_REXX(n)       ( ( n &gt;&gt; 7 ) &amp; 1 )
</ins><span class="cx"> 
</span><del>-/* rex prefix bits */
-#define REX_W(r)        ( ( 0xF &amp; ( r ) )  &gt;&gt; 3 )
-#define REX_R(r)        ( ( 0x7 &amp; ( r ) )  &gt;&gt; 2 )
-#define REX_X(r)        ( ( 0x3 &amp; ( r ) )  &gt;&gt; 1 )
-#define REX_B(r)        ( ( 0x1 &amp; ( r ) )  &gt;&gt; 0 )
-#define REX_PFX_MASK(n) ( ( P_REXW(n) &lt;&lt; 3 ) | \
-                          ( P_REXR(n) &lt;&lt; 2 ) | \
-                          ( P_REXX(n) &lt;&lt; 1 ) | \
-                          ( P_REXB(n) &lt;&lt; 0 ) )
</del><ins>+#define P_seg           ( 1 &lt;&lt; 8 )
+#define P_SEG(n)        ( ( n &gt;&gt; 8 ) &amp; 1 )
</ins><span class="cx"> 
</span><del>-/* scable-index-base bits */
-#define SIB_S(b)        ( ( b ) &gt;&gt; 6 )
-#define SIB_I(b)        ( ( ( b ) &gt;&gt; 3 ) &amp; 7 )
-#define SIB_B(b)        ( ( b ) &amp; 7 )
</del><ins>+#define P_vexl          ( 1 &lt;&lt; 9 )
+#define P_VEXL(n)       ( ( n &gt;&gt; 9 ) &amp; 1 )
+#define P_vexw          ( 1 &lt;&lt; 10 )
+#define P_VEXW(n)       ( ( n &gt;&gt; 10 ) &amp; 1 )
</ins><span class="cx"> 
</span><del>-/* modrm bits */
-#define MODRM_REG(b)    ( ( ( b ) &gt;&gt; 3 ) &amp; 7 )
-#define MODRM_NNN(b)    ( ( ( b ) &gt;&gt; 3 ) &amp; 7 )
-#define MODRM_MOD(b)    ( ( ( b ) &gt;&gt; 6 ) &amp; 3 )
-#define MODRM_RM(b)     ( ( b ) &amp; 7 )
</del><ins>+#define P_str           ( 1 &lt;&lt; 11 )
+#define P_STR(n)        ( ( n &gt;&gt; 11 ) &amp; 1 )
+#define P_strz          ( 1 &lt;&lt; 12 )
+#define P_STR_ZF(n)     ( ( n &gt;&gt; 12 ) &amp; 1 )
</ins><span class="cx"> 
</span><span class="cx"> /* operand type constants -- order is important! */
</span><span class="cx"> 
</span><span class="lines">@@ -102,26 +73,16 @@
</span><span class="cx">     OP_NONE,
</span><span class="cx"> 
</span><span class="cx">     OP_A,      OP_E,      OP_M,       OP_G,       
</span><del>-    OP_I,
</del><ins>+    OP_I,      OP_F,
</ins><span class="cx"> 
</span><del>-    OP_AL,     OP_CL,     OP_DL,      OP_BL,
-    OP_AH,     OP_CH,     OP_DH,      OP_BH,
</del><ins>+    OP_R0,     OP_R1,     OP_R2,      OP_R3,
+    OP_R4,     OP_R5,     OP_R6,      OP_R7,
</ins><span class="cx"> 
</span><del>-    OP_ALr8b,  OP_CLr9b,  OP_DLr10b,  OP_BLr11b,
-    OP_AHr12b, OP_CHr13b, OP_DHr14b,  OP_BHr15b,
</del><ins>+    OP_AL,     OP_CL,     OP_DL,
+    OP_AX,     OP_CX,     OP_DX,
+    OP_eAX,    OP_eCX,    OP_eDX,
+    OP_rAX,    OP_rCX,    OP_rDX,
</ins><span class="cx"> 
</span><del>-    OP_AX,     OP_CX,     OP_DX,      OP_BX,
-    OP_SI,     OP_DI,     OP_SP,      OP_BP,
-
-    OP_rAX,    OP_rCX,    OP_rDX,     OP_rBX,  
-    OP_rSP,    OP_rBP,    OP_rSI,     OP_rDI,
-
-    OP_rAXr8,  OP_rCXr9,  OP_rDXr10,  OP_rBXr11,  
-    OP_rSPr12, OP_rBPr13, OP_rSIr14,  OP_rDIr15,
-
-    OP_eAX,    OP_eCX,    OP_eDX,     OP_eBX,
-    OP_eSP,    OP_eBP,    OP_eSI,     OP_eDI,
-
</del><span class="cx">     OP_ES,     OP_CS,     OP_SS,      OP_DS,  
</span><span class="cx">     OP_FS,     OP_GS,
</span><span class="cx"> 
</span><span class="lines">@@ -129,45 +90,71 @@
</span><span class="cx">     OP_ST4,    OP_ST5,    OP_ST6,     OP_ST7,
</span><span class="cx"> 
</span><span class="cx">     OP_J,      OP_S,      OP_O,          
</span><del>-    OP_I1,     OP_I3, 
</del><ins>+    OP_I1,     OP_I3,     OP_sI,
</ins><span class="cx"> 
</span><span class="cx">     OP_V,      OP_W,      OP_Q,       OP_P, 
</span><ins>+    OP_U,      OP_N,      OP_MU,      OP_H,
+    OP_L,
</ins><span class="cx"> 
</span><del>-    OP_R,      OP_C,  OP_D,       OP_VR,  OP_PR,
</del><ins>+    OP_R,      OP_C,      OP_D,       
</ins><span class="cx"> 
</span><span class="cx">     OP_MR
</span><span class="cx"> } UD_ATTR_PACKED;
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-/* operand size constants */
</del><ins>+/*
+ * Operand size constants
+ *
+ *  Symbolic constants for various operand sizes. Some of these constants
+ *  are given a value equal to the width of the data (SZ_B == 8), such
+ *  that they maybe used interchangeably in the internals. Modifying them
+ *  will most certainly break things!
+ */
+typedef uint16_t ud_operand_size_t;
</ins><span class="cx"> 
</span><del>-enum ud_operand_size {
-    SZ_NA  = 0,
-    SZ_Z   = 1,
-    SZ_V   = 2,
-    SZ_P   = 3,
-    SZ_WP  = 4,
-    SZ_DP  = 5,
-    SZ_MDQ = 6,
-    SZ_RDQ = 7,
</del><ins>+#define SZ_NA  0
+#define SZ_Z   1
+#define SZ_V   2
+#define SZ_Y   3
+#define SZ_X   4
+#define SZ_RDQ 7
+#define SZ_B   8
+#define SZ_W   16
+#define SZ_D   32
+#define SZ_Q   64
+#define SZ_T   80
+#define SZ_O   12
+#define SZ_DQ  128 /* double quad */
+#define SZ_QQ  256 /* quad quad */
</ins><span class="cx"> 
</span><del>-    /* the following values are used as is,
-     * and thus hard-coded. changing them 
-     * will break internals 
-     */
-    SZ_B   = 8,
-    SZ_W   = 16,
-    SZ_D   = 32,
-    SZ_Q   = 64,
-    SZ_T   = 80,
-    SZ_O   = 128,
</del><ins>+/*
+ * Complex size types; that encode sizes for operands of type MR (memory or
+ * register); for internal use only. Id space above 256.
+ */
+#define SZ_BD  ((SZ_B &lt;&lt; 8) | SZ_D)
+#define SZ_BV  ((SZ_B &lt;&lt; 8) | SZ_V)
+#define SZ_WD  ((SZ_W &lt;&lt; 8) | SZ_D)
+#define SZ_WV  ((SZ_W &lt;&lt; 8) | SZ_V)
+#define SZ_WY  ((SZ_W &lt;&lt; 8) | SZ_Y)
+#define SZ_DY  ((SZ_D &lt;&lt; 8) | SZ_Y)
+#define SZ_WO  ((SZ_W &lt;&lt; 8) | SZ_O)
+#define SZ_DO  ((SZ_D &lt;&lt; 8) | SZ_O)
+#define SZ_QO  ((SZ_Q &lt;&lt; 8) | SZ_O)
</ins><span class="cx"> 
</span><del>-    SZ_WV  = 17,
-    SZ_BV  = 18,
-    SZ_DY  = 19
</del><span class="cx"> 
</span><del>-} UD_ATTR_PACKED;
</del><ins>+/* resolve complex size type.
+ */
+static UD_INLINE ud_operand_size_t
+Mx_mem_size(ud_operand_size_t size)
+{
+  return (size &gt;&gt; 8) &amp; 0xff;
+}
</ins><span class="cx"> 
</span><ins>+static UD_INLINE ud_operand_size_t
+Mx_reg_size(ud_operand_size_t size)
+{
+  return size &amp; 0xff;
+}
</ins><span class="cx"> 
</span><span class="cx"> /* A single operand of an entry in the instruction table. 
</span><span class="cx">  * (internal use only)
</span><span class="lines">@@ -175,7 +162,7 @@
</span><span class="cx"> struct ud_itab_entry_operand 
</span><span class="cx"> {
</span><span class="cx">   enum ud_operand_code type;
</span><del>-  enum ud_operand_size size;
</del><ins>+  ud_operand_size_t size;
</ins><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> 
</span><span class="lines">@@ -188,6 +175,7 @@
</span><span class="cx">   struct ud_itab_entry_operand  operand1;
</span><span class="cx">   struct ud_itab_entry_operand  operand2;
</span><span class="cx">   struct ud_itab_entry_operand  operand3;
</span><ins>+  struct ud_itab_entry_operand  operand4;
</ins><span class="cx">   uint32_t                      prefix;
</span><span class="cx"> };
</span><span class="cx"> 
</span><span class="lines">@@ -197,55 +185,6 @@
</span><span class="cx">     const char *meta;
</span><span class="cx"> };
</span><span class="cx">      
</span><del>-
-static inline unsigned int sse_pfx_idx( const unsigned int pfx ) 
-{
-    /* 00 = 0
-     * f2 = 1
-     * f3 = 2
-     * 66 = 3
-     */
-    return ( ( pfx &amp; 0xf ) + 1 ) / 2;
-}
-
-static inline unsigned int mode_idx( const unsigned int mode ) 
-{
-    /* 16 = 0
-     * 32 = 1
-     * 64 = 2
-     */
-    return ( mode / 32 );
-}
-
-static inline unsigned int modrm_mod_idx( const unsigned int mod )
-{
-    /* !11 = 0
-     *  11 = 1
-     */
-    return ( mod + 1 ) / 4;
-}
-
-static inline unsigned int vendor_idx( const unsigned int vendor )
-{
-    switch ( vendor ) {
-        case UD_VENDOR_AMD: return 0;
-        case UD_VENDOR_INTEL: return 1;
-        case UD_VENDOR_ANY: return 2; 
-        default: return 2;
-    }
-}
-
-static inline unsigned int is_group_ptr( uint16_t ptr )
-{
-    return ( 0x8000 &amp; ptr );
-}
-
-static inline unsigned int group_idx( uint16_t ptr )
-{
-    return ( ~0x8000 &amp; ptr );
-}
-
-
</del><span class="cx"> extern struct ud_itab_entry ud_itab[];
</span><span class="cx"> extern struct ud_lookup_table_list_entry ud_lookup_table_list[];
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoredisassemblerudis86udis86_externh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/disassembler/udis86/udis86_extern.h (198831 => 198832)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/disassembler/udis86/udis86_extern.h        2016-03-30 07:14:10 UTC (rev 198831)
+++ trunk/Source/JavaScriptCore/disassembler/udis86/udis86_extern.h        2016-03-30 07:17:14 UTC (rev 198832)
</span><span class="lines">@@ -1,6 +1,6 @@
</span><span class="cx"> /* udis86 - libudis86/extern.h
</span><span class="cx">  *
</span><del>- * Copyright (c) 2002-2009 Vivek Thampi
</del><ins>+ * Copyright (c) 2002-2009, 2013 Vivek Thampi
</ins><span class="cx">  * All rights reserved.
</span><span class="cx">  * 
</span><span class="cx">  * Redistribution and use in source and binary forms, with or without modification, 
</span><span class="lines">@@ -32,57 +32,82 @@
</span><span class="cx"> 
</span><span class="cx"> #include &quot;udis86_types.h&quot;
</span><span class="cx"> 
</span><ins>+#if defined(_MSC_VER) &amp;&amp; defined(_USRDLL)
+# ifdef LIBUDIS86_EXPORTS
+#  define LIBUDIS86_DLLEXTERN __declspec(dllexport)
+# else 
+#  define LIBUDIS86_DLLEXTERN __declspec(dllimport)
+# endif
+#else
+# define LIBUDIS86_DLLEXTERN 
+#endif
+
</ins><span class="cx"> /* ============================= PUBLIC API ================================= */
</span><span class="cx"> 
</span><del>-extern void ud_init(struct ud*);
</del><ins>+extern LIBUDIS86_DLLEXTERN void ud_init(struct ud*);
</ins><span class="cx"> 
</span><del>-extern void ud_set_mode(struct ud*, uint8_t);
</del><ins>+extern LIBUDIS86_DLLEXTERN void ud_set_mode(struct ud*, uint8_t);
</ins><span class="cx"> 
</span><del>-extern void ud_set_pc(struct ud*, uint64_t);
</del><ins>+extern LIBUDIS86_DLLEXTERN void ud_set_pc(struct ud*, uint64_t);
</ins><span class="cx"> 
</span><del>-extern void ud_set_input_hook(struct ud*, int (*)(struct ud*));
</del><ins>+extern LIBUDIS86_DLLEXTERN void ud_set_input_hook(struct ud*, int (*)(struct ud*));
</ins><span class="cx"> 
</span><del>-extern void ud_set_input_buffer(struct ud*, uint8_t*, size_t);
</del><ins>+extern LIBUDIS86_DLLEXTERN void ud_set_input_buffer(struct ud*, const uint8_t*, size_t);
</ins><span class="cx"> 
</span><span class="cx"> #ifndef __UD_STANDALONE__
</span><del>-extern void ud_set_input_file(struct ud*, FILE*);
</del><ins>+extern LIBUDIS86_DLLEXTERN void ud_set_input_file(struct ud*, FILE*);
</ins><span class="cx"> #endif /* __UD_STANDALONE__ */
</span><span class="cx"> 
</span><del>-extern void ud_set_vendor(struct ud*, unsigned);
</del><ins>+extern LIBUDIS86_DLLEXTERN void ud_set_vendor(struct ud*, unsigned);
</ins><span class="cx"> 
</span><del>-extern void ud_set_syntax(struct ud*, void (*)(struct ud*));
</del><ins>+extern LIBUDIS86_DLLEXTERN void ud_set_syntax(struct ud*, void (*)(struct ud*));
</ins><span class="cx"> 
</span><del>-extern void ud_input_skip(struct ud*, size_t);
</del><ins>+extern LIBUDIS86_DLLEXTERN void ud_input_skip(struct ud*, size_t);
</ins><span class="cx"> 
</span><del>-extern int ud_input_end(struct ud*);
</del><ins>+extern LIBUDIS86_DLLEXTERN int ud_input_end(const struct ud*);
</ins><span class="cx"> 
</span><del>-extern unsigned int ud_decode(struct ud*);
</del><ins>+extern LIBUDIS86_DLLEXTERN unsigned int ud_decode(struct ud*);
</ins><span class="cx"> 
</span><del>-extern unsigned int ud_disassemble(struct ud*);
</del><ins>+extern LIBUDIS86_DLLEXTERN unsigned int ud_disassemble(struct ud*);
</ins><span class="cx"> 
</span><del>-extern void ud_translate_intel(struct ud*);
</del><ins>+extern LIBUDIS86_DLLEXTERN void ud_translate_intel(struct ud*);
</ins><span class="cx"> 
</span><del>-extern void ud_translate_att(struct ud*);
</del><ins>+extern LIBUDIS86_DLLEXTERN void ud_translate_att(struct ud*);
</ins><span class="cx"> 
</span><del>-extern char* ud_insn_asm(struct ud* u);
</del><ins>+extern LIBUDIS86_DLLEXTERN const char* ud_insn_asm(const struct ud* u);
</ins><span class="cx"> 
</span><del>-extern uint8_t* ud_insn_ptr(struct ud* u);
</del><ins>+extern LIBUDIS86_DLLEXTERN const uint8_t* ud_insn_ptr(const struct ud* u);
</ins><span class="cx"> 
</span><del>-extern uint64_t ud_insn_off(struct ud*);
</del><ins>+extern LIBUDIS86_DLLEXTERN uint64_t ud_insn_off(const struct ud*);
</ins><span class="cx"> 
</span><del>-extern char* ud_insn_hex(struct ud*);
</del><ins>+extern LIBUDIS86_DLLEXTERN const char* ud_insn_hex(struct ud*);
</ins><span class="cx"> 
</span><del>-extern unsigned int ud_insn_len(struct ud* u);
</del><ins>+extern LIBUDIS86_DLLEXTERN unsigned int ud_insn_len(const struct ud* u);
</ins><span class="cx"> 
</span><del>-extern const char* ud_lookup_mnemonic(enum ud_mnemonic_code c);
</del><ins>+extern LIBUDIS86_DLLEXTERN const struct ud_operand* ud_insn_opr(const struct ud *u, unsigned int n);
</ins><span class="cx"> 
</span><del>-extern void ud_set_user_opaque_data(struct ud*, void*);
</del><ins>+extern LIBUDIS86_DLLEXTERN int ud_opr_is_sreg(const struct ud_operand *opr);
</ins><span class="cx"> 
</span><del>-extern void *ud_get_user_opaque_data(struct ud*);
</del><ins>+extern LIBUDIS86_DLLEXTERN int ud_opr_is_gpr(const struct ud_operand *opr);
</ins><span class="cx"> 
</span><ins>+extern LIBUDIS86_DLLEXTERN enum ud_mnemonic_code ud_insn_mnemonic(const struct ud *u);
+
+extern LIBUDIS86_DLLEXTERN const char* ud_lookup_mnemonic(enum ud_mnemonic_code c);
+
+extern LIBUDIS86_DLLEXTERN void ud_set_user_opaque_data(struct ud*, void*);
+
+extern LIBUDIS86_DLLEXTERN void* ud_get_user_opaque_data(const struct ud*);
+
+extern LIBUDIS86_DLLEXTERN void ud_set_asm_buffer(struct ud *u, char *buf, size_t size);
+
+extern LIBUDIS86_DLLEXTERN void ud_set_sym_resolver(struct ud *u, 
+                                const char* (*resolver)(struct ud*, 
+                                                        uint64_t addr,
+                                                        int64_t *offset));
+
</ins><span class="cx"> /* ========================================================================== */
</span><span class="cx"> 
</span><span class="cx"> #ifdef __cplusplus
</span><span class="cx"> }
</span><span class="cx"> #endif
</span><del>-#endif
</del><ins>+#endif /* UD_EXTERN_H */
</ins></span></pre></div>
<a id="trunkSourceJavaScriptCoredisassemblerudis86udis86_inputc"></a>
<div class="delfile"><h4>Deleted: trunk/Source/JavaScriptCore/disassembler/udis86/udis86_input.c (198831 => 198832)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/disassembler/udis86/udis86_input.c        2016-03-30 07:14:10 UTC (rev 198831)
+++ trunk/Source/JavaScriptCore/disassembler/udis86/udis86_input.c        2016-03-30 07:17:14 UTC (rev 198832)
</span><span class="lines">@@ -1,262 +0,0 @@
</span><del>-/* udis86 - libudis86/input.c
- *
- * Copyright (c) 2002-2009 Vivek Thampi
- * All rights reserved.
- * 
- * Redistribution and use in source and binary forms, with or without modification, 
- * are permitted provided that the following conditions are met:
- * 
- *     * Redistributions of source code must retain the above copyright notice, 
- *       this list of conditions and the following disclaimer.
- *     * Redistributions in binary form must reproduce the above copyright notice, 
- *       this list of conditions and the following disclaimer in the documentation 
- *       and/or other materials provided with the distribution.
- * 
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS &quot;AS IS&quot; AND 
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR 
- * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON 
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-#include &quot;config.h&quot;
-
-#if USE(UDIS86)
-
-#include &quot;udis86_extern.h&quot;
-#include &quot;udis86_types.h&quot;
-#include &quot;udis86_input.h&quot;
-
-/* -----------------------------------------------------------------------------
- * inp_buff_hook() - Hook for buffered inputs.
- * -----------------------------------------------------------------------------
- */
-static int 
-inp_buff_hook(struct ud* u)
-{
-  if (u-&gt;inp_buff &lt; u-&gt;inp_buff_end)
-        return *u-&gt;inp_buff++;
-  else        return -1;
-}
-
-#ifndef __UD_STANDALONE__
-/* -----------------------------------------------------------------------------
- * inp_file_hook() - Hook for FILE inputs.
- * -----------------------------------------------------------------------------
- */
-static int 
-inp_file_hook(struct ud* u)
-{
-  return fgetc(u-&gt;inp_file);
-}
-#endif /* __UD_STANDALONE__*/
-
-/* =============================================================================
- * ud_inp_set_hook() - Sets input hook.
- * =============================================================================
- */
-extern void 
-ud_set_input_hook(register struct ud* u, int (*hook)(struct ud*))
-{
-  u-&gt;inp_hook = hook;
-  ud_inp_init(u);
-}
-
-extern void
-ud_set_user_opaque_data( struct ud * u, void * opaque )
-{
-  u-&gt;user_opaque_data = opaque;
-}
-
-extern void *
-ud_get_user_opaque_data( struct ud * u )
-{
-  return u-&gt;user_opaque_data;
-}
-
-/* =============================================================================
- * ud_inp_set_buffer() - Set buffer as input.
- * =============================================================================
- */
-extern void 
-ud_set_input_buffer(register struct ud* u, uint8_t* buf, size_t len)
-{
-  u-&gt;inp_hook = inp_buff_hook;
-  u-&gt;inp_buff = buf;
-  u-&gt;inp_buff_end = buf + len;
-  ud_inp_init(u);
-}
-
-#ifndef __UD_STANDALONE__
-/* =============================================================================
- * ud_input_set_file() - Set buffer as input.
- * =============================================================================
- */
-extern void 
-ud_set_input_file(register struct ud* u, FILE* f)
-{
-  u-&gt;inp_hook = inp_file_hook;
-  u-&gt;inp_file = f;
-  ud_inp_init(u);
-}
-#endif /* __UD_STANDALONE__ */
-
-/* =============================================================================
- * ud_input_skip() - Skip n input bytes.
- * =============================================================================
- */
-extern void 
-ud_input_skip(struct ud* u, size_t n)
-{
-  while (n--) {
-        u-&gt;inp_hook(u);
-  }
-}
-
-/* =============================================================================
- * ud_input_end() - Test for end of input.
- * =============================================================================
- */
-extern int 
-ud_input_end(struct ud* u)
-{
-  return (u-&gt;inp_curr == u-&gt;inp_fill) &amp;&amp; u-&gt;inp_end;
-}
-
-/* -----------------------------------------------------------------------------
- * ud_inp_next() - Loads and returns the next byte from input.
- *
- * inp_curr and inp_fill are pointers to the cache. The program is written based
- * on the property that they are 8-bits in size, and will eventually wrap around
- * forming a circular buffer. So, the size of the cache is 256 in size, kind of
- * unnecessary yet optimized.
- *
- * A buffer inp_sess stores the bytes disassembled for a single session.
- * -----------------------------------------------------------------------------
- */
-extern uint8_t ud_inp_next(struct ud* u) 
-{
-  int c = -1;
-  /* if current pointer is not upto the fill point in the 
-   * input cache.
-   */
-  if ( u-&gt;inp_curr != u-&gt;inp_fill ) {
-        c = u-&gt;inp_cache[ ++u-&gt;inp_curr ];
-  /* if !end-of-input, call the input hook and get a byte */
-  } else if ( u-&gt;inp_end || ( c = u-&gt;inp_hook( u ) ) == -1 ) {
-        /* end-of-input, mark it as an error, since the decoder,
-         * expected a byte more.
-         */
-        u-&gt;error = 1;
-        /* flag end of input */
-        u-&gt;inp_end = 1;
-        return 0;
-  } else {
-        /* increment pointers, we have a new byte.  */
-        u-&gt;inp_curr = ++u-&gt;inp_fill;
-        /* add the byte to the cache */
-        u-&gt;inp_cache[ u-&gt;inp_fill ] = c;
-  }
-  /* record bytes input per decode-session. */
-  u-&gt;inp_sess[ u-&gt;inp_ctr++ ] = c;
-  /* return byte */
-  return ( uint8_t ) c;
-}
-
-/* -----------------------------------------------------------------------------
- * ud_inp_back() - Move back a single byte in the stream.
- * -----------------------------------------------------------------------------
- */
-extern void
-ud_inp_back(struct ud* u) 
-{
-  if ( u-&gt;inp_ctr &gt; 0 ) {
-        --u-&gt;inp_curr;
-        --u-&gt;inp_ctr;
-  }
-}
-
-/* -----------------------------------------------------------------------------
- * ud_inp_peek() - Peek into the next byte in source. 
- * -----------------------------------------------------------------------------
- */
-extern uint8_t
-ud_inp_peek(struct ud* u) 
-{
-  uint8_t r = ud_inp_next(u);
-  if ( !u-&gt;error ) ud_inp_back(u); /* Don't backup if there was an error */
-  return r;
-}
-
-/* -----------------------------------------------------------------------------
- * ud_inp_move() - Move ahead n input bytes.
- * -----------------------------------------------------------------------------
- */
-extern void
-ud_inp_move(struct ud* u, size_t n) 
-{
-  while (n--)
-        ud_inp_next(u);
-}
-
-/*------------------------------------------------------------------------------
- *  ud_inp_uintN() - return uintN from source.
- *------------------------------------------------------------------------------
- */
-extern uint8_t 
-ud_inp_uint8(struct ud* u)
-{
-  return ud_inp_next(u);
-}
-
-extern uint16_t 
-ud_inp_uint16(struct ud* u)
-{
-  uint16_t r, ret;
-
-  ret = ud_inp_next(u);
-  r = ud_inp_next(u);
-  return ret | (r &lt;&lt; 8);
-}
-
-extern uint32_t 
-ud_inp_uint32(struct ud* u)
-{
-  uint32_t r, ret;
-
-  ret = ud_inp_next(u);
-  r = ud_inp_next(u);
-  ret = ret | (r &lt;&lt; 8);
-  r = ud_inp_next(u);
-  ret = ret | (r &lt;&lt; 16);
-  r = ud_inp_next(u);
-  return ret | (r &lt;&lt; 24);
-}
-
-extern uint64_t 
-ud_inp_uint64(struct ud* u)
-{
-  uint64_t r, ret;
-
-  ret = ud_inp_next(u);
-  r = ud_inp_next(u);
-  ret = ret | (r &lt;&lt; 8);
-  r = ud_inp_next(u);
-  ret = ret | (r &lt;&lt; 16);
-  r = ud_inp_next(u);
-  ret = ret | (r &lt;&lt; 24);
-  r = ud_inp_next(u);
-  ret = ret | (r &lt;&lt; 32);
-  r = ud_inp_next(u);
-  ret = ret | (r &lt;&lt; 40);
-  r = ud_inp_next(u);
-  ret = ret | (r &lt;&lt; 48);
-  r = ud_inp_next(u);
-  return ret | (r &lt;&lt; 56);
-}
-
-#endif // USE(UDIS86)
</del></span></pre></div>
<a id="trunkSourceJavaScriptCoredisassemblerudis86udis86_inputh"></a>
<div class="delfile"><h4>Deleted: trunk/Source/JavaScriptCore/disassembler/udis86/udis86_input.h (198831 => 198832)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/disassembler/udis86/udis86_input.h        2016-03-30 07:14:10 UTC (rev 198831)
+++ trunk/Source/JavaScriptCore/disassembler/udis86/udis86_input.h        2016-03-30 07:17:14 UTC (rev 198832)
</span><span class="lines">@@ -1,67 +0,0 @@
</span><del>-/* udis86 - libudis86/input.h
- *
- * Copyright (c) 2002-2009 Vivek Thampi
- * All rights reserved.
- * 
- * Redistribution and use in source and binary forms, with or without modification, 
- * are permitted provided that the following conditions are met:
- * 
- *     * Redistributions of source code must retain the above copyright notice, 
- *       this list of conditions and the following disclaimer.
- *     * Redistributions in binary form must reproduce the above copyright notice, 
- *       this list of conditions and the following disclaimer in the documentation 
- *       and/or other materials provided with the distribution.
- * 
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS &quot;AS IS&quot; AND 
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR 
- * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON 
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-#ifndef UD_INPUT_H
-#define UD_INPUT_H
-
-#include &quot;udis86_types.h&quot;
-
-uint8_t ud_inp_next(struct ud*);
-uint8_t ud_inp_peek(struct ud*);
-uint8_t ud_inp_uint8(struct ud*);
-uint16_t ud_inp_uint16(struct ud*);
-uint32_t ud_inp_uint32(struct ud*);
-uint64_t ud_inp_uint64(struct ud*);
-void ud_inp_move(struct ud*, size_t);
-void ud_inp_back(struct ud*);
-
-/* ud_inp_init() - Initializes the input system. */
-#define ud_inp_init(u) \
-do { \
-  u-&gt;inp_curr = 0; \
-  u-&gt;inp_fill = 0; \
-  u-&gt;inp_ctr  = 0; \
-  u-&gt;inp_end  = 0; \
-} while (0)
-
-/* ud_inp_start() - Should be called before each de-code operation. */
-#define ud_inp_start(u) u-&gt;inp_ctr = 0
-
-/* ud_inp_back() - Resets the current pointer to its position before the current
- * instruction disassembly was started.
- */
-#define ud_inp_reset(u) \
-do { \
-  u-&gt;inp_curr -= u-&gt;inp_ctr; \
-  u-&gt;inp_ctr = 0; \
-} while (0)
-
-/* ud_inp_sess() - Returns the pointer to current session. */
-#define ud_inp_sess(u) (u-&gt;inp_sess)
-
-/* inp_cur() - Returns the current input byte. */
-#define ud_inp_curr(u) ((u)-&gt;inp_cache[(u)-&gt;inp_curr])
-
-#endif
</del></span></pre></div>
<a id="trunkSourceJavaScriptCoredisassemblerudis86udis86_synattc"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/disassembler/udis86/udis86_syn-att.c (198831 => 198832)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/disassembler/udis86/udis86_syn-att.c        2016-03-30 07:14:10 UTC (rev 198831)
+++ trunk/Source/JavaScriptCore/disassembler/udis86/udis86_syn-att.c        2016-03-30 07:17:14 UTC (rev 198832)
</span><span class="lines">@@ -23,6 +23,7 @@
</span><span class="cx">  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 
</span><span class="cx">  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
</span><span class="cx">  */
</span><ins>+
</ins><span class="cx"> #include &quot;config.h&quot;
</span><span class="cx"> 
</span><span class="cx"> #if USE(UDIS86)
</span><span class="lines">@@ -32,6 +33,7 @@
</span><span class="cx"> #include &quot;udis86_decode.h&quot;
</span><span class="cx"> #include &quot;udis86_itab.h&quot;
</span><span class="cx"> #include &quot;udis86_syn.h&quot;
</span><ins>+#include &quot;udis86_udint.h&quot;
</ins><span class="cx"> 
</span><span class="cx"> /* -----------------------------------------------------------------------------
</span><span class="cx">  * opr_cast() - Prints an operand cast.
</span><span class="lines">@@ -41,9 +43,9 @@
</span><span class="cx"> opr_cast(struct ud* u, struct ud_operand* op)
</span><span class="cx"> {
</span><span class="cx">   switch(op-&gt;size) {
</span><del>-        case 16 : case 32 :
-                mkasm(u, &quot;*&quot;);   break;
-        default: break;
</del><ins>+  case 16 : case 32 :
+    ud_asmprintf(u, &quot;*&quot;);   break;
+  default: break;
</ins><span class="cx">   }
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -55,107 +57,66 @@
</span><span class="cx"> gen_operand(struct ud* u, struct ud_operand* op)
</span><span class="cx"> {
</span><span class="cx">   switch(op-&gt;type) {
</span><del>-        case UD_OP_REG:
-                mkasm(u, &quot;%%%s&quot;, ud_reg_tab[op-&gt;base - UD_R_AL]);
-                break;
</del><ins>+  case UD_OP_CONST:
+    ud_asmprintf(u, &quot;$0x%x&quot;, op-&gt;lval.udword);
+    break;
</ins><span class="cx"> 
</span><del>-        case UD_OP_MEM:
-                if (u-&gt;br_far) opr_cast(u, op);
-                if (u-&gt;pfx_seg)
-                        mkasm(u, &quot;%%%s:&quot;, ud_reg_tab[u-&gt;pfx_seg - UD_R_AL]);
-                if (op-&gt;offset == 8) {
-                        if (op-&gt;lval.sbyte &lt; 0)
-                                mkasm(u, &quot;-0x%x&quot;, (-op-&gt;lval.sbyte) &amp; 0xff);
-                        else
-                                mkasm(u, &quot;0x%x&quot;, op-&gt;lval.sbyte);
-                } 
-                else if (op-&gt;offset == 16) {
-                        if (op-&gt;lval.sword &lt; 0)
-                                mkasm(u, &quot;-0x%x&quot;, (-op-&gt;lval.sword) &amp; 0xffff);
-                        else
-                                mkasm(u, &quot;0x%x&quot;, op-&gt;lval.sword);
-                } else if (op-&gt;offset == 32) {
-                        if (op-&gt;lval.sdword &lt; 0)
-                                mkasm(u, &quot;-0x%x&quot;, (-op-&gt;lval.sdword) &amp; 0xffffffff);
-                        else
-                                mkasm(u, &quot;0x%x&quot;, op-&gt;lval.sdword);
-                } else if (op-&gt;offset == 64) {
-                        if (op-&gt;lval.sdword &lt; 0)
-                            mkasm(u, &quot;-0x&quot; FMT64 &quot;x&quot;, (uint64_t)-op-&gt;lval.sqword);
-                        else
-                            mkasm(u, &quot;0x&quot; FMT64 &quot;x&quot;, (uint64_t)op-&gt;lval.sqword);
-                }
</del><ins>+  case UD_OP_REG:
+    ud_asmprintf(u, &quot;%%%s&quot;, ud_reg_tab[op-&gt;base - UD_R_AL]);
+    break;
</ins><span class="cx"> 
</span><del>-                if (op-&gt;base)
-                        mkasm(u, &quot;(%%%s&quot;, ud_reg_tab[op-&gt;base - UD_R_AL]);
-                if (op-&gt;index) {
-                        if (op-&gt;base)
-                                mkasm(u, &quot;,&quot;);
-                        else mkasm(u, &quot;(&quot;);
-                        mkasm(u, &quot;%%%s&quot;, ud_reg_tab[op-&gt;index - UD_R_AL]);
-                }
-                if (op-&gt;scale)
-                        mkasm(u, &quot;,%d&quot;, op-&gt;scale);
-                if (op-&gt;base || op-&gt;index)
-                        mkasm(u, &quot;)&quot;);
-                break;
</del><ins>+  case UD_OP_MEM:
+    if (u-&gt;br_far) {
+        opr_cast(u, op);
+    }
+    if (u-&gt;pfx_seg) {
+      ud_asmprintf(u, &quot;%%%s:&quot;, ud_reg_tab[u-&gt;pfx_seg - UD_R_AL]);
+    }
+    if (op-&gt;offset != 0) { 
+      ud_syn_print_mem_disp(u, op, 0);
+    }
+    if (op-&gt;base) {
+      ud_asmprintf(u, &quot;(%%%s&quot;, ud_reg_tab[op-&gt;base - UD_R_AL]);
+    }
+    if (op-&gt;index) {
+      if (op-&gt;base) {
+        ud_asmprintf(u, &quot;,&quot;);
+      } else {
+        ud_asmprintf(u, &quot;(&quot;);
+      }
+      ud_asmprintf(u, &quot;%%%s&quot;, ud_reg_tab[op-&gt;index - UD_R_AL]);
+    }
+    if (op-&gt;scale) {
+      ud_asmprintf(u, &quot;,%d&quot;, op-&gt;scale);
+    }
+    if (op-&gt;base || op-&gt;index) {
+      ud_asmprintf(u, &quot;)&quot;);
+    }
+    break;
</ins><span class="cx"> 
</span><del>-        case UD_OP_IMM: {
-        int64_t  imm = 0;
-        uint64_t sext_mask = 0xffffffffffffffffull;
-        unsigned sext_size = op-&gt;size;
</del><ins>+  case UD_OP_IMM:
+    ud_asmprintf(u, &quot;$&quot;);
+    ud_syn_print_imm(u, op);
+    break;
</ins><span class="cx"> 
</span><del>-        switch (op-&gt;size) {
-            case  8: imm = op-&gt;lval.sbyte; break;
-            case 16: imm = op-&gt;lval.sword; break;
-            case 32: imm = op-&gt;lval.sdword; break;
-            case 64: imm = op-&gt;lval.sqword; break;
-        }
-        if ( P_SEXT( u-&gt;itab_entry-&gt;prefix ) ) {
-            sext_size = u-&gt;operand[ 0 ].size; 
-            if ( u-&gt;mnemonic == UD_Ipush )
-                /* push sign-extends to operand size */
-                sext_size = u-&gt;opr_mode; 
-        }
-        if ( sext_size &lt; 64 )
-            sext_mask = ( 1ull &lt;&lt; sext_size ) - 1;
-        mkasm( u, &quot;$0x&quot; FMT64 &quot;x&quot;, (uint64_t)(imm &amp; sext_mask) ); 
</del><ins>+  case UD_OP_JIMM:
+    ud_syn_print_addr(u, ud_syn_rel_target(u, op));
+    break;
</ins><span class="cx"> 
</span><del>-                break;
</del><ins>+  case UD_OP_PTR:
+    switch (op-&gt;size) {
+      case 32:
+        ud_asmprintf(u, &quot;$0x%x, $0x%x&quot;, op-&gt;lval.ptr.seg, 
+          op-&gt;lval.ptr.off &amp; 0xFFFF);
+        break;
+      case 48:
+        ud_asmprintf(u, &quot;$0x%x, $0x%x&quot;, op-&gt;lval.ptr.seg, 
+          op-&gt;lval.ptr.off);
+        break;
</ins><span class="cx">     }
</span><del>-
-        case UD_OP_JIMM:
-                switch (op-&gt;size) {
-                        case  8:
-                                mkasm(u, &quot;0x&quot; FMT64 &quot;x&quot;, (uint64_t)(u-&gt;pc + op-&gt;lval.sbyte)); 
-                                break;
-                        case 16:
-                                mkasm(u, &quot;0x&quot; FMT64 &quot;x&quot;, (uint64_t)((u-&gt;pc + op-&gt;lval.sword) &amp; 0xffff) );
-                                break;
-                        case 32:
-                                if (u-&gt;dis_mode == 32)
-                                    mkasm(u, &quot;0x&quot; FMT64 &quot;x&quot;, (uint64_t)((u-&gt;pc + op-&gt;lval.sdword) &amp; 0xffffffff));
-                                else
-                                    mkasm(u, &quot;0x&quot; FMT64 &quot;x&quot;, (uint64_t)(u-&gt;pc + op-&gt;lval.sdword));
-                                break;
-                        default:break;
-                }
-                break;
-
-        case UD_OP_PTR:
-                switch (op-&gt;size) {
-                        case 32:
-                                mkasm(u, &quot;$0x%x, $0x%x&quot;, op-&gt;lval.ptr.seg, 
-                                        op-&gt;lval.ptr.off &amp; 0xFFFF);
-                                break;
-                        case 48:
-                                mkasm(u, &quot;$0x%x, $0x%lx&quot;, op-&gt;lval.ptr.seg, 
-                                        (unsigned long)op-&gt;lval.ptr.off);
-                                break;
-                }
-                break;
-                        
-        default: return;
</del><ins>+    break;
+      
+  default: return;
</ins><span class="cx">   }
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -167,99 +128,108 @@
</span><span class="cx"> ud_translate_att(struct ud *u)
</span><span class="cx"> {
</span><span class="cx">   int size = 0;
</span><del>-  unsigned i;
</del><ins>+  int star = 0;
</ins><span class="cx"> 
</span><span class="cx">   /* check if P_OSO prefix is used */
</span><span class="cx">   if (! P_OSO(u-&gt;itab_entry-&gt;prefix) &amp;&amp; u-&gt;pfx_opr) {
</span><del>-        switch (u-&gt;dis_mode) {
-                case 16: 
-                        mkasm(u, &quot;o32 &quot;);
-                        break;
-                case 32:
-                case 64:
-                         mkasm(u, &quot;o16 &quot;);
-                        break;
-        }
</del><ins>+  switch (u-&gt;dis_mode) {
+    case 16: 
+      ud_asmprintf(u, &quot;o32 &quot;);
+      break;
+    case 32:
+    case 64:
+      ud_asmprintf(u, &quot;o16 &quot;);
+      break;
</ins><span class="cx">   }
</span><ins>+  }
</ins><span class="cx"> 
</span><span class="cx">   /* check if P_ASO prefix was used */
</span><span class="cx">   if (! P_ASO(u-&gt;itab_entry-&gt;prefix) &amp;&amp; u-&gt;pfx_adr) {
</span><del>-        switch (u-&gt;dis_mode) {
-                case 16: 
-                        mkasm(u, &quot;a32 &quot;);
-                        break;
-                case 32:
-                         mkasm(u, &quot;a16 &quot;);
-                        break;
-                case 64:
-                         mkasm(u, &quot;a32 &quot;);
-                        break;
-        }
</del><ins>+  switch (u-&gt;dis_mode) {
+    case 16: 
+      ud_asmprintf(u, &quot;a32 &quot;);
+      break;
+    case 32:
+      ud_asmprintf(u, &quot;a16 &quot;);
+      break;
+    case 64:
+      ud_asmprintf(u, &quot;a32 &quot;);
+      break;
</ins><span class="cx">   }
</span><ins>+  }
</ins><span class="cx"> 
</span><span class="cx">   if (u-&gt;pfx_lock)
</span><del>-          mkasm(u,  &quot;lock &quot;);
-  if (u-&gt;pfx_rep)
-        mkasm(u,  &quot;rep &quot;);
-  if (u-&gt;pfx_repne)
-                mkasm(u,  &quot;repne &quot;);
</del><ins>+    ud_asmprintf(u,  &quot;lock &quot;);
+  if (u-&gt;pfx_rep) {
+    ud_asmprintf(u, &quot;rep &quot;);
+  } else if (u-&gt;pfx_repe) {
+    ud_asmprintf(u, &quot;repe &quot;);
+  } else if (u-&gt;pfx_repne) {
+    ud_asmprintf(u, &quot;repne &quot;);
+  }
</ins><span class="cx"> 
</span><span class="cx">   /* special instructions */
</span><span class="cx">   switch (u-&gt;mnemonic) {
</span><del>-        case UD_Iretf: 
-                mkasm(u, &quot;lret &quot;); 
-                break;
-        case UD_Idb:
-                mkasm(u, &quot;.byte 0x%x&quot;, u-&gt;operand[0].lval.ubyte);
-                return;
-        case UD_Ijmp:
-        case UD_Icall:
-                if (u-&gt;br_far) mkasm(u,  &quot;l&quot;);
-                mkasm(u, &quot;%s&quot;, ud_lookup_mnemonic(u-&gt;mnemonic));
-                break;
-        case UD_Ibound:
-        case UD_Ienter:
-                if (u-&gt;operand[0].type != UD_NONE)
-                        gen_operand(u, &amp;u-&gt;operand[0]);
-                if (u-&gt;operand[1].type != UD_NONE) {
-                        mkasm(u, &quot;,&quot;);
-                        gen_operand(u, &amp;u-&gt;operand[1]);
-                }
-                return;
-        default:
-                mkasm(u, &quot;%s&quot;, ud_lookup_mnemonic(u-&gt;mnemonic));
</del><ins>+  case UD_Iretf: 
+    ud_asmprintf(u, &quot;lret &quot;); 
+    break;
+  case UD_Idb:
+    ud_asmprintf(u, &quot;.byte 0x%x&quot;, u-&gt;operand[0].lval.ubyte);
+    return;
+  case UD_Ijmp:
+  case UD_Icall:
+    if (u-&gt;br_far) ud_asmprintf(u,  &quot;l&quot;);
+        if (u-&gt;operand[0].type == UD_OP_REG) {
+          star = 1;
+        }
+    ud_asmprintf(u, &quot;%s&quot;, ud_lookup_mnemonic(u-&gt;mnemonic));
+    break;
+  case UD_Ibound:
+  case UD_Ienter:
+    if (u-&gt;operand[0].type != UD_NONE)
+      gen_operand(u, &amp;u-&gt;operand[0]);
+    if (u-&gt;operand[1].type != UD_NONE) {
+      ud_asmprintf(u, &quot;,&quot;);
+      gen_operand(u, &amp;u-&gt;operand[1]);
+    }
+    return;
+  default:
+    ud_asmprintf(u, &quot;%s&quot;, ud_lookup_mnemonic(u-&gt;mnemonic));
</ins><span class="cx">   }
</span><span class="cx"> 
</span><del>-  for (i = 3; i--;) {
-      if (u-&gt;operand[i].size &gt; size
-          &amp;&amp; u-&gt;operand[i].type != UD_OP_JIMM)
-          size = u-&gt;operand[i].size;
</del><ins>+  if (size == 8) {
+    ud_asmprintf(u, &quot;b&quot;);
+  } else if (size == 16) {
+    ud_asmprintf(u, &quot;w&quot;);
+  } else if (size == 64) {
+    ud_asmprintf(u, &quot;q&quot;);
</ins><span class="cx">   }
</span><span class="cx"> 
</span><del>-  if (size == 8)
-      mkasm(u, &quot;b&quot;);
-  else if (size == 16)
-      mkasm(u, &quot;w&quot;);
-  else if (size == 32)
-      mkasm(u, &quot;l&quot;);
-  else if (size == 64)
-      mkasm(u, &quot;q&quot;);
</del><ins>+  if (star) {
+    ud_asmprintf(u, &quot; *&quot;);
+  } else {
+    ud_asmprintf(u, &quot; &quot;);
+  }
</ins><span class="cx"> 
</span><del>-  mkasm(u, &quot; &quot;);
-
</del><ins>+  if (u-&gt;operand[3].type != UD_NONE) {
+    gen_operand(u, &amp;u-&gt;operand[3]);
+    ud_asmprintf(u, &quot;, &quot;);
+  }
</ins><span class="cx">   if (u-&gt;operand[2].type != UD_NONE) {
</span><del>-        gen_operand(u, &amp;u-&gt;operand[2]);
-        mkasm(u, &quot;, &quot;);
</del><ins>+    gen_operand(u, &amp;u-&gt;operand[2]);
+    ud_asmprintf(u, &quot;, &quot;);
</ins><span class="cx">   }
</span><del>-
</del><span class="cx">   if (u-&gt;operand[1].type != UD_NONE) {
</span><del>-        gen_operand(u, &amp;u-&gt;operand[1]);
-        mkasm(u, &quot;, &quot;);
</del><ins>+    gen_operand(u, &amp;u-&gt;operand[1]);
+    ud_asmprintf(u, &quot;, &quot;);
</ins><span class="cx">   }
</span><del>-
-  if (u-&gt;operand[0].type != UD_NONE)
-        gen_operand(u, &amp;u-&gt;operand[0]);
</del><ins>+  if (u-&gt;operand[0].type != UD_NONE) {
+    gen_operand(u, &amp;u-&gt;operand[0]);
+  }
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> #endif // USE(UDIS86)
</span><span class="cx"> 
</span><ins>+/*
+vim: set ts=2 sw=2 expandtab
+*/
</ins></span></pre></div>
<a id="trunkSourceJavaScriptCoredisassemblerudis86udis86_synintelc"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/disassembler/udis86/udis86_syn-intel.c (198831 => 198832)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/disassembler/udis86/udis86_syn-intel.c        2016-03-30 07:14:10 UTC (rev 198831)
+++ trunk/Source/JavaScriptCore/disassembler/udis86/udis86_syn-intel.c        2016-03-30 07:17:14 UTC (rev 198832)
</span><span class="lines">@@ -1,6 +1,6 @@
</span><span class="cx"> /* udis86 - libudis86/syn-intel.c
</span><span class="cx">  *
</span><del>- * Copyright (c) 2002-2009 Vivek Thampi
</del><ins>+ * Copyright (c) 2002-2013 Vivek Thampi
</ins><span class="cx">  * All rights reserved.
</span><span class="cx">  * 
</span><span class="cx">  * Redistribution and use in source and binary forms, with or without modification, 
</span><span class="lines">@@ -23,6 +23,7 @@
</span><span class="cx">  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 
</span><span class="cx">  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
</span><span class="cx">  */
</span><ins>+
</ins><span class="cx"> #include &quot;config.h&quot;
</span><span class="cx"> 
</span><span class="cx"> #if USE(UDIS86)
</span><span class="lines">@@ -32,6 +33,7 @@
</span><span class="cx"> #include &quot;udis86_decode.h&quot;
</span><span class="cx"> #include &quot;udis86_itab.h&quot;
</span><span class="cx"> #include &quot;udis86_syn.h&quot;
</span><ins>+#include &quot;udis86_udint.h&quot;
</ins><span class="cx"> 
</span><span class="cx"> /* -----------------------------------------------------------------------------
</span><span class="cx">  * opr_cast() - Prints an operand cast.
</span><span class="lines">@@ -40,16 +42,19 @@
</span><span class="cx"> static void 
</span><span class="cx"> opr_cast(struct ud* u, struct ud_operand* op)
</span><span class="cx"> {
</span><ins>+  if (u-&gt;br_far) {
+    ud_asmprintf(u, &quot;far &quot;); 
+  }
</ins><span class="cx">   switch(op-&gt;size) {
</span><del>-        case  8: mkasm(u, &quot;byte &quot; ); break;
-        case 16: mkasm(u, &quot;word &quot; ); break;
-        case 32: mkasm(u, &quot;dword &quot;); break;
-        case 64: mkasm(u, &quot;qword &quot;); break;
-        case 80: mkasm(u, &quot;tword &quot;); break;
-        default: break;
</del><ins>+  case  8:  ud_asmprintf(u, &quot;byte &quot; ); break;
+  case 16:  ud_asmprintf(u, &quot;word &quot; ); break;
+  case 32:  ud_asmprintf(u, &quot;dword &quot;); break;
+  case 64:  ud_asmprintf(u, &quot;qword &quot;); break;
+  case 80:  ud_asmprintf(u, &quot;tword &quot;); break;
+  case 128: ud_asmprintf(u, &quot;oword &quot;); break;
+  case 256: ud_asmprintf(u, &quot;yword &quot;); break;
+  default: break;
</ins><span class="cx">   }
</span><del>-  if (u-&gt;br_far)
-        mkasm(u, &quot;far &quot;); 
</del><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> /* -----------------------------------------------------------------------------
</span><span class="lines">@@ -59,121 +64,63 @@
</span><span class="cx"> static void gen_operand(struct ud* u, struct ud_operand* op, int syn_cast)
</span><span class="cx"> {
</span><span class="cx">   switch(op-&gt;type) {
</span><del>-        case UD_OP_REG:
-                mkasm(u, &quot;%s&quot;, ud_reg_tab[op-&gt;base - UD_R_AL]);
-                break;
</del><ins>+  case UD_OP_REG:
+    ud_asmprintf(u, &quot;%s&quot;, ud_reg_tab[op-&gt;base - UD_R_AL]);
+    break;
</ins><span class="cx"> 
</span><del>-        case UD_OP_MEM: {
</del><ins>+  case UD_OP_MEM:
+    if (syn_cast) {
+      opr_cast(u, op);
+    }
+    ud_asmprintf(u, &quot;[&quot;);
+    if (u-&gt;pfx_seg) {
+      ud_asmprintf(u, &quot;%s:&quot;, ud_reg_tab[u-&gt;pfx_seg - UD_R_AL]);
+    }
+    if (op-&gt;base) {
+      ud_asmprintf(u, &quot;%s&quot;, ud_reg_tab[op-&gt;base - UD_R_AL]);
+    }
+    if (op-&gt;index) {
+      ud_asmprintf(u, &quot;%s%s&quot;, op-&gt;base != UD_NONE? &quot;+&quot; : &quot;&quot;,
+                              ud_reg_tab[op-&gt;index - UD_R_AL]);
+      if (op-&gt;scale) {
+        ud_asmprintf(u, &quot;*%d&quot;, op-&gt;scale);
+      }
+    }
+    if (op-&gt;offset != 0) {
+      ud_syn_print_mem_disp(u, op, (op-&gt;base  != UD_NONE || 
+                                    op-&gt;index != UD_NONE) ? 1 : 0);
+    }
+    ud_asmprintf(u, &quot;]&quot;);
+    break;
+      
+  case UD_OP_IMM:
+    ud_syn_print_imm(u, op);
+    break;
</ins><span class="cx"> 
</span><del>-                int op_f = 0;
</del><span class="cx"> 
</span><del>-                if (syn_cast) 
-                        opr_cast(u, op);
</del><ins>+  case UD_OP_JIMM:
+    ud_syn_print_addr(u, ud_syn_rel_target(u, op));
+    break;
</ins><span class="cx"> 
</span><del>-                mkasm(u, &quot;[&quot;);
-
-                if (u-&gt;pfx_seg)
-                        mkasm(u, &quot;%s:&quot;, ud_reg_tab[u-&gt;pfx_seg - UD_R_AL]);
-
-                if (op-&gt;base) {
-                        mkasm(u, &quot;%s&quot;, ud_reg_tab[op-&gt;base - UD_R_AL]);
-                        op_f = 1;
-                }
-
-                if (op-&gt;index) {
-                        if (op_f)
-                                mkasm(u, &quot;+&quot;);
-                        mkasm(u, &quot;%s&quot;, ud_reg_tab[op-&gt;index - UD_R_AL]);
-                        op_f = 1;
-                }
-
-                if (op-&gt;scale)
-                        mkasm(u, &quot;*%d&quot;, op-&gt;scale);
-
-                if (op-&gt;offset == 8) {
-                        if (op-&gt;lval.sbyte &lt; 0)
-                                mkasm(u, &quot;-0x%x&quot;, -op-&gt;lval.sbyte);
-                        else        mkasm(u, &quot;%s0x%x&quot;, (op_f) ? &quot;+&quot; : &quot;&quot;, op-&gt;lval.sbyte);
-                }
-                else if (op-&gt;offset == 16)
-                        mkasm(u, &quot;%s0x%x&quot;, (op_f) ? &quot;+&quot; : &quot;&quot;, op-&gt;lval.uword);
-                else if (op-&gt;offset == 32) {
-                        if (u-&gt;adr_mode == 64) {
-                                if (op-&gt;lval.sdword &lt; 0)
-                                        mkasm(u, &quot;-0x%x&quot;, -op-&gt;lval.sdword);
-                                else        mkasm(u, &quot;%s0x%x&quot;, (op_f) ? &quot;+&quot; : &quot;&quot;, op-&gt;lval.sdword);
-                        } 
-                        else        mkasm(u, &quot;%s0x%lx&quot;, (op_f) ? &quot;+&quot; : &quot;&quot;, (unsigned long)op-&gt;lval.udword);
-                }
-                else if (op-&gt;offset == 64) 
-                        mkasm(u, &quot;%s0x&quot; FMT64 &quot;x&quot;, (op_f) ? &quot;+&quot; : &quot;&quot;, (uint64_t)op-&gt;lval.uqword);
-
-                mkasm(u, &quot;]&quot;);
-                break;
-        }
-                        
-        case UD_OP_IMM: {
-        int64_t  imm = 0;
-        uint64_t sext_mask = 0xffffffffffffffffull;
-        unsigned sext_size = op-&gt;size;
-
-                if (syn_cast) 
-            opr_cast(u, op);
-        switch (op-&gt;size) {
-            case  8: imm = op-&gt;lval.sbyte; break;
-            case 16: imm = op-&gt;lval.sword; break;
-            case 32: imm = op-&gt;lval.sdword; break;
-            case 64: imm = op-&gt;lval.sqword; break;
-        }
-        if ( P_SEXT( u-&gt;itab_entry-&gt;prefix ) ) {
-            sext_size = u-&gt;operand[ 0 ].size; 
-            if ( u-&gt;mnemonic == UD_Ipush )
-                /* push sign-extends to operand size */
-                sext_size = u-&gt;opr_mode; 
-        }
-        if ( sext_size &lt; 64 )
-            sext_mask = ( 1ull &lt;&lt; sext_size ) - 1;
-        mkasm( u, &quot;0x&quot; FMT64 &quot;x&quot;, (uint64_t)(imm &amp; sext_mask) ); 
-
-                break;
</del><ins>+  case UD_OP_PTR:
+    switch (op-&gt;size) {
+      case 32:
+        ud_asmprintf(u, &quot;word 0x%x:0x%x&quot;, op-&gt;lval.ptr.seg, 
+          op-&gt;lval.ptr.off &amp; 0xFFFF);
+        break;
+      case 48:
+        ud_asmprintf(u, &quot;dword 0x%x:0x%x&quot;, op-&gt;lval.ptr.seg, 
+          op-&gt;lval.ptr.off);
+        break;
</ins><span class="cx">     }
</span><ins>+    break;
</ins><span class="cx"> 
</span><ins>+  case UD_OP_CONST:
+    if (syn_cast) opr_cast(u, op);
+    ud_asmprintf(u, &quot;%d&quot;, op-&gt;lval.udword);
+    break;
</ins><span class="cx"> 
</span><del>-        case UD_OP_JIMM:
-                if (syn_cast) opr_cast(u, op);
-                switch (op-&gt;size) {
-                        case  8:
-                                mkasm(u, &quot;0x&quot; FMT64 &quot;x&quot;, (uint64_t)(u-&gt;pc + op-&gt;lval.sbyte)); 
-                                break;
-                        case 16:
-                                mkasm(u, &quot;0x&quot; FMT64 &quot;x&quot;, (uint64_t)(( u-&gt;pc + op-&gt;lval.sword ) &amp; 0xffff) );
-                                break;
-                        case 32:
-                                mkasm(u, &quot;0x&quot; FMT64 &quot;x&quot;, (uint64_t)(( u-&gt;pc + op-&gt;lval.sdword ) &amp; 0xfffffffful) );
-                                break;
-                        default:break;
-                }
-                break;
-
-        case UD_OP_PTR:
-                switch (op-&gt;size) {
-                        case 32:
-                                mkasm(u, &quot;word 0x%x:0x%x&quot;, op-&gt;lval.ptr.seg, 
-                                        op-&gt;lval.ptr.off &amp; 0xFFFF);
-                                break;
-                        case 48:
-                                mkasm(u, &quot;dword 0x%x:0x%lx&quot;, op-&gt;lval.ptr.seg, 
-                                        (unsigned long)op-&gt;lval.ptr.off);
-                                break;
-                }
-                break;
-
-        case UD_OP_CONST:
-                if (syn_cast) opr_cast(u, op);
-                mkasm(u, &quot;%d&quot;, op-&gt;lval.udword);
-                break;
-
-        default: return;
</del><ins>+  default: return;
</ins><span class="cx">   }
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -181,98 +128,104 @@
</span><span class="cx">  * translates to intel syntax 
</span><span class="cx">  * =============================================================================
</span><span class="cx">  */
</span><del>-extern void ud_translate_intel(struct ud* u)
</del><ins>+extern void
+ud_translate_intel(struct ud* u)
</ins><span class="cx"> {
</span><del>-  /* -- prefixes -- */
-
</del><span class="cx">   /* check if P_OSO prefix is used */
</span><del>-  if (! P_OSO(u-&gt;itab_entry-&gt;prefix) &amp;&amp; u-&gt;pfx_opr) {
-        switch (u-&gt;dis_mode) {
-                case 16: 
-                        mkasm(u, &quot;o32 &quot;);
-                        break;
-                case 32:
-                case 64:
-                         mkasm(u, &quot;o16 &quot;);
-                        break;
-        }
</del><ins>+  if (!P_OSO(u-&gt;itab_entry-&gt;prefix) &amp;&amp; u-&gt;pfx_opr) {
+    switch (u-&gt;dis_mode) {
+    case 16: ud_asmprintf(u, &quot;o32 &quot;); break;
+    case 32:
+    case 64: ud_asmprintf(u, &quot;o16 &quot;); break;
+    }
</ins><span class="cx">   }
</span><span class="cx"> 
</span><span class="cx">   /* check if P_ASO prefix was used */
</span><del>-  if (! P_ASO(u-&gt;itab_entry-&gt;prefix) &amp;&amp; u-&gt;pfx_adr) {
-        switch (u-&gt;dis_mode) {
-                case 16: 
-                        mkasm(u, &quot;a32 &quot;);
-                        break;
-                case 32:
-                         mkasm(u, &quot;a16 &quot;);
-                        break;
-                case 64:
-                         mkasm(u, &quot;a32 &quot;);
-                        break;
-        }
</del><ins>+  if (!P_ASO(u-&gt;itab_entry-&gt;prefix) &amp;&amp; u-&gt;pfx_adr) {
+    switch (u-&gt;dis_mode) {
+    case 16: ud_asmprintf(u, &quot;a32 &quot;); break;
+    case 32: ud_asmprintf(u, &quot;a16 &quot;); break;
+    case 64: ud_asmprintf(u, &quot;a32 &quot;); break;
+    }
</ins><span class="cx">   }
</span><span class="cx"> 
</span><del>-  if ( u-&gt;pfx_seg &amp;&amp;
-        u-&gt;operand[0].type != UD_OP_MEM &amp;&amp;
-        u-&gt;operand[1].type != UD_OP_MEM ) {
-           mkasm(u, &quot;%s &quot;, ud_reg_tab[u-&gt;pfx_seg - UD_R_AL]);
-    }
-  if (u-&gt;pfx_lock)
-        mkasm(u, &quot;lock &quot;);
-  if (u-&gt;pfx_rep)
-        mkasm(u, &quot;rep &quot;);
-  if (u-&gt;pfx_repne)
-        mkasm(u, &quot;repne &quot;);
</del><ins>+  if (u-&gt;pfx_seg &amp;&amp;
+      u-&gt;operand[0].type != UD_OP_MEM &amp;&amp;
+      u-&gt;operand[1].type != UD_OP_MEM ) {
+    ud_asmprintf(u, &quot;%s &quot;, ud_reg_tab[u-&gt;pfx_seg - UD_R_AL]);
+  }
</ins><span class="cx"> 
</span><ins>+  if (u-&gt;pfx_lock) {
+    ud_asmprintf(u, &quot;lock &quot;);
+  }
+  if (u-&gt;pfx_rep) {
+    ud_asmprintf(u, &quot;rep &quot;);
+  } else if (u-&gt;pfx_repe) {
+    ud_asmprintf(u, &quot;repe &quot;);
+  } else if (u-&gt;pfx_repne) {
+    ud_asmprintf(u, &quot;repne &quot;);
+  }
+
</ins><span class="cx">   /* print the instruction mnemonic */
</span><del>-  mkasm(u, &quot;%s &quot;, ud_lookup_mnemonic(u-&gt;mnemonic));
</del><ins>+  ud_asmprintf(u, &quot;%s&quot;, ud_lookup_mnemonic(u-&gt;mnemonic));
</ins><span class="cx"> 
</span><del>-  /* operand 1 */
</del><span class="cx">   if (u-&gt;operand[0].type != UD_NONE) {
</span><span class="cx">     int cast = 0;
</span><del>-    if ( u-&gt;operand[0].type == UD_OP_IMM &amp;&amp;
-         u-&gt;operand[1].type == UD_NONE )
-        cast = u-&gt;c1;
-    if ( u-&gt;operand[0].type == UD_OP_MEM ) {
-        cast = u-&gt;c1;
-        if ( u-&gt;operand[1].type == UD_OP_IMM ||
-             u-&gt;operand[1].type == UD_OP_CONST ) 
-            cast = 1;
-        if ( u-&gt;operand[1].type == UD_NONE )
-            cast = 1;
-        if ( ( u-&gt;operand[0].size != u-&gt;operand[1].size ) &amp;&amp; u-&gt;operand[1].size )
-            cast = 1;
-    } else if ( u-&gt;operand[ 0 ].type == UD_OP_JIMM ) {
-        if ( u-&gt;operand[ 0 ].size &gt; 8 ) cast = 1;
</del><ins>+    ud_asmprintf(u, &quot; &quot;);
+    if (u-&gt;operand[0].type == UD_OP_MEM) {
+      if (u-&gt;operand[1].type == UD_OP_IMM   ||
+          u-&gt;operand[1].type == UD_OP_CONST ||
+          u-&gt;operand[1].type == UD_NONE     ||
+          (u-&gt;operand[0].size != u-&gt;operand[1].size)) {
+          cast = 1;
+      } else if (u-&gt;operand[1].type == UD_OP_REG &amp;&amp;
+                 u-&gt;operand[1].base == UD_R_CL) {
+          switch (u-&gt;mnemonic) {
+          case UD_Ircl:
+          case UD_Irol:
+          case UD_Iror:
+          case UD_Ircr:
+          case UD_Ishl:
+          case UD_Ishr:
+          case UD_Isar:
+              cast = 1;
+              break;
+          default: break;
+          }
+      }
</ins><span class="cx">     }
</span><del>-        gen_operand(u, &amp;u-&gt;operand[0], cast);
</del><ins>+    gen_operand(u, &amp;u-&gt;operand[0], cast);
</ins><span class="cx">   }
</span><del>-  /* operand 2 */
</del><ins>+
</ins><span class="cx">   if (u-&gt;operand[1].type != UD_NONE) {
</span><span class="cx">     int cast = 0;
</span><del>-        mkasm(u, &quot;, &quot;);
-    if ( u-&gt;operand[1].type == UD_OP_MEM ) {
-        cast = u-&gt;c1;
-                
-         if ( u-&gt;operand[0].type != UD_OP_REG )  
-            cast = 1;
-         if ( u-&gt;operand[0].size != u-&gt;operand[1].size &amp;&amp; u-&gt;operand[1].size )
-            cast = 1;
-         if ( u-&gt;operand[0].type == UD_OP_REG &amp;&amp;
-                u-&gt;operand[0].base &gt;= UD_R_ES &amp;&amp;
-                u-&gt;operand[0].base &lt;= UD_R_GS )
-            cast = 0;
</del><ins>+    ud_asmprintf(u, &quot;, &quot;);
+    if (u-&gt;operand[1].type == UD_OP_MEM &amp;&amp;
+        u-&gt;operand[0].size != u-&gt;operand[1].size &amp;&amp; 
+        !ud_opr_is_sreg(&amp;u-&gt;operand[0])) {
+      cast = 1;
</ins><span class="cx">     }
</span><del>-        gen_operand(u, &amp;u-&gt;operand[1], cast );
</del><ins>+    gen_operand(u, &amp;u-&gt;operand[1], cast);
</ins><span class="cx">   }
</span><span class="cx"> 
</span><del>-  /* operand 3 */
</del><span class="cx">   if (u-&gt;operand[2].type != UD_NONE) {
</span><del>-        mkasm(u, &quot;, &quot;);
-        gen_operand(u, &amp;u-&gt;operand[2], u-&gt;c3);
</del><ins>+    int cast = 0;
+    ud_asmprintf(u, &quot;, &quot;);
+    if (u-&gt;operand[2].type == UD_OP_MEM &amp;&amp;
+        u-&gt;operand[2].size != u-&gt;operand[1].size) {
+      cast = 1;
+    }
+    gen_operand(u, &amp;u-&gt;operand[2], cast);
</ins><span class="cx">   }
</span><ins>+
+  if (u-&gt;operand[3].type != UD_NONE) {
+    ud_asmprintf(u, &quot;, &quot;);
+    gen_operand(u, &amp;u-&gt;operand[3], 0);
+  }
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> #endif // USE(UDIS86)
</span><span class="cx"> 
</span><ins>+/*
+vim: set ts=2 sw=2 expandtab
+*/
</ins></span></pre></div>
<a id="trunkSourceJavaScriptCoredisassemblerudis86udis86_sync"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/disassembler/udis86/udis86_syn.c (198831 => 198832)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/disassembler/udis86/udis86_syn.c        2016-03-30 07:14:10 UTC (rev 198831)
+++ trunk/Source/JavaScriptCore/disassembler/udis86/udis86_syn.c        2016-03-30 07:17:14 UTC (rev 198832)
</span><span class="lines">@@ -1,6 +1,6 @@
</span><span class="cx"> /* udis86 - libudis86/syn.c
</span><span class="cx">  *
</span><del>- * Copyright (c) 2002-2009 Vivek Thampi
</del><ins>+ * Copyright (c) 2002-2013 Vivek Thampi
</ins><span class="cx">  * All rights reserved.
</span><span class="cx">  * 
</span><span class="cx">  * Redistribution and use in source and binary forms, with or without modification, 
</span><span class="lines">@@ -28,59 +28,192 @@
</span><span class="cx"> 
</span><span class="cx"> #if USE(UDIS86)
</span><span class="cx"> 
</span><del>-/* -----------------------------------------------------------------------------
- * Intel Register Table - Order Matters (types.h)!
- * -----------------------------------------------------------------------------
</del><ins>+#include &quot;udis86_types.h&quot;
+#include &quot;udis86_decode.h&quot;
+#include &quot;udis86_syn.h&quot;
+#include &quot;udis86_udint.h&quot;
+
+/* 
+ * Register Table - Order Matters (types.h)!
+ *
</ins><span class="cx">  */
</span><span class="cx"> const char* ud_reg_tab[] = 
</span><span class="cx"> {
</span><del>-  &quot;al&quot;,                &quot;cl&quot;,                &quot;dl&quot;,                &quot;bl&quot;,
-  &quot;ah&quot;,                &quot;ch&quot;,                &quot;dh&quot;,                &quot;bh&quot;,
-  &quot;spl&quot;,        &quot;bpl&quot;,                &quot;sil&quot;,                &quot;dil&quot;,
-  &quot;r8b&quot;,        &quot;r9b&quot;,                &quot;r10b&quot;,                &quot;r11b&quot;,
-  &quot;r12b&quot;,        &quot;r13b&quot;,                &quot;r14b&quot;,                &quot;r15b&quot;,
</del><ins>+  &quot;al&quot;,   &quot;cl&quot;,   &quot;dl&quot;,   &quot;bl&quot;,
+  &quot;ah&quot;,   &quot;ch&quot;,   &quot;dh&quot;,   &quot;bh&quot;,
+  &quot;spl&quot;,  &quot;bpl&quot;,  &quot;sil&quot;,  &quot;dil&quot;,
+  &quot;r8b&quot;,  &quot;r9b&quot;,  &quot;r10b&quot;, &quot;r11b&quot;,
+  &quot;r12b&quot;, &quot;r13b&quot;, &quot;r14b&quot;, &quot;r15b&quot;,
</ins><span class="cx"> 
</span><del>-  &quot;ax&quot;,                &quot;cx&quot;,                &quot;dx&quot;,                &quot;bx&quot;,
-  &quot;sp&quot;,                &quot;bp&quot;,                &quot;si&quot;,                &quot;di&quot;,
-  &quot;r8w&quot;,        &quot;r9w&quot;,                &quot;r10w&quot;,                &quot;r11w&quot;,
-  &quot;r12w&quot;,        &quot;r13W&quot;        ,        &quot;r14w&quot;,                &quot;r15w&quot;,
-        
-  &quot;eax&quot;,        &quot;ecx&quot;,                &quot;edx&quot;,                &quot;ebx&quot;,
-  &quot;esp&quot;,        &quot;ebp&quot;,                &quot;esi&quot;,                &quot;edi&quot;,
-  &quot;r8d&quot;,        &quot;r9d&quot;,                &quot;r10d&quot;,                &quot;r11d&quot;,
-  &quot;r12d&quot;,        &quot;r13d&quot;,                &quot;r14d&quot;,                &quot;r15d&quot;,
-        
-  &quot;rax&quot;,        &quot;rcx&quot;,                &quot;rdx&quot;,                &quot;rbx&quot;,
-  &quot;rsp&quot;,        &quot;rbp&quot;,                &quot;rsi&quot;,                &quot;rdi&quot;,
-  &quot;r8&quot;,                &quot;r9&quot;,                &quot;r10&quot;,                &quot;r11&quot;,
-  &quot;r12&quot;,        &quot;r13&quot;,                &quot;r14&quot;,                &quot;r15&quot;,
</del><ins>+  &quot;ax&quot;,   &quot;cx&quot;,   &quot;dx&quot;,   &quot;bx&quot;,
+  &quot;sp&quot;,   &quot;bp&quot;,   &quot;si&quot;,   &quot;di&quot;,
+  &quot;r8w&quot;,  &quot;r9w&quot;,  &quot;r10w&quot;, &quot;r11w&quot;,
+  &quot;r12w&quot;, &quot;r13w&quot;, &quot;r14w&quot;, &quot;r15w&quot;,
+  
+  &quot;eax&quot;,  &quot;ecx&quot;,  &quot;edx&quot;,  &quot;ebx&quot;,
+  &quot;esp&quot;,  &quot;ebp&quot;,  &quot;esi&quot;,  &quot;edi&quot;,
+  &quot;r8d&quot;,  &quot;r9d&quot;,  &quot;r10d&quot;, &quot;r11d&quot;,
+  &quot;r12d&quot;, &quot;r13d&quot;, &quot;r14d&quot;, &quot;r15d&quot;,
+  
+  &quot;rax&quot;,  &quot;rcx&quot;,  &quot;rdx&quot;,  &quot;rbx&quot;,
+  &quot;rsp&quot;,  &quot;rbp&quot;,  &quot;rsi&quot;,  &quot;rdi&quot;,
+  &quot;r8&quot;,   &quot;r9&quot;,   &quot;r10&quot;,  &quot;r11&quot;,
+  &quot;r12&quot;,  &quot;r13&quot;,  &quot;r14&quot;,  &quot;r15&quot;,
</ins><span class="cx"> 
</span><del>-  &quot;es&quot;,                &quot;cs&quot;,                &quot;ss&quot;,                &quot;ds&quot;,
-  &quot;fs&quot;,                &quot;gs&quot;,        
</del><ins>+  &quot;es&quot;,   &quot;cs&quot;,   &quot;ss&quot;,   &quot;ds&quot;,
+  &quot;fs&quot;,   &quot;gs&quot;, 
</ins><span class="cx"> 
</span><del>-  &quot;cr0&quot;,        &quot;cr1&quot;,                &quot;cr2&quot;,                &quot;cr3&quot;,
-  &quot;cr4&quot;,        &quot;cr5&quot;,                &quot;cr6&quot;,                &quot;cr7&quot;,
-  &quot;cr8&quot;,        &quot;cr9&quot;,                &quot;cr10&quot;,                &quot;cr11&quot;,
-  &quot;cr12&quot;,        &quot;cr13&quot;,                &quot;cr14&quot;,                &quot;cr15&quot;,
-        
-  &quot;dr0&quot;,        &quot;dr1&quot;,                &quot;dr2&quot;,                &quot;dr3&quot;,
-  &quot;dr4&quot;,        &quot;dr5&quot;,                &quot;dr6&quot;,                &quot;dr7&quot;,
-  &quot;dr8&quot;,        &quot;dr9&quot;,                &quot;dr10&quot;,                &quot;dr11&quot;,
-  &quot;dr12&quot;,        &quot;dr13&quot;,                &quot;dr14&quot;,                &quot;dr15&quot;,
</del><ins>+  &quot;cr0&quot;,  &quot;cr1&quot;,  &quot;cr2&quot;,  &quot;cr3&quot;,
+  &quot;cr4&quot;,  &quot;cr5&quot;,  &quot;cr6&quot;,  &quot;cr7&quot;,
+  &quot;cr8&quot;,  &quot;cr9&quot;,  &quot;cr10&quot;, &quot;cr11&quot;,
+  &quot;cr12&quot;, &quot;cr13&quot;, &quot;cr14&quot;, &quot;cr15&quot;,
+  
+  &quot;dr0&quot;,  &quot;dr1&quot;,  &quot;dr2&quot;,  &quot;dr3&quot;,
+  &quot;dr4&quot;,  &quot;dr5&quot;,  &quot;dr6&quot;,  &quot;dr7&quot;,
+  &quot;dr8&quot;,  &quot;dr9&quot;,  &quot;dr10&quot;, &quot;dr11&quot;,
+  &quot;dr12&quot;, &quot;dr13&quot;, &quot;dr14&quot;, &quot;dr15&quot;,
</ins><span class="cx"> 
</span><del>-  &quot;mm0&quot;,        &quot;mm1&quot;,                &quot;mm2&quot;,                &quot;mm3&quot;,
-  &quot;mm4&quot;,        &quot;mm5&quot;,                &quot;mm6&quot;,                &quot;mm7&quot;,
</del><ins>+  &quot;mm0&quot;,  &quot;mm1&quot;,  &quot;mm2&quot;,  &quot;mm3&quot;,
+  &quot;mm4&quot;,  &quot;mm5&quot;,  &quot;mm6&quot;,  &quot;mm7&quot;,
</ins><span class="cx"> 
</span><del>-  &quot;st0&quot;,        &quot;st1&quot;,                &quot;st2&quot;,                &quot;st3&quot;,
-  &quot;st4&quot;,        &quot;st5&quot;,                &quot;st6&quot;,                &quot;st7&quot;, 
</del><ins>+  &quot;st0&quot;,  &quot;st1&quot;,  &quot;st2&quot;,  &quot;st3&quot;,
+  &quot;st4&quot;,  &quot;st5&quot;,  &quot;st6&quot;,  &quot;st7&quot;, 
</ins><span class="cx"> 
</span><del>-  &quot;xmm0&quot;,        &quot;xmm1&quot;,                &quot;xmm2&quot;,                &quot;xmm3&quot;,
-  &quot;xmm4&quot;,        &quot;xmm5&quot;,                &quot;xmm6&quot;,                &quot;xmm7&quot;,
-  &quot;xmm8&quot;,        &quot;xmm9&quot;,                &quot;xmm10&quot;,        &quot;xmm11&quot;,
-  &quot;xmm12&quot;,        &quot;xmm13&quot;,        &quot;xmm14&quot;,        &quot;xmm15&quot;,
</del><ins>+  &quot;xmm0&quot;, &quot;xmm1&quot;, &quot;xmm2&quot;, &quot;xmm3&quot;,
+  &quot;xmm4&quot;, &quot;xmm5&quot;, &quot;xmm6&quot;, &quot;xmm7&quot;,
+  &quot;xmm8&quot;, &quot;xmm9&quot;, &quot;xmm10&quot;, &quot;xmm11&quot;,
+  &quot;xmm12&quot;, &quot;xmm13&quot;, &quot;xmm14&quot;, &quot;xmm15&quot;,
</ins><span class="cx"> 
</span><ins>+  &quot;ymm0&quot;, &quot;ymm1&quot;, &quot;ymm2&quot;,   &quot;ymm3&quot;,
+  &quot;ymm4&quot;, &quot;ymm5&quot;, &quot;ymm6&quot;,   &quot;ymm7&quot;,
+  &quot;ymm8&quot;, &quot;ymm9&quot;, &quot;ymm10&quot;,  &quot;ymm11&quot;,
+  &quot;ymm12&quot;, &quot;ymm13&quot;, &quot;ymm14&quot;, &quot;ymm15&quot;,
+
</ins><span class="cx">   &quot;rip&quot;
</span><span class="cx"> };
</span><span class="cx"> 
</span><ins>+
+uint64_t
+ud_syn_rel_target(struct ud *u, struct ud_operand *opr)
+{
+  const uint64_t trunc_mask = 0xffffffffffffffffull &gt;&gt; (64 - u-&gt;opr_mode);
+  switch (opr-&gt;size) {
+  case 8 : return (u-&gt;pc + opr-&gt;lval.sbyte)  &amp; trunc_mask;
+  case 16: return (u-&gt;pc + opr-&gt;lval.sword)  &amp; trunc_mask;
+  case 32: return (u-&gt;pc + opr-&gt;lval.sdword) &amp; trunc_mask;
+  default: UD_ASSERT(!&quot;invalid relative offset size.&quot;);
+    return 0ull;
+  }
+}
+
+
+/*
+ * asmprintf
+ *    Printf style function for printing translated assembly
+ *    output. Returns the number of characters written and
+ *    moves the buffer pointer forward. On an overflow,
+ *    returns a negative number and truncates the output.
+ */
+int
+ud_asmprintf(struct ud *u, const char *fmt, ...)
+{
+  int ret;
+  int avail;
+  va_list ap;
+  va_start(ap, fmt);
+  avail = u-&gt;asm_buf_size - u-&gt;asm_buf_fill - 1 /* nullchar */;
+  ret = vsnprintf((char*) u-&gt;asm_buf + u-&gt;asm_buf_fill, avail, fmt, ap);
+  if (ret &lt; 0 || ret &gt; avail) {
+      u-&gt;asm_buf_fill = u-&gt;asm_buf_size - 1;
+  } else {
+      u-&gt;asm_buf_fill += ret;
+  }
+  va_end(ap);
+  return ret;
+}
+
+
+void
+ud_syn_print_addr(struct ud *u, uint64_t addr)
+{
+  const char *name = NULL;
+  if (u-&gt;sym_resolver) {
+    int64_t offset = 0;
+    name = u-&gt;sym_resolver(u, addr, &amp;offset);
+    if (name) {
+      if (offset) {
+        ud_asmprintf(u, &quot;%s%+&quot; FMT64 &quot;d&quot;, name, offset);
+      } else {
+        ud_asmprintf(u, &quot;%s&quot;, name);
+      }
+      return;
+    }
+  }
+  ud_asmprintf(u, &quot;0x%&quot; FMT64 &quot;x&quot;, addr);
+}
+
+
+void
+ud_syn_print_imm(struct ud* u, const struct ud_operand *op)
+{
+  uint64_t v;
+  if (op-&gt;_oprcode == OP_sI &amp;&amp; op-&gt;size != u-&gt;opr_mode) {
+    if (op-&gt;size == 8) {
+      v = (int64_t)op-&gt;lval.sbyte;
+    } else {
+      UD_ASSERT(op-&gt;size == 32);
+      v = (int64_t)op-&gt;lval.sdword;
+    }
+    if (u-&gt;opr_mode &lt; 64) {
+      v = v &amp; ((1ull &lt;&lt; u-&gt;opr_mode) - 1ull);
+    }
+  } else {
+    switch (op-&gt;size) {
+    case 8 : v = op-&gt;lval.ubyte;  break;
+    case 16: v = op-&gt;lval.uword;  break;
+    case 32: v = op-&gt;lval.udword; break;
+    case 64: v = op-&gt;lval.uqword; break;
+    default: UD_ASSERT(!&quot;invalid offset&quot;); v = 0; /* keep cc happy */
+    }
+  }
+  ud_asmprintf(u, &quot;0x%&quot; FMT64 &quot;x&quot;, v);
+}
+
+
+void
+ud_syn_print_mem_disp(struct ud* u, const struct ud_operand *op, int sign)
+{
+  UD_ASSERT(op-&gt;offset != 0);
+ if (op-&gt;base == UD_NONE &amp;&amp; op-&gt;index == UD_NONE) {
+    uint64_t v;
+    UD_ASSERT(op-&gt;scale == UD_NONE &amp;&amp; op-&gt;offset != 8);
+    /* unsigned mem-offset */
+    switch (op-&gt;offset) {
+    case 16: v = op-&gt;lval.uword;  break;
+    case 32: v = op-&gt;lval.udword; break;
+    case 64: v = op-&gt;lval.uqword; break;
+    default: UD_ASSERT(!&quot;invalid offset&quot;); v = 0; /* keep cc happy */
+    }
+    ud_asmprintf(u, &quot;0x%&quot; FMT64 &quot;x&quot;, v);
+  } else {
+    int64_t v;
+    UD_ASSERT(op-&gt;offset != 64);
+    switch (op-&gt;offset) {
+    case 8 : v = op-&gt;lval.sbyte;  break;
+    case 16: v = op-&gt;lval.sword;  break;
+    case 32: v = op-&gt;lval.sdword; break;
+    default: UD_ASSERT(!&quot;invalid offset&quot;); v = 0; /* keep cc happy */
+    }
+    if (v &lt; 0) {
+      ud_asmprintf(u, &quot;-0x%&quot; FMT64 &quot;x&quot;, -v);
+    } else if (v &gt; 0) {
+      ud_asmprintf(u, &quot;%s0x%&quot; FMT64 &quot;x&quot;, sign? &quot;+&quot; : &quot;&quot;, v);
+    }
+  }
+}
+
</ins><span class="cx"> #endif // USE(UDIS86)
</span><span class="cx"> 
</span><ins>+/*
+vim: set ts=2 sw=2 expandtab
+*/
</ins></span></pre></div>
<a id="trunkSourceJavaScriptCoredisassemblerudis86udis86_synh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/disassembler/udis86/udis86_syn.h (198831 => 198832)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/disassembler/udis86/udis86_syn.h        2016-03-30 07:14:10 UTC (rev 198831)
+++ trunk/Source/JavaScriptCore/disassembler/udis86/udis86_syn.h        2016-03-30 07:17:14 UTC (rev 198832)
</span><span class="lines">@@ -27,21 +27,27 @@
</span><span class="cx"> #define UD_SYN_H
</span><span class="cx"> 
</span><span class="cx"> #include &quot;udis86_types.h&quot;
</span><del>-#include &lt;wtf/Assertions.h&gt;
-
</del><span class="cx"> #ifndef __UD_STANDALONE__
</span><span class="cx"> # include &lt;stdarg.h&gt;
</span><span class="cx"> #endif /* __UD_STANDALONE__ */
</span><span class="cx"> 
</span><span class="cx"> extern const char* ud_reg_tab[];
</span><span class="cx"> 
</span><del>-static void mkasm(struct ud* u, const char* fmt, ...) WTF_ATTRIBUTE_PRINTF(2, 3);
-static void mkasm(struct ud* u, const char* fmt, ...)
-{
-  va_list ap;
-  va_start(ap, fmt);
-  u-&gt;insn_fill += vsnprintf((char*) u-&gt;insn_buffer + u-&gt;insn_fill, UD_STRING_BUFFER_SIZE - u-&gt;insn_fill, fmt, ap);
-  va_end(ap);
-}
</del><ins>+uint64_t ud_syn_rel_target(struct ud*, struct ud_operand*);
</ins><span class="cx"> 
</span><ins>+#ifdef __GNUC__
+int ud_asmprintf(struct ud *u, const char *fmt, ...)
+    __attribute__ ((format (printf, 2, 3)));
+#else
+int ud_asmprintf(struct ud *u, const char *fmt, ...);
</ins><span class="cx"> #endif
</span><ins>+
+void ud_syn_print_addr(struct ud *u, uint64_t addr);
+void ud_syn_print_imm(struct ud* u, const struct ud_operand *op);
+void ud_syn_print_mem_disp(struct ud* u, const struct ud_operand *, int sign);
+
+#endif /* UD_SYN_H */
+
+/*
+vim: set ts=2 sw=2 expandtab
+*/
</ins></span></pre></div>
<a id="trunkSourceJavaScriptCoredisassemblerudis86udis86_typesh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/disassembler/udis86/udis86_types.h (198831 => 198832)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/disassembler/udis86/udis86_types.h        2016-03-30 07:14:10 UTC (rev 198831)
+++ trunk/Source/JavaScriptCore/disassembler/udis86/udis86_types.h        2016-03-30 07:17:14 UTC (rev 198832)
</span><span class="lines">@@ -1,6 +1,6 @@
</span><span class="cx"> /* udis86 - libudis86/types.h
</span><span class="cx">  *
</span><del>- * Copyright (c) 2002-2009 Vivek Thampi
</del><ins>+ * Copyright (c) 2002-2013 Vivek Thampi
</ins><span class="cx">  * All rights reserved.
</span><span class="cx">  * 
</span><span class="cx">  * Redistribution and use in source and binary forms, with or without modification, 
</span><span class="lines">@@ -26,9 +26,23 @@
</span><span class="cx"> #ifndef UD_TYPES_H
</span><span class="cx"> #define UD_TYPES_H
</span><span class="cx"> 
</span><del>-#ifndef __UD_STANDALONE__
</del><ins>+#ifdef __KERNEL__
+  /* 
+   * -D__KERNEL__ is automatically passed on the command line when
+   * building something as part of the Linux kernel. Assume standalone
+   * mode.
+   */
+# include &lt;linux/kernel.h&gt;
+# include &lt;linux/string.h&gt;
+# ifndef __UD_STANDALONE__
+#  define __UD_STANDALONE__ 1
+# endif
+#endif /* __KERNEL__ */
+
+#if !defined(__UD_STANDALONE__)
+# include &lt;stdint.h&gt;
</ins><span class="cx"> # include &lt;stdio.h&gt;
</span><del>-#endif /* __UD_STANDALONE__ */
</del><ins>+#endif
</ins><span class="cx"> 
</span><span class="cx"> /* gcc specific extensions */
</span><span class="cx"> #ifdef __GNUC__
</span><span class="lines">@@ -37,26 +51,6 @@
</span><span class="cx"> # define UD_ATTR_PACKED
</span><span class="cx"> #endif /* UD_ATTR_PACKED */
</span><span class="cx"> 
</span><del>-#ifdef _MSC_VER
-# define FMT64 &quot;%I64&quot;
-  typedef unsigned __int8 uint8_t;
-  typedef unsigned __int16 uint16_t;
-  typedef unsigned __int32 uint32_t;
-  typedef unsigned __int64 uint64_t;
-  typedef __int8 int8_t;
-  typedef __int16 int16_t;
-  typedef __int32 int32_t;
-  typedef __int64 int64_t;
-#else
-# if defined(__GNU_LIBRARY__) &amp;&amp; defined(__WORDSIZE) &amp;&amp; (__WORDSIZE == 64)
-#  define FMT64 &quot;%l&quot;
-# else
-#  define FMT64 &quot;%ll&quot;
-# endif
-# ifndef __UD_STANDALONE__
-#  include &lt;inttypes.h&gt;
-# endif /* __UD_STANDALONE__ */
-#endif
</del><span class="cx"> 
</span><span class="cx"> /* -----------------------------------------------------------------------------
</span><span class="cx">  * All possible &quot;types&quot; of objects in udis86. Order is Important!
</span><span class="lines">@@ -67,152 +61,176 @@
</span><span class="cx">   UD_NONE,
</span><span class="cx"> 
</span><span class="cx">   /* 8 bit GPRs */
</span><del>-  UD_R_AL,        UD_R_CL,        UD_R_DL,        UD_R_BL,
-  UD_R_AH,        UD_R_CH,        UD_R_DH,        UD_R_BH,
-  UD_R_SPL,        UD_R_BPL,        UD_R_SIL,        UD_R_DIL,
-  UD_R_R8B,        UD_R_R9B,        UD_R_R10B,        UD_R_R11B,
-  UD_R_R12B,        UD_R_R13B,        UD_R_R14B,        UD_R_R15B,
</del><ins>+  UD_R_AL,  UD_R_CL,  UD_R_DL,  UD_R_BL,
+  UD_R_AH,  UD_R_CH,  UD_R_DH,  UD_R_BH,
+  UD_R_SPL, UD_R_BPL, UD_R_SIL, UD_R_DIL,
+  UD_R_R8B, UD_R_R9B, UD_R_R10B,  UD_R_R11B,
+  UD_R_R12B,  UD_R_R13B,  UD_R_R14B,  UD_R_R15B,
</ins><span class="cx"> 
</span><span class="cx">   /* 16 bit GPRs */
</span><del>-  UD_R_AX,        UD_R_CX,        UD_R_DX,        UD_R_BX,
-  UD_R_SP,        UD_R_BP,        UD_R_SI,        UD_R_DI,
-  UD_R_R8W,        UD_R_R9W,        UD_R_R10W,        UD_R_R11W,
-  UD_R_R12W,        UD_R_R13W,        UD_R_R14W,        UD_R_R15W,
-        
</del><ins>+  UD_R_AX,  UD_R_CX,  UD_R_DX,  UD_R_BX,
+  UD_R_SP,  UD_R_BP,  UD_R_SI,  UD_R_DI,
+  UD_R_R8W, UD_R_R9W, UD_R_R10W,  UD_R_R11W,
+  UD_R_R12W,  UD_R_R13W,  UD_R_R14W,  UD_R_R15W,
+  
</ins><span class="cx">   /* 32 bit GPRs */
</span><del>-  UD_R_EAX,        UD_R_ECX,        UD_R_EDX,        UD_R_EBX,
-  UD_R_ESP,        UD_R_EBP,        UD_R_ESI,        UD_R_EDI,
-  UD_R_R8D,        UD_R_R9D,        UD_R_R10D,        UD_R_R11D,
-  UD_R_R12D,        UD_R_R13D,        UD_R_R14D,        UD_R_R15D,
-        
</del><ins>+  UD_R_EAX, UD_R_ECX, UD_R_EDX, UD_R_EBX,
+  UD_R_ESP, UD_R_EBP, UD_R_ESI, UD_R_EDI,
+  UD_R_R8D, UD_R_R9D, UD_R_R10D,  UD_R_R11D,
+  UD_R_R12D,  UD_R_R13D,  UD_R_R14D,  UD_R_R15D,
+  
</ins><span class="cx">   /* 64 bit GPRs */
</span><del>-  UD_R_RAX,        UD_R_RCX,        UD_R_RDX,        UD_R_RBX,
-  UD_R_RSP,        UD_R_RBP,        UD_R_RSI,        UD_R_RDI,
-  UD_R_R8,        UD_R_R9,        UD_R_R10,        UD_R_R11,
-  UD_R_R12,        UD_R_R13,        UD_R_R14,        UD_R_R15,
</del><ins>+  UD_R_RAX, UD_R_RCX, UD_R_RDX, UD_R_RBX,
+  UD_R_RSP, UD_R_RBP, UD_R_RSI, UD_R_RDI,
+  UD_R_R8,  UD_R_R9,  UD_R_R10, UD_R_R11,
+  UD_R_R12, UD_R_R13, UD_R_R14, UD_R_R15,
</ins><span class="cx"> 
</span><span class="cx">   /* segment registers */
</span><del>-  UD_R_ES,        UD_R_CS,        UD_R_SS,        UD_R_DS,
-  UD_R_FS,        UD_R_GS,        
</del><ins>+  UD_R_ES,  UD_R_CS,  UD_R_SS,  UD_R_DS,
+  UD_R_FS,  UD_R_GS,  
</ins><span class="cx"> 
</span><span class="cx">   /* control registers*/
</span><del>-  UD_R_CR0,        UD_R_CR1,        UD_R_CR2,        UD_R_CR3,
-  UD_R_CR4,        UD_R_CR5,        UD_R_CR6,        UD_R_CR7,
-  UD_R_CR8,        UD_R_CR9,        UD_R_CR10,        UD_R_CR11,
-  UD_R_CR12,        UD_R_CR13,        UD_R_CR14,        UD_R_CR15,
-        
</del><ins>+  UD_R_CR0, UD_R_CR1, UD_R_CR2, UD_R_CR3,
+  UD_R_CR4, UD_R_CR5, UD_R_CR6, UD_R_CR7,
+  UD_R_CR8, UD_R_CR9, UD_R_CR10,  UD_R_CR11,
+  UD_R_CR12,  UD_R_CR13,  UD_R_CR14,  UD_R_CR15,
+  
</ins><span class="cx">   /* debug registers */
</span><del>-  UD_R_DR0,        UD_R_DR1,        UD_R_DR2,        UD_R_DR3,
-  UD_R_DR4,        UD_R_DR5,        UD_R_DR6,        UD_R_DR7,
-  UD_R_DR8,        UD_R_DR9,        UD_R_DR10,        UD_R_DR11,
-  UD_R_DR12,        UD_R_DR13,        UD_R_DR14,        UD_R_DR15,
</del><ins>+  UD_R_DR0, UD_R_DR1, UD_R_DR2, UD_R_DR3,
+  UD_R_DR4, UD_R_DR5, UD_R_DR6, UD_R_DR7,
+  UD_R_DR8, UD_R_DR9, UD_R_DR10,  UD_R_DR11,
+  UD_R_DR12,  UD_R_DR13,  UD_R_DR14,  UD_R_DR15,
</ins><span class="cx"> 
</span><span class="cx">   /* mmx registers */
</span><del>-  UD_R_MM0,        UD_R_MM1,        UD_R_MM2,        UD_R_MM3,
-  UD_R_MM4,        UD_R_MM5,        UD_R_MM6,        UD_R_MM7,
</del><ins>+  UD_R_MM0, UD_R_MM1, UD_R_MM2, UD_R_MM3,
+  UD_R_MM4, UD_R_MM5, UD_R_MM6, UD_R_MM7,
</ins><span class="cx"> 
</span><span class="cx">   /* x87 registers */
</span><del>-  UD_R_ST0,        UD_R_ST1,        UD_R_ST2,        UD_R_ST3,
-  UD_R_ST4,        UD_R_ST5,        UD_R_ST6,        UD_R_ST7, 
</del><ins>+  UD_R_ST0, UD_R_ST1, UD_R_ST2, UD_R_ST3,
+  UD_R_ST4, UD_R_ST5, UD_R_ST6, UD_R_ST7, 
</ins><span class="cx"> 
</span><span class="cx">   /* extended multimedia registers */
</span><del>-  UD_R_XMM0,        UD_R_XMM1,        UD_R_XMM2,        UD_R_XMM3,
-  UD_R_XMM4,        UD_R_XMM5,        UD_R_XMM6,        UD_R_XMM7,
-  UD_R_XMM8,        UD_R_XMM9,        UD_R_XMM10,        UD_R_XMM11,
-  UD_R_XMM12,        UD_R_XMM13,        UD_R_XMM14,        UD_R_XMM15,
</del><ins>+  UD_R_XMM0,  UD_R_XMM1,  UD_R_XMM2,  UD_R_XMM3,
+  UD_R_XMM4,  UD_R_XMM5,  UD_R_XMM6,  UD_R_XMM7,
+  UD_R_XMM8,  UD_R_XMM9,  UD_R_XMM10, UD_R_XMM11,
+  UD_R_XMM12, UD_R_XMM13, UD_R_XMM14, UD_R_XMM15,
</ins><span class="cx"> 
</span><ins>+  /* 256B multimedia registers */
+  UD_R_YMM0,  UD_R_YMM1,  UD_R_YMM2,  UD_R_YMM3,
+  UD_R_YMM4,  UD_R_YMM5,  UD_R_YMM6,  UD_R_YMM7,
+  UD_R_YMM8,  UD_R_YMM9,  UD_R_YMM10, UD_R_YMM11,
+  UD_R_YMM12, UD_R_YMM13, UD_R_YMM14, UD_R_YMM15,
+
</ins><span class="cx">   UD_R_RIP,
</span><span class="cx"> 
</span><span class="cx">   /* Operand Types */
</span><del>-  UD_OP_REG,        UD_OP_MEM,        UD_OP_PTR,        UD_OP_IMM,        
-  UD_OP_JIMM,        UD_OP_CONST
</del><ins>+  UD_OP_REG,  UD_OP_MEM,  UD_OP_PTR,  UD_OP_IMM,  
+  UD_OP_JIMM, UD_OP_CONST
</ins><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> #include &quot;udis86_itab.h&quot;
</span><span class="cx"> 
</span><ins>+union ud_lval {
+  int8_t     sbyte;
+  uint8_t    ubyte;
+  int16_t    sword;
+  uint16_t   uword;
+  int32_t    sdword;
+  uint32_t   udword;
+  int64_t    sqword;
+  uint64_t   uqword;
+  struct {
+    uint16_t seg;
+    uint32_t off;
+  } ptr;
+};
+
</ins><span class="cx"> /* -----------------------------------------------------------------------------
</span><span class="cx">  * struct ud_operand - Disassembled instruction Operand.
</span><span class="cx">  * -----------------------------------------------------------------------------
</span><span class="cx">  */
</span><del>-struct ud_operand 
-{
-  enum ud_type                type;
-  uint8_t                size;
-  union {
-        int8_t                sbyte;
-        uint8_t                ubyte;
-        int16_t                sword;
-        uint16_t        uword;
-        int32_t                sdword;
-        uint32_t        udword;
-        int64_t                sqword;
-        uint64_t        uqword;
-
-        struct {
-                uint16_t seg;
-                uint32_t off;
-        } ptr;
-  } lval;
-
-  enum ud_type                base;
-  enum ud_type                index;
-  uint8_t                offset;
-  uint8_t                scale;        
</del><ins>+struct ud_operand {
+  enum ud_type    type;
+  uint16_t        size;
+  enum ud_type    base;
+  enum ud_type    index;
+  uint8_t         scale;  
+  uint8_t         offset;
+  union ud_lval   lval;
+  /*
+   * internal use only
+   */
+  uint64_t        _legacy; /* this will be removed in 1.8 */
+  uint8_t         _oprcode;
</ins><span class="cx"> };
</span><span class="cx"> 
</span><del>-#define UD_STRING_BUFFER_SIZE 64
-
</del><span class="cx"> /* -----------------------------------------------------------------------------
</span><span class="cx">  * struct ud - The udis86 object.
</span><span class="cx">  * -----------------------------------------------------------------------------
</span><span class="cx">  */
</span><span class="cx"> struct ud
</span><span class="cx"> {
</span><del>-  int                         (*inp_hook) (struct ud*);
-  uint8_t                inp_curr;
-  uint8_t                inp_fill;
</del><ins>+  /*
+   * input buffering
+   */
+  int       (*inp_hook) (struct ud*);
</ins><span class="cx"> #ifndef __UD_STANDALONE__
</span><del>-  FILE*                        inp_file;
</del><ins>+  FILE*     inp_file;
</ins><span class="cx"> #endif
</span><del>-  uint8_t                inp_ctr;
-  uint8_t*                inp_buff;
-  uint8_t*                inp_buff_end;
-  uint8_t                inp_end;
-  void                        (*translator)(struct ud*);
-  uint64_t                insn_offset;
-  char                        insn_hexcode[32];
-  char                        insn_buffer[UD_STRING_BUFFER_SIZE];
-  unsigned int                insn_fill;
-  uint8_t                dis_mode;
-  uint64_t                pc;
-  uint8_t                vendor;
-  struct map_entry*        mapen;
-  enum ud_mnemonic_code        mnemonic;
-  struct ud_operand        operand[3];
-  uint8_t                error;
-  uint8_t                 pfx_rex;
-  uint8_t                 pfx_seg;
-  uint8_t                 pfx_opr;
-  uint8_t                 pfx_adr;
-  uint8_t                 pfx_lock;
-  uint8_t                 pfx_rep;
-  uint8_t                 pfx_repe;
-  uint8_t                 pfx_repne;
-  uint8_t                 pfx_insn;
-  uint8_t                default64;
-  uint8_t                opr_mode;
-  uint8_t                adr_mode;
-  uint8_t                br_far;
-  uint8_t                br_near;
-  uint8_t                implicit_addr;
-  uint8_t                c1;
-  uint8_t                c2;
-  uint8_t                c3;
-  uint8_t                 inp_cache[256];
-  uint8_t                inp_sess[64];
-  uint8_t       have_modrm;
-  uint8_t       modrm;
-  void *        user_opaque_data;
</del><ins>+  const uint8_t* inp_buf;
+  size_t    inp_buf_size;
+  size_t    inp_buf_index;
+  uint8_t   inp_curr;
+  size_t    inp_ctr;
+  uint8_t   inp_sess[64];
+  int       inp_end;
+  int       inp_peek;
+
+  void      (*translator)(struct ud*);
+  uint64_t  insn_offset;
+  char      insn_hexcode[64];
+
+  /*
+   * Assembly output buffer
+   */
+  char     *asm_buf;
+  size_t    asm_buf_size;
+  size_t    asm_buf_fill;
+  char      asm_buf_int[128];
+
+  /*
+   * Symbol resolver for use in the translation phase.
+   */
+  const char* (*sym_resolver)(struct ud*, uint64_t addr, int64_t *offset);
+
+  uint8_t   dis_mode;
+  uint64_t  pc;
+  uint8_t   vendor;
+  enum ud_mnemonic_code mnemonic;
+  struct ud_operand operand[4];
+  uint8_t   error;
+  uint8_t   _rex;
+  uint8_t   pfx_rex;
+  uint8_t   pfx_seg;
+  uint8_t   pfx_opr;
+  uint8_t   pfx_adr;
+  uint8_t   pfx_lock;
+  uint8_t   pfx_str;
+  uint8_t   pfx_rep;
+  uint8_t   pfx_repe;
+  uint8_t   pfx_repne;
+  uint8_t   opr_mode;
+  uint8_t   adr_mode;
+  uint8_t   br_far;
+  uint8_t   br_near;
+  uint8_t   have_modrm;
+  uint8_t   modrm;
+  uint8_t   modrm_offset;
+  uint8_t   vex_op;
+  uint8_t   vex_b1;
+  uint8_t   vex_b2;
+  uint8_t   primary_opcode;
+  void *    user_opaque_data;
</ins><span class="cx">   struct ud_itab_entry * itab_entry;
</span><span class="cx">   struct ud_lookup_table_list_entry *le;
</span><span class="cx"> };
</span><span class="lines">@@ -221,22 +239,22 @@
</span><span class="cx">  * Type-definitions
</span><span class="cx">  * -----------------------------------------------------------------------------
</span><span class="cx">  */
</span><del>-typedef enum ud_type                 ud_type_t;
-typedef enum ud_mnemonic_code        ud_mnemonic_code_t;
</del><ins>+typedef enum ud_type          ud_type_t;
+typedef enum ud_mnemonic_code ud_mnemonic_code_t;
</ins><span class="cx"> 
</span><del>-typedef struct ud                 ud_t;
-typedef struct ud_operand         ud_operand_t;
</del><ins>+typedef struct ud             ud_t;
+typedef struct ud_operand     ud_operand_t;
</ins><span class="cx"> 
</span><del>-#define UD_SYN_INTEL                ud_translate_intel
-#define UD_SYN_ATT                ud_translate_att
-#define UD_EOI                        -1
-#define UD_INP_CACHE_SZ                32
-#define UD_VENDOR_AMD                0
-#define UD_VENDOR_INTEL                1
-#define UD_VENDOR_ANY                2
</del><ins>+#define UD_SYN_INTEL          ud_translate_intel
+#define UD_SYN_ATT            ud_translate_att
+#define UD_EOI                (-1)
+#define UD_INP_CACHE_SZ       32
+#define UD_VENDOR_AMD         0
+#define UD_VENDOR_INTEL       1
+#define UD_VENDOR_ANY         2
</ins><span class="cx"> 
</span><del>-#define bail_out(ud,error_code) longjmp( (ud)-&gt;bailout, error_code )
-#define try_decode(ud) if ( setjmp( (ud)-&gt;bailout ) == 0 )
-#define catch_error() else
</del><ins>+#endif
</ins><span class="cx"> 
</span><del>-#endif
</del><ins>+/*
+vim: set ts=2 sw=2 expandtab
+*/
</ins></span></pre></div>
<a id="trunkSourceJavaScriptCoredisassemblerudis86udis86_udinthfromrev198831trunkSourceJavaScriptCoredisassemblerudis86udis86_externh"></a>
<div class="copfile"><h4>Copied: trunk/Source/JavaScriptCore/disassembler/udis86/udis86_udint.h (from rev 198831, trunk/Source/JavaScriptCore/disassembler/udis86/udis86_extern.h) (0 => 198832)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/disassembler/udis86/udis86_udint.h                                (rev 0)
+++ trunk/Source/JavaScriptCore/disassembler/udis86/udis86_udint.h        2016-03-30 07:17:14 UTC (rev 198832)
</span><span class="lines">@@ -0,0 +1,98 @@
</span><ins>+/* udis86 - libudis86/udint.h -- definitions for internal use only
+ * 
+ * Copyright (c) 2002-2009 Vivek Thampi
+ * All rights reserved.
+ * 
+ * Redistribution and use in source and binary forms, with or without modification, 
+ * are permitted provided that the following conditions are met:
+ * 
+ *     * Redistributions of source code must retain the above copyright notice, 
+ *       this list of conditions and the following disclaimer.
+ *     * Redistributions in binary form must reproduce the above copyright notice, 
+ *       this list of conditions and the following disclaimer in the documentation 
+ *       and/or other materials provided with the distribution.
+ * 
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS &quot;AS IS&quot; AND 
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR 
+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON 
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+#ifndef _UDINT_H_
+#define _UDINT_H_
+
+#include &quot;udis86_types.h&quot;
+
+#ifdef HAVE_CONFIG_H
+# include &lt;config.h&gt;
+#endif /* HAVE_CONFIG_H */
+
+#if defined(UD_DEBUG) &amp;&amp; HAVE_ASSERT_H
+# define UD_ASSERT(_x) ASSERT(_x)
+#else
+# define UD_ASSERT(_x)
+#endif /* !HAVE_ASSERT_H */
+
+#if defined(UD_DEBUG)
+  #define UDERR(u, msg) \
+    do { \
+      (u)-&gt;error = 1; \
+      fprintf(stderr, &quot;decode-error: %s:%d: %s&quot;, \
+              __FILE__, __LINE__, (msg)); \
+    } while (0)
+#else
+  #define UDERR(u, m) \
+    do { \
+      (u)-&gt;error = 1; \
+    } while (0)
+#endif /* !LOGERR */
+
+#define UD_RETURN_ON_ERROR(u) \
+  do { \
+    if ((u)-&gt;error != 0) { \
+      return (u)-&gt;error; \
+    } \
+  } while (0)
+
+#define UD_RETURN_WITH_ERROR(u, m) \
+  do { \
+    UDERR(u, m); \
+    return (u)-&gt;error; \
+  } while (0)
+
+#ifndef __UD_STANDALONE__
+# define UD_NON_STANDALONE(x) x
+#else
+# define UD_NON_STANDALONE(x)
+#endif
+
+/* printf formatting int64 specifier */
+#ifdef FMT64
+# undef FMT64
+#endif
+#if defined(_MSC_VER) || defined(__BORLANDC__)
+# define FMT64 &quot;I64&quot;
+#else
+# if defined(__APPLE__)
+#  define FMT64 &quot;ll&quot;
+# elif defined(__amd64__) || defined(__x86_64__)
+#  define FMT64 &quot;l&quot;
+# else 
+#  define FMT64 &quot;ll&quot;
+# endif /* !x64 */
+#endif
+
+/* define an inline macro */
+#if defined(_MSC_VER) || defined(__BORLANDC__)
+# define UD_INLINE __inline /* MS Visual Studio requires __inline
+                               instead of inline for C code */
+#else
+# define UD_INLINE inline
+#endif
+
+#endif /* _UDINT_H_ */
</ins></span></pre>
</div>
</div>

</body>
</html>