Line endings fix. NFC.
authorSimon Pilgrim <llvm-dev@redking.me.uk>
Wed, 28 Jan 2015 21:56:52 +0000 (21:56 +0000)
committerSimon Pilgrim <llvm-dev@redking.me.uk>
Wed, 28 Jan 2015 21:56:52 +0000 (21:56 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@227374 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/X86/InstPrinter/X86InstComments.cpp

index b7b2ba36ce706beeee0d9a6e359a3c27db0b054b..c0e910f5d7e2f09c60e535c3ad3f11414ddb1b7f 100644 (file)
-//===-- X86InstComments.cpp - Generate verbose-asm comments for instrs ----===//
-//
-//                     The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-//
-// This defines functionality used to emit comments about X86 instructions to
-// an output stream for -fverbose-asm.
-//
-//===----------------------------------------------------------------------===//
-
-#include "X86InstComments.h"
-#include "MCTargetDesc/X86MCTargetDesc.h"
-#include "Utils/X86ShuffleDecode.h"
-#include "llvm/MC/MCInst.h"
-#include "llvm/CodeGen/MachineValueType.h"
-#include "llvm/Support/raw_ostream.h"
-
-using namespace llvm;
-
-//===----------------------------------------------------------------------===//
-// Top Level Entrypoint
-//===----------------------------------------------------------------------===//
-
-/// EmitAnyX86InstComments - This function decodes x86 instructions and prints
-/// newline terminated strings to the specified string if desired.  This
-/// information is shown in disassembly dumps when verbose assembly is enabled.
-bool llvm::EmitAnyX86InstComments(const MCInst *MI, raw_ostream &OS,
-                                  const char *(*getRegName)(unsigned)) {
-  // If this is a shuffle operation, the switch should fill in this state.
-  SmallVector<int, 8> ShuffleMask;
-  const char *DestName = nullptr, *Src1Name = nullptr, *Src2Name = nullptr;
-
-  switch (MI->getOpcode()) {
-  default:
-    // Not an instruction for which we can decode comments.
-    return false;
-
-  case X86::BLENDPDrri:
-  case X86::VBLENDPDrri:
-    Src2Name = getRegName(MI->getOperand(2).getReg());
-    // FALL THROUGH.
-  case X86::BLENDPDrmi:
-  case X86::VBLENDPDrmi:
-    if(MI->getOperand(MI->getNumOperands()-1).isImm())
-      DecodeBLENDMask(MVT::v2f64,
-                      MI->getOperand(MI->getNumOperands()-1).getImm(),
-                      ShuffleMask);
-    Src1Name = getRegName(MI->getOperand(1).getReg());
-    DestName = getRegName(MI->getOperand(0).getReg());
-    break;
-  case X86::VBLENDPDYrri:
-    Src2Name = getRegName(MI->getOperand(2).getReg());
-    // FALL THROUGH.
-  case X86::VBLENDPDYrmi:
-    if(MI->getOperand(MI->getNumOperands()-1).isImm())
-      DecodeBLENDMask(MVT::v4f64,
-                      MI->getOperand(MI->getNumOperands()-1).getImm(),
-                      ShuffleMask);
-    Src1Name = getRegName(MI->getOperand(1).getReg());
-    DestName = getRegName(MI->getOperand(0).getReg());
-    break;
-
-  case X86::BLENDPSrri:
-  case X86::VBLENDPSrri:
-    Src2Name = getRegName(MI->getOperand(2).getReg());
-    // FALL THROUGH.
-  case X86::BLENDPSrmi:
-  case X86::VBLENDPSrmi:
-    if(MI->getOperand(MI->getNumOperands()-1).isImm())
-      DecodeBLENDMask(MVT::v4f32,
-                      MI->getOperand(MI->getNumOperands()-1).getImm(),
-                      ShuffleMask);
-    Src1Name = getRegName(MI->getOperand(1).getReg());
-    DestName = getRegName(MI->getOperand(0).getReg());
-    break;
-  case X86::VBLENDPSYrri:
-    Src2Name = getRegName(MI->getOperand(2).getReg());
-    // FALL THROUGH.
-  case X86::VBLENDPSYrmi:
-    if(MI->getOperand(MI->getNumOperands()-1).isImm())
-      DecodeBLENDMask(MVT::v8f32,
-                      MI->getOperand(MI->getNumOperands()-1).getImm(),
-                      ShuffleMask);
-    Src1Name = getRegName(MI->getOperand(1).getReg());
-    DestName = getRegName(MI->getOperand(0).getReg());
-    break;
-
-  case X86::PBLENDWrri:
-  case X86::VPBLENDWrri:
-    Src2Name = getRegName(MI->getOperand(2).getReg());
-    // FALL THROUGH.
-  case X86::PBLENDWrmi:
-  case X86::VPBLENDWrmi:
-    if(MI->getOperand(MI->getNumOperands()-1).isImm())
-      DecodeBLENDMask(MVT::v8i16,
-                      MI->getOperand(MI->getNumOperands()-1).getImm(),
-                      ShuffleMask);
-    Src1Name = getRegName(MI->getOperand(1).getReg());
-    DestName = getRegName(MI->getOperand(0).getReg());
-    break;
-  case X86::VPBLENDWYrri:
-    Src2Name = getRegName(MI->getOperand(2).getReg());
-    // FALL THROUGH.
-  case X86::VPBLENDWYrmi:
-    if(MI->getOperand(MI->getNumOperands()-1).isImm())
-      DecodeBLENDMask(MVT::v16i16,
-                      MI->getOperand(MI->getNumOperands()-1).getImm(),
-                      ShuffleMask);
-    Src1Name = getRegName(MI->getOperand(1).getReg());
-    DestName = getRegName(MI->getOperand(0).getReg());
-    break;
-
-  case X86::VPBLENDDrri:
-    Src2Name = getRegName(MI->getOperand(2).getReg());
-    // FALL THROUGH.
-  case X86::VPBLENDDrmi:
-    if(MI->getOperand(MI->getNumOperands()-1).isImm())
-      DecodeBLENDMask(MVT::v4i32,
-                      MI->getOperand(MI->getNumOperands()-1).getImm(),
-                      ShuffleMask);
-    Src1Name = getRegName(MI->getOperand(1).getReg());
-    DestName = getRegName(MI->getOperand(0).getReg());
-    break;
-
-  case X86::VPBLENDDYrri:
-    Src2Name = getRegName(MI->getOperand(2).getReg());
-    // FALL THROUGH.
-  case X86::VPBLENDDYrmi:
-    if(MI->getOperand(MI->getNumOperands()-1).isImm())
-      DecodeBLENDMask(MVT::v8i32,
-                      MI->getOperand(MI->getNumOperands()-1).getImm(),
-                      ShuffleMask);
-    Src1Name = getRegName(MI->getOperand(1).getReg());
-    DestName = getRegName(MI->getOperand(0).getReg());
-    break;
-
-  case X86::INSERTPSrr:
-  case X86::VINSERTPSrr:
-    Src2Name = getRegName(MI->getOperand(2).getReg());
-    // FALL THROUGH.
-  case X86::INSERTPSrm:
-  case X86::VINSERTPSrm:
-    DestName = getRegName(MI->getOperand(0).getReg());
-    Src1Name = getRegName(MI->getOperand(1).getReg());
-    if(MI->getOperand(MI->getNumOperands()-1).isImm())
-      DecodeINSERTPSMask(MI->getOperand(MI->getNumOperands()-1).getImm(),
-                         ShuffleMask);
-    break;
-
-  case X86::MOVLHPSrr:
-  case X86::VMOVLHPSrr:
-    Src2Name = getRegName(MI->getOperand(2).getReg());
-    Src1Name = getRegName(MI->getOperand(1).getReg());
-    DestName = getRegName(MI->getOperand(0).getReg());
-    DecodeMOVLHPSMask(2, ShuffleMask);
-    break;
-
-  case X86::MOVHLPSrr:
-  case X86::VMOVHLPSrr:
-    Src2Name = getRegName(MI->getOperand(2).getReg());
-    Src1Name = getRegName(MI->getOperand(1).getReg());
-    DestName = getRegName(MI->getOperand(0).getReg());
-    DecodeMOVHLPSMask(2, ShuffleMask);
-    break;
-
-  case X86::MOVSLDUPrr:
-  case X86::VMOVSLDUPrr:
-    Src1Name = getRegName(MI->getOperand(1).getReg());
-    // FALL THROUGH.
-  case X86::MOVSLDUPrm:
-  case X86::VMOVSLDUPrm:
-    DestName = getRegName(MI->getOperand(0).getReg());
-    DecodeMOVSLDUPMask(MVT::v4f32, ShuffleMask);
-    break;
-
-  case X86::VMOVSHDUPYrr:
-    Src1Name = getRegName(MI->getOperand(1).getReg());
-    // FALL THROUGH.
-  case X86::VMOVSHDUPYrm:
-    DestName = getRegName(MI->getOperand(0).getReg());
-    DecodeMOVSHDUPMask(MVT::v8f32, ShuffleMask);
-    break;
-
-  case X86::VMOVSLDUPYrr:
-    Src1Name = getRegName(MI->getOperand(1).getReg());
-    // FALL THROUGH.
-  case X86::VMOVSLDUPYrm:
-    DestName = getRegName(MI->getOperand(0).getReg());
-    DecodeMOVSLDUPMask(MVT::v8f32, ShuffleMask);
-    break;
-
-  case X86::MOVSHDUPrr:
-  case X86::VMOVSHDUPrr:
-    Src1Name = getRegName(MI->getOperand(1).getReg());
-    // FALL THROUGH.
-  case X86::MOVSHDUPrm:
-  case X86::VMOVSHDUPrm:
-    DestName = getRegName(MI->getOperand(0).getReg());
+//===-- X86InstComments.cpp - Generate verbose-asm comments for instrs ----===//\r
+//\r
+//                     The LLVM Compiler Infrastructure\r
+//\r
+// This file is distributed under the University of Illinois Open Source\r
+// License. See LICENSE.TXT for details.\r
+//\r
+//===----------------------------------------------------------------------===//\r
+//\r
+// This defines functionality used to emit comments about X86 instructions to\r
+// an output stream for -fverbose-asm.\r
+//\r
+//===----------------------------------------------------------------------===//\r
+\r
+#include "X86InstComments.h"\r
+#include "MCTargetDesc/X86MCTargetDesc.h"\r
+#include "Utils/X86ShuffleDecode.h"\r
+#include "llvm/MC/MCInst.h"\r
+#include "llvm/CodeGen/MachineValueType.h"\r
+#include "llvm/Support/raw_ostream.h"\r
+\r
+using namespace llvm;\r
+\r
+//===----------------------------------------------------------------------===//\r
+// Top Level Entrypoint\r
+//===----------------------------------------------------------------------===//\r
+\r
+/// EmitAnyX86InstComments - This function decodes x86 instructions and prints\r
+/// newline terminated strings to the specified string if desired.  This\r
+/// information is shown in disassembly dumps when verbose assembly is enabled.\r
+bool llvm::EmitAnyX86InstComments(const MCInst *MI, raw_ostream &OS,\r
+                                  const char *(*getRegName)(unsigned)) {\r
+  // If this is a shuffle operation, the switch should fill in this state.\r
+  SmallVector<int, 8> ShuffleMask;\r
+  const char *DestName = nullptr, *Src1Name = nullptr, *Src2Name = nullptr;\r
+\r
+  switch (MI->getOpcode()) {\r
+  default:\r
+    // Not an instruction for which we can decode comments.\r
+    return false;\r
+\r
+  case X86::BLENDPDrri:\r
+  case X86::VBLENDPDrri:\r
+    Src2Name = getRegName(MI->getOperand(2).getReg());\r
+    // FALL THROUGH.\r
+  case X86::BLENDPDrmi:\r
+  case X86::VBLENDPDrmi:\r
+    if(MI->getOperand(MI->getNumOperands()-1).isImm())\r
+      DecodeBLENDMask(MVT::v2f64,\r
+                      MI->getOperand(MI->getNumOperands()-1).getImm(),\r
+                      ShuffleMask);\r
+    Src1Name = getRegName(MI->getOperand(1).getReg());\r
+    DestName = getRegName(MI->getOperand(0).getReg());\r
+    break;\r
+  case X86::VBLENDPDYrri:\r
+    Src2Name = getRegName(MI->getOperand(2).getReg());\r
+    // FALL THROUGH.\r
+  case X86::VBLENDPDYrmi:\r
+    if(MI->getOperand(MI->getNumOperands()-1).isImm())\r
+      DecodeBLENDMask(MVT::v4f64,\r
+                      MI->getOperand(MI->getNumOperands()-1).getImm(),\r
+                      ShuffleMask);\r
+    Src1Name = getRegName(MI->getOperand(1).getReg());\r
+    DestName = getRegName(MI->getOperand(0).getReg());\r
+    break;\r
+\r
+  case X86::BLENDPSrri:\r
+  case X86::VBLENDPSrri:\r
+    Src2Name = getRegName(MI->getOperand(2).getReg());\r
+    // FALL THROUGH.\r
+  case X86::BLENDPSrmi:\r
+  case X86::VBLENDPSrmi:\r
+    if(MI->getOperand(MI->getNumOperands()-1).isImm())\r
+      DecodeBLENDMask(MVT::v4f32,\r
+                      MI->getOperand(MI->getNumOperands()-1).getImm(),\r
+                      ShuffleMask);\r
+    Src1Name = getRegName(MI->getOperand(1).getReg());\r
+    DestName = getRegName(MI->getOperand(0).getReg());\r
+    break;\r
+  case X86::VBLENDPSYrri:\r
+    Src2Name = getRegName(MI->getOperand(2).getReg());\r
+    // FALL THROUGH.\r
+  case X86::VBLENDPSYrmi:\r
+    if(MI->getOperand(MI->getNumOperands()-1).isImm())\r
+      DecodeBLENDMask(MVT::v8f32,\r
+                      MI->getOperand(MI->getNumOperands()-1).getImm(),\r
+                      ShuffleMask);\r
+    Src1Name = getRegName(MI->getOperand(1).getReg());\r
+    DestName = getRegName(MI->getOperand(0).getReg());\r
+    break;\r
+\r
+  case X86::PBLENDWrri:\r
+  case X86::VPBLENDWrri:\r
+    Src2Name = getRegName(MI->getOperand(2).getReg());\r
+    // FALL THROUGH.\r
+  case X86::PBLENDWrmi:\r
+  case X86::VPBLENDWrmi:\r
+    if(MI->getOperand(MI->getNumOperands()-1).isImm())\r
+      DecodeBLENDMask(MVT::v8i16,\r
+                      MI->getOperand(MI->getNumOperands()-1).getImm(),\r
+                      ShuffleMask);\r
+    Src1Name = getRegName(MI->getOperand(1).getReg());\r
+    DestName = getRegName(MI->getOperand(0).getReg());\r
+    break;\r
+  case X86::VPBLENDWYrri:\r
+    Src2Name = getRegName(MI->getOperand(2).getReg());\r
+    // FALL THROUGH.\r
+  case X86::VPBLENDWYrmi:\r
+    if(MI->getOperand(MI->getNumOperands()-1).isImm())\r
+      DecodeBLENDMask(MVT::v16i16,\r
+                      MI->getOperand(MI->getNumOperands()-1).getImm(),\r
+                      ShuffleMask);\r
+    Src1Name = getRegName(MI->getOperand(1).getReg());\r
+    DestName = getRegName(MI->getOperand(0).getReg());\r
+    break;\r
+\r
+  case X86::VPBLENDDrri:\r
+    Src2Name = getRegName(MI->getOperand(2).getReg());\r
+    // FALL THROUGH.\r
+  case X86::VPBLENDDrmi:\r
+    if(MI->getOperand(MI->getNumOperands()-1).isImm())\r
+      DecodeBLENDMask(MVT::v4i32,\r
+                      MI->getOperand(MI->getNumOperands()-1).getImm(),\r
+                      ShuffleMask);\r
+    Src1Name = getRegName(MI->getOperand(1).getReg());\r
+    DestName = getRegName(MI->getOperand(0).getReg());\r
+    break;\r
+\r
+  case X86::VPBLENDDYrri:\r
+    Src2Name = getRegName(MI->getOperand(2).getReg());\r
+    // FALL THROUGH.\r
+  case X86::VPBLENDDYrmi:\r
+    if(MI->getOperand(MI->getNumOperands()-1).isImm())\r
+      DecodeBLENDMask(MVT::v8i32,\r
+                      MI->getOperand(MI->getNumOperands()-1).getImm(),\r
+                      ShuffleMask);\r
+    Src1Name = getRegName(MI->getOperand(1).getReg());\r
+    DestName = getRegName(MI->getOperand(0).getReg());\r
+    break;\r
+\r
+  case X86::INSERTPSrr:\r
+  case X86::VINSERTPSrr:\r
+    Src2Name = getRegName(MI->getOperand(2).getReg());\r
+    // FALL THROUGH.\r
+  case X86::INSERTPSrm:\r
+  case X86::VINSERTPSrm:\r
+    DestName = getRegName(MI->getOperand(0).getReg());\r
+    Src1Name = getRegName(MI->getOperand(1).getReg());\r
+    if(MI->getOperand(MI->getNumOperands()-1).isImm())\r
+      DecodeINSERTPSMask(MI->getOperand(MI->getNumOperands()-1).getImm(),\r
+                         ShuffleMask);\r
+    break;\r
+\r
+  case X86::MOVLHPSrr:\r
+  case X86::VMOVLHPSrr:\r
+    Src2Name = getRegName(MI->getOperand(2).getReg());\r
+    Src1Name = getRegName(MI->getOperand(1).getReg());\r
+    DestName = getRegName(MI->getOperand(0).getReg());\r
+    DecodeMOVLHPSMask(2, ShuffleMask);\r
+    break;\r
+\r
+  case X86::MOVHLPSrr:\r
+  case X86::VMOVHLPSrr:\r
+    Src2Name = getRegName(MI->getOperand(2).getReg());\r
+    Src1Name = getRegName(MI->getOperand(1).getReg());\r
+    DestName = getRegName(MI->getOperand(0).getReg());\r
+    DecodeMOVHLPSMask(2, ShuffleMask);\r
+    break;\r
+\r
+  case X86::MOVSLDUPrr:\r
+  case X86::VMOVSLDUPrr:\r
+    Src1Name = getRegName(MI->getOperand(1).getReg());\r
+    // FALL THROUGH.\r
+  case X86::MOVSLDUPrm:\r
+  case X86::VMOVSLDUPrm:\r
+    DestName = getRegName(MI->getOperand(0).getReg());\r
+    DecodeMOVSLDUPMask(MVT::v4f32, ShuffleMask);\r
+    break;\r
+\r
+  case X86::VMOVSHDUPYrr:\r
+    Src1Name = getRegName(MI->getOperand(1).getReg());\r
+    // FALL THROUGH.\r
+  case X86::VMOVSHDUPYrm:\r
+    DestName = getRegName(MI->getOperand(0).getReg());\r
+    DecodeMOVSHDUPMask(MVT::v8f32, ShuffleMask);\r
+    break;\r
+\r
+  case X86::VMOVSLDUPYrr:\r
+    Src1Name = getRegName(MI->getOperand(1).getReg());\r
+    // FALL THROUGH.\r
+  case X86::VMOVSLDUPYrm:\r
+    DestName = getRegName(MI->getOperand(0).getReg());\r
+    DecodeMOVSLDUPMask(MVT::v8f32, ShuffleMask);\r
+    break;\r
+\r
+  case X86::MOVSHDUPrr:\r
+  case X86::VMOVSHDUPrr:\r
+    Src1Name = getRegName(MI->getOperand(1).getReg());\r
+    // FALL THROUGH.\r
+  case X86::MOVSHDUPrm:\r
+  case X86::VMOVSHDUPrm:\r
+    DestName = getRegName(MI->getOperand(0).getReg());\r
     DecodeMOVSHDUPMask(MVT::v4f32, ShuffleMask);\r
     break;\r
 \r
@@ -224,587 +224,587 @@ bool llvm::EmitAnyX86InstComments(const MCInst *MI, raw_ostream &OS,
   case X86::PSLLDQri:\r
   case X86::VPSLLDQri:\r
     Src1Name = getRegName(MI->getOperand(1).getReg());\r
-    DestName = getRegName(MI->getOperand(0).getReg());
-    if(MI->getOperand(MI->getNumOperands()-1).isImm())
-      DecodePSLLDQMask(MVT::v16i8,
-                       MI->getOperand(MI->getNumOperands()-1).getImm(),
-                       ShuffleMask);
-    break;
-
-  case X86::VPSLLDQYri:
-    Src1Name = getRegName(MI->getOperand(1).getReg());
-    DestName = getRegName(MI->getOperand(0).getReg());
-    if(MI->getOperand(MI->getNumOperands()-1).isImm())
-      DecodePSLLDQMask(MVT::v32i8,
-                       MI->getOperand(MI->getNumOperands()-1).getImm(),
-                       ShuffleMask);
-    break;
-
-  case X86::PSRLDQri:
-  case X86::VPSRLDQri:
-    Src1Name = getRegName(MI->getOperand(1).getReg());
-    DestName = getRegName(MI->getOperand(0).getReg());
-    if(MI->getOperand(MI->getNumOperands()-1).isImm())
-      DecodePSRLDQMask(MVT::v16i8,
-                       MI->getOperand(MI->getNumOperands()-1).getImm(),
-                       ShuffleMask);
-    break;
-
-  case X86::VPSRLDQYri:
-    Src1Name = getRegName(MI->getOperand(1).getReg());
-    DestName = getRegName(MI->getOperand(0).getReg());
-    if(MI->getOperand(MI->getNumOperands()-1).isImm())
-      DecodePSRLDQMask(MVT::v32i8,
-                       MI->getOperand(MI->getNumOperands()-1).getImm(),
-                       ShuffleMask);
-    break;
-
-  case X86::PALIGNR128rr:
-  case X86::VPALIGNR128rr:
-    Src1Name = getRegName(MI->getOperand(2).getReg());
-    // FALL THROUGH.
-  case X86::PALIGNR128rm:
-  case X86::VPALIGNR128rm:
-    Src2Name = getRegName(MI->getOperand(1).getReg());
-    DestName = getRegName(MI->getOperand(0).getReg());
-    if(MI->getOperand(MI->getNumOperands()-1).isImm())
-      DecodePALIGNRMask(MVT::v16i8,
-                        MI->getOperand(MI->getNumOperands()-1).getImm(),
-                        ShuffleMask);
-    break;
-  case X86::VPALIGNR256rr:
-    Src1Name = getRegName(MI->getOperand(2).getReg());
-    // FALL THROUGH.
-  case X86::VPALIGNR256rm:
-    Src2Name = getRegName(MI->getOperand(1).getReg());
-    DestName = getRegName(MI->getOperand(0).getReg());
-    if(MI->getOperand(MI->getNumOperands()-1).isImm())
-      DecodePALIGNRMask(MVT::v32i8,
-                        MI->getOperand(MI->getNumOperands()-1).getImm(),
-                        ShuffleMask);
-    break;
-
-  case X86::PSHUFDri:
-  case X86::VPSHUFDri:
-    Src1Name = getRegName(MI->getOperand(1).getReg());
-    // FALL THROUGH.
-  case X86::PSHUFDmi:
-  case X86::VPSHUFDmi:
-    DestName = getRegName(MI->getOperand(0).getReg());
-    if(MI->getOperand(MI->getNumOperands()-1).isImm())
-      DecodePSHUFMask(MVT::v4i32,
-                      MI->getOperand(MI->getNumOperands()-1).getImm(),
-                      ShuffleMask);
-    break;
-  case X86::VPSHUFDYri:
-    Src1Name = getRegName(MI->getOperand(1).getReg());
-    // FALL THROUGH.
-  case X86::VPSHUFDYmi:
-    DestName = getRegName(MI->getOperand(0).getReg());
-    if(MI->getOperand(MI->getNumOperands()-1).isImm())
-      DecodePSHUFMask(MVT::v8i32,
-                      MI->getOperand(MI->getNumOperands()-1).getImm(),
-                      ShuffleMask);
-    break;
-
-
-  case X86::PSHUFHWri:
-  case X86::VPSHUFHWri:
-    Src1Name = getRegName(MI->getOperand(1).getReg());
-    // FALL THROUGH.
-  case X86::PSHUFHWmi:
-  case X86::VPSHUFHWmi:
-    DestName = getRegName(MI->getOperand(0).getReg());
-    if(MI->getOperand(MI->getNumOperands()-1).isImm())
-      DecodePSHUFHWMask(MVT::v8i16,
-                        MI->getOperand(MI->getNumOperands()-1).getImm(),
-                        ShuffleMask);
-    break;
-  case X86::VPSHUFHWYri:
-    Src1Name = getRegName(MI->getOperand(1).getReg());
-    // FALL THROUGH.
-  case X86::VPSHUFHWYmi:
-    DestName = getRegName(MI->getOperand(0).getReg());
-    if(MI->getOperand(MI->getNumOperands()-1).isImm())
-      DecodePSHUFHWMask(MVT::v16i16,
-                        MI->getOperand(MI->getNumOperands()-1).getImm(),
-                        ShuffleMask);
-    break;
-  case X86::PSHUFLWri:
-  case X86::VPSHUFLWri:
-    Src1Name = getRegName(MI->getOperand(1).getReg());
-    // FALL THROUGH.
-  case X86::PSHUFLWmi:
-  case X86::VPSHUFLWmi:
-    DestName = getRegName(MI->getOperand(0).getReg());
-    if(MI->getOperand(MI->getNumOperands()-1).isImm())
-      DecodePSHUFLWMask(MVT::v8i16,
-                        MI->getOperand(MI->getNumOperands()-1).getImm(),
-                        ShuffleMask);
-    break;
-  case X86::VPSHUFLWYri:
-    Src1Name = getRegName(MI->getOperand(1).getReg());
-    // FALL THROUGH.
-  case X86::VPSHUFLWYmi:
-    DestName = getRegName(MI->getOperand(0).getReg());
-    if(MI->getOperand(MI->getNumOperands()-1).isImm())
-      DecodePSHUFLWMask(MVT::v16i16,
-                        MI->getOperand(MI->getNumOperands()-1).getImm(),
-                        ShuffleMask);
-    break;
-
-  case X86::PUNPCKHBWrr:
-  case X86::VPUNPCKHBWrr:
-    Src2Name = getRegName(MI->getOperand(2).getReg());
-    // FALL THROUGH.
-  case X86::PUNPCKHBWrm:
-  case X86::VPUNPCKHBWrm:
-    Src1Name = getRegName(MI->getOperand(1).getReg());
-    DestName = getRegName(MI->getOperand(0).getReg());
-    DecodeUNPCKHMask(MVT::v16i8, ShuffleMask);
-    break;
-  case X86::VPUNPCKHBWYrr:
-    Src2Name = getRegName(MI->getOperand(2).getReg());
-    // FALL THROUGH.
-  case X86::VPUNPCKHBWYrm:
-    Src1Name = getRegName(MI->getOperand(1).getReg());
-    DestName = getRegName(MI->getOperand(0).getReg());
-    DecodeUNPCKHMask(MVT::v32i8, ShuffleMask);
-    break;
-  case X86::PUNPCKHWDrr:
-  case X86::VPUNPCKHWDrr:
-    Src2Name = getRegName(MI->getOperand(2).getReg());
-    // FALL THROUGH.
-  case X86::PUNPCKHWDrm:
-  case X86::VPUNPCKHWDrm:
-    Src1Name = getRegName(MI->getOperand(1).getReg());
-    DestName = getRegName(MI->getOperand(0).getReg());
-    DecodeUNPCKHMask(MVT::v8i16, ShuffleMask);
-    break;
-  case X86::VPUNPCKHWDYrr:
-    Src2Name = getRegName(MI->getOperand(2).getReg());
-    // FALL THROUGH.
-  case X86::VPUNPCKHWDYrm:
-    Src1Name = getRegName(MI->getOperand(1).getReg());
-    DestName = getRegName(MI->getOperand(0).getReg());
-    DecodeUNPCKHMask(MVT::v16i16, ShuffleMask);
-    break;
-  case X86::PUNPCKHDQrr:
-  case X86::VPUNPCKHDQrr:
-    Src2Name = getRegName(MI->getOperand(2).getReg());
-    // FALL THROUGH.
-  case X86::PUNPCKHDQrm:
-  case X86::VPUNPCKHDQrm:
-    Src1Name = getRegName(MI->getOperand(1).getReg());
-    DestName = getRegName(MI->getOperand(0).getReg());
-    DecodeUNPCKHMask(MVT::v4i32, ShuffleMask);
-    break;
-  case X86::VPUNPCKHDQYrr:
-    Src2Name = getRegName(MI->getOperand(2).getReg());
-    // FALL THROUGH.
-  case X86::VPUNPCKHDQYrm:
-    Src1Name = getRegName(MI->getOperand(1).getReg());
-    DestName = getRegName(MI->getOperand(0).getReg());
-    DecodeUNPCKHMask(MVT::v8i32, ShuffleMask);
-    break;
-  case X86::VPUNPCKHDQZrr:
-    Src2Name = getRegName(MI->getOperand(2).getReg());
-    // FALL THROUGH.
-  case X86::VPUNPCKHDQZrm:
-    Src1Name = getRegName(MI->getOperand(1).getReg());
-    DestName = getRegName(MI->getOperand(0).getReg());
-    DecodeUNPCKHMask(MVT::v16i32, ShuffleMask);
-    break;
-  case X86::PUNPCKHQDQrr:
-  case X86::VPUNPCKHQDQrr:
-    Src2Name = getRegName(MI->getOperand(2).getReg());
-    // FALL THROUGH.
-  case X86::PUNPCKHQDQrm:
-  case X86::VPUNPCKHQDQrm:
-    Src1Name = getRegName(MI->getOperand(1).getReg());
-    DestName = getRegName(MI->getOperand(0).getReg());
-    DecodeUNPCKHMask(MVT::v2i64, ShuffleMask);
-    break;
-  case X86::VPUNPCKHQDQYrr:
-    Src2Name = getRegName(MI->getOperand(2).getReg());
-    // FALL THROUGH.
-  case X86::VPUNPCKHQDQYrm:
-    Src1Name = getRegName(MI->getOperand(1).getReg());
-    DestName = getRegName(MI->getOperand(0).getReg());
-    DecodeUNPCKHMask(MVT::v4i64, ShuffleMask);
-    break;
-  case X86::VPUNPCKHQDQZrr:
-    Src2Name = getRegName(MI->getOperand(2).getReg());
-    // FALL THROUGH.
-  case X86::VPUNPCKHQDQZrm:
-    Src1Name = getRegName(MI->getOperand(1).getReg());
-    DestName = getRegName(MI->getOperand(0).getReg());
-    DecodeUNPCKHMask(MVT::v8i64, ShuffleMask);
-    break;
-
-  case X86::PUNPCKLBWrr:
-  case X86::VPUNPCKLBWrr:
-    Src2Name = getRegName(MI->getOperand(2).getReg());
-    // FALL THROUGH.
-  case X86::PUNPCKLBWrm:
-  case X86::VPUNPCKLBWrm:
-    Src1Name = getRegName(MI->getOperand(1).getReg());
-    DestName = getRegName(MI->getOperand(0).getReg());
-    DecodeUNPCKLMask(MVT::v16i8, ShuffleMask);
-    break;
-  case X86::VPUNPCKLBWYrr:
-    Src2Name = getRegName(MI->getOperand(2).getReg());
-    // FALL THROUGH.
-  case X86::VPUNPCKLBWYrm:
-    Src1Name = getRegName(MI->getOperand(1).getReg());
-    DestName = getRegName(MI->getOperand(0).getReg());
-    DecodeUNPCKLMask(MVT::v32i8, ShuffleMask);
-    break;
-  case X86::PUNPCKLWDrr:
-  case X86::VPUNPCKLWDrr:
-    Src2Name = getRegName(MI->getOperand(2).getReg());
-    // FALL THROUGH.
-  case X86::PUNPCKLWDrm:
-  case X86::VPUNPCKLWDrm:
-    Src1Name = getRegName(MI->getOperand(1).getReg());
-    DestName = getRegName(MI->getOperand(0).getReg());
-    DecodeUNPCKLMask(MVT::v8i16, ShuffleMask);
-    break;
-  case X86::VPUNPCKLWDYrr:
-    Src2Name = getRegName(MI->getOperand(2).getReg());
-    // FALL THROUGH.
-  case X86::VPUNPCKLWDYrm:
-    Src1Name = getRegName(MI->getOperand(1).getReg());
-    DestName = getRegName(MI->getOperand(0).getReg());
-    DecodeUNPCKLMask(MVT::v16i16, ShuffleMask);
-    break;
-  case X86::PUNPCKLDQrr:
-  case X86::VPUNPCKLDQrr:
-    Src2Name = getRegName(MI->getOperand(2).getReg());
-    // FALL THROUGH.
-  case X86::PUNPCKLDQrm:
-  case X86::VPUNPCKLDQrm:
-    Src1Name = getRegName(MI->getOperand(1).getReg());
-    DestName = getRegName(MI->getOperand(0).getReg());
-    DecodeUNPCKLMask(MVT::v4i32, ShuffleMask);
-    break;
-  case X86::VPUNPCKLDQYrr:
-    Src2Name = getRegName(MI->getOperand(2).getReg());
-    // FALL THROUGH.
-  case X86::VPUNPCKLDQYrm:
-    Src1Name = getRegName(MI->getOperand(1).getReg());
-    DestName = getRegName(MI->getOperand(0).getReg());
-    DecodeUNPCKLMask(MVT::v8i32, ShuffleMask);
-    break;
-  case X86::VPUNPCKLDQZrr:
-    Src2Name = getRegName(MI->getOperand(2).getReg());
-    // FALL THROUGH.
-  case X86::VPUNPCKLDQZrm:
-    Src1Name = getRegName(MI->getOperand(1).getReg());
-    DestName = getRegName(MI->getOperand(0).getReg());
-    DecodeUNPCKLMask(MVT::v16i32, ShuffleMask);
-    break;
-  case X86::PUNPCKLQDQrr:
-  case X86::VPUNPCKLQDQrr:
-    Src2Name = getRegName(MI->getOperand(2).getReg());
-    // FALL THROUGH.
-  case X86::PUNPCKLQDQrm:
-  case X86::VPUNPCKLQDQrm:
-    Src1Name = getRegName(MI->getOperand(1).getReg());
-    DestName = getRegName(MI->getOperand(0).getReg());
-    DecodeUNPCKLMask(MVT::v2i64, ShuffleMask);
-    break;
-  case X86::VPUNPCKLQDQYrr:
-    Src2Name = getRegName(MI->getOperand(2).getReg());
-    // FALL THROUGH.
-  case X86::VPUNPCKLQDQYrm:
-    Src1Name = getRegName(MI->getOperand(1).getReg());
-    DestName = getRegName(MI->getOperand(0).getReg());
-    DecodeUNPCKLMask(MVT::v4i64, ShuffleMask);
-    break;
-  case X86::VPUNPCKLQDQZrr:
-    Src2Name = getRegName(MI->getOperand(2).getReg());
-    // FALL THROUGH.
-  case X86::VPUNPCKLQDQZrm:
-    Src1Name = getRegName(MI->getOperand(1).getReg());
-    DestName = getRegName(MI->getOperand(0).getReg());
-    DecodeUNPCKLMask(MVT::v8i64, ShuffleMask);
-    break;
-
-  case X86::SHUFPDrri:
-  case X86::VSHUFPDrri:
-    Src2Name = getRegName(MI->getOperand(2).getReg());
-    // FALL THROUGH.
-  case X86::SHUFPDrmi:
-  case X86::VSHUFPDrmi:
-    if(MI->getOperand(MI->getNumOperands()-1).isImm())
-      DecodeSHUFPMask(MVT::v2f64,
-                      MI->getOperand(MI->getNumOperands()-1).getImm(),
-                      ShuffleMask);
-    Src1Name = getRegName(MI->getOperand(1).getReg());
-    DestName = getRegName(MI->getOperand(0).getReg());
-    break;
-  case X86::VSHUFPDYrri:
-    Src2Name = getRegName(MI->getOperand(2).getReg());
-    // FALL THROUGH.
-  case X86::VSHUFPDYrmi:
-    if(MI->getOperand(MI->getNumOperands()-1).isImm())
-      DecodeSHUFPMask(MVT::v4f64,
-                      MI->getOperand(MI->getNumOperands()-1).getImm(),
-                      ShuffleMask);
-    Src1Name = getRegName(MI->getOperand(1).getReg());
-    DestName = getRegName(MI->getOperand(0).getReg());
-    break;
-
-  case X86::SHUFPSrri:
-  case X86::VSHUFPSrri:
-    Src2Name = getRegName(MI->getOperand(2).getReg());
-    // FALL THROUGH.
-  case X86::SHUFPSrmi:
-  case X86::VSHUFPSrmi:
-    if(MI->getOperand(MI->getNumOperands()-1).isImm())
-      DecodeSHUFPMask(MVT::v4f32,
-                      MI->getOperand(MI->getNumOperands()-1).getImm(),
-                      ShuffleMask);
-    Src1Name = getRegName(MI->getOperand(1).getReg());
-    DestName = getRegName(MI->getOperand(0).getReg());
-    break;
-  case X86::VSHUFPSYrri:
-    Src2Name = getRegName(MI->getOperand(2).getReg());
-    // FALL THROUGH.
-  case X86::VSHUFPSYrmi:
-    if(MI->getOperand(MI->getNumOperands()-1).isImm())
-      DecodeSHUFPMask(MVT::v8f32,
-                      MI->getOperand(MI->getNumOperands()-1).getImm(),
-                      ShuffleMask);
-    Src1Name = getRegName(MI->getOperand(1).getReg());
-    DestName = getRegName(MI->getOperand(0).getReg());
-    break;
-
-  case X86::UNPCKLPDrr:
-  case X86::VUNPCKLPDrr:
-    Src2Name = getRegName(MI->getOperand(2).getReg());
-    // FALL THROUGH.
-  case X86::UNPCKLPDrm:
-  case X86::VUNPCKLPDrm:
-    DecodeUNPCKLMask(MVT::v2f64, ShuffleMask);
-    Src1Name = getRegName(MI->getOperand(1).getReg());
-    DestName = getRegName(MI->getOperand(0).getReg());
-    break;
-  case X86::VUNPCKLPDYrr:
-    Src2Name = getRegName(MI->getOperand(2).getReg());
-    // FALL THROUGH.
-  case X86::VUNPCKLPDYrm:
-    DecodeUNPCKLMask(MVT::v4f64, ShuffleMask);
-    Src1Name = getRegName(MI->getOperand(1).getReg());
-    DestName = getRegName(MI->getOperand(0).getReg());
-    break;
-  case X86::VUNPCKLPDZrr:
-    Src2Name = getRegName(MI->getOperand(2).getReg());
-    // FALL THROUGH.
-  case X86::VUNPCKLPDZrm:
-    DecodeUNPCKLMask(MVT::v8f64, ShuffleMask);
-    Src1Name = getRegName(MI->getOperand(1).getReg());
-    DestName = getRegName(MI->getOperand(0).getReg());
-    break;
-  case X86::UNPCKLPSrr:
-  case X86::VUNPCKLPSrr:
-    Src2Name = getRegName(MI->getOperand(2).getReg());
-    // FALL THROUGH.
-  case X86::UNPCKLPSrm:
-  case X86::VUNPCKLPSrm:
-    DecodeUNPCKLMask(MVT::v4f32, ShuffleMask);
-    Src1Name = getRegName(MI->getOperand(1).getReg());
-    DestName = getRegName(MI->getOperand(0).getReg());
-    break;
-  case X86::VUNPCKLPSYrr:
-    Src2Name = getRegName(MI->getOperand(2).getReg());
-    // FALL THROUGH.
-  case X86::VUNPCKLPSYrm:
-    DecodeUNPCKLMask(MVT::v8f32, ShuffleMask);
-    Src1Name = getRegName(MI->getOperand(1).getReg());
-    DestName = getRegName(MI->getOperand(0).getReg());
-    break;
-  case X86::VUNPCKLPSZrr:
-    Src2Name = getRegName(MI->getOperand(2).getReg());
-    // FALL THROUGH.
-  case X86::VUNPCKLPSZrm:
-    DecodeUNPCKLMask(MVT::v16f32, ShuffleMask);
-    Src1Name = getRegName(MI->getOperand(1).getReg());
-    DestName = getRegName(MI->getOperand(0).getReg());
-    break;
-  case X86::UNPCKHPDrr:
-  case X86::VUNPCKHPDrr:
-    Src2Name = getRegName(MI->getOperand(2).getReg());
-    // FALL THROUGH.
-  case X86::UNPCKHPDrm:
-  case X86::VUNPCKHPDrm:
-    DecodeUNPCKHMask(MVT::v2f64, ShuffleMask);
-    Src1Name = getRegName(MI->getOperand(1).getReg());
-    DestName = getRegName(MI->getOperand(0).getReg());
-    break;
-  case X86::VUNPCKHPDYrr:
-    Src2Name = getRegName(MI->getOperand(2).getReg());
-    // FALL THROUGH.
-  case X86::VUNPCKHPDYrm:
-    DecodeUNPCKHMask(MVT::v4f64, ShuffleMask);
-    Src1Name = getRegName(MI->getOperand(1).getReg());
-    DestName = getRegName(MI->getOperand(0).getReg());
-    break;
-  case X86::VUNPCKHPDZrr:
-    Src2Name = getRegName(MI->getOperand(2).getReg());
-    // FALL THROUGH.
-  case X86::VUNPCKHPDZrm:
-    DecodeUNPCKHMask(MVT::v8f64, ShuffleMask);
-    Src1Name = getRegName(MI->getOperand(1).getReg());
-    DestName = getRegName(MI->getOperand(0).getReg());
-    break;
-  case X86::UNPCKHPSrr:
-  case X86::VUNPCKHPSrr:
-    Src2Name = getRegName(MI->getOperand(2).getReg());
-    // FALL THROUGH.
-  case X86::UNPCKHPSrm:
-  case X86::VUNPCKHPSrm:
-    DecodeUNPCKHMask(MVT::v4f32, ShuffleMask);
-    Src1Name = getRegName(MI->getOperand(1).getReg());
-    DestName = getRegName(MI->getOperand(0).getReg());
-    break;
-  case X86::VUNPCKHPSYrr:
-    Src2Name = getRegName(MI->getOperand(2).getReg());
-    // FALL THROUGH.
-  case X86::VUNPCKHPSYrm:
-    DecodeUNPCKHMask(MVT::v8f32, ShuffleMask);
-    Src1Name = getRegName(MI->getOperand(1).getReg());
-    DestName = getRegName(MI->getOperand(0).getReg());
-    break;
-  case X86::VUNPCKHPSZrr:
-    Src2Name = getRegName(MI->getOperand(2).getReg());
-    // FALL THROUGH.
-  case X86::VUNPCKHPSZrm:
-    DecodeUNPCKHMask(MVT::v16f32, ShuffleMask);
-    Src1Name = getRegName(MI->getOperand(1).getReg());
-    DestName = getRegName(MI->getOperand(0).getReg());
-    break;
-  case X86::VPERMILPSri:
-    Src1Name = getRegName(MI->getOperand(1).getReg());
-    // FALL THROUGH.
-  case X86::VPERMILPSmi:
-    if(MI->getOperand(MI->getNumOperands()-1).isImm())
-      DecodePSHUFMask(MVT::v4f32,
-                      MI->getOperand(MI->getNumOperands()-1).getImm(),
-                      ShuffleMask);
-    DestName = getRegName(MI->getOperand(0).getReg());
-    break;
-  case X86::VPERMILPSYri:
-    Src1Name = getRegName(MI->getOperand(1).getReg());
-    // FALL THROUGH.
-  case X86::VPERMILPSYmi:
-    if(MI->getOperand(MI->getNumOperands()-1).isImm())
-      DecodePSHUFMask(MVT::v8f32,
-                      MI->getOperand(MI->getNumOperands()-1).getImm(),
-                      ShuffleMask);
-    DestName = getRegName(MI->getOperand(0).getReg());
-    break;
-  case X86::VPERMILPDri:
-    Src1Name = getRegName(MI->getOperand(1).getReg());
-    // FALL THROUGH.
-  case X86::VPERMILPDmi:
-    if(MI->getOperand(MI->getNumOperands()-1).isImm())
-      DecodePSHUFMask(MVT::v2f64,
-                      MI->getOperand(MI->getNumOperands()-1).getImm(),
-                      ShuffleMask);
-    DestName = getRegName(MI->getOperand(0).getReg());
-    break;
-  case X86::VPERMILPDYri:
-    Src1Name = getRegName(MI->getOperand(1).getReg());
-    // FALL THROUGH.
-  case X86::VPERMILPDYmi:
-    if(MI->getOperand(MI->getNumOperands()-1).isImm())
-      DecodePSHUFMask(MVT::v4f64,
-                      MI->getOperand(MI->getNumOperands()-1).getImm(),
-                      ShuffleMask);
-    DestName = getRegName(MI->getOperand(0).getReg());
-    break;
-  case X86::VPERM2F128rr:
-  case X86::VPERM2I128rr:
-    Src2Name = getRegName(MI->getOperand(2).getReg());
-    // FALL THROUGH.
-  case X86::VPERM2F128rm:
-  case X86::VPERM2I128rm:
-    // For instruction comments purpose, assume the 256-bit vector is v4i64.
-    if(MI->getOperand(MI->getNumOperands()-1).isImm())
-      DecodeVPERM2X128Mask(MVT::v4i64,
-                           MI->getOperand(MI->getNumOperands()-1).getImm(),
-                           ShuffleMask);
-    Src1Name = getRegName(MI->getOperand(1).getReg());
-    DestName = getRegName(MI->getOperand(0).getReg());
-    break;
-  case X86::VPERMQYri:
-  case X86::VPERMPDYri:
-    Src1Name = getRegName(MI->getOperand(1).getReg());
-    // FALL THROUGH.
-  case X86::VPERMQYmi:
-  case X86::VPERMPDYmi:
-    if(MI->getOperand(MI->getNumOperands()-1).isImm())
-      DecodeVPERMMask(MI->getOperand(MI->getNumOperands()-1).getImm(),
-                      ShuffleMask);
-    DestName = getRegName(MI->getOperand(0).getReg());
-    break;
-  }
-
-  // The only comments we decode are shuffles, so give up if we were unable to
-  // decode a shuffle mask.
-  if (ShuffleMask.empty())
-    return false;
-
-  if (!DestName) DestName = Src1Name;
-  OS << (DestName ? DestName : "mem") << " = ";
-
-  // If the two sources are the same, canonicalize the input elements to be
-  // from the first src so that we get larger element spans.
-  if (Src1Name == Src2Name) {
-    for (unsigned i = 0, e = ShuffleMask.size(); i != e; ++i) {
-      if ((int)ShuffleMask[i] >= 0 && // Not sentinel.
-          ShuffleMask[i] >= (int)e)        // From second mask.
-        ShuffleMask[i] -= e;
-    }
-  }
-
-  // The shuffle mask specifies which elements of the src1/src2 fill in the
-  // destination, with a few sentinel values.  Loop through and print them
-  // out.
-  for (unsigned i = 0, e = ShuffleMask.size(); i != e; ++i) {
-    if (i != 0)
-      OS << ',';
-    if (ShuffleMask[i] == SM_SentinelZero) {
-      OS << "zero";
-      continue;
-    }
-
-    // Otherwise, it must come from src1 or src2.  Print the span of elements
-    // that comes from this src.
-    bool isSrc1 = ShuffleMask[i] < (int)ShuffleMask.size();
-    const char *SrcName = isSrc1 ? Src1Name : Src2Name;
-    OS << (SrcName ? SrcName : "mem") << '[';
-    bool IsFirst = true;
-    while (i != e && (int)ShuffleMask[i] != SM_SentinelZero &&
-           (ShuffleMask[i] < (int)ShuffleMask.size()) == isSrc1) {
-      if (!IsFirst)
-        OS << ',';
-      else
-        IsFirst = false;
-      if (ShuffleMask[i] == SM_SentinelUndef)
-        OS << "u";
-      else
-        OS << ShuffleMask[i] % ShuffleMask.size();
-      ++i;
-    }
-    OS << ']';
-    --i;  // For loop increments element #.
-  }
-  //MI->print(OS, 0);
-  OS << "\n";
-
-  // We successfully added a comment to this instruction.
-  return true;
-}
+    DestName = getRegName(MI->getOperand(0).getReg());\r
+    if(MI->getOperand(MI->getNumOperands()-1).isImm())\r
+      DecodePSLLDQMask(MVT::v16i8,\r
+                       MI->getOperand(MI->getNumOperands()-1).getImm(),\r
+                       ShuffleMask);\r
+    break;\r
+\r
+  case X86::VPSLLDQYri:\r
+    Src1Name = getRegName(MI->getOperand(1).getReg());\r
+    DestName = getRegName(MI->getOperand(0).getReg());\r
+    if(MI->getOperand(MI->getNumOperands()-1).isImm())\r
+      DecodePSLLDQMask(MVT::v32i8,\r
+                       MI->getOperand(MI->getNumOperands()-1).getImm(),\r
+                       ShuffleMask);\r
+    break;\r
+\r
+  case X86::PSRLDQri:\r
+  case X86::VPSRLDQri:\r
+    Src1Name = getRegName(MI->getOperand(1).getReg());\r
+    DestName = getRegName(MI->getOperand(0).getReg());\r
+    if(MI->getOperand(MI->getNumOperands()-1).isImm())\r
+      DecodePSRLDQMask(MVT::v16i8,\r
+                       MI->getOperand(MI->getNumOperands()-1).getImm(),\r
+                       ShuffleMask);\r
+    break;\r
+\r
+  case X86::VPSRLDQYri:\r
+    Src1Name = getRegName(MI->getOperand(1).getReg());\r
+    DestName = getRegName(MI->getOperand(0).getReg());\r
+    if(MI->getOperand(MI->getNumOperands()-1).isImm())\r
+      DecodePSRLDQMask(MVT::v32i8,\r
+                       MI->getOperand(MI->getNumOperands()-1).getImm(),\r
+                       ShuffleMask);\r
+    break;\r
+\r
+  case X86::PALIGNR128rr:\r
+  case X86::VPALIGNR128rr:\r
+    Src1Name = getRegName(MI->getOperand(2).getReg());\r
+    // FALL THROUGH.\r
+  case X86::PALIGNR128rm:\r
+  case X86::VPALIGNR128rm:\r
+    Src2Name = getRegName(MI->getOperand(1).getReg());\r
+    DestName = getRegName(MI->getOperand(0).getReg());\r
+    if(MI->getOperand(MI->getNumOperands()-1).isImm())\r
+      DecodePALIGNRMask(MVT::v16i8,\r
+                        MI->getOperand(MI->getNumOperands()-1).getImm(),\r
+                        ShuffleMask);\r
+    break;\r
+  case X86::VPALIGNR256rr:\r
+    Src1Name = getRegName(MI->getOperand(2).getReg());\r
+    // FALL THROUGH.\r
+  case X86::VPALIGNR256rm:\r
+    Src2Name = getRegName(MI->getOperand(1).getReg());\r
+    DestName = getRegName(MI->getOperand(0).getReg());\r
+    if(MI->getOperand(MI->getNumOperands()-1).isImm())\r
+      DecodePALIGNRMask(MVT::v32i8,\r
+                        MI->getOperand(MI->getNumOperands()-1).getImm(),\r
+                        ShuffleMask);\r
+    break;\r
+\r
+  case X86::PSHUFDri:\r
+  case X86::VPSHUFDri:\r
+    Src1Name = getRegName(MI->getOperand(1).getReg());\r
+    // FALL THROUGH.\r
+  case X86::PSHUFDmi:\r
+  case X86::VPSHUFDmi:\r
+    DestName = getRegName(MI->getOperand(0).getReg());\r
+    if(MI->getOperand(MI->getNumOperands()-1).isImm())\r
+      DecodePSHUFMask(MVT::v4i32,\r
+                      MI->getOperand(MI->getNumOperands()-1).getImm(),\r
+                      ShuffleMask);\r
+    break;\r
+  case X86::VPSHUFDYri:\r
+    Src1Name = getRegName(MI->getOperand(1).getReg());\r
+    // FALL THROUGH.\r
+  case X86::VPSHUFDYmi:\r
+    DestName = getRegName(MI->getOperand(0).getReg());\r
+    if(MI->getOperand(MI->getNumOperands()-1).isImm())\r
+      DecodePSHUFMask(MVT::v8i32,\r
+                      MI->getOperand(MI->getNumOperands()-1).getImm(),\r
+                      ShuffleMask);\r
+    break;\r
+\r
+\r
+  case X86::PSHUFHWri:\r
+  case X86::VPSHUFHWri:\r
+    Src1Name = getRegName(MI->getOperand(1).getReg());\r
+    // FALL THROUGH.\r
+  case X86::PSHUFHWmi:\r
+  case X86::VPSHUFHWmi:\r
+    DestName = getRegName(MI->getOperand(0).getReg());\r
+    if(MI->getOperand(MI->getNumOperands()-1).isImm())\r
+      DecodePSHUFHWMask(MVT::v8i16,\r
+                        MI->getOperand(MI->getNumOperands()-1).getImm(),\r
+                        ShuffleMask);\r
+    break;\r
+  case X86::VPSHUFHWYri:\r
+    Src1Name = getRegName(MI->getOperand(1).getReg());\r
+    // FALL THROUGH.\r
+  case X86::VPSHUFHWYmi:\r
+    DestName = getRegName(MI->getOperand(0).getReg());\r
+    if(MI->getOperand(MI->getNumOperands()-1).isImm())\r
+      DecodePSHUFHWMask(MVT::v16i16,\r
+                        MI->getOperand(MI->getNumOperands()-1).getImm(),\r
+                        ShuffleMask);\r
+    break;\r
+  case X86::PSHUFLWri:\r
+  case X86::VPSHUFLWri:\r
+    Src1Name = getRegName(MI->getOperand(1).getReg());\r
+    // FALL THROUGH.\r
+  case X86::PSHUFLWmi:\r
+  case X86::VPSHUFLWmi:\r
+    DestName = getRegName(MI->getOperand(0).getReg());\r
+    if(MI->getOperand(MI->getNumOperands()-1).isImm())\r
+      DecodePSHUFLWMask(MVT::v8i16,\r
+                        MI->getOperand(MI->getNumOperands()-1).getImm(),\r
+                        ShuffleMask);\r
+    break;\r
+  case X86::VPSHUFLWYri:\r
+    Src1Name = getRegName(MI->getOperand(1).getReg());\r
+    // FALL THROUGH.\r
+  case X86::VPSHUFLWYmi:\r
+    DestName = getRegName(MI->getOperand(0).getReg());\r
+    if(MI->getOperand(MI->getNumOperands()-1).isImm())\r
+      DecodePSHUFLWMask(MVT::v16i16,\r
+                        MI->getOperand(MI->getNumOperands()-1).getImm(),\r
+                        ShuffleMask);\r
+    break;\r
+\r
+  case X86::PUNPCKHBWrr:\r
+  case X86::VPUNPCKHBWrr:\r
+    Src2Name = getRegName(MI->getOperand(2).getReg());\r
+    // FALL THROUGH.\r
+  case X86::PUNPCKHBWrm:\r
+  case X86::VPUNPCKHBWrm:\r
+    Src1Name = getRegName(MI->getOperand(1).getReg());\r
+    DestName = getRegName(MI->getOperand(0).getReg());\r
+    DecodeUNPCKHMask(MVT::v16i8, ShuffleMask);\r
+    break;\r
+  case X86::VPUNPCKHBWYrr:\r
+    Src2Name = getRegName(MI->getOperand(2).getReg());\r
+    // FALL THROUGH.\r
+  case X86::VPUNPCKHBWYrm:\r
+    Src1Name = getRegName(MI->getOperand(1).getReg());\r
+    DestName = getRegName(MI->getOperand(0).getReg());\r
+    DecodeUNPCKHMask(MVT::v32i8, ShuffleMask);\r
+    break;\r
+  case X86::PUNPCKHWDrr:\r
+  case X86::VPUNPCKHWDrr:\r
+    Src2Name = getRegName(MI->getOperand(2).getReg());\r
+    // FALL THROUGH.\r
+  case X86::PUNPCKHWDrm:\r
+  case X86::VPUNPCKHWDrm:\r
+    Src1Name = getRegName(MI->getOperand(1).getReg());\r
+    DestName = getRegName(MI->getOperand(0).getReg());\r
+    DecodeUNPCKHMask(MVT::v8i16, ShuffleMask);\r
+    break;\r
+  case X86::VPUNPCKHWDYrr:\r
+    Src2Name = getRegName(MI->getOperand(2).getReg());\r
+    // FALL THROUGH.\r
+  case X86::VPUNPCKHWDYrm:\r
+    Src1Name = getRegName(MI->getOperand(1).getReg());\r
+    DestName = getRegName(MI->getOperand(0).getReg());\r
+    DecodeUNPCKHMask(MVT::v16i16, ShuffleMask);\r
+    break;\r
+  case X86::PUNPCKHDQrr:\r
+  case X86::VPUNPCKHDQrr:\r
+    Src2Name = getRegName(MI->getOperand(2).getReg());\r
+    // FALL THROUGH.\r
+  case X86::PUNPCKHDQrm:\r
+  case X86::VPUNPCKHDQrm:\r
+    Src1Name = getRegName(MI->getOperand(1).getReg());\r
+    DestName = getRegName(MI->getOperand(0).getReg());\r
+    DecodeUNPCKHMask(MVT::v4i32, ShuffleMask);\r
+    break;\r
+  case X86::VPUNPCKHDQYrr:\r
+    Src2Name = getRegName(MI->getOperand(2).getReg());\r
+    // FALL THROUGH.\r
+  case X86::VPUNPCKHDQYrm:\r
+    Src1Name = getRegName(MI->getOperand(1).getReg());\r
+    DestName = getRegName(MI->getOperand(0).getReg());\r
+    DecodeUNPCKHMask(MVT::v8i32, ShuffleMask);\r
+    break;\r
+  case X86::VPUNPCKHDQZrr:\r
+    Src2Name = getRegName(MI->getOperand(2).getReg());\r
+    // FALL THROUGH.\r
+  case X86::VPUNPCKHDQZrm:\r
+    Src1Name = getRegName(MI->getOperand(1).getReg());\r
+    DestName = getRegName(MI->getOperand(0).getReg());\r
+    DecodeUNPCKHMask(MVT::v16i32, ShuffleMask);\r
+    break;\r
+  case X86::PUNPCKHQDQrr:\r
+  case X86::VPUNPCKHQDQrr:\r
+    Src2Name = getRegName(MI->getOperand(2).getReg());\r
+    // FALL THROUGH.\r
+  case X86::PUNPCKHQDQrm:\r
+  case X86::VPUNPCKHQDQrm:\r
+    Src1Name = getRegName(MI->getOperand(1).getReg());\r
+    DestName = getRegName(MI->getOperand(0).getReg());\r
+    DecodeUNPCKHMask(MVT::v2i64, ShuffleMask);\r
+    break;\r
+  case X86::VPUNPCKHQDQYrr:\r
+    Src2Name = getRegName(MI->getOperand(2).getReg());\r
+    // FALL THROUGH.\r
+  case X86::VPUNPCKHQDQYrm:\r
+    Src1Name = getRegName(MI->getOperand(1).getReg());\r
+    DestName = getRegName(MI->getOperand(0).getReg());\r
+    DecodeUNPCKHMask(MVT::v4i64, ShuffleMask);\r
+    break;\r
+  case X86::VPUNPCKHQDQZrr:\r
+    Src2Name = getRegName(MI->getOperand(2).getReg());\r
+    // FALL THROUGH.\r
+  case X86::VPUNPCKHQDQZrm:\r
+    Src1Name = getRegName(MI->getOperand(1).getReg());\r
+    DestName = getRegName(MI->getOperand(0).getReg());\r
+    DecodeUNPCKHMask(MVT::v8i64, ShuffleMask);\r
+    break;\r
+\r
+  case X86::PUNPCKLBWrr:\r
+  case X86::VPUNPCKLBWrr:\r
+    Src2Name = getRegName(MI->getOperand(2).getReg());\r
+    // FALL THROUGH.\r
+  case X86::PUNPCKLBWrm:\r
+  case X86::VPUNPCKLBWrm:\r
+    Src1Name = getRegName(MI->getOperand(1).getReg());\r
+    DestName = getRegName(MI->getOperand(0).getReg());\r
+    DecodeUNPCKLMask(MVT::v16i8, ShuffleMask);\r
+    break;\r
+  case X86::VPUNPCKLBWYrr:\r
+    Src2Name = getRegName(MI->getOperand(2).getReg());\r
+    // FALL THROUGH.\r
+  case X86::VPUNPCKLBWYrm:\r
+    Src1Name = getRegName(MI->getOperand(1).getReg());\r
+    DestName = getRegName(MI->getOperand(0).getReg());\r
+    DecodeUNPCKLMask(MVT::v32i8, ShuffleMask);\r
+    break;\r
+  case X86::PUNPCKLWDrr:\r
+  case X86::VPUNPCKLWDrr:\r
+    Src2Name = getRegName(MI->getOperand(2).getReg());\r
+    // FALL THROUGH.\r
+  case X86::PUNPCKLWDrm:\r
+  case X86::VPUNPCKLWDrm:\r
+    Src1Name = getRegName(MI->getOperand(1).getReg());\r
+    DestName = getRegName(MI->getOperand(0).getReg());\r
+    DecodeUNPCKLMask(MVT::v8i16, ShuffleMask);\r
+    break;\r
+  case X86::VPUNPCKLWDYrr:\r
+    Src2Name = getRegName(MI->getOperand(2).getReg());\r
+    // FALL THROUGH.\r
+  case X86::VPUNPCKLWDYrm:\r
+    Src1Name = getRegName(MI->getOperand(1).getReg());\r
+    DestName = getRegName(MI->getOperand(0).getReg());\r
+    DecodeUNPCKLMask(MVT::v16i16, ShuffleMask);\r
+    break;\r
+  case X86::PUNPCKLDQrr:\r
+  case X86::VPUNPCKLDQrr:\r
+    Src2Name = getRegName(MI->getOperand(2).getReg());\r
+    // FALL THROUGH.\r
+  case X86::PUNPCKLDQrm:\r
+  case X86::VPUNPCKLDQrm:\r
+    Src1Name = getRegName(MI->getOperand(1).getReg());\r
+    DestName = getRegName(MI->getOperand(0).getReg());\r
+    DecodeUNPCKLMask(MVT::v4i32, ShuffleMask);\r
+    break;\r
+  case X86::VPUNPCKLDQYrr:\r
+    Src2Name = getRegName(MI->getOperand(2).getReg());\r
+    // FALL THROUGH.\r
+  case X86::VPUNPCKLDQYrm:\r
+    Src1Name = getRegName(MI->getOperand(1).getReg());\r
+    DestName = getRegName(MI->getOperand(0).getReg());\r
+    DecodeUNPCKLMask(MVT::v8i32, ShuffleMask);\r
+    break;\r
+  case X86::VPUNPCKLDQZrr:\r
+    Src2Name = getRegName(MI->getOperand(2).getReg());\r
+    // FALL THROUGH.\r
+  case X86::VPUNPCKLDQZrm:\r
+    Src1Name = getRegName(MI->getOperand(1).getReg());\r
+    DestName = getRegName(MI->getOperand(0).getReg());\r
+    DecodeUNPCKLMask(MVT::v16i32, ShuffleMask);\r
+    break;\r
+  case X86::PUNPCKLQDQrr:\r
+  case X86::VPUNPCKLQDQrr:\r
+    Src2Name = getRegName(MI->getOperand(2).getReg());\r
+    // FALL THROUGH.\r
+  case X86::PUNPCKLQDQrm:\r
+  case X86::VPUNPCKLQDQrm:\r
+    Src1Name = getRegName(MI->getOperand(1).getReg());\r
+    DestName = getRegName(MI->getOperand(0).getReg());\r
+    DecodeUNPCKLMask(MVT::v2i64, ShuffleMask);\r
+    break;\r
+  case X86::VPUNPCKLQDQYrr:\r
+    Src2Name = getRegName(MI->getOperand(2).getReg());\r
+    // FALL THROUGH.\r
+  case X86::VPUNPCKLQDQYrm:\r
+    Src1Name = getRegName(MI->getOperand(1).getReg());\r
+    DestName = getRegName(MI->getOperand(0).getReg());\r
+    DecodeUNPCKLMask(MVT::v4i64, ShuffleMask);\r
+    break;\r
+  case X86::VPUNPCKLQDQZrr:\r
+    Src2Name = getRegName(MI->getOperand(2).getReg());\r
+    // FALL THROUGH.\r
+  case X86::VPUNPCKLQDQZrm:\r
+    Src1Name = getRegName(MI->getOperand(1).getReg());\r
+    DestName = getRegName(MI->getOperand(0).getReg());\r
+    DecodeUNPCKLMask(MVT::v8i64, ShuffleMask);\r
+    break;\r
+\r
+  case X86::SHUFPDrri:\r
+  case X86::VSHUFPDrri:\r
+    Src2Name = getRegName(MI->getOperand(2).getReg());\r
+    // FALL THROUGH.\r
+  case X86::SHUFPDrmi:\r
+  case X86::VSHUFPDrmi:\r
+    if(MI->getOperand(MI->getNumOperands()-1).isImm())\r
+      DecodeSHUFPMask(MVT::v2f64,\r
+                      MI->getOperand(MI->getNumOperands()-1).getImm(),\r
+                      ShuffleMask);\r
+    Src1Name = getRegName(MI->getOperand(1).getReg());\r
+    DestName = getRegName(MI->getOperand(0).getReg());\r
+    break;\r
+  case X86::VSHUFPDYrri:\r
+    Src2Name = getRegName(MI->getOperand(2).getReg());\r
+    // FALL THROUGH.\r
+  case X86::VSHUFPDYrmi:\r
+    if(MI->getOperand(MI->getNumOperands()-1).isImm())\r
+      DecodeSHUFPMask(MVT::v4f64,\r
+                      MI->getOperand(MI->getNumOperands()-1).getImm(),\r
+                      ShuffleMask);\r
+    Src1Name = getRegName(MI->getOperand(1).getReg());\r
+    DestName = getRegName(MI->getOperand(0).getReg());\r
+    break;\r
+\r
+  case X86::SHUFPSrri:\r
+  case X86::VSHUFPSrri:\r
+    Src2Name = getRegName(MI->getOperand(2).getReg());\r
+    // FALL THROUGH.\r
+  case X86::SHUFPSrmi:\r
+  case X86::VSHUFPSrmi:\r
+    if(MI->getOperand(MI->getNumOperands()-1).isImm())\r
+      DecodeSHUFPMask(MVT::v4f32,\r
+                      MI->getOperand(MI->getNumOperands()-1).getImm(),\r
+                      ShuffleMask);\r
+    Src1Name = getRegName(MI->getOperand(1).getReg());\r
+    DestName = getRegName(MI->getOperand(0).getReg());\r
+    break;\r
+  case X86::VSHUFPSYrri:\r
+    Src2Name = getRegName(MI->getOperand(2).getReg());\r
+    // FALL THROUGH.\r
+  case X86::VSHUFPSYrmi:\r
+    if(MI->getOperand(MI->getNumOperands()-1).isImm())\r
+      DecodeSHUFPMask(MVT::v8f32,\r
+                      MI->getOperand(MI->getNumOperands()-1).getImm(),\r
+                      ShuffleMask);\r
+    Src1Name = getRegName(MI->getOperand(1).getReg());\r
+    DestName = getRegName(MI->getOperand(0).getReg());\r
+    break;\r
+\r
+  case X86::UNPCKLPDrr:\r
+  case X86::VUNPCKLPDrr:\r
+    Src2Name = getRegName(MI->getOperand(2).getReg());\r
+    // FALL THROUGH.\r
+  case X86::UNPCKLPDrm:\r
+  case X86::VUNPCKLPDrm:\r
+    DecodeUNPCKLMask(MVT::v2f64, ShuffleMask);\r
+    Src1Name = getRegName(MI->getOperand(1).getReg());\r
+    DestName = getRegName(MI->getOperand(0).getReg());\r
+    break;\r
+  case X86::VUNPCKLPDYrr:\r
+    Src2Name = getRegName(MI->getOperand(2).getReg());\r
+    // FALL THROUGH.\r
+  case X86::VUNPCKLPDYrm:\r
+    DecodeUNPCKLMask(MVT::v4f64, ShuffleMask);\r
+    Src1Name = getRegName(MI->getOperand(1).getReg());\r
+    DestName = getRegName(MI->getOperand(0).getReg());\r
+    break;\r
+  case X86::VUNPCKLPDZrr:\r
+    Src2Name = getRegName(MI->getOperand(2).getReg());\r
+    // FALL THROUGH.\r
+  case X86::VUNPCKLPDZrm:\r
+    DecodeUNPCKLMask(MVT::v8f64, ShuffleMask);\r
+    Src1Name = getRegName(MI->getOperand(1).getReg());\r
+    DestName = getRegName(MI->getOperand(0).getReg());\r
+    break;\r
+  case X86::UNPCKLPSrr:\r
+  case X86::VUNPCKLPSrr:\r
+    Src2Name = getRegName(MI->getOperand(2).getReg());\r
+    // FALL THROUGH.\r
+  case X86::UNPCKLPSrm:\r
+  case X86::VUNPCKLPSrm:\r
+    DecodeUNPCKLMask(MVT::v4f32, ShuffleMask);\r
+    Src1Name = getRegName(MI->getOperand(1).getReg());\r
+    DestName = getRegName(MI->getOperand(0).getReg());\r
+    break;\r
+  case X86::VUNPCKLPSYrr:\r
+    Src2Name = getRegName(MI->getOperand(2).getReg());\r
+    // FALL THROUGH.\r
+  case X86::VUNPCKLPSYrm:\r
+    DecodeUNPCKLMask(MVT::v8f32, ShuffleMask);\r
+    Src1Name = getRegName(MI->getOperand(1).getReg());\r
+    DestName = getRegName(MI->getOperand(0).getReg());\r
+    break;\r
+  case X86::VUNPCKLPSZrr:\r
+    Src2Name = getRegName(MI->getOperand(2).getReg());\r
+    // FALL THROUGH.\r
+  case X86::VUNPCKLPSZrm:\r
+    DecodeUNPCKLMask(MVT::v16f32, ShuffleMask);\r
+    Src1Name = getRegName(MI->getOperand(1).getReg());\r
+    DestName = getRegName(MI->getOperand(0).getReg());\r
+    break;\r
+  case X86::UNPCKHPDrr:\r
+  case X86::VUNPCKHPDrr:\r
+    Src2Name = getRegName(MI->getOperand(2).getReg());\r
+    // FALL THROUGH.\r
+  case X86::UNPCKHPDrm:\r
+  case X86::VUNPCKHPDrm:\r
+    DecodeUNPCKHMask(MVT::v2f64, ShuffleMask);\r
+    Src1Name = getRegName(MI->getOperand(1).getReg());\r
+    DestName = getRegName(MI->getOperand(0).getReg());\r
+    break;\r
+  case X86::VUNPCKHPDYrr:\r
+    Src2Name = getRegName(MI->getOperand(2).getReg());\r
+    // FALL THROUGH.\r
+  case X86::VUNPCKHPDYrm:\r
+    DecodeUNPCKHMask(MVT::v4f64, ShuffleMask);\r
+    Src1Name = getRegName(MI->getOperand(1).getReg());\r
+    DestName = getRegName(MI->getOperand(0).getReg());\r
+    break;\r
+  case X86::VUNPCKHPDZrr:\r
+    Src2Name = getRegName(MI->getOperand(2).getReg());\r
+    // FALL THROUGH.\r
+  case X86::VUNPCKHPDZrm:\r
+    DecodeUNPCKHMask(MVT::v8f64, ShuffleMask);\r
+    Src1Name = getRegName(MI->getOperand(1).getReg());\r
+    DestName = getRegName(MI->getOperand(0).getReg());\r
+    break;\r
+  case X86::UNPCKHPSrr:\r
+  case X86::VUNPCKHPSrr:\r
+    Src2Name = getRegName(MI->getOperand(2).getReg());\r
+    // FALL THROUGH.\r
+  case X86::UNPCKHPSrm:\r
+  case X86::VUNPCKHPSrm:\r
+    DecodeUNPCKHMask(MVT::v4f32, ShuffleMask);\r
+    Src1Name = getRegName(MI->getOperand(1).getReg());\r
+    DestName = getRegName(MI->getOperand(0).getReg());\r
+    break;\r
+  case X86::VUNPCKHPSYrr:\r
+    Src2Name = getRegName(MI->getOperand(2).getReg());\r
+    // FALL THROUGH.\r
+  case X86::VUNPCKHPSYrm:\r
+    DecodeUNPCKHMask(MVT::v8f32, ShuffleMask);\r
+    Src1Name = getRegName(MI->getOperand(1).getReg());\r
+    DestName = getRegName(MI->getOperand(0).getReg());\r
+    break;\r
+  case X86::VUNPCKHPSZrr:\r
+    Src2Name = getRegName(MI->getOperand(2).getReg());\r
+    // FALL THROUGH.\r
+  case X86::VUNPCKHPSZrm:\r
+    DecodeUNPCKHMask(MVT::v16f32, ShuffleMask);\r
+    Src1Name = getRegName(MI->getOperand(1).getReg());\r
+    DestName = getRegName(MI->getOperand(0).getReg());\r
+    break;\r
+  case X86::VPERMILPSri:\r
+    Src1Name = getRegName(MI->getOperand(1).getReg());\r
+    // FALL THROUGH.\r
+  case X86::VPERMILPSmi:\r
+    if(MI->getOperand(MI->getNumOperands()-1).isImm())\r
+      DecodePSHUFMask(MVT::v4f32,\r
+                      MI->getOperand(MI->getNumOperands()-1).getImm(),\r
+                      ShuffleMask);\r
+    DestName = getRegName(MI->getOperand(0).getReg());\r
+    break;\r
+  case X86::VPERMILPSYri:\r
+    Src1Name = getRegName(MI->getOperand(1).getReg());\r
+    // FALL THROUGH.\r
+  case X86::VPERMILPSYmi:\r
+    if(MI->getOperand(MI->getNumOperands()-1).isImm())\r
+      DecodePSHUFMask(MVT::v8f32,\r
+                      MI->getOperand(MI->getNumOperands()-1).getImm(),\r
+                      ShuffleMask);\r
+    DestName = getRegName(MI->getOperand(0).getReg());\r
+    break;\r
+  case X86::VPERMILPDri:\r
+    Src1Name = getRegName(MI->getOperand(1).getReg());\r
+    // FALL THROUGH.\r
+  case X86::VPERMILPDmi:\r
+    if(MI->getOperand(MI->getNumOperands()-1).isImm())\r
+      DecodePSHUFMask(MVT::v2f64,\r
+                      MI->getOperand(MI->getNumOperands()-1).getImm(),\r
+                      ShuffleMask);\r
+    DestName = getRegName(MI->getOperand(0).getReg());\r
+    break;\r
+  case X86::VPERMILPDYri:\r
+    Src1Name = getRegName(MI->getOperand(1).getReg());\r
+    // FALL THROUGH.\r
+  case X86::VPERMILPDYmi:\r
+    if(MI->getOperand(MI->getNumOperands()-1).isImm())\r
+      DecodePSHUFMask(MVT::v4f64,\r
+                      MI->getOperand(MI->getNumOperands()-1).getImm(),\r
+                      ShuffleMask);\r
+    DestName = getRegName(MI->getOperand(0).getReg());\r
+    break;\r
+  case X86::VPERM2F128rr:\r
+  case X86::VPERM2I128rr:\r
+    Src2Name = getRegName(MI->getOperand(2).getReg());\r
+    // FALL THROUGH.\r
+  case X86::VPERM2F128rm:\r
+  case X86::VPERM2I128rm:\r
+    // For instruction comments purpose, assume the 256-bit vector is v4i64.\r
+    if(MI->getOperand(MI->getNumOperands()-1).isImm())\r
+      DecodeVPERM2X128Mask(MVT::v4i64,\r
+                           MI->getOperand(MI->getNumOperands()-1).getImm(),\r
+                           ShuffleMask);\r
+    Src1Name = getRegName(MI->getOperand(1).getReg());\r
+    DestName = getRegName(MI->getOperand(0).getReg());\r
+    break;\r
+  case X86::VPERMQYri:\r
+  case X86::VPERMPDYri:\r
+    Src1Name = getRegName(MI->getOperand(1).getReg());\r
+    // FALL THROUGH.\r
+  case X86::VPERMQYmi:\r
+  case X86::VPERMPDYmi:\r
+    if(MI->getOperand(MI->getNumOperands()-1).isImm())\r
+      DecodeVPERMMask(MI->getOperand(MI->getNumOperands()-1).getImm(),\r
+                      ShuffleMask);\r
+    DestName = getRegName(MI->getOperand(0).getReg());\r
+    break;\r
+  }\r
+\r
+  // The only comments we decode are shuffles, so give up if we were unable to\r
+  // decode a shuffle mask.\r
+  if (ShuffleMask.empty())\r
+    return false;\r
+\r
+  if (!DestName) DestName = Src1Name;\r
+  OS << (DestName ? DestName : "mem") << " = ";\r
+\r
+  // If the two sources are the same, canonicalize the input elements to be\r
+  // from the first src so that we get larger element spans.\r
+  if (Src1Name == Src2Name) {\r
+    for (unsigned i = 0, e = ShuffleMask.size(); i != e; ++i) {\r
+      if ((int)ShuffleMask[i] >= 0 && // Not sentinel.\r
+          ShuffleMask[i] >= (int)e)        // From second mask.\r
+        ShuffleMask[i] -= e;\r
+    }\r
+  }\r
+\r
+  // The shuffle mask specifies which elements of the src1/src2 fill in the\r
+  // destination, with a few sentinel values.  Loop through and print them\r
+  // out.\r
+  for (unsigned i = 0, e = ShuffleMask.size(); i != e; ++i) {\r
+    if (i != 0)\r
+      OS << ',';\r
+    if (ShuffleMask[i] == SM_SentinelZero) {\r
+      OS << "zero";\r
+      continue;\r
+    }\r
+\r
+    // Otherwise, it must come from src1 or src2.  Print the span of elements\r
+    // that comes from this src.\r
+    bool isSrc1 = ShuffleMask[i] < (int)ShuffleMask.size();\r
+    const char *SrcName = isSrc1 ? Src1Name : Src2Name;\r
+    OS << (SrcName ? SrcName : "mem") << '[';\r
+    bool IsFirst = true;\r
+    while (i != e && (int)ShuffleMask[i] != SM_SentinelZero &&\r
+           (ShuffleMask[i] < (int)ShuffleMask.size()) == isSrc1) {\r
+      if (!IsFirst)\r
+        OS << ',';\r
+      else\r
+        IsFirst = false;\r
+      if (ShuffleMask[i] == SM_SentinelUndef)\r
+        OS << "u";\r
+      else\r
+        OS << ShuffleMask[i] % ShuffleMask.size();\r
+      ++i;\r
+    }\r
+    OS << ']';\r
+    --i;  // For loop increments element #.\r
+  }\r
+  //MI->print(OS, 0);\r
+  OS << "\n";\r
+\r
+  // We successfully added a comment to this instruction.\r
+  return true;\r
+}\r