X86InstComments.cpp revision 200b306f2006533a0e7a0ca75cb3103620e7aa84
16aa928d57a73a557d838f62af84e929bed0f276eChris Lattner//===-- X86InstComments.cpp - Generate verbose-asm comments for instrs ----===//
26aa928d57a73a557d838f62af84e929bed0f276eChris Lattner//
36aa928d57a73a557d838f62af84e929bed0f276eChris Lattner//                     The LLVM Compiler Infrastructure
46aa928d57a73a557d838f62af84e929bed0f276eChris Lattner//
56aa928d57a73a557d838f62af84e929bed0f276eChris Lattner// This file is distributed under the University of Illinois Open Source
66aa928d57a73a557d838f62af84e929bed0f276eChris Lattner// License. See LICENSE.TXT for details.
76aa928d57a73a557d838f62af84e929bed0f276eChris Lattner//
86aa928d57a73a557d838f62af84e929bed0f276eChris Lattner//===----------------------------------------------------------------------===//
96aa928d57a73a557d838f62af84e929bed0f276eChris Lattner//
106aa928d57a73a557d838f62af84e929bed0f276eChris Lattner// This defines functionality used to emit comments about X86 instructions to
116aa928d57a73a557d838f62af84e929bed0f276eChris Lattner// an output stream for -fverbose-asm.
126aa928d57a73a557d838f62af84e929bed0f276eChris Lattner//
136aa928d57a73a557d838f62af84e929bed0f276eChris Lattner//===----------------------------------------------------------------------===//
146aa928d57a73a557d838f62af84e929bed0f276eChris Lattner
156aa928d57a73a557d838f62af84e929bed0f276eChris Lattner#include "X86InstComments.h"
16ed5e3552147830159a1d48d067dfbb49ac9cccfdEvan Cheng#include "MCTargetDesc/X86MCTargetDesc.h"
1794b9550a32d189704a8eae55505edf62662c0534Evan Cheng#include "Utils/X86ShuffleDecode.h"
186aa928d57a73a557d838f62af84e929bed0f276eChris Lattner#include "llvm/MC/MCInst.h"
196aa928d57a73a557d838f62af84e929bed0f276eChris Lattner#include "llvm/Support/raw_ostream.h"
206aa928d57a73a557d838f62af84e929bed0f276eChris Lattnerusing namespace llvm;
216aa928d57a73a557d838f62af84e929bed0f276eChris Lattner
226aa928d57a73a557d838f62af84e929bed0f276eChris Lattner//===----------------------------------------------------------------------===//
236aa928d57a73a557d838f62af84e929bed0f276eChris Lattner// Top Level Entrypoint
246aa928d57a73a557d838f62af84e929bed0f276eChris Lattner//===----------------------------------------------------------------------===//
256aa928d57a73a557d838f62af84e929bed0f276eChris Lattner
266aa928d57a73a557d838f62af84e929bed0f276eChris Lattner/// EmitAnyX86InstComments - This function decodes x86 instructions and prints
276aa928d57a73a557d838f62af84e929bed0f276eChris Lattner/// newline terminated strings to the specified string if desired.  This
286aa928d57a73a557d838f62af84e929bed0f276eChris Lattner/// information is shown in disassembly dumps when verbose assembly is enabled.
296aa928d57a73a557d838f62af84e929bed0f276eChris Lattnervoid llvm::EmitAnyX86InstComments(const MCInst *MI, raw_ostream &OS,
306aa928d57a73a557d838f62af84e929bed0f276eChris Lattner                                  const char *(*getRegName)(unsigned)) {
316aa928d57a73a557d838f62af84e929bed0f276eChris Lattner  // If this is a shuffle operation, the switch should fill in this state.
32a1ffc681ed7372bd371c44a6e186291b6416fe47Craig Topper  SmallVector<int, 8> ShuffleMask;
336aa928d57a73a557d838f62af84e929bed0f276eChris Lattner  const char *DestName = 0, *Src1Name = 0, *Src2Name = 0;
346b1d0a3b366a637c0c96ea5cf7cfd8769469e6f3Bruno Cardoso Lopes
356aa928d57a73a557d838f62af84e929bed0f276eChris Lattner  switch (MI->getOpcode()) {
366aa928d57a73a557d838f62af84e929bed0f276eChris Lattner  case X86::INSERTPSrr:
37796c193768547459cd6cbd667c8a43fedd601022Craig Topper    Src1Name = getRegName(MI->getOperand(0).getReg());
38796c193768547459cd6cbd667c8a43fedd601022Craig Topper    Src2Name = getRegName(MI->getOperand(2).getReg());
39796c193768547459cd6cbd667c8a43fedd601022Craig Topper    DecodeINSERTPSMask(MI->getOperand(3).getImm(), ShuffleMask);
40796c193768547459cd6cbd667c8a43fedd601022Craig Topper    break;
41796c193768547459cd6cbd667c8a43fedd601022Craig Topper  case X86::VINSERTPSrr:
42796c193768547459cd6cbd667c8a43fedd601022Craig Topper    DestName = getRegName(MI->getOperand(0).getReg());
436aa928d57a73a557d838f62af84e929bed0f276eChris Lattner    Src1Name = getRegName(MI->getOperand(1).getReg());
446aa928d57a73a557d838f62af84e929bed0f276eChris Lattner    Src2Name = getRegName(MI->getOperand(2).getReg());
456aa928d57a73a557d838f62af84e929bed0f276eChris Lattner    DecodeINSERTPSMask(MI->getOperand(3).getImm(), ShuffleMask);
466aa928d57a73a557d838f62af84e929bed0f276eChris Lattner    break;
476b1d0a3b366a637c0c96ea5cf7cfd8769469e6f3Bruno Cardoso Lopes
484644a936dc2e90d24c22c0cdbbf5038eef7830a9Chris Lattner  case X86::MOVLHPSrr:
494644a936dc2e90d24c22c0cdbbf5038eef7830a9Chris Lattner    Src2Name = getRegName(MI->getOperand(2).getReg());
504644a936dc2e90d24c22c0cdbbf5038eef7830a9Chris Lattner    Src1Name = getRegName(MI->getOperand(0).getReg());
5155945607667e71dc1d4d32cffa60e3b817f2f3efBruno Cardoso Lopes    DecodeMOVLHPSMask(2, ShuffleMask);
524644a936dc2e90d24c22c0cdbbf5038eef7830a9Chris Lattner    break;
53796c193768547459cd6cbd667c8a43fedd601022Craig Topper  case X86::VMOVLHPSrr:
54796c193768547459cd6cbd667c8a43fedd601022Craig Topper    Src2Name = getRegName(MI->getOperand(2).getReg());
55796c193768547459cd6cbd667c8a43fedd601022Craig Topper    Src1Name = getRegName(MI->getOperand(1).getReg());
56796c193768547459cd6cbd667c8a43fedd601022Craig Topper    DestName = getRegName(MI->getOperand(0).getReg());
57796c193768547459cd6cbd667c8a43fedd601022Craig Topper    DecodeMOVLHPSMask(2, ShuffleMask);
58796c193768547459cd6cbd667c8a43fedd601022Craig Topper    break;
596b1d0a3b366a637c0c96ea5cf7cfd8769469e6f3Bruno Cardoso Lopes
604644a936dc2e90d24c22c0cdbbf5038eef7830a9Chris Lattner  case X86::MOVHLPSrr:
614644a936dc2e90d24c22c0cdbbf5038eef7830a9Chris Lattner    Src2Name = getRegName(MI->getOperand(2).getReg());
624644a936dc2e90d24c22c0cdbbf5038eef7830a9Chris Lattner    Src1Name = getRegName(MI->getOperand(0).getReg());
6355945607667e71dc1d4d32cffa60e3b817f2f3efBruno Cardoso Lopes    DecodeMOVHLPSMask(2, ShuffleMask);
644644a936dc2e90d24c22c0cdbbf5038eef7830a9Chris Lattner    break;
65796c193768547459cd6cbd667c8a43fedd601022Craig Topper  case X86::VMOVHLPSrr:
66796c193768547459cd6cbd667c8a43fedd601022Craig Topper    Src2Name = getRegName(MI->getOperand(2).getReg());
67796c193768547459cd6cbd667c8a43fedd601022Craig Topper    Src1Name = getRegName(MI->getOperand(1).getReg());
68796c193768547459cd6cbd667c8a43fedd601022Craig Topper    DestName = getRegName(MI->getOperand(0).getReg());
69796c193768547459cd6cbd667c8a43fedd601022Craig Topper    DecodeMOVHLPSMask(2, ShuffleMask);
70796c193768547459cd6cbd667c8a43fedd601022Craig Topper    break;
716b1d0a3b366a637c0c96ea5cf7cfd8769469e6f3Bruno Cardoso Lopes
72200b306f2006533a0e7a0ca75cb3103620e7aa84Benjamin Kramer  case X86::PALIGNR128rr:
73200b306f2006533a0e7a0ca75cb3103620e7aa84Benjamin Kramer  case X86::VPALIGNR128rr:
74200b306f2006533a0e7a0ca75cb3103620e7aa84Benjamin Kramer    Src1Name = getRegName(MI->getOperand(2).getReg());
75200b306f2006533a0e7a0ca75cb3103620e7aa84Benjamin Kramer    // FALL THROUGH.
76200b306f2006533a0e7a0ca75cb3103620e7aa84Benjamin Kramer  case X86::PALIGNR128rm:
77200b306f2006533a0e7a0ca75cb3103620e7aa84Benjamin Kramer  case X86::VPALIGNR128rm:
78200b306f2006533a0e7a0ca75cb3103620e7aa84Benjamin Kramer    Src2Name = getRegName(MI->getOperand(1).getReg());
79200b306f2006533a0e7a0ca75cb3103620e7aa84Benjamin Kramer    DestName = getRegName(MI->getOperand(0).getReg());
80200b306f2006533a0e7a0ca75cb3103620e7aa84Benjamin Kramer    DecodePALIGNMask(MVT::v16i8,
81200b306f2006533a0e7a0ca75cb3103620e7aa84Benjamin Kramer                     MI->getOperand(MI->getNumOperands()-1).getImm(),
82200b306f2006533a0e7a0ca75cb3103620e7aa84Benjamin Kramer                     ShuffleMask);
83200b306f2006533a0e7a0ca75cb3103620e7aa84Benjamin Kramer    break;
84200b306f2006533a0e7a0ca75cb3103620e7aa84Benjamin Kramer  case X86::VPALIGNR256rr:
85200b306f2006533a0e7a0ca75cb3103620e7aa84Benjamin Kramer    Src1Name = getRegName(MI->getOperand(2).getReg());
86200b306f2006533a0e7a0ca75cb3103620e7aa84Benjamin Kramer    // FALL THROUGH.
87200b306f2006533a0e7a0ca75cb3103620e7aa84Benjamin Kramer  case X86::VPALIGNR256rm:
88200b306f2006533a0e7a0ca75cb3103620e7aa84Benjamin Kramer    Src2Name = getRegName(MI->getOperand(1).getReg());
89200b306f2006533a0e7a0ca75cb3103620e7aa84Benjamin Kramer    DestName = getRegName(MI->getOperand(0).getReg());
90200b306f2006533a0e7a0ca75cb3103620e7aa84Benjamin Kramer    DecodePALIGNMask(MVT::v32i8,
91200b306f2006533a0e7a0ca75cb3103620e7aa84Benjamin Kramer                     MI->getOperand(MI->getNumOperands()-1).getImm(),
92200b306f2006533a0e7a0ca75cb3103620e7aa84Benjamin Kramer                     ShuffleMask);
93200b306f2006533a0e7a0ca75cb3103620e7aa84Benjamin Kramer
946aa928d57a73a557d838f62af84e929bed0f276eChris Lattner  case X86::PSHUFDri:
95796c193768547459cd6cbd667c8a43fedd601022Craig Topper  case X86::VPSHUFDri:
966aa928d57a73a557d838f62af84e929bed0f276eChris Lattner    Src1Name = getRegName(MI->getOperand(1).getReg());
976aa928d57a73a557d838f62af84e929bed0f276eChris Lattner    // FALL THROUGH.
986aa928d57a73a557d838f62af84e929bed0f276eChris Lattner  case X86::PSHUFDmi:
99796c193768547459cd6cbd667c8a43fedd601022Craig Topper  case X86::VPSHUFDmi:
1006aa928d57a73a557d838f62af84e929bed0f276eChris Lattner    DestName = getRegName(MI->getOperand(0).getReg());
101d156dc11f9acd83e3369c069d5006a0203be13d6Craig Topper    DecodePSHUFMask(MVT::v4i32, MI->getOperand(MI->getNumOperands()-1).getImm(),
102d156dc11f9acd83e3369c069d5006a0203be13d6Craig Topper                     ShuffleMask);
103d156dc11f9acd83e3369c069d5006a0203be13d6Craig Topper    break;
104d156dc11f9acd83e3369c069d5006a0203be13d6Craig Topper  case X86::VPSHUFDYri:
105d156dc11f9acd83e3369c069d5006a0203be13d6Craig Topper    Src1Name = getRegName(MI->getOperand(1).getReg());
106d156dc11f9acd83e3369c069d5006a0203be13d6Craig Topper    // FALL THROUGH.
107d156dc11f9acd83e3369c069d5006a0203be13d6Craig Topper  case X86::VPSHUFDYmi:
108d156dc11f9acd83e3369c069d5006a0203be13d6Craig Topper    DestName = getRegName(MI->getOperand(0).getReg());
109d156dc11f9acd83e3369c069d5006a0203be13d6Craig Topper    DecodePSHUFMask(MVT::v8i32, MI->getOperand(MI->getNumOperands()-1).getImm(),
1106aa928d57a73a557d838f62af84e929bed0f276eChris Lattner                    ShuffleMask);
1116aa928d57a73a557d838f62af84e929bed0f276eChris Lattner    break;
1126b1d0a3b366a637c0c96ea5cf7cfd8769469e6f3Bruno Cardoso Lopes
113d156dc11f9acd83e3369c069d5006a0203be13d6Craig Topper
1144644a936dc2e90d24c22c0cdbbf5038eef7830a9Chris Lattner  case X86::PSHUFHWri:
115796c193768547459cd6cbd667c8a43fedd601022Craig Topper  case X86::VPSHUFHWri:
1164644a936dc2e90d24c22c0cdbbf5038eef7830a9Chris Lattner    Src1Name = getRegName(MI->getOperand(1).getReg());
1174644a936dc2e90d24c22c0cdbbf5038eef7830a9Chris Lattner    // FALL THROUGH.
1184644a936dc2e90d24c22c0cdbbf5038eef7830a9Chris Lattner  case X86::PSHUFHWmi:
119796c193768547459cd6cbd667c8a43fedd601022Craig Topper  case X86::VPSHUFHWmi:
1204644a936dc2e90d24c22c0cdbbf5038eef7830a9Chris Lattner    DestName = getRegName(MI->getOperand(0).getReg());
121a9a568a79dbaf7315db863b4808d31ad9f5f91dcCraig Topper    DecodePSHUFHWMask(MVT::v8i16,
122a9a568a79dbaf7315db863b4808d31ad9f5f91dcCraig Topper                      MI->getOperand(MI->getNumOperands()-1).getImm(),
123a9a568a79dbaf7315db863b4808d31ad9f5f91dcCraig Topper                      ShuffleMask);
124a9a568a79dbaf7315db863b4808d31ad9f5f91dcCraig Topper    break;
125a9a568a79dbaf7315db863b4808d31ad9f5f91dcCraig Topper  case X86::VPSHUFHWYri:
126a9a568a79dbaf7315db863b4808d31ad9f5f91dcCraig Topper    Src1Name = getRegName(MI->getOperand(1).getReg());
127a9a568a79dbaf7315db863b4808d31ad9f5f91dcCraig Topper    // FALL THROUGH.
128a9a568a79dbaf7315db863b4808d31ad9f5f91dcCraig Topper  case X86::VPSHUFHWYmi:
129a9a568a79dbaf7315db863b4808d31ad9f5f91dcCraig Topper    DestName = getRegName(MI->getOperand(0).getReg());
130a9a568a79dbaf7315db863b4808d31ad9f5f91dcCraig Topper    DecodePSHUFHWMask(MVT::v16i16,
131a9a568a79dbaf7315db863b4808d31ad9f5f91dcCraig Topper                      MI->getOperand(MI->getNumOperands()-1).getImm(),
1324644a936dc2e90d24c22c0cdbbf5038eef7830a9Chris Lattner                      ShuffleMask);
1334644a936dc2e90d24c22c0cdbbf5038eef7830a9Chris Lattner    break;
1344644a936dc2e90d24c22c0cdbbf5038eef7830a9Chris Lattner  case X86::PSHUFLWri:
135796c193768547459cd6cbd667c8a43fedd601022Craig Topper  case X86::VPSHUFLWri:
1364644a936dc2e90d24c22c0cdbbf5038eef7830a9Chris Lattner    Src1Name = getRegName(MI->getOperand(1).getReg());
1374644a936dc2e90d24c22c0cdbbf5038eef7830a9Chris Lattner    // FALL THROUGH.
1384644a936dc2e90d24c22c0cdbbf5038eef7830a9Chris Lattner  case X86::PSHUFLWmi:
139796c193768547459cd6cbd667c8a43fedd601022Craig Topper  case X86::VPSHUFLWmi:
1404644a936dc2e90d24c22c0cdbbf5038eef7830a9Chris Lattner    DestName = getRegName(MI->getOperand(0).getReg());
141a9a568a79dbaf7315db863b4808d31ad9f5f91dcCraig Topper    DecodePSHUFLWMask(MVT::v8i16,
142a9a568a79dbaf7315db863b4808d31ad9f5f91dcCraig Topper                      MI->getOperand(MI->getNumOperands()-1).getImm(),
143a9a568a79dbaf7315db863b4808d31ad9f5f91dcCraig Topper                      ShuffleMask);
144a9a568a79dbaf7315db863b4808d31ad9f5f91dcCraig Topper    break;
145a9a568a79dbaf7315db863b4808d31ad9f5f91dcCraig Topper  case X86::VPSHUFLWYri:
146a9a568a79dbaf7315db863b4808d31ad9f5f91dcCraig Topper    Src1Name = getRegName(MI->getOperand(1).getReg());
147a9a568a79dbaf7315db863b4808d31ad9f5f91dcCraig Topper    // FALL THROUGH.
148a9a568a79dbaf7315db863b4808d31ad9f5f91dcCraig Topper  case X86::VPSHUFLWYmi:
149a9a568a79dbaf7315db863b4808d31ad9f5f91dcCraig Topper    DestName = getRegName(MI->getOperand(0).getReg());
150a9a568a79dbaf7315db863b4808d31ad9f5f91dcCraig Topper    DecodePSHUFLWMask(MVT::v16i16,
151a9a568a79dbaf7315db863b4808d31ad9f5f91dcCraig Topper                      MI->getOperand(MI->getNumOperands()-1).getImm(),
1524644a936dc2e90d24c22c0cdbbf5038eef7830a9Chris Lattner                      ShuffleMask);
1534644a936dc2e90d24c22c0cdbbf5038eef7830a9Chris Lattner    break;
1546b1d0a3b366a637c0c96ea5cf7cfd8769469e6f3Bruno Cardoso Lopes
1554644a936dc2e90d24c22c0cdbbf5038eef7830a9Chris Lattner  case X86::PUNPCKHBWrr:
1564644a936dc2e90d24c22c0cdbbf5038eef7830a9Chris Lattner    Src2Name = getRegName(MI->getOperand(2).getReg());
1574644a936dc2e90d24c22c0cdbbf5038eef7830a9Chris Lattner    // FALL THROUGH.
1584644a936dc2e90d24c22c0cdbbf5038eef7830a9Chris Lattner  case X86::PUNPCKHBWrm:
1594644a936dc2e90d24c22c0cdbbf5038eef7830a9Chris Lattner    Src1Name = getRegName(MI->getOperand(0).getReg());
1603d8c2ce3e44bc161118a8922e7aa412ef00f6034Craig Topper    DecodeUNPCKHMask(MVT::v16i8, ShuffleMask);
1613d8c2ce3e44bc161118a8922e7aa412ef00f6034Craig Topper    break;
1623d8c2ce3e44bc161118a8922e7aa412ef00f6034Craig Topper  case X86::VPUNPCKHBWrr:
1633d8c2ce3e44bc161118a8922e7aa412ef00f6034Craig Topper    Src2Name = getRegName(MI->getOperand(2).getReg());
1643d8c2ce3e44bc161118a8922e7aa412ef00f6034Craig Topper    // FALL THROUGH.
1653d8c2ce3e44bc161118a8922e7aa412ef00f6034Craig Topper  case X86::VPUNPCKHBWrm:
1663d8c2ce3e44bc161118a8922e7aa412ef00f6034Craig Topper    Src1Name = getRegName(MI->getOperand(1).getReg());
1673d8c2ce3e44bc161118a8922e7aa412ef00f6034Craig Topper    DestName = getRegName(MI->getOperand(0).getReg());
1683d8c2ce3e44bc161118a8922e7aa412ef00f6034Craig Topper    DecodeUNPCKHMask(MVT::v16i8, ShuffleMask);
1693d8c2ce3e44bc161118a8922e7aa412ef00f6034Craig Topper    break;
1703d8c2ce3e44bc161118a8922e7aa412ef00f6034Craig Topper  case X86::VPUNPCKHBWYrr:
1713d8c2ce3e44bc161118a8922e7aa412ef00f6034Craig Topper    Src2Name = getRegName(MI->getOperand(2).getReg());
1723d8c2ce3e44bc161118a8922e7aa412ef00f6034Craig Topper    // FALL THROUGH.
1733d8c2ce3e44bc161118a8922e7aa412ef00f6034Craig Topper  case X86::VPUNPCKHBWYrm:
1743d8c2ce3e44bc161118a8922e7aa412ef00f6034Craig Topper    Src1Name = getRegName(MI->getOperand(1).getReg());
1753d8c2ce3e44bc161118a8922e7aa412ef00f6034Craig Topper    DestName = getRegName(MI->getOperand(0).getReg());
1763d8c2ce3e44bc161118a8922e7aa412ef00f6034Craig Topper    DecodeUNPCKHMask(MVT::v32i8, ShuffleMask);
1774644a936dc2e90d24c22c0cdbbf5038eef7830a9Chris Lattner    break;
1784644a936dc2e90d24c22c0cdbbf5038eef7830a9Chris Lattner  case X86::PUNPCKHWDrr:
1794644a936dc2e90d24c22c0cdbbf5038eef7830a9Chris Lattner    Src2Name = getRegName(MI->getOperand(2).getReg());
1804644a936dc2e90d24c22c0cdbbf5038eef7830a9Chris Lattner    // FALL THROUGH.
1814644a936dc2e90d24c22c0cdbbf5038eef7830a9Chris Lattner  case X86::PUNPCKHWDrm:
1824644a936dc2e90d24c22c0cdbbf5038eef7830a9Chris Lattner    Src1Name = getRegName(MI->getOperand(0).getReg());
1833d8c2ce3e44bc161118a8922e7aa412ef00f6034Craig Topper    DecodeUNPCKHMask(MVT::v8i16, ShuffleMask);
1843d8c2ce3e44bc161118a8922e7aa412ef00f6034Craig Topper    break;
1853d8c2ce3e44bc161118a8922e7aa412ef00f6034Craig Topper  case X86::VPUNPCKHWDrr:
1863d8c2ce3e44bc161118a8922e7aa412ef00f6034Craig Topper    Src2Name = getRegName(MI->getOperand(2).getReg());
1873d8c2ce3e44bc161118a8922e7aa412ef00f6034Craig Topper    // FALL THROUGH.
1883d8c2ce3e44bc161118a8922e7aa412ef00f6034Craig Topper  case X86::VPUNPCKHWDrm:
1893d8c2ce3e44bc161118a8922e7aa412ef00f6034Craig Topper    Src1Name = getRegName(MI->getOperand(1).getReg());
1903d8c2ce3e44bc161118a8922e7aa412ef00f6034Craig Topper    DestName = getRegName(MI->getOperand(0).getReg());
1913d8c2ce3e44bc161118a8922e7aa412ef00f6034Craig Topper    DecodeUNPCKHMask(MVT::v8i16, ShuffleMask);
1923d8c2ce3e44bc161118a8922e7aa412ef00f6034Craig Topper    break;
1933d8c2ce3e44bc161118a8922e7aa412ef00f6034Craig Topper  case X86::VPUNPCKHWDYrr:
1943d8c2ce3e44bc161118a8922e7aa412ef00f6034Craig Topper    Src2Name = getRegName(MI->getOperand(2).getReg());
1953d8c2ce3e44bc161118a8922e7aa412ef00f6034Craig Topper    // FALL THROUGH.
1963d8c2ce3e44bc161118a8922e7aa412ef00f6034Craig Topper  case X86::VPUNPCKHWDYrm:
1973d8c2ce3e44bc161118a8922e7aa412ef00f6034Craig Topper    Src1Name = getRegName(MI->getOperand(1).getReg());
1983d8c2ce3e44bc161118a8922e7aa412ef00f6034Craig Topper    DestName = getRegName(MI->getOperand(0).getReg());
1993d8c2ce3e44bc161118a8922e7aa412ef00f6034Craig Topper    DecodeUNPCKHMask(MVT::v16i16, ShuffleMask);
2004644a936dc2e90d24c22c0cdbbf5038eef7830a9Chris Lattner    break;
2014644a936dc2e90d24c22c0cdbbf5038eef7830a9Chris Lattner  case X86::PUNPCKHDQrr:
2024644a936dc2e90d24c22c0cdbbf5038eef7830a9Chris Lattner    Src2Name = getRegName(MI->getOperand(2).getReg());
2034644a936dc2e90d24c22c0cdbbf5038eef7830a9Chris Lattner    // FALL THROUGH.
2044644a936dc2e90d24c22c0cdbbf5038eef7830a9Chris Lattner  case X86::PUNPCKHDQrm:
2054644a936dc2e90d24c22c0cdbbf5038eef7830a9Chris Lattner    Src1Name = getRegName(MI->getOperand(0).getReg());
2063d8c2ce3e44bc161118a8922e7aa412ef00f6034Craig Topper    DecodeUNPCKHMask(MVT::v4i32, ShuffleMask);
2073d8c2ce3e44bc161118a8922e7aa412ef00f6034Craig Topper    break;
2083d8c2ce3e44bc161118a8922e7aa412ef00f6034Craig Topper  case X86::VPUNPCKHDQrr:
2093d8c2ce3e44bc161118a8922e7aa412ef00f6034Craig Topper    Src2Name = getRegName(MI->getOperand(2).getReg());
2103d8c2ce3e44bc161118a8922e7aa412ef00f6034Craig Topper    // FALL THROUGH.
2113d8c2ce3e44bc161118a8922e7aa412ef00f6034Craig Topper  case X86::VPUNPCKHDQrm:
2123d8c2ce3e44bc161118a8922e7aa412ef00f6034Craig Topper    Src1Name = getRegName(MI->getOperand(1).getReg());
2133d8c2ce3e44bc161118a8922e7aa412ef00f6034Craig Topper    DestName = getRegName(MI->getOperand(0).getReg());
2143d8c2ce3e44bc161118a8922e7aa412ef00f6034Craig Topper    DecodeUNPCKHMask(MVT::v4i32, ShuffleMask);
2153d8c2ce3e44bc161118a8922e7aa412ef00f6034Craig Topper    break;
2163d8c2ce3e44bc161118a8922e7aa412ef00f6034Craig Topper  case X86::VPUNPCKHDQYrr:
2173d8c2ce3e44bc161118a8922e7aa412ef00f6034Craig Topper    Src2Name = getRegName(MI->getOperand(2).getReg());
2183d8c2ce3e44bc161118a8922e7aa412ef00f6034Craig Topper    // FALL THROUGH.
2193d8c2ce3e44bc161118a8922e7aa412ef00f6034Craig Topper  case X86::VPUNPCKHDQYrm:
2203d8c2ce3e44bc161118a8922e7aa412ef00f6034Craig Topper    Src1Name = getRegName(MI->getOperand(1).getReg());
2213d8c2ce3e44bc161118a8922e7aa412ef00f6034Craig Topper    DestName = getRegName(MI->getOperand(0).getReg());
2223d8c2ce3e44bc161118a8922e7aa412ef00f6034Craig Topper    DecodeUNPCKHMask(MVT::v8i32, ShuffleMask);
2234644a936dc2e90d24c22c0cdbbf5038eef7830a9Chris Lattner    break;
2244644a936dc2e90d24c22c0cdbbf5038eef7830a9Chris Lattner  case X86::PUNPCKHQDQrr:
2254644a936dc2e90d24c22c0cdbbf5038eef7830a9Chris Lattner    Src2Name = getRegName(MI->getOperand(2).getReg());
2264644a936dc2e90d24c22c0cdbbf5038eef7830a9Chris Lattner    // FALL THROUGH.
2274644a936dc2e90d24c22c0cdbbf5038eef7830a9Chris Lattner  case X86::PUNPCKHQDQrm:
2284644a936dc2e90d24c22c0cdbbf5038eef7830a9Chris Lattner    Src1Name = getRegName(MI->getOperand(0).getReg());
2293d8c2ce3e44bc161118a8922e7aa412ef00f6034Craig Topper    DecodeUNPCKHMask(MVT::v2i64, ShuffleMask);
2303d8c2ce3e44bc161118a8922e7aa412ef00f6034Craig Topper    break;
2313d8c2ce3e44bc161118a8922e7aa412ef00f6034Craig Topper  case X86::VPUNPCKHQDQrr:
2323d8c2ce3e44bc161118a8922e7aa412ef00f6034Craig Topper    Src2Name = getRegName(MI->getOperand(2).getReg());
2333d8c2ce3e44bc161118a8922e7aa412ef00f6034Craig Topper    // FALL THROUGH.
2343d8c2ce3e44bc161118a8922e7aa412ef00f6034Craig Topper  case X86::VPUNPCKHQDQrm:
2353d8c2ce3e44bc161118a8922e7aa412ef00f6034Craig Topper    Src1Name = getRegName(MI->getOperand(1).getReg());
2363d8c2ce3e44bc161118a8922e7aa412ef00f6034Craig Topper    DestName = getRegName(MI->getOperand(0).getReg());
2373d8c2ce3e44bc161118a8922e7aa412ef00f6034Craig Topper    DecodeUNPCKHMask(MVT::v2i64, ShuffleMask);
2383d8c2ce3e44bc161118a8922e7aa412ef00f6034Craig Topper    break;
2393d8c2ce3e44bc161118a8922e7aa412ef00f6034Craig Topper  case X86::VPUNPCKHQDQYrr:
2403d8c2ce3e44bc161118a8922e7aa412ef00f6034Craig Topper    Src2Name = getRegName(MI->getOperand(2).getReg());
2413d8c2ce3e44bc161118a8922e7aa412ef00f6034Craig Topper    // FALL THROUGH.
2423d8c2ce3e44bc161118a8922e7aa412ef00f6034Craig Topper  case X86::VPUNPCKHQDQYrm:
2433d8c2ce3e44bc161118a8922e7aa412ef00f6034Craig Topper    Src1Name = getRegName(MI->getOperand(1).getReg());
2443d8c2ce3e44bc161118a8922e7aa412ef00f6034Craig Topper    DestName = getRegName(MI->getOperand(0).getReg());
2453d8c2ce3e44bc161118a8922e7aa412ef00f6034Craig Topper    DecodeUNPCKHMask(MVT::v4i64, ShuffleMask);
2464644a936dc2e90d24c22c0cdbbf5038eef7830a9Chris Lattner    break;
2476b1d0a3b366a637c0c96ea5cf7cfd8769469e6f3Bruno Cardoso Lopes
2484644a936dc2e90d24c22c0cdbbf5038eef7830a9Chris Lattner  case X86::PUNPCKLBWrr:
2494644a936dc2e90d24c22c0cdbbf5038eef7830a9Chris Lattner    Src2Name = getRegName(MI->getOperand(2).getReg());
2504644a936dc2e90d24c22c0cdbbf5038eef7830a9Chris Lattner    // FALL THROUGH.
2514644a936dc2e90d24c22c0cdbbf5038eef7830a9Chris Lattner  case X86::PUNPCKLBWrm:
2524644a936dc2e90d24c22c0cdbbf5038eef7830a9Chris Lattner    Src1Name = getRegName(MI->getOperand(0).getReg());
2533d8c2ce3e44bc161118a8922e7aa412ef00f6034Craig Topper    DecodeUNPCKLMask(MVT::v16i8, ShuffleMask);
2543d8c2ce3e44bc161118a8922e7aa412ef00f6034Craig Topper    break;
2553d8c2ce3e44bc161118a8922e7aa412ef00f6034Craig Topper  case X86::VPUNPCKLBWrr:
2563d8c2ce3e44bc161118a8922e7aa412ef00f6034Craig Topper    Src2Name = getRegName(MI->getOperand(2).getReg());
2573d8c2ce3e44bc161118a8922e7aa412ef00f6034Craig Topper    // FALL THROUGH.
2583d8c2ce3e44bc161118a8922e7aa412ef00f6034Craig Topper  case X86::VPUNPCKLBWrm:
2593d8c2ce3e44bc161118a8922e7aa412ef00f6034Craig Topper    Src1Name = getRegName(MI->getOperand(1).getReg());
2603d8c2ce3e44bc161118a8922e7aa412ef00f6034Craig Topper    DestName = getRegName(MI->getOperand(0).getReg());
2613d8c2ce3e44bc161118a8922e7aa412ef00f6034Craig Topper    DecodeUNPCKLMask(MVT::v16i8, ShuffleMask);
2623d8c2ce3e44bc161118a8922e7aa412ef00f6034Craig Topper    break;
2633d8c2ce3e44bc161118a8922e7aa412ef00f6034Craig Topper  case X86::VPUNPCKLBWYrr:
2643d8c2ce3e44bc161118a8922e7aa412ef00f6034Craig Topper    Src2Name = getRegName(MI->getOperand(2).getReg());
2653d8c2ce3e44bc161118a8922e7aa412ef00f6034Craig Topper    // FALL THROUGH.
2663d8c2ce3e44bc161118a8922e7aa412ef00f6034Craig Topper  case X86::VPUNPCKLBWYrm:
2673d8c2ce3e44bc161118a8922e7aa412ef00f6034Craig Topper    Src1Name = getRegName(MI->getOperand(1).getReg());
2683d8c2ce3e44bc161118a8922e7aa412ef00f6034Craig Topper    DestName = getRegName(MI->getOperand(0).getReg());
2693d8c2ce3e44bc161118a8922e7aa412ef00f6034Craig Topper    DecodeUNPCKLMask(MVT::v32i8, ShuffleMask);
2704644a936dc2e90d24c22c0cdbbf5038eef7830a9Chris Lattner    break;
2714644a936dc2e90d24c22c0cdbbf5038eef7830a9Chris Lattner  case X86::PUNPCKLWDrr:
2724644a936dc2e90d24c22c0cdbbf5038eef7830a9Chris Lattner    Src2Name = getRegName(MI->getOperand(2).getReg());
2734644a936dc2e90d24c22c0cdbbf5038eef7830a9Chris Lattner    // FALL THROUGH.
2744644a936dc2e90d24c22c0cdbbf5038eef7830a9Chris Lattner  case X86::PUNPCKLWDrm:
2754644a936dc2e90d24c22c0cdbbf5038eef7830a9Chris Lattner    Src1Name = getRegName(MI->getOperand(0).getReg());
2763d8c2ce3e44bc161118a8922e7aa412ef00f6034Craig Topper    DecodeUNPCKLMask(MVT::v8i16, ShuffleMask);
2773d8c2ce3e44bc161118a8922e7aa412ef00f6034Craig Topper    break;
2783d8c2ce3e44bc161118a8922e7aa412ef00f6034Craig Topper  case X86::VPUNPCKLWDrr:
2793d8c2ce3e44bc161118a8922e7aa412ef00f6034Craig Topper    Src2Name = getRegName(MI->getOperand(2).getReg());
2803d8c2ce3e44bc161118a8922e7aa412ef00f6034Craig Topper    // FALL THROUGH.
2813d8c2ce3e44bc161118a8922e7aa412ef00f6034Craig Topper  case X86::VPUNPCKLWDrm:
2823d8c2ce3e44bc161118a8922e7aa412ef00f6034Craig Topper    Src1Name = getRegName(MI->getOperand(1).getReg());
2833d8c2ce3e44bc161118a8922e7aa412ef00f6034Craig Topper    DestName = getRegName(MI->getOperand(0).getReg());
2843d8c2ce3e44bc161118a8922e7aa412ef00f6034Craig Topper    DecodeUNPCKLMask(MVT::v8i16, ShuffleMask);
2853d8c2ce3e44bc161118a8922e7aa412ef00f6034Craig Topper    break;
2863d8c2ce3e44bc161118a8922e7aa412ef00f6034Craig Topper  case X86::VPUNPCKLWDYrr:
2873d8c2ce3e44bc161118a8922e7aa412ef00f6034Craig Topper    Src2Name = getRegName(MI->getOperand(2).getReg());
2883d8c2ce3e44bc161118a8922e7aa412ef00f6034Craig Topper    // FALL THROUGH.
2893d8c2ce3e44bc161118a8922e7aa412ef00f6034Craig Topper  case X86::VPUNPCKLWDYrm:
2903d8c2ce3e44bc161118a8922e7aa412ef00f6034Craig Topper    Src1Name = getRegName(MI->getOperand(1).getReg());
2913d8c2ce3e44bc161118a8922e7aa412ef00f6034Craig Topper    DestName = getRegName(MI->getOperand(0).getReg());
2923d8c2ce3e44bc161118a8922e7aa412ef00f6034Craig Topper    DecodeUNPCKLMask(MVT::v16i16, ShuffleMask);
2934644a936dc2e90d24c22c0cdbbf5038eef7830a9Chris Lattner    break;
2944644a936dc2e90d24c22c0cdbbf5038eef7830a9Chris Lattner  case X86::PUNPCKLDQrr:
2954644a936dc2e90d24c22c0cdbbf5038eef7830a9Chris Lattner    Src2Name = getRegName(MI->getOperand(2).getReg());
2964644a936dc2e90d24c22c0cdbbf5038eef7830a9Chris Lattner    // FALL THROUGH.
2974644a936dc2e90d24c22c0cdbbf5038eef7830a9Chris Lattner  case X86::PUNPCKLDQrm:
2984644a936dc2e90d24c22c0cdbbf5038eef7830a9Chris Lattner    Src1Name = getRegName(MI->getOperand(0).getReg());
2993d8c2ce3e44bc161118a8922e7aa412ef00f6034Craig Topper    DecodeUNPCKLMask(MVT::v4i32, ShuffleMask);
3003d8c2ce3e44bc161118a8922e7aa412ef00f6034Craig Topper    break;
3013d8c2ce3e44bc161118a8922e7aa412ef00f6034Craig Topper  case X86::VPUNPCKLDQrr:
3023d8c2ce3e44bc161118a8922e7aa412ef00f6034Craig Topper    Src2Name = getRegName(MI->getOperand(2).getReg());
3033d8c2ce3e44bc161118a8922e7aa412ef00f6034Craig Topper    // FALL THROUGH.
3043d8c2ce3e44bc161118a8922e7aa412ef00f6034Craig Topper  case X86::VPUNPCKLDQrm:
3053d8c2ce3e44bc161118a8922e7aa412ef00f6034Craig Topper    Src1Name = getRegName(MI->getOperand(1).getReg());
3063d8c2ce3e44bc161118a8922e7aa412ef00f6034Craig Topper    DestName = getRegName(MI->getOperand(0).getReg());
3073d8c2ce3e44bc161118a8922e7aa412ef00f6034Craig Topper    DecodeUNPCKLMask(MVT::v4i32, ShuffleMask);
3083d8c2ce3e44bc161118a8922e7aa412ef00f6034Craig Topper    break;
3093d8c2ce3e44bc161118a8922e7aa412ef00f6034Craig Topper  case X86::VPUNPCKLDQYrr:
3103d8c2ce3e44bc161118a8922e7aa412ef00f6034Craig Topper    Src2Name = getRegName(MI->getOperand(2).getReg());
3113d8c2ce3e44bc161118a8922e7aa412ef00f6034Craig Topper    // FALL THROUGH.
3123d8c2ce3e44bc161118a8922e7aa412ef00f6034Craig Topper  case X86::VPUNPCKLDQYrm:
3133d8c2ce3e44bc161118a8922e7aa412ef00f6034Craig Topper    Src1Name = getRegName(MI->getOperand(1).getReg());
3143d8c2ce3e44bc161118a8922e7aa412ef00f6034Craig Topper    DestName = getRegName(MI->getOperand(0).getReg());
3153d8c2ce3e44bc161118a8922e7aa412ef00f6034Craig Topper    DecodeUNPCKLMask(MVT::v8i32, ShuffleMask);
3164644a936dc2e90d24c22c0cdbbf5038eef7830a9Chris Lattner    break;
3174644a936dc2e90d24c22c0cdbbf5038eef7830a9Chris Lattner  case X86::PUNPCKLQDQrr:
3184644a936dc2e90d24c22c0cdbbf5038eef7830a9Chris Lattner    Src2Name = getRegName(MI->getOperand(2).getReg());
3194644a936dc2e90d24c22c0cdbbf5038eef7830a9Chris Lattner    // FALL THROUGH.
3204644a936dc2e90d24c22c0cdbbf5038eef7830a9Chris Lattner  case X86::PUNPCKLQDQrm:
3214644a936dc2e90d24c22c0cdbbf5038eef7830a9Chris Lattner    Src1Name = getRegName(MI->getOperand(0).getReg());
3223d8c2ce3e44bc161118a8922e7aa412ef00f6034Craig Topper    DecodeUNPCKLMask(MVT::v2i64, ShuffleMask);
3233d8c2ce3e44bc161118a8922e7aa412ef00f6034Craig Topper    break;
3243d8c2ce3e44bc161118a8922e7aa412ef00f6034Craig Topper  case X86::VPUNPCKLQDQrr:
3253d8c2ce3e44bc161118a8922e7aa412ef00f6034Craig Topper    Src2Name = getRegName(MI->getOperand(2).getReg());
3263d8c2ce3e44bc161118a8922e7aa412ef00f6034Craig Topper    // FALL THROUGH.
3273d8c2ce3e44bc161118a8922e7aa412ef00f6034Craig Topper  case X86::VPUNPCKLQDQrm:
3283d8c2ce3e44bc161118a8922e7aa412ef00f6034Craig Topper    Src1Name = getRegName(MI->getOperand(1).getReg());
3293d8c2ce3e44bc161118a8922e7aa412ef00f6034Craig Topper    DestName = getRegName(MI->getOperand(0).getReg());
3303d8c2ce3e44bc161118a8922e7aa412ef00f6034Craig Topper    DecodeUNPCKLMask(MVT::v2i64, ShuffleMask);
3313d8c2ce3e44bc161118a8922e7aa412ef00f6034Craig Topper    break;
3323d8c2ce3e44bc161118a8922e7aa412ef00f6034Craig Topper  case X86::VPUNPCKLQDQYrr:
3333d8c2ce3e44bc161118a8922e7aa412ef00f6034Craig Topper    Src2Name = getRegName(MI->getOperand(2).getReg());
3343d8c2ce3e44bc161118a8922e7aa412ef00f6034Craig Topper    // FALL THROUGH.
3353d8c2ce3e44bc161118a8922e7aa412ef00f6034Craig Topper  case X86::VPUNPCKLQDQYrm:
3363d8c2ce3e44bc161118a8922e7aa412ef00f6034Craig Topper    Src1Name = getRegName(MI->getOperand(1).getReg());
3373d8c2ce3e44bc161118a8922e7aa412ef00f6034Craig Topper    DestName = getRegName(MI->getOperand(0).getReg());
3383d8c2ce3e44bc161118a8922e7aa412ef00f6034Craig Topper    DecodeUNPCKLMask(MVT::v4i64, ShuffleMask);
3394644a936dc2e90d24c22c0cdbbf5038eef7830a9Chris Lattner    break;
3406b1d0a3b366a637c0c96ea5cf7cfd8769469e6f3Bruno Cardoso Lopes
3416aa928d57a73a557d838f62af84e929bed0f276eChris Lattner  case X86::SHUFPDrri:
342e7461c035354ea82465857d6a922d0e7ad157a64Bruno Cardoso Lopes    Src2Name = getRegName(MI->getOperand(2).getReg());
343e7461c035354ea82465857d6a922d0e7ad157a64Bruno Cardoso Lopes    // FALL THROUGH.
344e7461c035354ea82465857d6a922d0e7ad157a64Bruno Cardoso Lopes  case X86::SHUFPDrmi:
345f267972d2864545f82f1eac7e922f85280a4d654Craig Topper    DecodeSHUFPMask(MVT::v2f64, MI->getOperand(MI->getNumOperands()-1).getImm(),
346f267972d2864545f82f1eac7e922f85280a4d654Craig Topper                    ShuffleMask);
3476aa928d57a73a557d838f62af84e929bed0f276eChris Lattner    Src1Name = getRegName(MI->getOperand(0).getReg());
3486aa928d57a73a557d838f62af84e929bed0f276eChris Lattner    break;
349796c193768547459cd6cbd667c8a43fedd601022Craig Topper  case X86::VSHUFPDrri:
350796c193768547459cd6cbd667c8a43fedd601022Craig Topper    Src2Name = getRegName(MI->getOperand(2).getReg());
351796c193768547459cd6cbd667c8a43fedd601022Craig Topper    // FALL THROUGH.
352796c193768547459cd6cbd667c8a43fedd601022Craig Topper  case X86::VSHUFPDrmi:
353f267972d2864545f82f1eac7e922f85280a4d654Craig Topper    DecodeSHUFPMask(MVT::v2f64, MI->getOperand(MI->getNumOperands()-1).getImm(),
354f267972d2864545f82f1eac7e922f85280a4d654Craig Topper                    ShuffleMask);
35536e36ace77cf84d7c8326957925550624b3fc89cCraig Topper    Src1Name = getRegName(MI->getOperand(1).getReg());
35636e36ace77cf84d7c8326957925550624b3fc89cCraig Topper    DestName = getRegName(MI->getOperand(0).getReg());
35736e36ace77cf84d7c8326957925550624b3fc89cCraig Topper    break;
35836e36ace77cf84d7c8326957925550624b3fc89cCraig Topper  case X86::VSHUFPDYrri:
35936e36ace77cf84d7c8326957925550624b3fc89cCraig Topper    Src2Name = getRegName(MI->getOperand(2).getReg());
36036e36ace77cf84d7c8326957925550624b3fc89cCraig Topper    // FALL THROUGH.
36136e36ace77cf84d7c8326957925550624b3fc89cCraig Topper  case X86::VSHUFPDYrmi:
362f267972d2864545f82f1eac7e922f85280a4d654Craig Topper    DecodeSHUFPMask(MVT::v4f64, MI->getOperand(MI->getNumOperands()-1).getImm(),
363f267972d2864545f82f1eac7e922f85280a4d654Craig Topper                    ShuffleMask);
364796c193768547459cd6cbd667c8a43fedd601022Craig Topper    Src1Name = getRegName(MI->getOperand(1).getReg());
365796c193768547459cd6cbd667c8a43fedd601022Craig Topper    DestName = getRegName(MI->getOperand(0).getReg());
366796c193768547459cd6cbd667c8a43fedd601022Craig Topper    break;
3676b1d0a3b366a637c0c96ea5cf7cfd8769469e6f3Bruno Cardoso Lopes
3686aa928d57a73a557d838f62af84e929bed0f276eChris Lattner  case X86::SHUFPSrri:
3694644a936dc2e90d24c22c0cdbbf5038eef7830a9Chris Lattner    Src2Name = getRegName(MI->getOperand(2).getReg());
3704644a936dc2e90d24c22c0cdbbf5038eef7830a9Chris Lattner    // FALL THROUGH.
3714644a936dc2e90d24c22c0cdbbf5038eef7830a9Chris Lattner  case X86::SHUFPSrmi:
372f267972d2864545f82f1eac7e922f85280a4d654Craig Topper    DecodeSHUFPMask(MVT::v4f32, MI->getOperand(MI->getNumOperands()-1).getImm(),
373f267972d2864545f82f1eac7e922f85280a4d654Craig Topper                    ShuffleMask);
3746aa928d57a73a557d838f62af84e929bed0f276eChris Lattner    Src1Name = getRegName(MI->getOperand(0).getReg());
3754644a936dc2e90d24c22c0cdbbf5038eef7830a9Chris Lattner    break;
376796c193768547459cd6cbd667c8a43fedd601022Craig Topper  case X86::VSHUFPSrri:
377796c193768547459cd6cbd667c8a43fedd601022Craig Topper    Src2Name = getRegName(MI->getOperand(2).getReg());
378796c193768547459cd6cbd667c8a43fedd601022Craig Topper    // FALL THROUGH.
379796c193768547459cd6cbd667c8a43fedd601022Craig Topper  case X86::VSHUFPSrmi:
380f267972d2864545f82f1eac7e922f85280a4d654Craig Topper    DecodeSHUFPMask(MVT::v4f32, MI->getOperand(MI->getNumOperands()-1).getImm(),
381f267972d2864545f82f1eac7e922f85280a4d654Craig Topper                    ShuffleMask);
38236e36ace77cf84d7c8326957925550624b3fc89cCraig Topper    Src1Name = getRegName(MI->getOperand(1).getReg());
38336e36ace77cf84d7c8326957925550624b3fc89cCraig Topper    DestName = getRegName(MI->getOperand(0).getReg());
38436e36ace77cf84d7c8326957925550624b3fc89cCraig Topper    break;
38536e36ace77cf84d7c8326957925550624b3fc89cCraig Topper  case X86::VSHUFPSYrri:
38636e36ace77cf84d7c8326957925550624b3fc89cCraig Topper    Src2Name = getRegName(MI->getOperand(2).getReg());
38736e36ace77cf84d7c8326957925550624b3fc89cCraig Topper    // FALL THROUGH.
38836e36ace77cf84d7c8326957925550624b3fc89cCraig Topper  case X86::VSHUFPSYrmi:
389f267972d2864545f82f1eac7e922f85280a4d654Craig Topper    DecodeSHUFPMask(MVT::v8f32, MI->getOperand(MI->getNumOperands()-1).getImm(),
390f267972d2864545f82f1eac7e922f85280a4d654Craig Topper                    ShuffleMask);
391796c193768547459cd6cbd667c8a43fedd601022Craig Topper    Src1Name = getRegName(MI->getOperand(1).getReg());
392796c193768547459cd6cbd667c8a43fedd601022Craig Topper    DestName = getRegName(MI->getOperand(0).getReg());
393796c193768547459cd6cbd667c8a43fedd601022Craig Topper    break;
3946b1d0a3b366a637c0c96ea5cf7cfd8769469e6f3Bruno Cardoso Lopes
3954644a936dc2e90d24c22c0cdbbf5038eef7830a9Chris Lattner  case X86::UNPCKLPDrr:
3966aa928d57a73a557d838f62af84e929bed0f276eChris Lattner    Src2Name = getRegName(MI->getOperand(2).getReg());
3974644a936dc2e90d24c22c0cdbbf5038eef7830a9Chris Lattner    // FALL THROUGH.
3984644a936dc2e90d24c22c0cdbbf5038eef7830a9Chris Lattner  case X86::UNPCKLPDrm:
3993d8c2ce3e44bc161118a8922e7aa412ef00f6034Craig Topper    DecodeUNPCKLMask(MVT::v2f64, ShuffleMask);
4004644a936dc2e90d24c22c0cdbbf5038eef7830a9Chris Lattner    Src1Name = getRegName(MI->getOperand(0).getReg());
4016aa928d57a73a557d838f62af84e929bed0f276eChris Lattner    break;
402c4db4e5105ccd82df19f141957511f735a9be2d0David Greene  case X86::VUNPCKLPDrr:
403c4db4e5105ccd82df19f141957511f735a9be2d0David Greene    Src2Name = getRegName(MI->getOperand(2).getReg());
404c4db4e5105ccd82df19f141957511f735a9be2d0David Greene    // FALL THROUGH.
405c4db4e5105ccd82df19f141957511f735a9be2d0David Greene  case X86::VUNPCKLPDrm:
4063d8c2ce3e44bc161118a8922e7aa412ef00f6034Craig Topper    DecodeUNPCKLMask(MVT::v2f64, ShuffleMask);
407c4db4e5105ccd82df19f141957511f735a9be2d0David Greene    Src1Name = getRegName(MI->getOperand(1).getReg());
408796c193768547459cd6cbd667c8a43fedd601022Craig Topper    DestName = getRegName(MI->getOperand(0).getReg());
409c4db4e5105ccd82df19f141957511f735a9be2d0David Greene    break;
410c4db4e5105ccd82df19f141957511f735a9be2d0David Greene  case X86::VUNPCKLPDYrr:
411c4db4e5105ccd82df19f141957511f735a9be2d0David Greene    Src2Name = getRegName(MI->getOperand(2).getReg());
412c4db4e5105ccd82df19f141957511f735a9be2d0David Greene    // FALL THROUGH.
413c4db4e5105ccd82df19f141957511f735a9be2d0David Greene  case X86::VUNPCKLPDYrm:
4143d8c2ce3e44bc161118a8922e7aa412ef00f6034Craig Topper    DecodeUNPCKLMask(MVT::v4f64, ShuffleMask);
415c4db4e5105ccd82df19f141957511f735a9be2d0David Greene    Src1Name = getRegName(MI->getOperand(1).getReg());
416796c193768547459cd6cbd667c8a43fedd601022Craig Topper    DestName = getRegName(MI->getOperand(0).getReg());
417c4db4e5105ccd82df19f141957511f735a9be2d0David Greene    break;
4186aa928d57a73a557d838f62af84e929bed0f276eChris Lattner  case X86::UNPCKLPSrr:
4196aa928d57a73a557d838f62af84e929bed0f276eChris Lattner    Src2Name = getRegName(MI->getOperand(2).getReg());
4206aa928d57a73a557d838f62af84e929bed0f276eChris Lattner    // FALL THROUGH.
4216aa928d57a73a557d838f62af84e929bed0f276eChris Lattner  case X86::UNPCKLPSrm:
4223d8c2ce3e44bc161118a8922e7aa412ef00f6034Craig Topper    DecodeUNPCKLMask(MVT::v4f32, ShuffleMask);
4236aa928d57a73a557d838f62af84e929bed0f276eChris Lattner    Src1Name = getRegName(MI->getOperand(0).getReg());
4246aa928d57a73a557d838f62af84e929bed0f276eChris Lattner    break;
425c4db4e5105ccd82df19f141957511f735a9be2d0David Greene  case X86::VUNPCKLPSrr:
426c4db4e5105ccd82df19f141957511f735a9be2d0David Greene    Src2Name = getRegName(MI->getOperand(2).getReg());
427c4db4e5105ccd82df19f141957511f735a9be2d0David Greene    // FALL THROUGH.
428c4db4e5105ccd82df19f141957511f735a9be2d0David Greene  case X86::VUNPCKLPSrm:
4293d8c2ce3e44bc161118a8922e7aa412ef00f6034Craig Topper    DecodeUNPCKLMask(MVT::v4f32, ShuffleMask);
430c4db4e5105ccd82df19f141957511f735a9be2d0David Greene    Src1Name = getRegName(MI->getOperand(1).getReg());
431796c193768547459cd6cbd667c8a43fedd601022Craig Topper    DestName = getRegName(MI->getOperand(0).getReg());
432c4db4e5105ccd82df19f141957511f735a9be2d0David Greene    break;
433c4db4e5105ccd82df19f141957511f735a9be2d0David Greene  case X86::VUNPCKLPSYrr:
434c4db4e5105ccd82df19f141957511f735a9be2d0David Greene    Src2Name = getRegName(MI->getOperand(2).getReg());
435c4db4e5105ccd82df19f141957511f735a9be2d0David Greene    // FALL THROUGH.
436c4db4e5105ccd82df19f141957511f735a9be2d0David Greene  case X86::VUNPCKLPSYrm:
4373d8c2ce3e44bc161118a8922e7aa412ef00f6034Craig Topper    DecodeUNPCKLMask(MVT::v8f32, ShuffleMask);
438c4db4e5105ccd82df19f141957511f735a9be2d0David Greene    Src1Name = getRegName(MI->getOperand(1).getReg());
439796c193768547459cd6cbd667c8a43fedd601022Craig Topper    DestName = getRegName(MI->getOperand(0).getReg());
440c4db4e5105ccd82df19f141957511f735a9be2d0David Greene    break;
4414644a936dc2e90d24c22c0cdbbf5038eef7830a9Chris Lattner  case X86::UNPCKHPDrr:
4424644a936dc2e90d24c22c0cdbbf5038eef7830a9Chris Lattner    Src2Name = getRegName(MI->getOperand(2).getReg());
4434644a936dc2e90d24c22c0cdbbf5038eef7830a9Chris Lattner    // FALL THROUGH.
4444644a936dc2e90d24c22c0cdbbf5038eef7830a9Chris Lattner  case X86::UNPCKHPDrm:
4453d8c2ce3e44bc161118a8922e7aa412ef00f6034Craig Topper    DecodeUNPCKHMask(MVT::v2f64, ShuffleMask);
4464644a936dc2e90d24c22c0cdbbf5038eef7830a9Chris Lattner    Src1Name = getRegName(MI->getOperand(0).getReg());
4474644a936dc2e90d24c22c0cdbbf5038eef7830a9Chris Lattner    break;
448f7de577a08a705970f0fd8f3c1bb40f7040e4476Craig Topper  case X86::VUNPCKHPDrr:
449f7de577a08a705970f0fd8f3c1bb40f7040e4476Craig Topper    Src2Name = getRegName(MI->getOperand(2).getReg());
450f7de577a08a705970f0fd8f3c1bb40f7040e4476Craig Topper    // FALL THROUGH.
451f7de577a08a705970f0fd8f3c1bb40f7040e4476Craig Topper  case X86::VUNPCKHPDrm:
4523d8c2ce3e44bc161118a8922e7aa412ef00f6034Craig Topper    DecodeUNPCKHMask(MVT::v2f64, ShuffleMask);
453f7de577a08a705970f0fd8f3c1bb40f7040e4476Craig Topper    Src1Name = getRegName(MI->getOperand(1).getReg());
454796c193768547459cd6cbd667c8a43fedd601022Craig Topper    DestName = getRegName(MI->getOperand(0).getReg());
455f7de577a08a705970f0fd8f3c1bb40f7040e4476Craig Topper    break;
456f7de577a08a705970f0fd8f3c1bb40f7040e4476Craig Topper  case X86::VUNPCKHPDYrr:
457f7de577a08a705970f0fd8f3c1bb40f7040e4476Craig Topper    Src2Name = getRegName(MI->getOperand(2).getReg());
458f7de577a08a705970f0fd8f3c1bb40f7040e4476Craig Topper    // FALL THROUGH.
459f7de577a08a705970f0fd8f3c1bb40f7040e4476Craig Topper  case X86::VUNPCKHPDYrm:
4603d8c2ce3e44bc161118a8922e7aa412ef00f6034Craig Topper    DecodeUNPCKHMask(MVT::v4f64, ShuffleMask);
461f7de577a08a705970f0fd8f3c1bb40f7040e4476Craig Topper    Src1Name = getRegName(MI->getOperand(1).getReg());
462796c193768547459cd6cbd667c8a43fedd601022Craig Topper    DestName = getRegName(MI->getOperand(0).getReg());
463f7de577a08a705970f0fd8f3c1bb40f7040e4476Craig Topper    break;
4644644a936dc2e90d24c22c0cdbbf5038eef7830a9Chris Lattner  case X86::UNPCKHPSrr:
4654644a936dc2e90d24c22c0cdbbf5038eef7830a9Chris Lattner    Src2Name = getRegName(MI->getOperand(2).getReg());
4664644a936dc2e90d24c22c0cdbbf5038eef7830a9Chris Lattner    // FALL THROUGH.
4674644a936dc2e90d24c22c0cdbbf5038eef7830a9Chris Lattner  case X86::UNPCKHPSrm:
4683d8c2ce3e44bc161118a8922e7aa412ef00f6034Craig Topper    DecodeUNPCKHMask(MVT::v4f32, ShuffleMask);
4694644a936dc2e90d24c22c0cdbbf5038eef7830a9Chris Lattner    Src1Name = getRegName(MI->getOperand(0).getReg());
4704644a936dc2e90d24c22c0cdbbf5038eef7830a9Chris Lattner    break;
471f7de577a08a705970f0fd8f3c1bb40f7040e4476Craig Topper  case X86::VUNPCKHPSrr:
472f7de577a08a705970f0fd8f3c1bb40f7040e4476Craig Topper    Src2Name = getRegName(MI->getOperand(2).getReg());
473f7de577a08a705970f0fd8f3c1bb40f7040e4476Craig Topper    // FALL THROUGH.
474f7de577a08a705970f0fd8f3c1bb40f7040e4476Craig Topper  case X86::VUNPCKHPSrm:
4753d8c2ce3e44bc161118a8922e7aa412ef00f6034Craig Topper    DecodeUNPCKHMask(MVT::v4f32, ShuffleMask);
476f7de577a08a705970f0fd8f3c1bb40f7040e4476Craig Topper    Src1Name = getRegName(MI->getOperand(1).getReg());
477796c193768547459cd6cbd667c8a43fedd601022Craig Topper    DestName = getRegName(MI->getOperand(0).getReg());
478f7de577a08a705970f0fd8f3c1bb40f7040e4476Craig Topper    break;
479f7de577a08a705970f0fd8f3c1bb40f7040e4476Craig Topper  case X86::VUNPCKHPSYrr:
480f7de577a08a705970f0fd8f3c1bb40f7040e4476Craig Topper    Src2Name = getRegName(MI->getOperand(2).getReg());
481f7de577a08a705970f0fd8f3c1bb40f7040e4476Craig Topper    // FALL THROUGH.
482f7de577a08a705970f0fd8f3c1bb40f7040e4476Craig Topper  case X86::VUNPCKHPSYrm:
4833d8c2ce3e44bc161118a8922e7aa412ef00f6034Craig Topper    DecodeUNPCKHMask(MVT::v8f32, ShuffleMask);
484f7de577a08a705970f0fd8f3c1bb40f7040e4476Craig Topper    Src1Name = getRegName(MI->getOperand(1).getReg());
485796c193768547459cd6cbd667c8a43fedd601022Craig Topper    DestName = getRegName(MI->getOperand(0).getReg());
486f7de577a08a705970f0fd8f3c1bb40f7040e4476Craig Topper    break;
4872eb4c2bcadfbef9d3c4e2fbb6478ed5dc3d65524Bruno Cardoso Lopes  case X86::VPERMILPSri:
48836e36ace77cf84d7c8326957925550624b3fc89cCraig Topper    Src1Name = getRegName(MI->getOperand(1).getReg());
48936e36ace77cf84d7c8326957925550624b3fc89cCraig Topper    // FALL THROUGH.
49036e36ace77cf84d7c8326957925550624b3fc89cCraig Topper  case X86::VPERMILPSmi:
491d156dc11f9acd83e3369c069d5006a0203be13d6Craig Topper    DecodePSHUFMask(MVT::v4f32, MI->getOperand(MI->getNumOperands()-1).getImm(),
492d156dc11f9acd83e3369c069d5006a0203be13d6Craig Topper                    ShuffleMask);
49336e36ace77cf84d7c8326957925550624b3fc89cCraig Topper    DestName = getRegName(MI->getOperand(0).getReg());
4948036586229e3e2eac29af435ab325b89019a1097Duncan Sands    break;
49565b74e1d00eef81b596b4c207fba069aa1eb8214Bruno Cardoso Lopes  case X86::VPERMILPSYri:
49636e36ace77cf84d7c8326957925550624b3fc89cCraig Topper    Src1Name = getRegName(MI->getOperand(1).getReg());
49736e36ace77cf84d7c8326957925550624b3fc89cCraig Topper    // FALL THROUGH.
49836e36ace77cf84d7c8326957925550624b3fc89cCraig Topper  case X86::VPERMILPSYmi:
499d156dc11f9acd83e3369c069d5006a0203be13d6Craig Topper    DecodePSHUFMask(MVT::v8f32, MI->getOperand(MI->getNumOperands()-1).getImm(),
500d156dc11f9acd83e3369c069d5006a0203be13d6Craig Topper                    ShuffleMask);
50136e36ace77cf84d7c8326957925550624b3fc89cCraig Topper    DestName = getRegName(MI->getOperand(0).getReg());
50265b74e1d00eef81b596b4c207fba069aa1eb8214Bruno Cardoso Lopes    break;
5032eb4c2bcadfbef9d3c4e2fbb6478ed5dc3d65524Bruno Cardoso Lopes  case X86::VPERMILPDri:
50436e36ace77cf84d7c8326957925550624b3fc89cCraig Topper    Src1Name = getRegName(MI->getOperand(1).getReg());
50536e36ace77cf84d7c8326957925550624b3fc89cCraig Topper    // FALL THROUGH.
50636e36ace77cf84d7c8326957925550624b3fc89cCraig Topper  case X86::VPERMILPDmi:
507d156dc11f9acd83e3369c069d5006a0203be13d6Craig Topper    DecodePSHUFMask(MVT::v2f64, MI->getOperand(MI->getNumOperands()-1).getImm(),
508d156dc11f9acd83e3369c069d5006a0203be13d6Craig Topper                    ShuffleMask);
50936e36ace77cf84d7c8326957925550624b3fc89cCraig Topper    DestName = getRegName(MI->getOperand(0).getReg());
5102eb4c2bcadfbef9d3c4e2fbb6478ed5dc3d65524Bruno Cardoso Lopes    break;
51165b74e1d00eef81b596b4c207fba069aa1eb8214Bruno Cardoso Lopes  case X86::VPERMILPDYri:
51236e36ace77cf84d7c8326957925550624b3fc89cCraig Topper    Src1Name = getRegName(MI->getOperand(1).getReg());
51336e36ace77cf84d7c8326957925550624b3fc89cCraig Topper    // FALL THROUGH.
51436e36ace77cf84d7c8326957925550624b3fc89cCraig Topper  case X86::VPERMILPDYmi:
515d156dc11f9acd83e3369c069d5006a0203be13d6Craig Topper    DecodePSHUFMask(MVT::v4f64, MI->getOperand(MI->getNumOperands()-1).getImm(),
516316cd2a2c57037ecca93bb20d939b89dad4c5243Craig Topper                       ShuffleMask);
51736e36ace77cf84d7c8326957925550624b3fc89cCraig Topper    DestName = getRegName(MI->getOperand(0).getReg());
51865b74e1d00eef81b596b4c207fba069aa1eb8214Bruno Cardoso Lopes    break;
51953cae1362dca8aa312c3e36c10b106ea7d349f93Bruno Cardoso Lopes  case X86::VPERM2F128rr:
52036e36ace77cf84d7c8326957925550624b3fc89cCraig Topper  case X86::VPERM2I128rr:
52153cae1362dca8aa312c3e36c10b106ea7d349f93Bruno Cardoso Lopes    Src2Name = getRegName(MI->getOperand(2).getReg());
52236e36ace77cf84d7c8326957925550624b3fc89cCraig Topper    // FALL THROUGH.
52336e36ace77cf84d7c8326957925550624b3fc89cCraig Topper  case X86::VPERM2F128rm:
52436e36ace77cf84d7c8326957925550624b3fc89cCraig Topper  case X86::VPERM2I128rm:
525d156dc11f9acd83e3369c069d5006a0203be13d6Craig Topper    // For instruction comments purpose, assume the 256-bit vector is v4i64.
526d156dc11f9acd83e3369c069d5006a0203be13d6Craig Topper    DecodeVPERM2X128Mask(MVT::v4i64,
527d156dc11f9acd83e3369c069d5006a0203be13d6Craig Topper                         MI->getOperand(MI->getNumOperands()-1).getImm(),
52836e36ace77cf84d7c8326957925550624b3fc89cCraig Topper                         ShuffleMask);
52936e36ace77cf84d7c8326957925550624b3fc89cCraig Topper    Src1Name = getRegName(MI->getOperand(1).getReg());
53036e36ace77cf84d7c8326957925550624b3fc89cCraig Topper    DestName = getRegName(MI->getOperand(0).getReg());
53153cae1362dca8aa312c3e36c10b106ea7d349f93Bruno Cardoso Lopes    break;
532156f5bb56e2730013fcddf90e8cad0e5e3ee1928Craig Topper  case X86::VPERMQYri:
533156f5bb56e2730013fcddf90e8cad0e5e3ee1928Craig Topper  case X86::VPERMPDYri:
534156f5bb56e2730013fcddf90e8cad0e5e3ee1928Craig Topper    Src1Name = getRegName(MI->getOperand(1).getReg());
535156f5bb56e2730013fcddf90e8cad0e5e3ee1928Craig Topper    // FALL THROUGH.
536156f5bb56e2730013fcddf90e8cad0e5e3ee1928Craig Topper  case X86::VPERMQYmi:
537156f5bb56e2730013fcddf90e8cad0e5e3ee1928Craig Topper  case X86::VPERMPDYmi:
538156f5bb56e2730013fcddf90e8cad0e5e3ee1928Craig Topper    DecodeVPERMMask(MI->getOperand(MI->getNumOperands()-1).getImm(),
539156f5bb56e2730013fcddf90e8cad0e5e3ee1928Craig Topper                    ShuffleMask);
540156f5bb56e2730013fcddf90e8cad0e5e3ee1928Craig Topper    DestName = getRegName(MI->getOperand(0).getReg());
541156f5bb56e2730013fcddf90e8cad0e5e3ee1928Craig Topper    break;
5426aa928d57a73a557d838f62af84e929bed0f276eChris Lattner  }
5436aa928d57a73a557d838f62af84e929bed0f276eChris Lattner
5446b1d0a3b366a637c0c96ea5cf7cfd8769469e6f3Bruno Cardoso Lopes
5456aa928d57a73a557d838f62af84e929bed0f276eChris Lattner  // If this was a shuffle operation, print the shuffle mask.
5466aa928d57a73a557d838f62af84e929bed0f276eChris Lattner  if (!ShuffleMask.empty()) {
5476aa928d57a73a557d838f62af84e929bed0f276eChris Lattner    if (DestName == 0) DestName = Src1Name;
5486aa928d57a73a557d838f62af84e929bed0f276eChris Lattner    OS << (DestName ? DestName : "mem") << " = ";
5496b1d0a3b366a637c0c96ea5cf7cfd8769469e6f3Bruno Cardoso Lopes
5506aa928d57a73a557d838f62af84e929bed0f276eChris Lattner    // If the two sources are the same, canonicalize the input elements to be
5516aa928d57a73a557d838f62af84e929bed0f276eChris Lattner    // from the first src so that we get larger element spans.
5526aa928d57a73a557d838f62af84e929bed0f276eChris Lattner    if (Src1Name == Src2Name) {
5536aa928d57a73a557d838f62af84e929bed0f276eChris Lattner      for (unsigned i = 0, e = ShuffleMask.size(); i != e; ++i) {
5546aa928d57a73a557d838f62af84e929bed0f276eChris Lattner        if ((int)ShuffleMask[i] >= 0 && // Not sentinel.
555a1ffc681ed7372bd371c44a6e186291b6416fe47Craig Topper            ShuffleMask[i] >= (int)e)        // From second mask.
5566aa928d57a73a557d838f62af84e929bed0f276eChris Lattner          ShuffleMask[i] -= e;
5576aa928d57a73a557d838f62af84e929bed0f276eChris Lattner      }
5586aa928d57a73a557d838f62af84e929bed0f276eChris Lattner    }
5596b1d0a3b366a637c0c96ea5cf7cfd8769469e6f3Bruno Cardoso Lopes
5606aa928d57a73a557d838f62af84e929bed0f276eChris Lattner    // The shuffle mask specifies which elements of the src1/src2 fill in the
5616aa928d57a73a557d838f62af84e929bed0f276eChris Lattner    // destination, with a few sentinel values.  Loop through and print them
5626aa928d57a73a557d838f62af84e929bed0f276eChris Lattner    // out.
5636aa928d57a73a557d838f62af84e929bed0f276eChris Lattner    for (unsigned i = 0, e = ShuffleMask.size(); i != e; ++i) {
5646aa928d57a73a557d838f62af84e929bed0f276eChris Lattner      if (i != 0)
5656aa928d57a73a557d838f62af84e929bed0f276eChris Lattner        OS << ',';
56647817f30f28118ba278ab11740fa9f0adcfb462dBenjamin Kramer      if (ShuffleMask[i] == SM_SentinelZero) {
5676aa928d57a73a557d838f62af84e929bed0f276eChris Lattner        OS << "zero";
5686aa928d57a73a557d838f62af84e929bed0f276eChris Lattner        continue;
5696aa928d57a73a557d838f62af84e929bed0f276eChris Lattner      }
5706b1d0a3b366a637c0c96ea5cf7cfd8769469e6f3Bruno Cardoso Lopes
5716aa928d57a73a557d838f62af84e929bed0f276eChris Lattner      // Otherwise, it must come from src1 or src2.  Print the span of elements
5726aa928d57a73a557d838f62af84e929bed0f276eChris Lattner      // that comes from this src.
573a1ffc681ed7372bd371c44a6e186291b6416fe47Craig Topper      bool isSrc1 = ShuffleMask[i] < (int)ShuffleMask.size();
5746aa928d57a73a557d838f62af84e929bed0f276eChris Lattner      const char *SrcName = isSrc1 ? Src1Name : Src2Name;
5756aa928d57a73a557d838f62af84e929bed0f276eChris Lattner      OS << (SrcName ? SrcName : "mem") << '[';
5766aa928d57a73a557d838f62af84e929bed0f276eChris Lattner      bool IsFirst = true;
5776aa928d57a73a557d838f62af84e929bed0f276eChris Lattner      while (i != e &&
5786aa928d57a73a557d838f62af84e929bed0f276eChris Lattner             (int)ShuffleMask[i] >= 0 &&
579a1ffc681ed7372bd371c44a6e186291b6416fe47Craig Topper             (ShuffleMask[i] < (int)ShuffleMask.size()) == isSrc1) {
5806aa928d57a73a557d838f62af84e929bed0f276eChris Lattner        if (!IsFirst)
5816aa928d57a73a557d838f62af84e929bed0f276eChris Lattner          OS << ',';
5826aa928d57a73a557d838f62af84e929bed0f276eChris Lattner        else
5836aa928d57a73a557d838f62af84e929bed0f276eChris Lattner          IsFirst = false;
5846aa928d57a73a557d838f62af84e929bed0f276eChris Lattner        OS << ShuffleMask[i] % ShuffleMask.size();
5856aa928d57a73a557d838f62af84e929bed0f276eChris Lattner        ++i;
5866aa928d57a73a557d838f62af84e929bed0f276eChris Lattner      }
5876aa928d57a73a557d838f62af84e929bed0f276eChris Lattner      OS << ']';
5886aa928d57a73a557d838f62af84e929bed0f276eChris Lattner      --i;  // For loop increments element #.
5896aa928d57a73a557d838f62af84e929bed0f276eChris Lattner    }
5906aa928d57a73a557d838f62af84e929bed0f276eChris Lattner    //MI->print(OS, 0);
5916aa928d57a73a557d838f62af84e929bed0f276eChris Lattner    OS << "\n";
5926aa928d57a73a557d838f62af84e929bed0f276eChris Lattner  }
5936b1d0a3b366a637c0c96ea5cf7cfd8769469e6f3Bruno Cardoso Lopes
5946aa928d57a73a557d838f62af84e929bed0f276eChris Lattner}
595