30 const char *(*getRegName)(
unsigned)) {
33 const char *DestName = 0, *Src1Name = 0, *Src2Name = 0;
37 case X86::VINSERTPSrr:
60 case X86::PALIGNR128rr:
61 case X86::VPALIGNR128rr:
64 case X86::PALIGNR128rm:
65 case X86::VPALIGNR128rm:
72 case X86::VPALIGNR256rr:
75 case X86::VPALIGNR256rm:
104 case X86::VPSHUFHWri:
108 case X86::VPSHUFHWmi:
114 case X86::VPSHUFHWYri:
117 case X86::VPSHUFHWYmi:
124 case X86::VPSHUFLWri:
128 case X86::VPSHUFLWmi:
134 case X86::VPSHUFLWYri:
137 case X86::VPSHUFLWYmi:
144 case X86::PUNPCKHBWrr:
145 case X86::VPUNPCKHBWrr:
148 case X86::PUNPCKHBWrm:
149 case X86::VPUNPCKHBWrm:
154 case X86::VPUNPCKHBWYrr:
157 case X86::VPUNPCKHBWYrm:
162 case X86::PUNPCKHWDrr:
163 case X86::VPUNPCKHWDrr:
166 case X86::PUNPCKHWDrm:
167 case X86::VPUNPCKHWDrm:
172 case X86::VPUNPCKHWDYrr:
175 case X86::VPUNPCKHWDYrm:
180 case X86::PUNPCKHDQrr:
181 case X86::VPUNPCKHDQrr:
184 case X86::PUNPCKHDQrm:
185 case X86::VPUNPCKHDQrm:
190 case X86::VPUNPCKHDQYrr:
193 case X86::VPUNPCKHDQYrm:
198 case X86::PUNPCKHQDQrr:
199 case X86::VPUNPCKHQDQrr:
202 case X86::PUNPCKHQDQrm:
203 case X86::VPUNPCKHQDQrm:
208 case X86::VPUNPCKHQDQYrr:
211 case X86::VPUNPCKHQDQYrm:
217 case X86::PUNPCKLBWrr:
218 case X86::VPUNPCKLBWrr:
221 case X86::PUNPCKLBWrm:
222 case X86::VPUNPCKLBWrm:
227 case X86::VPUNPCKLBWYrr:
230 case X86::VPUNPCKLBWYrm:
235 case X86::PUNPCKLWDrr:
236 case X86::VPUNPCKLWDrr:
239 case X86::PUNPCKLWDrm:
240 case X86::VPUNPCKLWDrm:
245 case X86::VPUNPCKLWDYrr:
248 case X86::VPUNPCKLWDYrm:
253 case X86::PUNPCKLDQrr:
254 case X86::VPUNPCKLDQrr:
257 case X86::PUNPCKLDQrm:
258 case X86::VPUNPCKLDQrm:
263 case X86::VPUNPCKLDQYrr:
266 case X86::VPUNPCKLDQYrm:
271 case X86::PUNPCKLQDQrr:
272 case X86::VPUNPCKLQDQrr:
275 case X86::PUNPCKLQDQrm:
276 case X86::VPUNPCKLQDQrm:
281 case X86::VPUNPCKLQDQYrr:
284 case X86::VPUNPCKLQDQYrm:
291 case X86::VSHUFPDrri:
295 case X86::VSHUFPDrmi:
301 case X86::VSHUFPDYrri:
304 case X86::VSHUFPDYrmi:
312 case X86::VSHUFPSrri:
316 case X86::VSHUFPSrmi:
322 case X86::VSHUFPSYrri:
325 case X86::VSHUFPSYrmi:
332 case X86::UNPCKLPDrr:
333 case X86::VUNPCKLPDrr:
336 case X86::UNPCKLPDrm:
337 case X86::VUNPCKLPDrm:
342 case X86::VUNPCKLPDYrr:
345 case X86::VUNPCKLPDYrm:
350 case X86::UNPCKLPSrr:
351 case X86::VUNPCKLPSrr:
354 case X86::UNPCKLPSrm:
355 case X86::VUNPCKLPSrm:
360 case X86::VUNPCKLPSYrr:
363 case X86::VUNPCKLPSYrm:
368 case X86::UNPCKHPDrr:
369 case X86::VUNPCKHPDrr:
372 case X86::UNPCKHPDrm:
373 case X86::VUNPCKHPDrm:
378 case X86::VUNPCKHPDYrr:
381 case X86::VUNPCKHPDYrm:
386 case X86::UNPCKHPSrr:
387 case X86::VUNPCKHPSrr:
390 case X86::UNPCKHPSrm:
391 case X86::VUNPCKHPSrm:
396 case X86::VUNPCKHPSYrr:
399 case X86::VUNPCKHPSYrm:
404 case X86::VPERMILPSri:
407 case X86::VPERMILPSmi:
412 case X86::VPERMILPSYri:
415 case X86::VPERMILPSYmi:
420 case X86::VPERMILPDri:
423 case X86::VPERMILPDmi:
428 case X86::VPERMILPDYri:
431 case X86::VPERMILPDYmi:
436 case X86::VPERM2F128rr:
437 case X86::VPERM2I128rr:
440 case X86::VPERM2F128rm:
441 case X86::VPERM2I128rm:
450 case X86::VPERMPDYri:
454 case X86::VPERMPDYmi:
463 if (!ShuffleMask.
empty()) {
464 if (DestName == 0) DestName = Src1Name;
465 OS << (DestName ? DestName :
"mem") <<
" = ";
469 if (Src1Name == Src2Name) {
470 for (
unsigned i = 0, e = ShuffleMask.
size(); i != e; ++i) {
471 if ((
int)ShuffleMask[i] >= 0 &&
472 ShuffleMask[i] >= (int)e)
480 for (
unsigned i = 0, e = ShuffleMask.
size(); i != e; ++i) {
490 bool isSrc1 = ShuffleMask[i] < (int)ShuffleMask.
size();
491 const char *SrcName = isSrc1 ? Src1Name : Src2Name;
492 OS << (SrcName ? SrcName :
"mem") <<
'[';
495 (
int)ShuffleMask[i] >= 0 &&
496 (ShuffleMask[i] < (int)ShuffleMask.
size()) == isSrc1) {
501 OS << ShuffleMask[i] % ShuffleMask.
size();
void DecodePALIGNRMask(MVT VT, unsigned Imm, SmallVectorImpl< int > &ShuffleMask)
void DecodeUNPCKLMask(MVT VT, SmallVectorImpl< int > &ShuffleMask)
bool LLVM_ATTRIBUTE_UNUSED_RESULT empty() const
unsigned getReg() const
getReg - Returns the register number.
void DecodeMOVLHPSMask(unsigned NElts, SmallVectorImpl< int > &ShuffleMask)
void DecodeSHUFPMask(MVT VT, unsigned Imm, SmallVectorImpl< int > &ShuffleMask)
void DecodePSHUFLWMask(MVT VT, unsigned Imm, SmallVectorImpl< int > &ShuffleMask)
void DecodeINSERTPSMask(unsigned Imm, SmallVectorImpl< int > &ShuffleMask)
void DecodePSHUFMask(MVT VT, unsigned Imm, SmallVectorImpl< int > &ShuffleMask)
unsigned getOpcode() const
void DecodeUNPCKHMask(MVT VT, SmallVectorImpl< int > &ShuffleMask)
void DecodeVPERM2X128Mask(MVT VT, unsigned Imm, SmallVectorImpl< int > &ShuffleMask)
void DecodePSHUFHWMask(MVT VT, unsigned Imm, SmallVectorImpl< int > &ShuffleMask)
unsigned getNumOperands() const
void DecodeVPERMMask(unsigned Imm, SmallVectorImpl< int > &ShuffleMask)
void DecodeMOVHLPSMask(unsigned NElts, SmallVectorImpl< int > &ShuffleMask)
void EmitAnyX86InstComments(const MCInst *MI, raw_ostream &OS, const char *(*getRegName)(unsigned))
const MCOperand & getOperand(unsigned i) const