<div dir="ltr">Do you have the segfault link? I commited a fix for the one I saw earlier. Would like to see if it continued after that fix.</div><div class="gmail_extra"><br clear="all"><div><div class="gmail_signature" data-smartmail="gmail_signature">~Craig</div></div>
<br><div class="gmail_quote">On Sun, May 28, 2017 at 6:48 PM, Zachary Turner via llvm-commits <span dir="ltr"><<a href="mailto:llvm-commits@lists.llvm.org" target="_blank">llvm-commits@lists.llvm.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Author: zturner<br>
Date: Sun May 28 20:48:53 2017<br>
New Revision: 304121<br>
<br>
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=304121&view=rev" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project?rev=304121&view=rev</a><br>
Log:<br>
Revert "[X86] Adding new LLVM TableGen backend that generates the X86 backend memory folding tables."<br>
<br>
This reverts commit 28cb1003507f287726f43c771024a1<wbr>dc102c45fe as well<br>
as all subsequent followups.  llvm-tblgen currently segfaults with<br>
this change, and it seems it has been broken on the bots all<br>
day with no fixes in preparation.  See, for example:<br>
<br>
<a href="http://lab.llvm.org:8011/builders/clang-x86-windows-msvc2015/" rel="noreferrer" target="_blank">http://lab.llvm.org:8011/<wbr>builders/clang-x86-windows-<wbr>msvc2015/</a><br>
<br>
Removed:<br>
  Â  llvm/trunk/utils/TableGen/<wbr>X86FoldTablesEmitter.cpp<br>
Modified:<br>
  Â  llvm/trunk/lib/Target/X86/<wbr>CMakeLists.txt<br>
  Â  llvm/trunk/lib/Target/X86/<wbr>X86InstrInfo.cpp<br>
  Â  llvm/trunk/test/CodeGen/X86/<wbr>sse42-intrinsics-fast-isel.ll<br>
  Â  llvm/trunk/test/CodeGen/X86/<wbr>stack-folding-fp-avx1.ll<br>
  Â  llvm/trunk/test/CodeGen/X86/<wbr>vector-sqrt.ll<br>
  Â  llvm/trunk/utils/TableGen/<wbr>CMakeLists.txt<br>
  Â  llvm/trunk/utils/TableGen/<wbr>TableGen.cpp<br>
  Â  llvm/trunk/utils/TableGen/<wbr>TableGenBackends.h<br>
<br>
Modified: llvm/trunk/lib/Target/X86/<wbr>CMakeLists.txt<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/CMakeLists.txt?rev=304121&r1=304120&r2=304121&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/llvm/trunk/lib/Target/<wbr>X86/CMakeLists.txt?rev=304121&<wbr>r1=304120&r2=304121&view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- llvm/trunk/lib/Target/X86/<wbr>CMakeLists.txt (original)<br>
+++ llvm/trunk/lib/Target/X86/<wbr>CMakeLists.txt Sun May 28 20:48:53 2017<br>
@@ -11,7 +11,6 @@ tablegen(LLVM X86GenFastISel.inc -gen-fa<br>
 tablegen(LLVM X86GenCallingConv.inc -gen-callingconv)<br>
 tablegen(LLVM X86GenSubtargetInfo.inc -gen-subtarget)<br>
 tablegen(LLVM X86GenEVEX2VEXTables.inc -gen-x86-EVEX2VEX-tables)<br>
-tablegen(LLVM X86GenFoldTables.inc -gen-x86-fold-tables)<br>
 if(LLVM_BUILD_GLOBAL_ISEL)<br>
  Â tablegen(LLVM X86GenRegisterBank.inc -gen-register-bank)<br>
  Â tablegen(LLVM X86GenGlobalISel.inc -gen-global-isel)<br>
<br>
Modified: llvm/trunk/lib/Target/X86/<wbr>X86InstrInfo.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86InstrInfo.cpp?rev=304121&r1=304120&r2=304121&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/llvm/trunk/lib/Target/<wbr>X86/X86InstrInfo.cpp?rev=<wbr>304121&r1=304120&r2=304121&<wbr>view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- llvm/trunk/lib/Target/X86/<wbr>X86InstrInfo.cpp (original)<br>
+++ llvm/trunk/lib/Target/X86/<wbr>X86InstrInfo.cpp Sun May 28 20:48:53 2017<br>
@@ -121,8 +121,172 @@ X86InstrInfo::X86InstrInfo(<wbr>X86Subtarget<br>
  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â (STI.is64Bit() ? X86::RETQ : X86::RETL)),<br>
  Â  Â  Â Subtarget(STI), RI(STI.getTargetTriple()) {<br>
<br>
-// Generated memory folding tables.<br>
-#include "X86GenFoldTables.inc"<br>
+  static const X86MemoryFoldTableEntry MemoryFoldTable2Addr[] = {<br>
+  Â  { X86::ADC32ri,  Â  Â X86::ADC32mi,  Â  0 },<br>
+  Â  { X86::ADC32ri8,  Â  X86::ADC32mi8,  Â 0 },<br>
+  Â  { X86::ADC32rr,  Â  Â X86::ADC32mr,  Â  0 },<br>
+  Â  { X86::ADC64ri32,  Â X86::ADC64mi32,  0 },<br>
+  Â  { X86::ADC64ri8,  Â  X86::ADC64mi8,  Â 0 },<br>
+  Â  { X86::ADC64rr,  Â  Â X86::ADC64mr,  Â  0 },<br>
+  Â  { X86::ADD16ri,  Â  Â X86::ADD16mi,  Â  0 },<br>
+  Â  { X86::ADD16ri8,  Â  X86::ADD16mi8,  Â 0 },<br>
+  Â  { X86::ADD16ri_DB,  X86::ADD16mi,  Â  TB_NO_REVERSE },<br>
+  Â  { X86::ADD16ri8_DB, X86::ADD16mi8,  Â TB_NO_REVERSE },<br>
+  Â  { X86::ADD16rr,  Â  Â X86::ADD16mr,  Â  0 },<br>
+  Â  { X86::ADD16rr_DB,  X86::ADD16mr,  Â  TB_NO_REVERSE },<br>
+  Â  { X86::ADD32ri,  Â  Â X86::ADD32mi,  Â  0 },<br>
+  Â  { X86::ADD32ri8,  Â  X86::ADD32mi8,  Â 0 },<br>
+  Â  { X86::ADD32ri_DB,  X86::ADD32mi,  Â  TB_NO_REVERSE },<br>
+  Â  { X86::ADD32ri8_DB, X86::ADD32mi8,  Â TB_NO_REVERSE },<br>
+  Â  { X86::ADD32rr,  Â  Â X86::ADD32mr,  Â  0 },<br>
+  Â  { X86::ADD32rr_DB,  X86::ADD32mr,  Â  TB_NO_REVERSE },<br>
+  Â  { X86::ADD64ri32,  Â X86::ADD64mi32,  0 },<br>
+  Â  { X86::ADD64ri8,  Â  X86::ADD64mi8,  Â 0 },<br>
+  Â  { X86::ADD64ri32_DB,X86::<wbr>ADD64mi32,  TB_NO_REVERSE },<br>
+  Â  { X86::ADD64ri8_DB, X86::ADD64mi8,  Â TB_NO_REVERSE },<br>
+  Â  { X86::ADD64rr,  Â  Â X86::ADD64mr,  Â  0 },<br>
+  Â  { X86::ADD64rr_DB,  X86::ADD64mr,  Â  TB_NO_REVERSE },<br>
+  Â  { X86::ADD8ri,  Â  Â  X86::ADD8mi,  Â  Â 0 },<br>
+  Â  { X86::ADD8rr,  Â  Â  X86::ADD8mr,  Â  Â 0 },<br>
+  Â  { X86::AND16ri,  Â  Â X86::AND16mi,  Â  0 },<br>
+  Â  { X86::AND16ri8,  Â  X86::AND16mi8,  Â 0 },<br>
+  Â  { X86::AND16rr,  Â  Â X86::AND16mr,  Â  0 },<br>
+  Â  { X86::AND32ri,  Â  Â X86::AND32mi,  Â  0 },<br>
+  Â  { X86::AND32ri8,  Â  X86::AND32mi8,  Â 0 },<br>
+  Â  { X86::AND32rr,  Â  Â X86::AND32mr,  Â  0 },<br>
+  Â  { X86::AND64ri32,  Â X86::AND64mi32,  0 },<br>
+  Â  { X86::AND64ri8,  Â  X86::AND64mi8,  Â 0 },<br>
+  Â  { X86::AND64rr,  Â  Â X86::AND64mr,  Â  0 },<br>
+  Â  { X86::AND8ri,  Â  Â  X86::AND8mi,  Â  Â 0 },<br>
+  Â  { X86::AND8rr,  Â  Â  X86::AND8mr,  Â  Â 0 },<br>
+  Â  { X86::DEC16r,  Â  Â  X86::DEC16m,  Â  Â 0 },<br>
+  Â  { X86::DEC32r,  Â  Â  X86::DEC32m,  Â  Â 0 },<br>
+  Â  { X86::DEC64r,  Â  Â  X86::DEC64m,  Â  Â 0 },<br>
+  Â  { X86::DEC8r,  Â  Â  Â X86::DEC8m,  Â  Â  0 },<br>
+  Â  { X86::INC16r,  Â  Â  X86::INC16m,  Â  Â 0 },<br>
+  Â  { X86::INC32r,  Â  Â  X86::INC32m,  Â  Â 0 },<br>
+  Â  { X86::INC64r,  Â  Â  X86::INC64m,  Â  Â 0 },<br>
+  Â  { X86::INC8r,  Â  Â  Â X86::INC8m,  Â  Â  0 },<br>
+  Â  { X86::NEG16r,  Â  Â  X86::NEG16m,  Â  Â 0 },<br>
+  Â  { X86::NEG32r,  Â  Â  X86::NEG32m,  Â  Â 0 },<br>
+  Â  { X86::NEG64r,  Â  Â  X86::NEG64m,  Â  Â 0 },<br>
+  Â  { X86::NEG8r,  Â  Â  Â X86::NEG8m,  Â  Â  0 },<br>
+  Â  { X86::NOT16r,  Â  Â  X86::NOT16m,  Â  Â 0 },<br>
+  Â  { X86::NOT32r,  Â  Â  X86::NOT32m,  Â  Â 0 },<br>
+  Â  { X86::NOT64r,  Â  Â  X86::NOT64m,  Â  Â 0 },<br>
+  Â  { X86::NOT8r,  Â  Â  Â X86::NOT8m,  Â  Â  0 },<br>
+  Â  { X86::OR16ri,  Â  Â  X86::OR16mi,  Â  Â 0 },<br>
+  Â  { X86::OR16ri8,  Â  Â X86::OR16mi8,  Â  0 },<br>
+  Â  { X86::OR16rr,  Â  Â  X86::OR16mr,  Â  Â 0 },<br>
+  Â  { X86::OR32ri,  Â  Â  X86::OR32mi,  Â  Â 0 },<br>
+  Â  { X86::OR32ri8,  Â  Â X86::OR32mi8,  Â  0 },<br>
+  Â  { X86::OR32rr,  Â  Â  X86::OR32mr,  Â  Â 0 },<br>
+  Â  { X86::OR64ri32,  Â  X86::OR64mi32,  Â 0 },<br>
+  Â  { X86::OR64ri8,  Â  Â X86::OR64mi8,  Â  0 },<br>
+  Â  { X86::OR64rr,  Â  Â  X86::OR64mr,  Â  Â 0 },<br>
+  Â  { X86::OR8ri,  Â  Â  Â X86::OR8mi,  Â  Â  0 },<br>
+  Â  { X86::OR8rr,  Â  Â  Â X86::OR8mr,  Â  Â  0 },<br>
+  Â  { X86::ROL16r1,  Â  Â X86::ROL16m1,  Â  0 },<br>
+  Â  { X86::ROL16rCL,  Â  X86::ROL16mCL,  Â 0 },<br>
+  Â  { X86::ROL16ri,  Â  Â X86::ROL16mi,  Â  0 },<br>
+  Â  { X86::ROL32r1,  Â  Â X86::ROL32m1,  Â  0 },<br>
+  Â  { X86::ROL32rCL,  Â  X86::ROL32mCL,  Â 0 },<br>
+  Â  { X86::ROL32ri,  Â  Â X86::ROL32mi,  Â  0 },<br>
+  Â  { X86::ROL64r1,  Â  Â X86::ROL64m1,  Â  0 },<br>
+  Â  { X86::ROL64rCL,  Â  X86::ROL64mCL,  Â 0 },<br>
+  Â  { X86::ROL64ri,  Â  Â X86::ROL64mi,  Â  0 },<br>
+  Â  { X86::ROL8r1,  Â  Â  X86::ROL8m1,  Â  Â 0 },<br>
+  Â  { X86::ROL8rCL,  Â  Â X86::ROL8mCL,  Â  0 },<br>
+  Â  { X86::ROL8ri,  Â  Â  X86::ROL8mi,  Â  Â 0 },<br>
+  Â  { X86::ROR16r1,  Â  Â X86::ROR16m1,  Â  0 },<br>
+  Â  { X86::ROR16rCL,  Â  X86::ROR16mCL,  Â 0 },<br>
+  Â  { X86::ROR16ri,  Â  Â X86::ROR16mi,  Â  0 },<br>
+  Â  { X86::ROR32r1,  Â  Â X86::ROR32m1,  Â  0 },<br>
+  Â  { X86::ROR32rCL,  Â  X86::ROR32mCL,  Â 0 },<br>
+  Â  { X86::ROR32ri,  Â  Â X86::ROR32mi,  Â  0 },<br>
+  Â  { X86::ROR64r1,  Â  Â X86::ROR64m1,  Â  0 },<br>
+  Â  { X86::ROR64rCL,  Â  X86::ROR64mCL,  Â 0 },<br>
+  Â  { X86::ROR64ri,  Â  Â X86::ROR64mi,  Â  0 },<br>
+  Â  { X86::ROR8r1,  Â  Â  X86::ROR8m1,  Â  Â 0 },<br>
+  Â  { X86::ROR8rCL,  Â  Â X86::ROR8mCL,  Â  0 },<br>
+  Â  { X86::ROR8ri,  Â  Â  X86::ROR8mi,  Â  Â 0 },<br>
+  Â  { X86::SAR16r1,  Â  Â X86::SAR16m1,  Â  0 },<br>
+  Â  { X86::SAR16rCL,  Â  X86::SAR16mCL,  Â 0 },<br>
+  Â  { X86::SAR16ri,  Â  Â X86::SAR16mi,  Â  0 },<br>
+  Â  { X86::SAR32r1,  Â  Â X86::SAR32m1,  Â  0 },<br>
+  Â  { X86::SAR32rCL,  Â  X86::SAR32mCL,  Â 0 },<br>
+  Â  { X86::SAR32ri,  Â  Â X86::SAR32mi,  Â  0 },<br>
+  Â  { X86::SAR64r1,  Â  Â X86::SAR64m1,  Â  0 },<br>
+  Â  { X86::SAR64rCL,  Â  X86::SAR64mCL,  Â 0 },<br>
+  Â  { X86::SAR64ri,  Â  Â X86::SAR64mi,  Â  0 },<br>
+  Â  { X86::SAR8r1,  Â  Â  X86::SAR8m1,  Â  Â 0 },<br>
+  Â  { X86::SAR8rCL,  Â  Â X86::SAR8mCL,  Â  0 },<br>
+  Â  { X86::SAR8ri,  Â  Â  X86::SAR8mi,  Â  Â 0 },<br>
+  Â  { X86::SBB32ri,  Â  Â X86::SBB32mi,  Â  0 },<br>
+  Â  { X86::SBB32ri8,  Â  X86::SBB32mi8,  Â 0 },<br>
+  Â  { X86::SBB32rr,  Â  Â X86::SBB32mr,  Â  0 },<br>
+  Â  { X86::SBB64ri32,  Â X86::SBB64mi32,  0 },<br>
+  Â  { X86::SBB64ri8,  Â  X86::SBB64mi8,  Â 0 },<br>
+  Â  { X86::SBB64rr,  Â  Â X86::SBB64mr,  Â  0 },<br>
+  Â  { X86::SHL16r1,  Â  Â X86::SHL16m1,  Â  0 },<br>
+  Â  { X86::SHL16rCL,  Â  X86::SHL16mCL,  Â 0 },<br>
+  Â  { X86::SHL16ri,  Â  Â X86::SHL16mi,  Â  0 },<br>
+  Â  { X86::SHL32r1,  Â  Â X86::SHL32m1,  Â  0 },<br>
+  Â  { X86::SHL32rCL,  Â  X86::SHL32mCL,  Â 0 },<br>
+  Â  { X86::SHL32ri,  Â  Â X86::SHL32mi,  Â  0 },<br>
+  Â  { X86::SHL64r1,  Â  Â X86::SHL64m1,  Â  0 },<br>
+  Â  { X86::SHL64rCL,  Â  X86::SHL64mCL,  Â 0 },<br>
+  Â  { X86::SHL64ri,  Â  Â X86::SHL64mi,  Â  0 },<br>
+  Â  { X86::SHL8r1,  Â  Â  X86::SHL8m1,  Â  Â 0 },<br>
+  Â  { X86::SHL8rCL,  Â  Â X86::SHL8mCL,  Â  0 },<br>
+  Â  { X86::SHL8ri,  Â  Â  X86::SHL8mi,  Â  Â 0 },<br>
+  Â  { X86::SHLD16rrCL,  X86::SHLD16mrCL, 0 },<br>
+  Â  { X86::SHLD16rri8,  X86::SHLD16mri8, 0 },<br>
+  Â  { X86::SHLD32rrCL,  X86::SHLD32mrCL, 0 },<br>
+  Â  { X86::SHLD32rri8,  X86::SHLD32mri8, 0 },<br>
+  Â  { X86::SHLD64rrCL,  X86::SHLD64mrCL, 0 },<br>
+  Â  { X86::SHLD64rri8,  X86::SHLD64mri8, 0 },<br>
+  Â  { X86::SHR16r1,  Â  Â X86::SHR16m1,  Â  0 },<br>
+  Â  { X86::SHR16rCL,  Â  X86::SHR16mCL,  Â 0 },<br>
+  Â  { X86::SHR16ri,  Â  Â X86::SHR16mi,  Â  0 },<br>
+  Â  { X86::SHR32r1,  Â  Â X86::SHR32m1,  Â  0 },<br>
+  Â  { X86::SHR32rCL,  Â  X86::SHR32mCL,  Â 0 },<br>
+  Â  { X86::SHR32ri,  Â  Â X86::SHR32mi,  Â  0 },<br>
+  Â  { X86::SHR64r1,  Â  Â X86::SHR64m1,  Â  0 },<br>
+  Â  { X86::SHR64rCL,  Â  X86::SHR64mCL,  Â 0 },<br>
+  Â  { X86::SHR64ri,  Â  Â X86::SHR64mi,  Â  0 },<br>
+  Â  { X86::SHR8r1,  Â  Â  X86::SHR8m1,  Â  Â 0 },<br>
+  Â  { X86::SHR8rCL,  Â  Â X86::SHR8mCL,  Â  0 },<br>
+  Â  { X86::SHR8ri,  Â  Â  X86::SHR8mi,  Â  Â 0 },<br>
+  Â  { X86::SHRD16rrCL,  X86::SHRD16mrCL, 0 },<br>
+  Â  { X86::SHRD16rri8,  X86::SHRD16mri8, 0 },<br>
+  Â  { X86::SHRD32rrCL,  X86::SHRD32mrCL, 0 },<br>
+  Â  { X86::SHRD32rri8,  X86::SHRD32mri8, 0 },<br>
+  Â  { X86::SHRD64rrCL,  X86::SHRD64mrCL, 0 },<br>
+  Â  { X86::SHRD64rri8,  X86::SHRD64mri8, 0 },<br>
+  Â  { X86::SUB16ri,  Â  Â X86::SUB16mi,  Â  0 },<br>
+  Â  { X86::SUB16ri8,  Â  X86::SUB16mi8,  Â 0 },<br>
+  Â  { X86::SUB16rr,  Â  Â X86::SUB16mr,  Â  0 },<br>
+  Â  { X86::SUB32ri,  Â  Â X86::SUB32mi,  Â  0 },<br>
+  Â  { X86::SUB32ri8,  Â  X86::SUB32mi8,  Â 0 },<br>
+  Â  { X86::SUB32rr,  Â  Â X86::SUB32mr,  Â  0 },<br>
+  Â  { X86::SUB64ri32,  Â X86::SUB64mi32,  0 },<br>
+  Â  { X86::SUB64ri8,  Â  X86::SUB64mi8,  Â 0 },<br>
+  Â  { X86::SUB64rr,  Â  Â X86::SUB64mr,  Â  0 },<br>
+  Â  { X86::SUB8ri,  Â  Â  X86::SUB8mi,  Â  Â 0 },<br>
+  Â  { X86::SUB8rr,  Â  Â  X86::SUB8mr,  Â  Â 0 },<br>
+  Â  { X86::XOR16ri,  Â  Â X86::XOR16mi,  Â  0 },<br>
+  Â  { X86::XOR16ri8,  Â  X86::XOR16mi8,  Â 0 },<br>
+  Â  { X86::XOR16rr,  Â  Â X86::XOR16mr,  Â  0 },<br>
+  Â  { X86::XOR32ri,  Â  Â X86::XOR32mi,  Â  0 },<br>
+  Â  { X86::XOR32ri8,  Â  X86::XOR32mi8,  Â 0 },<br>
+  Â  { X86::XOR32rr,  Â  Â X86::XOR32mr,  Â  0 },<br>
+  Â  { X86::XOR64ri32,  Â X86::XOR64mi32,  0 },<br>
+  Â  { X86::XOR64ri8,  Â  X86::XOR64mi8,  Â 0 },<br>
+  Â  { X86::XOR64rr,  Â  Â X86::XOR64mr,  Â  0 },<br>
+  Â  { X86::XOR8ri,  Â  Â  X86::XOR8mi,  Â  Â 0 },<br>
+  Â  { X86::XOR8rr,  Â  Â  X86::XOR8mr,  Â  Â 0 }<br>
+  };<br>
<br>
  Â for (X86MemoryFoldTableEntry Entry : MemoryFoldTable2Addr) {<br>
  Â  Â AddTableEntry(<wbr>RegOp2MemOpTable2Addr, MemOp2RegOpTable,<br>
@@ -131,11 +295,746 @@ X86InstrInfo::X86InstrInfo(<wbr>X86Subtarget<br>
  Â  Â  Â  Â  Â  Â  Â  Â  Â Entry.Flags | TB_INDEX_0 | TB_FOLDED_LOAD | TB_FOLDED_STORE);<br>
  Â }<br>
<br>
+  static const X86MemoryFoldTableEntry MemoryFoldTable0[] = {<br>
+  Â  { X86::BT16ri8,  Â  Â X86::BT16mi8,  Â  Â  Â TB_FOLDED_LOAD },<br>
+  Â  { X86::BT32ri8,  Â  Â X86::BT32mi8,  Â  Â  Â TB_FOLDED_LOAD },<br>
+  Â  { X86::BT64ri8,  Â  Â X86::BT64mi8,  Â  Â  Â TB_FOLDED_LOAD },<br>
+  Â  { X86::CALL32r,  Â  Â X86::CALL32m,  Â  Â  Â TB_FOLDED_LOAD },<br>
+  Â  { X86::CALL64r,  Â  Â X86::CALL64m,  Â  Â  Â TB_FOLDED_LOAD },<br>
+  Â  { X86::CMP16ri,  Â  Â X86::CMP16mi,  Â  Â  Â TB_FOLDED_LOAD },<br>
+  Â  { X86::CMP16ri8,  Â  X86::CMP16mi8,  Â  Â  TB_FOLDED_LOAD },<br>
+  Â  { X86::CMP16rr,  Â  Â X86::CMP16mr,  Â  Â  Â TB_FOLDED_LOAD },<br>
+  Â  { X86::CMP32ri,  Â  Â X86::CMP32mi,  Â  Â  Â TB_FOLDED_LOAD },<br>
+  Â  { X86::CMP32ri8,  Â  X86::CMP32mi8,  Â  Â  TB_FOLDED_LOAD },<br>
+  Â  { X86::CMP32rr,  Â  Â X86::CMP32mr,  Â  Â  Â TB_FOLDED_LOAD },<br>
+  Â  { X86::CMP64ri32,  Â X86::CMP64mi32,  Â  Â TB_FOLDED_LOAD },<br>
+  Â  { X86::CMP64ri8,  Â  X86::CMP64mi8,  Â  Â  TB_FOLDED_LOAD },<br>
+  Â  { X86::CMP64rr,  Â  Â X86::CMP64mr,  Â  Â  Â TB_FOLDED_LOAD },<br>
+  Â  { X86::CMP8ri,  Â  Â  X86::CMP8mi,  Â  Â  Â  TB_FOLDED_LOAD },<br>
+  Â  { X86::CMP8rr,  Â  Â  X86::CMP8mr,  Â  Â  Â  TB_FOLDED_LOAD },<br>
+  Â  { X86::DIV16r,  Â  Â  X86::DIV16m,  Â  Â  Â  TB_FOLDED_LOAD },<br>
+  Â  { X86::DIV32r,  Â  Â  X86::DIV32m,  Â  Â  Â  TB_FOLDED_LOAD },<br>
+  Â  { X86::DIV64r,  Â  Â  X86::DIV64m,  Â  Â  Â  TB_FOLDED_LOAD },<br>
+  Â  { X86::DIV8r,  Â  Â  Â X86::DIV8m,  Â  Â  Â  Â TB_FOLDED_LOAD },<br>
+  Â  { X86::EXTRACTPSrr, X86::EXTRACTPSmr,  Â TB_FOLDED_STORE },<br>
+  Â  { X86::IDIV16r,  Â  Â X86::IDIV16m,  Â  Â  Â TB_FOLDED_LOAD },<br>
+  Â  { X86::IDIV32r,  Â  Â X86::IDIV32m,  Â  Â  Â TB_FOLDED_LOAD },<br>
+  Â  { X86::IDIV64r,  Â  Â X86::IDIV64m,  Â  Â  Â TB_FOLDED_LOAD },<br>
+  Â  { X86::IDIV8r,  Â  Â  X86::IDIV8m,  Â  Â  Â  TB_FOLDED_LOAD },<br>
+  Â  { X86::IMUL16r,  Â  Â X86::IMUL16m,  Â  Â  Â TB_FOLDED_LOAD },<br>
+  Â  { X86::IMUL32r,  Â  Â X86::IMUL32m,  Â  Â  Â TB_FOLDED_LOAD },<br>
+  Â  { X86::IMUL64r,  Â  Â X86::IMUL64m,  Â  Â  Â TB_FOLDED_LOAD },<br>
+  Â  { X86::IMUL8r,  Â  Â  X86::IMUL8m,  Â  Â  Â  TB_FOLDED_LOAD },<br>
+  Â  { X86::JMP32r,  Â  Â  X86::JMP32m,  Â  Â  Â  TB_FOLDED_LOAD },<br>
+  Â  { X86::JMP64r,  Â  Â  X86::JMP64m,  Â  Â  Â  TB_FOLDED_LOAD },<br>
+  Â  { X86::MOV16ri,  Â  Â X86::MOV16mi,  Â  Â  Â TB_FOLDED_STORE },<br>
+  Â  { X86::MOV16rr,  Â  Â X86::MOV16mr,  Â  Â  Â TB_FOLDED_STORE },<br>
+  Â  { X86::MOV32ri,  Â  Â X86::MOV32mi,  Â  Â  Â TB_FOLDED_STORE },<br>
+  Â  { X86::MOV32rr,  Â  Â X86::MOV32mr,  Â  Â  Â TB_FOLDED_STORE },<br>
+  Â  { X86::MOV64ri32,  Â X86::MOV64mi32,  Â  Â TB_FOLDED_STORE },<br>
+  Â  { X86::MOV64rr,  Â  Â X86::MOV64mr,  Â  Â  Â TB_FOLDED_STORE },<br>
+  Â  { X86::MOV8ri,  Â  Â  X86::MOV8mi,  Â  Â  Â  TB_FOLDED_STORE },<br>
+  Â  { X86::MOV8rr,  Â  Â  X86::MOV8mr,  Â  Â  Â  TB_FOLDED_STORE },<br>
+  Â  { X86::MOV8rr_NOREX, X86::MOV8mr_NOREX, TB_FOLDED_STORE },<br>
+  Â  { X86::MOVAPDrr,  Â  X86::MOVAPDmr,  Â  Â  TB_FOLDED_STORE | TB_ALIGN_16 },<br>
+  Â  { X86::MOVAPSrr,  Â  X86::MOVAPSmr,  Â  Â  TB_FOLDED_STORE | TB_ALIGN_16 },<br>
+  Â  { X86::MOVDQArr,  Â  X86::MOVDQAmr,  Â  Â  TB_FOLDED_STORE | TB_ALIGN_16 },<br>
+  Â  { X86::MOVDQUrr,  Â  X86::MOVDQUmr,  Â  Â  TB_FOLDED_STORE },<br>
+  Â  { X86::MOVPDI2DIrr, X86::MOVPDI2DImr,  Â TB_FOLDED_STORE },<br>
+  Â  { X86::MOVPQIto64rr,X86::<wbr>MOVPQI2QImr,  Â TB_FOLDED_STORE },<br>
+  Â  { X86::MOVSDto64rr, X86::MOVSDto64mr,  Â TB_FOLDED_STORE },<br>
+  Â  { X86::MOVSS2DIrr,  X86::MOVSS2DImr,  Â  TB_FOLDED_STORE },<br>
+  Â  { X86::MOVUPDrr,  Â  X86::MOVUPDmr,  Â  Â  TB_FOLDED_STORE },<br>
+  Â  { X86::MOVUPSrr,  Â  X86::MOVUPSmr,  Â  Â  TB_FOLDED_STORE },<br>
+  Â  { X86::MUL16r,  Â  Â  X86::MUL16m,  Â  Â  Â  TB_FOLDED_LOAD },<br>
+  Â  { X86::MUL32r,  Â  Â  X86::MUL32m,  Â  Â  Â  TB_FOLDED_LOAD },<br>
+  Â  { X86::MUL64r,  Â  Â  X86::MUL64m,  Â  Â  Â  TB_FOLDED_LOAD },<br>
+  Â  { X86::MUL8r,  Â  Â  Â X86::MUL8m,  Â  Â  Â  Â TB_FOLDED_LOAD },<br>
+  Â  { X86::PEXTRDrr,  Â  X86::PEXTRDmr,  Â  Â  TB_FOLDED_STORE },<br>
+  Â  { X86::PEXTRQrr,  Â  X86::PEXTRQmr,  Â  Â  TB_FOLDED_STORE },<br>
+  Â  { X86::PUSH16r,  Â  Â X86::PUSH16rmm,  Â  Â TB_FOLDED_LOAD },<br>
+  Â  { X86::PUSH32r,  Â  Â X86::PUSH32rmm,  Â  Â TB_FOLDED_LOAD },<br>
+  Â  { X86::PUSH64r,  Â  Â X86::PUSH64rmm,  Â  Â TB_FOLDED_LOAD },<br>
+  Â  { X86::SETAEr,  Â  Â  X86::SETAEm,  Â  Â  Â  TB_FOLDED_STORE },<br>
+  Â  { X86::SETAr,  Â  Â  Â X86::SETAm,  Â  Â  Â  Â TB_FOLDED_STORE },<br>
+  Â  { X86::SETBEr,  Â  Â  X86::SETBEm,  Â  Â  Â  TB_FOLDED_STORE },<br>
+  Â  { X86::SETBr,  Â  Â  Â X86::SETBm,  Â  Â  Â  Â TB_FOLDED_STORE },<br>
+  Â  { X86::SETEr,  Â  Â  Â X86::SETEm,  Â  Â  Â  Â TB_FOLDED_STORE },<br>
+  Â  { X86::SETGEr,  Â  Â  X86::SETGEm,  Â  Â  Â  TB_FOLDED_STORE },<br>
+  Â  { X86::SETGr,  Â  Â  Â X86::SETGm,  Â  Â  Â  Â TB_FOLDED_STORE },<br>
+  Â  { X86::SETLEr,  Â  Â  X86::SETLEm,  Â  Â  Â  TB_FOLDED_STORE },<br>
+  Â  { X86::SETLr,  Â  Â  Â X86::SETLm,  Â  Â  Â  Â TB_FOLDED_STORE },<br>
+  Â  { X86::SETNEr,  Â  Â  X86::SETNEm,  Â  Â  Â  TB_FOLDED_STORE },<br>
+  Â  { X86::SETNOr,  Â  Â  X86::SETNOm,  Â  Â  Â  TB_FOLDED_STORE },<br>
+  Â  { X86::SETNPr,  Â  Â  X86::SETNPm,  Â  Â  Â  TB_FOLDED_STORE },<br>
+  Â  { X86::SETNSr,  Â  Â  X86::SETNSm,  Â  Â  Â  TB_FOLDED_STORE },<br>
+  Â  { X86::SETOr,  Â  Â  Â X86::SETOm,  Â  Â  Â  Â TB_FOLDED_STORE },<br>
+  Â  { X86::SETPr,  Â  Â  Â X86::SETPm,  Â  Â  Â  Â TB_FOLDED_STORE },<br>
+  Â  { X86::SETSr,  Â  Â  Â X86::SETSm,  Â  Â  Â  Â TB_FOLDED_STORE },<br>
+  Â  { X86::TAILJMPr,  Â  X86::TAILJMPm,  Â  Â  TB_FOLDED_LOAD },<br>
+  Â  { X86::TAILJMPr64,  X86::TAILJMPm64,  Â  TB_FOLDED_LOAD },<br>
+  Â  { X86::TAILJMPr64_REX, X86::TAILJMPm64_REX, TB_FOLDED_LOAD },<br>
+  Â  { X86::TEST16ri,  Â  X86::TEST16mi,  Â  Â  TB_FOLDED_LOAD },<br>
+  Â  { X86::TEST32ri,  Â  X86::TEST32mi,  Â  Â  TB_FOLDED_LOAD },<br>
+  Â  { X86::TEST64ri32,  X86::TEST64mi32,  Â  TB_FOLDED_LOAD },<br>
+  Â  { X86::TEST8ri,  Â  Â X86::TEST8mi,  Â  Â  Â TB_FOLDED_LOAD },<br>
+<br>
+  Â  // AVX 128-bit versions of foldable instructions<br>
+  Â  { X86::VEXTRACTPSrr,X86::<wbr>VEXTRACTPSmr,  TB_FOLDED_STORE  },<br>
+  Â  { X86::VEXTRACTF128rr, X86::VEXTRACTF128mr, TB_FOLDED_STORE | TB_ALIGN_16 },<br>
+  Â  { X86::VMOVAPDrr,  Â X86::VMOVAPDmr,  Â  Â TB_FOLDED_STORE | TB_ALIGN_16 },<br>
+  Â  { X86::VMOVAPSrr,  Â X86::VMOVAPSmr,  Â  Â TB_FOLDED_STORE | TB_ALIGN_16 },<br>
+  Â  { X86::VMOVDQArr,  Â X86::VMOVDQAmr,  Â  Â TB_FOLDED_STORE | TB_ALIGN_16 },<br>
+  Â  { X86::VMOVDQUrr,  Â X86::VMOVDQUmr,  Â  Â TB_FOLDED_STORE },<br>
+  Â  { X86::VMOVPDI2DIrr,X86::<wbr>VMOVPDI2DImr,  TB_FOLDED_STORE },<br>
+  Â  { X86::VMOVPQIto64rr, X86::VMOVPQI2QImr,TB_FOLDED_<wbr>STORE },<br>
+  Â  { X86::VMOVSDto64rr,X86::<wbr>VMOVSDto64mr,  TB_FOLDED_STORE },<br>
+  Â  { X86::VMOVSS2DIrr, X86::VMOVSS2DImr,  Â TB_FOLDED_STORE },<br>
+  Â  { X86::VMOVUPDrr,  Â X86::VMOVUPDmr,  Â  Â TB_FOLDED_STORE },<br>
+  Â  { X86::VMOVUPSrr,  Â X86::VMOVUPSmr,  Â  Â TB_FOLDED_STORE },<br>
+  Â  { X86::VPEXTRDrr,  Â X86::VPEXTRDmr,  Â  Â TB_FOLDED_STORE },<br>
+  Â  { X86::VPEXTRQrr,  Â X86::VPEXTRQmr,  Â  Â TB_FOLDED_STORE },<br>
+<br>
+  Â  // AVX 256-bit foldable instructions<br>
+  Â  { X86::VEXTRACTI128rr, X86::VEXTRACTI128mr, TB_FOLDED_STORE | TB_ALIGN_16 },<br>
+  Â  { X86::VMOVAPDYrr,  X86::VMOVAPDYmr,  Â  TB_FOLDED_STORE | TB_ALIGN_32 },<br>
+  Â  { X86::VMOVAPSYrr,  X86::VMOVAPSYmr,  Â  TB_FOLDED_STORE | TB_ALIGN_32 },<br>
+  Â  { X86::VMOVDQAYrr,  X86::VMOVDQAYmr,  Â  TB_FOLDED_STORE | TB_ALIGN_32 },<br>
+  Â  { X86::VMOVDQUYrr,  X86::VMOVDQUYmr,  Â  TB_FOLDED_STORE },<br>
+  Â  { X86::VMOVUPDYrr,  X86::VMOVUPDYmr,  Â  TB_FOLDED_STORE },<br>
+  Â  { X86::VMOVUPSYrr,  X86::VMOVUPSYmr,  Â  TB_FOLDED_STORE },<br>
+<br>
+  Â  // AVX-512 foldable instructions<br>
+  Â  { X86::VEXTRACTF32x4Zrr,X86::<wbr>VEXTRACTF32x4Zmr, TB_FOLDED_STORE },<br>
+  Â  { X86::VEXTRACTF32x8Zrr,X86::<wbr>VEXTRACTF32x8Zmr, TB_FOLDED_STORE },<br>
+  Â  { X86::VEXTRACTF64x2Zrr,X86::<wbr>VEXTRACTF64x2Zmr, TB_FOLDED_STORE },<br>
+  Â  { X86::VEXTRACTF64x4Zrr,X86::<wbr>VEXTRACTF64x4Zmr, TB_FOLDED_STORE },<br>
+  Â  { X86::VEXTRACTI32x4Zrr,X86::<wbr>VEXTRACTI32x4Zmr, TB_FOLDED_STORE },<br>
+  Â  { X86::VEXTRACTI32x8Zrr,X86::<wbr>VEXTRACTI32x8Zmr, TB_FOLDED_STORE },<br>
+  Â  { X86::VEXTRACTI64x2Zrr,X86::<wbr>VEXTRACTI64x2Zmr, TB_FOLDED_STORE },<br>
+  Â  { X86::VEXTRACTI64x4Zrr,X86::<wbr>VEXTRACTI64x4Zmr, TB_FOLDED_STORE },<br>
+  Â  { X86::VEXTRACTPSZrr,  Â X86::VEXTRACTPSZmr,  Â  TB_FOLDED_STORE },<br>
+  Â  { X86::VMOVAPDZrr,  Â  Â  X86::VMOVAPDZmr,  Â  TB_FOLDED_STORE | TB_ALIGN_64 },<br>
+  Â  { X86::VMOVAPSZrr,  Â  Â  X86::VMOVAPSZmr,  Â  TB_FOLDED_STORE | TB_ALIGN_64 },<br>
+  Â  { X86::VMOVDQA32Zrr,  Â  X86::VMOVDQA32Zmr,  TB_FOLDED_STORE | TB_ALIGN_64 },<br>
+  Â  { X86::VMOVDQA64Zrr,  Â  X86::VMOVDQA64Zmr,  TB_FOLDED_STORE | TB_ALIGN_64 },<br>
+  Â  { X86::VMOVDQU8Zrr,  Â  Â X86::VMOVDQU8Zmr,  Â TB_FOLDED_STORE },<br>
+  Â  { X86::VMOVDQU16Zrr,  Â  X86::VMOVDQU16Zmr,  TB_FOLDED_STORE },<br>
+  Â  { X86::VMOVDQU32Zrr,  Â  X86::VMOVDQU32Zmr,  TB_FOLDED_STORE },<br>
+  Â  { X86::VMOVDQU64Zrr,  Â  X86::VMOVDQU64Zmr,  TB_FOLDED_STORE },<br>
+  Â  { X86::VMOVPDI2DIZrr,  Â X86::VMOVPDI2DIZmr, TB_FOLDED_STORE },<br>
+  Â  { X86::VMOVPQIto64Zrr,  X86::VMOVPQI2QIZmr, TB_FOLDED_STORE },<br>
+  Â  { X86::VMOVSDto64Zrr,  Â X86::VMOVSDto64Zmr, TB_FOLDED_STORE },<br>
+  Â  { X86::VMOVSS2DIZrr,  Â  X86::VMOVSS2DIZmr,  TB_FOLDED_STORE },<br>
+  Â  { X86::VMOVUPDZrr,  Â  Â  X86::VMOVUPDZmr,  Â  TB_FOLDED_STORE },<br>
+  Â  { X86::VMOVUPSZrr,  Â  Â  X86::VMOVUPSZmr,  Â  TB_FOLDED_STORE },<br>
+  Â  { X86::VPEXTRDZrr,  Â  Â  X86::VPEXTRDZmr,  Â  TB_FOLDED_STORE },<br>
+  Â  { X86::VPEXTRQZrr,  Â  Â  X86::VPEXTRQZmr,  Â  TB_FOLDED_STORE },<br>
+  Â  { X86::VPMOVDBZrr,  Â  Â  X86::VPMOVDBZmr,  Â  TB_FOLDED_STORE },<br>
+  Â  { X86::VPMOVDWZrr,  Â  Â  X86::VPMOVDWZmr,  Â  TB_FOLDED_STORE },<br>
+  Â  { X86::VPMOVQDZrr,  Â  Â  X86::VPMOVQDZmr,  Â  TB_FOLDED_STORE },<br>
+  Â  { X86::VPMOVQWZrr,  Â  Â  X86::VPMOVQWZmr,  Â  TB_FOLDED_STORE },<br>
+  Â  { X86::VPMOVWBZrr,  Â  Â  X86::VPMOVWBZmr,  Â  TB_FOLDED_STORE },<br>
+  Â  { X86::VPMOVSDBZrr,  Â  Â X86::VPMOVSDBZmr,  Â TB_FOLDED_STORE },<br>
+  Â  { X86::VPMOVSDWZrr,  Â  Â X86::VPMOVSDWZmr,  Â TB_FOLDED_STORE },<br>
+  Â  { X86::VPMOVSQDZrr,  Â  Â X86::VPMOVSQDZmr,  Â TB_FOLDED_STORE },<br>
+  Â  { X86::VPMOVSQWZrr,  Â  Â X86::VPMOVSQWZmr,  Â TB_FOLDED_STORE },<br>
+  Â  { X86::VPMOVSWBZrr,  Â  Â X86::VPMOVSWBZmr,  Â TB_FOLDED_STORE },<br>
+  Â  { X86::VPMOVUSDBZrr,  Â  X86::VPMOVUSDBZmr,  TB_FOLDED_STORE },<br>
+  Â  { X86::VPMOVUSDWZrr,  Â  X86::VPMOVUSDWZmr,  TB_FOLDED_STORE },<br>
+  Â  { X86::VPMOVUSQDZrr,  Â  X86::VPMOVUSQDZmr,  TB_FOLDED_STORE },<br>
+  Â  { X86::VPMOVUSQWZrr,  Â  X86::VPMOVUSQWZmr,  TB_FOLDED_STORE },<br>
+  Â  { X86::VPMOVUSWBZrr,  Â  X86::VPMOVUSWBZmr,  TB_FOLDED_STORE },<br>
+<br>
+  Â  // AVX-512 foldable instructions (256-bit versions)<br>
+  Â  { X86::VEXTRACTF32x4Z256rr,X86::<wbr>VEXTRACTF32x4Z256mr, TB_FOLDED_STORE },<br>
+  Â  { X86::VEXTRACTF64x2Z256rr,X86::<wbr>VEXTRACTF64x2Z256mr, TB_FOLDED_STORE },<br>
+  Â  { X86::VEXTRACTI32x4Z256rr,X86::<wbr>VEXTRACTI32x4Z256mr, TB_FOLDED_STORE },<br>
+  Â  { X86::VEXTRACTI64x2Z256rr,X86::<wbr>VEXTRACTI64x2Z256mr, TB_FOLDED_STORE },<br>
+  Â  { X86::VMOVAPDZ256rr,  Â  Â  X86::VMOVAPDZ256mr,  Â  TB_FOLDED_STORE | TB_ALIGN_32 },<br>
+  Â  { X86::VMOVAPSZ256rr,  Â  Â  X86::VMOVAPSZ256mr,  Â  TB_FOLDED_STORE | TB_ALIGN_32 },<br>
+  Â  { X86::VMOVDQA32Z256rr,  Â  X86::VMOVDQA32Z256mr,  TB_FOLDED_STORE | TB_ALIGN_32 },<br>
+  Â  { X86::VMOVDQA64Z256rr,  Â  X86::VMOVDQA64Z256mr,  TB_FOLDED_STORE | TB_ALIGN_32 },<br>
+  Â  { X86::VMOVUPDZ256rr,  Â  Â  X86::VMOVUPDZ256mr,  Â  TB_FOLDED_STORE },<br>
+  Â  { X86::VMOVUPSZ256rr,  Â  Â  X86::VMOVUPSZ256mr,  Â  TB_FOLDED_STORE },<br>
+  Â  { X86::VMOVDQU8Z256rr,  Â  Â X86::VMOVDQU8Z256mr,  Â TB_FOLDED_STORE },<br>
+  Â  { X86::VMOVDQU16Z256rr,  Â  X86::VMOVDQU16Z256mr,  TB_FOLDED_STORE },<br>
+  Â  { X86::VMOVDQU32Z256rr,  Â  X86::VMOVDQU32Z256mr,  TB_FOLDED_STORE },<br>
+  Â  { X86::VMOVDQU64Z256rr,  Â  X86::VMOVDQU64Z256mr,  TB_FOLDED_STORE },<br>
+  Â  { X86::VPMOVDWZ256rr,  Â  Â  X86::VPMOVDWZ256mr,  Â  TB_FOLDED_STORE },<br>
+  Â  { X86::VPMOVQDZ256rr,  Â  Â  X86::VPMOVQDZ256mr,  Â  TB_FOLDED_STORE },<br>
+  Â  { X86::VPMOVWBZ256rr,  Â  Â  X86::VPMOVWBZ256mr,  Â  TB_FOLDED_STORE },<br>
+  Â  { X86::VPMOVSDWZ256rr,  Â  Â X86::VPMOVSDWZ256mr,  Â TB_FOLDED_STORE },<br>
+  Â  { X86::VPMOVSQDZ256rr,  Â  Â X86::VPMOVSQDZ256mr,  Â TB_FOLDED_STORE },<br>
+  Â  { X86::VPMOVSWBZ256rr,  Â  Â X86::VPMOVSWBZ256mr,  Â TB_FOLDED_STORE },<br>
+  Â  { X86::VPMOVUSDWZ256rr,  Â  X86::VPMOVUSDWZ256mr,  TB_FOLDED_STORE },<br>
+  Â  { X86::VPMOVUSQDZ256rr,  Â  X86::VPMOVUSQDZ256mr,  TB_FOLDED_STORE },<br>
+  Â  { X86::VPMOVUSWBZ256rr,  Â  X86::VPMOVUSWBZ256mr,  TB_FOLDED_STORE },<br>
+<br>
+  Â  // AVX-512 foldable instructions (128-bit versions)<br>
+  Â  { X86::VMOVAPDZ128rr,  Â  Â  X86::VMOVAPDZ128mr,  Â  TB_FOLDED_STORE | TB_ALIGN_16 },<br>
+  Â  { X86::VMOVAPSZ128rr,  Â  Â  X86::VMOVAPSZ128mr,  Â  TB_FOLDED_STORE | TB_ALIGN_16 },<br>
+  Â  { X86::VMOVDQA32Z128rr,  Â  X86::VMOVDQA32Z128mr,  TB_FOLDED_STORE | TB_ALIGN_16 },<br>
+  Â  { X86::VMOVDQA64Z128rr,  Â  X86::VMOVDQA64Z128mr,  TB_FOLDED_STORE | TB_ALIGN_16 },<br>
+  Â  { X86::VMOVUPDZ128rr,  Â  Â  X86::VMOVUPDZ128mr,  Â  TB_FOLDED_STORE },<br>
+  Â  { X86::VMOVUPSZ128rr,  Â  Â  X86::VMOVUPSZ128mr,  Â  TB_FOLDED_STORE },<br>
+  Â  { X86::VMOVDQU8Z128rr,  Â  Â X86::VMOVDQU8Z128mr,  Â TB_FOLDED_STORE },<br>
+  Â  { X86::VMOVDQU16Z128rr,  Â  X86::VMOVDQU16Z128mr,  TB_FOLDED_STORE },<br>
+  Â  { X86::VMOVDQU32Z128rr,  Â  X86::VMOVDQU32Z128mr,  TB_FOLDED_STORE },<br>
+  Â  { X86::VMOVDQU64Z128rr,  Â  X86::VMOVDQU64Z128mr,  TB_FOLDED_STORE },<br>
+<br>
+  Â  // F16C foldable instructions<br>
+  Â  { X86::VCVTPS2PHrr,  Â  Â  Â  X86::VCVTPS2PHmr,  Â  Â  TB_FOLDED_STORE },<br>
+  Â  { X86::VCVTPS2PHYrr,  Â  Â  Â X86::VCVTPS2PHYmr,  Â  Â TB_FOLDED_STORE }<br>
+  };<br>
+<br>
  Â for (X86MemoryFoldTableEntry Entry : MemoryFoldTable0) {<br>
  Â  Â AddTableEntry(<wbr>RegOp2MemOpTable0, MemOp2RegOpTable,<br>
  Â  Â  Â  Â  Â  Â  Â  Â  Â Entry.RegOp, Entry.MemOp, TB_INDEX_0 | Entry.Flags);<br>
  Â }<br>
<br>
+  static const X86MemoryFoldTableEntry MemoryFoldTable1[] = {<br>
+  Â  { X86::BSF16rr,  Â  Â  Â  Â X86::BSF16rm,  Â  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::BSF32rr,  Â  Â  Â  Â X86::BSF32rm,  Â  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::BSF64rr,  Â  Â  Â  Â X86::BSF64rm,  Â  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::BSR16rr,  Â  Â  Â  Â X86::BSR16rm,  Â  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::BSR32rr,  Â  Â  Â  Â X86::BSR32rm,  Â  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::BSR64rr,  Â  Â  Â  Â X86::BSR64rm,  Â  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::CMP16rr,  Â  Â  Â  Â X86::CMP16rm,  Â  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::CMP32rr,  Â  Â  Â  Â X86::CMP32rm,  Â  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::CMP64rr,  Â  Â  Â  Â X86::CMP64rm,  Â  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::CMP8rr,  Â  Â  Â  Â  X86::CMP8rm,  Â  Â  Â  Â  Â  Â  0 },<br>
+  Â  { X86::CVTSD2SSrr,  Â  Â  X86::CVTSD2SSrm,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::CVTSI2SD64rr,  Â  X86::CVTSI2SD64rm,  Â  Â  Â  0 },<br>
+  Â  { X86::CVTSI2SDrr,  Â  Â  X86::CVTSI2SDrm,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::CVTSI2SS64rr,  Â  X86::CVTSI2SS64rm,  Â  Â  Â  0 },<br>
+  Â  { X86::CVTSI2SSrr,  Â  Â  X86::CVTSI2SSrm,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::CVTSS2SDrr,  Â  Â  X86::CVTSS2SDrm,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::CVTTSD2SI64rr,  Â X86::CVTTSD2SI64rm,  Â  Â  Â 0 },<br>
+  Â  { X86::CVTTSD2SIrr,  Â  Â X86::CVTTSD2SIrm,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::CVTTSS2SI64rr,  Â X86::CVTTSS2SI64rm,  Â  Â  Â 0 },<br>
+  Â  { X86::CVTTSS2SIrr,  Â  Â X86::CVTTSS2SIrm,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::IMUL16rri,  Â  Â  Â X86::IMUL16rmi,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::IMUL16rri8,  Â  Â  X86::IMUL16rmi8,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::IMUL32rri,  Â  Â  Â X86::IMUL32rmi,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::IMUL32rri8,  Â  Â  X86::IMUL32rmi8,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::IMUL64rri32,  Â  Â X86::IMUL64rmi32,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::IMUL64rri8,  Â  Â  X86::IMUL64rmi8,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::Int_COMISDrr,  Â  X86::Int_COMISDrm,  Â  Â  Â  TB_NO_REVERSE },<br>
+  Â  { X86::Int_COMISSrr,  Â  X86::Int_COMISSrm,  Â  Â  Â  TB_NO_REVERSE },<br>
+  Â  { X86::CVTSD2SI64rr,  Â  X86::CVTSD2SI64rm,  Â  Â  Â  TB_NO_REVERSE },<br>
+  Â  { X86::CVTSD2SIrr,  Â  Â  X86::CVTSD2SIrm,  Â  Â  Â  Â  TB_NO_REVERSE },<br>
+  Â  { X86::CVTSS2SI64rr,  Â  X86::CVTSS2SI64rm,  Â  Â  Â  TB_NO_REVERSE },<br>
+  Â  { X86::CVTSS2SIrr,  Â  Â  X86::CVTSS2SIrm,  Â  Â  Â  Â  TB_NO_REVERSE },<br>
+  Â  { X86::CVTDQ2PDrr,  Â  Â  X86::CVTDQ2PDrm,  Â  Â  Â  Â  TB_NO_REVERSE },<br>
+  Â  { X86::CVTDQ2PSrr,  Â  Â  X86::CVTDQ2PSrm,  Â  Â  Â  Â  TB_ALIGN_16 },<br>
+  Â  { X86::CVTPD2DQrr,  Â  Â  X86::CVTPD2DQrm,  Â  Â  Â  Â  TB_ALIGN_16 },<br>
+  Â  { X86::CVTPD2PSrr,  Â  Â  X86::CVTPD2PSrm,  Â  Â  Â  Â  TB_ALIGN_16 },<br>
+  Â  { X86::CVTPS2DQrr,  Â  Â  X86::CVTPS2DQrm,  Â  Â  Â  Â  TB_ALIGN_16 },<br>
+  Â  { X86::CVTPS2PDrr,  Â  Â  X86::CVTPS2PDrm,  Â  Â  Â  Â  TB_NO_REVERSE },<br>
+  Â  { X86::CVTTPD2DQrr,  Â  Â X86::CVTTPD2DQrm,  Â  Â  Â  Â TB_ALIGN_16 },<br>
+  Â  { X86::CVTTPS2DQrr,  Â  Â X86::CVTTPS2DQrm,  Â  Â  Â  Â TB_ALIGN_16 },<br>
+  Â  { X86::Int_CVTTSD2SI64rr,X86::<wbr>Int_CVTTSD2SI64rm,  TB_NO_REVERSE },<br>
+  Â  { X86::Int_CVTTSD2SIrr, X86::Int_CVTTSD2SIrm,  Â  Â TB_NO_REVERSE },<br>
+  Â  { X86::Int_CVTTSS2SI64rr,X86::<wbr>Int_CVTTSS2SI64rm,  TB_NO_REVERSE },<br>
+  Â  { X86::Int_CVTTSS2SIrr, X86::Int_CVTTSS2SIrm,  Â  Â TB_NO_REVERSE },<br>
+  Â  { X86::Int_UCOMISDrr,  Â X86::Int_UCOMISDrm,  Â  Â  Â TB_NO_REVERSE },<br>
+  Â  { X86::Int_UCOMISSrr,  Â X86::Int_UCOMISSrm,  Â  Â  Â TB_NO_REVERSE },<br>
+  Â  { X86::MOV16rr,  Â  Â  Â  Â X86::MOV16rm,  Â  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::MOV32rr,  Â  Â  Â  Â X86::MOV32rm,  Â  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::MOV64rr,  Â  Â  Â  Â X86::MOV64rm,  Â  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::MOV64toPQIrr,  Â  X86::MOVQI2PQIrm,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::MOV64toSDrr,  Â  Â X86::MOV64toSDrm,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::MOV8rr,  Â  Â  Â  Â  X86::MOV8rm,  Â  Â  Â  Â  Â  Â  0 },<br>
+  Â  { X86::MOVAPDrr,  Â  Â  Â  X86::MOVAPDrm,  Â  Â  Â  Â  Â  TB_ALIGN_16 },<br>
+  Â  { X86::MOVAPSrr,  Â  Â  Â  X86::MOVAPSrm,  Â  Â  Â  Â  Â  TB_ALIGN_16 },<br>
+  Â  { X86::MOVDDUPrr,  Â  Â  Â X86::MOVDDUPrm,  Â  Â  Â  Â  Â TB_NO_REVERSE },<br>
+  Â  { X86::MOVDI2PDIrr,  Â  Â X86::MOVDI2PDIrm,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::MOVDI2SSrr,  Â  Â  X86::MOVDI2SSrm,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::MOVDQArr,  Â  Â  Â  X86::MOVDQArm,  Â  Â  Â  Â  Â  TB_ALIGN_16 },<br>
+  Â  { X86::MOVDQUrr,  Â  Â  Â  X86::MOVDQUrm,  Â  Â  Â  Â  Â  0 },<br>
+  Â  { X86::MOVSHDUPrr,  Â  Â  X86::MOVSHDUPrm,  Â  Â  Â  Â  TB_ALIGN_16 },<br>
+  Â  { X86::MOVSLDUPrr,  Â  Â  X86::MOVSLDUPrm,  Â  Â  Â  Â  TB_ALIGN_16 },<br>
+  Â  { X86::MOVSX16rr8,  Â  Â  X86::MOVSX16rm8,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::MOVSX32rr16,  Â  Â X86::MOVSX32rm16,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::MOVSX32rr8,  Â  Â  X86::MOVSX32rm8,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::MOVSX64rr16,  Â  Â X86::MOVSX64rm16,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::MOVSX64rr32,  Â  Â X86::MOVSX64rm32,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::MOVSX64rr8,  Â  Â  X86::MOVSX64rm8,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::MOVUPDrr,  Â  Â  Â  X86::MOVUPDrm,  Â  Â  Â  Â  Â  0 },<br>
+  Â  { X86::MOVUPSrr,  Â  Â  Â  X86::MOVUPSrm,  Â  Â  Â  Â  Â  0 },<br>
+  Â  { X86::MOVZPQILo2PQIrr, X86::MOVQI2PQIrm,  Â  Â  Â  Â TB_NO_REVERSE },<br>
+  Â  { X86::MOVZX16rr8,  Â  Â  X86::MOVZX16rm8,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::MOVZX32rr16,  Â  Â X86::MOVZX32rm16,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::MOVZX32_NOREXrr8, X86::MOVZX32_NOREXrm8,  Â 0 },<br>
+  Â  { X86::MOVZX32rr8,  Â  Â  X86::MOVZX32rm8,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::PABSBrr,  Â  Â  Â  Â X86::PABSBrm,  Â  Â  Â  Â  Â  Â TB_ALIGN_16 },<br>
+  Â  { X86::PABSDrr,  Â  Â  Â  Â X86::PABSDrm,  Â  Â  Â  Â  Â  Â TB_ALIGN_16 },<br>
+  Â  { X86::PABSWrr,  Â  Â  Â  Â X86::PABSWrm,  Â  Â  Â  Â  Â  Â TB_ALIGN_16 },<br>
+  Â  { X86::PCMPESTRIrr,  Â  Â X86::PCMPESTRIrm,  Â  Â  Â  Â TB_ALIGN_16 },<br>
+  Â  { X86::PCMPESTRM128rr,  X86::PCMPESTRM128rm,  Â  Â  TB_ALIGN_16 },<br>
+  Â  { X86::PCMPISTRIrr,  Â  Â X86::PCMPISTRIrm,  Â  Â  Â  Â TB_ALIGN_16 },<br>
+  Â  { X86::PCMPISTRM128rr,  X86::PCMPISTRM128rm,  Â  Â  TB_ALIGN_16 },<br>
+  Â  { X86::PHMINPOSUWrr128, X86::PHMINPOSUWrm128,  Â  Â TB_ALIGN_16 },<br>
+  Â  { X86::PMOVSXBDrr,  Â  Â  X86::PMOVSXBDrm,  Â  Â  Â  Â  TB_NO_REVERSE },<br>
+  Â  { X86::PMOVSXBQrr,  Â  Â  X86::PMOVSXBQrm,  Â  Â  Â  Â  TB_NO_REVERSE },<br>
+  Â  { X86::PMOVSXBWrr,  Â  Â  X86::PMOVSXBWrm,  Â  Â  Â  Â  TB_NO_REVERSE },<br>
+  Â  { X86::PMOVSXDQrr,  Â  Â  X86::PMOVSXDQrm,  Â  Â  Â  Â  TB_NO_REVERSE },<br>
+  Â  { X86::PMOVSXWDrr,  Â  Â  X86::PMOVSXWDrm,  Â  Â  Â  Â  TB_NO_REVERSE },<br>
+  Â  { X86::PMOVSXWQrr,  Â  Â  X86::PMOVSXWQrm,  Â  Â  Â  Â  TB_NO_REVERSE },<br>
+  Â  { X86::PMOVZXBDrr,  Â  Â  X86::PMOVZXBDrm,  Â  Â  Â  Â  TB_NO_REVERSE },<br>
+  Â  { X86::PMOVZXBQrr,  Â  Â  X86::PMOVZXBQrm,  Â  Â  Â  Â  TB_NO_REVERSE },<br>
+  Â  { X86::PMOVZXBWrr,  Â  Â  X86::PMOVZXBWrm,  Â  Â  Â  Â  TB_NO_REVERSE },<br>
+  Â  { X86::PMOVZXDQrr,  Â  Â  X86::PMOVZXDQrm,  Â  Â  Â  Â  TB_NO_REVERSE },<br>
+  Â  { X86::PMOVZXWDrr,  Â  Â  X86::PMOVZXWDrm,  Â  Â  Â  Â  TB_NO_REVERSE },<br>
+  Â  { X86::PMOVZXWQrr,  Â  Â  X86::PMOVZXWQrm,  Â  Â  Â  Â  TB_NO_REVERSE },<br>
+  Â  { X86::PSHUFDri,  Â  Â  Â  X86::PSHUFDmi,  Â  Â  Â  Â  Â  TB_ALIGN_16 },<br>
+  Â  { X86::PSHUFHWri,  Â  Â  Â X86::PSHUFHWmi,  Â  Â  Â  Â  Â TB_ALIGN_16 },<br>
+  Â  { X86::PSHUFLWri,  Â  Â  Â X86::PSHUFLWmi,  Â  Â  Â  Â  Â TB_ALIGN_16 },<br>
+  Â  { X86::PTESTrr,  Â  Â  Â  Â X86::PTESTrm,  Â  Â  Â  Â  Â  Â TB_ALIGN_16 },<br>
+  Â  { X86::RCPPSr,  Â  Â  Â  Â  X86::RCPPSm,  Â  Â  Â  Â  Â  Â  TB_ALIGN_16 },<br>
+  Â  { X86::RCPSSr,  Â  Â  Â  Â  X86::RCPSSm,  Â  Â  Â  Â  Â  Â  0 },<br>
+  Â  { X86::RCPSSr_Int,  Â  Â  X86::RCPSSm_Int,  Â  Â  Â  Â  TB_NO_REVERSE },<br>
+  Â  { X86::ROUNDPDr,  Â  Â  Â  X86::ROUNDPDm,  Â  Â  Â  Â  Â  TB_ALIGN_16 },<br>
+  Â  { X86::ROUNDPSr,  Â  Â  Â  X86::ROUNDPSm,  Â  Â  Â  Â  Â  TB_ALIGN_16 },<br>
+  Â  { X86::ROUNDSDr,  Â  Â  Â  X86::ROUNDSDm,  Â  Â  Â  Â  Â  0 },<br>
+  Â  { X86::ROUNDSSr,  Â  Â  Â  X86::ROUNDSSm,  Â  Â  Â  Â  Â  0 },<br>
+  Â  { X86::RSQRTPSr,  Â  Â  Â  X86::RSQRTPSm,  Â  Â  Â  Â  Â  TB_ALIGN_16 },<br>
+  Â  { X86::RSQRTSSr,  Â  Â  Â  X86::RSQRTSSm,  Â  Â  Â  Â  Â  0 },<br>
+  Â  { X86::RSQRTSSr_Int,  Â  X86::RSQRTSSm_Int,  Â  Â  Â  TB_NO_REVERSE },<br>
+  Â  { X86::SQRTPDr,  Â  Â  Â  Â X86::SQRTPDm,  Â  Â  Â  Â  Â  Â TB_ALIGN_16 },<br>
+  Â  { X86::SQRTPSr,  Â  Â  Â  Â X86::SQRTPSm,  Â  Â  Â  Â  Â  Â TB_ALIGN_16 },<br>
+  Â  { X86::SQRTSDr,  Â  Â  Â  Â X86::SQRTSDm,  Â  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::SQRTSDr_Int,  Â  Â X86::SQRTSDm_Int,  Â  Â  Â  Â TB_NO_REVERSE },<br>
+  Â  { X86::SQRTSSr,  Â  Â  Â  Â X86::SQRTSSm,  Â  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::SQRTSSr_Int,  Â  Â X86::SQRTSSm_Int,  Â  Â  Â  Â TB_NO_REVERSE },<br>
+  Â  { X86::TEST16rr,  Â  Â  Â  X86::TEST16rm,  Â  Â  Â  Â  Â  0 },<br>
+  Â  { X86::TEST32rr,  Â  Â  Â  X86::TEST32rm,  Â  Â  Â  Â  Â  0 },<br>
+  Â  { X86::TEST64rr,  Â  Â  Â  X86::TEST64rm,  Â  Â  Â  Â  Â  0 },<br>
+  Â  { X86::TEST8rr,  Â  Â  Â  Â X86::TEST8rm,  Â  Â  Â  Â  Â  Â 0 },<br>
+  Â  // FIXME: TEST*rr EAX,EAX ---> CMP [mem], 0<br>
+  Â  { X86::UCOMISDrr,  Â  Â  Â X86::UCOMISDrm,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::UCOMISSrr,  Â  Â  Â X86::UCOMISSrm,  Â  Â  Â  Â  Â 0 },<br>
+<br>
+  Â  // MMX version of foldable instructions<br>
+  Â  { X86::MMX_CVTPD2PIirr,  Â X86::MMX_CVTPD2PIirm,  Â 0 },<br>
+  Â  { X86::MMX_CVTPI2PDirr,  Â X86::MMX_CVTPI2PDirm,  Â 0 },<br>
+  Â  { X86::MMX_CVTPS2PIirr,  Â X86::MMX_CVTPS2PIirm,  Â 0 },<br>
+  Â  { X86::MMX_CVTTPD2PIirr,  X86::MMX_CVTTPD2PIirm,  0 },<br>
+  Â  { X86::MMX_CVTTPS2PIirr,  X86::MMX_CVTTPS2PIirm,  0 },<br>
+  Â  { X86::MMX_MOVD64to64rr,  X86::MMX_MOVQ64rm,  Â  Â  0 },<br>
+  Â  { X86::MMX_PABSBrr64,  Â  Â X86::MMX_PABSBrm64,  Â  Â 0 },<br>
+  Â  { X86::MMX_PABSDrr64,  Â  Â X86::MMX_PABSDrm64,  Â  Â 0 },<br>
+  Â  { X86::MMX_PABSWrr64,  Â  Â X86::MMX_PABSWrm64,  Â  Â 0 },<br>
+  Â  { X86::MMX_PSHUFWri,  Â  Â  X86::MMX_PSHUFWmi,  Â  Â  0 },<br>
+<br>
+  Â  // 3DNow! version of foldable instructions<br>
+  Â  { X86::PF2IDrr,  Â  Â  Â  Â X86::PF2IDrm,  Â  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::PF2IWrr,  Â  Â  Â  Â X86::PF2IWrm,  Â  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::PFRCPrr,  Â  Â  Â  Â X86::PFRCPrm,  Â  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::PFRSQRTrr,  Â  Â  Â X86::PFRSQRTrm,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::PI2FDrr,  Â  Â  Â  Â X86::PI2FDrm,  Â  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::PI2FWrr,  Â  Â  Â  Â X86::PI2FWrm,  Â  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::PSWAPDrr,  Â  Â  Â  X86::PSWAPDrm,  Â  Â  Â  Â  Â  0 },<br>
+<br>
+  Â  // AVX 128-bit versions of foldable instructions<br>
+  Â  { X86::Int_VCOMISDrr,  Â X86::Int_VCOMISDrm,  Â  Â  Â TB_NO_REVERSE },<br>
+  Â  { X86::Int_VCOMISSrr,  Â X86::Int_VCOMISSrm,  Â  Â  Â TB_NO_REVERSE },<br>
+  Â  { X86::Int_VUCOMISDrr,  X86::Int_VUCOMISDrm,  Â  Â  TB_NO_REVERSE },<br>
+  Â  { X86::Int_VUCOMISSrr,  X86::Int_VUCOMISSrm,  Â  Â  TB_NO_REVERSE },<br>
+  Â  { X86::VCVTTSD2SI64rr,  X86::VCVTTSD2SI64rm,  Â  Â  0 },<br>
+  Â  { X86::Int_VCVTTSD2SI64rr,X86::<wbr>Int_VCVTTSD2SI64rm,TB_NO_<wbr>REVERSE },<br>
+  Â  { X86::VCVTTSD2SIrr,  Â  X86::VCVTTSD2SIrm,  Â  Â  Â  0 },<br>
+  Â  { X86::Int_VCVTTSD2SIrr,X86::<wbr>Int_VCVTTSD2SIrm,  Â  TB_NO_REVERSE },<br>
+  Â  { X86::VCVTTSS2SI64rr,  X86::VCVTTSS2SI64rm,  Â  Â  0 },<br>
+  Â  { X86::Int_VCVTTSS2SI64rr,X86::<wbr>Int_VCVTTSS2SI64rm,TB_NO_<wbr>REVERSE },<br>
+  Â  { X86::VCVTTSS2SIrr,  Â  X86::VCVTTSS2SIrm,  Â  Â  Â  0 },<br>
+  Â  { X86::Int_VCVTTSS2SIrr,X86::<wbr>Int_VCVTTSS2SIrm,  Â  TB_NO_REVERSE },<br>
+  Â  { X86::VCVTSD2SI64rr,  Â X86::VCVTSD2SI64rm,  Â  Â  Â TB_NO_REVERSE },<br>
+  Â  { X86::VCVTSD2SIrr,  Â  Â X86::VCVTSD2SIrm,  Â  Â  Â  Â TB_NO_REVERSE },<br>
+  Â  { X86::VCVTSS2SI64rr,  Â X86::VCVTSS2SI64rm,  Â  Â  Â TB_NO_REVERSE },<br>
+  Â  { X86::VCVTSS2SIrr,  Â  Â X86::VCVTSS2SIrm,  Â  Â  Â  Â TB_NO_REVERSE },<br>
+  Â  { X86::VCVTDQ2PDrr,  Â  Â X86::VCVTDQ2PDrm,  Â  Â  Â  Â TB_NO_REVERSE },<br>
+  Â  { X86::VCVTDQ2PSrr,  Â  Â X86::VCVTDQ2PSrm,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VCVTPD2DQrr,  Â  Â X86::VCVTPD2DQrm,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VCVTPD2PSrr,  Â  Â X86::VCVTPD2PSrm,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VCVTPS2DQrr,  Â  Â X86::VCVTPS2DQrm,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VCVTPS2PDrr,  Â  Â X86::VCVTPS2PDrm,  Â  Â  Â  Â TB_NO_REVERSE },<br>
+  Â  { X86::VCVTTPD2DQrr,  Â  X86::VCVTTPD2DQrm,  Â  Â  Â  0 },<br>
+  Â  { X86::VCVTTPS2DQrr,  Â  X86::VCVTTPS2DQrm,  Â  Â  Â  0 },<br>
+  Â  { X86::VMOV64toPQIrr,  Â X86::VMOVQI2PQIrm,  Â  Â  Â  0 },<br>
+  Â  { X86::VMOV64toSDrr,  Â  X86::VMOV64toSDrm,  Â  Â  Â  0 },<br>
+  Â  { X86::VMOVAPDrr,  Â  Â  Â X86::VMOVAPDrm,  Â  Â  Â  Â  Â TB_ALIGN_16 },<br>
+  Â  { X86::VMOVAPSrr,  Â  Â  Â X86::VMOVAPSrm,  Â  Â  Â  Â  Â TB_ALIGN_16 },<br>
+  Â  { X86::VMOVDDUPrr,  Â  Â  X86::VMOVDDUPrm,  Â  Â  Â  Â  TB_NO_REVERSE },<br>
+  Â  { X86::VMOVDI2PDIrr,  Â  X86::VMOVDI2PDIrm,  Â  Â  Â  0 },<br>
+  Â  { X86::VMOVDI2SSrr,  Â  Â X86::VMOVDI2SSrm,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VMOVDQArr,  Â  Â  Â X86::VMOVDQArm,  Â  Â  Â  Â  Â TB_ALIGN_16 },<br>
+  Â  { X86::VMOVDQUrr,  Â  Â  Â X86::VMOVDQUrm,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VMOVSLDUPrr,  Â  Â X86::VMOVSLDUPrm,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VMOVSHDUPrr,  Â  Â X86::VMOVSHDUPrm,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VMOVUPDrr,  Â  Â  Â X86::VMOVUPDrm,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VMOVUPSrr,  Â  Â  Â X86::VMOVUPSrm,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VMOVZPQILo2PQIrr,X86::<wbr>VMOVQI2PQIrm,  Â  Â  Â  TB_NO_REVERSE },<br>
+  Â  { X86::VPABSBrr,  Â  Â  Â  X86::VPABSBrm,  Â  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPABSDrr,  Â  Â  Â  X86::VPABSDrm,  Â  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPABSWrr,  Â  Â  Â  X86::VPABSWrm,  Â  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPCMPESTRIrr,  Â  X86::VPCMPESTRIrm,  Â  Â  Â  0 },<br>
+  Â  { X86::VPCMPESTRM128rr, X86::VPCMPESTRM128rm,  Â  Â 0 },<br>
+  Â  { X86::VPCMPISTRIrr,  Â  X86::VPCMPISTRIrm,  Â  Â  Â  0 },<br>
+  Â  { X86::VPCMPISTRM128rr, X86::VPCMPISTRM128rm,  Â  Â 0 },<br>
+  Â  { X86::VPHMINPOSUWrr128, X86::VPHMINPOSUWrm128,  Â 0 },<br>
+  Â  { X86::VPERMILPDri,  Â  Â X86::VPERMILPDmi,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPERMILPSri,  Â  Â X86::VPERMILPSmi,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPMOVSXBDrr,  Â  Â X86::VPMOVSXBDrm,  Â  Â  Â  Â TB_NO_REVERSE },<br>
+  Â  { X86::VPMOVSXBQrr,  Â  Â X86::VPMOVSXBQrm,  Â  Â  Â  Â TB_NO_REVERSE },<br>
+  Â  { X86::VPMOVSXBWrr,  Â  Â X86::VPMOVSXBWrm,  Â  Â  Â  Â TB_NO_REVERSE },<br>
+  Â  { X86::VPMOVSXDQrr,  Â  Â X86::VPMOVSXDQrm,  Â  Â  Â  Â TB_NO_REVERSE },<br>
+  Â  { X86::VPMOVSXWDrr,  Â  Â X86::VPMOVSXWDrm,  Â  Â  Â  Â TB_NO_REVERSE },<br>
+  Â  { X86::VPMOVSXWQrr,  Â  Â X86::VPMOVSXWQrm,  Â  Â  Â  Â TB_NO_REVERSE },<br>
+  Â  { X86::VPMOVZXBDrr,  Â  Â X86::VPMOVZXBDrm,  Â  Â  Â  Â TB_NO_REVERSE },<br>
+  Â  { X86::VPMOVZXBQrr,  Â  Â X86::VPMOVZXBQrm,  Â  Â  Â  Â TB_NO_REVERSE },<br>
+  Â  { X86::VPMOVZXBWrr,  Â  Â X86::VPMOVZXBWrm,  Â  Â  Â  Â TB_NO_REVERSE },<br>
+  Â  { X86::VPMOVZXDQrr,  Â  Â X86::VPMOVZXDQrm,  Â  Â  Â  Â TB_NO_REVERSE },<br>
+  Â  { X86::VPMOVZXWDrr,  Â  Â X86::VPMOVZXWDrm,  Â  Â  Â  Â TB_NO_REVERSE },<br>
+  Â  { X86::VPMOVZXWQrr,  Â  Â X86::VPMOVZXWQrm,  Â  Â  Â  Â TB_NO_REVERSE },<br>
+  Â  { X86::VPSHUFDri,  Â  Â  Â X86::VPSHUFDmi,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPSHUFHWri,  Â  Â  X86::VPSHUFHWmi,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPSHUFLWri,  Â  Â  X86::VPSHUFLWmi,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPTESTrr,  Â  Â  Â  X86::VPTESTrm,  Â  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VRCPPSr,  Â  Â  Â  Â X86::VRCPPSm,  Â  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VROUNDPDr,  Â  Â  Â X86::VROUNDPDm,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VROUNDPSr,  Â  Â  Â X86::VROUNDPSm,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VRSQRTPSr,  Â  Â  Â X86::VRSQRTPSm,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VSQRTPDr,  Â  Â  Â  X86::VSQRTPDm,  Â  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VSQRTPSr,  Â  Â  Â  X86::VSQRTPSm,  Â  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VTESTPDrr,  Â  Â  Â X86::VTESTPDrm,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VTESTPSrr,  Â  Â  Â X86::VTESTPSrm,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VUCOMISDrr,  Â  Â  X86::VUCOMISDrm,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VUCOMISSrr,  Â  Â  X86::VUCOMISSrm,  Â  Â  Â  Â  0 },<br>
+<br>
+  Â  // AVX 256-bit foldable instructions<br>
+  Â  { X86::VCVTDQ2PDYrr,  Â  X86::VCVTDQ2PDYrm,  Â  Â  Â  TB_NO_REVERSE },<br>
+  Â  { X86::VCVTDQ2PSYrr,  Â  X86::VCVTDQ2PSYrm,  Â  Â  Â  0 },<br>
+  Â  { X86::VCVTPD2DQYrr,  Â  X86::VCVTPD2DQYrm,  Â  Â  Â  0 },<br>
+  Â  { X86::VCVTPD2PSYrr,  Â  X86::VCVTPD2PSYrm,  Â  Â  Â  0 },<br>
+  Â  { X86::VCVTPS2DQYrr,  Â  X86::VCVTPS2DQYrm,  Â  Â  Â  0 },<br>
+  Â  { X86::VCVTPS2PDYrr,  Â  X86::VCVTPS2PDYrm,  Â  Â  Â  TB_NO_REVERSE },<br>
+  Â  { X86::VCVTTPD2DQYrr,  Â X86::VCVTTPD2DQYrm,  Â  Â  Â 0 },<br>
+  Â  { X86::VCVTTPS2DQYrr,  Â X86::VCVTTPS2DQYrm,  Â  Â  Â 0 },<br>
+  Â  { X86::VMOVAPDYrr,  Â  Â  X86::VMOVAPDYrm,  Â  Â  Â  Â  TB_ALIGN_32 },<br>
+  Â  { X86::VMOVAPSYrr,  Â  Â  X86::VMOVAPSYrm,  Â  Â  Â  Â  TB_ALIGN_32 },<br>
+  Â  { X86::VMOVDDUPYrr,  Â  Â X86::VMOVDDUPYrm,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VMOVDQAYrr,  Â  Â  X86::VMOVDQAYrm,  Â  Â  Â  Â  TB_ALIGN_32 },<br>
+  Â  { X86::VMOVDQUYrr,  Â  Â  X86::VMOVDQUYrm,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VMOVSLDUPYrr,  Â  X86::VMOVSLDUPYrm,  Â  Â  Â  0 },<br>
+  Â  { X86::VMOVSHDUPYrr,  Â  X86::VMOVSHDUPYrm,  Â  Â  Â  0 },<br>
+  Â  { X86::VMOVUPDYrr,  Â  Â  X86::VMOVUPDYrm,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VMOVUPSYrr,  Â  Â  X86::VMOVUPSYrm,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPERMILPDYri,  Â  X86::VPERMILPDYmi,  Â  Â  Â  0 },<br>
+  Â  { X86::VPERMILPSYri,  Â  X86::VPERMILPSYmi,  Â  Â  Â  0 },<br>
+  Â  { X86::VPTESTYrr,  Â  Â  Â X86::VPTESTYrm,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VRCPPSYr,  Â  Â  Â  X86::VRCPPSYm,  Â  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VROUNDYPDr,  Â  Â  X86::VROUNDYPDm,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VROUNDYPSr,  Â  Â  X86::VROUNDYPSm,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VRSQRTPSYr,  Â  Â  X86::VRSQRTPSYm,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VSQRTPDYr,  Â  Â  Â X86::VSQRTPDYm,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VSQRTPSYr,  Â  Â  Â X86::VSQRTPSYm,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VTESTPDYrr,  Â  Â  X86::VTESTPDYrm,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VTESTPSYrr,  Â  Â  X86::VTESTPSYrm,  Â  Â  Â  Â  0 },<br>
+<br>
+  Â  // AVX2 foldable instructions<br>
+<br>
+  Â  // VBROADCASTS{SD}rr register instructions were an AVX2 addition while the<br>
+  Â  // VBROADCASTS{SD}rm memory instructions were available from AVX1.<br>
+  Â  // TB_NO_REVERSE prevents unfolding from introducing an illegal instruction<br>
+  Â  // on AVX1 targets. The VPBROADCAST instructions are all AVX2 instructions<br>
+  Â  // so they don't need an equivalent limitation.<br>
+  Â  { X86::VBROADCASTSSrr,  X86::VBROADCASTSSrm,  Â  Â  TB_NO_REVERSE },<br>
+  Â  { X86::VBROADCASTSSYrr, X86::VBROADCASTSSYrm,  Â  Â TB_NO_REVERSE },<br>
+  Â  { X86::VBROADCASTSDYrr, X86::VBROADCASTSDYrm,  Â  Â TB_NO_REVERSE },<br>
+  Â  { X86::VPABSBYrr,  Â  Â  Â X86::VPABSBYrm,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPABSDYrr,  Â  Â  Â X86::VPABSDYrm,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPABSWYrr,  Â  Â  Â X86::VPABSWYrm,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPBROADCASTBrr,  X86::VPBROADCASTBrm,  Â  Â  TB_NO_REVERSE },<br>
+  Â  { X86::VPBROADCASTBYrr, X86::VPBROADCASTBYrm,  Â  Â TB_NO_REVERSE },<br>
+  Â  { X86::VPBROADCASTDrr,  X86::VPBROADCASTDrm,  Â  Â  TB_NO_REVERSE },<br>
+  Â  { X86::VPBROADCASTDYrr, X86::VPBROADCASTDYrm,  Â  Â TB_NO_REVERSE },<br>
+  Â  { X86::VPBROADCASTQrr,  X86::VPBROADCASTQrm,  Â  Â  TB_NO_REVERSE },<br>
+  Â  { X86::VPBROADCASTQYrr, X86::VPBROADCASTQYrm,  Â  Â TB_NO_REVERSE },<br>
+  Â  { X86::VPBROADCASTWrr,  X86::VPBROADCASTWrm,  Â  Â  TB_NO_REVERSE },<br>
+  Â  { X86::VPBROADCASTWYrr, X86::VPBROADCASTWYrm,  Â  Â TB_NO_REVERSE },<br>
+  Â  { X86::VPERMPDYri,  Â  Â  X86::VPERMPDYmi,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPERMQYri,  Â  Â  Â X86::VPERMQYmi,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPMOVSXBDYrr,  Â  X86::VPMOVSXBDYrm,  Â  Â  Â  TB_NO_REVERSE },<br>
+  Â  { X86::VPMOVSXBQYrr,  Â  X86::VPMOVSXBQYrm,  Â  Â  Â  TB_NO_REVERSE },<br>
+  Â  { X86::VPMOVSXBWYrr,  Â  X86::VPMOVSXBWYrm,  Â  Â  Â  0 },<br>
+  Â  { X86::VPMOVSXDQYrr,  Â  X86::VPMOVSXDQYrm,  Â  Â  Â  0 },<br>
+  Â  { X86::VPMOVSXWDYrr,  Â  X86::VPMOVSXWDYrm,  Â  Â  Â  0 },<br>
+  Â  { X86::VPMOVSXWQYrr,  Â  X86::VPMOVSXWQYrm,  Â  Â  Â  TB_NO_REVERSE },<br>
+  Â  { X86::VPMOVZXBDYrr,  Â  X86::VPMOVZXBDYrm,  Â  Â  Â  TB_NO_REVERSE },<br>
+  Â  { X86::VPMOVZXBQYrr,  Â  X86::VPMOVZXBQYrm,  Â  Â  Â  TB_NO_REVERSE },<br>
+  Â  { X86::VPMOVZXBWYrr,  Â  X86::VPMOVZXBWYrm,  Â  Â  Â  0 },<br>
+  Â  { X86::VPMOVZXDQYrr,  Â  X86::VPMOVZXDQYrm,  Â  Â  Â  0 },<br>
+  Â  { X86::VPMOVZXWDYrr,  Â  X86::VPMOVZXWDYrm,  Â  Â  Â  0 },<br>
+  Â  { X86::VPMOVZXWQYrr,  Â  X86::VPMOVZXWQYrm,  Â  Â  Â  TB_NO_REVERSE },<br>
+  Â  { X86::VPSHUFDYri,  Â  Â  X86::VPSHUFDYmi,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPSHUFHWYri,  Â  Â X86::VPSHUFHWYmi,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPSHUFLWYri,  Â  Â X86::VPSHUFLWYmi,  Â  Â  Â  Â 0 },<br>
+<br>
+  Â  // XOP foldable instructions<br>
+  Â  { X86::VFRCZPDrr,  Â  Â  Â  Â  X86::VFRCZPDrm,  Â  Â  Â  0 },<br>
+  Â  { X86::VFRCZPDrrY,  Â  Â  Â  Â X86::VFRCZPDrmY,  Â  Â  Â 0 },<br>
+  Â  { X86::VFRCZPSrr,  Â  Â  Â  Â  X86::VFRCZPSrm,  Â  Â  Â  0 },<br>
+  Â  { X86::VFRCZPSrrY,  Â  Â  Â  Â X86::VFRCZPSrmY,  Â  Â  Â 0 },<br>
+  Â  { X86::VFRCZSDrr,  Â  Â  Â  Â  X86::VFRCZSDrm,  Â  Â  Â  0 },<br>
+  Â  { X86::VFRCZSSrr,  Â  Â  Â  Â  X86::VFRCZSSrm,  Â  Â  Â  0 },<br>
+  Â  { X86::VPHADDBDrr,  Â  Â  Â  Â X86::VPHADDBDrm,  Â  Â  Â 0 },<br>
+  Â  { X86::VPHADDBQrr,  Â  Â  Â  Â X86::VPHADDBQrm,  Â  Â  Â 0 },<br>
+  Â  { X86::VPHADDBWrr,  Â  Â  Â  Â X86::VPHADDBWrm,  Â  Â  Â 0 },<br>
+  Â  { X86::VPHADDDQrr,  Â  Â  Â  Â X86::VPHADDDQrm,  Â  Â  Â 0 },<br>
+  Â  { X86::VPHADDWDrr,  Â  Â  Â  Â X86::VPHADDWDrm,  Â  Â  Â 0 },<br>
+  Â  { X86::VPHADDWQrr,  Â  Â  Â  Â X86::VPHADDWQrm,  Â  Â  Â 0 },<br>
+  Â  { X86::VPHADDUBDrr,  Â  Â  Â  X86::VPHADDUBDrm,  Â  Â  0 },<br>
+  Â  { X86::VPHADDUBQrr,  Â  Â  Â  X86::VPHADDUBQrm,  Â  Â  0 },<br>
+  Â  { X86::VPHADDUBWrr,  Â  Â  Â  X86::VPHADDUBWrm,  Â  Â  0 },<br>
+  Â  { X86::VPHADDUDQrr,  Â  Â  Â  X86::VPHADDUDQrm,  Â  Â  0 },<br>
+  Â  { X86::VPHADDUWDrr,  Â  Â  Â  X86::VPHADDUWDrm,  Â  Â  0 },<br>
+  Â  { X86::VPHADDUWQrr,  Â  Â  Â  X86::VPHADDUWQrm,  Â  Â  0 },<br>
+  Â  { X86::VPHSUBBWrr,  Â  Â  Â  Â X86::VPHSUBBWrm,  Â  Â  Â 0 },<br>
+  Â  { X86::VPHSUBDQrr,  Â  Â  Â  Â X86::VPHSUBDQrm,  Â  Â  Â 0 },<br>
+  Â  { X86::VPHSUBWDrr,  Â  Â  Â  Â X86::VPHSUBWDrm,  Â  Â  Â 0 },<br>
+  Â  { X86::VPROTBri,  Â  Â  Â  Â  Â X86::VPROTBmi,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPROTBrr,  Â  Â  Â  Â  Â X86::VPROTBmr,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPROTDri,  Â  Â  Â  Â  Â X86::VPROTDmi,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPROTDrr,  Â  Â  Â  Â  Â X86::VPROTDmr,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPROTQri,  Â  Â  Â  Â  Â X86::VPROTQmi,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPROTQrr,  Â  Â  Â  Â  Â X86::VPROTQmr,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPROTWri,  Â  Â  Â  Â  Â X86::VPROTWmi,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPROTWrr,  Â  Â  Â  Â  Â X86::VPROTWmr,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPSHABrr,  Â  Â  Â  Â  Â X86::VPSHABmr,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPSHADrr,  Â  Â  Â  Â  Â X86::VPSHADmr,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPSHAQrr,  Â  Â  Â  Â  Â X86::VPSHAQmr,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPSHAWrr,  Â  Â  Â  Â  Â X86::VPSHAWmr,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPSHLBrr,  Â  Â  Â  Â  Â X86::VPSHLBmr,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPSHLDrr,  Â  Â  Â  Â  Â X86::VPSHLDmr,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPSHLQrr,  Â  Â  Â  Â  Â X86::VPSHLQmr,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPSHLWrr,  Â  Â  Â  Â  Â X86::VPSHLWmr,  Â  Â  Â  Â 0 },<br>
+<br>
+  Â  // LWP foldable instructions<br>
+  Â  { X86::LWPINS32rri,  Â  Â  Â  X86::LWPINS32rmi,  Â  Â  0 },<br>
+  Â  { X86::LWPINS64rri,  Â  Â  Â  X86::LWPINS64rmi,  Â  Â  0 },<br>
+  Â  { X86::LWPVAL32rri,  Â  Â  Â  X86::LWPVAL32rmi,  Â  Â  0 },<br>
+  Â  { X86::LWPVAL64rri,  Â  Â  Â  X86::LWPVAL64rmi,  Â  Â  0 },<br>
+<br>
+  Â  // BMI/BMI2/LZCNT/POPCNT/TBM foldable instructions<br>
+  Â  { X86::BEXTR32rr,  Â  Â  Â X86::BEXTR32rm,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::BEXTR64rr,  Â  Â  Â X86::BEXTR64rm,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::BEXTRI32ri,  Â  Â  X86::BEXTRI32mi,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::BEXTRI64ri,  Â  Â  X86::BEXTRI64mi,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::BLCFILL32rr,  Â  Â X86::BLCFILL32rm,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::BLCFILL64rr,  Â  Â X86::BLCFILL64rm,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::BLCI32rr,  Â  Â  Â  X86::BLCI32rm,  Â  Â  Â  Â  Â  0 },<br>
+  Â  { X86::BLCI64rr,  Â  Â  Â  X86::BLCI64rm,  Â  Â  Â  Â  Â  0 },<br>
+  Â  { X86::BLCIC32rr,  Â  Â  Â X86::BLCIC32rm,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::BLCIC64rr,  Â  Â  Â X86::BLCIC64rm,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::BLCMSK32rr,  Â  Â  X86::BLCMSK32rm,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::BLCMSK64rr,  Â  Â  X86::BLCMSK64rm,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::BLCS32rr,  Â  Â  Â  X86::BLCS32rm,  Â  Â  Â  Â  Â  0 },<br>
+  Â  { X86::BLCS64rr,  Â  Â  Â  X86::BLCS64rm,  Â  Â  Â  Â  Â  0 },<br>
+  Â  { X86::BLSFILL32rr,  Â  Â X86::BLSFILL32rm,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::BLSFILL64rr,  Â  Â X86::BLSFILL64rm,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::BLSI32rr,  Â  Â  Â  X86::BLSI32rm,  Â  Â  Â  Â  Â  0 },<br>
+  Â  { X86::BLSI64rr,  Â  Â  Â  X86::BLSI64rm,  Â  Â  Â  Â  Â  0 },<br>
+  Â  { X86::BLSIC32rr,  Â  Â  Â X86::BLSIC32rm,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::BLSIC64rr,  Â  Â  Â X86::BLSIC64rm,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::BLSMSK32rr,  Â  Â  X86::BLSMSK32rm,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::BLSMSK64rr,  Â  Â  X86::BLSMSK64rm,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::BLSR32rr,  Â  Â  Â  X86::BLSR32rm,  Â  Â  Â  Â  Â  0 },<br>
+  Â  { X86::BLSR64rr,  Â  Â  Â  X86::BLSR64rm,  Â  Â  Â  Â  Â  0 },<br>
+  Â  { X86::BZHI32rr,  Â  Â  Â  X86::BZHI32rm,  Â  Â  Â  Â  Â  0 },<br>
+  Â  { X86::BZHI64rr,  Â  Â  Â  X86::BZHI64rm,  Â  Â  Â  Â  Â  0 },<br>
+  Â  { X86::LZCNT16rr,  Â  Â  Â X86::LZCNT16rm,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::LZCNT32rr,  Â  Â  Â X86::LZCNT32rm,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::LZCNT64rr,  Â  Â  Â X86::LZCNT64rm,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::POPCNT16rr,  Â  Â  X86::POPCNT16rm,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::POPCNT32rr,  Â  Â  X86::POPCNT32rm,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::POPCNT64rr,  Â  Â  X86::POPCNT64rm,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::RORX32ri,  Â  Â  Â  X86::RORX32mi,  Â  Â  Â  Â  Â  0 },<br>
+  Â  { X86::RORX64ri,  Â  Â  Â  X86::RORX64mi,  Â  Â  Â  Â  Â  0 },<br>
+  Â  { X86::SARX32rr,  Â  Â  Â  X86::SARX32rm,  Â  Â  Â  Â  Â  0 },<br>
+  Â  { X86::SARX64rr,  Â  Â  Â  X86::SARX64rm,  Â  Â  Â  Â  Â  0 },<br>
+  Â  { X86::SHRX32rr,  Â  Â  Â  X86::SHRX32rm,  Â  Â  Â  Â  Â  0 },<br>
+  Â  { X86::SHRX64rr,  Â  Â  Â  X86::SHRX64rm,  Â  Â  Â  Â  Â  0 },<br>
+  Â  { X86::SHLX32rr,  Â  Â  Â  X86::SHLX32rm,  Â  Â  Â  Â  Â  0 },<br>
+  Â  { X86::SHLX64rr,  Â  Â  Â  X86::SHLX64rm,  Â  Â  Â  Â  Â  0 },<br>
+  Â  { X86::T1MSKC32rr,  Â  Â  X86::T1MSKC32rm,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::T1MSKC64rr,  Â  Â  X86::T1MSKC64rm,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::TZCNT16rr,  Â  Â  Â X86::TZCNT16rm,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::TZCNT32rr,  Â  Â  Â X86::TZCNT32rm,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::TZCNT64rr,  Â  Â  Â X86::TZCNT64rm,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::TZMSK32rr,  Â  Â  Â X86::TZMSK32rm,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::TZMSK64rr,  Â  Â  Â X86::TZMSK64rm,  Â  Â  Â  Â  Â 0 },<br>
+<br>
+  Â  // AVX-512 foldable instructions<br>
+  Â  { X86::VBROADCASTSSZr,  Â X86::VBROADCASTSSZm,  Â  Â TB_NO_REVERSE },<br>
+  Â  { X86::VBROADCASTSDZr,  Â X86::VBROADCASTSDZm,  Â  Â TB_NO_REVERSE },<br>
+  Â  { X86::VMOV64toPQIZrr,  Â X86::VMOVQI2PQIZrm,  Â  Â  0 },<br>
+  Â  { X86::VMOV64toSDZrr,  Â  X86::VMOV64toSDZrm,  Â  Â  0 },<br>
+  Â  { X86::VMOVDI2PDIZrr,  Â  X86::VMOVDI2PDIZrm,  Â  Â  0 },<br>
+  Â  { X86::VMOVDI2SSZrr,  Â  Â X86::VMOVDI2SSZrm,  Â  Â  Â 0 },<br>
+  Â  { X86::VMOVAPDZrr,  Â  Â  Â X86::VMOVAPDZrm,  Â  Â  Â  Â TB_ALIGN_64 },<br>
+  Â  { X86::VMOVAPSZrr,  Â  Â  Â X86::VMOVAPSZrm,  Â  Â  Â  Â TB_ALIGN_64 },<br>
+  Â  { X86::VMOVDQA32Zrr,  Â  Â X86::VMOVDQA32Zrm,  Â  Â  Â TB_ALIGN_64 },<br>
+  Â  { X86::VMOVDQA64Zrr,  Â  Â X86::VMOVDQA64Zrm,  Â  Â  Â TB_ALIGN_64 },<br>
+  Â  { X86::VMOVDQU8Zrr,  Â  Â  X86::VMOVDQU8Zrm,  Â  Â  Â  0 },<br>
+  Â  { X86::VMOVDQU16Zrr,  Â  Â X86::VMOVDQU16Zrm,  Â  Â  Â 0 },<br>
+  Â  { X86::VMOVDQU32Zrr,  Â  Â X86::VMOVDQU32Zrm,  Â  Â  Â 0 },<br>
+  Â  { X86::VMOVDQU64Zrr,  Â  Â X86::VMOVDQU64Zrm,  Â  Â  Â 0 },<br>
+  Â  { X86::VMOVUPDZrr,  Â  Â  Â X86::VMOVUPDZrm,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VMOVUPSZrr,  Â  Â  Â X86::VMOVUPSZrm,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VMOVZPQILo2PQIZrr,X86::<wbr>VMOVQI2PQIZrm,  Â  Â  TB_NO_REVERSE },<br>
+  Â  { X86::VPABSBZrr,  Â  Â  Â  X86::VPABSBZrm,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPABSDZrr,  Â  Â  Â  X86::VPABSDZrm,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPABSQZrr,  Â  Â  Â  X86::VPABSQZrm,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPABSWZrr,  Â  Â  Â  X86::VPABSWZrm,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPERMILPDZri,  Â  Â X86::VPERMILPDZmi,  Â  Â  Â 0 },<br>
+  Â  { X86::VPERMILPSZri,  Â  Â X86::VPERMILPSZmi,  Â  Â  Â 0 },<br>
+  Â  { X86::VPERMPDZri,  Â  Â  Â X86::VPERMPDZmi,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPERMQZri,  Â  Â  Â  X86::VPERMQZmi,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPMOVSXBDZrr,  Â  Â X86::VPMOVSXBDZrm,  Â  Â  Â 0 },<br>
+  Â  { X86::VPMOVSXBQZrr,  Â  Â X86::VPMOVSXBQZrm,  Â  Â  Â TB_NO_REVERSE },<br>
+  Â  { X86::VPMOVSXBWZrr,  Â  Â X86::VPMOVSXBWZrm,  Â  Â  Â 0 },<br>
+  Â  { X86::VPMOVSXDQZrr,  Â  Â X86::VPMOVSXDQZrm,  Â  Â  Â 0 },<br>
+  Â  { X86::VPMOVSXWDZrr,  Â  Â X86::VPMOVSXWDZrm,  Â  Â  Â 0 },<br>
+  Â  { X86::VPMOVSXWQZrr,  Â  Â X86::VPMOVSXWQZrm,  Â  Â  Â 0 },<br>
+  Â  { X86::VPMOVZXBDZrr,  Â  Â X86::VPMOVZXBDZrm,  Â  Â  Â 0 },<br>
+  Â  { X86::VPMOVZXBQZrr,  Â  Â X86::VPMOVZXBQZrm,  Â  Â  Â TB_NO_REVERSE },<br>
+  Â  { X86::VPMOVZXBWZrr,  Â  Â X86::VPMOVZXBWZrm,  Â  Â  Â 0 },<br>
+  Â  { X86::VPMOVZXDQZrr,  Â  Â X86::VPMOVZXDQZrm,  Â  Â  Â 0 },<br>
+  Â  { X86::VPMOVZXWDZrr,  Â  Â X86::VPMOVZXWDZrm,  Â  Â  Â 0 },<br>
+  Â  { X86::VPMOVZXWQZrr,  Â  Â X86::VPMOVZXWQZrm,  Â  Â  Â 0 },<br>
+  Â  { X86::VPOPCNTDZrr,  Â  Â  X86::VPOPCNTDZrm,  Â  Â  Â  0 },<br>
+  Â  { X86::VPOPCNTQZrr,  Â  Â  X86::VPOPCNTQZrm,  Â  Â  Â  0 },<br>
+  Â  { X86::VPSHUFDZri,  Â  Â  Â X86::VPSHUFDZmi,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPSHUFHWZri,  Â  Â  X86::VPSHUFHWZmi,  Â  Â  Â  0 },<br>
+  Â  { X86::VPSHUFLWZri,  Â  Â  X86::VPSHUFLWZmi,  Â  Â  Â  0 },<br>
+  Â  { X86::VPSLLDQZ512rr,  Â  X86::VPSLLDQZ512rm,  Â  Â  0 },<br>
+  Â  { X86::VPSLLDZri,  Â  Â  Â  X86::VPSLLDZmi,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPSLLQZri,  Â  Â  Â  X86::VPSLLQZmi,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPSLLWZri,  Â  Â  Â  X86::VPSLLWZmi,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPSRADZri,  Â  Â  Â  X86::VPSRADZmi,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPSRAQZri,  Â  Â  Â  X86::VPSRAQZmi,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPSRAWZri,  Â  Â  Â  X86::VPSRAWZmi,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPSRLDQZ512rr,  Â  X86::VPSRLDQZ512rm,  Â  Â  0 },<br>
+  Â  { X86::VPSRLDZri,  Â  Â  Â  X86::VPSRLDZmi,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPSRLQZri,  Â  Â  Â  X86::VPSRLQZmi,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPSRLWZri,  Â  Â  Â  X86::VPSRLWZmi,  Â  Â  Â  Â  0 },<br>
+<br>
+  Â  // AVX-512 foldable instructions (256-bit versions)<br>
+  Â  { X86::VBROADCASTSSZ256r,  Â  X86::VBROADCASTSSZ256m,  Â  TB_NO_REVERSE },<br>
+  Â  { X86::VBROADCASTSDZ256r,  Â  X86::VBROADCASTSDZ256m,  Â  TB_NO_REVERSE },<br>
+  Â  { X86::VMOVAPDZ256rr,  Â  Â  Â  X86::VMOVAPDZ256rm,  Â  Â  Â  TB_ALIGN_32 },<br>
+  Â  { X86::VMOVAPSZ256rr,  Â  Â  Â  X86::VMOVAPSZ256rm,  Â  Â  Â  TB_ALIGN_32 },<br>
+  Â  { X86::VMOVDQA32Z256rr,  Â  Â  X86::VMOVDQA32Z256rm,  Â  Â  TB_ALIGN_32 },<br>
+  Â  { X86::VMOVDQA64Z256rr,  Â  Â  X86::VMOVDQA64Z256rm,  Â  Â  TB_ALIGN_32 },<br>
+  Â  { X86::VMOVDQU8Z256rr,  Â  Â  Â X86::VMOVDQU8Z256rm,  Â  Â  Â 0 },<br>
+  Â  { X86::VMOVDQU16Z256rr,  Â  Â  X86::VMOVDQU16Z256rm,  Â  Â  0 },<br>
+  Â  { X86::VMOVDQU32Z256rr,  Â  Â  X86::VMOVDQU32Z256rm,  Â  Â  0 },<br>
+  Â  { X86::VMOVDQU64Z256rr,  Â  Â  X86::VMOVDQU64Z256rm,  Â  Â  0 },<br>
+  Â  { X86::VMOVUPDZ256rr,  Â  Â  Â  X86::VMOVUPDZ256rm,  Â  Â  Â  0 },<br>
+  Â  { X86::VMOVUPSZ256rr,  Â  Â  Â  X86::VMOVUPSZ256rm,  Â  Â  Â  0 },<br>
+  Â  { X86::VPABSBZ256rr,  Â  Â  Â  Â X86::VPABSBZ256rm,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPABSDZ256rr,  Â  Â  Â  Â X86::VPABSDZ256rm,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPABSQZ256rr,  Â  Â  Â  Â X86::VPABSQZ256rm,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPABSWZ256rr,  Â  Â  Â  Â X86::VPABSWZ256rm,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPERMILPDZ256ri,  Â  Â  X86::VPERMILPDZ256mi,  Â  Â  0 },<br>
+  Â  { X86::VPERMILPSZ256ri,  Â  Â  X86::VPERMILPSZ256mi,  Â  Â  0 },<br>
+  Â  { X86::VPERMPDZ256ri,  Â  Â  Â  X86::VPERMPDZ256mi,  Â  Â  Â  0 },<br>
+  Â  { X86::VPERMQZ256ri,  Â  Â  Â  Â X86::VPERMQZ256mi,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPMOVSXBDZ256rr,  Â  Â  X86::VPMOVSXBDZ256rm,  Â  Â  TB_NO_REVERSE },<br>
+  Â  { X86::VPMOVSXBQZ256rr,  Â  Â  X86::VPMOVSXBQZ256rm,  Â  Â  TB_NO_REVERSE },<br>
+  Â  { X86::VPMOVSXBWZ256rr,  Â  Â  X86::VPMOVSXBWZ256rm,  Â  Â  0 },<br>
+  Â  { X86::VPMOVSXDQZ256rr,  Â  Â  X86::VPMOVSXDQZ256rm,  Â  Â  0 },<br>
+  Â  { X86::VPMOVSXWDZ256rr,  Â  Â  X86::VPMOVSXWDZ256rm,  Â  Â  0 },<br>
+  Â  { X86::VPMOVSXWQZ256rr,  Â  Â  X86::VPMOVSXWQZ256rm,  Â  Â  TB_NO_REVERSE },<br>
+  Â  { X86::VPMOVZXBDZ256rr,  Â  Â  X86::VPMOVZXBDZ256rm,  Â  Â  TB_NO_REVERSE },<br>
+  Â  { X86::VPMOVZXBQZ256rr,  Â  Â  X86::VPMOVZXBQZ256rm,  Â  Â  TB_NO_REVERSE },<br>
+  Â  { X86::VPMOVZXBWZ256rr,  Â  Â  X86::VPMOVZXBWZ256rm,  Â  Â  0 },<br>
+  Â  { X86::VPMOVZXDQZ256rr,  Â  Â  X86::VPMOVZXDQZ256rm,  Â  Â  0 },<br>
+  Â  { X86::VPMOVZXWDZ256rr,  Â  Â  X86::VPMOVZXWDZ256rm,  Â  Â  0 },<br>
+  Â  { X86::VPMOVZXWQZ256rr,  Â  Â  X86::VPMOVZXWQZ256rm,  Â  Â  TB_NO_REVERSE },<br>
+  Â  { X86::VPSHUFDZ256ri,  Â  Â  Â  X86::VPSHUFDZ256mi,  Â  Â  Â  0 },<br>
+  Â  { X86::VPSHUFHWZ256ri,  Â  Â  Â X86::VPSHUFHWZ256mi,  Â  Â  Â 0 },<br>
+  Â  { X86::VPSHUFLWZ256ri,  Â  Â  Â X86::VPSHUFLWZ256mi,  Â  Â  Â 0 },<br>
+  Â  { X86::VPSLLDQZ256rr,  Â  Â  Â  X86::VPSLLDQZ256rm,  Â  Â  Â  0 },<br>
+  Â  { X86::VPSLLDZ256ri,  Â  Â  Â  Â X86::VPSLLDZ256mi,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPSLLQZ256ri,  Â  Â  Â  Â X86::VPSLLQZ256mi,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPSLLWZ256ri,  Â  Â  Â  Â X86::VPSLLWZ256mi,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPSRADZ256ri,  Â  Â  Â  Â X86::VPSRADZ256mi,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPSRAQZ256ri,  Â  Â  Â  Â X86::VPSRAQZ256mi,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPSRAWZ256ri,  Â  Â  Â  Â X86::VPSRAWZ256mi,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPSRLDQZ256rr,  Â  Â  Â  X86::VPSRLDQZ256rm,  Â  Â  Â  0 },<br>
+  Â  { X86::VPSRLDZ256ri,  Â  Â  Â  Â X86::VPSRLDZ256mi,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPSRLQZ256ri,  Â  Â  Â  Â X86::VPSRLQZ256mi,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPSRLWZ256ri,  Â  Â  Â  Â X86::VPSRLWZ256mi,  Â  Â  Â  Â 0 },<br>
+<br>
+  Â  // AVX-512 foldable instructions (128-bit versions)<br>
+  Â  { X86::VBROADCASTSSZ128r,  Â  X86::VBROADCASTSSZ128m,  Â  TB_NO_REVERSE },<br>
+  Â  { X86::VMOVAPDZ128rr,  Â  Â  Â  X86::VMOVAPDZ128rm,  Â  Â  Â  TB_ALIGN_16 },<br>
+  Â  { X86::VMOVAPSZ128rr,  Â  Â  Â  X86::VMOVAPSZ128rm,  Â  Â  Â  TB_ALIGN_16 },<br>
+  Â  { X86::VMOVDQA32Z128rr,  Â  Â  X86::VMOVDQA32Z128rm,  Â  Â  TB_ALIGN_16 },<br>
+  Â  { X86::VMOVDQA64Z128rr,  Â  Â  X86::VMOVDQA64Z128rm,  Â  Â  TB_ALIGN_16 },<br>
+  Â  { X86::VMOVDQU8Z128rr,  Â  Â  Â X86::VMOVDQU8Z128rm,  Â  Â  Â 0 },<br>
+  Â  { X86::VMOVDQU16Z128rr,  Â  Â  X86::VMOVDQU16Z128rm,  Â  Â  0 },<br>
+  Â  { X86::VMOVDQU32Z128rr,  Â  Â  X86::VMOVDQU32Z128rm,  Â  Â  0 },<br>
+  Â  { X86::VMOVDQU64Z128rr,  Â  Â  X86::VMOVDQU64Z128rm,  Â  Â  0 },<br>
+  Â  { X86::VMOVUPDZ128rr,  Â  Â  Â  X86::VMOVUPDZ128rm,  Â  Â  Â  0 },<br>
+  Â  { X86::VMOVUPSZ128rr,  Â  Â  Â  X86::VMOVUPSZ128rm,  Â  Â  Â  0 },<br>
+  Â  { X86::VPABSBZ128rr,  Â  Â  Â  Â X86::VPABSBZ128rm,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPABSDZ128rr,  Â  Â  Â  Â X86::VPABSDZ128rm,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPABSQZ128rr,  Â  Â  Â  Â X86::VPABSQZ128rm,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPABSWZ128rr,  Â  Â  Â  Â X86::VPABSWZ128rm,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPERMILPDZ128ri,  Â  Â  X86::VPERMILPDZ128mi,  Â  Â  0 },<br>
+  Â  { X86::VPERMILPSZ128ri,  Â  Â  X86::VPERMILPSZ128mi,  Â  Â  0 },<br>
+  Â  { X86::VPMOVSXBDZ128rr,  Â  Â  X86::VPMOVSXBDZ128rm,  Â  Â  TB_NO_REVERSE },<br>
+  Â  { X86::VPMOVSXBQZ128rr,  Â  Â  X86::VPMOVSXBQZ128rm,  Â  Â  TB_NO_REVERSE },<br>
+  Â  { X86::VPMOVSXBWZ128rr,  Â  Â  X86::VPMOVSXBWZ128rm,  Â  Â  TB_NO_REVERSE },<br>
+  Â  { X86::VPMOVSXDQZ128rr,  Â  Â  X86::VPMOVSXDQZ128rm,  Â  Â  TB_NO_REVERSE },<br>
+  Â  { X86::VPMOVSXWDZ128rr,  Â  Â  X86::VPMOVSXWDZ128rm,  Â  Â  TB_NO_REVERSE },<br>
+  Â  { X86::VPMOVSXWQZ128rr,  Â  Â  X86::VPMOVSXWQZ128rm,  Â  Â  TB_NO_REVERSE },<br>
+  Â  { X86::VPMOVZXBDZ128rr,  Â  Â  X86::VPMOVZXBDZ128rm,  Â  Â  TB_NO_REVERSE },<br>
+  Â  { X86::VPMOVZXBQZ128rr,  Â  Â  X86::VPMOVZXBQZ128rm,  Â  Â  TB_NO_REVERSE },<br>
+  Â  { X86::VPMOVZXBWZ128rr,  Â  Â  X86::VPMOVZXBWZ128rm,  Â  Â  TB_NO_REVERSE },<br>
+  Â  { X86::VPMOVZXDQZ128rr,  Â  Â  X86::VPMOVZXDQZ128rm,  Â  Â  TB_NO_REVERSE },<br>
+  Â  { X86::VPMOVZXWDZ128rr,  Â  Â  X86::VPMOVZXWDZ128rm,  Â  Â  TB_NO_REVERSE },<br>
+  Â  { X86::VPMOVZXWQZ128rr,  Â  Â  X86::VPMOVZXWQZ128rm,  Â  Â  TB_NO_REVERSE },<br>
+  Â  { X86::VPSHUFDZ128ri,  Â  Â  Â  X86::VPSHUFDZ128mi,  Â  Â  Â  0 },<br>
+  Â  { X86::VPSHUFHWZ128ri,  Â  Â  Â X86::VPSHUFHWZ128mi,  Â  Â  Â 0 },<br>
+  Â  { X86::VPSHUFLWZ128ri,  Â  Â  Â X86::VPSHUFLWZ128mi,  Â  Â  Â 0 },<br>
+  Â  { X86::VPSLLDQZ128rr,  Â  Â  Â  X86::VPSLLDQZ128rm,  Â  Â  Â  0 },<br>
+  Â  { X86::VPSLLDZ128ri,  Â  Â  Â  Â X86::VPSLLDZ128mi,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPSLLQZ128ri,  Â  Â  Â  Â X86::VPSLLQZ128mi,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPSLLWZ128ri,  Â  Â  Â  Â X86::VPSLLWZ128mi,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPSRADZ128ri,  Â  Â  Â  Â X86::VPSRADZ128mi,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPSRAQZ128ri,  Â  Â  Â  Â X86::VPSRAQZ128mi,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPSRAWZ128ri,  Â  Â  Â  Â X86::VPSRAWZ128mi,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPSRLDQZ128rr,  Â  Â  Â  X86::VPSRLDQZ128rm,  Â  Â  Â  0 },<br>
+  Â  { X86::VPSRLDZ128ri,  Â  Â  Â  Â X86::VPSRLDZ128mi,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPSRLQZ128ri,  Â  Â  Â  Â X86::VPSRLQZ128mi,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPSRLWZ128ri,  Â  Â  Â  Â X86::VPSRLWZ128mi,  Â  Â  Â  Â 0 },<br>
+<br>
+  Â  // F16C foldable instructions<br>
+  Â  { X86::VCVTPH2PSrr,  Â  Â  Â  X86::VCVTPH2PSrm,  Â  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VCVTPH2PSYrr,  Â  Â  Â X86::VCVTPH2PSYrm,  Â  Â  Â  Â  Â 0 },<br>
+<br>
+  Â  // AES foldable instructions<br>
+  Â  { X86::AESIMCrr,  Â  Â  Â  Â  Â  Â  X86::AESIMCrm,  Â  Â  Â  Â  Â  Â  TB_ALIGN_16 },<br>
+  Â  { X86::AESKEYGENASSIST128rr,  X86::AESKEYGENASSIST128rm,  TB_ALIGN_16 },<br>
+  Â  { X86::VAESIMCrr,  Â  Â  Â  Â  Â  Â X86::VAESIMCrm,  Â  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VAESKEYGENASSIST128rr, X86::VAESKEYGENASSIST128rm, 0 }<br>
+  };<br>
+<br>
  Â for (X86MemoryFoldTableEntry Entry : MemoryFoldTable1) {<br>
  Â  Â AddTableEntry(<wbr>RegOp2MemOpTable1, MemOp2RegOpTable,<br>
  Â  Â  Â  Â  Â  Â  Â  Â  Â Entry.RegOp, Entry.MemOp,<br>
@@ -143,6 +1042,1396 @@ X86InstrInfo::X86InstrInfo(<wbr>X86Subtarget<br>
  Â  Â  Â  Â  Â  Â  Â  Â  Â Entry.Flags | TB_INDEX_1 | TB_FOLDED_LOAD);<br>
  Â }<br>
<br>
+  static const X86MemoryFoldTableEntry MemoryFoldTable2[] = {<br>
+  Â  { X86::ADC32rr,  Â  Â  Â  Â X86::ADC32rm,  Â  Â  Â 0 },<br>
+  Â  { X86::ADC64rr,  Â  Â  Â  Â X86::ADC64rm,  Â  Â  Â 0 },<br>
+  Â  { X86::ADD16rr,  Â  Â  Â  Â X86::ADD16rm,  Â  Â  Â 0 },<br>
+  Â  { X86::ADD16rr_DB,  Â  Â  X86::ADD16rm,  Â  Â  Â TB_NO_REVERSE },<br>
+  Â  { X86::ADD32rr,  Â  Â  Â  Â X86::ADD32rm,  Â  Â  Â 0 },<br>
+  Â  { X86::ADD32rr_DB,  Â  Â  X86::ADD32rm,  Â  Â  Â TB_NO_REVERSE },<br>
+  Â  { X86::ADD64rr,  Â  Â  Â  Â X86::ADD64rm,  Â  Â  Â 0 },<br>
+  Â  { X86::ADD64rr_DB,  Â  Â  X86::ADD64rm,  Â  Â  Â TB_NO_REVERSE },<br>
+  Â  { X86::ADD8rr,  Â  Â  Â  Â  X86::ADD8rm,  Â  Â  Â  0 },<br>
+  Â  { X86::ADDPDrr,  Â  Â  Â  Â X86::ADDPDrm,  Â  Â  Â TB_ALIGN_16 },<br>
+  Â  { X86::ADDPSrr,  Â  Â  Â  Â X86::ADDPSrm,  Â  Â  Â TB_ALIGN_16 },<br>
+  Â  { X86::ADDSDrr,  Â  Â  Â  Â X86::ADDSDrm,  Â  Â  Â 0 },<br>
+  Â  { X86::ADDSDrr_Int,  Â  Â X86::ADDSDrm_Int,  Â TB_NO_REVERSE },<br>
+  Â  { X86::ADDSSrr,  Â  Â  Â  Â X86::ADDSSrm,  Â  Â  Â 0 },<br>
+  Â  { X86::ADDSSrr_Int,  Â  Â X86::ADDSSrm_Int,  Â TB_NO_REVERSE },<br>
+  Â  { X86::ADDSUBPDrr,  Â  Â  X86::ADDSUBPDrm,  Â  TB_ALIGN_16 },<br>
+  Â  { X86::ADDSUBPSrr,  Â  Â  X86::ADDSUBPSrm,  Â  TB_ALIGN_16 },<br>
+  Â  { X86::AND16rr,  Â  Â  Â  Â X86::AND16rm,  Â  Â  Â 0 },<br>
+  Â  { X86::AND32rr,  Â  Â  Â  Â X86::AND32rm,  Â  Â  Â 0 },<br>
+  Â  { X86::AND64rr,  Â  Â  Â  Â X86::AND64rm,  Â  Â  Â 0 },<br>
+  Â  { X86::AND8rr,  Â  Â  Â  Â  X86::AND8rm,  Â  Â  Â  0 },<br>
+  Â  { X86::ANDNPDrr,  Â  Â  Â  X86::ANDNPDrm,  Â  Â  TB_ALIGN_16 },<br>
+  Â  { X86::ANDNPSrr,  Â  Â  Â  X86::ANDNPSrm,  Â  Â  TB_ALIGN_16 },<br>
+  Â  { X86::ANDPDrr,  Â  Â  Â  Â X86::ANDPDrm,  Â  Â  Â TB_ALIGN_16 },<br>
+  Â  { X86::ANDPSrr,  Â  Â  Â  Â X86::ANDPSrm,  Â  Â  Â TB_ALIGN_16 },<br>
+  Â  { X86::BLENDPDrri,  Â  Â  X86::BLENDPDrmi,  Â  TB_ALIGN_16 },<br>
+  Â  { X86::BLENDPSrri,  Â  Â  X86::BLENDPSrmi,  Â  TB_ALIGN_16 },<br>
+  Â  { X86::BLENDVPDrr0,  Â  Â X86::BLENDVPDrm0,  Â TB_ALIGN_16 },<br>
+  Â  { X86::BLENDVPSrr0,  Â  Â X86::BLENDVPSrm0,  Â TB_ALIGN_16 },<br>
+  Â  { X86::CMOVA16rr,  Â  Â  Â X86::CMOVA16rm,  Â  Â 0 },<br>
+  Â  { X86::CMOVA32rr,  Â  Â  Â X86::CMOVA32rm,  Â  Â 0 },<br>
+  Â  { X86::CMOVA64rr,  Â  Â  Â X86::CMOVA64rm,  Â  Â 0 },<br>
+  Â  { X86::CMOVAE16rr,  Â  Â  X86::CMOVAE16rm,  Â  0 },<br>
+  Â  { X86::CMOVAE32rr,  Â  Â  X86::CMOVAE32rm,  Â  0 },<br>
+  Â  { X86::CMOVAE64rr,  Â  Â  X86::CMOVAE64rm,  Â  0 },<br>
+  Â  { X86::CMOVB16rr,  Â  Â  Â X86::CMOVB16rm,  Â  Â 0 },<br>
+  Â  { X86::CMOVB32rr,  Â  Â  Â X86::CMOVB32rm,  Â  Â 0 },<br>
+  Â  { X86::CMOVB64rr,  Â  Â  Â X86::CMOVB64rm,  Â  Â 0 },<br>
+  Â  { X86::CMOVBE16rr,  Â  Â  X86::CMOVBE16rm,  Â  0 },<br>
+  Â  { X86::CMOVBE32rr,  Â  Â  X86::CMOVBE32rm,  Â  0 },<br>
+  Â  { X86::CMOVBE64rr,  Â  Â  X86::CMOVBE64rm,  Â  0 },<br>
+  Â  { X86::CMOVE16rr,  Â  Â  Â X86::CMOVE16rm,  Â  Â 0 },<br>
+  Â  { X86::CMOVE32rr,  Â  Â  Â X86::CMOVE32rm,  Â  Â 0 },<br>
+  Â  { X86::CMOVE64rr,  Â  Â  Â X86::CMOVE64rm,  Â  Â 0 },<br>
+  Â  { X86::CMOVG16rr,  Â  Â  Â X86::CMOVG16rm,  Â  Â 0 },<br>
+  Â  { X86::CMOVG32rr,  Â  Â  Â X86::CMOVG32rm,  Â  Â 0 },<br>
+  Â  { X86::CMOVG64rr,  Â  Â  Â X86::CMOVG64rm,  Â  Â 0 },<br>
+  Â  { X86::CMOVGE16rr,  Â  Â  X86::CMOVGE16rm,  Â  0 },<br>
+  Â  { X86::CMOVGE32rr,  Â  Â  X86::CMOVGE32rm,  Â  0 },<br>
+  Â  { X86::CMOVGE64rr,  Â  Â  X86::CMOVGE64rm,  Â  0 },<br>
+  Â  { X86::CMOVL16rr,  Â  Â  Â X86::CMOVL16rm,  Â  Â 0 },<br>
+  Â  { X86::CMOVL32rr,  Â  Â  Â X86::CMOVL32rm,  Â  Â 0 },<br>
+  Â  { X86::CMOVL64rr,  Â  Â  Â X86::CMOVL64rm,  Â  Â 0 },<br>
+  Â  { X86::CMOVLE16rr,  Â  Â  X86::CMOVLE16rm,  Â  0 },<br>
+  Â  { X86::CMOVLE32rr,  Â  Â  X86::CMOVLE32rm,  Â  0 },<br>
+  Â  { X86::CMOVLE64rr,  Â  Â  X86::CMOVLE64rm,  Â  0 },<br>
+  Â  { X86::CMOVNE16rr,  Â  Â  X86::CMOVNE16rm,  Â  0 },<br>
+  Â  { X86::CMOVNE32rr,  Â  Â  X86::CMOVNE32rm,  Â  0 },<br>
+  Â  { X86::CMOVNE64rr,  Â  Â  X86::CMOVNE64rm,  Â  0 },<br>
+  Â  { X86::CMOVNO16rr,  Â  Â  X86::CMOVNO16rm,  Â  0 },<br>
+  Â  { X86::CMOVNO32rr,  Â  Â  X86::CMOVNO32rm,  Â  0 },<br>
+  Â  { X86::CMOVNO64rr,  Â  Â  X86::CMOVNO64rm,  Â  0 },<br>
+  Â  { X86::CMOVNP16rr,  Â  Â  X86::CMOVNP16rm,  Â  0 },<br>
+  Â  { X86::CMOVNP32rr,  Â  Â  X86::CMOVNP32rm,  Â  0 },<br>
+  Â  { X86::CMOVNP64rr,  Â  Â  X86::CMOVNP64rm,  Â  0 },<br>
+  Â  { X86::CMOVNS16rr,  Â  Â  X86::CMOVNS16rm,  Â  0 },<br>
+  Â  { X86::CMOVNS32rr,  Â  Â  X86::CMOVNS32rm,  Â  0 },<br>
+  Â  { X86::CMOVNS64rr,  Â  Â  X86::CMOVNS64rm,  Â  0 },<br>
+  Â  { X86::CMOVO16rr,  Â  Â  Â X86::CMOVO16rm,  Â  Â 0 },<br>
+  Â  { X86::CMOVO32rr,  Â  Â  Â X86::CMOVO32rm,  Â  Â 0 },<br>
+  Â  { X86::CMOVO64rr,  Â  Â  Â X86::CMOVO64rm,  Â  Â 0 },<br>
+  Â  { X86::CMOVP16rr,  Â  Â  Â X86::CMOVP16rm,  Â  Â 0 },<br>
+  Â  { X86::CMOVP32rr,  Â  Â  Â X86::CMOVP32rm,  Â  Â 0 },<br>
+  Â  { X86::CMOVP64rr,  Â  Â  Â X86::CMOVP64rm,  Â  Â 0 },<br>
+  Â  { X86::CMOVS16rr,  Â  Â  Â X86::CMOVS16rm,  Â  Â 0 },<br>
+  Â  { X86::CMOVS32rr,  Â  Â  Â X86::CMOVS32rm,  Â  Â 0 },<br>
+  Â  { X86::CMOVS64rr,  Â  Â  Â X86::CMOVS64rm,  Â  Â 0 },<br>
+  Â  { X86::CMPPDrri,  Â  Â  Â  X86::CMPPDrmi,  Â  Â  TB_ALIGN_16 },<br>
+  Â  { X86::CMPPSrri,  Â  Â  Â  X86::CMPPSrmi,  Â  Â  TB_ALIGN_16 },<br>
+  Â  { X86::CMPSDrr,  Â  Â  Â  Â X86::CMPSDrm,  Â  Â  Â 0 },<br>
+  Â  { X86::CMPSSrr,  Â  Â  Â  Â X86::CMPSSrm,  Â  Â  Â 0 },<br>
+  Â  { X86::CRC32r32r32,  Â  Â X86::CRC32r32m32,  Â 0 },<br>
+  Â  { X86::CRC32r64r64,  Â  Â X86::CRC32r64m64,  Â 0 },<br>
+  Â  { X86::DIVPDrr,  Â  Â  Â  Â X86::DIVPDrm,  Â  Â  Â TB_ALIGN_16 },<br>
+  Â  { X86::DIVPSrr,  Â  Â  Â  Â X86::DIVPSrm,  Â  Â  Â TB_ALIGN_16 },<br>
+  Â  { X86::DIVSDrr,  Â  Â  Â  Â X86::DIVSDrm,  Â  Â  Â 0 },<br>
+  Â  { X86::DIVSDrr_Int,  Â  Â X86::DIVSDrm_Int,  Â TB_NO_REVERSE },<br>
+  Â  { X86::DIVSSrr,  Â  Â  Â  Â X86::DIVSSrm,  Â  Â  Â 0 },<br>
+  Â  { X86::DIVSSrr_Int,  Â  Â X86::DIVSSrm_Int,  Â TB_NO_REVERSE },<br>
+  Â  { X86::DPPDrri,  Â  Â  Â  Â X86::DPPDrmi,  Â  Â  Â TB_ALIGN_16 },<br>
+  Â  { X86::DPPSrri,  Â  Â  Â  Â X86::DPPSrmi,  Â  Â  Â TB_ALIGN_16 },<br>
+  Â  { X86::HADDPDrr,  Â  Â  Â  X86::HADDPDrm,  Â  Â  TB_ALIGN_16 },<br>
+  Â  { X86::HADDPSrr,  Â  Â  Â  X86::HADDPSrm,  Â  Â  TB_ALIGN_16 },<br>
+  Â  { X86::HSUBPDrr,  Â  Â  Â  X86::HSUBPDrm,  Â  Â  TB_ALIGN_16 },<br>
+  Â  { X86::HSUBPSrr,  Â  Â  Â  X86::HSUBPSrm,  Â  Â  TB_ALIGN_16 },<br>
+  Â  { X86::IMUL16rr,  Â  Â  Â  X86::IMUL16rm,  Â  Â  0 },<br>
+  Â  { X86::IMUL32rr,  Â  Â  Â  X86::IMUL32rm,  Â  Â  0 },<br>
+  Â  { X86::IMUL64rr,  Â  Â  Â  X86::IMUL64rm,  Â  Â  0 },<br>
+  Â  { X86::Int_CMPSDrr,  Â  Â X86::Int_CMPSDrm,  Â TB_NO_REVERSE },<br>
+  Â  { X86::Int_CMPSSrr,  Â  Â X86::Int_CMPSSrm,  Â TB_NO_REVERSE },<br>
+  Â  { X86::Int_CVTSD2SSrr,  X86::Int_CVTSD2SSrm,  Â  Â  TB_NO_REVERSE },<br>
+  Â  { X86::Int_CVTSI2SD64rr,X86::<wbr>Int_CVTSI2SD64rm,  Â  0 },<br>
+  Â  { X86::Int_CVTSI2SDrr,  X86::Int_CVTSI2SDrm,  Â  Â  0 },<br>
+  Â  { X86::Int_CVTSI2SS64rr,X86::<wbr>Int_CVTSI2SS64rm,  Â  0 },<br>
+  Â  { X86::Int_CVTSI2SSrr,  X86::Int_CVTSI2SSrm,  Â  Â  0 },<br>
+  Â  { X86::Int_CVTSS2SDrr,  X86::Int_CVTSS2SDrm,  Â  Â  TB_NO_REVERSE },<br>
+  Â  { X86::MAXPDrr,  Â  Â  Â  Â X86::MAXPDrm,  Â  Â  Â TB_ALIGN_16 },<br>
+  Â  { X86::MAXCPDrr,  Â  Â  Â  X86::MAXCPDrm,  Â  Â  TB_ALIGN_16 },<br>
+  Â  { X86::MAXPSrr,  Â  Â  Â  Â X86::MAXPSrm,  Â  Â  Â TB_ALIGN_16 },<br>
+  Â  { X86::MAXCPSrr,  Â  Â  Â  X86::MAXCPSrm,  Â  Â  TB_ALIGN_16 },<br>
+  Â  { X86::MAXSDrr,  Â  Â  Â  Â X86::MAXSDrm,  Â  Â  Â 0 },<br>
+  Â  { X86::MAXCSDrr,  Â  Â  Â  X86::MAXCSDrm,  Â  Â  0 },<br>
+  Â  { X86::MAXSDrr_Int,  Â  Â X86::MAXSDrm_Int,  Â TB_NO_REVERSE },<br>
+  Â  { X86::MAXSSrr,  Â  Â  Â  Â X86::MAXSSrm,  Â  Â  Â 0 },<br>
+  Â  { X86::MAXCSSrr,  Â  Â  Â  X86::MAXCSSrm,  Â  Â  0 },<br>
+  Â  { X86::MAXSSrr_Int,  Â  Â X86::MAXSSrm_Int,  Â TB_NO_REVERSE },<br>
+  Â  { X86::MINPDrr,  Â  Â  Â  Â X86::MINPDrm,  Â  Â  Â TB_ALIGN_16 },<br>
+  Â  { X86::MINCPDrr,  Â  Â  Â  X86::MINCPDrm,  Â  Â  TB_ALIGN_16 },<br>
+  Â  { X86::MINPSrr,  Â  Â  Â  Â X86::MINPSrm,  Â  Â  Â TB_ALIGN_16 },<br>
+  Â  { X86::MINCPSrr,  Â  Â  Â  X86::MINCPSrm,  Â  Â  TB_ALIGN_16 },<br>
+  Â  { X86::MINSDrr,  Â  Â  Â  Â X86::MINSDrm,  Â  Â  Â 0 },<br>
+  Â  { X86::MINCSDrr,  Â  Â  Â  X86::MINCSDrm,  Â  Â  0 },<br>
+  Â  { X86::MINSDrr_Int,  Â  Â X86::MINSDrm_Int,  Â TB_NO_REVERSE },<br>
+  Â  { X86::MINSSrr,  Â  Â  Â  Â X86::MINSSrm,  Â  Â  Â 0 },<br>
+  Â  { X86::MINCSSrr,  Â  Â  Â  X86::MINCSSrm,  Â  Â  0 },<br>
+  Â  { X86::MINSSrr_Int,  Â  Â X86::MINSSrm_Int,  Â TB_NO_REVERSE },<br>
+  Â  { X86::MOVLHPSrr,  Â  Â  Â X86::MOVHPSrm,  Â  Â  TB_NO_REVERSE },<br>
+  Â  { X86::MPSADBWrri,  Â  Â  X86::MPSADBWrmi,  Â  TB_ALIGN_16 },<br>
+  Â  { X86::MULPDrr,  Â  Â  Â  Â X86::MULPDrm,  Â  Â  Â TB_ALIGN_16 },<br>
+  Â  { X86::MULPSrr,  Â  Â  Â  Â X86::MULPSrm,  Â  Â  Â TB_ALIGN_16 },<br>
+  Â  { X86::MULSDrr,  Â  Â  Â  Â X86::MULSDrm,  Â  Â  Â 0 },<br>
+  Â  { X86::MULSDrr_Int,  Â  Â X86::MULSDrm_Int,  Â TB_NO_REVERSE },<br>
+  Â  { X86::MULSSrr,  Â  Â  Â  Â X86::MULSSrm,  Â  Â  Â 0 },<br>
+  Â  { X86::MULSSrr_Int,  Â  Â X86::MULSSrm_Int,  Â TB_NO_REVERSE },<br>
+  Â  { X86::OR16rr,  Â  Â  Â  Â  X86::OR16rm,  Â  Â  Â  0 },<br>
+  Â  { X86::OR32rr,  Â  Â  Â  Â  X86::OR32rm,  Â  Â  Â  0 },<br>
+  Â  { X86::OR64rr,  Â  Â  Â  Â  X86::OR64rm,  Â  Â  Â  0 },<br>
+  Â  { X86::OR8rr,  Â  Â  Â  Â  Â X86::OR8rm,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::ORPDrr,  Â  Â  Â  Â  X86::ORPDrm,  Â  Â  Â  TB_ALIGN_16 },<br>
+  Â  { X86::ORPSrr,  Â  Â  Â  Â  X86::ORPSrm,  Â  Â  Â  TB_ALIGN_16 },<br>
+  Â  { X86::PACKSSDWrr,  Â  Â  X86::PACKSSDWrm,  Â  TB_ALIGN_16 },<br>
+  Â  { X86::PACKSSWBrr,  Â  Â  X86::PACKSSWBrm,  Â  TB_ALIGN_16 },<br>
+  Â  { X86::PACKUSDWrr,  Â  Â  X86::PACKUSDWrm,  Â  TB_ALIGN_16 },<br>
+  Â  { X86::PACKUSWBrr,  Â  Â  X86::PACKUSWBrm,  Â  TB_ALIGN_16 },<br>
+  Â  { X86::PADDBrr,  Â  Â  Â  Â X86::PADDBrm,  Â  Â  Â TB_ALIGN_16 },<br>
+  Â  { X86::PADDDrr,  Â  Â  Â  Â X86::PADDDrm,  Â  Â  Â TB_ALIGN_16 },<br>
+  Â  { X86::PADDQrr,  Â  Â  Â  Â X86::PADDQrm,  Â  Â  Â TB_ALIGN_16 },<br>
+  Â  { X86::PADDSBrr,  Â  Â  Â  X86::PADDSBrm,  Â  Â  TB_ALIGN_16 },<br>
+  Â  { X86::PADDSWrr,  Â  Â  Â  X86::PADDSWrm,  Â  Â  TB_ALIGN_16 },<br>
+  Â  { X86::PADDUSBrr,  Â  Â  Â X86::PADDUSBrm,  Â  Â TB_ALIGN_16 },<br>
+  Â  { X86::PADDUSWrr,  Â  Â  Â X86::PADDUSWrm,  Â  Â TB_ALIGN_16 },<br>
+  Â  { X86::PADDWrr,  Â  Â  Â  Â X86::PADDWrm,  Â  Â  Â TB_ALIGN_16 },<br>
+  Â  { X86::PALIGNRrri,  Â  Â  X86::PALIGNRrmi,  Â  TB_ALIGN_16 },<br>
+  Â  { X86::PANDNrr,  Â  Â  Â  Â X86::PANDNrm,  Â  Â  Â TB_ALIGN_16 },<br>
+  Â  { X86::PANDrr,  Â  Â  Â  Â  X86::PANDrm,  Â  Â  Â  TB_ALIGN_16 },<br>
+  Â  { X86::PAVGBrr,  Â  Â  Â  Â X86::PAVGBrm,  Â  Â  Â TB_ALIGN_16 },<br>
+  Â  { X86::PAVGWrr,  Â  Â  Â  Â X86::PAVGWrm,  Â  Â  Â TB_ALIGN_16 },<br>
+  Â  { X86::PBLENDVBrr0,  Â  Â X86::PBLENDVBrm0,  Â TB_ALIGN_16 },<br>
+  Â  { X86::PBLENDWrri,  Â  Â  X86::PBLENDWrmi,  Â  TB_ALIGN_16 },<br>
+  Â  { X86::PCLMULQDQrr,  Â  Â X86::PCLMULQDQrm,  Â TB_ALIGN_16 },<br>
+  Â  { X86::PCMPEQBrr,  Â  Â  Â X86::PCMPEQBrm,  Â  Â TB_ALIGN_16 },<br>
+  Â  { X86::PCMPEQDrr,  Â  Â  Â X86::PCMPEQDrm,  Â  Â TB_ALIGN_16 },<br>
+  Â  { X86::PCMPEQQrr,  Â  Â  Â X86::PCMPEQQrm,  Â  Â TB_ALIGN_16 },<br>
+  Â  { X86::PCMPEQWrr,  Â  Â  Â X86::PCMPEQWrm,  Â  Â TB_ALIGN_16 },<br>
+  Â  { X86::PCMPGTBrr,  Â  Â  Â X86::PCMPGTBrm,  Â  Â TB_ALIGN_16 },<br>
+  Â  { X86::PCMPGTDrr,  Â  Â  Â X86::PCMPGTDrm,  Â  Â TB_ALIGN_16 },<br>
+  Â  { X86::PCMPGTQrr,  Â  Â  Â X86::PCMPGTQrm,  Â  Â TB_ALIGN_16 },<br>
+  Â  { X86::PCMPGTWrr,  Â  Â  Â X86::PCMPGTWrm,  Â  Â TB_ALIGN_16 },<br>
+  Â  { X86::PHADDDrr,  Â  Â  Â  X86::PHADDDrm,  Â  Â  TB_ALIGN_16 },<br>
+  Â  { X86::PHADDWrr,  Â  Â  Â  X86::PHADDWrm,  Â  Â  TB_ALIGN_16 },<br>
+  Â  { X86::PHADDSWrr128,  Â  X86::PHADDSWrm128,  TB_ALIGN_16 },<br>
+  Â  { X86::PHSUBDrr,  Â  Â  Â  X86::PHSUBDrm,  Â  Â  TB_ALIGN_16 },<br>
+  Â  { X86::PHSUBSWrr128,  Â  X86::PHSUBSWrm128,  TB_ALIGN_16 },<br>
+  Â  { X86::PHSUBWrr,  Â  Â  Â  X86::PHSUBWrm,  Â  Â  TB_ALIGN_16 },<br>
+  Â  { X86::PINSRBrr,  Â  Â  Â  X86::PINSRBrm,  Â  Â  0 },<br>
+  Â  { X86::PINSRDrr,  Â  Â  Â  X86::PINSRDrm,  Â  Â  0 },<br>
+  Â  { X86::PINSRQrr,  Â  Â  Â  X86::PINSRQrm,  Â  Â  0 },<br>
+  Â  { X86::PINSRWrri,  Â  Â  Â X86::PINSRWrmi,  Â  Â 0 },<br>
+  Â  { X86::PMADDUBSWrr,  Â  Â X86::PMADDUBSWrm,  Â TB_ALIGN_16 },<br>
+  Â  { X86::PMADDWDrr,  Â  Â  Â X86::PMADDWDrm,  Â  Â TB_ALIGN_16 },<br>
+  Â  { X86::PMAXSBrr,  Â  Â  Â  X86::PMAXSBrm,  Â  Â  TB_ALIGN_16 },<br>
+  Â  { X86::PMAXSDrr,  Â  Â  Â  X86::PMAXSDrm,  Â  Â  TB_ALIGN_16 },<br>
+  Â  { X86::PMAXSWrr,  Â  Â  Â  X86::PMAXSWrm,  Â  Â  TB_ALIGN_16 },<br>
+  Â  { X86::PMAXUBrr,  Â  Â  Â  X86::PMAXUBrm,  Â  Â  TB_ALIGN_16 },<br>
+  Â  { X86::PMAXUDrr,  Â  Â  Â  X86::PMAXUDrm,  Â  Â  TB_ALIGN_16 },<br>
+  Â  { X86::PMAXUWrr,  Â  Â  Â  X86::PMAXUWrm,  Â  Â  TB_ALIGN_16 },<br>
+  Â  { X86::PMINSBrr,  Â  Â  Â  X86::PMINSBrm,  Â  Â  TB_ALIGN_16 },<br>
+  Â  { X86::PMINSDrr,  Â  Â  Â  X86::PMINSDrm,  Â  Â  TB_ALIGN_16 },<br>
+  Â  { X86::PMINSWrr,  Â  Â  Â  X86::PMINSWrm,  Â  Â  TB_ALIGN_16 },<br>
+  Â  { X86::PMINUBrr,  Â  Â  Â  X86::PMINUBrm,  Â  Â  TB_ALIGN_16 },<br>
+  Â  { X86::PMINUDrr,  Â  Â  Â  X86::PMINUDrm,  Â  Â  TB_ALIGN_16 },<br>
+  Â  { X86::PMINUWrr,  Â  Â  Â  X86::PMINUWrm,  Â  Â  TB_ALIGN_16 },<br>
+  Â  { X86::PMULDQrr,  Â  Â  Â  X86::PMULDQrm,  Â  Â  TB_ALIGN_16 },<br>
+  Â  { X86::PMULHRSWrr,  Â  Â  X86::PMULHRSWrm,  Â  TB_ALIGN_16 },<br>
+  Â  { X86::PMULHUWrr,  Â  Â  Â X86::PMULHUWrm,  Â  Â TB_ALIGN_16 },<br>
+  Â  { X86::PMULHWrr,  Â  Â  Â  X86::PMULHWrm,  Â  Â  TB_ALIGN_16 },<br>
+  Â  { X86::PMULLDrr,  Â  Â  Â  X86::PMULLDrm,  Â  Â  TB_ALIGN_16 },<br>
+  Â  { X86::PMULLWrr,  Â  Â  Â  X86::PMULLWrm,  Â  Â  TB_ALIGN_16 },<br>
+  Â  { X86::PMULUDQrr,  Â  Â  Â X86::PMULUDQrm,  Â  Â TB_ALIGN_16 },<br>
+  Â  { X86::PORrr,  Â  Â  Â  Â  Â X86::PORrm,  Â  Â  Â  Â TB_ALIGN_16 },<br>
+  Â  { X86::PSADBWrr,  Â  Â  Â  X86::PSADBWrm,  Â  Â  TB_ALIGN_16 },<br>
+  Â  { X86::PSHUFBrr,  Â  Â  Â  X86::PSHUFBrm,  Â  Â  TB_ALIGN_16 },<br>
+  Â  { X86::PSIGNBrr128,  Â  Â X86::PSIGNBrm128,  Â TB_ALIGN_16 },<br>
+  Â  { X86::PSIGNWrr128,  Â  Â X86::PSIGNWrm128,  Â TB_ALIGN_16 },<br>
+  Â  { X86::PSIGNDrr128,  Â  Â X86::PSIGNDrm128,  Â TB_ALIGN_16 },<br>
+  Â  { X86::PSLLDrr,  Â  Â  Â  Â X86::PSLLDrm,  Â  Â  Â TB_ALIGN_16 },<br>
+  Â  { X86::PSLLQrr,  Â  Â  Â  Â X86::PSLLQrm,  Â  Â  Â TB_ALIGN_16 },<br>
+  Â  { X86::PSLLWrr,  Â  Â  Â  Â X86::PSLLWrm,  Â  Â  Â TB_ALIGN_16 },<br>
+  Â  { X86::PSRADrr,  Â  Â  Â  Â X86::PSRADrm,  Â  Â  Â TB_ALIGN_16 },<br>
+  Â  { X86::PSRAWrr,  Â  Â  Â  Â X86::PSRAWrm,  Â  Â  Â TB_ALIGN_16 },<br>
+  Â  { X86::PSRLDrr,  Â  Â  Â  Â X86::PSRLDrm,  Â  Â  Â TB_ALIGN_16 },<br>
+  Â  { X86::PSRLQrr,  Â  Â  Â  Â X86::PSRLQrm,  Â  Â  Â TB_ALIGN_16 },<br>
+  Â  { X86::PSRLWrr,  Â  Â  Â  Â X86::PSRLWrm,  Â  Â  Â TB_ALIGN_16 },<br>
+  Â  { X86::PSUBBrr,  Â  Â  Â  Â X86::PSUBBrm,  Â  Â  Â TB_ALIGN_16 },<br>
+  Â  { X86::PSUBDrr,  Â  Â  Â  Â X86::PSUBDrm,  Â  Â  Â TB_ALIGN_16 },<br>
+  Â  { X86::PSUBQrr,  Â  Â  Â  Â X86::PSUBQrm,  Â  Â  Â TB_ALIGN_16 },<br>
+  Â  { X86::PSUBSBrr,  Â  Â  Â  X86::PSUBSBrm,  Â  Â  TB_ALIGN_16 },<br>
+  Â  { X86::PSUBSWrr,  Â  Â  Â  X86::PSUBSWrm,  Â  Â  TB_ALIGN_16 },<br>
+  Â  { X86::PSUBUSBrr,  Â  Â  Â X86::PSUBUSBrm,  Â  Â TB_ALIGN_16 },<br>
+  Â  { X86::PSUBUSWrr,  Â  Â  Â X86::PSUBUSWrm,  Â  Â TB_ALIGN_16 },<br>
+  Â  { X86::PSUBWrr,  Â  Â  Â  Â X86::PSUBWrm,  Â  Â  Â TB_ALIGN_16 },<br>
+  Â  { X86::PUNPCKHBWrr,  Â  Â X86::PUNPCKHBWrm,  Â TB_ALIGN_16 },<br>
+  Â  { X86::PUNPCKHDQrr,  Â  Â X86::PUNPCKHDQrm,  Â TB_ALIGN_16 },<br>
+  Â  { X86::PUNPCKHQDQrr,  Â  X86::PUNPCKHQDQrm,  TB_ALIGN_16 },<br>
+  Â  { X86::PUNPCKHWDrr,  Â  Â X86::PUNPCKHWDrm,  Â TB_ALIGN_16 },<br>
+  Â  { X86::PUNPCKLBWrr,  Â  Â X86::PUNPCKLBWrm,  Â TB_ALIGN_16 },<br>
+  Â  { X86::PUNPCKLDQrr,  Â  Â X86::PUNPCKLDQrm,  Â TB_ALIGN_16 },<br>
+  Â  { X86::PUNPCKLQDQrr,  Â  X86::PUNPCKLQDQrm,  TB_ALIGN_16 },<br>
+  Â  { X86::PUNPCKLWDrr,  Â  Â X86::PUNPCKLWDrm,  Â TB_ALIGN_16 },<br>
+  Â  { X86::PXORrr,  Â  Â  Â  Â  X86::PXORrm,  Â  Â  Â  TB_ALIGN_16 },<br>
+  Â  { X86::ROUNDSDr_Int,  Â  X86::ROUNDSDm_Int,  TB_NO_REVERSE },<br>
+  Â  { X86::ROUNDSSr_Int,  Â  X86::ROUNDSSm_Int,  TB_NO_REVERSE },<br>
+  Â  { X86::SBB32rr,  Â  Â  Â  Â X86::SBB32rm,  Â  Â  Â 0 },<br>
+  Â  { X86::SBB64rr,  Â  Â  Â  Â X86::SBB64rm,  Â  Â  Â 0 },<br>
+  Â  { X86::SHUFPDrri,  Â  Â  Â X86::SHUFPDrmi,  Â  Â TB_ALIGN_16 },<br>
+  Â  { X86::SHUFPSrri,  Â  Â  Â X86::SHUFPSrmi,  Â  Â TB_ALIGN_16 },<br>
+  Â  { X86::SUB16rr,  Â  Â  Â  Â X86::SUB16rm,  Â  Â  Â 0 },<br>
+  Â  { X86::SUB32rr,  Â  Â  Â  Â X86::SUB32rm,  Â  Â  Â 0 },<br>
+  Â  { X86::SUB64rr,  Â  Â  Â  Â X86::SUB64rm,  Â  Â  Â 0 },<br>
+  Â  { X86::SUB8rr,  Â  Â  Â  Â  X86::SUB8rm,  Â  Â  Â  0 },<br>
+  Â  { X86::SUBPDrr,  Â  Â  Â  Â X86::SUBPDrm,  Â  Â  Â TB_ALIGN_16 },<br>
+  Â  { X86::SUBPSrr,  Â  Â  Â  Â X86::SUBPSrm,  Â  Â  Â TB_ALIGN_16 },<br>
+  Â  { X86::SUBSDrr,  Â  Â  Â  Â X86::SUBSDrm,  Â  Â  Â 0 },<br>
+  Â  { X86::SUBSDrr_Int,  Â  Â X86::SUBSDrm_Int,  Â TB_NO_REVERSE },<br>
+  Â  { X86::SUBSSrr,  Â  Â  Â  Â X86::SUBSSrm,  Â  Â  Â 0 },<br>
+  Â  { X86::SUBSSrr_Int,  Â  Â X86::SUBSSrm_Int,  Â TB_NO_REVERSE },<br>
+  Â  // FIXME: TEST*rr -> swapped operand of TEST*mr.<br>
+  Â  { X86::UNPCKHPDrr,  Â  Â  X86::UNPCKHPDrm,  Â  TB_ALIGN_16 },<br>
+  Â  { X86::UNPCKHPSrr,  Â  Â  X86::UNPCKHPSrm,  Â  TB_ALIGN_16 },<br>
+  Â  { X86::UNPCKLPDrr,  Â  Â  X86::UNPCKLPDrm,  Â  TB_ALIGN_16 },<br>
+  Â  { X86::UNPCKLPSrr,  Â  Â  X86::UNPCKLPSrm,  Â  TB_ALIGN_16 },<br>
+  Â  { X86::XOR16rr,  Â  Â  Â  Â X86::XOR16rm,  Â  Â  Â 0 },<br>
+  Â  { X86::XOR32rr,  Â  Â  Â  Â X86::XOR32rm,  Â  Â  Â 0 },<br>
+  Â  { X86::XOR64rr,  Â  Â  Â  Â X86::XOR64rm,  Â  Â  Â 0 },<br>
+  Â  { X86::XOR8rr,  Â  Â  Â  Â  X86::XOR8rm,  Â  Â  Â  0 },<br>
+  Â  { X86::XORPDrr,  Â  Â  Â  Â X86::XORPDrm,  Â  Â  Â TB_ALIGN_16 },<br>
+  Â  { X86::XORPSrr,  Â  Â  Â  Â X86::XORPSrm,  Â  Â  Â TB_ALIGN_16 },<br>
+<br>
+  Â  // MMX version of foldable instructions<br>
+  Â  { X86::MMX_CVTPI2PSirr,  Â X86::MMX_CVTPI2PSirm,  Â 0 },<br>
+  Â  { X86::MMX_PACKSSDWirr,  Â X86::MMX_PACKSSDWirm,  Â 0 },<br>
+  Â  { X86::MMX_PACKSSWBirr,  Â X86::MMX_PACKSSWBirm,  Â 0 },<br>
+  Â  { X86::MMX_PACKUSWBirr,  Â X86::MMX_PACKUSWBirm,  Â 0 },<br>
+  Â  { X86::MMX_PADDBirr,  Â  Â  X86::MMX_PADDBirm,  Â  Â  0 },<br>
+  Â  { X86::MMX_PADDDirr,  Â  Â  X86::MMX_PADDDirm,  Â  Â  0 },<br>
+  Â  { X86::MMX_PADDQirr,  Â  Â  X86::MMX_PADDQirm,  Â  Â  0 },<br>
+  Â  { X86::MMX_PADDSBirr,  Â  Â X86::MMX_PADDSBirm,  Â  Â 0 },<br>
+  Â  { X86::MMX_PADDSWirr,  Â  Â X86::MMX_PADDSWirm,  Â  Â 0 },<br>
+  Â  { X86::MMX_PADDUSBirr,  Â  X86::MMX_PADDUSBirm,  Â  0 },<br>
+  Â  { X86::MMX_PADDUSWirr,  Â  X86::MMX_PADDUSWirm,  Â  0 },<br>
+  Â  { X86::MMX_PADDWirr,  Â  Â  X86::MMX_PADDWirm,  Â  Â  0 },<br>
+  Â  { X86::MMX_PALIGNR64irr,  X86::MMX_PALIGNR64irm,  0 },<br>
+  Â  { X86::MMX_PANDNirr,  Â  Â  X86::MMX_PANDNirm,  Â  Â  0 },<br>
+  Â  { X86::MMX_PANDirr,  Â  Â  Â X86::MMX_PANDirm,  Â  Â  Â 0 },<br>
+  Â  { X86::MMX_PAVGBirr,  Â  Â  X86::MMX_PAVGBirm,  Â  Â  0 },<br>
+  Â  { X86::MMX_PAVGWirr,  Â  Â  X86::MMX_PAVGWirm,  Â  Â  0 },<br>
+  Â  { X86::MMX_PCMPEQBirr,  Â  X86::MMX_PCMPEQBirm,  Â  0 },<br>
+  Â  { X86::MMX_PCMPEQDirr,  Â  X86::MMX_PCMPEQDirm,  Â  0 },<br>
+  Â  { X86::MMX_PCMPEQWirr,  Â  X86::MMX_PCMPEQWirm,  Â  0 },<br>
+  Â  { X86::MMX_PCMPGTBirr,  Â  X86::MMX_PCMPGTBirm,  Â  0 },<br>
+  Â  { X86::MMX_PCMPGTDirr,  Â  X86::MMX_PCMPGTDirm,  Â  0 },<br>
+  Â  { X86::MMX_PCMPGTWirr,  Â  X86::MMX_PCMPGTWirm,  Â  0 },<br>
+  Â  { X86::MMX_PHADDSWrr64,  Â X86::MMX_PHADDSWrm64,  Â 0 },<br>
+  Â  { X86::MMX_PHADDWrr64,  Â  X86::MMX_PHADDWrm64,  Â  0 },<br>
+  Â  { X86::MMX_PHADDrr64,  Â  Â X86::MMX_PHADDrm64,  Â  Â 0 },<br>
+  Â  { X86::MMX_PHSUBDrr64,  Â  X86::MMX_PHSUBDrm64,  Â  0 },<br>
+  Â  { X86::MMX_PHSUBSWrr64,  Â X86::MMX_PHSUBSWrm64,  Â 0 },<br>
+  Â  { X86::MMX_PHSUBWrr64,  Â  X86::MMX_PHSUBWrm64,  Â  0 },<br>
+  Â  { X86::MMX_PINSRWirri,  Â  X86::MMX_PINSRWirmi,  Â  0 },<br>
+  Â  { X86::MMX_PMADDUBSWrr64, X86::MMX_PMADDUBSWrm64, 0 },<br>
+  Â  { X86::MMX_PMADDWDirr,  Â  X86::MMX_PMADDWDirm,  Â  0 },<br>
+  Â  { X86::MMX_PMAXSWirr,  Â  Â X86::MMX_PMAXSWirm,  Â  Â 0 },<br>
+  Â  { X86::MMX_PMAXUBirr,  Â  Â X86::MMX_PMAXUBirm,  Â  Â 0 },<br>
+  Â  { X86::MMX_PMINSWirr,  Â  Â X86::MMX_PMINSWirm,  Â  Â 0 },<br>
+  Â  { X86::MMX_PMINUBirr,  Â  Â X86::MMX_PMINUBirm,  Â  Â 0 },<br>
+  Â  { X86::MMX_PMULHRSWrr64,  X86::MMX_PMULHRSWrm64,  0 },<br>
+  Â  { X86::MMX_PMULHUWirr,  Â  X86::MMX_PMULHUWirm,  Â  0 },<br>
+  Â  { X86::MMX_PMULHWirr,  Â  Â X86::MMX_PMULHWirm,  Â  Â 0 },<br>
+  Â  { X86::MMX_PMULLWirr,  Â  Â X86::MMX_PMULLWirm,  Â  Â 0 },<br>
+  Â  { X86::MMX_PMULUDQirr,  Â  X86::MMX_PMULUDQirm,  Â  0 },<br>
+  Â  { X86::MMX_PORirr,  Â  Â  Â  X86::MMX_PORirm,  Â  Â  Â  0 },<br>
+  Â  { X86::MMX_PSADBWirr,  Â  Â X86::MMX_PSADBWirm,  Â  Â 0 },<br>
+  Â  { X86::MMX_PSHUFBrr64,  Â  X86::MMX_PSHUFBrm64,  Â  0 },<br>
+  Â  { X86::MMX_PSIGNBrr64,  Â  X86::MMX_PSIGNBrm64,  Â  0 },<br>
+  Â  { X86::MMX_PSIGNDrr64,  Â  X86::MMX_PSIGNDrm64,  Â  0 },<br>
+  Â  { X86::MMX_PSIGNWrr64,  Â  X86::MMX_PSIGNWrm64,  Â  0 },<br>
+  Â  { X86::MMX_PSLLDrr,  Â  Â  Â X86::MMX_PSLLDrm,  Â  Â  Â 0 },<br>
+  Â  { X86::MMX_PSLLQrr,  Â  Â  Â X86::MMX_PSLLQrm,  Â  Â  Â 0 },<br>
+  Â  { X86::MMX_PSLLWrr,  Â  Â  Â X86::MMX_PSLLWrm,  Â  Â  Â 0 },<br>
+  Â  { X86::MMX_PSRADrr,  Â  Â  Â X86::MMX_PSRADrm,  Â  Â  Â 0 },<br>
+  Â  { X86::MMX_PSRAWrr,  Â  Â  Â X86::MMX_PSRAWrm,  Â  Â  Â 0 },<br>
+  Â  { X86::MMX_PSRLDrr,  Â  Â  Â X86::MMX_PSRLDrm,  Â  Â  Â 0 },<br>
+  Â  { X86::MMX_PSRLQrr,  Â  Â  Â X86::MMX_PSRLQrm,  Â  Â  Â 0 },<br>
+  Â  { X86::MMX_PSRLWrr,  Â  Â  Â X86::MMX_PSRLWrm,  Â  Â  Â 0 },<br>
+  Â  { X86::MMX_PSUBBirr,  Â  Â  X86::MMX_PSUBBirm,  Â  Â  0 },<br>
+  Â  { X86::MMX_PSUBDirr,  Â  Â  X86::MMX_PSUBDirm,  Â  Â  0 },<br>
+  Â  { X86::MMX_PSUBQirr,  Â  Â  X86::MMX_PSUBQirm,  Â  Â  0 },<br>
+  Â  { X86::MMX_PSUBSBirr,  Â  Â X86::MMX_PSUBSBirm,  Â  Â 0 },<br>
+  Â  { X86::MMX_PSUBSWirr,  Â  Â X86::MMX_PSUBSWirm,  Â  Â 0 },<br>
+  Â  { X86::MMX_PSUBUSBirr,  Â  X86::MMX_PSUBUSBirm,  Â  0 },<br>
+  Â  { X86::MMX_PSUBUSWirr,  Â  X86::MMX_PSUBUSWirm,  Â  0 },<br>
+  Â  { X86::MMX_PSUBWirr,  Â  Â  X86::MMX_PSUBWirm,  Â  Â  0 },<br>
+  Â  { X86::MMX_PUNPCKHBWirr,  X86::MMX_PUNPCKHBWirm,  0 },<br>
+  Â  { X86::MMX_PUNPCKHDQirr,  X86::MMX_PUNPCKHDQirm,  0 },<br>
+  Â  { X86::MMX_PUNPCKHWDirr,  X86::MMX_PUNPCKHWDirm,  0 },<br>
+  Â  { X86::MMX_PUNPCKLBWirr,  X86::MMX_PUNPCKLBWirm,  0 },<br>
+  Â  { X86::MMX_PUNPCKLDQirr,  X86::MMX_PUNPCKLDQirm,  0 },<br>
+  Â  { X86::MMX_PUNPCKLWDirr,  X86::MMX_PUNPCKLWDirm,  0 },<br>
+  Â  { X86::MMX_PXORirr,  Â  Â  Â X86::MMX_PXORirm,  Â  Â  Â 0 },<br>
+<br>
+  Â  // 3DNow! version of foldable instructions<br>
+  Â  { X86::PAVGUSBrr,  Â  Â  Â  Â X86::PAVGUSBrm,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::PFACCrr,  Â  Â  Â  Â  Â X86::PFACCrm,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::PFADDrr,  Â  Â  Â  Â  Â X86::PFADDrm,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::PFCMPEQrr,  Â  Â  Â  Â X86::PFCMPEQrm,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::PFCMPGErr,  Â  Â  Â  Â X86::PFCMPGErm,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::PFCMPGTrr,  Â  Â  Â  Â X86::PFCMPGTrm,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::PFMAXrr,  Â  Â  Â  Â  Â X86::PFMAXrm,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::PFMINrr,  Â  Â  Â  Â  Â X86::PFMINrm,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::PFMULrr,  Â  Â  Â  Â  Â X86::PFMULrm,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::PFNACCrr,  Â  Â  Â  Â  X86::PFNACCrm,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::PFPNACCrr,  Â  Â  Â  Â X86::PFPNACCrm,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::PFRCPIT1rr,  Â  Â  Â  X86::PFRCPIT1rm,  Â  Â  Â  0 },<br>
+  Â  { X86::PFRCPIT2rr,  Â  Â  Â  X86::PFRCPIT2rm,  Â  Â  Â  0 },<br>
+  Â  { X86::PFRSQIT1rr,  Â  Â  Â  X86::PFRSQIT1rm,  Â  Â  Â  0 },<br>
+  Â  { X86::PFSUBrr,  Â  Â  Â  Â  Â X86::PFSUBrm,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::PFSUBRrr,  Â  Â  Â  Â  X86::PFSUBRrm,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::PMULHRWrr,  Â  Â  Â  Â X86::PMULHRWrm,  Â  Â  Â  Â 0 },<br>
+<br>
+  Â  // AVX 128-bit versions of foldable instructions<br>
+  Â  { X86::VCVTSI2SD64rr,  Â  Â X86::VCVTSI2SD64rm,  Â  Â  0 },<br>
+  Â  { X86::Int_VCVTSI2SD64rr, X86::Int_VCVTSI2SD64rm,  0 },<br>
+  Â  { X86::VCVTSI2SDrr,  Â  Â  Â X86::VCVTSI2SDrm,  Â  Â  Â  0 },<br>
+  Â  { X86::Int_VCVTSI2SDrr,  Â X86::Int_VCVTSI2SDrm,  Â  0 },<br>
+  Â  { X86::VCVTSI2SS64rr,  Â  Â X86::VCVTSI2SS64rm,  Â  Â  0 },<br>
+  Â  { X86::Int_VCVTSI2SS64rr, X86::Int_VCVTSI2SS64rm,  0 },<br>
+  Â  { X86::VCVTSI2SSrr,  Â  Â  Â X86::VCVTSI2SSrm,  Â  Â  Â  0 },<br>
+  Â  { X86::Int_VCVTSI2SSrr,  Â X86::Int_VCVTSI2SSrm,  Â  0 },<br>
+  Â  { X86::VADDPDrr,  Â  Â  Â  Â  X86::VADDPDrm,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VADDPSrr,  Â  Â  Â  Â  X86::VADDPSrm,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VADDSDrr,  Â  Â  Â  Â  X86::VADDSDrm,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VADDSDrr_Int,  Â  Â  X86::VADDSDrm_Int,  Â  Â  Â TB_NO_REVERSE },<br>
+  Â  { X86::VADDSSrr,  Â  Â  Â  Â  X86::VADDSSrm,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VADDSSrr_Int,  Â  Â  X86::VADDSSrm_Int,  Â  Â  Â TB_NO_REVERSE },<br>
+  Â  { X86::VADDSUBPDrr,  Â  Â  Â X86::VADDSUBPDrm,  Â  Â  Â  0 },<br>
+  Â  { X86::VADDSUBPSrr,  Â  Â  Â X86::VADDSUBPSrm,  Â  Â  Â  0 },<br>
+  Â  { X86::VANDNPDrr,  Â  Â  Â  Â X86::VANDNPDrm,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VANDNPSrr,  Â  Â  Â  Â X86::VANDNPSrm,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VANDPDrr,  Â  Â  Â  Â  X86::VANDPDrm,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VANDPSrr,  Â  Â  Â  Â  X86::VANDPSrm,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VBLENDPDrri,  Â  Â  Â X86::VBLENDPDrmi,  Â  Â  Â  0 },<br>
+  Â  { X86::VBLENDPSrri,  Â  Â  Â X86::VBLENDPSrmi,  Â  Â  Â  0 },<br>
+  Â  { X86::VBLENDVPDrr,  Â  Â  Â X86::VBLENDVPDrm,  Â  Â  Â  0 },<br>
+  Â  { X86::VBLENDVPSrr,  Â  Â  Â X86::VBLENDVPSrm,  Â  Â  Â  0 },<br>
+  Â  { X86::VCMPPDrri,  Â  Â  Â  Â X86::VCMPPDrmi,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VCMPPSrri,  Â  Â  Â  Â X86::VCMPPSrmi,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VCMPSDrr,  Â  Â  Â  Â  X86::VCMPSDrm,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VCMPSSrr,  Â  Â  Â  Â  X86::VCMPSSrm,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VDIVPDrr,  Â  Â  Â  Â  X86::VDIVPDrm,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VDIVPSrr,  Â  Â  Â  Â  X86::VDIVPSrm,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VDIVSDrr,  Â  Â  Â  Â  X86::VDIVSDrm,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VDIVSDrr_Int,  Â  Â  X86::VDIVSDrm_Int,  Â  Â  Â TB_NO_REVERSE },<br>
+  Â  { X86::VDIVSSrr,  Â  Â  Â  Â  X86::VDIVSSrm,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VDIVSSrr_Int,  Â  Â  X86::VDIVSSrm_Int,  Â  Â  Â TB_NO_REVERSE },<br>
+  Â  { X86::VDPPDrri,  Â  Â  Â  Â  X86::VDPPDrmi,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VDPPSrri,  Â  Â  Â  Â  X86::VDPPSrmi,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VHADDPDrr,  Â  Â  Â  Â X86::VHADDPDrm,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VHADDPSrr,  Â  Â  Â  Â X86::VHADDPSrm,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VHSUBPDrr,  Â  Â  Â  Â X86::VHSUBPDrm,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VHSUBPSrr,  Â  Â  Â  Â X86::VHSUBPSrm,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::Int_VCMPSDrr,  Â  Â  X86::Int_VCMPSDrm,  Â  Â  Â TB_NO_REVERSE },<br>
+  Â  { X86::Int_VCMPSSrr,  Â  Â  X86::Int_VCMPSSrm,  Â  Â  Â TB_NO_REVERSE },<br>
+  Â  { X86::VMAXCPDrr,  Â  Â  Â  Â X86::VMAXCPDrm,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VMAXCPSrr,  Â  Â  Â  Â X86::VMAXCPSrm,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VMAXCSDrr,  Â  Â  Â  Â X86::VMAXCSDrm,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VMAXCSSrr,  Â  Â  Â  Â X86::VMAXCSSrm,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VMAXPDrr,  Â  Â  Â  Â  X86::VMAXPDrm,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VMAXPSrr,  Â  Â  Â  Â  X86::VMAXPSrm,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VMAXSDrr,  Â  Â  Â  Â  X86::VMAXSDrm,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VMAXSDrr_Int,  Â  Â  X86::VMAXSDrm_Int,  Â  Â  Â TB_NO_REVERSE },<br>
+  Â  { X86::VMAXSSrr,  Â  Â  Â  Â  X86::VMAXSSrm,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VMAXSSrr_Int,  Â  Â  X86::VMAXSSrm_Int,  Â  Â  Â TB_NO_REVERSE },<br>
+  Â  { X86::VMINCPDrr,  Â  Â  Â  Â X86::VMINCPDrm,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VMINCPSrr,  Â  Â  Â  Â X86::VMINCPSrm,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VMINCSDrr,  Â  Â  Â  Â X86::VMINCSDrm,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VMINCSSrr,  Â  Â  Â  Â X86::VMINCSSrm,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VMINPDrr,  Â  Â  Â  Â  X86::VMINPDrm,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VMINPSrr,  Â  Â  Â  Â  X86::VMINPSrm,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VMINSDrr,  Â  Â  Â  Â  X86::VMINSDrm,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VMINSDrr_Int,  Â  Â  X86::VMINSDrm_Int,  Â  Â  Â TB_NO_REVERSE },<br>
+  Â  { X86::VMINSSrr,  Â  Â  Â  Â  X86::VMINSSrm,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VMINSSrr_Int,  Â  Â  X86::VMINSSrm_Int,  Â  Â  Â TB_NO_REVERSE },<br>
+  Â  { X86::VMOVLHPSrr,  Â  Â  Â  X86::VMOVHPSrm,  Â  Â  Â  Â  TB_NO_REVERSE },<br>
+  Â  { X86::VMPSADBWrri,  Â  Â  Â X86::VMPSADBWrmi,  Â  Â  Â  0 },<br>
+  Â  { X86::VMULPDrr,  Â  Â  Â  Â  X86::VMULPDrm,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VMULPSrr,  Â  Â  Â  Â  X86::VMULPSrm,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VMULSDrr,  Â  Â  Â  Â  X86::VMULSDrm,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VMULSDrr_Int,  Â  Â  X86::VMULSDrm_Int,  Â  Â  Â TB_NO_REVERSE },<br>
+  Â  { X86::VMULSSrr,  Â  Â  Â  Â  X86::VMULSSrm,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VMULSSrr_Int,  Â  Â  X86::VMULSSrm_Int,  Â  Â  Â TB_NO_REVERSE },<br>
+  Â  { X86::VORPDrr,  Â  Â  Â  Â  Â X86::VORPDrm,  Â  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VORPSrr,  Â  Â  Â  Â  Â X86::VORPSrm,  Â  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPACKSSDWrr,  Â  Â  Â X86::VPACKSSDWrm,  Â  Â  Â  0 },<br>
+  Â  { X86::VPACKSSWBrr,  Â  Â  Â X86::VPACKSSWBrm,  Â  Â  Â  0 },<br>
+  Â  { X86::VPACKUSDWrr,  Â  Â  Â X86::VPACKUSDWrm,  Â  Â  Â  0 },<br>
+  Â  { X86::VPACKUSWBrr,  Â  Â  Â X86::VPACKUSWBrm,  Â  Â  Â  0 },<br>
+  Â  { X86::VPADDBrr,  Â  Â  Â  Â  X86::VPADDBrm,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPADDDrr,  Â  Â  Â  Â  X86::VPADDDrm,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPADDQrr,  Â  Â  Â  Â  X86::VPADDQrm,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPADDSBrr,  Â  Â  Â  Â X86::VPADDSBrm,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPADDSWrr,  Â  Â  Â  Â X86::VPADDSWrm,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPADDUSBrr,  Â  Â  Â  X86::VPADDUSBrm,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPADDUSWrr,  Â  Â  Â  X86::VPADDUSWrm,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPADDWrr,  Â  Â  Â  Â  X86::VPADDWrm,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPALIGNRrri,  Â  Â  Â X86::VPALIGNRrmi,  Â  Â  Â  0 },<br>
+  Â  { X86::VPANDNrr,  Â  Â  Â  Â  X86::VPANDNrm,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPANDrr,  Â  Â  Â  Â  Â X86::VPANDrm,  Â  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPAVGBrr,  Â  Â  Â  Â  X86::VPAVGBrm,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPAVGWrr,  Â  Â  Â  Â  X86::VPAVGWrm,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPBLENDVBrr,  Â  Â  Â X86::VPBLENDVBrm,  Â  Â  Â  0 },<br>
+  Â  { X86::VPBLENDWrri,  Â  Â  Â X86::VPBLENDWrmi,  Â  Â  Â  0 },<br>
+  Â  { X86::VPCLMULQDQrr,  Â  Â  X86::VPCLMULQDQrm,  Â  Â  Â 0 },<br>
+  Â  { X86::VPCMPEQBrr,  Â  Â  Â  X86::VPCMPEQBrm,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPCMPEQDrr,  Â  Â  Â  X86::VPCMPEQDrm,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPCMPEQQrr,  Â  Â  Â  X86::VPCMPEQQrm,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPCMPEQWrr,  Â  Â  Â  X86::VPCMPEQWrm,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPCMPGTBrr,  Â  Â  Â  X86::VPCMPGTBrm,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPCMPGTDrr,  Â  Â  Â  X86::VPCMPGTDrm,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPCMPGTQrr,  Â  Â  Â  X86::VPCMPGTQrm,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPCMPGTWrr,  Â  Â  Â  X86::VPCMPGTWrm,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPHADDDrr,  Â  Â  Â  Â X86::VPHADDDrm,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPHADDSWrr128,  Â  Â X86::VPHADDSWrm128,  Â  Â  0 },<br>
+  Â  { X86::VPHADDWrr,  Â  Â  Â  Â X86::VPHADDWrm,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPHSUBDrr,  Â  Â  Â  Â X86::VPHSUBDrm,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPHSUBSWrr128,  Â  Â X86::VPHSUBSWrm128,  Â  Â  0 },<br>
+  Â  { X86::VPHSUBWrr,  Â  Â  Â  Â X86::VPHSUBWrm,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPERMILPDrr,  Â  Â  Â X86::VPERMILPDrm,  Â  Â  Â  0 },<br>
+  Â  { X86::VPERMILPSrr,  Â  Â  Â X86::VPERMILPSrm,  Â  Â  Â  0 },<br>
+  Â  { X86::VPINSRBrr,  Â  Â  Â  Â X86::VPINSRBrm,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPINSRDrr,  Â  Â  Â  Â X86::VPINSRDrm,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPINSRQrr,  Â  Â  Â  Â X86::VPINSRQrm,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPINSRWrri,  Â  Â  Â  X86::VPINSRWrmi,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPMADDUBSWrr,  Â  Â  X86::VPMADDUBSWrm,  Â  Â  Â 0 },<br>
+  Â  { X86::VPMADDWDrr,  Â  Â  Â  X86::VPMADDWDrm,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPMAXSBrr,  Â  Â  Â  Â X86::VPMAXSBrm,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPMAXSDrr,  Â  Â  Â  Â X86::VPMAXSDrm,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPMAXSWrr,  Â  Â  Â  Â X86::VPMAXSWrm,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPMAXUBrr,  Â  Â  Â  Â X86::VPMAXUBrm,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPMAXUDrr,  Â  Â  Â  Â X86::VPMAXUDrm,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPMAXUWrr,  Â  Â  Â  Â X86::VPMAXUWrm,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPMINSBrr,  Â  Â  Â  Â X86::VPMINSBrm,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPMINSDrr,  Â  Â  Â  Â X86::VPMINSDrm,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPMINSWrr,  Â  Â  Â  Â X86::VPMINSWrm,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPMINUBrr,  Â  Â  Â  Â X86::VPMINUBrm,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPMINUDrr,  Â  Â  Â  Â X86::VPMINUDrm,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPMINUWrr,  Â  Â  Â  Â X86::VPMINUWrm,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPMULDQrr,  Â  Â  Â  Â X86::VPMULDQrm,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPMULHRSWrr,  Â  Â  Â X86::VPMULHRSWrm,  Â  Â  Â  0 },<br>
+  Â  { X86::VPMULHUWrr,  Â  Â  Â  X86::VPMULHUWrm,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPMULHWrr,  Â  Â  Â  Â X86::VPMULHWrm,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPMULLDrr,  Â  Â  Â  Â X86::VPMULLDrm,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPMULLWrr,  Â  Â  Â  Â X86::VPMULLWrm,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPMULUDQrr,  Â  Â  Â  X86::VPMULUDQrm,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPORrr,  Â  Â  Â  Â  Â  X86::VPORrm,  Â  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPSADBWrr,  Â  Â  Â  Â X86::VPSADBWrm,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPSHUFBrr,  Â  Â  Â  Â X86::VPSHUFBrm,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPSIGNBrr128,  Â  Â  X86::VPSIGNBrm128,  Â  Â  Â 0 },<br>
+  Â  { X86::VPSIGNWrr128,  Â  Â  X86::VPSIGNWrm128,  Â  Â  Â 0 },<br>
+  Â  { X86::VPSIGNDrr128,  Â  Â  X86::VPSIGNDrm128,  Â  Â  Â 0 },<br>
+  Â  { X86::VPSLLDrr,  Â  Â  Â  Â  X86::VPSLLDrm,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPSLLQrr,  Â  Â  Â  Â  X86::VPSLLQrm,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPSLLWrr,  Â  Â  Â  Â  X86::VPSLLWrm,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPSRADrr,  Â  Â  Â  Â  X86::VPSRADrm,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPSRAWrr,  Â  Â  Â  Â  X86::VPSRAWrm,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPSRLDrr,  Â  Â  Â  Â  X86::VPSRLDrm,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPSRLQrr,  Â  Â  Â  Â  X86::VPSRLQrm,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPSRLWrr,  Â  Â  Â  Â  X86::VPSRLWrm,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPSUBBrr,  Â  Â  Â  Â  X86::VPSUBBrm,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPSUBDrr,  Â  Â  Â  Â  X86::VPSUBDrm,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPSUBQrr,  Â  Â  Â  Â  X86::VPSUBQrm,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPSUBSBrr,  Â  Â  Â  Â X86::VPSUBSBrm,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPSUBSWrr,  Â  Â  Â  Â X86::VPSUBSWrm,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPSUBUSBrr,  Â  Â  Â  X86::VPSUBUSBrm,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPSUBUSWrr,  Â  Â  Â  X86::VPSUBUSWrm,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPSUBWrr,  Â  Â  Â  Â  X86::VPSUBWrm,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPUNPCKHBWrr,  Â  Â  X86::VPUNPCKHBWrm,  Â  Â  Â 0 },<br>
+  Â  { X86::VPUNPCKHDQrr,  Â  Â  X86::VPUNPCKHDQrm,  Â  Â  Â 0 },<br>
+  Â  { X86::VPUNPCKHQDQrr,  Â  Â X86::VPUNPCKHQDQrm,  Â  Â  0 },<br>
+  Â  { X86::VPUNPCKHWDrr,  Â  Â  X86::VPUNPCKHWDrm,  Â  Â  Â 0 },<br>
+  Â  { X86::VPUNPCKLBWrr,  Â  Â  X86::VPUNPCKLBWrm,  Â  Â  Â 0 },<br>
+  Â  { X86::VPUNPCKLDQrr,  Â  Â  X86::VPUNPCKLDQrm,  Â  Â  Â 0 },<br>
+  Â  { X86::VPUNPCKLQDQrr,  Â  Â X86::VPUNPCKLQDQrm,  Â  Â  0 },<br>
+  Â  { X86::VPUNPCKLWDrr,  Â  Â  X86::VPUNPCKLWDrm,  Â  Â  Â 0 },<br>
+  Â  { X86::VPXORrr,  Â  Â  Â  Â  Â X86::VPXORrm,  Â  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VRCPSSr,  Â  Â  Â  Â  Â X86::VRCPSSm,  Â  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VRCPSSr_Int,  Â  Â  Â X86::VRCPSSm_Int,  Â  Â  Â  TB_NO_REVERSE },<br>
+  Â  { X86::VRSQRTSSr,  Â  Â  Â  Â X86::VRSQRTSSm,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VRSQRTSSr_Int,  Â  Â X86::VRSQRTSSm_Int,  Â  Â  TB_NO_REVERSE },<br>
+  Â  { X86::VROUNDSDr,  Â  Â  Â  Â X86::VROUNDSDm,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VROUNDSDr_Int,  Â  Â X86::VROUNDSDm_Int,  Â  Â  TB_NO_REVERSE },<br>
+  Â  { X86::VROUNDSSr,  Â  Â  Â  Â X86::VROUNDSSm,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VROUNDSSr_Int,  Â  Â X86::VROUNDSSm_Int,  Â  Â  TB_NO_REVERSE },<br>
+  Â  { X86::VSHUFPDrri,  Â  Â  Â  X86::VSHUFPDrmi,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VSHUFPSrri,  Â  Â  Â  X86::VSHUFPSrmi,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VSQRTSDr,  Â  Â  Â  Â  X86::VSQRTSDm,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VSQRTSDr_Int,  Â  Â  X86::VSQRTSDm_Int,  Â  Â  Â TB_NO_REVERSE },<br>
+  Â  { X86::VSQRTSSr,  Â  Â  Â  Â  X86::VSQRTSSm,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VSQRTSSr_Int,  Â  Â  X86::VSQRTSSm_Int,  Â  Â  Â TB_NO_REVERSE },<br>
+  Â  { X86::VSUBPDrr,  Â  Â  Â  Â  X86::VSUBPDrm,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VSUBPSrr,  Â  Â  Â  Â  X86::VSUBPSrm,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VSUBSDrr,  Â  Â  Â  Â  X86::VSUBSDrm,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VSUBSDrr_Int,  Â  Â  X86::VSUBSDrm_Int,  Â  Â  Â TB_NO_REVERSE },<br>
+  Â  { X86::VSUBSSrr,  Â  Â  Â  Â  X86::VSUBSSrm,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VSUBSSrr_Int,  Â  Â  X86::VSUBSSrm_Int,  Â  Â  Â TB_NO_REVERSE },<br>
+  Â  { X86::VUNPCKHPDrr,  Â  Â  Â X86::VUNPCKHPDrm,  Â  Â  Â  0 },<br>
+  Â  { X86::VUNPCKHPSrr,  Â  Â  Â X86::VUNPCKHPSrm,  Â  Â  Â  0 },<br>
+  Â  { X86::VUNPCKLPDrr,  Â  Â  Â X86::VUNPCKLPDrm,  Â  Â  Â  0 },<br>
+  Â  { X86::VUNPCKLPSrr,  Â  Â  Â X86::VUNPCKLPSrm,  Â  Â  Â  0 },<br>
+  Â  { X86::VXORPDrr,  Â  Â  Â  Â  X86::VXORPDrm,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VXORPSrr,  Â  Â  Â  Â  X86::VXORPSrm,  Â  Â  Â  Â  Â 0 },<br>
+<br>
+  Â  // AVX 256-bit foldable instructions<br>
+  Â  { X86::VADDPDYrr,  Â  Â  Â  Â X86::VADDPDYrm,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VADDPSYrr,  Â  Â  Â  Â X86::VADDPSYrm,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VADDSUBPDYrr,  Â  Â  X86::VADDSUBPDYrm,  Â  Â  Â 0 },<br>
+  Â  { X86::VADDSUBPSYrr,  Â  Â  X86::VADDSUBPSYrm,  Â  Â  Â 0 },<br>
+  Â  { X86::VANDNPDYrr,  Â  Â  Â  X86::VANDNPDYrm,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VANDNPSYrr,  Â  Â  Â  X86::VANDNPSYrm,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VANDPDYrr,  Â  Â  Â  Â X86::VANDPDYrm,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VANDPSYrr,  Â  Â  Â  Â X86::VANDPSYrm,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VBLENDPDYrri,  Â  Â  X86::VBLENDPDYrmi,  Â  Â  Â 0 },<br>
+  Â  { X86::VBLENDPSYrri,  Â  Â  X86::VBLENDPSYrmi,  Â  Â  Â 0 },<br>
+  Â  { X86::VBLENDVPDYrr,  Â  Â  X86::VBLENDVPDYrm,  Â  Â  Â 0 },<br>
+  Â  { X86::VBLENDVPSYrr,  Â  Â  X86::VBLENDVPSYrm,  Â  Â  Â 0 },<br>
+  Â  { X86::VCMPPDYrri,  Â  Â  Â  X86::VCMPPDYrmi,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VCMPPSYrri,  Â  Â  Â  X86::VCMPPSYrmi,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VDIVPDYrr,  Â  Â  Â  Â X86::VDIVPDYrm,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VDIVPSYrr,  Â  Â  Â  Â X86::VDIVPSYrm,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VDPPSYrri,  Â  Â  Â  Â X86::VDPPSYrmi,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VHADDPDYrr,  Â  Â  Â  X86::VHADDPDYrm,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VHADDPSYrr,  Â  Â  Â  X86::VHADDPSYrm,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VHSUBPDYrr,  Â  Â  Â  X86::VHSUBPDYrm,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VHSUBPSYrr,  Â  Â  Â  X86::VHSUBPSYrm,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VINSERTF128rr,  Â  Â X86::VINSERTF128rm,  Â  Â  0 },<br>
+  Â  { X86::VMAXCPDYrr,  Â  Â  Â  X86::VMAXCPDYrm,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VMAXCPSYrr,  Â  Â  Â  X86::VMAXCPSYrm,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VMAXPDYrr,  Â  Â  Â  Â X86::VMAXPDYrm,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VMAXPSYrr,  Â  Â  Â  Â X86::VMAXPSYrm,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VMINCPDYrr,  Â  Â  Â  X86::VMINCPDYrm,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VMINCPSYrr,  Â  Â  Â  X86::VMINCPSYrm,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VMINPDYrr,  Â  Â  Â  Â X86::VMINPDYrm,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VMINPSYrr,  Â  Â  Â  Â X86::VMINPSYrm,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VMULPDYrr,  Â  Â  Â  Â X86::VMULPDYrm,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VMULPSYrr,  Â  Â  Â  Â X86::VMULPSYrm,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VORPDYrr,  Â  Â  Â  Â  X86::VORPDYrm,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VORPSYrr,  Â  Â  Â  Â  X86::VORPSYrm,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPERM2F128rr,  Â  Â  X86::VPERM2F128rm,  Â  Â  Â 0 },<br>
+  Â  { X86::VPERMILPDYrr,  Â  Â  X86::VPERMILPDYrm,  Â  Â  Â 0 },<br>
+  Â  { X86::VPERMILPSYrr,  Â  Â  X86::VPERMILPSYrm,  Â  Â  Â 0 },<br>
+  Â  { X86::VSHUFPDYrri,  Â  Â  Â X86::VSHUFPDYrmi,  Â  Â  Â  0 },<br>
+  Â  { X86::VSHUFPSYrri,  Â  Â  Â X86::VSHUFPSYrmi,  Â  Â  Â  0 },<br>
+  Â  { X86::VSUBPDYrr,  Â  Â  Â  Â X86::VSUBPDYrm,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VSUBPSYrr,  Â  Â  Â  Â X86::VSUBPSYrm,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VUNPCKHPDYrr,  Â  Â  X86::VUNPCKHPDYrm,  Â  Â  Â 0 },<br>
+  Â  { X86::VUNPCKHPSYrr,  Â  Â  X86::VUNPCKHPSYrm,  Â  Â  Â 0 },<br>
+  Â  { X86::VUNPCKLPDYrr,  Â  Â  X86::VUNPCKLPDYrm,  Â  Â  Â 0 },<br>
+  Â  { X86::VUNPCKLPSYrr,  Â  Â  X86::VUNPCKLPSYrm,  Â  Â  Â 0 },<br>
+  Â  { X86::VXORPDYrr,  Â  Â  Â  Â X86::VXORPDYrm,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VXORPSYrr,  Â  Â  Â  Â X86::VXORPSYrm,  Â  Â  Â  Â  0 },<br>
+<br>
+  Â  // AVX2 foldable instructions<br>
+  Â  { X86::VINSERTI128rr,  Â  Â X86::VINSERTI128rm,  Â  Â  0 },<br>
+  Â  { X86::VPACKSSDWYrr,  Â  Â  X86::VPACKSSDWYrm,  Â  Â  Â 0 },<br>
+  Â  { X86::VPACKSSWBYrr,  Â  Â  X86::VPACKSSWBYrm,  Â  Â  Â 0 },<br>
+  Â  { X86::VPACKUSDWYrr,  Â  Â  X86::VPACKUSDWYrm,  Â  Â  Â 0 },<br>
+  Â  { X86::VPACKUSWBYrr,  Â  Â  X86::VPACKUSWBYrm,  Â  Â  Â 0 },<br>
+  Â  { X86::VPADDBYrr,  Â  Â  Â  Â X86::VPADDBYrm,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPADDDYrr,  Â  Â  Â  Â X86::VPADDDYrm,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPADDQYrr,  Â  Â  Â  Â X86::VPADDQYrm,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPADDSBYrr,  Â  Â  Â  X86::VPADDSBYrm,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPADDSWYrr,  Â  Â  Â  X86::VPADDSWYrm,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPADDUSBYrr,  Â  Â  Â X86::VPADDUSBYrm,  Â  Â  Â  0 },<br>
+  Â  { X86::VPADDUSWYrr,  Â  Â  Â X86::VPADDUSWYrm,  Â  Â  Â  0 },<br>
+  Â  { X86::VPADDWYrr,  Â  Â  Â  Â X86::VPADDWYrm,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPALIGNRYrri,  Â  Â  X86::VPALIGNRYrmi,  Â  Â  Â 0 },<br>
+  Â  { X86::VPANDNYrr,  Â  Â  Â  Â X86::VPANDNYrm,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPANDYrr,  Â  Â  Â  Â  X86::VPANDYrm,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPAVGBYrr,  Â  Â  Â  Â X86::VPAVGBYrm,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPAVGWYrr,  Â  Â  Â  Â X86::VPAVGWYrm,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPBLENDDrri,  Â  Â  Â X86::VPBLENDDrmi,  Â  Â  Â  0 },<br>
+  Â  { X86::VPBLENDDYrri,  Â  Â  X86::VPBLENDDYrmi,  Â  Â  Â 0 },<br>
+  Â  { X86::VPBLENDVBYrr,  Â  Â  X86::VPBLENDVBYrm,  Â  Â  Â 0 },<br>
+  Â  { X86::VPBLENDWYrri,  Â  Â  X86::VPBLENDWYrmi,  Â  Â  Â 0 },<br>
+  Â  { X86::VPCMPEQBYrr,  Â  Â  Â X86::VPCMPEQBYrm,  Â  Â  Â  0 },<br>
+  Â  { X86::VPCMPEQDYrr,  Â  Â  Â X86::VPCMPEQDYrm,  Â  Â  Â  0 },<br>
+  Â  { X86::VPCMPEQQYrr,  Â  Â  Â X86::VPCMPEQQYrm,  Â  Â  Â  0 },<br>
+  Â  { X86::VPCMPEQWYrr,  Â  Â  Â X86::VPCMPEQWYrm,  Â  Â  Â  0 },<br>
+  Â  { X86::VPCMPGTBYrr,  Â  Â  Â X86::VPCMPGTBYrm,  Â  Â  Â  0 },<br>
+  Â  { X86::VPCMPGTDYrr,  Â  Â  Â X86::VPCMPGTDYrm,  Â  Â  Â  0 },<br>
+  Â  { X86::VPCMPGTQYrr,  Â  Â  Â X86::VPCMPGTQYrm,  Â  Â  Â  0 },<br>
+  Â  { X86::VPCMPGTWYrr,  Â  Â  Â X86::VPCMPGTWYrm,  Â  Â  Â  0 },<br>
+  Â  { X86::VPERM2I128rr,  Â  Â  X86::VPERM2I128rm,  Â  Â  Â 0 },<br>
+  Â  { X86::VPERMDYrr,  Â  Â  Â  Â X86::VPERMDYrm,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPERMPSYrr,  Â  Â  Â  X86::VPERMPSYrm,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPHADDDYrr,  Â  Â  Â  X86::VPHADDDYrm,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPHADDSWrr256,  Â  Â X86::VPHADDSWrm256,  Â  Â  0 },<br>
+  Â  { X86::VPHADDWYrr,  Â  Â  Â  X86::VPHADDWYrm,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPHSUBDYrr,  Â  Â  Â  X86::VPHSUBDYrm,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPHSUBSWrr256,  Â  Â X86::VPHSUBSWrm256,  Â  Â  0 },<br>
+  Â  { X86::VPHSUBWYrr,  Â  Â  Â  X86::VPHSUBWYrm,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPMADDUBSWYrr,  Â  Â X86::VPMADDUBSWYrm,  Â  Â  0 },<br>
+  Â  { X86::VPMADDWDYrr,  Â  Â  Â X86::VPMADDWDYrm,  Â  Â  Â  0 },<br>
+  Â  { X86::VPMAXSBYrr,  Â  Â  Â  X86::VPMAXSBYrm,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPMAXSDYrr,  Â  Â  Â  X86::VPMAXSDYrm,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPMAXSWYrr,  Â  Â  Â  X86::VPMAXSWYrm,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPMAXUBYrr,  Â  Â  Â  X86::VPMAXUBYrm,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPMAXUDYrr,  Â  Â  Â  X86::VPMAXUDYrm,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPMAXUWYrr,  Â  Â  Â  X86::VPMAXUWYrm,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPMINSBYrr,  Â  Â  Â  X86::VPMINSBYrm,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPMINSDYrr,  Â  Â  Â  X86::VPMINSDYrm,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPMINSWYrr,  Â  Â  Â  X86::VPMINSWYrm,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPMINUBYrr,  Â  Â  Â  X86::VPMINUBYrm,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPMINUDYrr,  Â  Â  Â  X86::VPMINUDYrm,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPMINUWYrr,  Â  Â  Â  X86::VPMINUWYrm,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VMPSADBWYrri,  Â  Â  X86::VMPSADBWYrmi,  Â  Â  Â 0 },<br>
+  Â  { X86::VPMULDQYrr,  Â  Â  Â  X86::VPMULDQYrm,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPMULHRSWYrr,  Â  Â  X86::VPMULHRSWYrm,  Â  Â  Â 0 },<br>
+  Â  { X86::VPMULHUWYrr,  Â  Â  Â X86::VPMULHUWYrm,  Â  Â  Â  0 },<br>
+  Â  { X86::VPMULHWYrr,  Â  Â  Â  X86::VPMULHWYrm,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPMULLDYrr,  Â  Â  Â  X86::VPMULLDYrm,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPMULLWYrr,  Â  Â  Â  X86::VPMULLWYrm,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPMULUDQYrr,  Â  Â  Â X86::VPMULUDQYrm,  Â  Â  Â  0 },<br>
+  Â  { X86::VPORYrr,  Â  Â  Â  Â  Â X86::VPORYrm,  Â  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPSADBWYrr,  Â  Â  Â  X86::VPSADBWYrm,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPSHUFBYrr,  Â  Â  Â  X86::VPSHUFBYrm,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPSIGNBYrr256,  Â  Â X86::VPSIGNBYrm256,  Â  Â  0 },<br>
+  Â  { X86::VPSIGNWYrr256,  Â  Â X86::VPSIGNWYrm256,  Â  Â  0 },<br>
+  Â  { X86::VPSIGNDYrr256,  Â  Â X86::VPSIGNDYrm256,  Â  Â  0 },<br>
+  Â  { X86::VPSLLDYrr,  Â  Â  Â  Â X86::VPSLLDYrm,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPSLLQYrr,  Â  Â  Â  Â X86::VPSLLQYrm,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPSLLWYrr,  Â  Â  Â  Â X86::VPSLLWYrm,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPSLLVDrr,  Â  Â  Â  Â X86::VPSLLVDrm,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPSLLVDYrr,  Â  Â  Â  X86::VPSLLVDYrm,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPSLLVQrr,  Â  Â  Â  Â X86::VPSLLVQrm,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPSLLVQYrr,  Â  Â  Â  X86::VPSLLVQYrm,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPSRADYrr,  Â  Â  Â  Â X86::VPSRADYrm,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPSRAWYrr,  Â  Â  Â  Â X86::VPSRAWYrm,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPSRAVDrr,  Â  Â  Â  Â X86::VPSRAVDrm,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPSRAVDYrr,  Â  Â  Â  X86::VPSRAVDYrm,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPSRLDYrr,  Â  Â  Â  Â X86::VPSRLDYrm,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPSRLQYrr,  Â  Â  Â  Â X86::VPSRLQYrm,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPSRLWYrr,  Â  Â  Â  Â X86::VPSRLWYrm,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPSRLVDrr,  Â  Â  Â  Â X86::VPSRLVDrm,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPSRLVDYrr,  Â  Â  Â  X86::VPSRLVDYrm,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPSRLVQrr,  Â  Â  Â  Â X86::VPSRLVQrm,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPSRLVQYrr,  Â  Â  Â  X86::VPSRLVQYrm,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPSUBBYrr,  Â  Â  Â  Â X86::VPSUBBYrm,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPSUBDYrr,  Â  Â  Â  Â X86::VPSUBDYrm,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPSUBQYrr,  Â  Â  Â  Â X86::VPSUBQYrm,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPSUBSBYrr,  Â  Â  Â  X86::VPSUBSBYrm,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPSUBSWYrr,  Â  Â  Â  X86::VPSUBSWYrm,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPSUBUSBYrr,  Â  Â  Â X86::VPSUBUSBYrm,  Â  Â  Â  0 },<br>
+  Â  { X86::VPSUBUSWYrr,  Â  Â  Â X86::VPSUBUSWYrm,  Â  Â  Â  0 },<br>
+  Â  { X86::VPSUBWYrr,  Â  Â  Â  Â X86::VPSUBWYrm,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPUNPCKHBWYrr,  Â  Â X86::VPUNPCKHBWYrm,  Â  Â  0 },<br>
+  Â  { X86::VPUNPCKHDQYrr,  Â  Â X86::VPUNPCKHDQYrm,  Â  Â  0 },<br>
+  Â  { X86::VPUNPCKHQDQYrr,  Â  X86::VPUNPCKHQDQYrm,  Â  Â 0 },<br>
+  Â  { X86::VPUNPCKHWDYrr,  Â  Â X86::VPUNPCKHWDYrm,  Â  Â  0 },<br>
+  Â  { X86::VPUNPCKLBWYrr,  Â  Â X86::VPUNPCKLBWYrm,  Â  Â  0 },<br>
+  Â  { X86::VPUNPCKLDQYrr,  Â  Â X86::VPUNPCKLDQYrm,  Â  Â  0 },<br>
+  Â  { X86::VPUNPCKLQDQYrr,  Â  X86::VPUNPCKLQDQYrm,  Â  Â 0 },<br>
+  Â  { X86::VPUNPCKLWDYrr,  Â  Â X86::VPUNPCKLWDYrm,  Â  Â  0 },<br>
+  Â  { X86::VPXORYrr,  Â  Â  Â  Â  X86::VPXORYrm,  Â  Â  Â  Â  Â 0 },<br>
+<br>
+  Â  // FMA4 foldable patterns<br>
+  Â  { X86::VFMADDSS4rr,  Â  Â  Â X86::VFMADDSS4mr,  Â  Â  Â  TB_ALIGN_NONE },<br>
+  Â  { X86::VFMADDSS4rr_Int,  Â X86::VFMADDSS4mr_Int,  Â  TB_NO_REVERSE },<br>
+  Â  { X86::VFMADDSD4rr,  Â  Â  Â X86::VFMADDSD4mr,  Â  Â  Â  TB_ALIGN_NONE },<br>
+  Â  { X86::VFMADDSD4rr_Int,  Â X86::VFMADDSD4mr_Int,  Â  TB_NO_REVERSE },<br>
+  Â  { X86::VFMADDPS4rr,  Â  Â  Â X86::VFMADDPS4mr,  Â  Â  Â  TB_ALIGN_NONE },<br>
+  Â  { X86::VFMADDPD4rr,  Â  Â  Â X86::VFMADDPD4mr,  Â  Â  Â  TB_ALIGN_NONE },<br>
+  Â  { X86::VFMADDPS4Yrr,  Â  Â  X86::VFMADDPS4Ymr,  Â  Â  Â TB_ALIGN_NONE },<br>
+  Â  { X86::VFMADDPD4Yrr,  Â  Â  X86::VFMADDPD4Ymr,  Â  Â  Â TB_ALIGN_NONE },<br>
+  Â  { X86::VFNMADDSS4rr,  Â  Â  X86::VFNMADDSS4mr,  Â  Â  Â TB_ALIGN_NONE },<br>
+  Â  { X86::VFNMADDSS4rr_Int,  X86::VFNMADDSS4mr_Int,  Â TB_NO_REVERSE },<br>
+  Â  { X86::VFNMADDSD4rr,  Â  Â  X86::VFNMADDSD4mr,  Â  Â  Â TB_ALIGN_NONE },<br>
+  Â  { X86::VFNMADDSD4rr_Int,  X86::VFNMADDSD4mr_Int,  Â TB_NO_REVERSE },<br>
+  Â  { X86::VFNMADDPS4rr,  Â  Â  X86::VFNMADDPS4mr,  Â  Â  Â TB_ALIGN_NONE },<br>
+  Â  { X86::VFNMADDPD4rr,  Â  Â  X86::VFNMADDPD4mr,  Â  Â  Â TB_ALIGN_NONE },<br>
+  Â  { X86::VFNMADDPS4Yrr,  Â  Â X86::VFNMADDPS4Ymr,  Â  Â  TB_ALIGN_NONE },<br>
+  Â  { X86::VFNMADDPD4Yrr,  Â  Â X86::VFNMADDPD4Ymr,  Â  Â  TB_ALIGN_NONE },<br>
+  Â  { X86::VFMSUBSS4rr,  Â  Â  Â X86::VFMSUBSS4mr,  Â  Â  Â  TB_ALIGN_NONE },<br>
+  Â  { X86::VFMSUBSS4rr_Int,  Â X86::VFMSUBSS4mr_Int,  Â  TB_NO_REVERSE },<br>
+  Â  { X86::VFMSUBSD4rr,  Â  Â  Â X86::VFMSUBSD4mr,  Â  Â  Â  TB_ALIGN_NONE },<br>
+  Â  { X86::VFMSUBSD4rr_Int,  Â X86::VFMSUBSD4mr_Int,  Â  TB_NO_REVERSE },<br>
+  Â  { X86::VFMSUBPS4rr,  Â  Â  Â X86::VFMSUBPS4mr,  Â  Â  Â  TB_ALIGN_NONE },<br>
+  Â  { X86::VFMSUBPD4rr,  Â  Â  Â X86::VFMSUBPD4mr,  Â  Â  Â  TB_ALIGN_NONE },<br>
+  Â  { X86::VFMSUBPS4Yrr,  Â  Â  X86::VFMSUBPS4Ymr,  Â  Â  Â TB_ALIGN_NONE },<br>
+  Â  { X86::VFMSUBPD4Yrr,  Â  Â  X86::VFMSUBPD4Ymr,  Â  Â  Â TB_ALIGN_NONE },<br>
+  Â  { X86::VFNMSUBSS4rr,  Â  Â  X86::VFNMSUBSS4mr,  Â  Â  Â TB_ALIGN_NONE },<br>
+  Â  { X86::VFNMSUBSS4rr_Int,  X86::VFNMSUBSS4mr_Int,  Â TB_NO_REVERSE },<br>
+  Â  { X86::VFNMSUBSD4rr,  Â  Â  X86::VFNMSUBSD4mr,  Â  Â  Â TB_ALIGN_NONE },<br>
+  Â  { X86::VFNMSUBSD4rr_Int,  X86::VFNMSUBSD4mr_Int,  Â TB_NO_REVERSE },<br>
+  Â  { X86::VFNMSUBPS4rr,  Â  Â  X86::VFNMSUBPS4mr,  Â  Â  Â TB_ALIGN_NONE },<br>
+  Â  { X86::VFNMSUBPD4rr,  Â  Â  X86::VFNMSUBPD4mr,  Â  Â  Â TB_ALIGN_NONE },<br>
+  Â  { X86::VFNMSUBPS4Yrr,  Â  Â X86::VFNMSUBPS4Ymr,  Â  Â  TB_ALIGN_NONE },<br>
+  Â  { X86::VFNMSUBPD4Yrr,  Â  Â X86::VFNMSUBPD4Ymr,  Â  Â  TB_ALIGN_NONE },<br>
+  Â  { X86::VFMADDSUBPS4rr,  Â  X86::VFMADDSUBPS4mr,  Â  Â TB_ALIGN_NONE },<br>
+  Â  { X86::VFMADDSUBPD4rr,  Â  X86::VFMADDSUBPD4mr,  Â  Â TB_ALIGN_NONE },<br>
+  Â  { X86::VFMADDSUBPS4Yrr,  Â X86::VFMADDSUBPS4Ymr,  Â  TB_ALIGN_NONE },<br>
+  Â  { X86::VFMADDSUBPD4Yrr,  Â X86::VFMADDSUBPD4Ymr,  Â  TB_ALIGN_NONE },<br>
+  Â  { X86::VFMSUBADDPS4rr,  Â  X86::VFMSUBADDPS4mr,  Â  Â TB_ALIGN_NONE },<br>
+  Â  { X86::VFMSUBADDPD4rr,  Â  X86::VFMSUBADDPD4mr,  Â  Â TB_ALIGN_NONE },<br>
+  Â  { X86::VFMSUBADDPS4Yrr,  Â X86::VFMSUBADDPS4Ymr,  Â  TB_ALIGN_NONE },<br>
+  Â  { X86::VFMSUBADDPD4Yrr,  Â X86::VFMSUBADDPD4Ymr,  Â  TB_ALIGN_NONE },<br>
+<br>
+  Â  // XOP foldable instructions<br>
+  Â  { X86::VPCMOVrrr,  Â  Â  Â  Â X86::VPCMOVrmr,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPCMOVYrrr,  Â  Â  Â  X86::VPCMOVYrmr,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPCOMBri,  Â  Â  Â  Â  X86::VPCOMBmi,  Â  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPCOMDri,  Â  Â  Â  Â  X86::VPCOMDmi,  Â  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPCOMQri,  Â  Â  Â  Â  X86::VPCOMQmi,  Â  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPCOMWri,  Â  Â  Â  Â  X86::VPCOMWmi,  Â  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPCOMUBri,  Â  Â  Â  Â X86::VPCOMUBmi,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPCOMUDri,  Â  Â  Â  Â X86::VPCOMUDmi,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPCOMUQri,  Â  Â  Â  Â X86::VPCOMUQmi,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPCOMUWri,  Â  Â  Â  Â X86::VPCOMUWmi,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPERMIL2PDrr,  Â  Â  X86::VPERMIL2PDmr,  Â  Â  Â  0 },<br>
+  Â  { X86::VPERMIL2PDYrr,  Â  Â X86::VPERMIL2PDYmr,  Â  Â  Â 0 },<br>
+  Â  { X86::VPERMIL2PSrr,  Â  Â  X86::VPERMIL2PSmr,  Â  Â  Â  0 },<br>
+  Â  { X86::VPERMIL2PSYrr,  Â  Â X86::VPERMIL2PSYmr,  Â  Â  Â 0 },<br>
+  Â  { X86::VPMACSDDrr,  Â  Â  Â  X86::VPMACSDDrm,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPMACSDQHrr,  Â  Â  Â X86::VPMACSDQHrm,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPMACSDQLrr,  Â  Â  Â X86::VPMACSDQLrm,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPMACSSDDrr,  Â  Â  Â X86::VPMACSSDDrm,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPMACSSDQHrr,  Â  Â  X86::VPMACSSDQHrm,  Â  Â  Â  0 },<br>
+  Â  { X86::VPMACSSDQLrr,  Â  Â  X86::VPMACSSDQLrm,  Â  Â  Â  0 },<br>
+  Â  { X86::VPMACSSWDrr,  Â  Â  Â X86::VPMACSSWDrm,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPMACSSWWrr,  Â  Â  Â X86::VPMACSSWWrm,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPMACSWDrr,  Â  Â  Â  X86::VPMACSWDrm,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPMACSWWrr,  Â  Â  Â  X86::VPMACSWWrm,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPMADCSSWDrr,  Â  Â  X86::VPMADCSSWDrm,  Â  Â  Â  0 },<br>
+  Â  { X86::VPMADCSWDrr,  Â  Â  Â X86::VPMADCSWDrm,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPPERMrrr,  Â  Â  Â  Â X86::VPPERMrmr,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPROTBrr,  Â  Â  Â  Â  X86::VPROTBrm,  Â  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPROTDrr,  Â  Â  Â  Â  X86::VPROTDrm,  Â  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPROTQrr,  Â  Â  Â  Â  X86::VPROTQrm,  Â  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPROTWrr,  Â  Â  Â  Â  X86::VPROTWrm,  Â  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPSHABrr,  Â  Â  Â  Â  X86::VPSHABrm,  Â  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPSHADrr,  Â  Â  Â  Â  X86::VPSHADrm,  Â  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPSHAQrr,  Â  Â  Â  Â  X86::VPSHAQrm,  Â  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPSHAWrr,  Â  Â  Â  Â  X86::VPSHAWrm,  Â  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPSHLBrr,  Â  Â  Â  Â  X86::VPSHLBrm,  Â  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPSHLDrr,  Â  Â  Â  Â  X86::VPSHLDrm,  Â  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPSHLQrr,  Â  Â  Â  Â  X86::VPSHLQrm,  Â  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPSHLWrr,  Â  Â  Â  Â  X86::VPSHLWrm,  Â  Â  Â  Â  Â  0 },<br>
+<br>
+  Â  // BMI/BMI2 foldable instructions<br>
+  Â  { X86::ANDN32rr,  Â  Â  Â  Â  X86::ANDN32rm,  Â  Â  Â  Â  Â  0 },<br>
+  Â  { X86::ANDN64rr,  Â  Â  Â  Â  X86::ANDN64rm,  Â  Â  Â  Â  Â  0 },<br>
+  Â  { X86::MULX32rr,  Â  Â  Â  Â  X86::MULX32rm,  Â  Â  Â  Â  Â  0 },<br>
+  Â  { X86::MULX64rr,  Â  Â  Â  Â  X86::MULX64rm,  Â  Â  Â  Â  Â  0 },<br>
+  Â  { X86::PDEP32rr,  Â  Â  Â  Â  X86::PDEP32rm,  Â  Â  Â  Â  Â  0 },<br>
+  Â  { X86::PDEP64rr,  Â  Â  Â  Â  X86::PDEP64rm,  Â  Â  Â  Â  Â  0 },<br>
+  Â  { X86::PEXT32rr,  Â  Â  Â  Â  X86::PEXT32rm,  Â  Â  Â  Â  Â  0 },<br>
+  Â  { X86::PEXT64rr,  Â  Â  Â  Â  X86::PEXT64rm,  Â  Â  Â  Â  Â  0 },<br>
+<br>
+  Â  // ADX foldable instructions<br>
+  Â  { X86::ADCX32rr,  Â  Â  Â  Â  X86::ADCX32rm,  Â  Â  Â  Â  Â  0 },<br>
+  Â  { X86::ADCX64rr,  Â  Â  Â  Â  X86::ADCX64rm,  Â  Â  Â  Â  Â  0 },<br>
+  Â  { X86::ADOX32rr,  Â  Â  Â  Â  X86::ADOX32rm,  Â  Â  Â  Â  Â  0 },<br>
+  Â  { X86::ADOX64rr,  Â  Â  Â  Â  X86::ADOX64rm,  Â  Â  Â  Â  Â  0 },<br>
+<br>
+  Â  // AVX-512 foldable instructions<br>
+  Â  { X86::VADDPDZrr,  Â  Â  Â  Â X86::VADDPDZrm,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VADDPSZrr,  Â  Â  Â  Â X86::VADDPSZrm,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VADDSDZrr,  Â  Â  Â  Â X86::VADDSDZrm,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VADDSDZrr_Int,  Â  Â X86::VADDSDZrm_Int,  Â  Â  Â TB_NO_REVERSE },<br>
+  Â  { X86::VADDSSZrr,  Â  Â  Â  Â X86::VADDSSZrm,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VADDSSZrr_Int,  Â  Â X86::VADDSSZrm_Int,  Â  Â  Â TB_NO_REVERSE },<br>
+  Â  { X86::VALIGNDZrri,  Â  Â  Â X86::VALIGNDZrmi,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VALIGNQZrri,  Â  Â  Â X86::VALIGNQZrmi,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VANDNPDZrr,  Â  Â  Â  X86::VANDNPDZrm,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VANDNPSZrr,  Â  Â  Â  X86::VANDNPSZrm,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VANDPDZrr,  Â  Â  Â  Â X86::VANDPDZrm,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VANDPSZrr,  Â  Â  Â  Â X86::VANDPSZrm,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VCMPPDZrri,  Â  Â  Â  X86::VCMPPDZrmi,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VCMPPSZrri,  Â  Â  Â  X86::VCMPPSZrmi,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VCMPSDZrr,  Â  Â  Â  Â X86::VCMPSDZrm,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VCMPSDZrr_Int,  Â  Â X86::VCMPSDZrm_Int,  Â  Â  Â TB_NO_REVERSE },<br>
+  Â  { X86::VCMPSSZrr,  Â  Â  Â  Â X86::VCMPSSZrm,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VCMPSSZrr_Int,  Â  Â X86::VCMPSSZrm_Int,  Â  Â  Â TB_NO_REVERSE },<br>
+  Â  { X86::VDIVPDZrr,  Â  Â  Â  Â X86::VDIVPDZrm,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VDIVPSZrr,  Â  Â  Â  Â X86::VDIVPSZrm,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VDIVSDZrr,  Â  Â  Â  Â X86::VDIVSDZrm,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VDIVSDZrr_Int,  Â  Â X86::VDIVSDZrm_Int,  Â  Â  Â TB_NO_REVERSE },<br>
+  Â  { X86::VDIVSSZrr,  Â  Â  Â  Â X86::VDIVSSZrm,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VDIVSSZrr_Int,  Â  Â X86::VDIVSSZrm_Int,  Â  Â  Â TB_NO_REVERSE },<br>
+  Â  { X86::VINSERTF32x4Zrr,  Â X86::VINSERTF32x4Zrm,  Â  Â 0 },<br>
+  Â  { X86::VINSERTF32x8Zrr,  Â X86::VINSERTF32x8Zrm,  Â  Â 0 },<br>
+  Â  { X86::VINSERTF64x2Zrr,  Â X86::VINSERTF64x2Zrm,  Â  Â 0 },<br>
+  Â  { X86::VINSERTF64x4Zrr,  Â X86::VINSERTF64x4Zrm,  Â  Â 0 },<br>
+  Â  { X86::VINSERTI32x4Zrr,  Â X86::VINSERTI32x4Zrm,  Â  Â 0 },<br>
+  Â  { X86::VINSERTI32x8Zrr,  Â X86::VINSERTI32x8Zrm,  Â  Â 0 },<br>
+  Â  { X86::VINSERTI64x2Zrr,  Â X86::VINSERTI64x2Zrm,  Â  Â 0 },<br>
+  Â  { X86::VINSERTI64x4Zrr,  Â X86::VINSERTI64x4Zrm,  Â  Â 0 },<br>
+  Â  { X86::VMAXCPDZrr,  Â  Â  Â  X86::VMAXCPDZrm,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VMAXCPSZrr,  Â  Â  Â  X86::VMAXCPSZrm,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VMAXCSDZrr,  Â  Â  Â  X86::VMAXCSDZrm,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VMAXCSSZrr,  Â  Â  Â  X86::VMAXCSSZrm,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VMAXPDZrr,  Â  Â  Â  Â X86::VMAXPDZrm,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VMAXPSZrr,  Â  Â  Â  Â X86::VMAXPSZrm,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VMAXSDZrr,  Â  Â  Â  Â X86::VMAXSDZrm,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VMAXSDZrr_Int,  Â  Â X86::VMAXSDZrm_Int,  Â  Â  Â TB_NO_REVERSE },<br>
+  Â  { X86::VMAXSSZrr,  Â  Â  Â  Â X86::VMAXSSZrm,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VMAXSSZrr_Int,  Â  Â X86::VMAXSSZrm_Int,  Â  Â  Â TB_NO_REVERSE },<br>
+  Â  { X86::VMINCPDZrr,  Â  Â  Â  X86::VMINCPDZrm,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VMINCPSZrr,  Â  Â  Â  X86::VMINCPSZrm,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VMINCSDZrr,  Â  Â  Â  X86::VMINCSDZrm,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VMINCSSZrr,  Â  Â  Â  X86::VMINCSSZrm,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VMINPDZrr,  Â  Â  Â  Â X86::VMINPDZrm,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VMINPSZrr,  Â  Â  Â  Â X86::VMINPSZrm,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VMINSDZrr,  Â  Â  Â  Â X86::VMINSDZrm,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VMINSDZrr_Int,  Â  Â X86::VMINSDZrm_Int,  Â  Â  Â TB_NO_REVERSE },<br>
+  Â  { X86::VMINSSZrr,  Â  Â  Â  Â X86::VMINSSZrm,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VMINSSZrr_Int,  Â  Â X86::VMINSSZrm_Int,  Â  Â  Â TB_NO_REVERSE },<br>
+  Â  { X86::VMOVLHPSZrr,  Â  Â  Â X86::VMOVHPSZ128rm,  Â  Â  Â TB_NO_REVERSE },<br>
+  Â  { X86::VMULPDZrr,  Â  Â  Â  Â X86::VMULPDZrm,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VMULPSZrr,  Â  Â  Â  Â X86::VMULPSZrm,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VMULSDZrr,  Â  Â  Â  Â X86::VMULSDZrm,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VMULSDZrr_Int,  Â  Â X86::VMULSDZrm_Int,  Â  Â  Â TB_NO_REVERSE },<br>
+  Â  { X86::VMULSSZrr,  Â  Â  Â  Â X86::VMULSSZrm,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VMULSSZrr_Int,  Â  Â X86::VMULSSZrm_Int,  Â  Â  Â TB_NO_REVERSE },<br>
+  Â  { X86::VORPDZrr,  Â  Â  Â  Â  X86::VORPDZrm,  Â  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VORPSZrr,  Â  Â  Â  Â  X86::VORPSZrm,  Â  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPACKSSDWZrr,  Â  Â  X86::VPACKSSDWZrm,  Â  Â  Â  0 },<br>
+  Â  { X86::VPACKSSWBZrr,  Â  Â  X86::VPACKSSWBZrm,  Â  Â  Â  0 },<br>
+  Â  { X86::VPACKUSDWZrr,  Â  Â  X86::VPACKUSDWZrm,  Â  Â  Â  0 },<br>
+  Â  { X86::VPACKUSWBZrr,  Â  Â  X86::VPACKUSWBZrm,  Â  Â  Â  0 },<br>
+  Â  { X86::VPADDBZrr,  Â  Â  Â  Â X86::VPADDBZrm,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPADDDZrr,  Â  Â  Â  Â X86::VPADDDZrm,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPADDQZrr,  Â  Â  Â  Â X86::VPADDQZrm,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPADDSBZrr,  Â  Â  Â  X86::VPADDSBZrm,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPADDSWZrr,  Â  Â  Â  X86::VPADDSWZrm,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPADDUSBZrr,  Â  Â  Â X86::VPADDUSBZrm,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPADDUSWZrr,  Â  Â  Â X86::VPADDUSWZrm,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPADDWZrr,  Â  Â  Â  Â X86::VPADDWZrm,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPALIGNRZrri,  Â  Â  X86::VPALIGNRZrmi,  Â  Â  Â  0 },<br>
+  Â  { X86::VPANDDZrr,  Â  Â  Â  Â X86::VPANDDZrm,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPANDNDZrr,  Â  Â  Â  X86::VPANDNDZrm,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPANDNQZrr,  Â  Â  Â  X86::VPANDNQZrm,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPANDQZrr,  Â  Â  Â  Â X86::VPANDQZrm,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPAVGBZrr,  Â  Â  Â  Â X86::VPAVGBZrm,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPAVGWZrr,  Â  Â  Â  Â X86::VPAVGWZrm,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPCMPBZrri,  Â  Â  Â  X86::VPCMPBZrmi,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPCMPDZrri,  Â  Â  Â  X86::VPCMPDZrmi,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPCMPEQBZrr,  Â  Â  Â X86::VPCMPEQBZrm,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPCMPEQDZrr,  Â  Â  Â X86::VPCMPEQDZrm,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPCMPEQQZrr,  Â  Â  Â X86::VPCMPEQQZrm,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPCMPEQWZrr,  Â  Â  Â X86::VPCMPEQWZrm,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPCMPGTBZrr,  Â  Â  Â X86::VPCMPGTBZrm,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPCMPGTDZrr,  Â  Â  Â X86::VPCMPGTDZrm,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPCMPGTQZrr,  Â  Â  Â X86::VPCMPGTQZrm,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPCMPGTWZrr,  Â  Â  Â X86::VPCMPGTWZrm,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPCMPQZrri,  Â  Â  Â  X86::VPCMPQZrmi,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPCMPUBZrri,  Â  Â  Â X86::VPCMPUBZrmi,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPCMPUDZrri,  Â  Â  Â X86::VPCMPUDZrmi,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPCMPUQZrri,  Â  Â  Â X86::VPCMPUQZrmi,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPCMPUWZrri,  Â  Â  Â X86::VPCMPUWZrmi,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPCMPWZrri,  Â  Â  Â  X86::VPCMPWZrmi,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPERMBZrr,  Â  Â  Â  Â X86::VPERMBZrm,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPERMDZrr,  Â  Â  Â  Â X86::VPERMDZrm,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPERMILPDZrr,  Â  Â  X86::VPERMILPDZrm,  Â  Â  Â  0 },<br>
+  Â  { X86::VPERMILPSZrr,  Â  Â  X86::VPERMILPSZrm,  Â  Â  Â  0 },<br>
+  Â  { X86::VPERMPDZrr,  Â  Â  Â  X86::VPERMPDZrm,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPERMPSZrr,  Â  Â  Â  X86::VPERMPSZrm,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPERMQZrr,  Â  Â  Â  Â X86::VPERMQZrm,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPERMWZrr,  Â  Â  Â  Â X86::VPERMWZrm,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPINSRBZrr,  Â  Â  Â  X86::VPINSRBZrm,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPINSRDZrr,  Â  Â  Â  X86::VPINSRDZrm,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPINSRQZrr,  Â  Â  Â  X86::VPINSRQZrm,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPINSRWZrr,  Â  Â  Â  X86::VPINSRWZrm,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPMADDUBSWZrr,  Â  Â X86::VPMADDUBSWZrm,  Â  Â  Â 0 },<br>
+  Â  { X86::VPMADDWDZrr,  Â  Â  Â X86::VPMADDWDZrm,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPMAXSBZrr,  Â  Â  Â  X86::VPMAXSBZrm,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPMAXSDZrr,  Â  Â  Â  X86::VPMAXSDZrm,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPMAXSQZrr,  Â  Â  Â  X86::VPMAXSQZrm,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPMAXSWZrr,  Â  Â  Â  X86::VPMAXSWZrm,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPMAXUBZrr,  Â  Â  Â  X86::VPMAXUBZrm,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPMAXUDZrr,  Â  Â  Â  X86::VPMAXUDZrm,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPMAXUQZrr,  Â  Â  Â  X86::VPMAXUQZrm,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPMAXUWZrr,  Â  Â  Â  X86::VPMAXUWZrm,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPMINSBZrr,  Â  Â  Â  X86::VPMINSBZrm,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPMINSDZrr,  Â  Â  Â  X86::VPMINSDZrm,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPMINSQZrr,  Â  Â  Â  X86::VPMINSQZrm,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPMINSWZrr,  Â  Â  Â  X86::VPMINSWZrm,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPMINUBZrr,  Â  Â  Â  X86::VPMINUBZrm,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPMINUDZrr,  Â  Â  Â  X86::VPMINUDZrm,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPMINUQZrr,  Â  Â  Â  X86::VPMINUQZrm,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPMINUWZrr,  Â  Â  Â  X86::VPMINUWZrm,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPMULDQZrr,  Â  Â  Â  X86::VPMULDQZrm,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPMULLDZrr,  Â  Â  Â  X86::VPMULLDZrm,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPMULLQZrr,  Â  Â  Â  X86::VPMULLQZrm,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPMULLWZrr,  Â  Â  Â  X86::VPMULLWZrm,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPMULUDQZrr,  Â  Â  Â X86::VPMULUDQZrm,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPORDZrr,  Â  Â  Â  Â  X86::VPORDZrm,  Â  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPORQZrr,  Â  Â  Â  Â  X86::VPORQZrm,  Â  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPSADBWZ512rr,  Â  Â X86::VPSADBWZ512rm,  Â  Â  Â 0 },<br>
+  Â  { X86::VPSHUFBZrr,  Â  Â  Â  X86::VPSHUFBZrm,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPSLLDZrr,  Â  Â  Â  Â X86::VPSLLDZrm,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPSLLQZrr,  Â  Â  Â  Â X86::VPSLLQZrm,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPSLLVDZrr,  Â  Â  Â  X86::VPSLLVDZrm,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPSLLVQZrr,  Â  Â  Â  X86::VPSLLVQZrm,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPSLLVWZrr,  Â  Â  Â  X86::VPSLLVWZrm,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPSLLWZrr,  Â  Â  Â  Â X86::VPSLLWZrm,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPSRADZrr,  Â  Â  Â  Â X86::VPSRADZrm,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPSRAQZrr,  Â  Â  Â  Â X86::VPSRAQZrm,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPSRAVDZrr,  Â  Â  Â  X86::VPSRAVDZrm,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPSRAVQZrr,  Â  Â  Â  X86::VPSRAVQZrm,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPSRAVWZrr,  Â  Â  Â  X86::VPSRAVWZrm,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPSRAWZrr,  Â  Â  Â  Â X86::VPSRAWZrm,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPSRLDZrr,  Â  Â  Â  Â X86::VPSRLDZrm,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPSRLQZrr,  Â  Â  Â  Â X86::VPSRLQZrm,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPSRLVDZrr,  Â  Â  Â  X86::VPSRLVDZrm,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPSRLVQZrr,  Â  Â  Â  X86::VPSRLVQZrm,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPSRLVWZrr,  Â  Â  Â  X86::VPSRLVWZrm,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPSRLWZrr,  Â  Â  Â  Â X86::VPSRLWZrm,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPSUBBZrr,  Â  Â  Â  Â X86::VPSUBBZrm,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPSUBDZrr,  Â  Â  Â  Â X86::VPSUBDZrm,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPSUBQZrr,  Â  Â  Â  Â X86::VPSUBQZrm,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPSUBSBZrr,  Â  Â  Â  X86::VPSUBSBZrm,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPSUBSWZrr,  Â  Â  Â  X86::VPSUBSWZrm,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPSUBUSBZrr,  Â  Â  Â X86::VPSUBUSBZrm,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPSUBUSWZrr,  Â  Â  Â X86::VPSUBUSWZrm,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPSUBWZrr,  Â  Â  Â  Â X86::VPSUBWZrm,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPUNPCKHBWZrr,  Â  Â X86::VPUNPCKHBWZrm,  Â  Â  Â 0 },<br>
+  Â  { X86::VPUNPCKHDQZrr,  Â  Â X86::VPUNPCKHDQZrm,  Â  Â  Â 0 },<br>
+  Â  { X86::VPUNPCKHQDQZrr,  Â  X86::VPUNPCKHQDQZrm,  Â  Â  0 },<br>
+  Â  { X86::VPUNPCKHWDZrr,  Â  Â X86::VPUNPCKHWDZrm,  Â  Â  Â 0 },<br>
+  Â  { X86::VPUNPCKLBWZrr,  Â  Â X86::VPUNPCKLBWZrm,  Â  Â  Â 0 },<br>
+  Â  { X86::VPUNPCKLDQZrr,  Â  Â X86::VPUNPCKLDQZrm,  Â  Â  Â 0 },<br>
+  Â  { X86::VPUNPCKLQDQZrr,  Â  X86::VPUNPCKLQDQZrm,  Â  Â  0 },<br>
+  Â  { X86::VPUNPCKLWDZrr,  Â  Â X86::VPUNPCKLWDZrm,  Â  Â  Â 0 },<br>
+  Â  { X86::VPXORDZrr,  Â  Â  Â  Â X86::VPXORDZrm,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPXORQZrr,  Â  Â  Â  Â X86::VPXORQZrm,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VSHUFPDZrri,  Â  Â  Â X86::VSHUFPDZrmi,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VSHUFPSZrri,  Â  Â  Â X86::VSHUFPSZrmi,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VSUBPDZrr,  Â  Â  Â  Â X86::VSUBPDZrm,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VSUBPSZrr,  Â  Â  Â  Â X86::VSUBPSZrm,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VSUBSDZrr,  Â  Â  Â  Â X86::VSUBSDZrm,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VSUBSDZrr_Int,  Â  Â X86::VSUBSDZrm_Int,  Â  Â  Â TB_NO_REVERSE },<br>
+  Â  { X86::VSUBSSZrr,  Â  Â  Â  Â X86::VSUBSSZrm,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VSUBSSZrr_Int,  Â  Â X86::VSUBSSZrm_Int,  Â  Â  Â TB_NO_REVERSE },<br>
+  Â  { X86::VUNPCKHPDZrr,  Â  Â  X86::VUNPCKHPDZrm,  Â  Â  Â  0 },<br>
+  Â  { X86::VUNPCKHPSZrr,  Â  Â  X86::VUNPCKHPSZrm,  Â  Â  Â  0 },<br>
+  Â  { X86::VUNPCKLPDZrr,  Â  Â  X86::VUNPCKLPDZrm,  Â  Â  Â  0 },<br>
+  Â  { X86::VUNPCKLPSZrr,  Â  Â  X86::VUNPCKLPSZrm,  Â  Â  Â  0 },<br>
+  Â  { X86::VXORPDZrr,  Â  Â  Â  Â X86::VXORPDZrm,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VXORPSZrr,  Â  Â  Â  Â X86::VXORPSZrm,  Â  Â  Â  Â  Â 0 },<br>
+<br>
+  Â  // AVX-512{F,VL} foldable instructions<br>
+  Â  { X86::VADDPDZ128rr,  Â  Â  X86::VADDPDZ128rm,  Â  Â  Â  0 },<br>
+  Â  { X86::VADDPDZ256rr,  Â  Â  X86::VADDPDZ256rm,  Â  Â  Â  0 },<br>
+  Â  { X86::VADDPSZ128rr,  Â  Â  X86::VADDPSZ128rm,  Â  Â  Â  0 },<br>
+  Â  { X86::VADDPSZ256rr,  Â  Â  X86::VADDPSZ256rm,  Â  Â  Â  0 },<br>
+  Â  { X86::VALIGNDZ128rri,  Â  X86::VALIGNDZ128rmi,  Â  Â  0 },<br>
+  Â  { X86::VALIGNDZ256rri,  Â  X86::VALIGNDZ256rmi,  Â  Â  0 },<br>
+  Â  { X86::VALIGNQZ128rri,  Â  X86::VALIGNQZ128rmi,  Â  Â  0 },<br>
+  Â  { X86::VALIGNQZ256rri,  Â  X86::VALIGNQZ256rmi,  Â  Â  0 },<br>
+  Â  { X86::VANDNPDZ128rr,  Â  Â X86::VANDNPDZ128rm,  Â  Â  Â 0 },<br>
+  Â  { X86::VANDNPDZ256rr,  Â  Â X86::VANDNPDZ256rm,  Â  Â  Â 0 },<br>
+  Â  { X86::VANDNPSZ128rr,  Â  Â X86::VANDNPSZ128rm,  Â  Â  Â 0 },<br>
+  Â  { X86::VANDNPSZ256rr,  Â  Â X86::VANDNPSZ256rm,  Â  Â  Â 0 },<br>
+  Â  { X86::VANDPDZ128rr,  Â  Â  X86::VANDPDZ128rm,  Â  Â  Â  0 },<br>
+  Â  { X86::VANDPDZ256rr,  Â  Â  X86::VANDPDZ256rm,  Â  Â  Â  0 },<br>
+  Â  { X86::VANDPSZ128rr,  Â  Â  X86::VANDPSZ128rm,  Â  Â  Â  0 },<br>
+  Â  { X86::VANDPSZ256rr,  Â  Â  X86::VANDPSZ256rm,  Â  Â  Â  0 },<br>
+  Â  { X86::VCMPPDZ128rri,  Â  Â X86::VCMPPDZ128rmi,  Â  Â  Â 0 },<br>
+  Â  { X86::VCMPPDZ256rri,  Â  Â X86::VCMPPDZ256rmi,  Â  Â  Â 0 },<br>
+  Â  { X86::VCMPPSZ128rri,  Â  Â X86::VCMPPSZ128rmi,  Â  Â  Â 0 },<br>
+  Â  { X86::VCMPPSZ256rri,  Â  Â X86::VCMPPSZ256rmi,  Â  Â  Â 0 },<br>
+  Â  { X86::VDIVPDZ128rr,  Â  Â  X86::VDIVPDZ128rm,  Â  Â  Â  0 },<br>
+  Â  { X86::VDIVPDZ256rr,  Â  Â  X86::VDIVPDZ256rm,  Â  Â  Â  0 },<br>
+  Â  { X86::VDIVPSZ128rr,  Â  Â  X86::VDIVPSZ128rm,  Â  Â  Â  0 },<br>
+  Â  { X86::VDIVPSZ256rr,  Â  Â  X86::VDIVPSZ256rm,  Â  Â  Â  0 },<br>
+  Â  { X86::VINSERTF32x4Z256rr,X86::<wbr>VINSERTF32x4Z256rm,  0 },<br>
+  Â  { X86::VINSERTF64x2Z256rr,X86::<wbr>VINSERTF64x2Z256rm,  0 },<br>
+  Â  { X86::VINSERTI32x4Z256rr,X86::<wbr>VINSERTI32x4Z256rm,  0 },<br>
+  Â  { X86::VINSERTI64x2Z256rr,X86::<wbr>VINSERTI64x2Z256rm,  0 },<br>
+  Â  { X86::VMAXCPDZ128rr,  Â  Â X86::VMAXCPDZ128rm,  Â  Â  Â 0 },<br>
+  Â  { X86::VMAXCPDZ256rr,  Â  Â X86::VMAXCPDZ256rm,  Â  Â  Â 0 },<br>
+  Â  { X86::VMAXCPSZ128rr,  Â  Â X86::VMAXCPSZ128rm,  Â  Â  Â 0 },<br>
+  Â  { X86::VMAXCPSZ256rr,  Â  Â X86::VMAXCPSZ256rm,  Â  Â  Â 0 },<br>
+  Â  { X86::VMAXPDZ128rr,  Â  Â  X86::VMAXPDZ128rm,  Â  Â  Â  0 },<br>
+  Â  { X86::VMAXPDZ256rr,  Â  Â  X86::VMAXPDZ256rm,  Â  Â  Â  0 },<br>
+  Â  { X86::VMAXPSZ128rr,  Â  Â  X86::VMAXPSZ128rm,  Â  Â  Â  0 },<br>
+  Â  { X86::VMAXPSZ256rr,  Â  Â  X86::VMAXPSZ256rm,  Â  Â  Â  0 },<br>
+  Â  { X86::VMINCPDZ128rr,  Â  Â X86::VMINCPDZ128rm,  Â  Â  Â 0 },<br>
+  Â  { X86::VMINCPDZ256rr,  Â  Â X86::VMINCPDZ256rm,  Â  Â  Â 0 },<br>
+  Â  { X86::VMINCPSZ128rr,  Â  Â X86::VMINCPSZ128rm,  Â  Â  Â 0 },<br>
+  Â  { X86::VMINCPSZ256rr,  Â  Â X86::VMINCPSZ256rm,  Â  Â  Â 0 },<br>
+  Â  { X86::VMINPDZ128rr,  Â  Â  X86::VMINPDZ128rm,  Â  Â  Â  0 },<br>
+  Â  { X86::VMINPDZ256rr,  Â  Â  X86::VMINPDZ256rm,  Â  Â  Â  0 },<br>
+  Â  { X86::VMINPSZ128rr,  Â  Â  X86::VMINPSZ128rm,  Â  Â  Â  0 },<br>
+  Â  { X86::VMINPSZ256rr,  Â  Â  X86::VMINPSZ256rm,  Â  Â  Â  0 },<br>
+  Â  { X86::VMULPDZ128rr,  Â  Â  X86::VMULPDZ128rm,  Â  Â  Â  0 },<br>
+  Â  { X86::VMULPDZ256rr,  Â  Â  X86::VMULPDZ256rm,  Â  Â  Â  0 },<br>
+  Â  { X86::VMULPSZ128rr,  Â  Â  X86::VMULPSZ128rm,  Â  Â  Â  0 },<br>
+  Â  { X86::VMULPSZ256rr,  Â  Â  X86::VMULPSZ256rm,  Â  Â  Â  0 },<br>
+  Â  { X86::VORPDZ128rr,  Â  Â  Â X86::VORPDZ128rm,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VORPDZ256rr,  Â  Â  Â X86::VORPDZ256rm,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VORPSZ128rr,  Â  Â  Â X86::VORPSZ128rm,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VORPSZ256rr,  Â  Â  Â X86::VORPSZ256rm,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPACKSSDWZ256rr,  Â X86::VPACKSSDWZ256rm,  Â  Â 0 },<br>
+  Â  { X86::VPACKSSDWZ128rr,  Â X86::VPACKSSDWZ128rm,  Â  Â 0 },<br>
+  Â  { X86::VPACKSSWBZ256rr,  Â X86::VPACKSSWBZ256rm,  Â  Â 0 },<br>
+  Â  { X86::VPACKSSWBZ128rr,  Â X86::VPACKSSWBZ128rm,  Â  Â 0 },<br>
+  Â  { X86::VPACKUSDWZ256rr,  Â X86::VPACKUSDWZ256rm,  Â  Â 0 },<br>
+  Â  { X86::VPACKUSDWZ128rr,  Â X86::VPACKUSDWZ128rm,  Â  Â 0 },<br>
+  Â  { X86::VPACKUSWBZ256rr,  Â X86::VPACKUSWBZ256rm,  Â  Â 0 },<br>
+  Â  { X86::VPACKUSWBZ128rr,  Â X86::VPACKUSWBZ128rm,  Â  Â 0 },<br>
+  Â  { X86::VPADDBZ128rr,  Â  Â  X86::VPADDBZ128rm,  Â  Â  Â  0 },<br>
+  Â  { X86::VPADDBZ256rr,  Â  Â  X86::VPADDBZ256rm,  Â  Â  Â  0 },<br>
+  Â  { X86::VPADDDZ128rr,  Â  Â  X86::VPADDDZ128rm,  Â  Â  Â  0 },<br>
+  Â  { X86::VPADDDZ256rr,  Â  Â  X86::VPADDDZ256rm,  Â  Â  Â  0 },<br>
+  Â  { X86::VPADDQZ128rr,  Â  Â  X86::VPADDQZ128rm,  Â  Â  Â  0 },<br>
+  Â  { X86::VPADDQZ256rr,  Â  Â  X86::VPADDQZ256rm,  Â  Â  Â  0 },<br>
+  Â  { X86::VPADDSBZ128rr,  Â  Â X86::VPADDSBZ128rm,  Â  Â  Â 0 },<br>
+  Â  { X86::VPADDSBZ256rr,  Â  Â X86::VPADDSBZ256rm,  Â  Â  Â 0 },<br>
+  Â  { X86::VPADDSWZ128rr,  Â  Â X86::VPADDSWZ128rm,  Â  Â  Â 0 },<br>
+  Â  { X86::VPADDSWZ256rr,  Â  Â X86::VPADDSWZ256rm,  Â  Â  Â 0 },<br>
+  Â  { X86::VPADDUSBZ128rr,  Â  X86::VPADDUSBZ128rm,  Â  Â  0 },<br>
+  Â  { X86::VPADDUSBZ256rr,  Â  X86::VPADDUSBZ256rm,  Â  Â  0 },<br>
+  Â  { X86::VPADDUSWZ128rr,  Â  X86::VPADDUSWZ128rm,  Â  Â  0 },<br>
+  Â  { X86::VPADDUSWZ256rr,  Â  X86::VPADDUSWZ256rm,  Â  Â  0 },<br>
+  Â  { X86::VPADDWZ128rr,  Â  Â  X86::VPADDWZ128rm,  Â  Â  Â  0 },<br>
+  Â  { X86::VPADDWZ256rr,  Â  Â  X86::VPADDWZ256rm,  Â  Â  Â  0 },<br>
+  Â  { X86::VPALIGNRZ128rri,  Â X86::VPALIGNRZ128rmi,  Â  Â 0 },<br>
+  Â  { X86::VPALIGNRZ256rri,  Â X86::VPALIGNRZ256rmi,  Â  Â 0 },<br>
+  Â  { X86::VPANDDZ128rr,  Â  Â  X86::VPANDDZ128rm,  Â  Â  Â  0 },<br>
+  Â  { X86::VPANDDZ256rr,  Â  Â  X86::VPANDDZ256rm,  Â  Â  Â  0 },<br>
+  Â  { X86::VPANDNDZ128rr,  Â  Â X86::VPANDNDZ128rm,  Â  Â  Â 0 },<br>
+  Â  { X86::VPANDNDZ256rr,  Â  Â X86::VPANDNDZ256rm,  Â  Â  Â 0 },<br>
+  Â  { X86::VPANDNQZ128rr,  Â  Â X86::VPANDNQZ128rm,  Â  Â  Â 0 },<br>
+  Â  { X86::VPANDNQZ256rr,  Â  Â X86::VPANDNQZ256rm,  Â  Â  Â 0 },<br>
+  Â  { X86::VPANDQZ128rr,  Â  Â  X86::VPANDQZ128rm,  Â  Â  Â  0 },<br>
+  Â  { X86::VPANDQZ256rr,  Â  Â  X86::VPANDQZ256rm,  Â  Â  Â  0 },<br>
+  Â  { X86::VPAVGBZ128rr,  Â  Â  X86::VPAVGBZ128rm,  Â  Â  Â  0 },<br>
+  Â  { X86::VPAVGBZ256rr,  Â  Â  X86::VPAVGBZ256rm,  Â  Â  Â  0 },<br>
+  Â  { X86::VPAVGWZ128rr,  Â  Â  X86::VPAVGWZ128rm,  Â  Â  Â  0 },<br>
+  Â  { X86::VPAVGWZ256rr,  Â  Â  X86::VPAVGWZ256rm,  Â  Â  Â  0 },<br>
+  Â  { X86::VPCMPBZ128rri,  Â  Â X86::VPCMPBZ128rmi,  Â  Â  Â 0 },<br>
+  Â  { X86::VPCMPBZ256rri,  Â  Â X86::VPCMPBZ256rmi,  Â  Â  Â 0 },<br>
+  Â  { X86::VPCMPDZ128rri,  Â  Â X86::VPCMPDZ128rmi,  Â  Â  Â 0 },<br>
+  Â  { X86::VPCMPDZ256rri,  Â  Â X86::VPCMPDZ256rmi,  Â  Â  Â 0 },<br>
+  Â  { X86::VPCMPEQBZ128rr,  Â  X86::VPCMPEQBZ128rm,  Â  Â  0 },<br>
+  Â  { X86::VPCMPEQBZ256rr,  Â  X86::VPCMPEQBZ256rm,  Â  Â  0 },<br>
+  Â  { X86::VPCMPEQDZ128rr,  Â  X86::VPCMPEQDZ128rm,  Â  Â  0 },<br>
+  Â  { X86::VPCMPEQDZ256rr,  Â  X86::VPCMPEQDZ256rm,  Â  Â  0 },<br>
+  Â  { X86::VPCMPEQQZ128rr,  Â  X86::VPCMPEQQZ128rm,  Â  Â  0 },<br>
+  Â  { X86::VPCMPEQQZ256rr,  Â  X86::VPCMPEQQZ256rm,  Â  Â  0 },<br>
+  Â  { X86::VPCMPEQWZ128rr,  Â  X86::VPCMPEQWZ128rm,  Â  Â  0 },<br>
+  Â  { X86::VPCMPEQWZ256rr,  Â  X86::VPCMPEQWZ256rm,  Â  Â  0 },<br>
+  Â  { X86::VPCMPGTBZ128rr,  Â  X86::VPCMPGTBZ128rm,  Â  Â  0 },<br>
+  Â  { X86::VPCMPGTBZ256rr,  Â  X86::VPCMPGTBZ256rm,  Â  Â  0 },<br>
+  Â  { X86::VPCMPGTDZ128rr,  Â  X86::VPCMPGTDZ128rm,  Â  Â  0 },<br>
+  Â  { X86::VPCMPGTDZ256rr,  Â  X86::VPCMPGTDZ256rm,  Â  Â  0 },<br>
+  Â  { X86::VPCMPGTQZ128rr,  Â  X86::VPCMPGTQZ128rm,  Â  Â  0 },<br>
+  Â  { X86::VPCMPGTQZ256rr,  Â  X86::VPCMPGTQZ256rm,  Â  Â  0 },<br>
+  Â  { X86::VPCMPGTWZ128rr,  Â  X86::VPCMPGTWZ128rm,  Â  Â  0 },<br>
+  Â  { X86::VPCMPGTWZ256rr,  Â  X86::VPCMPGTWZ256rm,  Â  Â  0 },<br>
+  Â  { X86::VPCMPQZ128rri,  Â  Â X86::VPCMPQZ128rmi,  Â  Â  Â 0 },<br>
+  Â  { X86::VPCMPQZ256rri,  Â  Â X86::VPCMPQZ256rmi,  Â  Â  Â 0 },<br>
+  Â  { X86::VPCMPUBZ128rri,  Â  X86::VPCMPUBZ128rmi,  Â  Â  0 },<br>
+  Â  { X86::VPCMPUBZ256rri,  Â  X86::VPCMPUBZ256rmi,  Â  Â  0 },<br>
+  Â  { X86::VPCMPUDZ128rri,  Â  X86::VPCMPUDZ128rmi,  Â  Â  0 },<br>
+  Â  { X86::VPCMPUDZ256rri,  Â  X86::VPCMPUDZ256rmi,  Â  Â  0 },<br>
+  Â  { X86::VPCMPUQZ128rri,  Â  X86::VPCMPUQZ128rmi,  Â  Â  0 },<br>
+  Â  { X86::VPCMPUQZ256rri,  Â  X86::VPCMPUQZ256rmi,  Â  Â  0 },<br>
+  Â  { X86::VPCMPUWZ128rri,  Â  X86::VPCMPUWZ128rmi,  Â  Â  0 },<br>
+  Â  { X86::VPCMPUWZ256rri,  Â  X86::VPCMPUWZ256rmi,  Â  Â  0 },<br>
+  Â  { X86::VPCMPWZ128rri,  Â  Â X86::VPCMPWZ128rmi,  Â  Â  Â 0 },<br>
+  Â  { X86::VPCMPWZ256rri,  Â  Â X86::VPCMPWZ256rmi,  Â  Â  Â 0 },<br>
+  Â  { X86::VPERMBZ128rr,  Â  Â  X86::VPERMBZ128rm,  Â  Â  Â  0 },<br>
+  Â  { X86::VPERMBZ256rr,  Â  Â  X86::VPERMBZ256rm,  Â  Â  Â  0 },<br>
+  Â  { X86::VPERMDZ256rr,  Â  Â  X86::VPERMDZ256rm,  Â  Â  Â  0 },<br>
+  Â  { X86::VPERMILPDZ128rr,  Â X86::VPERMILPDZ128rm,  Â  Â 0 },<br>
+  Â  { X86::VPERMILPDZ256rr,  Â X86::VPERMILPDZ256rm,  Â  Â 0 },<br>
+  Â  { X86::VPERMILPSZ128rr,  Â X86::VPERMILPSZ128rm,  Â  Â 0 },<br>
+  Â  { X86::VPERMILPSZ256rr,  Â X86::VPERMILPSZ256rm,  Â  Â 0 },<br>
+  Â  { X86::VPERMPDZ256rr,  Â  Â X86::VPERMPDZ256rm,  Â  Â  Â 0 },<br>
+  Â  { X86::VPERMPSZ256rr,  Â  Â X86::VPERMPSZ256rm,  Â  Â  Â 0 },<br>
+  Â  { X86::VPERMQZ256rr,  Â  Â  X86::VPERMQZ256rm,  Â  Â  Â  0 },<br>
+  Â  { X86::VPERMWZ128rr,  Â  Â  X86::VPERMWZ128rm,  Â  Â  Â  0 },<br>
+  Â  { X86::VPERMWZ256rr,  Â  Â  X86::VPERMWZ256rm,  Â  Â  Â  0 },<br>
+  Â  { X86::VPMADDUBSWZ128rr,  X86::VPMADDUBSWZ128rm,  Â  0 },<br>
+  Â  { X86::VPMADDUBSWZ256rr,  X86::VPMADDUBSWZ256rm,  Â  0 },<br>
+  Â  { X86::VPMADDWDZ128rr,  Â  X86::VPMADDWDZ128rm,  Â  Â  0 },<br>
+  Â  { X86::VPMADDWDZ256rr,  Â  X86::VPMADDWDZ256rm,  Â  Â  0 },<br>
+  Â  { X86::VPMAXSBZ128rr,  Â  Â X86::VPMAXSBZ128rm,  Â  Â  Â 0 },<br>
+  Â  { X86::VPMAXSBZ256rr,  Â  Â X86::VPMAXSBZ256rm,  Â  Â  Â 0 },<br>
+  Â  { X86::VPMAXSDZ128rr,  Â  Â X86::VPMAXSDZ128rm,  Â  Â  Â 0 },<br>
+  Â  { X86::VPMAXSDZ256rr,  Â  Â X86::VPMAXSDZ256rm,  Â  Â  Â 0 },<br>
+  Â  { X86::VPMAXSQZ128rr,  Â  Â X86::VPMAXSQZ128rm,  Â  Â  Â 0 },<br>
+  Â  { X86::VPMAXSQZ256rr,  Â  Â X86::VPMAXSQZ256rm,  Â  Â  Â 0 },<br>
+  Â  { X86::VPMAXSWZ128rr,  Â  Â X86::VPMAXSWZ128rm,  Â  Â  Â 0 },<br>
+  Â  { X86::VPMAXSWZ256rr,  Â  Â X86::VPMAXSWZ256rm,  Â  Â  Â 0 },<br>
+  Â  { X86::VPMAXUBZ128rr,  Â  Â X86::VPMAXUBZ128rm,  Â  Â  Â 0 },<br>
+  Â  { X86::VPMAXUBZ256rr,  Â  Â X86::VPMAXUBZ256rm,  Â  Â  Â 0 },<br>
+  Â  { X86::VPMAXUDZ128rr,  Â  Â X86::VPMAXUDZ128rm,  Â  Â  Â 0 },<br>
+  Â  { X86::VPMAXUDZ256rr,  Â  Â X86::VPMAXUDZ256rm,  Â  Â  Â 0 },<br>
+  Â  { X86::VPMAXUQZ128rr,  Â  Â X86::VPMAXUQZ128rm,  Â  Â  Â 0 },<br>
+  Â  { X86::VPMAXUQZ256rr,  Â  Â X86::VPMAXUQZ256rm,  Â  Â  Â 0 },<br>
+  Â  { X86::VPMAXUWZ128rr,  Â  Â X86::VPMAXUWZ128rm,  Â  Â  Â 0 },<br>
+  Â  { X86::VPMAXUWZ256rr,  Â  Â X86::VPMAXUWZ256rm,  Â  Â  Â 0 },<br>
+  Â  { X86::VPMINSBZ128rr,  Â  Â X86::VPMINSBZ128rm,  Â  Â  Â 0 },<br>
+  Â  { X86::VPMINSBZ256rr,  Â  Â X86::VPMINSBZ256rm,  Â  Â  Â 0 },<br>
+  Â  { X86::VPMINSDZ128rr,  Â  Â X86::VPMINSDZ128rm,  Â  Â  Â 0 },<br>
+  Â  { X86::VPMINSDZ256rr,  Â  Â X86::VPMINSDZ256rm,  Â  Â  Â 0 },<br>
+  Â  { X86::VPMINSQZ128rr,  Â  Â X86::VPMINSQZ128rm,  Â  Â  Â 0 },<br>
+  Â  { X86::VPMINSQZ256rr,  Â  Â X86::VPMINSQZ256rm,  Â  Â  Â 0 },<br>
+  Â  { X86::VPMINSWZ128rr,  Â  Â X86::VPMINSWZ128rm,  Â  Â  Â 0 },<br>
+  Â  { X86::VPMINSWZ256rr,  Â  Â X86::VPMINSWZ256rm,  Â  Â  Â 0 },<br>
+  Â  { X86::VPMINUBZ128rr,  Â  Â X86::VPMINUBZ128rm,  Â  Â  Â 0 },<br>
+  Â  { X86::VPMINUBZ256rr,  Â  Â X86::VPMINUBZ256rm,  Â  Â  Â 0 },<br>
+  Â  { X86::VPMINUDZ128rr,  Â  Â X86::VPMINUDZ128rm,  Â  Â  Â 0 },<br>
+  Â  { X86::VPMINUDZ256rr,  Â  Â X86::VPMINUDZ256rm,  Â  Â  Â 0 },<br>
+  Â  { X86::VPMINUQZ128rr,  Â  Â X86::VPMINUQZ128rm,  Â  Â  Â 0 },<br>
+  Â  { X86::VPMINUQZ256rr,  Â  Â X86::VPMINUQZ256rm,  Â  Â  Â 0 },<br>
+  Â  { X86::VPMINUWZ128rr,  Â  Â X86::VPMINUWZ128rm,  Â  Â  Â 0 },<br>
+  Â  { X86::VPMINUWZ256rr,  Â  Â X86::VPMINUWZ256rm,  Â  Â  Â 0 },<br>
+  Â  { X86::VPMULDQZ128rr,  Â  Â X86::VPMULDQZ128rm,  Â  Â  Â 0 },<br>
+  Â  { X86::VPMULDQZ256rr,  Â  Â X86::VPMULDQZ256rm,  Â  Â  Â 0 },<br>
+  Â  { X86::VPMULLDZ128rr,  Â  Â X86::VPMULLDZ128rm,  Â  Â  Â 0 },<br>
+  Â  { X86::VPMULLDZ256rr,  Â  Â X86::VPMULLDZ256rm,  Â  Â  Â 0 },<br>
+  Â  { X86::VPMULLQZ128rr,  Â  Â X86::VPMULLQZ128rm,  Â  Â  Â 0 },<br>
+  Â  { X86::VPMULLQZ256rr,  Â  Â X86::VPMULLQZ256rm,  Â  Â  Â 0 },<br>
+  Â  { X86::VPMULLWZ128rr,  Â  Â X86::VPMULLWZ128rm,  Â  Â  Â 0 },<br>
+  Â  { X86::VPMULLWZ256rr,  Â  Â X86::VPMULLWZ256rm,  Â  Â  Â 0 },<br>
+  Â  { X86::VPMULUDQZ128rr,  Â  X86::VPMULUDQZ128rm,  Â  Â  0 },<br>
+  Â  { X86::VPMULUDQZ256rr,  Â  X86::VPMULUDQZ256rm,  Â  Â  0 },<br>
+  Â  { X86::VPORDZ128rr,  Â  Â  Â X86::VPORDZ128rm,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPORDZ256rr,  Â  Â  Â X86::VPORDZ256rm,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPORQZ128rr,  Â  Â  Â X86::VPORQZ128rm,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPORQZ256rr,  Â  Â  Â X86::VPORQZ256rm,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPSADBWZ128rr,  Â  Â X86::VPSADBWZ128rm,  Â  Â  Â 0 },<br>
+  Â  { X86::VPSADBWZ256rr,  Â  Â X86::VPSADBWZ256rm,  Â  Â  Â 0 },<br>
+  Â  { X86::VPSHUFBZ128rr,  Â  Â X86::VPSHUFBZ128rm,  Â  Â  Â 0 },<br>
+  Â  { X86::VPSHUFBZ256rr,  Â  Â X86::VPSHUFBZ256rm,  Â  Â  Â 0 },<br>
+  Â  { X86::VPSLLDZ128rr,  Â  Â  X86::VPSLLDZ128rm,  Â  Â  Â  0 },<br>
+  Â  { X86::VPSLLDZ256rr,  Â  Â  X86::VPSLLDZ256rm,  Â  Â  Â  0 },<br>
+  Â  { X86::VPSLLQZ128rr,  Â  Â  X86::VPSLLQZ128rm,  Â  Â  Â  0 },<br>
+  Â  { X86::VPSLLQZ256rr,  Â  Â  X86::VPSLLQZ256rm,  Â  Â  Â  0 },<br>
+  Â  { X86::VPSLLVDZ128rr,  Â  Â X86::VPSLLVDZ128rm,  Â  Â  Â 0 },<br>
+  Â  { X86::VPSLLVDZ256rr,  Â  Â X86::VPSLLVDZ256rm,  Â  Â  Â 0 },<br>
+  Â  { X86::VPSLLVQZ128rr,  Â  Â X86::VPSLLVQZ128rm,  Â  Â  Â 0 },<br>
+  Â  { X86::VPSLLVQZ256rr,  Â  Â X86::VPSLLVQZ256rm,  Â  Â  Â 0 },<br>
+  Â  { X86::VPSLLVWZ128rr,  Â  Â X86::VPSLLVWZ128rm,  Â  Â  Â 0 },<br>
+  Â  { X86::VPSLLVWZ256rr,  Â  Â X86::VPSLLVWZ256rm,  Â  Â  Â 0 },<br>
+  Â  { X86::VPSLLWZ128rr,  Â  Â  X86::VPSLLWZ128rm,  Â  Â  Â  0 },<br>
+  Â  { X86::VPSLLWZ256rr,  Â  Â  X86::VPSLLWZ256rm,  Â  Â  Â  0 },<br>
+  Â  { X86::VPSRADZ128rr,  Â  Â  X86::VPSRADZ128rm,  Â  Â  Â  0 },<br>
+  Â  { X86::VPSRADZ256rr,  Â  Â  X86::VPSRADZ256rm,  Â  Â  Â  0 },<br>
+  Â  { X86::VPSRAQZ128rr,  Â  Â  X86::VPSRAQZ128rm,  Â  Â  Â  0 },<br>
+  Â  { X86::VPSRAQZ256rr,  Â  Â  X86::VPSRAQZ256rm,  Â  Â  Â  0 },<br>
+  Â  { X86::VPSRAVDZ128rr,  Â  Â X86::VPSRAVDZ128rm,  Â  Â  Â 0 },<br>
+  Â  { X86::VPSRAVDZ256rr,  Â  Â X86::VPSRAVDZ256rm,  Â  Â  Â 0 },<br>
+  Â  { X86::VPSRAVQZ128rr,  Â  Â X86::VPSRAVQZ128rm,  Â  Â  Â 0 },<br>
+  Â  { X86::VPSRAVQZ256rr,  Â  Â X86::VPSRAVQZ256rm,  Â  Â  Â 0 },<br>
+  Â  { X86::VPSRAVWZ128rr,  Â  Â X86::VPSRAVWZ128rm,  Â  Â  Â 0 },<br>
+  Â  { X86::VPSRAVWZ256rr,  Â  Â X86::VPSRAVWZ256rm,  Â  Â  Â 0 },<br>
+  Â  { X86::VPSRAWZ128rr,  Â  Â  X86::VPSRAWZ128rm,  Â  Â  Â  0 },<br>
+  Â  { X86::VPSRAWZ256rr,  Â  Â  X86::VPSRAWZ256rm,  Â  Â  Â  0 },<br>
+  Â  { X86::VPSRLDZ128rr,  Â  Â  X86::VPSRLDZ128rm,  Â  Â  Â  0 },<br>
+  Â  { X86::VPSRLDZ256rr,  Â  Â  X86::VPSRLDZ256rm,  Â  Â  Â  0 },<br>
+  Â  { X86::VPSRLQZ128rr,  Â  Â  X86::VPSRLQZ128rm,  Â  Â  Â  0 },<br>
+  Â  { X86::VPSRLQZ256rr,  Â  Â  X86::VPSRLQZ256rm,  Â  Â  Â  0 },<br>
+  Â  { X86::VPSRLVDZ128rr,  Â  Â X86::VPSRLVDZ128rm,  Â  Â  Â 0 },<br>
+  Â  { X86::VPSRLVDZ256rr,  Â  Â X86::VPSRLVDZ256rm,  Â  Â  Â 0 },<br>
+  Â  { X86::VPSRLVQZ128rr,  Â  Â X86::VPSRLVQZ128rm,  Â  Â  Â 0 },<br>
+  Â  { X86::VPSRLVQZ256rr,  Â  Â X86::VPSRLVQZ256rm,  Â  Â  Â 0 },<br>
+  Â  { X86::VPSRLVWZ128rr,  Â  Â X86::VPSRLVWZ128rm,  Â  Â  Â 0 },<br>
+  Â  { X86::VPSRLVWZ256rr,  Â  Â X86::VPSRLVWZ256rm,  Â  Â  Â 0 },<br>
+  Â  { X86::VPSRLWZ128rr,  Â  Â  X86::VPSRLWZ128rm,  Â  Â  Â  0 },<br>
+  Â  { X86::VPSRLWZ256rr,  Â  Â  X86::VPSRLWZ256rm,  Â  Â  Â  0 },<br>
+  Â  { X86::VPSUBBZ128rr,  Â  Â  X86::VPSUBBZ128rm,  Â  Â  Â  0 },<br>
+  Â  { X86::VPSUBBZ256rr,  Â  Â  X86::VPSUBBZ256rm,  Â  Â  Â  0 },<br>
+  Â  { X86::VPSUBDZ128rr,  Â  Â  X86::VPSUBDZ128rm,  Â  Â  Â  0 },<br>
+  Â  { X86::VPSUBDZ256rr,  Â  Â  X86::VPSUBDZ256rm,  Â  Â  Â  0 },<br>
+  Â  { X86::VPSUBQZ128rr,  Â  Â  X86::VPSUBQZ128rm,  Â  Â  Â  0 },<br>
+  Â  { X86::VPSUBQZ256rr,  Â  Â  X86::VPSUBQZ256rm,  Â  Â  Â  0 },<br>
+  Â  { X86::VPSUBSBZ128rr,  Â  Â X86::VPSUBSBZ128rm,  Â  Â  Â 0 },<br>
+  Â  { X86::VPSUBSBZ256rr,  Â  Â X86::VPSUBSBZ256rm,  Â  Â  Â 0 },<br>
+  Â  { X86::VPSUBSWZ128rr,  Â  Â X86::VPSUBSWZ128rm,  Â  Â  Â 0 },<br>
+  Â  { X86::VPSUBSWZ256rr,  Â  Â X86::VPSUBSWZ256rm,  Â  Â  Â 0 },<br>
+  Â  { X86::VPSUBUSBZ128rr,  Â  X86::VPSUBUSBZ128rm,  Â  Â  0 },<br>
+  Â  { X86::VPSUBUSBZ256rr,  Â  X86::VPSUBUSBZ256rm,  Â  Â  0 },<br>
+  Â  { X86::VPSUBUSWZ128rr,  Â  X86::VPSUBUSWZ128rm,  Â  Â  0 },<br>
+  Â  { X86::VPSUBUSWZ256rr,  Â  X86::VPSUBUSWZ256rm,  Â  Â  0 },<br>
+  Â  { X86::VPSUBWZ128rr,  Â  Â  X86::VPSUBWZ128rm,  Â  Â  Â  0 },<br>
+  Â  { X86::VPSUBWZ256rr,  Â  Â  X86::VPSUBWZ256rm,  Â  Â  Â  0 },<br>
+  Â  { X86::VPUNPCKHBWZ128rr,  X86::VPUNPCKHBWZ128rm,  Â  0 },<br>
+  Â  { X86::VPUNPCKHBWZ256rr,  X86::VPUNPCKHBWZ256rm,  Â  0 },<br>
+  Â  { X86::VPUNPCKHDQZ128rr,  X86::VPUNPCKHDQZ128rm,  Â  0 },<br>
+  Â  { X86::VPUNPCKHDQZ256rr,  X86::VPUNPCKHDQZ256rm,  Â  0 },<br>
+  Â  { X86::VPUNPCKHQDQZ128rr, X86::VPUNPCKHQDQZ128rm,  Â 0 },<br>
+  Â  { X86::VPUNPCKHQDQZ256rr, X86::VPUNPCKHQDQZ256rm,  Â 0 },<br>
+  Â  { X86::VPUNPCKHWDZ128rr,  X86::VPUNPCKHWDZ128rm,  Â  0 },<br>
+  Â  { X86::VPUNPCKHWDZ256rr,  X86::VPUNPCKHWDZ256rm,  Â  0 },<br>
+  Â  { X86::VPUNPCKLBWZ128rr,  X86::VPUNPCKLBWZ128rm,  Â  0 },<br>
+  Â  { X86::VPUNPCKLBWZ256rr,  X86::VPUNPCKLBWZ256rm,  Â  0 },<br>
+  Â  { X86::VPUNPCKLDQZ128rr,  X86::VPUNPCKLDQZ128rm,  Â  0 },<br>
+  Â  { X86::VPUNPCKLDQZ256rr,  X86::VPUNPCKLDQZ256rm,  Â  0 },<br>
+  Â  { X86::VPUNPCKLQDQZ128rr, X86::VPUNPCKLQDQZ128rm,  Â 0 },<br>
+  Â  { X86::VPUNPCKLQDQZ256rr, X86::VPUNPCKLQDQZ256rm,  Â 0 },<br>
+  Â  { X86::VPUNPCKLWDZ128rr,  X86::VPUNPCKLWDZ128rm,  Â  0 },<br>
+  Â  { X86::VPUNPCKLWDZ256rr,  X86::VPUNPCKLWDZ256rm,  Â  0 },<br>
+  Â  { X86::VPXORDZ128rr,  Â  Â  X86::VPXORDZ128rm,  Â  Â  Â  0 },<br>
+  Â  { X86::VPXORDZ256rr,  Â  Â  X86::VPXORDZ256rm,  Â  Â  Â  0 },<br>
+  Â  { X86::VPXORQZ128rr,  Â  Â  X86::VPXORQZ128rm,  Â  Â  Â  0 },<br>
+  Â  { X86::VPXORQZ256rr,  Â  Â  X86::VPXORQZ256rm,  Â  Â  Â  0 },<br>
+  Â  { X86::VSHUFPDZ128rri,  Â  X86::VSHUFPDZ128rmi,  Â  Â  0 },<br>
+  Â  { X86::VSHUFPDZ256rri,  Â  X86::VSHUFPDZ256rmi,  Â  Â  0 },<br>
+  Â  { X86::VSHUFPSZ128rri,  Â  X86::VSHUFPSZ128rmi,  Â  Â  0 },<br>
+  Â  { X86::VSHUFPSZ256rri,  Â  X86::VSHUFPSZ256rmi,  Â  Â  0 },<br>
+  Â  { X86::VSUBPDZ128rr,  Â  Â  X86::VSUBPDZ128rm,  Â  Â  Â  0 },<br>
+  Â  { X86::VSUBPDZ256rr,  Â  Â  X86::VSUBPDZ256rm,  Â  Â  Â  0 },<br>
+  Â  { X86::VSUBPSZ128rr,  Â  Â  X86::VSUBPSZ128rm,  Â  Â  Â  0 },<br>
+  Â  { X86::VSUBPSZ256rr,  Â  Â  X86::VSUBPSZ256rm,  Â  Â  Â  0 },<br>
+  Â  { X86::VUNPCKHPDZ128rr,  Â X86::VUNPCKHPDZ128rm,  Â  Â 0 },<br>
+  Â  { X86::VUNPCKHPDZ256rr,  Â X86::VUNPCKHPDZ256rm,  Â  Â 0 },<br>
+  Â  { X86::VUNPCKHPSZ128rr,  Â X86::VUNPCKHPSZ128rm,  Â  Â 0 },<br>
+  Â  { X86::VUNPCKHPSZ256rr,  Â X86::VUNPCKHPSZ256rm,  Â  Â 0 },<br>
+  Â  { X86::VUNPCKLPDZ128rr,  Â X86::VUNPCKLPDZ128rm,  Â  Â 0 },<br>
+  Â  { X86::VUNPCKLPDZ256rr,  Â X86::VUNPCKLPDZ256rm,  Â  Â 0 },<br>
+  Â  { X86::VUNPCKLPSZ128rr,  Â X86::VUNPCKLPSZ128rm,  Â  Â 0 },<br>
+  Â  { X86::VUNPCKLPSZ256rr,  Â X86::VUNPCKLPSZ256rm,  Â  Â 0 },<br>
+  Â  { X86::VXORPDZ128rr,  Â  Â  X86::VXORPDZ128rm,  Â  Â  Â  0 },<br>
+  Â  { X86::VXORPDZ256rr,  Â  Â  X86::VXORPDZ256rm,  Â  Â  Â  0 },<br>
+  Â  { X86::VXORPSZ128rr,  Â  Â  X86::VXORPSZ128rm,  Â  Â  Â  0 },<br>
+  Â  { X86::VXORPSZ256rr,  Â  Â  X86::VXORPSZ256rm,  Â  Â  Â  0 },<br>
+<br>
+  Â  // AVX-512 masked foldable instructions<br>
+  Â  { X86::VBROADCASTSSZrkz,  X86::VBROADCASTSSZmkz,  Â  TB_NO_REVERSE },<br>
+  Â  { X86::VBROADCASTSDZrkz,  X86::VBROADCASTSDZmkz,  Â  TB_NO_REVERSE },<br>
+  Â  { X86::VPABSBZrrkz,  Â  Â  Â X86::VPABSBZrmkz,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPABSDZrrkz,  Â  Â  Â X86::VPABSDZrmkz,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPABSQZrrkz,  Â  Â  Â X86::VPABSQZrmkz,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPABSWZrrkz,  Â  Â  Â X86::VPABSWZrmkz,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPERMILPDZrikz,  Â  X86::VPERMILPDZmikz,  Â  Â  0 },<br>
+  Â  { X86::VPERMILPSZrikz,  Â  X86::VPERMILPSZmikz,  Â  Â  0 },<br>
+  Â  { X86::VPERMPDZrikz,  Â  Â  X86::VPERMPDZmikz,  Â  Â  Â  0 },<br>
+  Â  { X86::VPERMQZrikz,  Â  Â  Â X86::VPERMQZmikz,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPMOVSXBDZrrkz,  Â  X86::VPMOVSXBDZrmkz,  Â  Â  0 },<br>
+  Â  { X86::VPMOVSXBQZrrkz,  Â  X86::VPMOVSXBQZrmkz,  Â  Â  TB_NO_REVERSE },<br>
+  Â  { X86::VPMOVSXBWZrrkz,  Â  X86::VPMOVSXBWZrmkz,  Â  Â  0 },<br>
+  Â  { X86::VPMOVSXDQZrrkz,  Â  X86::VPMOVSXDQZrmkz,  Â  Â  0 },<br>
+  Â  { X86::VPMOVSXWDZrrkz,  Â  X86::VPMOVSXWDZrmkz,  Â  Â  0 },<br>
+  Â  { X86::VPMOVSXWQZrrkz,  Â  X86::VPMOVSXWQZrmkz,  Â  Â  0 },<br>
+  Â  { X86::VPMOVZXBDZrrkz,  Â  X86::VPMOVZXBDZrmkz,  Â  Â  0 },<br>
+  Â  { X86::VPMOVZXBQZrrkz,  Â  X86::VPMOVZXBQZrmkz,  Â  Â  TB_NO_REVERSE },<br>
+  Â  { X86::VPMOVZXBWZrrkz,  Â  X86::VPMOVZXBWZrmkz,  Â  Â  0 },<br>
+  Â  { X86::VPMOVZXDQZrrkz,  Â  X86::VPMOVZXDQZrmkz,  Â  Â  0 },<br>
+  Â  { X86::VPMOVZXWDZrrkz,  Â  X86::VPMOVZXWDZrmkz,  Â  Â  0 },<br>
+  Â  { X86::VPMOVZXWQZrrkz,  Â  X86::VPMOVZXWQZrmkz,  Â  Â  0 },<br>
+  Â  { X86::VPOPCNTDZrrkz,  Â  Â X86::VPOPCNTDZrmkz,  Â  Â  Â 0 },<br>
+  Â  { X86::VPOPCNTQZrrkz,  Â  Â X86::VPOPCNTQZrmkz,  Â  Â  Â 0 },<br>
+  Â  { X86::VPSHUFDZrikz,  Â  Â  X86::VPSHUFDZmikz,  Â  Â  Â  0 },<br>
+  Â  { X86::VPSHUFHWZrikz,  Â  Â X86::VPSHUFHWZmikz,  Â  Â  Â 0 },<br>
+  Â  { X86::VPSHUFLWZrikz,  Â  Â X86::VPSHUFLWZmikz,  Â  Â  Â 0 },<br>
+  Â  { X86::VPSLLDZrikz,  Â  Â  Â X86::VPSLLDZmikz,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPSLLQZrikz,  Â  Â  Â X86::VPSLLQZmikz,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPSLLWZrikz,  Â  Â  Â X86::VPSLLWZmikz,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPSRADZrikz,  Â  Â  Â X86::VPSRADZmikz,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPSRAQZrikz,  Â  Â  Â X86::VPSRAQZmikz,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPSRAWZrikz,  Â  Â  Â X86::VPSRAWZmikz,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPSRLDZrikz,  Â  Â  Â X86::VPSRLDZmikz,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPSRLQZrikz,  Â  Â  Â X86::VPSRLQZmikz,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPSRLWZrikz,  Â  Â  Â X86::VPSRLWZmikz,  Â  Â  Â  Â 0 },<br>
+<br>
+  Â  // AVX-512VL 256-bit masked foldable instructions<br>
+  Â  { X86::VBROADCASTSDZ256rkz,  X86::VBROADCASTSDZ256mkz,  Â  Â  TB_NO_REVERSE },<br>
+  Â  { X86::VBROADCASTSSZ256rkz,  X86::VBROADCASTSSZ256mkz,  Â  Â  TB_NO_REVERSE },<br>
+  Â  { X86::VPABSBZ256rrkz,  Â  X86::VPABSBZ256rmkz,  Â  Â  0 },<br>
+  Â  { X86::VPABSDZ256rrkz,  Â  X86::VPABSDZ256rmkz,  Â  Â  0 },<br>
+  Â  { X86::VPABSQZ256rrkz,  Â  X86::VPABSQZ256rmkz,  Â  Â  0 },<br>
+  Â  { X86::VPABSWZ256rrkz,  Â  X86::VPABSWZ256rmkz,  Â  Â  0 },<br>
+  Â  { X86::VPERMILPDZ256rikz, X86::VPERMILPDZ256mikz,  Â 0 },<br>
+  Â  { X86::VPERMILPSZ256rikz, X86::VPERMILPSZ256mikz,  Â 0 },<br>
+  Â  { X86::VPERMPDZ256rikz,  Â X86::VPERMPDZ256mikz,  Â  Â 0 },<br>
+  Â  { X86::VPERMQZ256rikz,  Â  X86::VPERMQZ256mikz,  Â  Â  0 },<br>
+  Â  { X86::VPMOVSXBDZ256rrkz, X86::VPMOVSXBDZ256rmkz,  Â TB_NO_REVERSE },<br>
+  Â  { X86::VPMOVSXBQZ256rrkz, X86::VPMOVSXBQZ256rmkz,  Â TB_NO_REVERSE },<br>
+  Â  { X86::VPMOVSXBWZ256rrkz, X86::VPMOVSXBWZ256rmkz,  Â 0 },<br>
+  Â  { X86::VPMOVSXDQZ256rrkz, X86::VPMOVSXDQZ256rmkz,  Â 0 },<br>
+  Â  { X86::VPMOVSXWDZ256rrkz, X86::VPMOVSXWDZ256rmkz,  Â 0 },<br>
+  Â  { X86::VPMOVSXWQZ256rrkz, X86::VPMOVSXWQZ256rmkz,  Â TB_NO_REVERSE },<br>
+  Â  { X86::VPMOVZXBDZ256rrkz, X86::VPMOVZXBDZ256rmkz,  Â TB_NO_REVERSE },<br>
+  Â  { X86::VPMOVZXBQZ256rrkz, X86::VPMOVZXBQZ256rmkz,  Â TB_NO_REVERSE },<br>
+  Â  { X86::VPMOVZXBWZ256rrkz, X86::VPMOVZXBWZ256rmkz,  Â 0 },<br>
+  Â  { X86::VPMOVZXDQZ256rrkz, X86::VPMOVZXDQZ256rmkz,  Â 0 },<br>
+  Â  { X86::VPMOVZXWDZ256rrkz, X86::VPMOVZXWDZ256rmkz,  Â 0 },<br>
+  Â  { X86::VPMOVZXWQZ256rrkz, X86::VPMOVZXWQZ256rmkz,  Â TB_NO_REVERSE },<br>
+  Â  { X86::VPSHUFDZ256rikz,  Â X86::VPSHUFDZ256mikz,  Â  Â 0 },<br>
+  Â  { X86::VPSHUFHWZ256rikz,  X86::VPSHUFHWZ256mikz,  Â  0 },<br>
+  Â  { X86::VPSHUFLWZ256rikz,  X86::VPSHUFLWZ256mikz,  Â  0 },<br>
+  Â  { X86::VPSLLDZ256rikz,  Â  X86::VPSLLDZ256mikz,  Â  Â  0 },<br>
+  Â  { X86::VPSLLQZ256rikz,  Â  X86::VPSLLQZ256mikz,  Â  Â  0 },<br>
+  Â  { X86::VPSLLWZ256rikz,  Â  X86::VPSLLWZ256mikz,  Â  Â  0 },<br>
+  Â  { X86::VPSRADZ256rikz,  Â  X86::VPSRADZ256mikz,  Â  Â  0 },<br>
+  Â  { X86::VPSRAQZ256rikz,  Â  X86::VPSRAQZ256mikz,  Â  Â  0 },<br>
+  Â  { X86::VPSRAWZ256rikz,  Â  X86::VPSRAWZ256mikz,  Â  Â  0 },<br>
+  Â  { X86::VPSRLDZ256rikz,  Â  X86::VPSRLDZ256mikz,  Â  Â  0 },<br>
+  Â  { X86::VPSRLQZ256rikz,  Â  X86::VPSRLQZ256mikz,  Â  Â  0 },<br>
+  Â  { X86::VPSRLWZ256rikz,  Â  X86::VPSRLWZ256mikz,  Â  Â  0 },<br>
+<br>
+  Â  // AVX-512VL 128-bit masked foldable instructions<br>
+  Â  { X86::VBROADCASTSSZ128rkz,  X86::VBROADCASTSSZ128mkz,  Â  Â  TB_NO_REVERSE },<br>
+  Â  { X86::VPABSBZ128rrkz,  Â  X86::VPABSBZ128rmkz,  Â  Â  0 },<br>
+  Â  { X86::VPABSDZ128rrkz,  Â  X86::VPABSDZ128rmkz,  Â  Â  0 },<br>
+  Â  { X86::VPABSQZ128rrkz,  Â  X86::VPABSQZ128rmkz,  Â  Â  0 },<br>
+  Â  { X86::VPABSWZ128rrkz,  Â  X86::VPABSWZ128rmkz,  Â  Â  0 },<br>
+  Â  { X86::VPERMILPDZ128rikz, X86::VPERMILPDZ128mikz,  Â 0 },<br>
+  Â  { X86::VPERMILPSZ128rikz, X86::VPERMILPSZ128mikz,  Â 0 },<br>
+  Â  { X86::VPMOVSXBDZ128rrkz, X86::VPMOVSXBDZ128rmkz,  Â TB_NO_REVERSE },<br>
+  Â  { X86::VPMOVSXBQZ128rrkz, X86::VPMOVSXBQZ128rmkz,  Â TB_NO_REVERSE },<br>
+  Â  { X86::VPMOVSXBWZ128rrkz, X86::VPMOVSXBWZ128rmkz,  Â TB_NO_REVERSE },<br>
+  Â  { X86::VPMOVSXDQZ128rrkz, X86::VPMOVSXDQZ128rmkz,  Â TB_NO_REVERSE },<br>
+  Â  { X86::VPMOVSXWDZ128rrkz, X86::VPMOVSXWDZ128rmkz,  Â TB_NO_REVERSE },<br>
+  Â  { X86::VPMOVSXWQZ128rrkz, X86::VPMOVSXWQZ128rmkz,  Â TB_NO_REVERSE },<br>
+  Â  { X86::VPMOVZXBDZ128rrkz, X86::VPMOVZXBDZ128rmkz,  Â TB_NO_REVERSE },<br>
+  Â  { X86::VPMOVZXBQZ128rrkz, X86::VPMOVZXBQZ128rmkz,  Â TB_NO_REVERSE },<br>
+  Â  { X86::VPMOVZXBWZ128rrkz, X86::VPMOVZXBWZ128rmkz,  Â TB_NO_REVERSE },<br>
+  Â  { X86::VPMOVZXDQZ128rrkz, X86::VPMOVZXDQZ128rmkz,  Â TB_NO_REVERSE },<br>
+  Â  { X86::VPMOVZXWDZ128rrkz, X86::VPMOVZXWDZ128rmkz,  Â TB_NO_REVERSE },<br>
+  Â  { X86::VPMOVZXWQZ128rrkz, X86::VPMOVZXWQZ128rmkz,  Â TB_NO_REVERSE },<br>
+  Â  { X86::VPSHUFDZ128rikz,  Â X86::VPSHUFDZ128mikz,  Â  Â 0 },<br>
+  Â  { X86::VPSHUFHWZ128rikz,  X86::VPSHUFHWZ128mikz,  Â  0 },<br>
+  Â  { X86::VPSHUFLWZ128rikz,  X86::VPSHUFLWZ128mikz,  Â  0 },<br>
+  Â  { X86::VPSLLDZ128rikz,  Â  X86::VPSLLDZ128mikz,  Â  Â  0 },<br>
+  Â  { X86::VPSLLQZ128rikz,  Â  X86::VPSLLQZ128mikz,  Â  Â  0 },<br>
+  Â  { X86::VPSLLWZ128rikz,  Â  X86::VPSLLWZ128mikz,  Â  Â  0 },<br>
+  Â  { X86::VPSRADZ128rikz,  Â  X86::VPSRADZ128mikz,  Â  Â  0 },<br>
+  Â  { X86::VPSRAQZ128rikz,  Â  X86::VPSRAQZ128mikz,  Â  Â  0 },<br>
+  Â  { X86::VPSRAWZ128rikz,  Â  X86::VPSRAWZ128mikz,  Â  Â  0 },<br>
+  Â  { X86::VPSRLDZ128rikz,  Â  X86::VPSRLDZ128mikz,  Â  Â  0 },<br>
+  Â  { X86::VPSRLQZ128rikz,  Â  X86::VPSRLQZ128mikz,  Â  Â  0 },<br>
+  Â  { X86::VPSRLWZ128rikz,  Â  X86::VPSRLWZ128mikz,  Â  Â  0 },<br>
+<br>
+  Â  // AES foldable instructions<br>
+  Â  { X86::AESDECLASTrr,  Â  Â  X86::AESDECLASTrm,  Â  Â  Â  TB_ALIGN_16 },<br>
+  Â  { X86::AESDECrr,  Â  Â  Â  Â  X86::AESDECrm,  Â  Â  Â  Â  Â  TB_ALIGN_16 },<br>
+  Â  { X86::AESENCLASTrr,  Â  Â  X86::AESENCLASTrm,  Â  Â  Â  TB_ALIGN_16 },<br>
+  Â  { X86::AESENCrr,  Â  Â  Â  Â  X86::AESENCrm,  Â  Â  Â  Â  Â  TB_ALIGN_16 },<br>
+  Â  { X86::VAESDECLASTrr,  Â  Â X86::VAESDECLASTrm,  Â  Â  Â 0 },<br>
+  Â  { X86::VAESDECrr,  Â  Â  Â  Â X86::VAESDECrm,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VAESENCLASTrr,  Â  Â X86::VAESENCLASTrm,  Â  Â  Â 0 },<br>
+  Â  { X86::VAESENCrr,  Â  Â  Â  Â X86::VAESENCrm,  Â  Â  Â  Â  Â 0 },<br>
+<br>
+  Â  // SHA foldable instructions<br>
+  Â  { X86::SHA1MSG1rr,  Â  Â  Â  X86::SHA1MSG1rm,  Â  Â  Â  Â  TB_ALIGN_16 },<br>
+  Â  { X86::SHA1MSG2rr,  Â  Â  Â  X86::SHA1MSG2rm,  Â  Â  Â  Â  TB_ALIGN_16 },<br>
+  Â  { X86::SHA1NEXTErr,  Â  Â  Â X86::SHA1NEXTErm,  Â  Â  Â  Â TB_ALIGN_16 },<br>
+  Â  { X86::SHA1RNDS4rri,  Â  Â  X86::SHA1RNDS4rmi,  Â  Â  Â  TB_ALIGN_16 },<br>
+  Â  { X86::SHA256MSG1rr,  Â  Â  X86::SHA256MSG1rm,  Â  Â  Â  TB_ALIGN_16 },<br>
+  Â  { X86::SHA256MSG2rr,  Â  Â  X86::SHA256MSG2rm,  Â  Â  Â  TB_ALIGN_16 },<br>
+  Â  { X86::SHA256RNDS2rr,  Â  Â X86::SHA256RNDS2rm,  Â  Â  Â TB_ALIGN_16 }<br>
+  };<br>
+<br>
  Â for (X86MemoryFoldTableEntry Entry : MemoryFoldTable2) {<br>
  Â  Â AddTableEntry(<wbr>RegOp2MemOpTable2, MemOp2RegOpTable,<br>
  Â  Â  Â  Â  Â  Â  Â  Â  Â Entry.RegOp, Entry.MemOp,<br>
@@ -150,12 +2439,1105 @@ X86InstrInfo::X86InstrInfo(<wbr>X86Subtarget<br>
  Â  Â  Â  Â  Â  Â  Â  Â  Â Entry.Flags | TB_INDEX_2 | TB_FOLDED_LOAD);<br>
  Â }<br>
<br>
+  static const X86MemoryFoldTableEntry MemoryFoldTable3[] = {<br>
+  Â  // FMA4 foldable patterns<br>
+  Â  { X86::VFMADDSS4rr,  Â  Â  Â  Â  Â X86::VFMADDSS4rm,  Â  Â  Â  Â  Â TB_ALIGN_NONE },<br>
+  Â  { X86::VFMADDSS4rr_Int,  Â  Â  Â X86::VFMADDSS4rm_Int,  Â  Â  Â TB_NO_REVERSE },<br>
+  Â  { X86::VFMADDSD4rr,  Â  Â  Â  Â  Â X86::VFMADDSD4rm,  Â  Â  Â  Â  Â TB_ALIGN_NONE },<br>
+  Â  { X86::VFMADDSD4rr_Int,  Â  Â  Â X86::VFMADDSD4rm_Int,  Â  Â  Â TB_NO_REVERSE },<br>
+  Â  { X86::VFMADDPS4rr,  Â  Â  Â  Â  Â X86::VFMADDPS4rm,  Â  Â  Â  Â  Â TB_ALIGN_NONE },<br>
+  Â  { X86::VFMADDPD4rr,  Â  Â  Â  Â  Â X86::VFMADDPD4rm,  Â  Â  Â  Â  Â TB_ALIGN_NONE },<br>
+  Â  { X86::VFMADDPS4Yrr,  Â  Â  Â  Â  X86::VFMADDPS4Yrm,  Â  Â  Â  Â  TB_ALIGN_NONE },<br>
+  Â  { X86::VFMADDPD4Yrr,  Â  Â  Â  Â  X86::VFMADDPD4Yrm,  Â  Â  Â  Â  TB_ALIGN_NONE },<br>
+  Â  { X86::VFNMADDSS4rr,  Â  Â  Â  Â  X86::VFNMADDSS4rm,  Â  Â  Â  Â  TB_ALIGN_NONE },<br>
+  Â  { X86::VFNMADDSS4rr_Int,  Â  Â  X86::VFNMADDSS4rm_Int,  Â  Â  TB_NO_REVERSE },<br>
+  Â  { X86::VFNMADDSD4rr,  Â  Â  Â  Â  X86::VFNMADDSD4rm,  Â  Â  Â  Â  TB_ALIGN_NONE },<br>
+  Â  { X86::VFNMADDSD4rr_Int,  Â  Â  X86::VFNMADDSD4rm_Int,  Â  Â  TB_NO_REVERSE },<br>
+  Â  { X86::VFNMADDPS4rr,  Â  Â  Â  Â  X86::VFNMADDPS4rm,  Â  Â  Â  Â  TB_ALIGN_NONE },<br>
+  Â  { X86::VFNMADDPD4rr,  Â  Â  Â  Â  X86::VFNMADDPD4rm,  Â  Â  Â  Â  TB_ALIGN_NONE },<br>
+  Â  { X86::VFNMADDPS4Yrr,  Â  Â  Â  Â X86::VFNMADDPS4Yrm,  Â  Â  Â  Â TB_ALIGN_NONE },<br>
+  Â  { X86::VFNMADDPD4Yrr,  Â  Â  Â  Â X86::VFNMADDPD4Yrm,  Â  Â  Â  Â TB_ALIGN_NONE },<br>
+  Â  { X86::VFMSUBSS4rr,  Â  Â  Â  Â  Â X86::VFMSUBSS4rm,  Â  Â  Â  Â  Â TB_ALIGN_NONE },<br>
+  Â  { X86::VFMSUBSS4rr_Int,  Â  Â  Â X86::VFMSUBSS4rm_Int,  Â  Â  Â TB_NO_REVERSE },<br>
+  Â  { X86::VFMSUBSD4rr,  Â  Â  Â  Â  Â X86::VFMSUBSD4rm,  Â  Â  Â  Â  Â TB_ALIGN_NONE },<br>
+  Â  { X86::VFMSUBSD4rr_Int,  Â  Â  Â X86::VFMSUBSD4rm_Int,  Â  Â  Â TB_NO_REVERSE },<br>
+  Â  { X86::VFMSUBPS4rr,  Â  Â  Â  Â  Â X86::VFMSUBPS4rm,  Â  Â  Â  Â  Â TB_ALIGN_NONE },<br>
+  Â  { X86::VFMSUBPD4rr,  Â  Â  Â  Â  Â X86::VFMSUBPD4rm,  Â  Â  Â  Â  Â TB_ALIGN_NONE },<br>
+  Â  { X86::VFMSUBPS4Yrr,  Â  Â  Â  Â  X86::VFMSUBPS4Yrm,  Â  Â  Â  Â  TB_ALIGN_NONE },<br>
+  Â  { X86::VFMSUBPD4Yrr,  Â  Â  Â  Â  X86::VFMSUBPD4Yrm,  Â  Â  Â  Â  TB_ALIGN_NONE },<br>
+  Â  { X86::VFNMSUBSS4rr,  Â  Â  Â  Â  X86::VFNMSUBSS4rm,  Â  Â  Â  Â  TB_ALIGN_NONE },<br>
+  Â  { X86::VFNMSUBSS4rr_Int,  Â  Â  X86::VFNMSUBSS4rm_Int,  Â  Â  TB_NO_REVERSE },<br>
+  Â  { X86::VFNMSUBSD4rr,  Â  Â  Â  Â  X86::VFNMSUBSD4rm,  Â  Â  Â  Â  TB_ALIGN_NONE },<br>
+  Â  { X86::VFNMSUBSD4rr_Int,  Â  Â  X86::VFNMSUBSD4rm_Int,  Â  Â  TB_NO_REVERSE },<br>
+  Â  { X86::VFNMSUBPS4rr,  Â  Â  Â  Â  X86::VFNMSUBPS4rm,  Â  Â  Â  Â  TB_ALIGN_NONE },<br>
+  Â  { X86::VFNMSUBPD4rr,  Â  Â  Â  Â  X86::VFNMSUBPD4rm,  Â  Â  Â  Â  TB_ALIGN_NONE },<br>
+  Â  { X86::VFNMSUBPS4Yrr,  Â  Â  Â  Â X86::VFNMSUBPS4Yrm,  Â  Â  Â  Â TB_ALIGN_NONE },<br>
+  Â  { X86::VFNMSUBPD4Yrr,  Â  Â  Â  Â X86::VFNMSUBPD4Yrm,  Â  Â  Â  Â TB_ALIGN_NONE },<br>
+  Â  { X86::VFMADDSUBPS4rr,  Â  Â  Â  X86::VFMADDSUBPS4rm,  Â  Â  Â  TB_ALIGN_NONE },<br>
+  Â  { X86::VFMADDSUBPD4rr,  Â  Â  Â  X86::VFMADDSUBPD4rm,  Â  Â  Â  TB_ALIGN_NONE },<br>
+  Â  { X86::VFMADDSUBPS4Yrr,  Â  Â  Â X86::VFMADDSUBPS4Yrm,  Â  Â  Â TB_ALIGN_NONE },<br>
+  Â  { X86::VFMADDSUBPD4Yrr,  Â  Â  Â X86::VFMADDSUBPD4Yrm,  Â  Â  Â TB_ALIGN_NONE },<br>
+  Â  { X86::VFMSUBADDPS4rr,  Â  Â  Â  X86::VFMSUBADDPS4rm,  Â  Â  Â  TB_ALIGN_NONE },<br>
+  Â  { X86::VFMSUBADDPD4rr,  Â  Â  Â  X86::VFMSUBADDPD4rm,  Â  Â  Â  TB_ALIGN_NONE },<br>
+  Â  { X86::VFMSUBADDPS4Yrr,  Â  Â  Â X86::VFMSUBADDPS4Yrm,  Â  Â  Â TB_ALIGN_NONE },<br>
+  Â  { X86::VFMSUBADDPD4Yrr,  Â  Â  Â X86::VFMSUBADDPD4Yrm,  Â  Â  Â TB_ALIGN_NONE },<br>
+<br>
+  Â  // XOP foldable instructions<br>
+  Â  { X86::VPCMOVrrr,  Â  Â  Â  Â  Â  Â X86::VPCMOVrrm,  Â  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPCMOVYrrr,  Â  Â  Â  Â  Â  X86::VPCMOVYrrm,  Â  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPERMIL2PDrr,  Â  Â  Â  Â  X86::VPERMIL2PDrm,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPERMIL2PDYrr,  Â  Â  Â  Â X86::VPERMIL2PDYrm,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPERMIL2PSrr,  Â  Â  Â  Â  X86::VPERMIL2PSrm,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPERMIL2PSYrr,  Â  Â  Â  Â X86::VPERMIL2PSYrm,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPPERMrrr,  Â  Â  Â  Â  Â  Â X86::VPPERMrrm,  Â  Â  Â  Â  Â  Â 0 },<br>
+<br>
+  Â  // AVX-512 instructions with 3 source operands.<br>
+  Â  { X86::VPERMI2Brr,  Â  Â  Â  Â  Â  X86::VPERMI2Brm,  Â  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPERMI2Drr,  Â  Â  Â  Â  Â  X86::VPERMI2Drm,  Â  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPERMI2PSrr,  Â  Â  Â  Â  Â X86::VPERMI2PSrm,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPERMI2PDrr,  Â  Â  Â  Â  Â X86::VPERMI2PDrm,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPERMI2Qrr,  Â  Â  Â  Â  Â  X86::VPERMI2Qrm,  Â  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPERMI2Wrr,  Â  Â  Â  Â  Â  X86::VPERMI2Wrm,  Â  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPERMT2Brr,  Â  Â  Â  Â  Â  X86::VPERMT2Brm,  Â  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPERMT2Drr,  Â  Â  Â  Â  Â  X86::VPERMT2Drm,  Â  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPERMT2PSrr,  Â  Â  Â  Â  Â X86::VPERMT2PSrm,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPERMT2PDrr,  Â  Â  Â  Â  Â X86::VPERMT2PDrm,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPERMT2Qrr,  Â  Â  Â  Â  Â  X86::VPERMT2Qrm,  Â  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPERMT2Wrr,  Â  Â  Â  Â  Â  X86::VPERMT2Wrm,  Â  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPTERNLOGDZrri,  Â  Â  Â  X86::VPTERNLOGDZrmi,  Â  Â  Â  0 },<br>
+  Â  { X86::VPTERNLOGQZrri,  Â  Â  Â  X86::VPTERNLOGQZrmi,  Â  Â  Â  0 },<br>
+<br>
+  Â  // AVX-512VL 256-bit instructions with 3 source operands.<br>
+  Â  { X86::VPERMI2B256rr,  Â  Â  Â  Â X86::VPERMI2B256rm,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPERMI2D256rr,  Â  Â  Â  Â X86::VPERMI2D256rm,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPERMI2PD256rr,  Â  Â  Â  X86::VPERMI2PD256rm,  Â  Â  Â  0 },<br>
+  Â  { X86::VPERMI2PS256rr,  Â  Â  Â  X86::VPERMI2PS256rm,  Â  Â  Â  0 },<br>
+  Â  { X86::VPERMI2Q256rr,  Â  Â  Â  Â X86::VPERMI2Q256rm,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPERMI2W256rr,  Â  Â  Â  Â X86::VPERMI2W256rm,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPERMT2B256rr,  Â  Â  Â  Â X86::VPERMT2B256rm,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPERMT2D256rr,  Â  Â  Â  Â X86::VPERMT2D256rm,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPERMT2PD256rr,  Â  Â  Â  X86::VPERMT2PD256rm,  Â  Â  Â  0 },<br>
+  Â  { X86::VPERMT2PS256rr,  Â  Â  Â  X86::VPERMT2PS256rm,  Â  Â  Â  0 },<br>
+  Â  { X86::VPERMT2Q256rr,  Â  Â  Â  Â X86::VPERMT2Q256rm,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPERMT2W256rr,  Â  Â  Â  Â X86::VPERMT2W256rm,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPTERNLOGDZ256rri,  Â  Â X86::VPTERNLOGDZ256rmi,  Â  Â 0 },<br>
+  Â  { X86::VPTERNLOGQZ256rri,  Â  Â X86::VPTERNLOGQZ256rmi,  Â  Â 0 },<br>
+<br>
+  Â  // AVX-512VL 128-bit instructions with 3 source operands.<br>
+  Â  { X86::VPERMI2B128rr,  Â  Â  Â  Â X86::VPERMI2B128rm,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPERMI2D128rr,  Â  Â  Â  Â X86::VPERMI2D128rm,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPERMI2PD128rr,  Â  Â  Â  X86::VPERMI2PD128rm,  Â  Â  Â  0 },<br>
+  Â  { X86::VPERMI2PS128rr,  Â  Â  Â  X86::VPERMI2PS128rm,  Â  Â  Â  0 },<br>
+  Â  { X86::VPERMI2Q128rr,  Â  Â  Â  Â X86::VPERMI2Q128rm,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPERMI2W128rr,  Â  Â  Â  Â X86::VPERMI2W128rm,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPERMT2B128rr,  Â  Â  Â  Â X86::VPERMT2B128rm,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPERMT2D128rr,  Â  Â  Â  Â X86::VPERMT2D128rm,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPERMT2PD128rr,  Â  Â  Â  X86::VPERMT2PD128rm,  Â  Â  Â  0 },<br>
+  Â  { X86::VPERMT2PS128rr,  Â  Â  Â  X86::VPERMT2PS128rm,  Â  Â  Â  0 },<br>
+  Â  { X86::VPERMT2Q128rr,  Â  Â  Â  Â X86::VPERMT2Q128rm,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPERMT2W128rr,  Â  Â  Â  Â X86::VPERMT2W128rm,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPTERNLOGDZ128rri,  Â  Â X86::VPTERNLOGDZ128rmi,  Â  Â 0 },<br>
+  Â  { X86::VPTERNLOGQZ128rri,  Â  Â X86::VPTERNLOGQZ128rmi,  Â  Â 0 },<br>
+<br>
+  Â  // AVX-512 masked instructions<br>
+  Â  { X86::VADDPDZrrkz,  Â  Â  Â  Â  Â X86::VADDPDZrmkz,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VADDPSZrrkz,  Â  Â  Â  Â  Â X86::VADDPSZrmkz,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VADDSDZrr_Intkz,  Â  Â  Â X86::VADDSDZrm_Intkz,  Â  Â  Â TB_NO_REVERSE },<br>
+  Â  { X86::VADDSSZrr_Intkz,  Â  Â  Â X86::VADDSSZrm_Intkz,  Â  Â  Â TB_NO_REVERSE },<br>
+  Â  { X86::VALIGNDZrrikz,  Â  Â  Â  Â X86::VALIGNDZrmikz,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VALIGNQZrrikz,  Â  Â  Â  Â X86::VALIGNQZrmikz,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VANDNPDZrrkz,  Â  Â  Â  Â  X86::VANDNPDZrmkz,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VANDNPSZrrkz,  Â  Â  Â  Â  X86::VANDNPSZrmkz,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VANDPDZrrkz,  Â  Â  Â  Â  Â X86::VANDPDZrmkz,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VANDPSZrrkz,  Â  Â  Â  Â  Â X86::VANDPSZrmkz,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VDIVPDZrrkz,  Â  Â  Â  Â  Â X86::VDIVPDZrmkz,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VDIVPSZrrkz,  Â  Â  Â  Â  Â X86::VDIVPSZrmkz,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VDIVSDZrr_Intkz,  Â  Â  Â X86::VDIVSDZrm_Intkz,  Â  Â  Â TB_NO_REVERSE },<br>
+  Â  { X86::VDIVSSZrr_Intkz,  Â  Â  Â X86::VDIVSSZrm_Intkz,  Â  Â  Â TB_NO_REVERSE },<br>
+  Â  { X86::VINSERTF32x4Zrrkz,  Â  Â X86::VINSERTF32x4Zrmkz,  Â  Â 0 },<br>
+  Â  { X86::VINSERTF32x8Zrrkz,  Â  Â X86::VINSERTF32x8Zrmkz,  Â  Â 0 },<br>
+  Â  { X86::VINSERTF64x2Zrrkz,  Â  Â X86::VINSERTF64x2Zrmkz,  Â  Â 0 },<br>
+  Â  { X86::VINSERTF64x4Zrrkz,  Â  Â X86::VINSERTF64x4Zrmkz,  Â  Â 0 },<br>
+  Â  { X86::VINSERTI32x4Zrrkz,  Â  Â X86::VINSERTI32x4Zrmkz,  Â  Â 0 },<br>
+  Â  { X86::VINSERTI32x8Zrrkz,  Â  Â X86::VINSERTI32x8Zrmkz,  Â  Â 0 },<br>
+  Â  { X86::VINSERTI64x2Zrrkz,  Â  Â X86::VINSERTI64x2Zrmkz,  Â  Â 0 },<br>
+  Â  { X86::VINSERTI64x4Zrrkz,  Â  Â X86::VINSERTI64x4Zrmkz,  Â  Â 0 },<br>
+  Â  { X86::VMAXCPDZrrkz,  Â  Â  Â  Â  X86::VMAXCPDZrmkz,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VMAXCPSZrrkz,  Â  Â  Â  Â  X86::VMAXCPSZrmkz,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VMAXPDZrrkz,  Â  Â  Â  Â  Â X86::VMAXPDZrmkz,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VMAXPSZrrkz,  Â  Â  Â  Â  Â X86::VMAXPSZrmkz,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VMAXSDZrr_Intkz,  Â  Â  Â X86::VMAXSDZrm_Intkz,  Â  Â  Â 0 },<br>
+  Â  { X86::VMAXSSZrr_Intkz,  Â  Â  Â X86::VMAXSSZrm_Intkz,  Â  Â  Â 0 },<br>
+  Â  { X86::VMINCPDZrrkz,  Â  Â  Â  Â  X86::VMINCPDZrmkz,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VMINCPSZrrkz,  Â  Â  Â  Â  X86::VMINCPSZrmkz,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VMINPDZrrkz,  Â  Â  Â  Â  Â X86::VMINPDZrmkz,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VMINPSZrrkz,  Â  Â  Â  Â  Â X86::VMINPSZrmkz,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VMINSDZrr_Intkz,  Â  Â  Â X86::VMINSDZrm_Intkz,  Â  Â  Â 0 },<br>
+  Â  { X86::VMINSSZrr_Intkz,  Â  Â  Â X86::VMINSSZrm_Intkz,  Â  Â  Â 0 },<br>
+  Â  { X86::VMULPDZrrkz,  Â  Â  Â  Â  Â X86::VMULPDZrmkz,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VMULPSZrrkz,  Â  Â  Â  Â  Â X86::VMULPSZrmkz,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VMULSDZrr_Intkz,  Â  Â  Â X86::VMULSDZrm_Intkz,  Â  Â  Â TB_NO_REVERSE },<br>
+  Â  { X86::VMULSSZrr_Intkz,  Â  Â  Â X86::VMULSSZrm_Intkz,  Â  Â  Â TB_NO_REVERSE },<br>
+  Â  { X86::VORPDZrrkz,  Â  Â  Â  Â  Â  X86::VORPDZrmkz,  Â  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VORPSZrrkz,  Â  Â  Â  Â  Â  X86::VORPSZrmkz,  Â  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPACKSSDWZrrkz,  Â  Â  Â  X86::VPACKSSDWZrmkz,  Â  Â  Â  0 },<br>
+  Â  { X86::VPACKSSWBZrrkz,  Â  Â  Â  X86::VPACKSSWBZrmkz,  Â  Â  Â  0 },<br>
+  Â  { X86::VPACKUSDWZrrkz,  Â  Â  Â  X86::VPACKUSDWZrmkz,  Â  Â  Â  0 },<br>
+  Â  { X86::VPACKUSWBZrrkz,  Â  Â  Â  X86::VPACKUSWBZrmkz,  Â  Â  Â  0 },<br>
+  Â  { X86::VPADDBZrrkz,  Â  Â  Â  Â  Â X86::VPADDBZrmkz,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPADDDZrrkz,  Â  Â  Â  Â  Â X86::VPADDDZrmkz,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPADDQZrrkz,  Â  Â  Â  Â  Â X86::VPADDQZrmkz,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPADDSBZrrkz,  Â  Â  Â  Â  X86::VPADDSBZrmkz,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPADDSWZrrkz,  Â  Â  Â  Â  X86::VPADDSWZrmkz,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPADDUSBZrrkz,  Â  Â  Â  Â X86::VPADDUSBZrmkz,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPADDUSWZrrkz,  Â  Â  Â  Â X86::VPADDUSWZrmkz,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPADDWZrrkz,  Â  Â  Â  Â  Â X86::VPADDWZrmkz,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPALIGNRZrrikz,  Â  Â  Â  X86::VPALIGNRZrmikz,  Â  Â  Â  0 },<br>
+  Â  { X86::VPANDDZrrkz,  Â  Â  Â  Â  Â X86::VPANDDZrmkz,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPANDNDZrrkz,  Â  Â  Â  Â  X86::VPANDNDZrmkz,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPANDNQZrrkz,  Â  Â  Â  Â  X86::VPANDNQZrmkz,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPANDQZrrkz,  Â  Â  Â  Â  Â X86::VPANDQZrmkz,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPAVGBZrrkz,  Â  Â  Â  Â  Â X86::VPAVGBZrmkz,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPAVGWZrrkz,  Â  Â  Â  Â  Â X86::VPAVGWZrmkz,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPERMBZrrkz,  Â  Â  Â  Â  Â X86::VPERMBZrmkz,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPERMDZrrkz,  Â  Â  Â  Â  Â X86::VPERMDZrmkz,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPERMILPDZrrkz,  Â  Â  Â  X86::VPERMILPDZrmkz,  Â  Â  Â  0 },<br>
+  Â  { X86::VPERMILPSZrrkz,  Â  Â  Â  X86::VPERMILPSZrmkz,  Â  Â  Â  0 },<br>
+  Â  { X86::VPERMPDZrrkz,  Â  Â  Â  Â  X86::VPERMPDZrmkz,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPERMPSZrrkz,  Â  Â  Â  Â  X86::VPERMPSZrmkz,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPERMQZrrkz,  Â  Â  Â  Â  Â X86::VPERMQZrmkz,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPERMWZrrkz,  Â  Â  Â  Â  Â X86::VPERMWZrmkz,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPMADDUBSWZrrkz,  Â  Â  Â X86::VPMADDUBSWZrmkz,  Â  Â  Â 0 },<br>
+  Â  { X86::VPMADDWDZrrkz,  Â  Â  Â  Â X86::VPMADDWDZrmkz,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPMAXSBZrrkz,  Â  Â  Â  Â  X86::VPMAXSBZrmkz,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPMAXSDZrrkz,  Â  Â  Â  Â  X86::VPMAXSDZrmkz,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPMAXSQZrrkz,  Â  Â  Â  Â  X86::VPMAXSQZrmkz,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPMAXSWZrrkz,  Â  Â  Â  Â  X86::VPMAXSWZrmkz,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPMAXUBZrrkz,  Â  Â  Â  Â  X86::VPMAXUBZrmkz,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPMAXUDZrrkz,  Â  Â  Â  Â  X86::VPMAXUDZrmkz,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPMAXUQZrrkz,  Â  Â  Â  Â  X86::VPMAXUQZrmkz,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPMAXUWZrrkz,  Â  Â  Â  Â  X86::VPMAXUWZrmkz,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPMINSBZrrkz,  Â  Â  Â  Â  X86::VPMINSBZrmkz,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPMINSDZrrkz,  Â  Â  Â  Â  X86::VPMINSDZrmkz,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPMINSQZrrkz,  Â  Â  Â  Â  X86::VPMINSQZrmkz,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPMINSWZrrkz,  Â  Â  Â  Â  X86::VPMINSWZrmkz,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPMINUBZrrkz,  Â  Â  Â  Â  X86::VPMINUBZrmkz,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPMINUDZrrkz,  Â  Â  Â  Â  X86::VPMINUDZrmkz,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPMINUQZrrkz,  Â  Â  Â  Â  X86::VPMINUQZrmkz,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPMINUWZrrkz,  Â  Â  Â  Â  X86::VPMINUWZrmkz,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPMULLDZrrkz,  Â  Â  Â  Â  X86::VPMULLDZrmkz,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPMULLQZrrkz,  Â  Â  Â  Â  X86::VPMULLQZrmkz,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPMULLWZrrkz,  Â  Â  Â  Â  X86::VPMULLWZrmkz,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPMULDQZrrkz,  Â  Â  Â  Â  X86::VPMULDQZrmkz,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPMULUDQZrrkz,  Â  Â  Â  Â X86::VPMULUDQZrmkz,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPORDZrrkz,  Â  Â  Â  Â  Â  X86::VPORDZrmkz,  Â  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPORQZrrkz,  Â  Â  Â  Â  Â  X86::VPORQZrmkz,  Â  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPSHUFBZrrkz,  Â  Â  Â  Â  X86::VPSHUFBZrmkz,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPSLLDZrrkz,  Â  Â  Â  Â  Â X86::VPSLLDZrmkz,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPSLLQZrrkz,  Â  Â  Â  Â  Â X86::VPSLLQZrmkz,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPSLLVDZrrkz,  Â  Â  Â  Â  X86::VPSLLVDZrmkz,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPSLLVQZrrkz,  Â  Â  Â  Â  X86::VPSLLVQZrmkz,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPSLLVWZrrkz,  Â  Â  Â  Â  X86::VPSLLVWZrmkz,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPSLLWZrrkz,  Â  Â  Â  Â  Â X86::VPSLLWZrmkz,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPSRADZrrkz,  Â  Â  Â  Â  Â X86::VPSRADZrmkz,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPSRAQZrrkz,  Â  Â  Â  Â  Â X86::VPSRAQZrmkz,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPSRAVDZrrkz,  Â  Â  Â  Â  X86::VPSRAVDZrmkz,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPSRAVQZrrkz,  Â  Â  Â  Â  X86::VPSRAVQZrmkz,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPSRAVWZrrkz,  Â  Â  Â  Â  X86::VPSRAVWZrmkz,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPSRAWZrrkz,  Â  Â  Â  Â  Â X86::VPSRAWZrmkz,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPSRLDZrrkz,  Â  Â  Â  Â  Â X86::VPSRLDZrmkz,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPSRLQZrrkz,  Â  Â  Â  Â  Â X86::VPSRLQZrmkz,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPSRLVDZrrkz,  Â  Â  Â  Â  X86::VPSRLVDZrmkz,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPSRLVQZrrkz,  Â  Â  Â  Â  X86::VPSRLVQZrmkz,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPSRLVWZrrkz,  Â  Â  Â  Â  X86::VPSRLVWZrmkz,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPSRLWZrrkz,  Â  Â  Â  Â  Â X86::VPSRLWZrmkz,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPSUBBZrrkz,  Â  Â  Â  Â  Â X86::VPSUBBZrmkz,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPSUBDZrrkz,  Â  Â  Â  Â  Â X86::VPSUBDZrmkz,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPSUBQZrrkz,  Â  Â  Â  Â  Â X86::VPSUBQZrmkz,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPSUBSBZrrkz,  Â  Â  Â  Â  X86::VPSUBSBZrmkz,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPSUBSWZrrkz,  Â  Â  Â  Â  X86::VPSUBSWZrmkz,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPSUBUSBZrrkz,  Â  Â  Â  Â X86::VPSUBUSBZrmkz,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPSUBUSWZrrkz,  Â  Â  Â  Â X86::VPSUBUSWZrmkz,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPSUBWZrrkz,  Â  Â  Â  Â  Â X86::VPSUBWZrmkz,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPUNPCKHBWZrrkz,  Â  Â  Â X86::VPUNPCKHBWZrmkz,  Â  Â  Â 0 },<br>
+  Â  { X86::VPUNPCKHDQZrrkz,  Â  Â  Â X86::VPUNPCKHDQZrmkz,  Â  Â  Â 0 },<br>
+  Â  { X86::VPUNPCKHQDQZrrkz,  Â  Â  X86::VPUNPCKHQDQZrmkz,  Â  Â  0 },<br>
+  Â  { X86::VPUNPCKHWDZrrkz,  Â  Â  Â X86::VPUNPCKHWDZrmkz,  Â  Â  Â 0 },<br>
+  Â  { X86::VPUNPCKLBWZrrkz,  Â  Â  Â X86::VPUNPCKLBWZrmkz,  Â  Â  Â 0 },<br>
+  Â  { X86::VPUNPCKLDQZrrkz,  Â  Â  Â X86::VPUNPCKLDQZrmkz,  Â  Â  Â 0 },<br>
+  Â  { X86::VPUNPCKLQDQZrrkz,  Â  Â  X86::VPUNPCKLQDQZrmkz,  Â  Â  0 },<br>
+  Â  { X86::VPUNPCKLWDZrrkz,  Â  Â  Â X86::VPUNPCKLWDZrmkz,  Â  Â  Â 0 },<br>
+  Â  { X86::VPXORDZrrkz,  Â  Â  Â  Â  Â X86::VPXORDZrmkz,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPXORQZrrkz,  Â  Â  Â  Â  Â X86::VPXORQZrmkz,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VSHUFPDZrrikz,  Â  Â  Â  Â X86::VSHUFPDZrmikz,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VSHUFPSZrrikz,  Â  Â  Â  Â X86::VSHUFPSZrmikz,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VSUBPDZrrkz,  Â  Â  Â  Â  Â X86::VSUBPDZrmkz,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VSUBPSZrrkz,  Â  Â  Â  Â  Â X86::VSUBPSZrmkz,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VSUBSDZrr_Intkz,  Â  Â  Â X86::VSUBSDZrm_Intkz,  Â  Â  Â TB_NO_REVERSE },<br>
+  Â  { X86::VSUBSSZrr_Intkz,  Â  Â  Â X86::VSUBSSZrm_Intkz,  Â  Â  Â TB_NO_REVERSE },<br>
+  Â  { X86::VUNPCKHPDZrrkz,  Â  Â  Â  X86::VUNPCKHPDZrmkz,  Â  Â  Â  0 },<br>
+  Â  { X86::VUNPCKHPSZrrkz,  Â  Â  Â  X86::VUNPCKHPSZrmkz,  Â  Â  Â  0 },<br>
+  Â  { X86::VUNPCKLPDZrrkz,  Â  Â  Â  X86::VUNPCKLPDZrmkz,  Â  Â  Â  0 },<br>
+  Â  { X86::VUNPCKLPSZrrkz,  Â  Â  Â  X86::VUNPCKLPSZrmkz,  Â  Â  Â  0 },<br>
+  Â  { X86::VXORPDZrrkz,  Â  Â  Â  Â  Â X86::VXORPDZrmkz,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VXORPSZrrkz,  Â  Â  Â  Â  Â X86::VXORPSZrmkz,  Â  Â  Â  Â  Â 0 },<br>
+<br>
+  Â  // AVX-512{F,VL} masked arithmetic instructions 256-bit<br>
+  Â  { X86::VADDPDZ256rrkz,  Â  Â  Â  X86::VADDPDZ256rmkz,  Â  Â  Â  0 },<br>
+  Â  { X86::VADDPSZ256rrkz,  Â  Â  Â  X86::VADDPSZ256rmkz,  Â  Â  Â  0 },<br>
+  Â  { X86::VALIGNDZ256rrikz,  Â  Â  X86::VALIGNDZ256rmikz,  Â  Â  0 },<br>
+  Â  { X86::VALIGNQZ256rrikz,  Â  Â  X86::VALIGNQZ256rmikz,  Â  Â  0 },<br>
+  Â  { X86::VANDNPDZ256rrkz,  Â  Â  Â X86::VANDNPDZ256rmkz,  Â  Â  Â 0 },<br>
+  Â  { X86::VANDNPSZ256rrkz,  Â  Â  Â X86::VANDNPSZ256rmkz,  Â  Â  Â 0 },<br>
+  Â  { X86::VANDPDZ256rrkz,  Â  Â  Â  X86::VANDPDZ256rmkz,  Â  Â  Â  0 },<br>
+  Â  { X86::VANDPSZ256rrkz,  Â  Â  Â  X86::VANDPSZ256rmkz,  Â  Â  Â  0 },<br>
+  Â  { X86::VDIVPDZ256rrkz,  Â  Â  Â  X86::VDIVPDZ256rmkz,  Â  Â  Â  0 },<br>
+  Â  { X86::VDIVPSZ256rrkz,  Â  Â  Â  X86::VDIVPSZ256rmkz,  Â  Â  Â  0 },<br>
+  Â  { X86::VINSERTF32x4Z256rrkz,  X86::VINSERTF32x4Z256rmkz,  0 },<br>
+  Â  { X86::VINSERTF64x2Z256rrkz,  X86::VINSERTF64x2Z256rmkz,  0 },<br>
+  Â  { X86::VINSERTI32x4Z256rrkz,  X86::VINSERTI32x4Z256rmkz,  0 },<br>
+  Â  { X86::VINSERTI64x2Z256rrkz,  X86::VINSERTI64x2Z256rmkz,  0 },<br>
+  Â  { X86::VMAXCPDZ256rrkz,  Â  Â  Â X86::VMAXCPDZ256rmkz,  Â  Â  Â 0 },<br>
+  Â  { X86::VMAXCPSZ256rrkz,  Â  Â  Â X86::VMAXCPSZ256rmkz,  Â  Â  Â 0 },<br>
+  Â  { X86::VMAXPDZ256rrkz,  Â  Â  Â  X86::VMAXPDZ256rmkz,  Â  Â  Â  0 },<br>
+  Â  { X86::VMAXPSZ256rrkz,  Â  Â  Â  X86::VMAXPSZ256rmkz,  Â  Â  Â  0 },<br>
+  Â  { X86::VMINCPDZ256rrkz,  Â  Â  Â X86::VMINCPDZ256rmkz,  Â  Â  Â 0 },<br>
+  Â  { X86::VMINCPSZ256rrkz,  Â  Â  Â X86::VMINCPSZ256rmkz,  Â  Â  Â 0 },<br>
+  Â  { X86::VMINPDZ256rrkz,  Â  Â  Â  X86::VMINPDZ256rmkz,  Â  Â  Â  0 },<br>
+  Â  { X86::VMINPSZ256rrkz,  Â  Â  Â  X86::VMINPSZ256rmkz,  Â  Â  Â  0 },<br>
+  Â  { X86::VMULPDZ256rrkz,  Â  Â  Â  X86::VMULPDZ256rmkz,  Â  Â  Â  0 },<br>
+  Â  { X86::VMULPSZ256rrkz,  Â  Â  Â  X86::VMULPSZ256rmkz,  Â  Â  Â  0 },<br>
+  Â  { X86::VORPDZ256rrkz,  Â  Â  Â  Â X86::VORPDZ256rmkz,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VORPSZ256rrkz,  Â  Â  Â  Â X86::VORPSZ256rmkz,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPACKSSDWZ256rrkz,  Â  Â X86::VPACKSSDWZ256rmkz,  Â  Â 0 },<br>
+  Â  { X86::VPACKSSWBZ256rrkz,  Â  Â X86::VPACKSSWBZ256rmkz,  Â  Â 0 },<br>
+  Â  { X86::VPACKUSDWZ256rrkz,  Â  Â X86::VPACKUSDWZ256rmkz,  Â  Â 0 },<br>
+  Â  { X86::VPACKUSWBZ256rrkz,  Â  Â X86::VPACKUSWBZ256rmkz,  Â  Â 0 },<br>
+  Â  { X86::VPADDBZ256rrkz,  Â  Â  Â  X86::VPADDBZ256rmkz,  Â  Â  Â  0 },<br>
+  Â  { X86::VPADDDZ256rrkz,  Â  Â  Â  X86::VPADDDZ256rmkz,  Â  Â  Â  0 },<br>
+  Â  { X86::VPADDQZ256rrkz,  Â  Â  Â  X86::VPADDQZ256rmkz,  Â  Â  Â  0 },<br>
+  Â  { X86::VPADDSBZ256rrkz,  Â  Â  Â X86::VPADDSBZ256rmkz,  Â  Â  Â 0 },<br>
+  Â  { X86::VPADDSWZ256rrkz,  Â  Â  Â X86::VPADDSWZ256rmkz,  Â  Â  Â 0 },<br>
+  Â  { X86::VPADDUSBZ256rrkz,  Â  Â  X86::VPADDUSBZ256rmkz,  Â  Â  0 },<br>
+  Â  { X86::VPADDUSWZ256rrkz,  Â  Â  X86::VPADDUSWZ256rmkz,  Â  Â  0 },<br>
+  Â  { X86::VPADDWZ256rrkz,  Â  Â  Â  X86::VPADDWZ256rmkz,  Â  Â  Â  0 },<br>
+  Â  { X86::VPALIGNRZ256rrikz,  Â  Â X86::VPALIGNRZ256rmikz,  Â  Â 0 },<br>
+  Â  { X86::VPANDDZ256rrkz,  Â  Â  Â  X86::VPANDDZ256rmkz,  Â  Â  Â  0 },<br>
+  Â  { X86::VPANDNDZ256rrkz,  Â  Â  Â X86::VPANDNDZ256rmkz,  Â  Â  Â 0 },<br>
+  Â  { X86::VPANDNQZ256rrkz,  Â  Â  Â X86::VPANDNQZ256rmkz,  Â  Â  Â 0 },<br>
+  Â  { X86::VPANDQZ256rrkz,  Â  Â  Â  X86::VPANDQZ256rmkz,  Â  Â  Â  0 },<br>
+  Â  { X86::VPAVGBZ256rrkz,  Â  Â  Â  X86::VPAVGBZ256rmkz,  Â  Â  Â  0 },<br>
+  Â  { X86::VPAVGWZ256rrkz,  Â  Â  Â  X86::VPAVGWZ256rmkz,  Â  Â  Â  0 },<br>
+  Â  { X86::VPERMBZ256rrkz,  Â  Â  Â  X86::VPERMBZ256rmkz,  Â  Â  Â  0 },<br>
+  Â  { X86::VPERMDZ256rrkz,  Â  Â  Â  X86::VPERMDZ256rmkz,  Â  Â  Â  0 },<br>
+  Â  { X86::VPERMILPDZ256rrkz,  Â  Â X86::VPERMILPDZ256rmkz,  Â  Â 0 },<br>
+  Â  { X86::VPERMILPSZ256rrkz,  Â  Â X86::VPERMILPSZ256rmkz,  Â  Â 0 },<br>
+  Â  { X86::VPERMPDZ256rrkz,  Â  Â  Â X86::VPERMPDZ256rmkz,  Â  Â  Â 0 },<br>
+  Â  { X86::VPERMPSZ256rrkz,  Â  Â  Â X86::VPERMPSZ256rmkz,  Â  Â  Â 0 },<br>
+  Â  { X86::VPERMQZ256rrkz,  Â  Â  Â  X86::VPERMQZ256rmkz,  Â  Â  Â  0 },<br>
+  Â  { X86::VPERMWZ256rrkz,  Â  Â  Â  X86::VPERMWZ256rmkz,  Â  Â  Â  0 },<br>
+  Â  { X86::VPMADDUBSWZ256rrkz,  Â  X86::VPMADDUBSWZ256rmkz,  Â  0 },<br>
+  Â  { X86::VPMADDWDZ256rrkz,  Â  Â  X86::VPMADDWDZ256rmkz,  Â  Â  0 },<br>
+  Â  { X86::VPMAXSBZ256rrkz,  Â  Â  Â X86::VPMAXSBZ256rmkz,  Â  Â  Â 0 },<br>
+  Â  { X86::VPMAXSDZ256rrkz,  Â  Â  Â X86::VPMAXSDZ256rmkz,  Â  Â  Â 0 },<br>
+  Â  { X86::VPMAXSQZ256rrkz,  Â  Â  Â X86::VPMAXSQZ256rmkz,  Â  Â  Â 0 },<br>
+  Â  { X86::VPMAXSWZ256rrkz,  Â  Â  Â X86::VPMAXSWZ256rmkz,  Â  Â  Â 0 },<br>
+  Â  { X86::VPMAXUBZ256rrkz,  Â  Â  Â X86::VPMAXUBZ256rmkz,  Â  Â  Â 0 },<br>
+  Â  { X86::VPMAXUDZ256rrkz,  Â  Â  Â X86::VPMAXUDZ256rmkz,  Â  Â  Â 0 },<br>
+  Â  { X86::VPMAXUQZ256rrkz,  Â  Â  Â X86::VPMAXUQZ256rmkz,  Â  Â  Â 0 },<br>
+  Â  { X86::VPMAXUWZ256rrkz,  Â  Â  Â X86::VPMAXUWZ256rmkz,  Â  Â  Â 0 },<br>
+  Â  { X86::VPMINSBZ256rrkz,  Â  Â  Â X86::VPMINSBZ256rmkz,  Â  Â  Â 0 },<br>
+  Â  { X86::VPMINSDZ256rrkz,  Â  Â  Â X86::VPMINSDZ256rmkz,  Â  Â  Â 0 },<br>
+  Â  { X86::VPMINSQZ256rrkz,  Â  Â  Â X86::VPMINSQZ256rmkz,  Â  Â  Â 0 },<br>
+  Â  { X86::VPMINSWZ256rrkz,  Â  Â  Â X86::VPMINSWZ256rmkz,  Â  Â  Â 0 },<br>
+  Â  { X86::VPMINUBZ256rrkz,  Â  Â  Â X86::VPMINUBZ256rmkz,  Â  Â  Â 0 },<br>
+  Â  { X86::VPMINUDZ256rrkz,  Â  Â  Â X86::VPMINUDZ256rmkz,  Â  Â  Â 0 },<br>
+  Â  { X86::VPMINUQZ256rrkz,  Â  Â  Â X86::VPMINUQZ256rmkz,  Â  Â  Â 0 },<br>
+  Â  { X86::VPMINUWZ256rrkz,  Â  Â  Â X86::VPMINUWZ256rmkz,  Â  Â  Â 0 },<br>
+  Â  { X86::VPMULDQZ256rrkz,  Â  Â  Â X86::VPMULDQZ256rmkz,  Â  Â  Â 0 },<br>
+  Â  { X86::VPMULLDZ256rrkz,  Â  Â  Â X86::VPMULLDZ256rmkz,  Â  Â  Â 0 },<br>
+  Â  { X86::VPMULLQZ256rrkz,  Â  Â  Â X86::VPMULLQZ256rmkz,  Â  Â  Â 0 },<br>
+  Â  { X86::VPMULLWZ256rrkz,  Â  Â  Â X86::VPMULLWZ256rmkz,  Â  Â  Â 0 },<br>
+  Â  { X86::VPMULUDQZ256rrkz,  Â  Â  X86::VPMULUDQZ256rmkz,  Â  Â  0 },<br>
+  Â  { X86::VPORDZ256rrkz,  Â  Â  Â  Â X86::VPORDZ256rmkz,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPORQZ256rrkz,  Â  Â  Â  Â X86::VPORQZ256rmkz,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPSHUFBZ256rrkz,  Â  Â  Â X86::VPSHUFBZ256rmkz,  Â  Â  Â 0 },<br>
+  Â  { X86::VPSLLDZ256rrkz,  Â  Â  Â  X86::VPSLLDZ256rmkz,  Â  Â  Â  0 },<br>
+  Â  { X86::VPSLLQZ256rrkz,  Â  Â  Â  X86::VPSLLQZ256rmkz,  Â  Â  Â  0 },<br>
+  Â  { X86::VPSLLVDZ256rrkz,  Â  Â  Â X86::VPSLLVDZ256rmkz,  Â  Â  Â 0 },<br>
+  Â  { X86::VPSLLVQZ256rrkz,  Â  Â  Â X86::VPSLLVQZ256rmkz,  Â  Â  Â 0 },<br>
+  Â  { X86::VPSLLVWZ256rrkz,  Â  Â  Â X86::VPSLLVWZ256rmkz,  Â  Â  Â 0 },<br>
+  Â  { X86::VPSLLWZ256rrkz,  Â  Â  Â  X86::VPSLLWZ256rmkz,  Â  Â  Â  0 },<br>
+  Â  { X86::VPSRADZ256rrkz,  Â  Â  Â  X86::VPSRADZ256rmkz,  Â  Â  Â  0 },<br>
+  Â  { X86::VPSRAQZ256rrkz,  Â  Â  Â  X86::VPSRAQZ256rmkz,  Â  Â  Â  0 },<br>
+  Â  { X86::VPSRAVDZ256rrkz,  Â  Â  Â X86::VPSRAVDZ256rmkz,  Â  Â  Â 0 },<br>
+  Â  { X86::VPSRAVQZ256rrkz,  Â  Â  Â X86::VPSRAVQZ256rmkz,  Â  Â  Â 0 },<br>
+  Â  { X86::VPSRAVWZ256rrkz,  Â  Â  Â X86::VPSRAVWZ256rmkz,  Â  Â  Â 0 },<br>
+  Â  { X86::VPSRAWZ256rrkz,  Â  Â  Â  X86::VPSRAWZ256rmkz,  Â  Â  Â  0 },<br>
+  Â  { X86::VPSRLDZ256rrkz,  Â  Â  Â  X86::VPSRLDZ256rmkz,  Â  Â  Â  0 },<br>
+  Â  { X86::VPSRLQZ256rrkz,  Â  Â  Â  X86::VPSRLQZ256rmkz,  Â  Â  Â  0 },<br>
+  Â  { X86::VPSRLVDZ256rrkz,  Â  Â  Â X86::VPSRLVDZ256rmkz,  Â  Â  Â 0 },<br>
+  Â  { X86::VPSRLVQZ256rrkz,  Â  Â  Â X86::VPSRLVQZ256rmkz,  Â  Â  Â 0 },<br>
+  Â  { X86::VPSRLVWZ256rrkz,  Â  Â  Â X86::VPSRLVWZ256rmkz,  Â  Â  Â 0 },<br>
+  Â  { X86::VPSRLWZ256rrkz,  Â  Â  Â  X86::VPSRLWZ256rmkz,  Â  Â  Â  0 },<br>
+  Â  { X86::VPSUBBZ256rrkz,  Â  Â  Â  X86::VPSUBBZ256rmkz,  Â  Â  Â  0 },<br>
+  Â  { X86::VPSUBDZ256rrkz,  Â  Â  Â  X86::VPSUBDZ256rmkz,  Â  Â  Â  0 },<br>
+  Â  { X86::VPSUBQZ256rrkz,  Â  Â  Â  X86::VPSUBQZ256rmkz,  Â  Â  Â  0 },<br>
+  Â  { X86::VPSUBSBZ256rrkz,  Â  Â  Â X86::VPSUBSBZ256rmkz,  Â  Â  Â 0 },<br>
+  Â  { X86::VPSUBSWZ256rrkz,  Â  Â  Â X86::VPSUBSWZ256rmkz,  Â  Â  Â 0 },<br>
+  Â  { X86::VPSUBUSBZ256rrkz,  Â  Â  X86::VPSUBUSBZ256rmkz,  Â  Â  0 },<br>
+  Â  { X86::VPSUBUSWZ256rrkz,  Â  Â  X86::VPSUBUSWZ256rmkz,  Â  Â  0 },<br>
+  Â  { X86::VPSUBWZ256rrkz,  Â  Â  Â  X86::VPSUBWZ256rmkz,  Â  Â  Â  0 },<br>
+  Â  { X86::VPUNPCKHBWZ256rrkz,  Â  X86::VPUNPCKHBWZ256rmkz,  Â  0 },<br>
+  Â  { X86::VPUNPCKHDQZ256rrkz,  Â  X86::VPUNPCKHDQZ256rmkz,  Â  0 },<br>
+  Â  { X86::VPUNPCKHQDQZ256rrkz,  Â X86::VPUNPCKHQDQZ256rmkz,  Â 0 },<br>
+  Â  { X86::VPUNPCKHWDZ256rrkz,  Â  X86::VPUNPCKHWDZ256rmkz,  Â  0 },<br>
+  Â  { X86::VPUNPCKLBWZ256rrkz,  Â  X86::VPUNPCKLBWZ256rmkz,  Â  0 },<br>
+  Â  { X86::VPUNPCKLDQZ256rrkz,  Â  X86::VPUNPCKLDQZ256rmkz,  Â  0 },<br>
+  Â  { X86::VPUNPCKLQDQZ256rrkz,  Â X86::VPUNPCKLQDQZ256rmkz,  Â 0 },<br>
+  Â  { X86::VPUNPCKLWDZ256rrkz,  Â  X86::VPUNPCKLWDZ256rmkz,  Â  0 },<br>
+  Â  { X86::VPXORDZ256rrkz,  Â  Â  Â  X86::VPXORDZ256rmkz,  Â  Â  Â  0 },<br>
+  Â  { X86::VPXORQZ256rrkz,  Â  Â  Â  X86::VPXORQZ256rmkz,  Â  Â  Â  0 },<br>
+  Â  { X86::VSHUFPDZ256rrikz,  Â  Â  X86::VSHUFPDZ256rmikz,  Â  Â  0 },<br>
+  Â  { X86::VSHUFPSZ256rrikz,  Â  Â  X86::VSHUFPSZ256rmikz,  Â  Â  0 },<br>
+  Â  { X86::VSUBPDZ256rrkz,  Â  Â  Â  X86::VSUBPDZ256rmkz,  Â  Â  Â  0 },<br>
+  Â  { X86::VSUBPSZ256rrkz,  Â  Â  Â  X86::VSUBPSZ256rmkz,  Â  Â  Â  0 },<br>
+  Â  { X86::VUNPCKHPDZ256rrkz,  Â  Â X86::VUNPCKHPDZ256rmkz,  Â  Â 0 },<br>
+  Â  { X86::VUNPCKHPSZ256rrkz,  Â  Â X86::VUNPCKHPSZ256rmkz,  Â  Â 0 },<br>
+  Â  { X86::VUNPCKLPDZ256rrkz,  Â  Â X86::VUNPCKLPDZ256rmkz,  Â  Â 0 },<br>
+  Â  { X86::VUNPCKLPSZ256rrkz,  Â  Â X86::VUNPCKLPSZ256rmkz,  Â  Â 0 },<br>
+  Â  { X86::VXORPDZ256rrkz,  Â  Â  Â  X86::VXORPDZ256rmkz,  Â  Â  Â  0 },<br>
+  Â  { X86::VXORPSZ256rrkz,  Â  Â  Â  X86::VXORPSZ256rmkz,  Â  Â  Â  0 },<br>
+<br>
+  Â  // AVX-512{F,VL} masked arithmetic instructions 128-bit<br>
+  Â  { X86::VADDPDZ128rrkz,  Â  Â  Â  X86::VADDPDZ128rmkz,  Â  Â  Â  0 },<br>
+  Â  { X86::VADDPSZ128rrkz,  Â  Â  Â  X86::VADDPSZ128rmkz,  Â  Â  Â  0 },<br>
+  Â  { X86::VALIGNDZ128rrikz,  Â  Â  X86::VALIGNDZ128rmikz,  Â  Â  0 },<br>
+  Â  { X86::VALIGNQZ128rrikz,  Â  Â  X86::VALIGNQZ128rmikz,  Â  Â  0 },<br>
+  Â  { X86::VANDNPDZ128rrkz,  Â  Â  Â X86::VANDNPDZ128rmkz,  Â  Â  Â 0 },<br>
+  Â  { X86::VANDNPSZ128rrkz,  Â  Â  Â X86::VANDNPSZ128rmkz,  Â  Â  Â 0 },<br>
+  Â  { X86::VANDPDZ128rrkz,  Â  Â  Â  X86::VANDPDZ128rmkz,  Â  Â  Â  0 },<br>
+  Â  { X86::VANDPSZ128rrkz,  Â  Â  Â  X86::VANDPSZ128rmkz,  Â  Â  Â  0 },<br>
+  Â  { X86::VDIVPDZ128rrkz,  Â  Â  Â  X86::VDIVPDZ128rmkz,  Â  Â  Â  0 },<br>
+  Â  { X86::VDIVPSZ128rrkz,  Â  Â  Â  X86::VDIVPSZ128rmkz,  Â  Â  Â  0 },<br>
+  Â  { X86::VMAXCPDZ128rrkz,  Â  Â  Â X86::VMAXCPDZ128rmkz,  Â  Â  Â 0 },<br>
+  Â  { X86::VMAXCPSZ128rrkz,  Â  Â  Â X86::VMAXCPSZ128rmkz,  Â  Â  Â 0 },<br>
+  Â  { X86::VMAXPDZ128rrkz,  Â  Â  Â  X86::VMAXPDZ128rmkz,  Â  Â  Â  0 },<br>
+  Â  { X86::VMAXPSZ128rrkz,  Â  Â  Â  X86::VMAXPSZ128rmkz,  Â  Â  Â  0 },<br>
+  Â  { X86::VMINCPDZ128rrkz,  Â  Â  Â X86::VMINCPDZ128rmkz,  Â  Â  Â 0 },<br>
+  Â  { X86::VMINCPSZ128rrkz,  Â  Â  Â X86::VMINCPSZ128rmkz,  Â  Â  Â 0 },<br>
+  Â  { X86::VMINPDZ128rrkz,  Â  Â  Â  X86::VMINPDZ128rmkz,  Â  Â  Â  0 },<br>
+  Â  { X86::VMINPSZ128rrkz,  Â  Â  Â  X86::VMINPSZ128rmkz,  Â  Â  Â  0 },<br>
+  Â  { X86::VMULPDZ128rrkz,  Â  Â  Â  X86::VMULPDZ128rmkz,  Â  Â  Â  0 },<br>
+  Â  { X86::VMULPSZ128rrkz,  Â  Â  Â  X86::VMULPSZ128rmkz,  Â  Â  Â  0 },<br>
+  Â  { X86::VORPDZ128rrkz,  Â  Â  Â  Â X86::VORPDZ128rmkz,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VORPSZ128rrkz,  Â  Â  Â  Â X86::VORPSZ128rmkz,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPACKSSDWZ128rrkz,  Â  Â X86::VPACKSSDWZ128rmkz,  Â  Â 0 },<br>
+  Â  { X86::VPACKSSWBZ128rrkz,  Â  Â X86::VPACKSSWBZ128rmkz,  Â  Â 0 },<br>
+  Â  { X86::VPACKUSDWZ128rrkz,  Â  Â X86::VPACKUSDWZ128rmkz,  Â  Â 0 },<br>
+  Â  { X86::VPACKUSWBZ128rrkz,  Â  Â X86::VPACKUSWBZ128rmkz,  Â  Â 0 },<br>
+  Â  { X86::VPADDBZ128rrkz,  Â  Â  Â  X86::VPADDBZ128rmkz,  Â  Â  Â  0 },<br>
+  Â  { X86::VPADDDZ128rrkz,  Â  Â  Â  X86::VPADDDZ128rmkz,  Â  Â  Â  0 },<br>
+  Â  { X86::VPADDQZ128rrkz,  Â  Â  Â  X86::VPADDQZ128rmkz,  Â  Â  Â  0 },<br>
+  Â  { X86::VPADDSBZ128rrkz,  Â  Â  Â X86::VPADDSBZ128rmkz,  Â  Â  Â 0 },<br>
+  Â  { X86::VPADDSWZ128rrkz,  Â  Â  Â X86::VPADDSWZ128rmkz,  Â  Â  Â 0 },<br>
+  Â  { X86::VPADDUSBZ128rrkz,  Â  Â  X86::VPADDUSBZ128rmkz,  Â  Â  0 },<br>
+  Â  { X86::VPADDUSWZ128rrkz,  Â  Â  X86::VPADDUSWZ128rmkz,  Â  Â  0 },<br>
+  Â  { X86::VPADDWZ128rrkz,  Â  Â  Â  X86::VPADDWZ128rmkz,  Â  Â  Â  0 },<br>
+  Â  { X86::VPALIGNRZ128rrikz,  Â  Â X86::VPALIGNRZ128rmikz,  Â  Â 0 },<br>
+  Â  { X86::VPANDDZ128rrkz,  Â  Â  Â  X86::VPANDDZ128rmkz,  Â  Â  Â  0 },<br>
+  Â  { X86::VPANDNDZ128rrkz,  Â  Â  Â X86::VPANDNDZ128rmkz,  Â  Â  Â 0 },<br>
+  Â  { X86::VPANDNQZ128rrkz,  Â  Â  Â X86::VPANDNQZ128rmkz,  Â  Â  Â 0 },<br>
+  Â  { X86::VPANDQZ128rrkz,  Â  Â  Â  X86::VPANDQZ128rmkz,  Â  Â  Â  0 },<br>
+  Â  { X86::VPAVGBZ128rrkz,  Â  Â  Â  X86::VPAVGBZ128rmkz,  Â  Â  Â  0 },<br>
+  Â  { X86::VPAVGWZ128rrkz,  Â  Â  Â  X86::VPAVGWZ128rmkz,  Â  Â  Â  0 },<br>
+  Â  { X86::VPERMBZ128rrkz,  Â  Â  Â  X86::VPERMBZ128rmkz,  Â  Â  Â  0 },<br>
+  Â  { X86::VPERMILPDZ128rrkz,  Â  Â X86::VPERMILPDZ128rmkz,  Â  Â 0 },<br>
+  Â  { X86::VPERMILPSZ128rrkz,  Â  Â X86::VPERMILPSZ128rmkz,  Â  Â 0 },<br>
+  Â  { X86::VPERMWZ128rrkz,  Â  Â  Â  X86::VPERMWZ128rmkz,  Â  Â  Â  0 },<br>
+  Â  { X86::VPMADDUBSWZ128rrkz,  Â  X86::VPMADDUBSWZ128rmkz,  Â  0 },<br>
+  Â  { X86::VPMADDWDZ128rrkz,  Â  Â  X86::VPMADDWDZ128rmkz,  Â  Â  0 },<br>
+  Â  { X86::VPMAXSBZ128rrkz,  Â  Â  Â X86::VPMAXSBZ128rmkz,  Â  Â  Â 0 },<br>
+  Â  { X86::VPMAXSDZ128rrkz,  Â  Â  Â X86::VPMAXSDZ128rmkz,  Â  Â  Â 0 },<br>
+  Â  { X86::VPMAXSQZ128rrkz,  Â  Â  Â X86::VPMAXSQZ128rmkz,  Â  Â  Â 0 },<br>
+  Â  { X86::VPMAXSWZ128rrkz,  Â  Â  Â X86::VPMAXSWZ128rmkz,  Â  Â  Â 0 },<br>
+  Â  { X86::VPMAXUBZ128rrkz,  Â  Â  Â X86::VPMAXUBZ128rmkz,  Â  Â  Â 0 },<br>
+  Â  { X86::VPMAXUDZ128rrkz,  Â  Â  Â X86::VPMAXUDZ128rmkz,  Â  Â  Â 0 },<br>
+  Â  { X86::VPMAXUQZ128rrkz,  Â  Â  Â X86::VPMAXUQZ128rmkz,  Â  Â  Â 0 },<br>
+  Â  { X86::VPMAXUWZ128rrkz,  Â  Â  Â X86::VPMAXUWZ128rmkz,  Â  Â  Â 0 },<br>
+  Â  { X86::VPMINSBZ128rrkz,  Â  Â  Â X86::VPMINSBZ128rmkz,  Â  Â  Â 0 },<br>
+  Â  { X86::VPMINSDZ128rrkz,  Â  Â  Â X86::VPMINSDZ128rmkz,  Â  Â  Â 0 },<br>
+  Â  { X86::VPMINSQZ128rrkz,  Â  Â  Â X86::VPMINSQZ128rmkz,  Â  Â  Â 0 },<br>
+  Â  { X86::VPMINSWZ128rrkz,  Â  Â  Â X86::VPMINSWZ128rmkz,  Â  Â  Â 0 },<br>
+  Â  { X86::VPMINUBZ128rrkz,  Â  Â  Â X86::VPMINUBZ128rmkz,  Â  Â  Â 0 },<br>
+  Â  { X86::VPMINUDZ128rrkz,  Â  Â  Â X86::VPMINUDZ128rmkz,  Â  Â  Â 0 },<br>
+  Â  { X86::VPMINUQZ128rrkz,  Â  Â  Â X86::VPMINUQZ128rmkz,  Â  Â  Â 0 },<br>
+  Â  { X86::VPMINUWZ128rrkz,  Â  Â  Â X86::VPMINUWZ128rmkz,  Â  Â  Â 0 },<br>
+  Â  { X86::VPMULDQZ128rrkz,  Â  Â  Â X86::VPMULDQZ128rmkz,  Â  Â  Â 0 },<br>
+  Â  { X86::VPMULLDZ128rrkz,  Â  Â  Â X86::VPMULLDZ128rmkz,  Â  Â  Â 0 },<br>
+  Â  { X86::VPMULLQZ128rrkz,  Â  Â  Â X86::VPMULLQZ128rmkz,  Â  Â  Â 0 },<br>
+  Â  { X86::VPMULLWZ128rrkz,  Â  Â  Â X86::VPMULLWZ128rmkz,  Â  Â  Â 0 },<br>
+  Â  { X86::VPMULUDQZ128rrkz,  Â  Â  X86::VPMULUDQZ128rmkz,  Â  Â  0 },<br>
+  Â  { X86::VPORDZ128rrkz,  Â  Â  Â  Â X86::VPORDZ128rmkz,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPORQZ128rrkz,  Â  Â  Â  Â X86::VPORQZ128rmkz,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPSHUFBZ128rrkz,  Â  Â  Â X86::VPSHUFBZ128rmkz,  Â  Â  Â 0 },<br>
+  Â  { X86::VPSLLDZ128rrkz,  Â  Â  Â  X86::VPSLLDZ128rmkz,  Â  Â  Â  0 },<br>
+  Â  { X86::VPSLLQZ128rrkz,  Â  Â  Â  X86::VPSLLQZ128rmkz,  Â  Â  Â  0 },<br>
+  Â  { X86::VPSLLVDZ128rrkz,  Â  Â  Â X86::VPSLLVDZ128rmkz,  Â  Â  Â 0 },<br>
+  Â  { X86::VPSLLVQZ128rrkz,  Â  Â  Â X86::VPSLLVQZ128rmkz,  Â  Â  Â 0 },<br>
+  Â  { X86::VPSLLVWZ128rrkz,  Â  Â  Â X86::VPSLLVWZ128rmkz,  Â  Â  Â 0 },<br>
+  Â  { X86::VPSLLWZ128rrkz,  Â  Â  Â  X86::VPSLLWZ128rmkz,  Â  Â  Â  0 },<br>
+  Â  { X86::VPSRADZ128rrkz,  Â  Â  Â  X86::VPSRADZ128rmkz,  Â  Â  Â  0 },<br>
+  Â  { X86::VPSRAQZ128rrkz,  Â  Â  Â  X86::VPSRAQZ128rmkz,  Â  Â  Â  0 },<br>
+  Â  { X86::VPSRAVDZ128rrkz,  Â  Â  Â X86::VPSRAVDZ128rmkz,  Â  Â  Â 0 },<br>
+  Â  { X86::VPSRAVQZ128rrkz,  Â  Â  Â X86::VPSRAVQZ128rmkz,  Â  Â  Â 0 },<br>
+  Â  { X86::VPSRAVWZ128rrkz,  Â  Â  Â X86::VPSRAVWZ128rmkz,  Â  Â  Â 0 },<br>
+  Â  { X86::VPSRAWZ128rrkz,  Â  Â  Â  X86::VPSRAWZ128rmkz,  Â  Â  Â  0 },<br>
+  Â  { X86::VPSRLDZ128rrkz,  Â  Â  Â  X86::VPSRLDZ128rmkz,  Â  Â  Â  0 },<br>
+  Â  { X86::VPSRLQZ128rrkz,  Â  Â  Â  X86::VPSRLQZ128rmkz,  Â  Â  Â  0 },<br>
+  Â  { X86::VPSRLVDZ128rrkz,  Â  Â  Â X86::VPSRLVDZ128rmkz,  Â  Â  Â 0 },<br>
+  Â  { X86::VPSRLVQZ128rrkz,  Â  Â  Â X86::VPSRLVQZ128rmkz,  Â  Â  Â 0 },<br>
+  Â  { X86::VPSRLVWZ128rrkz,  Â  Â  Â X86::VPSRLVWZ128rmkz,  Â  Â  Â 0 },<br>
+  Â  { X86::VPSRLWZ128rrkz,  Â  Â  Â  X86::VPSRLWZ128rmkz,  Â  Â  Â  0 },<br>
+  Â  { X86::VPSUBBZ128rrkz,  Â  Â  Â  X86::VPSUBBZ128rmkz,  Â  Â  Â  0 },<br>
+  Â  { X86::VPSUBDZ128rrkz,  Â  Â  Â  X86::VPSUBDZ128rmkz,  Â  Â  Â  0 },<br>
+  Â  { X86::VPSUBQZ128rrkz,  Â  Â  Â  X86::VPSUBQZ128rmkz,  Â  Â  Â  0 },<br>
+  Â  { X86::VPSUBSBZ128rrkz,  Â  Â  Â X86::VPSUBSBZ128rmkz,  Â  Â  Â 0 },<br>
+  Â  { X86::VPSUBSWZ128rrkz,  Â  Â  Â X86::VPSUBSWZ128rmkz,  Â  Â  Â 0 },<br>
+  Â  { X86::VPSUBUSBZ128rrkz,  Â  Â  X86::VPSUBUSBZ128rmkz,  Â  Â  0 },<br>
+  Â  { X86::VPSUBUSWZ128rrkz,  Â  Â  X86::VPSUBUSWZ128rmkz,  Â  Â  0 },<br>
+  Â  { X86::VPSUBWZ128rrkz,  Â  Â  Â  X86::VPSUBWZ128rmkz,  Â  Â  Â  0 },<br>
+  Â  { X86::VPUNPCKHBWZ128rrkz,  Â  X86::VPUNPCKHBWZ128rmkz,  Â  0 },<br>
+  Â  { X86::VPUNPCKHDQZ128rrkz,  Â  X86::VPUNPCKHDQZ128rmkz,  Â  0 },<br>
+  Â  { X86::VPUNPCKHQDQZ128rrkz,  Â X86::VPUNPCKHQDQZ128rmkz,  Â 0 },<br>
+  Â  { X86::VPUNPCKHWDZ128rrkz,  Â  X86::VPUNPCKHWDZ128rmkz,  Â  0 },<br>
+  Â  { X86::VPUNPCKLBWZ128rrkz,  Â  X86::VPUNPCKLBWZ128rmkz,  Â  0 },<br>
+  Â  { X86::VPUNPCKLDQZ128rrkz,  Â  X86::VPUNPCKLDQZ128rmkz,  Â  0 },<br>
+  Â  { X86::VPUNPCKLQDQZ128rrkz,  Â X86::VPUNPCKLQDQZ128rmkz,  Â 0 },<br>
+  Â  { X86::VPUNPCKLWDZ128rrkz,  Â  X86::VPUNPCKLWDZ128rmkz,  Â  0 },<br>
+  Â  { X86::VPXORDZ128rrkz,  Â  Â  Â  X86::VPXORDZ128rmkz,  Â  Â  Â  0 },<br>
+  Â  { X86::VPXORQZ128rrkz,  Â  Â  Â  X86::VPXORQZ128rmkz,  Â  Â  Â  0 },<br>
+  Â  { X86::VSHUFPDZ128rrikz,  Â  Â  X86::VSHUFPDZ128rmikz,  Â  Â  0 },<br>
+  Â  { X86::VSHUFPSZ128rrikz,  Â  Â  X86::VSHUFPSZ128rmikz,  Â  Â  0 },<br>
+  Â  { X86::VSUBPDZ128rrkz,  Â  Â  Â  X86::VSUBPDZ128rmkz,  Â  Â  Â  0 },<br>
+  Â  { X86::VSUBPSZ128rrkz,  Â  Â  Â  X86::VSUBPSZ128rmkz,  Â  Â  Â  0 },<br>
+  Â  { X86::VUNPCKHPDZ128rrkz,  Â  Â X86::VUNPCKHPDZ128rmkz,  Â  Â 0 },<br>
+  Â  { X86::VUNPCKHPSZ128rrkz,  Â  Â X86::VUNPCKHPSZ128rmkz,  Â  Â 0 },<br>
+  Â  { X86::VUNPCKLPDZ128rrkz,  Â  Â X86::VUNPCKLPDZ128rmkz,  Â  Â 0 },<br>
+  Â  { X86::VUNPCKLPSZ128rrkz,  Â  Â X86::VUNPCKLPSZ128rmkz,  Â  Â 0 },<br>
+  Â  { X86::VXORPDZ128rrkz,  Â  Â  Â  X86::VXORPDZ128rmkz,  Â  Â  Â  0 },<br>
+  Â  { X86::VXORPSZ128rrkz,  Â  Â  Â  X86::VXORPSZ128rmkz,  Â  Â  Â  0 },<br>
+<br>
+  Â  // AVX-512 masked foldable instructions<br>
+  Â  { X86::VBROADCASTSSZrk,  Â  Â  Â X86::VBROADCASTSSZmk,  Â  Â  Â TB_NO_REVERSE },<br>
+  Â  { X86::VBROADCASTSDZrk,  Â  Â  Â X86::VBROADCASTSDZmk,  Â  Â  Â TB_NO_REVERSE },<br>
+  Â  { X86::VPABSBZrrk,  Â  Â  Â  Â  Â  X86::VPABSBZrmk,  Â  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPABSDZrrk,  Â  Â  Â  Â  Â  X86::VPABSDZrmk,  Â  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPABSQZrrk,  Â  Â  Â  Â  Â  X86::VPABSQZrmk,  Â  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPABSWZrrk,  Â  Â  Â  Â  Â  X86::VPABSWZrmk,  Â  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPERMILPDZrik,  Â  Â  Â  Â X86::VPERMILPDZmik,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPERMILPSZrik,  Â  Â  Â  Â X86::VPERMILPSZmik,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPERMPDZrik,  Â  Â  Â  Â  Â X86::VPERMPDZmik,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPERMQZrik,  Â  Â  Â  Â  Â  X86::VPERMQZmik,  Â  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPMOVSXBDZrrk,  Â  Â  Â  Â X86::VPMOVSXBDZrmk,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPMOVSXBQZrrk,  Â  Â  Â  Â X86::VPMOVSXBQZrmk,  Â  Â  Â  Â TB_NO_REVERSE },<br>
+  Â  { X86::VPMOVSXBWZrrk,  Â  Â  Â  Â X86::VPMOVSXBWZrmk,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPMOVSXDQZrrk,  Â  Â  Â  Â X86::VPMOVSXDQZrmk,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPMOVSXWDZrrk,  Â  Â  Â  Â X86::VPMOVSXWDZrmk,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPMOVSXWQZrrk,  Â  Â  Â  Â X86::VPMOVSXWQZrmk,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPMOVZXBDZrrk,  Â  Â  Â  Â X86::VPMOVZXBDZrmk,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPMOVZXBQZrrk,  Â  Â  Â  Â X86::VPMOVZXBQZrmk,  Â  Â  Â  Â TB_NO_REVERSE },<br>
+  Â  { X86::VPMOVZXBWZrrk,  Â  Â  Â  Â X86::VPMOVZXBWZrmk,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPMOVZXDQZrrk,  Â  Â  Â  Â X86::VPMOVZXDQZrmk,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPMOVZXWDZrrk,  Â  Â  Â  Â X86::VPMOVZXWDZrmk,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPMOVZXWQZrrk,  Â  Â  Â  Â X86::VPMOVZXWQZrmk,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPOPCNTDZrrk,  Â  Â  Â  Â  X86::VPOPCNTDZrmk,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPOPCNTQZrrk,  Â  Â  Â  Â  X86::VPOPCNTQZrmk,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPSHUFDZrik,  Â  Â  Â  Â  Â X86::VPSHUFDZmik,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPSHUFHWZrik,  Â  Â  Â  Â  X86::VPSHUFHWZmik,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPSHUFLWZrik,  Â  Â  Â  Â  X86::VPSHUFLWZmik,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPSLLDZrik,  Â  Â  Â  Â  Â  X86::VPSLLDZmik,  Â  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPSLLQZrik,  Â  Â  Â  Â  Â  X86::VPSLLQZmik,  Â  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPSLLWZrik,  Â  Â  Â  Â  Â  X86::VPSLLWZmik,  Â  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPSRADZrik,  Â  Â  Â  Â  Â  X86::VPSRADZmik,  Â  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPSRAQZrik,  Â  Â  Â  Â  Â  X86::VPSRAQZmik,  Â  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPSRAWZrik,  Â  Â  Â  Â  Â  X86::VPSRAWZmik,  Â  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPSRLDZrik,  Â  Â  Â  Â  Â  X86::VPSRLDZmik,  Â  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPSRLQZrik,  Â  Â  Â  Â  Â  X86::VPSRLQZmik,  Â  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPSRLWZrik,  Â  Â  Â  Â  Â  X86::VPSRLWZmik,  Â  Â  Â  Â  Â  0 },<br>
+<br>
+  Â  // AVX-512VL 256-bit masked foldable instructions<br>
+  Â  { X86::VBROADCASTSSZ256rk,  Â  X86::VBROADCASTSSZ256mk,  Â  TB_NO_REVERSE },<br>
+  Â  { X86::VBROADCASTSDZ256rk,  Â  X86::VBROADCASTSDZ256mk,  Â  TB_NO_REVERSE },<br>
+  Â  { X86::VPABSBZ256rrk,  Â  Â  Â  Â X86::VPABSBZ256rmk,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPABSDZ256rrk,  Â  Â  Â  Â X86::VPABSDZ256rmk,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPABSQZ256rrk,  Â  Â  Â  Â X86::VPABSQZ256rmk,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPABSWZ256rrk,  Â  Â  Â  Â X86::VPABSWZ256rmk,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPERMILPDZ256rik,  Â  Â  X86::VPERMILPDZ256mik,  Â  Â  0 },<br>
+  Â  { X86::VPERMILPSZ256rik,  Â  Â  X86::VPERMILPSZ256mik,  Â  Â  0 },<br>
+  Â  { X86::VPERMPDZ256rik,  Â  Â  Â  X86::VPERMPDZ256mik,  Â  Â  Â  0 },<br>
+  Â  { X86::VPERMQZ256rik,  Â  Â  Â  Â X86::VPERMQZ256mik,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPMOVSXBDZ256rrk,  Â  Â  X86::VPMOVSXBDZ256rmk,  Â  Â  TB_NO_REVERSE },<br>
+  Â  { X86::VPMOVSXBQZ256rrk,  Â  Â  X86::VPMOVSXBQZ256rmk,  Â  Â  TB_NO_REVERSE },<br>
+  Â  { X86::VPMOVSXBWZ256rrk,  Â  Â  X86::VPMOVSXBWZ256rmk,  Â  Â  0 },<br>
+  Â  { X86::VPMOVSXDQZ256rrk,  Â  Â  X86::VPMOVSXDQZ256rmk,  Â  Â  0 },<br>
+  Â  { X86::VPMOVSXWDZ256rrk,  Â  Â  X86::VPMOVSXWDZ256rmk,  Â  Â  0 },<br>
+  Â  { X86::VPMOVSXWQZ256rrk,  Â  Â  X86::VPMOVSXWQZ256rmk,  Â  Â  TB_NO_REVERSE },<br>
+  Â  { X86::VPMOVZXBDZ256rrk,  Â  Â  X86::VPMOVZXBDZ256rmk,  Â  Â  TB_NO_REVERSE },<br>
+  Â  { X86::VPMOVZXBQZ256rrk,  Â  Â  X86::VPMOVZXBQZ256rmk,  Â  Â  TB_NO_REVERSE },<br>
+  Â  { X86::VPMOVZXBWZ256rrk,  Â  Â  X86::VPMOVZXBWZ256rmk,  Â  Â  0 },<br>
+  Â  { X86::VPMOVZXDQZ256rrk,  Â  Â  X86::VPMOVZXDQZ256rmk,  Â  Â  0 },<br>
+  Â  { X86::VPMOVZXWDZ256rrk,  Â  Â  X86::VPMOVZXWDZ256rmk,  Â  Â  0 },<br>
+  Â  { X86::VPMOVZXWQZ256rrk,  Â  Â  X86::VPMOVZXWQZ256rmk,  Â  Â  TB_NO_REVERSE },<br>
+  Â  { X86::VPSHUFDZ256rik,  Â  Â  Â  X86::VPSHUFDZ256mik,  Â  Â  Â  0 },<br>
+  Â  { X86::VPSHUFHWZ256rik,  Â  Â  Â X86::VPSHUFHWZ256mik,  Â  Â  Â 0 },<br>
+  Â  { X86::VPSHUFLWZ256rik,  Â  Â  Â X86::VPSHUFLWZ256mik,  Â  Â  Â 0 },<br>
+  Â  { X86::VPSLLDZ256rik,  Â  Â  Â  Â X86::VPSLLDZ256mik,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPSLLQZ256rik,  Â  Â  Â  Â X86::VPSLLQZ256mik,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPSLLWZ256rik,  Â  Â  Â  Â X86::VPSLLWZ256mik,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPSRADZ256rik,  Â  Â  Â  Â X86::VPSRADZ256mik,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPSRAQZ256rik,  Â  Â  Â  Â X86::VPSRAQZ256mik,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPSRAWZ256rik,  Â  Â  Â  Â X86::VPSRAWZ256mik,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPSRLDZ256rik,  Â  Â  Â  Â X86::VPSRLDZ256mik,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPSRLQZ256rik,  Â  Â  Â  Â X86::VPSRLQZ256mik,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPSRLWZ256rik,  Â  Â  Â  Â X86::VPSRLWZ256mik,  Â  Â  Â  Â 0 },<br>
+<br>
+  Â  // AVX-512VL 128-bit masked foldable instructions<br>
+  Â  { X86::VBROADCASTSSZ128rk,  Â  X86::VBROADCASTSSZ128mk,  Â  TB_NO_REVERSE },<br>
+  Â  { X86::VPABSBZ128rrk,  Â  Â  Â  Â X86::VPABSBZ128rmk,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPABSDZ128rrk,  Â  Â  Â  Â X86::VPABSDZ128rmk,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPABSQZ128rrk,  Â  Â  Â  Â X86::VPABSQZ128rmk,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPABSWZ128rrk,  Â  Â  Â  Â X86::VPABSWZ128rmk,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPERMILPDZ128rik,  Â  Â  X86::VPERMILPDZ128mik,  Â  Â  0 },<br>
+  Â  { X86::VPERMILPSZ128rik,  Â  Â  X86::VPERMILPSZ128mik,  Â  Â  0 },<br>
+  Â  { X86::VPMOVSXBDZ128rrk,  Â  Â  X86::VPMOVSXBDZ128rmk,  Â  Â  TB_NO_REVERSE },<br>
+  Â  { X86::VPMOVSXBQZ128rrk,  Â  Â  X86::VPMOVSXBQZ128rmk,  Â  Â  TB_NO_REVERSE },<br>
+  Â  { X86::VPMOVSXBWZ128rrk,  Â  Â  X86::VPMOVSXBWZ128rmk,  Â  Â  TB_NO_REVERSE },<br>
+  Â  { X86::VPMOVSXDQZ128rrk,  Â  Â  X86::VPMOVSXDQZ128rmk,  Â  Â  TB_NO_REVERSE },<br>
+  Â  { X86::VPMOVSXWDZ128rrk,  Â  Â  X86::VPMOVSXWDZ128rmk,  Â  Â  TB_NO_REVERSE },<br>
+  Â  { X86::VPMOVSXWQZ128rrk,  Â  Â  X86::VPMOVSXWQZ128rmk,  Â  Â  TB_NO_REVERSE },<br>
+  Â  { X86::VPMOVZXBDZ128rrk,  Â  Â  X86::VPMOVZXBDZ128rmk,  Â  Â  TB_NO_REVERSE },<br>
+  Â  { X86::VPMOVZXBQZ128rrk,  Â  Â  X86::VPMOVZXBQZ128rmk,  Â  Â  TB_NO_REVERSE },<br>
+  Â  { X86::VPMOVZXBWZ128rrk,  Â  Â  X86::VPMOVZXBWZ128rmk,  Â  Â  TB_NO_REVERSE },<br>
+  Â  { X86::VPMOVZXDQZ128rrk,  Â  Â  X86::VPMOVZXDQZ128rmk,  Â  Â  TB_NO_REVERSE },<br>
+  Â  { X86::VPMOVZXWDZ128rrk,  Â  Â  X86::VPMOVZXWDZ128rmk,  Â  Â  TB_NO_REVERSE },<br>
+  Â  { X86::VPMOVZXWQZ128rrk,  Â  Â  X86::VPMOVZXWQZ128rmk,  Â  Â  TB_NO_REVERSE },<br>
+  Â  { X86::VPSHUFDZ128rik,  Â  Â  Â  X86::VPSHUFDZ128mik,  Â  Â  Â  0 },<br>
+  Â  { X86::VPSHUFHWZ128rik,  Â  Â  Â X86::VPSHUFHWZ128mik,  Â  Â  Â 0 },<br>
+  Â  { X86::VPSHUFLWZ128rik,  Â  Â  Â X86::VPSHUFLWZ128mik,  Â  Â  Â 0 },<br>
+  Â  { X86::VPSLLDZ128rik,  Â  Â  Â  Â X86::VPSLLDZ128mik,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPSLLQZ128rik,  Â  Â  Â  Â X86::VPSLLQZ128mik,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPSLLWZ128rik,  Â  Â  Â  Â X86::VPSLLWZ128mik,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPSRADZ128rik,  Â  Â  Â  Â X86::VPSRADZ128mik,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPSRAQZ128rik,  Â  Â  Â  Â X86::VPSRAQZ128mik,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPSRAWZ128rik,  Â  Â  Â  Â X86::VPSRAWZ128mik,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPSRLDZ128rik,  Â  Â  Â  Â X86::VPSRLDZ128mik,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPSRLQZ128rik,  Â  Â  Â  Â X86::VPSRLQZ128mik,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPSRLWZ128rik,  Â  Â  Â  Â X86::VPSRLWZ128mik,  Â  Â  Â  Â 0 },<br>
+  };<br>
+<br>
  Â for (X86MemoryFoldTableEntry Entry : MemoryFoldTable3) {<br>
  Â  Â AddTableEntry(<wbr>RegOp2MemOpTable3, MemOp2RegOpTable,<br>
  Â  Â  Â  Â  Â  Â  Â  Â  Â Entry.RegOp, Entry.MemOp,<br>
  Â  Â  Â  Â  Â  Â  Â  Â  Â // Index 3, folded load<br>
  Â  Â  Â  Â  Â  Â  Â  Â  Â Entry.Flags | TB_INDEX_3 | TB_FOLDED_LOAD);<br>
  Â }<br>
+  auto I = X86InstrFMA3Info::rm_begin();<br>
+  auto E = X86InstrFMA3Info::rm_end();<br>
+  for (; I != E; ++I) {<br>
+  Â  if (!I.getGroup()->isKMasked()) {<br>
+  Â  Â  // Intrinsic forms need to pass TB_NO_REVERSE.<br>
+  Â  Â  if (I.getGroup()->isIntrinsic()) {<br>
+  Â  Â  Â  AddTableEntry(<wbr>RegOp2MemOpTable3, MemOp2RegOpTable,<br>
+  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  I.getRegOpcode(), I.getMemOpcode(),<br>
+  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  TB_ALIGN_NONE | TB_INDEX_3 | TB_FOLDED_LOAD | TB_NO_REVERSE);<br>
+  Â  Â  } else {<br>
+  Â  Â  Â  AddTableEntry(<wbr>RegOp2MemOpTable3, MemOp2RegOpTable,<br>
+  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  I.getRegOpcode(), I.getMemOpcode(),<br>
+  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  TB_ALIGN_NONE | TB_INDEX_3 | TB_FOLDED_LOAD);<br>
+  Â  Â  }<br>
+  Â  }<br>
+  }<br>
+<br>
+  static const X86MemoryFoldTableEntry MemoryFoldTable4[] = {<br>
+  Â  // AVX-512 foldable masked instructions<br>
+  Â  { X86::VADDPDZrrk,  Â  Â  Â  Â X86::VADDPDZrmk,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VADDPSZrrk,  Â  Â  Â  Â X86::VADDPSZrmk,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VADDSDZrr_Intk,  Â  Â X86::VADDSDZrm_Intk,  Â  Â  Â TB_NO_REVERSE },<br>
+  Â  { X86::VADDSSZrr_Intk,  Â  Â X86::VADDSSZrm_Intk,  Â  Â  Â TB_NO_REVERSE },<br>
+  Â  { X86::VALIGNDZrrik,  Â  Â  Â X86::VALIGNDZrmik,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VALIGNQZrrik,  Â  Â  Â X86::VALIGNQZrmik,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VANDNPDZrrk,  Â  Â  Â  X86::VANDNPDZrmk,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VANDNPSZrrk,  Â  Â  Â  X86::VANDNPSZrmk,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VANDPDZrrk,  Â  Â  Â  Â X86::VANDPDZrmk,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VANDPSZrrk,  Â  Â  Â  Â X86::VANDPSZrmk,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VDIVPDZrrk,  Â  Â  Â  Â X86::VDIVPDZrmk,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VDIVPSZrrk,  Â  Â  Â  Â X86::VDIVPSZrmk,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VDIVSDZrr_Intk,  Â  Â X86::VDIVSDZrm_Intk,  Â  Â  Â TB_NO_REVERSE },<br>
+  Â  { X86::VDIVSSZrr_Intk,  Â  Â X86::VDIVSSZrm_Intk,  Â  Â  Â TB_NO_REVERSE },<br>
+  Â  { X86::VINSERTF32x4Zrrk,  Â X86::VINSERTF32x4Zrmk,  Â  Â 0 },<br>
+  Â  { X86::VINSERTF32x8Zrrk,  Â X86::VINSERTF32x8Zrmk,  Â  Â 0 },<br>
+  Â  { X86::VINSERTF64x2Zrrk,  Â X86::VINSERTF64x2Zrmk,  Â  Â 0 },<br>
+  Â  { X86::VINSERTF64x4Zrrk,  Â X86::VINSERTF64x4Zrmk,  Â  Â 0 },<br>
+  Â  { X86::VINSERTI32x4Zrrk,  Â X86::VINSERTI32x4Zrmk,  Â  Â 0 },<br>
+  Â  { X86::VINSERTI32x8Zrrk,  Â X86::VINSERTI32x8Zrmk,  Â  Â 0 },<br>
+  Â  { X86::VINSERTI64x2Zrrk,  Â X86::VINSERTI64x2Zrmk,  Â  Â 0 },<br>
+  Â  { X86::VINSERTI64x4Zrrk,  Â X86::VINSERTI64x4Zrmk,  Â  Â 0 },<br>
+  Â  { X86::VMAXCPDZrrk,  Â  Â  Â  X86::VMAXCPDZrmk,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VMAXCPSZrrk,  Â  Â  Â  X86::VMAXCPSZrmk,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VMAXPDZrrk,  Â  Â  Â  Â X86::VMAXPDZrmk,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VMAXPSZrrk,  Â  Â  Â  Â X86::VMAXPSZrmk,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VMAXSDZrr_Intk,  Â  Â X86::VMAXSDZrm_Intk,  Â  Â  Â 0 },<br>
+  Â  { X86::VMAXSSZrr_Intk,  Â  Â X86::VMAXSSZrm_Intk,  Â  Â  Â 0 },<br>
+  Â  { X86::VMINCPDZrrk,  Â  Â  Â  X86::VMINCPDZrmk,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VMINCPSZrrk,  Â  Â  Â  X86::VMINCPSZrmk,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VMINPDZrrk,  Â  Â  Â  Â X86::VMINPDZrmk,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VMINPSZrrk,  Â  Â  Â  Â X86::VMINPSZrmk,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VMINSDZrr_Intk,  Â  Â X86::VMINSDZrm_Intk,  Â  Â  Â 0 },<br>
+  Â  { X86::VMINSSZrr_Intk,  Â  Â X86::VMINSSZrm_Intk,  Â  Â  Â 0 },<br>
+  Â  { X86::VMULPDZrrk,  Â  Â  Â  Â X86::VMULPDZrmk,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VMULPSZrrk,  Â  Â  Â  Â X86::VMULPSZrmk,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VMULSDZrr_Intk,  Â  Â X86::VMULSDZrm_Intk,  Â  Â  Â TB_NO_REVERSE },<br>
+  Â  { X86::VMULSSZrr_Intk,  Â  Â X86::VMULSSZrm_Intk,  Â  Â  Â TB_NO_REVERSE },<br>
+  Â  { X86::VORPDZrrk,  Â  Â  Â  Â  X86::VORPDZrmk,  Â  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VORPSZrrk,  Â  Â  Â  Â  X86::VORPSZrmk,  Â  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPACKSSDWZrrk,  Â  Â  X86::VPACKSSDWZrmk,  Â  Â  Â  0 },<br>
+  Â  { X86::VPACKSSWBZrrk,  Â  Â  X86::VPACKSSWBZrmk,  Â  Â  Â  0 },<br>
+  Â  { X86::VPACKUSDWZrrk,  Â  Â  X86::VPACKUSDWZrmk,  Â  Â  Â  0 },<br>
+  Â  { X86::VPACKUSWBZrrk,  Â  Â  X86::VPACKUSWBZrmk,  Â  Â  Â  0 },<br>
+  Â  { X86::VPADDBZrrk,  Â  Â  Â  Â X86::VPADDBZrmk,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPADDDZrrk,  Â  Â  Â  Â X86::VPADDDZrmk,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPADDQZrrk,  Â  Â  Â  Â X86::VPADDQZrmk,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPADDSBZrrk,  Â  Â  Â  X86::VPADDSBZrmk,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPADDSWZrrk,  Â  Â  Â  X86::VPADDSWZrmk,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPADDUSBZrrk,  Â  Â  Â X86::VPADDUSBZrmk,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPADDUSWZrrk,  Â  Â  Â X86::VPADDUSWZrmk,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPADDWZrrk,  Â  Â  Â  Â X86::VPADDWZrmk,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPALIGNRZrrik,  Â  Â  X86::VPALIGNRZrmik,  Â  Â  Â  0 },<br>
+  Â  { X86::VPANDDZrrk,  Â  Â  Â  Â X86::VPANDDZrmk,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPANDNDZrrk,  Â  Â  Â  X86::VPANDNDZrmk,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPANDNQZrrk,  Â  Â  Â  X86::VPANDNQZrmk,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPANDQZrrk,  Â  Â  Â  Â X86::VPANDQZrmk,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPAVGBZrrk,  Â  Â  Â  Â X86::VPAVGBZrmk,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPAVGWZrrk,  Â  Â  Â  Â X86::VPAVGWZrmk,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPERMBZrrk,  Â  Â  Â  Â X86::VPERMBZrmk,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPERMDZrrk,  Â  Â  Â  Â X86::VPERMDZrmk,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPERMI2Brrk,  Â  Â  Â  X86::VPERMI2Brmk,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPERMI2Drrk,  Â  Â  Â  X86::VPERMI2Drmk,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPERMI2PSrrk,  Â  Â  Â X86::VPERMI2PSrmk,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPERMI2PDrrk,  Â  Â  Â X86::VPERMI2PDrmk,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPERMI2Qrrk,  Â  Â  Â  X86::VPERMI2Qrmk,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPERMI2Wrrk,  Â  Â  Â  X86::VPERMI2Wrmk,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPERMILPDZrrk,  Â  Â  X86::VPERMILPDZrmk,  Â  Â  Â  0 },<br>
+  Â  { X86::VPERMILPSZrrk,  Â  Â  X86::VPERMILPSZrmk,  Â  Â  Â  0 },<br>
+  Â  { X86::VPERMPDZrrk,  Â  Â  Â  X86::VPERMPDZrmk,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPERMPSZrrk,  Â  Â  Â  X86::VPERMPSZrmk,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPERMQZrrk,  Â  Â  Â  Â X86::VPERMQZrmk,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPERMT2Brrk,  Â  Â  Â  X86::VPERMT2Brmk,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPERMT2Drrk,  Â  Â  Â  X86::VPERMT2Drmk,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPERMT2PSrrk,  Â  Â  Â X86::VPERMT2PSrmk,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPERMT2PDrrk,  Â  Â  Â X86::VPERMT2PDrmk,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPERMT2Qrrk,  Â  Â  Â  X86::VPERMT2Qrmk,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPERMT2Wrrk,  Â  Â  Â  X86::VPERMT2Wrmk,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPERMWZrrk,  Â  Â  Â  Â X86::VPERMWZrmk,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPMADDUBSWZrrk,  Â  Â X86::VPMADDUBSWZrmk,  Â  Â  Â 0 },<br>
+  Â  { X86::VPMADDWDZrrk,  Â  Â  Â X86::VPMADDWDZrmk,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPMAXSBZrrk,  Â  Â  Â  X86::VPMAXSBZrmk,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPMAXSDZrrk,  Â  Â  Â  X86::VPMAXSDZrmk,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPMAXSQZrrk,  Â  Â  Â  X86::VPMAXSQZrmk,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPMAXSWZrrk,  Â  Â  Â  X86::VPMAXSWZrmk,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPMAXUBZrrk,  Â  Â  Â  X86::VPMAXUBZrmk,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPMAXUDZrrk,  Â  Â  Â  X86::VPMAXUDZrmk,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPMAXUQZrrk,  Â  Â  Â  X86::VPMAXUQZrmk,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPMAXUWZrrk,  Â  Â  Â  X86::VPMAXUWZrmk,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPMINSBZrrk,  Â  Â  Â  X86::VPMINSBZrmk,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPMINSDZrrk,  Â  Â  Â  X86::VPMINSDZrmk,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPMINSQZrrk,  Â  Â  Â  X86::VPMINSQZrmk,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPMINSWZrrk,  Â  Â  Â  X86::VPMINSWZrmk,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPMINUBZrrk,  Â  Â  Â  X86::VPMINUBZrmk,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPMINUDZrrk,  Â  Â  Â  X86::VPMINUDZrmk,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPMINUQZrrk,  Â  Â  Â  X86::VPMINUQZrmk,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPMINUWZrrk,  Â  Â  Â  X86::VPMINUWZrmk,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPMULDQZrrk,  Â  Â  Â  X86::VPMULDQZrmk,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPMULLDZrrk,  Â  Â  Â  X86::VPMULLDZrmk,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPMULLQZrrk,  Â  Â  Â  X86::VPMULLQZrmk,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPMULLWZrrk,  Â  Â  Â  X86::VPMULLWZrmk,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPMULUDQZrrk,  Â  Â  Â X86::VPMULUDQZrmk,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPORDZrrk,  Â  Â  Â  Â  X86::VPORDZrmk,  Â  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPORQZrrk,  Â  Â  Â  Â  X86::VPORQZrmk,  Â  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPSHUFBZrrk,  Â  Â  Â  X86::VPSHUFBZrmk,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPSLLDZrrk,  Â  Â  Â  Â X86::VPSLLDZrmk,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPSLLQZrrk,  Â  Â  Â  Â X86::VPSLLQZrmk,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPSLLVDZrrk,  Â  Â  Â  X86::VPSLLVDZrmk,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPSLLVQZrrk,  Â  Â  Â  X86::VPSLLVQZrmk,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPSLLVWZrrk,  Â  Â  Â  X86::VPSLLVWZrmk,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPSLLWZrrk,  Â  Â  Â  Â X86::VPSLLWZrmk,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPSRADZrrk,  Â  Â  Â  Â X86::VPSRADZrmk,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPSRAQZrrk,  Â  Â  Â  Â X86::VPSRAQZrmk,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPSRAVDZrrk,  Â  Â  Â  X86::VPSRAVDZrmk,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPSRAVQZrrk,  Â  Â  Â  X86::VPSRAVQZrmk,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPSRAVWZrrk,  Â  Â  Â  X86::VPSRAVWZrmk,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPSRAWZrrk,  Â  Â  Â  Â X86::VPSRAWZrmk,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPSRLDZrrk,  Â  Â  Â  Â X86::VPSRLDZrmk,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPSRLQZrrk,  Â  Â  Â  Â X86::VPSRLQZrmk,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPSRLVDZrrk,  Â  Â  Â  X86::VPSRLVDZrmk,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPSRLVQZrrk,  Â  Â  Â  X86::VPSRLVQZrmk,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPSRLVWZrrk,  Â  Â  Â  X86::VPSRLVWZrmk,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPSRLWZrrk,  Â  Â  Â  Â X86::VPSRLWZrmk,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPSUBBZrrk,  Â  Â  Â  Â X86::VPSUBBZrmk,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPSUBDZrrk,  Â  Â  Â  Â X86::VPSUBDZrmk,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPSUBQZrrk,  Â  Â  Â  Â X86::VPSUBQZrmk,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPSUBSBZrrk,  Â  Â  Â  X86::VPSUBSBZrmk,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPSUBSWZrrk,  Â  Â  Â  X86::VPSUBSWZrmk,  Â  Â  Â  Â  0 },<br>
+  Â  { X86::VPSUBUSBZrrk,  Â  Â  Â X86::VPSUBUSBZrmk,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPSUBUSWZrrk,  Â  Â  Â X86::VPSUBUSWZrmk,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPTERNLOGDZrrik,  Â  X86::VPTERNLOGDZrmik,  Â  Â  0 },<br>
+  Â  { X86::VPTERNLOGQZrrik,  Â  X86::VPTERNLOGQZrmik,  Â  Â  0 },<br>
+  Â  { X86::VPUNPCKHBWZrrk,  Â  Â X86::VPUNPCKHBWZrmk,  Â  Â  Â 0 },<br>
+  Â  { X86::VPUNPCKHDQZrrk,  Â  Â X86::VPUNPCKHDQZrmk,  Â  Â  Â 0 },<br>
+  Â  { X86::VPUNPCKHQDQZrrk,  Â  X86::VPUNPCKHQDQZrmk,  Â  Â  0 },<br>
+  Â  { X86::VPUNPCKHWDZrrk,  Â  Â X86::VPUNPCKHWDZrmk,  Â  Â  Â 0 },<br>
+  Â  { X86::VPUNPCKLBWZrrk,  Â  Â X86::VPUNPCKLBWZrmk,  Â  Â  Â 0 },<br>
+  Â  { X86::VPUNPCKLDQZrrk,  Â  Â X86::VPUNPCKLDQZrmk,  Â  Â  Â 0 },<br>
+  Â  { X86::VPUNPCKLQDQZrrk,  Â  X86::VPUNPCKLQDQZrmk,  Â  Â  0 },<br>
+  Â  { X86::VPUNPCKLWDZrrk,  Â  Â X86::VPUNPCKLWDZrmk,  Â  Â  Â 0 },<br>
+  Â  { X86::VPXORDZrrk,  Â  Â  Â  Â X86::VPXORDZrmk,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPXORQZrrk,  Â  Â  Â  Â X86::VPXORQZrmk,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VSHUFPDZrrik,  Â  Â  Â X86::VSHUFPDZrmik,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VSHUFPSZrrik,  Â  Â  Â X86::VSHUFPSZrmik,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VSUBPDZrrk,  Â  Â  Â  Â X86::VSUBPDZrmk,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VSUBPSZrrk,  Â  Â  Â  Â X86::VSUBPSZrmk,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VSUBSDZrr_Intk,  Â  Â X86::VSUBSDZrm_Intk,  Â  Â  Â TB_NO_REVERSE },<br>
+  Â  { X86::VSUBSSZrr_Intk,  Â  Â X86::VSUBSSZrm_Intk,  Â  Â  Â TB_NO_REVERSE },<br>
+  Â  { X86::VUNPCKHPDZrrk,  Â  Â  X86::VUNPCKHPDZrmk,  Â  Â  Â  0 },<br>
+  Â  { X86::VUNPCKHPSZrrk,  Â  Â  X86::VUNPCKHPSZrmk,  Â  Â  Â  0 },<br>
+  Â  { X86::VUNPCKLPDZrrk,  Â  Â  X86::VUNPCKLPDZrmk,  Â  Â  Â  0 },<br>
+  Â  { X86::VUNPCKLPSZrrk,  Â  Â  X86::VUNPCKLPSZrmk,  Â  Â  Â  0 },<br>
+  Â  { X86::VXORPDZrrk,  Â  Â  Â  Â X86::VXORPDZrmk,  Â  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VXORPSZrrk,  Â  Â  Â  Â X86::VXORPSZrmk,  Â  Â  Â  Â  Â 0 },<br>
+<br>
+  Â  // AVX-512{F,VL} foldable masked instructions 256-bit<br>
+  Â  { X86::VADDPDZ256rrk,  Â  Â  X86::VADDPDZ256rmk,  Â  Â  Â  0 },<br>
+  Â  { X86::VADDPSZ256rrk,  Â  Â  X86::VADDPSZ256rmk,  Â  Â  Â  0 },<br>
+  Â  { X86::VALIGNDZ256rrik,  Â  X86::VALIGNDZ256rmik,  Â  Â  0 },<br>
+  Â  { X86::VALIGNQZ256rrik,  Â  X86::VALIGNQZ256rmik,  Â  Â  0 },<br>
+  Â  { X86::VANDNPDZ256rrk,  Â  Â X86::VANDNPDZ256rmk,  Â  Â  Â 0 },<br>
+  Â  { X86::VANDNPSZ256rrk,  Â  Â X86::VANDNPSZ256rmk,  Â  Â  Â 0 },<br>
+  Â  { X86::VANDPDZ256rrk,  Â  Â  X86::VANDPDZ256rmk,  Â  Â  Â  0 },<br>
+  Â  { X86::VANDPSZ256rrk,  Â  Â  X86::VANDPSZ256rmk,  Â  Â  Â  0 },<br>
+  Â  { X86::VDIVPDZ256rrk,  Â  Â  X86::VDIVPDZ256rmk,  Â  Â  Â  0 },<br>
+  Â  { X86::VDIVPSZ256rrk,  Â  Â  X86::VDIVPSZ256rmk,  Â  Â  Â  0 },<br>
+  Â  { X86::VINSERTF32x4Z256rrk,X86::<wbr>VINSERTF32x4Z256rmk,  0 },<br>
+  Â  { X86::VINSERTF64x2Z256rrk,X86::<wbr>VINSERTF64x2Z256rmk,  0 },<br>
+  Â  { X86::VINSERTI32x4Z256rrk,X86::<wbr>VINSERTI32x4Z256rmk,  0 },<br>
+  Â  { X86::VINSERTI64x2Z256rrk,X86::<wbr>VINSERTI64x2Z256rmk,  0 },<br>
+  Â  { X86::VMAXCPDZ256rrk,  Â  Â X86::VMAXCPDZ256rmk,  Â  Â  Â 0 },<br>
+  Â  { X86::VMAXCPSZ256rrk,  Â  Â X86::VMAXCPSZ256rmk,  Â  Â  Â 0 },<br>
+  Â  { X86::VMAXPDZ256rrk,  Â  Â  X86::VMAXPDZ256rmk,  Â  Â  Â  0 },<br>
+  Â  { X86::VMAXPSZ256rrk,  Â  Â  X86::VMAXPSZ256rmk,  Â  Â  Â  0 },<br>
+  Â  { X86::VMINCPDZ256rrk,  Â  Â X86::VMINCPDZ256rmk,  Â  Â  Â 0 },<br>
+  Â  { X86::VMINCPSZ256rrk,  Â  Â X86::VMINCPSZ256rmk,  Â  Â  Â 0 },<br>
+  Â  { X86::VMINPDZ256rrk,  Â  Â  X86::VMINPDZ256rmk,  Â  Â  Â  0 },<br>
+  Â  { X86::VMINPSZ256rrk,  Â  Â  X86::VMINPSZ256rmk,  Â  Â  Â  0 },<br>
+  Â  { X86::VMULPDZ256rrk,  Â  Â  X86::VMULPDZ256rmk,  Â  Â  Â  0 },<br>
+  Â  { X86::VMULPSZ256rrk,  Â  Â  X86::VMULPSZ256rmk,  Â  Â  Â  0 },<br>
+  Â  { X86::VORPDZ256rrk,  Â  Â  Â X86::VORPDZ256rmk,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VORPSZ256rrk,  Â  Â  Â X86::VORPSZ256rmk,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPACKSSDWZ256rrk,  Â X86::VPACKSSDWZ256rmk,  Â  Â 0 },<br>
+  Â  { X86::VPACKSSWBZ256rrk,  Â X86::VPACKSSWBZ256rmk,  Â  Â 0 },<br>
+  Â  { X86::VPACKUSDWZ256rrk,  Â X86::VPACKUSDWZ256rmk,  Â  Â 0 },<br>
+  Â  { X86::VPACKUSWBZ256rrk,  Â X86::VPACKUSWBZ256rmk,  Â  Â 0 },<br>
+  Â  { X86::VPADDBZ256rrk,  Â  Â  X86::VPADDBZ256rmk,  Â  Â  Â  0 },<br>
+  Â  { X86::VPADDDZ256rrk,  Â  Â  X86::VPADDDZ256rmk,  Â  Â  Â  0 },<br>
+  Â  { X86::VPADDQZ256rrk,  Â  Â  X86::VPADDQZ256rmk,  Â  Â  Â  0 },<br>
+  Â  { X86::VPADDSBZ256rrk,  Â  Â X86::VPADDSBZ256rmk,  Â  Â  Â 0 },<br>
+  Â  { X86::VPADDSWZ256rrk,  Â  Â X86::VPADDSWZ256rmk,  Â  Â  Â 0 },<br>
+  Â  { X86::VPADDUSBZ256rrk,  Â  X86::VPADDUSBZ256rmk,  Â  Â  0 },<br>
+  Â  { X86::VPADDUSWZ256rrk,  Â  X86::VPADDUSWZ256rmk,  Â  Â  0 },<br>
+  Â  { X86::VPADDWZ256rrk,  Â  Â  X86::VPADDWZ256rmk,  Â  Â  Â  0 },<br>
+  Â  { X86::VPALIGNRZ256rrik,  Â X86::VPALIGNRZ256rmik,  Â  Â 0 },<br>
+  Â  { X86::VPANDDZ256rrk,  Â  Â  X86::VPANDDZ256rmk,  Â  Â  Â  0 },<br>
+  Â  { X86::VPANDNDZ256rrk,  Â  Â X86::VPANDNDZ256rmk,  Â  Â  Â 0 },<br>
+  Â  { X86::VPANDNQZ256rrk,  Â  Â X86::VPANDNQZ256rmk,  Â  Â  Â 0 },<br>
+  Â  { X86::VPANDQZ256rrk,  Â  Â  X86::VPANDQZ256rmk,  Â  Â  Â  0 },<br>
+  Â  { X86::VPAVGBZ256rrk,  Â  Â  X86::VPAVGBZ256rmk,  Â  Â  Â  0 },<br>
+  Â  { X86::VPAVGWZ256rrk,  Â  Â  X86::VPAVGWZ256rmk,  Â  Â  Â  0 },<br>
+  Â  { X86::VPERMBZ256rrk,  Â  Â  X86::VPERMBZ256rmk,  Â  Â  Â  0 },<br>
+  Â  { X86::VPERMDZ256rrk,  Â  Â  X86::VPERMDZ256rmk,  Â  Â  Â  0 },<br>
+  Â  { X86::VPERMI2B256rrk,  Â  Â X86::VPERMI2B256rmk,  Â  Â  Â 0 },<br>
+  Â  { X86::VPERMI2D256rrk,  Â  Â X86::VPERMI2D256rmk,  Â  Â  Â 0 },<br>
+  Â  { X86::VPERMI2PD256rrk,  Â  X86::VPERMI2PD256rmk,  Â  Â  0 },<br>
+  Â  { X86::VPERMI2PS256rrk,  Â  X86::VPERMI2PS256rmk,  Â  Â  0 },<br>
+  Â  { X86::VPERMI2Q256rrk,  Â  Â X86::VPERMI2Q256rmk,  Â  Â  Â 0 },<br>
+  Â  { X86::VPERMI2W256rrk,  Â  Â X86::VPERMI2W256rmk,  Â  Â  Â 0 },<br>
+  Â  { X86::VPERMILPDZ256rrk,  Â X86::VPERMILPDZ256rmk,  Â  Â 0 },<br>
+  Â  { X86::VPERMILPSZ256rrk,  Â X86::VPERMILPSZ256rmk,  Â  Â 0 },<br>
+  Â  { X86::VPERMPDZ256rrk,  Â  Â X86::VPERMPDZ256rmk,  Â  Â  Â 0 },<br>
+  Â  { X86::VPERMPSZ256rrk,  Â  Â X86::VPERMPSZ256rmk,  Â  Â  Â 0 },<br>
+  Â  { X86::VPERMQZ256rrk,  Â  Â  X86::VPERMQZ256rmk,  Â  Â  Â  0 },<br>
+  Â  { X86::VPERMT2B256rrk,  Â  Â X86::VPERMT2B256rmk,  Â  Â  Â 0 },<br>
+  Â  { X86::VPERMT2D256rrk,  Â  Â X86::VPERMT2D256rmk,  Â  Â  Â 0 },<br>
+  Â  { X86::VPERMT2PD256rrk,  Â  X86::VPERMT2PD256rmk,  Â  Â  0 },<br>
+  Â  { X86::VPERMT2PS256rrk,  Â  X86::VPERMT2PS256rmk,  Â  Â  0 },<br>
+  Â  { X86::VPERMT2Q256rrk,  Â  Â X86::VPERMT2Q256rmk,  Â  Â  Â 0 },<br>
+  Â  { X86::VPERMT2W256rrk,  Â  Â X86::VPERMT2W256rmk,  Â  Â  Â 0 },<br>
+  Â  { X86::VPERMWZ256rrk,  Â  Â  X86::VPERMWZ256rmk,  Â  Â  Â  0 },<br>
+  Â  { X86::VPMADDUBSWZ256rrk,  X86::VPMADDUBSWZ256rmk,  Â  0 },<br>
+  Â  { X86::VPMADDWDZ256rrk,  Â  X86::VPMADDWDZ256rmk,  Â  Â  0 },<br>
+  Â  { X86::VPMAXSBZ256rrk,  Â  Â X86::VPMAXSBZ256rmk,  Â  Â  Â 0 },<br>
+  Â  { X86::VPMAXSDZ256rrk,  Â  Â X86::VPMAXSDZ256rmk,  Â  Â  Â 0 },<br>
+  Â  { X86::VPMAXSQZ256rrk,  Â  Â X86::VPMAXSQZ256rmk,  Â  Â  Â 0 },<br>
+  Â  { X86::VPMAXSWZ256rrk,  Â  Â X86::VPMAXSWZ256rmk,  Â  Â  Â 0 },<br>
+  Â  { X86::VPMAXUBZ256rrk,  Â  Â X86::VPMAXUBZ256rmk,  Â  Â  Â 0 },<br>
+  Â  { X86::VPMAXUDZ256rrk,  Â  Â X86::VPMAXUDZ256rmk,  Â  Â  Â 0 },<br>
+  Â  { X86::VPMAXUQZ256rrk,  Â  Â X86::VPMAXUQZ256rmk,  Â  Â  Â 0 },<br>
+  Â  { X86::VPMAXUWZ256rrk,  Â  Â X86::VPMAXUWZ256rmk,  Â  Â  Â 0 },<br>
+  Â  { X86::VPMINSBZ256rrk,  Â  Â X86::VPMINSBZ256rmk,  Â  Â  Â 0 },<br>
+  Â  { X86::VPMINSDZ256rrk,  Â  Â X86::VPMINSDZ256rmk,  Â  Â  Â 0 },<br>
+  Â  { X86::VPMINSQZ256rrk,  Â  Â X86::VPMINSQZ256rmk,  Â  Â  Â 0 },<br>
+  Â  { X86::VPMINSWZ256rrk,  Â  Â X86::VPMINSWZ256rmk,  Â  Â  Â 0 },<br>
+  Â  { X86::VPMINUBZ256rrk,  Â  Â X86::VPMINUBZ256rmk,  Â  Â  Â 0 },<br>
+  Â  { X86::VPMINUDZ256rrk,  Â  Â X86::VPMINUDZ256rmk,  Â  Â  Â 0 },<br>
+  Â  { X86::VPMINUQZ256rrk,  Â  Â X86::VPMINUQZ256rmk,  Â  Â  Â 0 },<br>
+  Â  { X86::VPMINUWZ256rrk,  Â  Â X86::VPMINUWZ256rmk,  Â  Â  Â 0 },<br>
+  Â  { X86::VPMULDQZ256rrk,  Â  Â X86::VPMULDQZ256rmk,  Â  Â  Â 0 },<br>
+  Â  { X86::VPMULLDZ256rrk,  Â  Â X86::VPMULLDZ256rmk,  Â  Â  Â 0 },<br>
+  Â  { X86::VPMULLQZ256rrk,  Â  Â X86::VPMULLQZ256rmk,  Â  Â  Â 0 },<br>
+  Â  { X86::VPMULLWZ256rrk,  Â  Â X86::VPMULLWZ256rmk,  Â  Â  Â 0 },<br>
+  Â  { X86::VPMULUDQZ256rrk,  Â  X86::VPMULUDQZ256rmk,  Â  Â  0 },<br>
+  Â  { X86::VPORDZ256rrk,  Â  Â  Â X86::VPORDZ256rmk,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPORQZ256rrk,  Â  Â  Â X86::VPORQZ256rmk,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPSHUFBZ256rrk,  Â  Â X86::VPSHUFBZ256rmk,  Â  Â  Â 0 },<br>
+  Â  { X86::VPSLLDZ256rrk,  Â  Â  X86::VPSLLDZ256rmk,  Â  Â  Â  0 },<br>
+  Â  { X86::VPSLLQZ256rrk,  Â  Â  X86::VPSLLQZ256rmk,  Â  Â  Â  0 },<br>
+  Â  { X86::VPSLLVDZ256rrk,  Â  Â X86::VPSLLVDZ256rmk,  Â  Â  Â 0 },<br>
+  Â  { X86::VPSLLVQZ256rrk,  Â  Â X86::VPSLLVQZ256rmk,  Â  Â  Â 0 },<br>
+  Â  { X86::VPSLLVWZ256rrk,  Â  Â X86::VPSLLVWZ256rmk,  Â  Â  Â 0 },<br>
+  Â  { X86::VPSLLWZ256rrk,  Â  Â  X86::VPSLLWZ256rmk,  Â  Â  Â  0 },<br>
+  Â  { X86::VPSRADZ256rrk,  Â  Â  X86::VPSRADZ256rmk,  Â  Â  Â  0 },<br>
+  Â  { X86::VPSRAQZ256rrk,  Â  Â  X86::VPSRAQZ256rmk,  Â  Â  Â  0 },<br>
+  Â  { X86::VPSRAVDZ256rrk,  Â  Â X86::VPSRAVDZ256rmk,  Â  Â  Â 0 },<br>
+  Â  { X86::VPSRAVQZ256rrk,  Â  Â X86::VPSRAVQZ256rmk,  Â  Â  Â 0 },<br>
+  Â  { X86::VPSRAVWZ256rrk,  Â  Â X86::VPSRAVWZ256rmk,  Â  Â  Â 0 },<br>
+  Â  { X86::VPSRAWZ256rrk,  Â  Â  X86::VPSRAWZ256rmk,  Â  Â  Â  0 },<br>
+  Â  { X86::VPSRLDZ256rrk,  Â  Â  X86::VPSRLDZ256rmk,  Â  Â  Â  0 },<br>
+  Â  { X86::VPSRLQZ256rrk,  Â  Â  X86::VPSRLQZ256rmk,  Â  Â  Â  0 },<br>
+  Â  { X86::VPSRLVDZ256rrk,  Â  Â X86::VPSRLVDZ256rmk,  Â  Â  Â 0 },<br>
+  Â  { X86::VPSRLVQZ256rrk,  Â  Â X86::VPSRLVQZ256rmk,  Â  Â  Â 0 },<br>
+  Â  { X86::VPSRLVWZ256rrk,  Â  Â X86::VPSRLVWZ256rmk,  Â  Â  Â 0 },<br>
+  Â  { X86::VPSRLWZ256rrk,  Â  Â  X86::VPSRLWZ256rmk,  Â  Â  Â  0 },<br>
+  Â  { X86::VPSUBBZ256rrk,  Â  Â  X86::VPSUBBZ256rmk,  Â  Â  Â  0 },<br>
+  Â  { X86::VPSUBDZ256rrk,  Â  Â  X86::VPSUBDZ256rmk,  Â  Â  Â  0 },<br>
+  Â  { X86::VPSUBQZ256rrk,  Â  Â  X86::VPSUBQZ256rmk,  Â  Â  Â  0 },<br>
+  Â  { X86::VPSUBSBZ256rrk,  Â  Â X86::VPSUBSBZ256rmk,  Â  Â  Â 0 },<br>
+  Â  { X86::VPSUBSWZ256rrk,  Â  Â X86::VPSUBSWZ256rmk,  Â  Â  Â 0 },<br>
+  Â  { X86::VPSUBUSBZ256rrk,  Â  X86::VPSUBUSBZ256rmk,  Â  Â  0 },<br>
+  Â  { X86::VPSUBUSWZ256rrk,  Â  X86::VPSUBUSWZ256rmk,  Â  Â  0 },<br>
+  Â  { X86::VPSUBWZ256rrk,  Â  Â  X86::VPSUBWZ256rmk,  Â  Â  Â  0 },<br>
+  Â  { X86::VPTERNLOGDZ256rrik, X86::VPTERNLOGDZ256rmik,  Â 0 },<br>
+  Â  { X86::VPTERNLOGQZ256rrik, X86::VPTERNLOGQZ256rmik,  Â 0 },<br>
+  Â  { X86::VPUNPCKHBWZ256rrk,  X86::VPUNPCKHBWZ256rmk,  Â  0 },<br>
+  Â  { X86::VPUNPCKHDQZ256rrk,  X86::VPUNPCKHDQZ256rmk,  Â  0 },<br>
+  Â  { X86::VPUNPCKHQDQZ256rrk, X86::VPUNPCKHQDQZ256rmk,  Â 0 },<br>
+  Â  { X86::VPUNPCKHWDZ256rrk,  X86::VPUNPCKHWDZ256rmk,  Â  0 },<br>
+  Â  { X86::VPUNPCKLBWZ256rrk,  X86::VPUNPCKLBWZ256rmk,  Â  0 },<br>
+  Â  { X86::VPUNPCKLDQZ256rrk,  X86::VPUNPCKLDQZ256rmk,  Â  0 },<br>
+  Â  { X86::VPUNPCKLQDQZ256rrk, X86::VPUNPCKLQDQZ256rmk,  Â 0 },<br>
+  Â  { X86::VPUNPCKLWDZ256rrk,  X86::VPUNPCKLWDZ256rmk,  Â  0 },<br>
+  Â  { X86::VPXORDZ256rrk,  Â  Â  X86::VPXORDZ256rmk,  Â  Â  Â  0 },<br>
+  Â  { X86::VPXORQZ256rrk,  Â  Â  X86::VPXORQZ256rmk,  Â  Â  Â  0 },<br>
+  Â  { X86::VSHUFPDZ256rrik,  Â  X86::VSHUFPDZ256rmik,  Â  Â  0 },<br>
+  Â  { X86::VSHUFPSZ256rrik,  Â  X86::VSHUFPSZ256rmik,  Â  Â  0 },<br>
+  Â  { X86::VSUBPDZ256rrk,  Â  Â  X86::VSUBPDZ256rmk,  Â  Â  Â  0 },<br>
+  Â  { X86::VSUBPSZ256rrk,  Â  Â  X86::VSUBPSZ256rmk,  Â  Â  Â  0 },<br>
+  Â  { X86::VUNPCKHPDZ256rrk,  Â X86::VUNPCKHPDZ256rmk,  Â  Â 0 },<br>
+  Â  { X86::VUNPCKHPSZ256rrk,  Â X86::VUNPCKHPSZ256rmk,  Â  Â 0 },<br>
+  Â  { X86::VUNPCKLPDZ256rrk,  Â X86::VUNPCKLPDZ256rmk,  Â  Â 0 },<br>
+  Â  { X86::VUNPCKLPSZ256rrk,  Â X86::VUNPCKLPSZ256rmk,  Â  Â 0 },<br>
+  Â  { X86::VXORPDZ256rrk,  Â  Â  X86::VXORPDZ256rmk,  Â  Â  Â  0 },<br>
+  Â  { X86::VXORPSZ256rrk,  Â  Â  X86::VXORPSZ256rmk,  Â  Â  Â  0 },<br>
+<br>
+  Â  // AVX-512{F,VL} foldable instructions 128-bit<br>
+  Â  { X86::VADDPDZ128rrk,  Â  Â  X86::VADDPDZ128rmk,  Â  Â  Â  0 },<br>
+  Â  { X86::VADDPSZ128rrk,  Â  Â  X86::VADDPSZ128rmk,  Â  Â  Â  0 },<br>
+  Â  { X86::VALIGNDZ128rrik,  Â  X86::VALIGNDZ128rmik,  Â  Â  0 },<br>
+  Â  { X86::VALIGNQZ128rrik,  Â  X86::VALIGNQZ128rmik,  Â  Â  0 },<br>
+  Â  { X86::VANDNPDZ128rrk,  Â  Â X86::VANDNPDZ128rmk,  Â  Â  Â 0 },<br>
+  Â  { X86::VANDNPSZ128rrk,  Â  Â X86::VANDNPSZ128rmk,  Â  Â  Â 0 },<br>
+  Â  { X86::VANDPDZ128rrk,  Â  Â  X86::VANDPDZ128rmk,  Â  Â  Â  0 },<br>
+  Â  { X86::VANDPSZ128rrk,  Â  Â  X86::VANDPSZ128rmk,  Â  Â  Â  0 },<br>
+  Â  { X86::VDIVPDZ128rrk,  Â  Â  X86::VDIVPDZ128rmk,  Â  Â  Â  0 },<br>
+  Â  { X86::VDIVPSZ128rrk,  Â  Â  X86::VDIVPSZ128rmk,  Â  Â  Â  0 },<br>
+  Â  { X86::VMAXCPDZ128rrk,  Â  Â X86::VMAXCPDZ128rmk,  Â  Â  Â 0 },<br>
+  Â  { X86::VMAXCPSZ128rrk,  Â  Â X86::VMAXCPSZ128rmk,  Â  Â  Â 0 },<br>
+  Â  { X86::VMAXPDZ128rrk,  Â  Â  X86::VMAXPDZ128rmk,  Â  Â  Â  0 },<br>
+  Â  { X86::VMAXPSZ128rrk,  Â  Â  X86::VMAXPSZ128rmk,  Â  Â  Â  0 },<br>
+  Â  { X86::VMINCPDZ128rrk,  Â  Â X86::VMINCPDZ128rmk,  Â  Â  Â 0 },<br>
+  Â  { X86::VMINCPSZ128rrk,  Â  Â X86::VMINCPSZ128rmk,  Â  Â  Â 0 },<br>
+  Â  { X86::VMINPDZ128rrk,  Â  Â  X86::VMINPDZ128rmk,  Â  Â  Â  0 },<br>
+  Â  { X86::VMINPSZ128rrk,  Â  Â  X86::VMINPSZ128rmk,  Â  Â  Â  0 },<br>
+  Â  { X86::VMULPDZ128rrk,  Â  Â  X86::VMULPDZ128rmk,  Â  Â  Â  0 },<br>
+  Â  { X86::VMULPSZ128rrk,  Â  Â  X86::VMULPSZ128rmk,  Â  Â  Â  0 },<br>
+  Â  { X86::VORPDZ128rrk,  Â  Â  Â X86::VORPDZ128rmk,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VORPSZ128rrk,  Â  Â  Â X86::VORPSZ128rmk,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPACKSSDWZ128rrk,  Â X86::VPACKSSDWZ128rmk,  Â  Â 0 },<br>
+  Â  { X86::VPACKSSWBZ128rrk,  Â X86::VPACKSSWBZ128rmk,  Â  Â 0 },<br>
+  Â  { X86::VPACKUSDWZ128rrk,  Â X86::VPACKUSDWZ128rmk,  Â  Â 0 },<br>
+  Â  { X86::VPACKUSWBZ128rrk,  Â X86::VPACKUSWBZ128rmk,  Â  Â 0 },<br>
+  Â  { X86::VPADDBZ128rrk,  Â  Â  X86::VPADDBZ128rmk,  Â  Â  Â  0 },<br>
+  Â  { X86::VPADDDZ128rrk,  Â  Â  X86::VPADDDZ128rmk,  Â  Â  Â  0 },<br>
+  Â  { X86::VPADDQZ128rrk,  Â  Â  X86::VPADDQZ128rmk,  Â  Â  Â  0 },<br>
+  Â  { X86::VPADDSBZ128rrk,  Â  Â X86::VPADDSBZ128rmk,  Â  Â  Â 0 },<br>
+  Â  { X86::VPADDSWZ128rrk,  Â  Â X86::VPADDSWZ128rmk,  Â  Â  Â 0 },<br>
+  Â  { X86::VPADDUSBZ128rrk,  Â  X86::VPADDUSBZ128rmk,  Â  Â  0 },<br>
+  Â  { X86::VPADDUSWZ128rrk,  Â  X86::VPADDUSWZ128rmk,  Â  Â  0 },<br>
+  Â  { X86::VPADDWZ128rrk,  Â  Â  X86::VPADDWZ128rmk,  Â  Â  Â  0 },<br>
+  Â  { X86::VPALIGNRZ128rrik,  Â X86::VPALIGNRZ128rmik,  Â  Â 0 },<br>
+  Â  { X86::VPANDDZ128rrk,  Â  Â  X86::VPANDDZ128rmk,  Â  Â  Â  0 },<br>
+  Â  { X86::VPANDNDZ128rrk,  Â  Â X86::VPANDNDZ128rmk,  Â  Â  Â 0 },<br>
+  Â  { X86::VPANDNQZ128rrk,  Â  Â X86::VPANDNQZ128rmk,  Â  Â  Â 0 },<br>
+  Â  { X86::VPANDQZ128rrk,  Â  Â  X86::VPANDQZ128rmk,  Â  Â  Â  0 },<br>
+  Â  { X86::VPAVGBZ128rrk,  Â  Â  X86::VPAVGBZ128rmk,  Â  Â  Â  0 },<br>
+  Â  { X86::VPAVGWZ128rrk,  Â  Â  X86::VPAVGWZ128rmk,  Â  Â  Â  0 },<br>
+  Â  { X86::VPERMBZ128rrk,  Â  Â  X86::VPERMBZ128rmk,  Â  Â  Â  0 },<br>
+  Â  { X86::VPERMI2B128rrk,  Â  Â X86::VPERMI2B128rmk,  Â  Â  Â 0 },<br>
+  Â  { X86::VPERMI2D128rrk,  Â  Â X86::VPERMI2D128rmk,  Â  Â  Â 0 },<br>
+  Â  { X86::VPERMI2PD128rrk,  Â  X86::VPERMI2PD128rmk,  Â  Â  0 },<br>
+  Â  { X86::VPERMI2PS128rrk,  Â  X86::VPERMI2PS128rmk,  Â  Â  0 },<br>
+  Â  { X86::VPERMI2Q128rrk,  Â  Â X86::VPERMI2Q128rmk,  Â  Â  Â 0 },<br>
+  Â  { X86::VPERMI2W128rrk,  Â  Â X86::VPERMI2W128rmk,  Â  Â  Â 0 },<br>
+  Â  { X86::VPERMILPDZ128rrk,  Â X86::VPERMILPDZ128rmk,  Â  Â 0 },<br>
+  Â  { X86::VPERMILPSZ128rrk,  Â X86::VPERMILPSZ128rmk,  Â  Â 0 },<br>
+  Â  { X86::VPERMT2B128rrk,  Â  Â X86::VPERMT2B128rmk,  Â  Â  Â 0 },<br>
+  Â  { X86::VPERMT2D128rrk,  Â  Â X86::VPERMT2D128rmk,  Â  Â  Â 0 },<br>
+  Â  { X86::VPERMT2PD128rrk,  Â  X86::VPERMT2PD128rmk,  Â  Â  0 },<br>
+  Â  { X86::VPERMT2PS128rrk,  Â  X86::VPERMT2PS128rmk,  Â  Â  0 },<br>
+  Â  { X86::VPERMT2Q128rrk,  Â  Â X86::VPERMT2Q128rmk,  Â  Â  Â 0 },<br>
+  Â  { X86::VPERMT2W128rrk,  Â  Â X86::VPERMT2W128rmk,  Â  Â  Â 0 },<br>
+  Â  { X86::VPERMWZ128rrk,  Â  Â  X86::VPERMWZ128rmk,  Â  Â  Â  0 },<br>
+  Â  { X86::VPMADDUBSWZ128rrk,  X86::VPMADDUBSWZ128rmk,  Â  0 },<br>
+  Â  { X86::VPMADDWDZ128rrk,  Â  X86::VPMADDWDZ128rmk,  Â  Â  0 },<br>
+  Â  { X86::VPMAXSBZ128rrk,  Â  Â X86::VPMAXSBZ128rmk,  Â  Â  Â 0 },<br>
+  Â  { X86::VPMAXSDZ128rrk,  Â  Â X86::VPMAXSDZ128rmk,  Â  Â  Â 0 },<br>
+  Â  { X86::VPMAXSQZ128rrk,  Â  Â X86::VPMAXSQZ128rmk,  Â  Â  Â 0 },<br>
+  Â  { X86::VPMAXSWZ128rrk,  Â  Â X86::VPMAXSWZ128rmk,  Â  Â  Â 0 },<br>
+  Â  { X86::VPMAXUBZ128rrk,  Â  Â X86::VPMAXUBZ128rmk,  Â  Â  Â 0 },<br>
+  Â  { X86::VPMAXUDZ128rrk,  Â  Â X86::VPMAXUDZ128rmk,  Â  Â  Â 0 },<br>
+  Â  { X86::VPMAXUQZ128rrk,  Â  Â X86::VPMAXUQZ128rmk,  Â  Â  Â 0 },<br>
+  Â  { X86::VPMAXUWZ128rrk,  Â  Â X86::VPMAXUWZ128rmk,  Â  Â  Â 0 },<br>
+  Â  { X86::VPMINSBZ128rrk,  Â  Â X86::VPMINSBZ128rmk,  Â  Â  Â 0 },<br>
+  Â  { X86::VPMINSDZ128rrk,  Â  Â X86::VPMINSDZ128rmk,  Â  Â  Â 0 },<br>
+  Â  { X86::VPMINSQZ128rrk,  Â  Â X86::VPMINSQZ128rmk,  Â  Â  Â 0 },<br>
+  Â  { X86::VPMINSWZ128rrk,  Â  Â X86::VPMINSWZ128rmk,  Â  Â  Â 0 },<br>
+  Â  { X86::VPMINUBZ128rrk,  Â  Â X86::VPMINUBZ128rmk,  Â  Â  Â 0 },<br>
+  Â  { X86::VPMINUDZ128rrk,  Â  Â X86::VPMINUDZ128rmk,  Â  Â  Â 0 },<br>
+  Â  { X86::VPMINUQZ128rrk,  Â  Â X86::VPMINUQZ128rmk,  Â  Â  Â 0 },<br>
+  Â  { X86::VPMINUWZ128rrk,  Â  Â X86::VPMINUWZ128rmk,  Â  Â  Â 0 },<br>
+  Â  { X86::VPMULDQZ128rrk,  Â  Â X86::VPMULDQZ128rmk,  Â  Â  Â 0 },<br>
+  Â  { X86::VPMULLDZ128rrk,  Â  Â X86::VPMULLDZ128rmk,  Â  Â  Â 0 },<br>
+  Â  { X86::VPMULLQZ128rrk,  Â  Â X86::VPMULLQZ128rmk,  Â  Â  Â 0 },<br>
+  Â  { X86::VPMULLWZ128rrk,  Â  Â X86::VPMULLWZ128rmk,  Â  Â  Â 0 },<br>
+  Â  { X86::VPMULUDQZ128rrk,  Â  X86::VPMULUDQZ128rmk,  Â  Â  0 },<br>
+  Â  { X86::VPORDZ128rrk,  Â  Â  Â X86::VPORDZ128rmk,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPORQZ128rrk,  Â  Â  Â X86::VPORQZ128rmk,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPSHUFBZ128rrk,  Â  Â X86::VPSHUFBZ128rmk,  Â  Â  Â 0 },<br>
+  Â  { X86::VPSLLDZ128rrk,  Â  Â  X86::VPSLLDZ128rmk,  Â  Â  Â  0 },<br>
+  Â  { X86::VPSLLQZ128rrk,  Â  Â  X86::VPSLLQZ128rmk,  Â  Â  Â  0 },<br>
+  Â  { X86::VPSLLVDZ128rrk,  Â  Â X86::VPSLLVDZ128rmk,  Â  Â  Â 0 },<br>
+  Â  { X86::VPSLLVQZ128rrk,  Â  Â X86::VPSLLVQZ128rmk,  Â  Â  Â 0 },<br>
+  Â  { X86::VPSLLVWZ128rrk,  Â  Â X86::VPSLLVWZ128rmk,  Â  Â  Â 0 },<br>
+  Â  { X86::VPSLLWZ128rrk,  Â  Â  X86::VPSLLWZ128rmk,  Â  Â  Â  0 },<br>
+  Â  { X86::VPSRADZ128rrk,  Â  Â  X86::VPSRADZ128rmk,  Â  Â  Â  0 },<br>
+  Â  { X86::VPSRAQZ128rrk,  Â  Â  X86::VPSRAQZ128rmk,  Â  Â  Â  0 },<br>
+  Â  { X86::VPSRAVDZ128rrk,  Â  Â X86::VPSRAVDZ128rmk,  Â  Â  Â 0 },<br>
+  Â  { X86::VPSRAVQZ128rrk,  Â  Â X86::VPSRAVQZ128rmk,  Â  Â  Â 0 },<br>
+  Â  { X86::VPSRAVWZ128rrk,  Â  Â X86::VPSRAVWZ128rmk,  Â  Â  Â 0 },<br>
+  Â  { X86::VPSRAWZ128rrk,  Â  Â  X86::VPSRAWZ128rmk,  Â  Â  Â  0 },<br>
+  Â  { X86::VPSRLDZ128rrk,  Â  Â  X86::VPSRLDZ128rmk,  Â  Â  Â  0 },<br>
+  Â  { X86::VPSRLQZ128rrk,  Â  Â  X86::VPSRLQZ128rmk,  Â  Â  Â  0 },<br>
+  Â  { X86::VPSRLVDZ128rrk,  Â  Â X86::VPSRLVDZ128rmk,  Â  Â  Â 0 },<br>
+  Â  { X86::VPSRLVQZ128rrk,  Â  Â X86::VPSRLVQZ128rmk,  Â  Â  Â 0 },<br>
+  Â  { X86::VPSRLVWZ128rrk,  Â  Â X86::VPSRLVWZ128rmk,  Â  Â  Â 0 },<br>
+  Â  { X86::VPSRLWZ128rrk,  Â  Â  X86::VPSRLWZ128rmk,  Â  Â  Â  0 },<br>
+  Â  { X86::VPSUBBZ128rrk,  Â  Â  X86::VPSUBBZ128rmk,  Â  Â  Â  0 },<br>
+  Â  { X86::VPSUBDZ128rrk,  Â  Â  X86::VPSUBDZ128rmk,  Â  Â  Â  0 },<br>
+  Â  { X86::VPSUBQZ128rrk,  Â  Â  X86::VPSUBQZ128rmk,  Â  Â  Â  0 },<br>
+  Â  { X86::VPSUBSBZ128rrk,  Â  Â X86::VPSUBSBZ128rmk,  Â  Â  Â 0 },<br>
+  Â  { X86::VPSUBSWZ128rrk,  Â  Â X86::VPSUBSWZ128rmk,  Â  Â  Â 0 },<br>
+  Â  { X86::VPSUBUSBZ128rrk,  Â  X86::VPSUBUSBZ128rmk,  Â  Â  0 },<br>
+  Â  { X86::VPSUBUSWZ128rrk,  Â  X86::VPSUBUSWZ128rmk,  Â  Â  0 },<br>
+  Â  { X86::VPSUBWZ128rrk,  Â  Â  X86::VPSUBWZ128rmk,  Â  Â  Â  0 },<br>
+  Â  { X86::VPTERNLOGDZ128rrik, X86::VPTERNLOGDZ128rmik,  Â 0 },<br>
+  Â  { X86::VPTERNLOGQZ128rrik, X86::VPTERNLOGQZ128rmik,  Â 0 },<br>
+  Â  { X86::VPUNPCKHBWZ128rrk,  X86::VPUNPCKHBWZ128rmk,  Â  0 },<br>
+  Â  { X86::VPUNPCKHDQZ128rrk,  X86::VPUNPCKHDQZ128rmk,  Â  0 },<br>
+  Â  { X86::VPUNPCKHQDQZ128rrk, X86::VPUNPCKHQDQZ128rmk,  Â 0 },<br>
+  Â  { X86::VPUNPCKHWDZ128rrk,  X86::VPUNPCKHWDZ128rmk,  Â  0 },<br>
+  Â  { X86::VPUNPCKLBWZ128rrk,  X86::VPUNPCKLBWZ128rmk,  Â  0 },<br>
+  Â  { X86::VPUNPCKLDQZ128rrk,  X86::VPUNPCKLDQZ128rmk,  Â  0 },<br>
+  Â  { X86::VPUNPCKLQDQZ128rrk, X86::VPUNPCKLQDQZ128rmk,  Â 0 },<br>
+  Â  { X86::VPUNPCKLWDZ128rrk,  X86::VPUNPCKLWDZ128rmk,  Â  0 },<br>
+  Â  { X86::VPXORDZ128rrk,  Â  Â  X86::VPXORDZ128rmk,  Â  Â  Â  0 },<br>
+  Â  { X86::VPXORQZ128rrk,  Â  Â  X86::VPXORQZ128rmk,  Â  Â  Â  0 },<br>
+  Â  { X86::VSHUFPDZ128rrik,  Â  X86::VSHUFPDZ128rmik,  Â  Â  0 },<br>
+  Â  { X86::VSHUFPSZ128rrik,  Â  X86::VSHUFPSZ128rmik,  Â  Â  0 },<br>
+  Â  { X86::VSUBPDZ128rrk,  Â  Â  X86::VSUBPDZ128rmk,  Â  Â  Â  0 },<br>
+  Â  { X86::VSUBPSZ128rrk,  Â  Â  X86::VSUBPSZ128rmk,  Â  Â  Â  0 },<br>
+  Â  { X86::VUNPCKHPDZ128rrk,  Â X86::VUNPCKHPDZ128rmk,  Â  Â 0 },<br>
+  Â  { X86::VUNPCKHPSZ128rrk,  Â X86::VUNPCKHPSZ128rmk,  Â  Â 0 },<br>
+  Â  { X86::VUNPCKLPDZ128rrk,  Â X86::VUNPCKLPDZ128rmk,  Â  Â 0 },<br>
+  Â  { X86::VUNPCKLPSZ128rrk,  Â X86::VUNPCKLPSZ128rmk,  Â  Â 0 },<br>
+  Â  { X86::VXORPDZ128rrk,  Â  Â  X86::VXORPDZ128rmk,  Â  Â  Â  0 },<br>
+  Â  { X86::VXORPSZ128rrk,  Â  Â  X86::VXORPSZ128rmk,  Â  Â  Â  0 },<br>
+<br>
+  Â  // 512-bit three source instructions with zero masking.<br>
+  Â  { X86::VPERMI2Brrkz,  Â  Â  Â X86::VPERMI2Brmkz,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPERMI2Drrkz,  Â  Â  Â X86::VPERMI2Drmkz,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPERMI2PSrrkz,  Â  Â  X86::VPERMI2PSrmkz,  Â  Â  Â  0 },<br>
+  Â  { X86::VPERMI2PDrrkz,  Â  Â  X86::VPERMI2PDrmkz,  Â  Â  Â  0 },<br>
+  Â  { X86::VPERMI2Qrrkz,  Â  Â  Â X86::VPERMI2Qrmkz,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPERMI2Wrrkz,  Â  Â  Â X86::VPERMI2Wrmkz,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPERMT2Brrkz,  Â  Â  Â X86::VPERMT2Brmkz,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPERMT2Drrkz,  Â  Â  Â X86::VPERMT2Drmkz,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPERMT2PSrrkz,  Â  Â  X86::VPERMT2PSrmkz,  Â  Â  Â  0 },<br>
+  Â  { X86::VPERMT2PDrrkz,  Â  Â  X86::VPERMT2PDrmkz,  Â  Â  Â  0 },<br>
+  Â  { X86::VPERMT2Qrrkz,  Â  Â  Â X86::VPERMT2Qrmkz,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPERMT2Wrrkz,  Â  Â  Â X86::VPERMT2Wrmkz,  Â  Â  Â  Â 0 },<br>
+  Â  { X86::VPTERNLOGDZrrikz,  Â X86::VPTERNLOGDZrmikz,  Â  Â 0 },<br>
+  Â  { X86::VPTERNLOGQZrrikz,  Â X86::VPTERNLOGQZrmikz,  Â  Â 0 },<br>
+<br>
+  Â  // 256-bit three source instructions with zero masking.<br>
+  Â  { X86::VPERMI2B256rrkz,  Â  X86::VPERMI2B256rmkz,  Â  Â  0 },<br>
+  Â  { X86::VPERMI2D256rrkz,  Â  X86::VPERMI2D256rmkz,  Â  Â  0 },<br>
+  Â  { X86::VPERMI2PD256rrkz,  Â X86::VPERMI2PD256rmkz,  Â  Â 0 },<br>
+  Â  { X86::VPERMI2PS256rrkz,  Â X86::VPERMI2PS256rmkz,  Â  Â 0 },<br>
+  Â  { X86::VPERMI2Q256rrkz,  Â  X86::VPERMI2Q256rmkz,  Â  Â  0 },<br>
+  Â  { X86::VPERMI2W256rrkz,  Â  X86::VPERMI2W256rmkz,  Â  Â  0 },<br>
+  Â  { X86::VPERMT2B256rrkz,  Â  X86::VPERMT2B256rmkz,  Â  Â  0 },<br>
+  Â  { X86::VPERMT2D256rrkz,  Â  X86::VPERMT2D256rmkz,  Â  Â  0 },<br>
+  Â  { X86::VPERMT2PD256rrkz,  Â X86::VPERMT2PD256rmkz,  Â  Â 0 },<br>
+  Â  { X86::VPERMT2PS256rrkz,  Â X86::VPERMT2PS256rmkz,  Â  Â 0 },<br>
+  Â  { X86::VPERMT2Q256rrkz,  Â  X86::VPERMT2Q256rmkz,  Â  Â  0 },<br>
+  Â  { X86::VPERMT2W256rrkz,  Â  X86::VPERMT2W256rmkz,  Â  Â  0 },<br>
+  Â  { X86::VPTERNLOGDZ256rrikz,X86::<wbr>VPTERNLOGDZ256rmikz,  0 },<br>
+  Â  { X86::VPTERNLOGQZ256rrikz,X86::<wbr>VPTERNLOGQZ256rmikz,  0 },<br>
+<br>
+  Â  // 128-bit three source instructions with zero masking.<br>
+  Â  { X86::VPERMI2B128rrkz,  Â  X86::VPERMI2B128rmkz,  Â  Â  0 },<br>
+  Â  { X86::VPERMI2D128rrkz,  Â  X86::VPERMI2D128rmkz,  Â  Â  0 },<br>
+  Â  { X86::VPERMI2PD128rrkz,  Â X86::VPERMI2PD128rmkz,  Â  Â 0 },<br>
+  Â  { X86::VPERMI2PS128rrkz,  Â X86::VPERMI2PS128rmkz,  Â  Â 0 },<br>
+  Â  { X86::VPERMI2Q128rrkz,  Â  X86::VPERMI2Q128rmkz,  Â  Â  0 },<br>
+  Â  { X86::VPERMI2W128rrkz,  Â  X86::VPERMI2W128rmkz,  Â  Â  0 },<br>
+  Â  { X86::VPERMT2B128rrkz,  Â  X86::VPERMT2B128rmkz,  Â  Â  0 },<br>
+  Â  { X86::VPERMT2D128rrkz,  Â  X86::VPERMT2D128rmkz,  Â  Â  0 },<br>
+  Â  { X86::VPERMT2PD128rrkz,  Â X86::VPERMT2PD128rmkz,  Â  Â 0 },<br>
+  Â  { X86::VPERMT2PS128rrkz,  Â X86::VPERMT2PS128rmkz,  Â  Â 0 },<br>
+  Â  { X86::VPERMT2Q128rrkz,  Â  X86::VPERMT2Q128rmkz,  Â  Â  0 },<br>
+  Â  { X86::VPERMT2W128rrkz,  Â  X86::VPERMT2W128rmkz,  Â  Â  0 },<br>
+  Â  { X86::VPTERNLOGDZ128rrikz,X86::<wbr>VPTERNLOGDZ128rmikz,  0 },<br>
+  Â  { X86::VPTERNLOGQZ128rrikz,X86::<wbr>VPTERNLOGQZ128rmikz,  0 },<br>
+  };<br>
<br>
  Â for (X86MemoryFoldTableEntry Entry : MemoryFoldTable4) {<br>
  Â  Â AddTableEntry(<wbr>RegOp2MemOpTable4, MemOp2RegOpTable,<br>
@@ -163,6 +3545,20 @@ X86InstrInfo::X86InstrInfo(<wbr>X86Subtarget<br>
  Â  Â  Â  Â  Â  Â  Â  Â  Â // Index 4, folded load<br>
  Â  Â  Â  Â  Â  Â  Â  Â  Â Entry.Flags | TB_INDEX_4 | TB_FOLDED_LOAD);<br>
  Â }<br>
+  for (I = X86InstrFMA3Info::rm_begin(); I != E; ++I) {<br>
+  Â  if (I.getGroup()->isKMasked()) {<br>
+  Â  Â  // Intrinsics need to pass TB_NO_REVERSE.<br>
+  Â  Â  if (I.getGroup()->isIntrinsic()) {<br>
+  Â  Â  Â  AddTableEntry(<wbr>RegOp2MemOpTable4, MemOp2RegOpTable,<br>
+  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  I.getRegOpcode(), I.getMemOpcode(),<br>
+  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  TB_ALIGN_NONE | TB_INDEX_4 | TB_FOLDED_LOAD | TB_NO_REVERSE);<br>
+  Â  Â  } else {<br>
+  Â  Â  Â  AddTableEntry(<wbr>RegOp2MemOpTable4, MemOp2RegOpTable,<br>
+  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  I.getRegOpcode(), I.getMemOpcode(),<br>
+  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  TB_ALIGN_NONE | TB_INDEX_4 | TB_FOLDED_LOAD);<br>
+  Â  Â  }<br>
+  Â  }<br>
+  }<br>
 }<br>
<br>
 void<br>
<br>
Modified: llvm/trunk/test/CodeGen/X86/<wbr>sse42-intrinsics-fast-isel.ll<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/sse42-intrinsics-fast-isel.ll?rev=304121&r1=304120&r2=304121&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/llvm/trunk/test/<wbr>CodeGen/X86/sse42-intrinsics-<wbr>fast-isel.ll?rev=304121&r1=<wbr>304120&r2=304121&view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- llvm/trunk/test/CodeGen/X86/<wbr>sse42-intrinsics-fast-isel.ll (original)<br>
+++ llvm/trunk/test/CodeGen/X86/<wbr>sse42-intrinsics-fast-isel.ll Sun May 28 20:48:53 2017<br>
@@ -354,8 +354,9 @@ declare i32 @llvm.x86.sse42.pcmpistriz12<br>
 define i32 @test_mm_crc32_u8(i32 %a0, i8 %a1) {<br>
 ; X32-LABEL: test_mm_crc32_u8:<br>
 ; X32:  Â  Â  Â # BB#0:<br>
+; X32-NEXT:  Â  movb {{[0-9]+}}(%esp), %cl<br>
 ; X32-NEXT:  Â  movl {{[0-9]+}}(%esp), %eax<br>
-; X32-NEXT:  Â  crc32b {{[0-9]+}}(%esp), %eax<br>
+; X32-NEXT:  Â  crc32b %cl, %eax<br>
 ; X32-NEXT:  Â  retl<br>
 ;<br>
 ; X64-LABEL: test_mm_crc32_u8:<br>
@@ -371,8 +372,9 @@ declare i32 @llvm.x86.sse42.crc32.32.8(i<br>
 define i32 @test_mm_crc32_u16(i32 %a0, i16 %a1) {<br>
 ; X32-LABEL: test_mm_crc32_u16:<br>
 ; X32:  Â  Â  Â # BB#0:<br>
+; X32-NEXT:  Â  movzwl {{[0-9]+}}(%esp), %ecx<br>
 ; X32-NEXT:  Â  movl {{[0-9]+}}(%esp), %eax<br>
-; X32-NEXT:  Â  crc32w {{[0-9]+}}(%esp), %eax<br>
+; X32-NEXT:  Â  crc32w %cx, %eax<br>
 ; X32-NEXT:  Â  retl<br>
 ;<br>
 ; X64-LABEL: test_mm_crc32_u16:<br>
<br>
Modified: llvm/trunk/test/CodeGen/X86/<wbr>stack-folding-fp-avx1.ll<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/stack-folding-fp-avx1.ll?rev=304121&r1=304120&r2=304121&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/llvm/trunk/test/<wbr>CodeGen/X86/stack-folding-fp-<wbr>avx1.ll?rev=304121&r1=304120&<wbr>r2=304121&view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- llvm/trunk/test/CodeGen/X86/<wbr>stack-folding-fp-avx1.ll (original)<br>
+++ llvm/trunk/test/CodeGen/X86/<wbr>stack-folding-fp-avx1.ll Sun May 28 20:48:53 2017<br>
@@ -1651,9 +1651,26 @@ define <8 x float> @stack_fold_sqrtps_ym<br>
 }<br>
 declare <8 x float> @llvm.x86.avx.sqrt.ps.256(<8 x float>) nounwind readnone<br>
<br>
-; TODO stack_fold_sqrtsd<br>
+define double @stack_fold_sqrtsd(double %a0) {<br>
+  ;CHECK-LABEL: stack_fold_sqrtsd<br>
+  ;CHECK:  Â  Â  Â vsqrtsd {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%xmm[0-9][0-9]*}} {{.*#+}} 8-byte Folded Reload<br>
+  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm2},~{xmm3},~{<wbr>xmm4},~{xmm5},~{xmm6},~{xmm7},<wbr>~{xmm8},~{xmm9},~{xmm10},~{<wbr>xmm11},~{xmm12},~{xmm13},~{<wbr>xmm14},~{xmm15},~{flags}"()<br>
+  %2 = call double @llvm.sqrt.f64(double %a0)<br>
+  ret double %2<br>
+}<br>
+declare double @llvm.sqrt.f64(double) nounwind readnone<br>
+<br>
 ; TODO stack_fold_sqrtsd_int<br>
-; TODO stack_fold_sqrtss<br>
+<br>
+define float @stack_fold_sqrtss(float %a0) {<br>
+  ;CHECK-LABEL: stack_fold_sqrtss<br>
+  ;CHECK:  Â  Â  Â vsqrtss {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}}, {{%xmm[0-9][0-9]*}} {{.*#+}} 4-byte Folded Reload<br>
+  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm2},~{xmm3},~{<wbr>xmm4},~{xmm5},~{xmm6},~{xmm7},<wbr>~{xmm8},~{xmm9},~{xmm10},~{<wbr>xmm11},~{xmm12},~{xmm13},~{<wbr>xmm14},~{xmm15},~{flags}"()<br>
+  %2 = call float @llvm.sqrt.f32(float %a0)<br>
+  ret float %2<br>
+}<br>
+declare float @llvm.sqrt.f32(float) nounwind readnone<br>
+<br>
 ; TODO stack_fold_sqrtss_int<br>
<br>
 define <2 x double> @stack_fold_subpd(<2 x double> %a0, <2 x double> %a1) {<br>
<br>
Modified: llvm/trunk/test/CodeGen/X86/<wbr>vector-sqrt.ll<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/vector-sqrt.ll?rev=304121&r1=304120&r2=304121&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/llvm/trunk/test/<wbr>CodeGen/X86/vector-sqrt.ll?<wbr>rev=304121&r1=304120&r2=<wbr>304121&view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- llvm/trunk/test/CodeGen/X86/<wbr>vector-sqrt.ll (original)<br>
+++ llvm/trunk/test/CodeGen/X86/<wbr>vector-sqrt.ll Sun May 28 20:48:53 2017<br>
@@ -5,10 +5,8 @@<br>
 define <2 x double> @sqrtd2(double* nocapture readonly %v) local_unnamed_addr #0 {<br>
 ; CHECK-LABEL: sqrtd2:<br>
 ; CHECK:  Â  Â  Â # BB#0: # %entry<br>
-; CHECK-NEXT:  Â  vmovsd {{.*#+}} xmm0 = mem[0],zero<br>
-; CHECK-NEXT:  Â  vmovsd {{.*#+}} xmm1 = mem[0],zero<br>
-; CHECK-NEXT:  Â  vsqrtsd %xmm0, %xmm0, %xmm0<br>
-; CHECK-NEXT:  Â  vsqrtsd %xmm1, %xmm1, %xmm1<br>
+; CHECK-NEXT:  Â  vsqrtsd (%rdi), %xmm0, %xmm0<br>
+; CHECK-NEXT:  Â  vsqrtsd 8(%rdi), %xmm1, %xmm1<br>
 ; CHECK-NEXT:  Â  vunpcklpd {{.*#+}} xmm0 = xmm0[0],xmm1[0]<br>
 ; CHECK-NEXT:  Â  retq<br>
 entry:<br>
@@ -29,14 +27,10 @@ declare double @sqrt(double) local_unnam<br>
 define <4 x float> @sqrtf4(float* nocapture readonly %v) local_unnamed_addr #0 {<br>
 ; CHECK-LABEL: sqrtf4:<br>
 ; CHECK:  Â  Â  Â # BB#0: # %entry<br>
-; CHECK-NEXT:  Â  vmovss {{.*#+}} xmm0 = mem[0],zero,zero,zero<br>
-; CHECK-NEXT:  Â  vmovss {{.*#+}} xmm1 = mem[0],zero,zero,zero<br>
-; CHECK-NEXT:  Â  vsqrtss %xmm0, %xmm0, %xmm0<br>
-; CHECK-NEXT:  Â  vsqrtss %xmm1, %xmm1, %xmm1<br>
-; CHECK-NEXT:  Â  vmovss {{.*#+}} xmm2 = mem[0],zero,zero,zero<br>
-; CHECK-NEXT:  Â  vsqrtss %xmm2, %xmm2, %xmm2<br>
-; CHECK-NEXT:  Â  vmovss {{.*#+}} xmm3 = mem[0],zero,zero,zero<br>
-; CHECK-NEXT:  Â  vsqrtss %xmm3, %xmm3, %xmm3<br>
+; CHECK-NEXT:  Â  vsqrtss (%rdi), %xmm0, %xmm0<br>
+; CHECK-NEXT:  Â  vsqrtss 4(%rdi), %xmm1, %xmm1<br>
+; CHECK-NEXT:  Â  vsqrtss 8(%rdi), %xmm2, %xmm2<br>
+; CHECK-NEXT:  Â  vsqrtss 12(%rdi), %xmm3, %xmm3<br>
 ; CHECK-NEXT:  Â  vinsertps {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[2,3]<br>
 ; CHECK-NEXT:  Â  vinsertps {{.*#+}} xmm0 = xmm0[0,1],xmm2[0],xmm0[3]<br>
 ; CHECK-NEXT:  Â  vinsertps {{.*#+}} xmm0 = xmm0[0,1,2],xmm3[0]<br>
<br>
Modified: llvm/trunk/utils/TableGen/<wbr>CMakeLists.txt<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/TableGen/CMakeLists.txt?rev=304121&r1=304120&r2=304121&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/llvm/trunk/utils/<wbr>TableGen/CMakeLists.txt?rev=<wbr>304121&r1=304120&r2=304121&<wbr>view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- llvm/trunk/utils/TableGen/<wbr>CMakeLists.txt (original)<br>
+++ llvm/trunk/utils/TableGen/<wbr>CMakeLists.txt Sun May 28 20:48:53 2017<br>
@@ -35,7 +35,6 @@ add_tablegen(llvm-tblgen LLVM<br>
  Â TableGen.cpp<br>
  Â Types.cpp<br>
  Â X86DisassemblerTables.cpp<br>
-  X86FoldTablesEmitter.cpp<br>
  Â X86EVEX2VEXTablesEmitter.cpp<br>
  Â X86ModRMFilters.cpp<br>
  Â X86RecognizableInstr.cpp<br>
<br>
Modified: llvm/trunk/utils/TableGen/<wbr>TableGen.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/TableGen/TableGen.cpp?rev=304121&r1=304120&r2=304121&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/llvm/trunk/utils/<wbr>TableGen/TableGen.cpp?rev=<wbr>304121&r1=304120&r2=304121&<wbr>view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- llvm/trunk/utils/TableGen/<wbr>TableGen.cpp (original)<br>
+++ llvm/trunk/utils/TableGen/<wbr>TableGen.cpp Sun May 28 20:48:53 2017<br>
@@ -46,7 +46,6 @@ enum ActionType {<br>
  Â GenAttributes,<br>
  Â GenSearchableTables,<br>
  Â GenGlobalISel,<br>
-  GenX86FoldTables,<br>
  Â GenX86EVEX2VEXTables,<br>
  Â GenRegisterBank,<br>
 };<br>
@@ -98,8 +97,6 @@ namespace {<br>
  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  "Generate generic binary-searchable table"),<br>
  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â clEnumValN(GenGlobalISel, "gen-global-isel",<br>
  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  "Generate GlobalISel selector"),<br>
-  Â  Â  Â  Â  Â  Â  Â  Â  Â  clEnumValN(GenX86FoldTables, "gen-x86-fold-tables",<br>
-  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â "Generate X86 fold tables"),<br>
  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â clEnumValN(<wbr>GenX86EVEX2VEXTables, "gen-x86-EVEX2VEX-tables",<br>
  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  "Generate X86 EVEX to VEX compress tables"),<br>
  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â clEnumValN(GenRegisterBank, "gen-register-bank",<br>
@@ -193,9 +190,6 @@ bool LLVMTableGenMain(raw_ostream &OS, R<br>
  Â case GenGlobalISel:<br>
  Â  Â EmitGlobalISel(Records, OS);<br>
  Â  Â break;<br>
-  case GenX86FoldTables:<br>
-  Â  EmitX86FoldTables(Records, OS);<br>
-  Â  break;<br>
  Â case GenRegisterBank:<br>
  Â  Â EmitRegisterBank(Records, OS);<br>
  Â  Â break;<br>
<br>
Modified: llvm/trunk/utils/TableGen/<wbr>TableGenBackends.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/TableGen/TableGenBackends.h?rev=304121&r1=304120&r2=304121&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/llvm/trunk/utils/<wbr>TableGen/TableGenBackends.h?<wbr>rev=304121&r1=304120&r2=<wbr>304121&view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- llvm/trunk/utils/TableGen/<wbr>TableGenBackends.h (original)<br>
+++ llvm/trunk/utils/TableGen/<wbr>TableGenBackends.h Sun May 28 20:48:53 2017<br>
@@ -81,7 +81,6 @@ void EmitCTags(RecordKeeper &RK, raw_ost<br>
 void EmitAttributes(RecordKeeper &RK, raw_ostream &OS);<br>
 void EmitSearchableTables(<wbr>RecordKeeper &RK, raw_ostream &OS);<br>
 void EmitGlobalISel(RecordKeeper &RK, raw_ostream &OS);<br>
-void EmitX86FoldTables(RecordKeeper &RK, raw_ostream &OS);<br>
 void EmitX86EVEX2VEXTables(<wbr>RecordKeeper &RK, raw_ostream &OS);<br>
 void EmitRegisterBank(RecordKeeper &RK, raw_ostream &OS);<br>
<br>
<br>
Removed: llvm/trunk/utils/TableGen/<wbr>X86FoldTablesEmitter.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/TableGen/X86FoldTablesEmitter.cpp?rev=304120&view=auto" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/llvm/trunk/utils/<wbr>TableGen/X86FoldTablesEmitter.<wbr>cpp?rev=304120&view=auto</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- llvm/trunk/utils/TableGen/<wbr>X86FoldTablesEmitter.cpp (original)<br>
+++ llvm/trunk/utils/TableGen/<wbr>X86FoldTablesEmitter.cpp (removed)<br>
@@ -1,720 +0,0 @@<br>
-//===- utils/TableGen/<wbr>X86FoldTablesEmitter.cpp - X86 backend-*- C++ -*-===//<br>
-//<br>
-//  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â The LLVM Compiler Infrastructure<br>
-//<br>
-// This file is distributed under the University of Illinois Open Source<br>
-// License. See LICENSE.TXT for details.<br>
-//<br>
-//===------------------------<wbr>------------------------------<wbr>----------------===//<br>
-//<br>
-// This tablegen backend is responsible for emitting the memory fold tables of<br>
-// the X86 backend instructions.<br>
-//<br>
-//===------------------------<wbr>------------------------------<wbr>----------------===//<br>
-<br>
-#include "CodeGenDAGPatterns.h"<br>
-#include "CodeGenTarget.h"<br>
-#include "X86RecognizableInstr.h"<br>
-#include "llvm/TableGen/Error.h"<br>
-#include "llvm/TableGen/<wbr>TableGenBackend.h"<br>
-<br>
-using namespace llvm;<br>
-<br>
-namespace {<br>
-<br>
-// 3 possible strategies for the unfolding flag (TB_NO_REVERSE) of the<br>
-// manual added entries.<br>
-enum UnfoldStrategy {<br>
-  UNFOLD,  Â  Â // Allow unfolding<br>
-  NO_UNFOLD,  // Prevent unfolding<br>
-  NO_STRATEGY // Make decision according to operands' sizes<br>
-};<br>
-<br>
-// Represents an entry in the manual mapped instructions set.<br>
-struct ManualMapEntry {<br>
-  const char *RegInstStr;<br>
-  const char *MemInstStr;<br>
-  UnfoldStrategy Strategy;<br>
-<br>
-  ManualMapEntry(const char *RegInstStr, const char *MemInstStr,<br>
-  Â  Â  Â  Â  Â  Â  Â  Â UnfoldStrategy Strategy = NO_STRATEGY)<br>
-  Â  Â  : RegInstStr(RegInstStr), MemInstStr(MemInstStr), Strategy(Strategy) {}<br>
-};<br>
-<br>
-class IsMatch;<br>
-<br>
-// List of instructions requiring explicitly aligned memory.<br>
-const char *const ExplicitAlign[] = {"MOVDQA",  "MOVAPS",  "MOVAPD",  "MOVNTPS",<br>
-  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â "MOVNTPD", "MOVNTDQ", "MOVNTDQA"};<br>
-<br>
-// List of instructions NOT requiring explicit memory alignment.<br>
-const char *const ExplicitUnalign[] = {"MOVDQU", "MOVUPS", "MOVUPD"};<br>
-<br>
-// For manually mapping instructions that do not match by their encoding.<br>
-const ManualMapEntry ManualMapSet[] = {<br>
-  Â  { "ADD16ri_DB",  Â  Â  Â "ADD16mi",  Â  Â  Â  Â NO_UNFOLD  },<br>
-  Â  { "ADD16ri8_DB",  Â  Â  "ADD16mi8",  Â  Â  Â  NO_UNFOLD  },<br>
-  Â  { "ADD16rr_DB",  Â  Â  Â "ADD16mr",  Â  Â  Â  Â NO_UNFOLD  },<br>
-  Â  { "ADD32ri_DB",  Â  Â  Â "ADD32mi",  Â  Â  Â  Â NO_UNFOLD  },<br>
-  Â  { "ADD32ri8_DB",  Â  Â  "ADD32mi8",  Â  Â  Â  NO_UNFOLD  },<br>
-  Â  { "ADD32rr_DB",  Â  Â  Â "ADD32mr",  Â  Â  Â  Â NO_UNFOLD  },<br>
-  Â  { "ADD64ri32_DB",  Â  Â "ADD64mi32",  Â  Â  Â NO_UNFOLD  },<br>
-  Â  { "ADD64ri8_DB",  Â  Â  "ADD64mi8",  Â  Â  Â  NO_UNFOLD  },<br>
-  Â  { "ADD64rr_DB",  Â  Â  Â "ADD64mr",  Â  Â  Â  Â NO_UNFOLD  },<br>
-  Â  { "ADD16rr_DB",  Â  Â  Â "ADD16rm",  Â  Â  Â  Â NO_UNFOLD  },<br>
-  Â  { "ADD32rr_DB",  Â  Â  Â "ADD32rm",  Â  Â  Â  Â NO_UNFOLD  },<br>
-  Â  { "ADD64rr_DB",  Â  Â  Â "ADD64rm",  Â  Â  Â  Â NO_UNFOLD  },<br>
-  Â  { "PUSH16r",  Â  Â  Â  Â  "PUSH16rmm",  Â  Â  Â NO_UNFOLD  },<br>
-  Â  { "PUSH32r",  Â  Â  Â  Â  "PUSH32rmm",  Â  Â  Â NO_UNFOLD  },<br>
-  Â  { "PUSH64r",  Â  Â  Â  Â  "PUSH64rmm",  Â  Â  Â NO_UNFOLD  },<br>
-  Â  { "TAILJMPr",  Â  Â  Â  Â "TAILJMPm",  Â  Â  Â  UNFOLD },<br>
-  Â  { "TAILJMPr64",  Â  Â  Â "TAILJMPm64",  Â  Â  UNFOLD },<br>
-  Â  { "TAILJMPr64_REX",  Â "TAILJMPm64_REX",  UNFOLD },<br>
-};<br>
-<br>
-// Do not add these instructions to any of the folding tables.<br>
-const char *const NoFoldSet[] = {<br>
-  Â  "TCRETURNri64",<br>
-  Â  "TCRETURNmi64", // Special dealing (in X86InstrCompiler.td under<br>
-  Â  "TCRETURNri",  Â // "tailcall stuff" section).<br>
-  Â  "TCRETURNmi"<br>
-<br>
-  Â  // Different calculations of the folded operand between<br>
-  Â  // memory and register forms (folding is illegal).<br>
-  Â  // - In their register form, the second register operand's relevant<br>
-  Â  //  Â bits are only the first 4/5/6 (depending on mode and reg size).<br>
-  Â  // - In their memory form, the second register operand's relevant<br>
-  Â  //  Â bits are only the first 16/32/64 (depending on mode and reg size).<br>
-  Â  "BT16rr",  "BT32rr",  "BT64rr",<br>
-  Â  "BT16mr",  "BT32mr",  "BT64mr",<br>
-  Â  "BTC16rr", "BTC32rr", "BTC64rr",<br>
-  Â  "BTC16mr", "BTC32mr", "BTC64mr",<br>
-  Â  "BTR16rr", "BTR32rr", "BTR64rr",<br>
-  Â  "BTR16mr", "BTR32mr", "BTR64mr",<br>
-  Â  "BTS16rr", "BTS32rr", "BTS64rr",<br>
-  Â  "BTS16mr", "BTS32mr", "BTS64mr",<br>
-<br>
-  Â  // Memory folding is enabled only when optimizing for size by DAG<br>
-  Â  // patterns only. (issue detailed in D28744 review)<br>
-  Â  "VCVTSS2SDrm",  Â  Â  Â  Â  Â  "VCVTSS2SDrr",<br>
-  Â  "VCVTSS2SDZrm",  Â  Â  Â  Â  Â "VCVTSS2SDZrr",<br>
-  Â  "VCVTSS2SDZrmk",  Â  Â  Â  Â  "VCVTSS2SDZrrk",<br>
-  Â  "VCVTSS2SDZrmkz",  Â  Â  Â  Â "VCVTSS2SDZrrkz",<br>
-  Â  "VCVTSS2SDZrm_Int",  Â  Â  Â "VCVTSS2SDZrr_Int",<br>
-  Â  "VCVTSS2SDZrm_Intk",  Â  Â  "VCVTSS2SDZrr_Intk",<br>
-  Â  "VCVTSS2SDZrm_Intkz",  Â  Â "VCVTSS2SDZrr_Intkz",<br>
-  Â  "VCVTSD2SSrm",  Â  Â  Â  Â  Â  "VCVTSD2SSrr",<br>
-  Â  "VCVTSD2SSZrm",  Â  Â  Â  Â  Â "VCVTSD2SSZrr",<br>
-  Â  "VCVTSD2SSZrmk",  Â  Â  Â  Â  "VCVTSD2SSZrrk",<br>
-  Â  "VCVTSD2SSZrmkz",  Â  Â  Â  Â "VCVTSD2SSZrrkz",<br>
-  Â  "VCVTSD2SSZrm_Int",  Â  Â  Â "VCVTSD2SSZrr_Int",<br>
-  Â  "VCVTSD2SSZrm_Intk",  Â  Â  "VCVTSD2SSZrr_Intk",<br>
-  Â  "VCVTSD2SSZrm_Intkz",  Â  Â "VCVTSD2SSZrr_Intkz",<br>
-  Â  "VRCP14SSrm",  Â  Â  Â  Â  Â  Â "VRCP14SSrr",<br>
-  Â  "VRCP14SDrm",  Â  Â  Â  Â  Â  Â "VRCP14SDrr",<br>
-  Â  "VRSQRT14SSrm",  Â  Â  Â  Â  Â "VRSQRT14SSrr",<br>
-  Â  "VRSQRT14SDrm",  Â  Â  Â  Â  Â "VRSQRT14SDrr",<br>
-  Â  "VSQRTSSm",  Â  Â  Â  Â  Â  Â  Â "VSQRTSSr",<br>
-  Â  "VSQRTSSm_Int",  Â  Â  Â  Â  Â "VSQRTSSr_Int",<br>
-  Â  "VSQRTSSZm",  Â  Â  Â  Â  Â  Â  "VSQRTSSZr",<br>
-  Â  "VSQRTSSZm_Int",  Â  Â  Â  Â  "VSQRTSSZr_Int",<br>
-  Â  "VSQRTSSZm_Intk",  Â  Â  Â  Â "VSQRTSSZr_Intk",<br>
-  Â  "VSQRTSSZm_Intkz",  Â  Â  Â  "VSQRTSSZr_Intkz",<br>
-  Â  "VSQRTSDm",  Â  Â  Â  Â  Â  Â  Â "VSQRTSDr",<br>
-  Â  "VSQRTSDm_Int",  Â  Â  Â  Â  Â "VSQRTSDr_Int",<br>
-  Â  "VSQRTSDZm",  Â  Â  Â  Â  Â  Â  "VSQRTSDZr",<br>
-  Â  "VSQRTSDZm_Int",  Â  Â  Â  Â  "VSQRTSDZr_Int",<br>
-  Â  "VSQRTSDZm_Intk",  Â  Â  Â  Â "VSQRTSDZr_Intk",<br>
-  Â  "VSQRTSDZm_Intkz",  Â  Â  Â  "VSQRTSDZr_Intkz",<br>
-};<br>
-<br>
-static bool isExplicitAlign(const CodeGenInstruction *Inst) {<br>
-  return any_of(ExplicitAlign, [Inst](const char *InstStr) {<br>
-  Â  return Inst->TheDef->getName().find(<wbr>InstStr) != StringRef::npos;<br>
-  });<br>
-}<br>
-<br>
-static bool isExplicitUnalign(const CodeGenInstruction *Inst) {<br>
-  return any_of(ExplicitUnalign, [Inst](const char *InstStr) {<br>
-  Â  return Inst->TheDef->getName().find(<wbr>InstStr) != StringRef::npos;<br>
-  });<br>
-}<br>
-<br>
-class X86FoldTablesEmitter {<br>
-  RecordKeeper &Records;<br>
-  CodeGenTarget Target;<br>
-<br>
-  // Represents an entry in the folding table<br>
-  class X86FoldTableEntry {<br>
-  Â  const CodeGenInstruction *RegInst;<br>
-  Â  const CodeGenInstruction *MemInst;<br>
-<br>
-  public:<br>
-  Â  bool CannotUnfold = false;<br>
-  Â  bool IsLoad = false;<br>
-  Â  bool IsStore = false;<br>
-  Â  bool IsAligned = false;<br>
-  Â  unsigned int Alignment = 0;<br>
-<br>
-  Â  X86FoldTableEntry(const CodeGenInstruction *RegInst,<br>
-  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  const CodeGenInstruction *MemInst)<br>
-  Â  Â  Â  : RegInst(RegInst), MemInst(MemInst) {}<br>
-<br>
-  Â  friend raw_ostream &operator<<(raw_ostream &OS,<br>
-  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â const X86FoldTableEntry &E) {<br>
-  Â  Â  OS << "{ X86::" << E.RegInst->TheDef->getName()<br>
-  Â  Â  Â  Â << ", X86::" << E.MemInst->TheDef->getName() << ", ";<br>
-<br>
-  Â  Â  if (E.IsLoad)<br>
-  Â  Â  Â  OS << "TB_FOLDED_LOAD | ";<br>
-  Â  Â  if (E.IsStore)<br>
-  Â  Â  Â  OS << "TB_FOLDED_STORE | ";<br>
-  Â  Â  if (E.CannotUnfold)<br>
-  Â  Â  Â  OS << "TB_NO_REVERSE | ";<br>
-  Â  Â  if (E.IsAligned)<br>
-  Â  Â  Â  OS << "TB_ALIGN_" << E.Alignment << " | ";<br>
-<br>
-  Â  Â  OS << "0 },\n";<br>
-<br>
-  Â  Â  return OS;<br>
-  Â  }<br>
-  };<br>
-<br>
-  typedef std::vector<X86FoldTableEntry> FoldTable;<br>
-  // std::vector for each folding table.<br>
-  // Table2Addr - Holds instructions which their memory form performs load+store<br>
-  // Table#i - Holds instructions which the their memory form perform a load OR<br>
-  //  Â  Â  Â  Â  Â a store,  and their #i'th operand is folded.<br>
-  FoldTable Table2Addr;<br>
-  FoldTable Table0;<br>
-  FoldTable Table1;<br>
-  FoldTable Table2;<br>
-  FoldTable Table3;<br>
-  FoldTable Table4;<br>
-<br>
-public:<br>
-  X86FoldTablesEmitter(<wbr>RecordKeeper &R) : Records(R), Target(R) {}<br>
-<br>
-  // run - Generate the 6 X86 memory fold tables.<br>
-  void run(raw_ostream &OS);<br>
-<br>
-private:<br>
-  // Decides to which table to add the entry with the given instructions.<br>
-  // S sets the strategy of adding the TB_NO_REVERSE flag.<br>
-  void updateTables(const CodeGenInstruction *RegInstr,<br>
-  Â  Â  Â  Â  Â  Â  Â  Â  Â  const CodeGenInstruction *MemInstr,<br>
-  Â  Â  Â  Â  Â  Â  Â  Â  Â  const UnfoldStrategy S = NO_STRATEGY);<br>
-<br>
-  // Generates X86FoldTableEntry with the given instructions and fill it with<br>
-  // the appropriate flags - then adds it to Table.<br>
-  void addEntryWithFlags(FoldTable &Table, const CodeGenInstruction *RegInstr,<br>
-  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â const CodeGenInstruction *MemInstr,<br>
-  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â const UnfoldStrategy S, const unsigned int FoldedInd);<br>
-<br>
-  // Print the given table as a static const C++ array of type<br>
-  // X86MemoryFoldTableEntry.<br>
-  void printTable(const FoldTable &Table, std::string TableName,<br>
-  Â  Â  Â  Â  Â  Â  Â  Â  raw_ostream &OS) {<br>
-  Â  OS << "\nstatic const X86MemoryFoldTableEntry MemoryFold" << TableName<br>
-  Â  Â  Â << "[] = {\n";<br>
-<br>
-  Â  for (const X86FoldTableEntry &E : Table)<br>
-  Â  Â  OS.indent(2) << E;<br>
-<br>
-  Â  OS << "};\n";<br>
-  }<br>
-};<br>
-<br>
-// Return true if one of the instruction's operands is a RST register class<br>
-static bool hasRSTRegClass(const CodeGenInstruction *Inst) {<br>
-  return any_of(Inst->Operands, [](const CGIOperandList::OperandInfo &OpIn) {<br>
-  Â  return OpIn.Rec->getName() == "RST";<br>
-  });<br>
-}<br>
-<br>
-// Return true if one of the instruction's operands is a ptr_rc_tailcall<br>
-static bool hasPtrTailcallRegClass(const CodeGenInstruction *Inst) {<br>
-  return any_of(Inst->Operands, [](const CGIOperandList::OperandInfo &OpIn) {<br>
-  Â  return OpIn.Rec->getName() == "ptr_rc_tailcall";<br>
-  });<br>
-}<br>
-<br>
-// Calculates the integer value representing the BitsInit object<br>
-static inline uint64_t getValueFromBitsInit(const BitsInit *B) {<br>
-  assert(B->getNumBits() <= sizeof(uint64_t) * CHAR_BIT &&<br>
-  Â  Â  Â  Â "BitInits' too long!");<br>
-<br>
-  uint64_t Value = 0;<br>
-  for (unsigned i = 0, e = B->getNumBits(); i != e; ++i) {<br>
-  Â  BitInit *Bit = cast<BitInit>(B->getBit(i));<br>
-  Â  Value |= uint64_t(Bit->getValue()) << i;<br>
-  }<br>
-  return Value;<br>
-}<br>
-<br>
-// Returns true if the two given BitsInits represent the same integer value<br>
-static inline bool equalBitsInits(const BitsInit *B1, const BitsInit *B2) {<br>
-  if (B1->getNumBits() != B2->getNumBits())<br>
-  Â  PrintFatalError("Comparing two BitsInits with different sizes!");<br>
-<br>
-  for (unsigned i = 0, e = B1->getNumBits(); i != e; ++i) {<br>
-  Â  BitInit *Bit1 = cast<BitInit>(B1->getBit(i));<br>
-  Â  BitInit *Bit2 = cast<BitInit>(B2->getBit(i));<br>
-  Â  if (Bit1->getValue() != Bit2->getValue())<br>
-  Â  Â  return false;<br>
-  }<br>
-  return true;<br>
-}<br>
-<br>
-// Return the size of the register operand<br>
-static inline unsigned int getRegOperandSize(const Record *RegRec) {<br>
-  if (RegRec->isSubClassOf("<wbr>RegisterOperand"))<br>
-  Â  RegRec = RegRec->getValueAsDef("<wbr>RegClass");<br>
-  if (RegRec->isSubClassOf("<wbr>RegisterClass"))<br>
-  Â  return RegRec->getValueAsListOfDefs("<wbr>RegTypes")[0]->getValueAsInt("<wbr>Size");<br>
-<br>
-  llvm_unreachable("Register operand's size not known!");<br>
-}<br>
-<br>
-// Return the size of the memory operand<br>
-static inline unsigned int<br>
-getMemOperandSize(const Record *MemRec, const bool IntrinsicSensitive = false) {<br>
-  if (MemRec->isSubClassOf("<wbr>Operand")) {<br>
-  Â  // Intrinsic memory instructions use ssmem/sdmem.<br>
-  Â  if (IntrinsicSensitive &&<br>
-  Â  Â  Â  (MemRec->getName() == "sdmem" || MemRec->getName() == "ssmem"))<br>
-  Â  Â  return 128;<br>
-<br>
-  Â  StringRef Name =<br>
-  Â  Â  Â  MemRec->getValueAsDef("<wbr>ParserMatchClass")-><wbr>getValueAsString("Name");<br>
-  Â  if (Name == "Mem8")<br>
-  Â  Â  return 8;<br>
-  Â  if (Name == "Mem16")<br>
-  Â  Â  return 16;<br>
-  Â  if (Name == "Mem32")<br>
-  Â  Â  return 32;<br>
-  Â  if (Name == "Mem64")<br>
-  Â  Â  return 64;<br>
-  Â  if (Name == "Mem80")<br>
-  Â  Â  return 80;<br>
-  Â  if (Name == "Mem128")<br>
-  Â  Â  return 128;<br>
-  Â  if (Name == "Mem256")<br>
-  Â  Â  return 256;<br>
-  Â  if (Name == "Mem512")<br>
-  Â  Â  return 512;<br>
-  }<br>
-<br>
-  llvm_unreachable("Memory operand's size not known!");<br>
-}<br>
-<br>
-// Returns true if the record's list of defs includes the given def.<br>
-static inline bool hasDefInList(const Record *Rec, const StringRef List,<br>
-  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  const StringRef Def) {<br>
-  if (!Rec->isValueUnset(List)) {<br>
-  Â  return any_of(*(Rec-><wbr>getValueAsListInit(List)),<br>
-  Â  Â  Â  Â  Â  Â  Â  Â  [Def](const Init *I) { return I->getAsString() == Def; });<br>
-  }<br>
-  return false;<br>
-}<br>
-<br>
-// Return true if the instruction defined as a register flavor.<br>
-static inline bool hasRegisterFormat(const Record *Inst) {<br>
-  const BitsInit *FormBits = Inst->getValueAsBitsInit("<wbr>FormBits");<br>
-  uint64_t FormBitsNum = getValueFromBitsInit(FormBits)<wbr>;<br>
-<br>
-  // Values from X86Local namespace defined in X86RecognizableInstr.cpp<br>
-  return FormBitsNum >= X86Local::MRMDestReg && FormBitsNum <= X86Local::MRM7r;<br>
-}<br>
-<br>
-// Return true if the instruction defined as a memory flavor.<br>
-static inline bool hasMemoryFormat(const Record *Inst) {<br>
-  const BitsInit *FormBits = Inst->getValueAsBitsInit("<wbr>FormBits");<br>
-  uint64_t FormBitsNum = getValueFromBitsInit(FormBits)<wbr>;<br>
-<br>
-  // Values from X86Local namespace defined in X86RecognizableInstr.cpp<br>
-  return FormBitsNum >= X86Local::MRMDestMem && FormBitsNum <= X86Local::MRM7m;<br>
-}<br>
-<br>
-static inline bool isNOREXRegClass(const Record *Op) {<br>
-  return Op->getName().find("_NOREX") != StringRef::npos;<br>
-}<br>
-<br>
-static inline bool isRegisterOperand(const Record *Rec) {<br>
-  return Rec->isSubClassOf("<wbr>RegisterClass") ||<br>
-  Â  Â  Â  Â Rec->isSubClassOf("<wbr>RegisterOperand") ||<br>
-  Â  Â  Â  Â Rec->isSubClassOf("<wbr>PointerLikeRegClass");<br>
-}<br>
-<br>
-static inline bool isMemoryOperand(const Record *Rec) {<br>
-  return Rec->isSubClassOf("Operand") &&<br>
-  Â  Â  Â  Â Rec->getValueAsString("<wbr>OperandType") == "OPERAND_MEMORY";<br>
-}<br>
-<br>
-static inline bool isImmediateOperand(const Record *Rec) {<br>
-  return Rec->isSubClassOf("Operand") &&<br>
-  Â  Â  Â  Â Rec->getValueAsString("<wbr>OperandType") == "OPERAND_IMMEDIATE";<br>
-}<br>
-<br>
-// Get the alternative instruction pointed by "FoldGenRegForm" field.<br>
-static inline const CodeGenInstruction *<br>
-getAltRegInst(const CodeGenInstruction *I, const RecordKeeper &Records,<br>
-  Â  Â  Â  Â  Â  Â  const CodeGenTarget &Target) {<br>
-<br>
-  std::string AltRegInstStr = I->TheDef->getValueAsString("<wbr>FoldGenRegForm");<br>
-  Record *AltRegInstRec = Records.getDef(AltRegInstStr);<br>
-  assert(AltRegInstRec &&<br>
-  Â  Â  Â  Â "Alternative register form instruction def not found");<br>
-  CodeGenInstruction &AltRegInst = Target.getInstruction(<wbr>AltRegInstRec);<br>
-  return &AltRegInst;<br>
-}<br>
-<br>
-// Function object - Operator() returns true if the given VEX instruction<br>
-// matches the EVEX instruction of this object.<br>
-class IsMatch {<br>
-  const CodeGenInstruction *MemInst;<br>
-  const RecordKeeper &Records;<br>
-<br>
-public:<br>
-  IsMatch(const CodeGenInstruction *Inst, const RecordKeeper &Records)<br>
-  Â  Â  : MemInst(Inst), Records(Records) {}<br>
-<br>
-  bool operator()(const CodeGenInstruction *RegInst) {<br>
-  Â  Record *MemRec = MemInst->TheDef;<br>
-  Â  Record *RegRec = RegInst->TheDef;<br>
-<br>
-  Â  // Return false if one (at least) of the encoding fields of both<br>
-  Â  // instructions do not match.<br>
-  Â  if (RegRec->getValueAsDef("OpEnc"<wbr>) != MemRec->getValueAsDef("OpEnc") ||<br>
-  Â  Â  Â  !equalBitsInits(RegRec-><wbr>getValueAsBitsInit("Opcode"),<br>
-  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  MemRec->getValueAsBitsInit("<wbr>Opcode")) ||<br>
-  Â  Â  Â  // VEX/EVEX fields<br>
-  Â  Â  Â  RegRec->getValueAsDef("<wbr>OpPrefix") !=<br>
-  Â  Â  Â  Â  Â  MemRec->getValueAsDef("<wbr>OpPrefix") ||<br>
-  Â  Â  Â  RegRec->getValueAsDef("OpMap") != MemRec->getValueAsDef("OpMap") ||<br>
-  Â  Â  Â  RegRec->getValueAsDef("OpSize"<wbr>) != MemRec->getValueAsDef("OpSize"<wbr>) ||<br>
-  Â  Â  Â  RegRec->getValueAsBit("hasVEX_<wbr>4V") !=<br>
-  Â  Â  Â  Â  Â  MemRec->getValueAsBit("hasVEX_<wbr>4V") ||<br>
-  Â  Â  Â  RegRec->getValueAsBit("<wbr>hasEVEX_K") !=<br>
-  Â  Â  Â  Â  Â  MemRec->getValueAsBit("<wbr>hasEVEX_K") ||<br>
-  Â  Â  Â  RegRec->getValueAsBit("<wbr>hasEVEX_Z") !=<br>
-  Â  Â  Â  Â  Â  MemRec->getValueAsBit("<wbr>hasEVEX_Z") ||<br>
-  Â  Â  Â  RegRec->getValueAsBit("<wbr>hasEVEX_B") !=<br>
-  Â  Â  Â  Â  Â  MemRec->getValueAsBit("<wbr>hasEVEX_B") ||<br>
-  Â  Â  Â  RegRec->getValueAsBit("<wbr>hasEVEX_RC") !=<br>
-  Â  Â  Â  Â  Â  MemRec->getValueAsBit("<wbr>hasEVEX_RC") ||<br>
-  Â  Â  Â  RegRec->getValueAsBit("hasREX_<wbr>WPrefix") !=<br>
-  Â  Â  Â  Â  Â  MemRec->getValueAsBit("hasREX_<wbr>WPrefix") ||<br>
-  Â  Â  Â  RegRec->getValueAsBit("<wbr>hasLockPrefix") !=<br>
-  Â  Â  Â  Â  Â  MemRec->getValueAsBit("<wbr>hasLockPrefix") ||<br>
-  Â  Â  Â  !equalBitsInits(RegRec-><wbr>getValueAsBitsInit("EVEX_LL"),<br>
-  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  MemRec->getValueAsBitsInit("<wbr>EVEX_LL")) ||<br>
-  Â  Â  Â  !equalBitsInits(RegRec-><wbr>getValueAsBitsInit("VEX_<wbr>WPrefix"),<br>
-  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  MemRec->getValueAsBitsInit("<wbr>VEX_WPrefix")) ||<br>
-  Â  Â  Â  // Instruction's format - The register form's "Form" field should be<br>
-  Â  Â  Â  // the opposite of the memory form's "Form" field.<br>
-  Â  Â  Â  !areOppositeForms(RegRec-><wbr>getValueAsBitsInit("FormBits")<wbr>,<br>
-  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  MemRec->getValueAsBitsInit("<wbr>FormBits")) ||<br>
-  Â  Â  Â  RegRec->getValueAsBit("<wbr>isAsmParserOnly") !=<br>
-  Â  Â  Â  Â  Â  MemRec->getValueAsBit("<wbr>isAsmParserOnly"))<br>
-  Â  Â  return false;<br>
-<br>
-  Â  // Make sure the sizes of the operands of both instructions suit each other.<br>
-  Â  // This is needed for instructions with intrinsic version (_Int).<br>
-  Â  // Where the only difference is the size of the operands.<br>
-  Â  // For example: VUCOMISDZrm and Int_VUCOMISDrm<br>
-  Â  // Also for instructions that their EVEX version was upgraded to work with<br>
-  Â  // k-registers. For example VPCMPEQBrm (xmm output register) and<br>
-  Â  // VPCMPEQBZ128rm (k register output register).<br>
-  Â  bool ArgFolded = false;<br>
-  Â  unsigned MemOutSize = MemRec->getValueAsDag("<wbr>OutOperandList")->getNumArgs()<wbr>;<br>
-  Â  unsigned RegOutSize = RegRec->getValueAsDag("<wbr>OutOperandList")->getNumArgs()<wbr>;<br>
-  Â  unsigned MemInSize = MemRec->getValueAsDag("<wbr>InOperandList")->getNumArgs();<br>
-  Â  unsigned RegInSize = RegRec->getValueAsDag("<wbr>InOperandList")->getNumArgs();<br>
-<br>
-  Â  // Instructions with one output in their memory form use the memory folded<br>
-  Â  // operand as source and destination (Read-Modify-Write).<br>
-  Â  unsigned RegStartIdx =<br>
-  Â  Â  Â  (MemOutSize + 1 == RegOutSize) && (MemInSize == RegInSize) ? 1 : 0;<br>
-<br>
-  Â  for (unsigned i = 0, e = MemInst->Operands.size(); i < e; i++) {<br>
-  Â  Â  Record *MemOpRec = MemInst->Operands[i].Rec;<br>
-  Â  Â  Record *RegOpRec = RegInst->Operands[i + RegStartIdx].Rec;<br>
-<br>
-  Â  Â  if (MemOpRec == RegOpRec)<br>
-  Â  Â  Â  continue;<br>
-<br>
-  Â  Â  if (isRegisterOperand(MemOpRec) && isRegisterOperand(RegOpRec)) {<br>
-  Â  Â  Â  if (getRegOperandSize(MemOpRec) != getRegOperandSize(RegOpRec) ||<br>
-  Â  Â  Â  Â  Â  isNOREXRegClass(MemOpRec) != isNOREXRegClass(RegOpRec))<br>
-  Â  Â  Â  Â  return false;<br>
-  Â  Â  } else if (isMemoryOperand(MemOpRec) && isMemoryOperand(RegOpRec)) {<br>
-  Â  Â  Â  if (getMemOperandSize(MemOpRec) != getMemOperandSize(RegOpRec))<br>
-  Â  Â  Â  Â  return false;<br>
-  Â  Â  } else if (isImmediateOperand(MemOpRec) && isImmediateOperand(RegOpRec)) {<br>
-  Â  Â  Â  if (MemOpRec->getValueAsDef("<wbr>Type") != RegOpRec->getValueAsDef("Type"<wbr>))<br>
-  Â  Â  Â  Â  return false;<br>
-  Â  Â  } else {<br>
-  Â  Â  Â  // Only one operand can be folded.<br>
-  Â  Â  Â  if (ArgFolded)<br>
-  Â  Â  Â  Â  return false;<br>
-<br>
-  Â  Â  Â  assert(isRegisterOperand(<wbr>RegOpRec) && isMemoryOperand(MemOpRec));<br>
-  Â  Â  Â  ArgFolded = true;<br>
-  Â  Â  }<br>
-  Â  }<br>
-<br>
-  Â  return true;<br>
-  }<br>
-<br>
-private:<br>
-  // Return true of the 2 given forms are the opposite of each other.<br>
-  bool areOppositeForms(const BitsInit *RegFormBits,<br>
-  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  const BitsInit *MemFormBits) {<br>
-  Â  uint64_t MemFormNum = getValueFromBitsInit(<wbr>MemFormBits);<br>
-  Â  uint64_t RegFormNum = getValueFromBitsInit(<wbr>RegFormBits);<br>
-<br>
-  Â  if ((MemFormNum == X86Local::MRM0m && RegFormNum == X86Local::MRM0r) ||<br>
-  Â  Â  Â  (MemFormNum == X86Local::MRM1m && RegFormNum == X86Local::MRM1r) ||<br>
-  Â  Â  Â  (MemFormNum == X86Local::MRM2m && RegFormNum == X86Local::MRM2r) ||<br>
-  Â  Â  Â  (MemFormNum == X86Local::MRM3m && RegFormNum == X86Local::MRM3r) ||<br>
-  Â  Â  Â  (MemFormNum == X86Local::MRM4m && RegFormNum == X86Local::MRM4r) ||<br>
-  Â  Â  Â  (MemFormNum == X86Local::MRM5m && RegFormNum == X86Local::MRM5r) ||<br>
-  Â  Â  Â  (MemFormNum == X86Local::MRM6m && RegFormNum == X86Local::MRM6r) ||<br>
-  Â  Â  Â  (MemFormNum == X86Local::MRM7m && RegFormNum == X86Local::MRM7r) ||<br>
-  Â  Â  Â  (MemFormNum == X86Local::MRMXm && RegFormNum == X86Local::MRMXr) ||<br>
-  Â  Â  Â  (MemFormNum == X86Local::MRMDestMem &&<br>
-  Â  Â  Â  Â RegFormNum == X86Local::MRMDestReg) ||<br>
-  Â  Â  Â  (MemFormNum == X86Local::MRMSrcMem &&<br>
-  Â  Â  Â  Â RegFormNum == X86Local::MRMSrcReg) ||<br>
-  Â  Â  Â  (MemFormNum == X86Local::MRMSrcMem4VOp3 &&<br>
-  Â  Â  Â  Â RegFormNum == X86Local::MRMSrcReg4VOp3) ||<br>
-  Â  Â  Â  (MemFormNum == X86Local::MRMSrcMemOp4 &&<br>
-  Â  Â  Â  Â RegFormNum == X86Local::MRMSrcRegOp4))<br>
-  Â  Â  return true;<br>
-<br>
-  Â  return false;<br>
-  }<br>
-};<br>
-<br>
-} // end anonymous namespace<br>
-<br>
-void X86FoldTablesEmitter::<wbr>addEntryWithFlags(FoldTable &Table,<br>
-  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â const CodeGenInstruction *RegInstr,<br>
-  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â const CodeGenInstruction *MemInstr,<br>
-  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â const UnfoldStrategy S,<br>
-  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â const unsigned int FoldedInd) {<br>
-<br>
-  X86FoldTableEntry Result = X86FoldTableEntry(RegInstr, MemInstr);<br>
-  Record *RegRec = RegInstr->TheDef;<br>
-  Record *MemRec = MemInstr->TheDef;<br>
-<br>
-  // Only table0 entries should explicitly specify a load or store flag.<br>
-  if (&Table == &Table0) {<br>
-  Â  unsigned MemInOpsNum = MemRec->getValueAsDag("<wbr>InOperandList")->getNumArgs();<br>
-  Â  unsigned RegInOpsNum = RegRec->getValueAsDag("<wbr>InOperandList")->getNumArgs();<br>
-  Â  // If the instruction writes to the folded operand, it will appear as an<br>
-  Â  // output in the register form instruction and as an input in the memory<br>
-  Â  // form instruction.<br>
-  Â  // If the instruction reads from the folded operand, it well appear as in<br>
-  Â  // input in both forms.<br>
-  Â  if (MemInOpsNum == RegInOpsNum)<br>
-  Â  Â  Result.IsLoad = true;<br>
-  Â  else<br>
-  Â  Â  Result.IsStore = true;<br>
-  }<br>
-<br>
-  Record *RegOpRec = RegInstr->Operands[FoldedInd].<wbr>Rec;<br>
-  Record *MemOpRec = MemInstr->Operands[FoldedInd].<wbr>Rec;<br>
-<br>
-  // Unfolding code generates a load/store instruction according to the size of<br>
-  // the register in the register form instruction.<br>
-  // If the register's size is greater than the memory's operand size, do not<br>
-  // allow unfolding.<br>
-  if (S == UNFOLD)<br>
-  Â  Result.CannotUnfold = false;<br>
-  else if (S == NO_UNFOLD)<br>
-  Â  Result.CannotUnfold = true;<br>
-  else if (getRegOperandSize(RegOpRec) > getMemOperandSize(MemOpRec))<br>
-  Â  Result.CannotUnfold = true; // S == NO_STRATEGY<br>
-<br>
-  uint64_t Enc = getValueFromBitsInit(RegRec-><wbr>getValueAsBitsInit("OpEncBits"<wbr>));<br>
-  if (isExplicitAlign(RegInstr)) {<br>
-  Â  // The instruction require explicitly aligned memory.<br>
-  Â  BitsInit *VectSize = RegRec->getValueAsBitsInit("<wbr>VectSize");<br>
-  Â  uint64_t Value = getValueFromBitsInit(VectSize)<wbr>;<br>
-  Â  Result.IsAligned = true;<br>
-  Â  Result.Alignment = Value;<br>
-  } else if (Enc != X86Local::XOP && Enc != X86Local::VEX &&<br>
-  Â  Â  Â  Â  Â  Â Enc != X86Local::EVEX) {<br>
-  Â  // Instructions with VEX encoding do not require alignment.<br>
-  Â  if (!isExplicitUnalign(RegInstr) && getMemOperandSize(MemOpRec) > 64) {<br>
-  Â  Â  // SSE packed vector instructions require a 16 byte alignment.<br>
-  Â  Â  Result.IsAligned = true;<br>
-  Â  Â  Result.Alignment = 16;<br>
-  Â  }<br>
-  }<br>
-<br>
-  Table.push_back(Result);<br>
-}<br>
-<br>
-void X86FoldTablesEmitter::<wbr>updateTables(const CodeGenInstruction *RegInstr,<br>
-  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  const CodeGenInstruction *MemInstr,<br>
-  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  const UnfoldStrategy S) {<br>
-<br>
-  Record *RegRec = RegInstr->TheDef;<br>
-  Record *MemRec = MemInstr->TheDef;<br>
-  unsigned MemOutSize = MemRec->getValueAsDag("<wbr>OutOperandList")->getNumArgs()<wbr>;<br>
-  unsigned RegOutSize = RegRec->getValueAsDag("<wbr>OutOperandList")->getNumArgs()<wbr>;<br>
-  unsigned MemInSize = MemRec->getValueAsDag("<wbr>InOperandList")->getNumArgs();<br>
-  unsigned RegInSize = RegRec->getValueAsDag("<wbr>InOperandList")->getNumArgs();<br>
-<br>
-  // Instructions which have the WriteRMW value (Read-Modify-Write) should be<br>
-  // added to Table2Addr.<br>
-  if (hasDefInList(MemRec, "SchedRW", "WriteRMW") && MemOutSize != RegOutSize &&<br>
-  Â  Â  MemInSize == RegInSize) {<br>
-  Â  addEntryWithFlags(Table2Addr, RegInstr, MemInstr, S, 0);<br>
-  Â  return;<br>
-  }<br>
-<br>
-  if (MemInSize == RegInSize && MemOutSize == RegOutSize) {<br>
-  Â  // Load-Folding cases.<br>
-  Â  // If the i'th register form operand is a register and the i'th memory form<br>
-  Â  // operand is a memory operand, add instructions to Table#i.<br>
-  Â  for (unsigned i = RegOutSize, e = RegInstr->Operands.size(); i < e; i++) {<br>
-  Â  Â  Record *RegOpRec = RegInstr->Operands[i].Rec;<br>
-  Â  Â  Record *MemOpRec = MemInstr->Operands[i].Rec;<br>
-  Â  Â  if (isRegisterOperand(RegOpRec) && isMemoryOperand(MemOpRec)) {<br>
-  Â  Â  Â  switch (i) {<br>
-  Â  Â  Â  default: llvm_unreachable("Unexpected operand count!");<br>
-  Â  Â  Â  case 0:<br>
-  Â  Â  Â  Â  addEntryWithFlags(Table0, RegInstr, MemInstr, S, 0);<br>
-  Â  Â  Â  Â  return;<br>
-  Â  Â  Â  case 1:<br>
-  Â  Â  Â  Â  addEntryWithFlags(Table1, RegInstr, MemInstr, S, 1);<br>
-  Â  Â  Â  Â  return;<br>
-  Â  Â  Â  case 2:<br>
-  Â  Â  Â  Â  addEntryWithFlags(Table2, RegInstr, MemInstr, S, 2);<br>
-  Â  Â  Â  Â  return;<br>
-  Â  Â  Â  case 3:<br>
-  Â  Â  Â  Â  addEntryWithFlags(Table3, RegInstr, MemInstr, S, 3);<br>
-  Â  Â  Â  Â  return;<br>
-  Â  Â  Â  case 4:<br>
-  Â  Â  Â  Â  addEntryWithFlags(Table4, RegInstr, MemInstr, S, 4);<br>
-  Â  Â  Â  Â  return;<br>
-  Â  Â  Â  }<br>
-  Â  Â  }<br>
-  Â  }<br>
-  } else if (MemInSize == RegInSize + 1 && MemOutSize + 1 == RegOutSize) {<br>
-  Â  // Store-Folding cases.<br>
-  Â  // If the memory form instruction performs performs a store, the *output*<br>
-  Â  // register of the register form instructions disappear and instead a<br>
-  Â  // memory *input* operand appears in the memory form instruction.<br>
-  Â  // For example:<br>
-  Â  //  Â MOVAPSrr => (outs VR128:$dst), (ins VR128:$src)<br>
-  Â  //  Â MOVAPSmr => (outs), (ins f128mem:$dst, VR128:$src)<br>
-  Â  Record *RegOpRec = RegInstr->Operands[RegOutSize - 1].Rec;<br>
-  Â  Record *MemOpRec = MemInstr->Operands[RegOutSize - 1].Rec;<br>
-  Â  if (isRegisterOperand(RegOpRec) && isMemoryOperand(MemOpRec))<br>
-  Â  Â  addEntryWithFlags(Table0, RegInstr, MemInstr, S, 0);<br>
-  }<br>
-<br>
-  return;<br>
-}<br>
-<br>
-void X86FoldTablesEmitter::run(raw_<wbr>ostream &OS) {<br>
-  emitSourceFileHeader("X86 fold tables", OS);<br>
-<br>
-  // Holds all memory instructions<br>
-  std::vector<const CodeGenInstruction *> MemInsts;<br>
-  // Holds all register instructions - divided according to opcode.<br>
-  std::map<uint8_t, std::vector<const CodeGenInstruction *>> RegInsts;<br>
-<br>
-  ArrayRef<const CodeGenInstruction *> NumberedInstructions =<br>
-  Â  Â  Target.<wbr>getInstructionsByEnumValue();<br>
-<br>
-  for (const CodeGenInstruction *Inst : NumberedInstructions) {<br>
-  Â  if (!Inst->TheDef->getNameInit() || !Inst->TheDef->isSubClassOf("<wbr>X86Inst"))<br>
-  Â  Â  continue;<br>
-<br>
-  Â  const Record *Rec = Inst->TheDef;<br>
-<br>
-  Â  // - Do not proceed matching if the instruction in NoFoldSet.<br>
-  Â  // - Instructions including RST register class operands are not relevant<br>
-  Â  //  Â for memory folding (for further details check the explanation in<br>
-  Â  //  Â lib/Target/X86/<wbr>X86InstrFPStack.td file).<br>
-  Â  // - Some instructions (listed in the manual map above) use the register<br>
-  Â  //  Â class ptr_rc_tailcall, which can be of a size 32 or 64, to ensure<br>
-  Â  //  Â safe mapping of these instruction we manually map them and exclude<br>
-  Â  //  Â them from the automation.<br>
-  Â  if (find(NoFoldSet, Rec->getName()) != std::end(NoFoldSet) ||<br>
-  Â  Â  Â  hasRSTRegClass(Inst) || hasPtrTailcallRegClass(Inst))<br>
-  Â  Â  continue;<br>
-<br>
-  Â  // Add all the memory form instructions to MemInsts, and all the register<br>
-  Â  // form instructions to RegInsts[Opc], where Opc in the opcode of each<br>
-  Â  // instructions. this helps reducing the runtime of the backend.<br>
-  Â  if (hasMemoryFormat(Rec))<br>
-  Â  Â  MemInsts.push_back(Inst);<br>
-  Â  else if (hasRegisterFormat(Rec)) {<br>
-  Â  Â  uint8_t Opc = getValueFromBitsInit(Rec-><wbr>getValueAsBitsInit("Opcode"));<br>
-  Â  Â  RegInsts[Opc].push_back(Inst);<br>
-  Â  }<br>
-  }<br>
-<br>
-  // For each memory form instruction, try to find its register form<br>
-  // instruction.<br>
-  for (const CodeGenInstruction *MemInst : MemInsts) {<br>
-  Â  uint8_t Opc =<br>
-  Â  Â  Â  getValueFromBitsInit(MemInst-><wbr>TheDef->getValueAsBitsInit("<wbr>Opcode"));<br>
-<br>
-  Â  if (RegInsts.count(Opc) == 0)<br>
-  Â  Â  continue;<br>
-<br>
-  Â  // Two forms (memory & register) of the same instruction must have the same<br>
-  Â  // opcode. try matching only with register form instructions with the same<br>
-  Â  // opcode.<br>
-  Â  std::vector<const CodeGenInstruction *> &OpcRegInsts =<br>
-  Â  Â  Â  RegInsts.find(Opc)->second;<br>
-<br>
-  Â  auto Match = find_if(OpcRegInsts, IsMatch(MemInst, Records));<br>
-  Â  if (Match != OpcRegInsts.end()) {<br>
-  Â  Â  const CodeGenInstruction *RegInst = *Match;<br>
-  Â  Â  // If the matched instruction has it's "FoldGenRegForm" set, map the<br>
-  Â  Â  // memory form instruction to the register form instruction pointed by<br>
-  Â  Â  // this field<br>
-  Â  Â  if (RegInst->TheDef-><wbr>isValueUnset("FoldGenRegForm")<wbr>) {<br>
-  Â  Â  Â  updateTables(RegInst, MemInst);<br>
-  Â  Â  } else {<br>
-  Â  Â  Â  const CodeGenInstruction *AltRegInst =<br>
-  Â  Â  Â  Â  Â  getAltRegInst(RegInst, Records, Target);<br>
-  Â  Â  Â  updateTables(AltRegInst, MemInst);<br>
-  Â  Â  }<br>
-  Â  Â  OpcRegInsts.erase(Match);<br>
-  Â  }<br>
-  }<br>
-<br>
-  // Add the manually mapped instructions listed above.<br>
-  for (const ManualMapEntry &Entry : ManualMapSet) {<br>
-  Â  Record *RegInstIter = Records.getDef(Entry.<wbr>RegInstStr);<br>
-  Â  Record *MemInstIter = Records.getDef(Entry.<wbr>MemInstStr);<br>
-<br>
-  Â  updateTables(&(Target.<wbr>getInstruction(RegInstIter)),<br>
-  Â  Â  Â  Â  Â  Â  Â  Â &(Target.getInstruction(<wbr>MemInstIter)), Entry.Strategy);<br>
-  }<br>
-<br>
-  // Print all tables to raw_ostream OS.<br>
-  printTable(Table2Addr, "Table2Addr", OS);<br>
-  printTable(Table0, "Table0", OS);<br>
-  printTable(Table1, "Table1", OS);<br>
-  printTable(Table2, "Table2", OS);<br>
-  printTable(Table3, "Table3", OS);<br>
-  printTable(Table4, "Table4", OS);<br>
-}<br>
-<br>
-namespace llvm {<br>
-<br>
-void EmitX86FoldTables(RecordKeeper &RK, raw_ostream &OS) {<br>
-  X86FoldTablesEmitter(RK).run(<wbr>OS);<br>
-}<br>
-} // namespace llvm<br>
<br>
<br>
______________________________<wbr>_________________<br>
llvm-commits mailing list<br>
<a href="mailto:llvm-commits@lists.llvm.org">llvm-commits@lists.llvm.org</a><br>
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/<wbr>mailman/listinfo/llvm-commits</a><br>
</blockquote></div><br></div>