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