25 #define CASE_SSE_INS_COMMON(Inst, src) \
28 #define CASE_AVX_INS_COMMON(Inst, Suffix, src) \
29 case X86::V##Inst##Suffix##src:
31 #define CASE_MASK_INS_COMMON(Inst, Suffix, src) \
32 case X86::V##Inst##Suffix##src##k:
34 #define CASE_MASKZ_INS_COMMON(Inst, Suffix, src) \
35 case X86::V##Inst##Suffix##src##kz:
37 #define CASE_AVX512_INS_COMMON(Inst, Suffix, src) \
38 CASE_AVX_INS_COMMON(Inst, Suffix, src) \
39 CASE_MASK_INS_COMMON(Inst, Suffix, src) \
40 CASE_MASKZ_INS_COMMON(Inst, Suffix, src)
42 #define CASE_MOVDUP(Inst, src) \
43 CASE_AVX512_INS_COMMON(Inst, Z, r##src) \
44 CASE_AVX512_INS_COMMON(Inst, Z256, r##src) \
45 CASE_AVX512_INS_COMMON(Inst, Z128, r##src) \
46 CASE_AVX_INS_COMMON(Inst, , r##src) \
47 CASE_AVX_INS_COMMON(Inst, Y, r##src) \
48 CASE_SSE_INS_COMMON(Inst, r##src)
50 #define CASE_MASK_MOVDUP(Inst, src) \
51 CASE_MASK_INS_COMMON(Inst, Z, r##src) \
52 CASE_MASK_INS_COMMON(Inst, Z256, r##src) \
53 CASE_MASK_INS_COMMON(Inst, Z128, r##src)
55 #define CASE_MASKZ_MOVDUP(Inst, src) \
56 CASE_MASKZ_INS_COMMON(Inst, Z, r##src) \
57 CASE_MASKZ_INS_COMMON(Inst, Z256, r##src) \
58 CASE_MASKZ_INS_COMMON(Inst, Z128, r##src)
60 #define CASE_PMOVZX(Inst, src) \
61 CASE_AVX512_INS_COMMON(Inst, Z, r##src) \
62 CASE_AVX512_INS_COMMON(Inst, Z256, r##src) \
63 CASE_AVX512_INS_COMMON(Inst, Z128, r##src) \
64 CASE_AVX_INS_COMMON(Inst, , r##src) \
65 CASE_AVX_INS_COMMON(Inst, Y, r##src) \
66 CASE_SSE_INS_COMMON(Inst, r##src)
68 #define CASE_MASK_PMOVZX(Inst, src) \
69 CASE_MASK_INS_COMMON(Inst, Z, r##src) \
70 CASE_MASK_INS_COMMON(Inst, Z256, r##src) \
71 CASE_MASK_INS_COMMON(Inst, Z128, r##src)
73 #define CASE_MASKZ_PMOVZX(Inst, src) \
74 CASE_MASKZ_INS_COMMON(Inst, Z, r##src) \
75 CASE_MASKZ_INS_COMMON(Inst, Z256, r##src) \
76 CASE_MASKZ_INS_COMMON(Inst, Z128, r##src)
78 #define CASE_UNPCK(Inst, src) \
79 CASE_AVX512_INS_COMMON(Inst, Z, r##src) \
80 CASE_AVX512_INS_COMMON(Inst, Z256, r##src) \
81 CASE_AVX512_INS_COMMON(Inst, Z128, r##src) \
82 CASE_AVX_INS_COMMON(Inst, , r##src) \
83 CASE_AVX_INS_COMMON(Inst, Y, r##src) \
84 CASE_SSE_INS_COMMON(Inst, r##src)
86 #define CASE_MASK_UNPCK(Inst, src) \
87 CASE_MASK_INS_COMMON(Inst, Z, r##src) \
88 CASE_MASK_INS_COMMON(Inst, Z256, r##src) \
89 CASE_MASK_INS_COMMON(Inst, Z128, r##src)
91 #define CASE_MASKZ_UNPCK(Inst, src) \
92 CASE_MASKZ_INS_COMMON(Inst, Z, r##src) \
93 CASE_MASKZ_INS_COMMON(Inst, Z256, r##src) \
94 CASE_MASKZ_INS_COMMON(Inst, Z128, r##src)
96 #define CASE_SHUF(Inst, suf) \
97 CASE_AVX512_INS_COMMON(Inst, Z, suf) \
98 CASE_AVX512_INS_COMMON(Inst, Z256, suf) \
99 CASE_AVX512_INS_COMMON(Inst, Z128, suf) \
100 CASE_AVX_INS_COMMON(Inst, , suf) \
101 CASE_AVX_INS_COMMON(Inst, Y, suf) \
102 CASE_SSE_INS_COMMON(Inst, suf)
104 #define CASE_MASK_SHUF(Inst, src) \
105 CASE_MASK_INS_COMMON(Inst, Z, r##src##i) \
106 CASE_MASK_INS_COMMON(Inst, Z256, r##src##i) \
107 CASE_MASK_INS_COMMON(Inst, Z128, r##src##i)
109 #define CASE_MASKZ_SHUF(Inst, src) \
110 CASE_MASKZ_INS_COMMON(Inst, Z, r##src##i) \
111 CASE_MASKZ_INS_COMMON(Inst, Z256, r##src##i) \
112 CASE_MASKZ_INS_COMMON(Inst, Z128, r##src##i)
114 #define CASE_VPERMILPI(Inst, src) \
115 CASE_AVX512_INS_COMMON(Inst, Z, src##i) \
116 CASE_AVX512_INS_COMMON(Inst, Z256, src##i) \
117 CASE_AVX512_INS_COMMON(Inst, Z128, src##i) \
118 CASE_AVX_INS_COMMON(Inst, , src##i) \
119 CASE_AVX_INS_COMMON(Inst, Y, src##i)
121 #define CASE_MASK_VPERMILPI(Inst, src) \
122 CASE_MASK_INS_COMMON(Inst, Z, src##i) \
123 CASE_MASK_INS_COMMON(Inst, Z256, src##i) \
124 CASE_MASK_INS_COMMON(Inst, Z128, src##i)
126 #define CASE_MASKZ_VPERMILPI(Inst, src) \
127 CASE_MASKZ_INS_COMMON(Inst, Z, src##i) \
128 CASE_MASKZ_INS_COMMON(Inst, Z256, src##i) \
129 CASE_MASKZ_INS_COMMON(Inst, Z128, src##i)
131 #define CASE_VPERM(Inst, src) \
132 CASE_AVX512_INS_COMMON(Inst, Z, src##i) \
133 CASE_AVX512_INS_COMMON(Inst, Z256, src##i) \
134 CASE_AVX_INS_COMMON(Inst, Y, src##i)
136 #define CASE_MASK_VPERM(Inst, src) \
137 CASE_MASK_INS_COMMON(Inst, Z, src##i) \
138 CASE_MASK_INS_COMMON(Inst, Z256, src##i)
140 #define CASE_MASKZ_VPERM(Inst, src) \
141 CASE_MASKZ_INS_COMMON(Inst, Z, src##i) \
142 CASE_MASKZ_INS_COMMON(Inst, Z256, src##i)
144 #define CASE_VSHUF(Inst, src) \
145 CASE_AVX512_INS_COMMON(SHUFF##Inst, Z, r##src##i) \
146 CASE_AVX512_INS_COMMON(SHUFI##Inst, Z, r##src##i) \
147 CASE_AVX512_INS_COMMON(SHUFF##Inst, Z256, r##src##i) \
148 CASE_AVX512_INS_COMMON(SHUFI##Inst, Z256, r##src##i)
150 #define CASE_MASK_VSHUF(Inst, src) \
151 CASE_MASK_INS_COMMON(SHUFF##Inst, Z, r##src##i) \
152 CASE_MASK_INS_COMMON(SHUFI##Inst, Z, r##src##i) \
153 CASE_MASK_INS_COMMON(SHUFF##Inst, Z256, r##src##i) \
154 CASE_MASK_INS_COMMON(SHUFI##Inst, Z256, r##src##i)
156 #define CASE_MASKZ_VSHUF(Inst, src) \
157 CASE_MASKZ_INS_COMMON(SHUFF##Inst, Z, r##src##i) \
158 CASE_MASKZ_INS_COMMON(SHUFI##Inst, Z, r##src##i) \
159 CASE_MASKZ_INS_COMMON(SHUFF##Inst, Z256, r##src##i) \
160 CASE_MASKZ_INS_COMMON(SHUFI##Inst, Z256, r##src##i)
162 #define CASE_AVX512_FMA(Inst, suf) \
163 CASE_AVX512_INS_COMMON(Inst, Z, suf) \
164 CASE_AVX512_INS_COMMON(Inst, Z256, suf) \
165 CASE_AVX512_INS_COMMON(Inst, Z128, suf)
167 #define CASE_FMA(Inst, suf) \
168 CASE_AVX512_FMA(Inst, suf) \
169 CASE_AVX_INS_COMMON(Inst, , suf) \
170 CASE_AVX_INS_COMMON(Inst, Y, suf)
172 #define CASE_FMA_PACKED_REG(Inst) \
173 CASE_FMA(Inst##PD, r) \
174 CASE_FMA(Inst##PS, r)
176 #define CASE_FMA_PACKED_MEM(Inst) \
177 CASE_FMA(Inst##PD, m) \
178 CASE_FMA(Inst##PS, m) \
179 CASE_AVX512_FMA(Inst##PD, mb) \
180 CASE_AVX512_FMA(Inst##PS, mb)
182 #define CASE_FMA_SCALAR_REG(Inst) \
183 CASE_AVX_INS_COMMON(Inst##SD, , r) \
184 CASE_AVX_INS_COMMON(Inst##SS, , r) \
185 CASE_AVX_INS_COMMON(Inst##SD, , r_Int) \
186 CASE_AVX_INS_COMMON(Inst##SS, , r_Int) \
187 CASE_AVX_INS_COMMON(Inst##SD, Z, r) \
188 CASE_AVX_INS_COMMON(Inst##SS, Z, r) \
189 CASE_AVX512_INS_COMMON(Inst##SD, Z, r_Int) \
190 CASE_AVX512_INS_COMMON(Inst##SS, Z, r_Int)
192 #define CASE_FMA_SCALAR_MEM(Inst) \
193 CASE_AVX_INS_COMMON(Inst##SD, , m) \
194 CASE_AVX_INS_COMMON(Inst##SS, , m) \
195 CASE_AVX_INS_COMMON(Inst##SD, , m_Int) \
196 CASE_AVX_INS_COMMON(Inst##SS, , m_Int) \
197 CASE_AVX_INS_COMMON(Inst##SD, Z, m) \
198 CASE_AVX_INS_COMMON(Inst##SS, Z, m) \
199 CASE_AVX512_INS_COMMON(Inst##SD, Z, m_Int) \
200 CASE_AVX512_INS_COMMON(Inst##SS, Z, m_Int)
202 #define CASE_FMA4(Inst, suf) \
203 CASE_AVX_INS_COMMON(Inst, 4, suf) \
204 CASE_AVX_INS_COMMON(Inst, 4Y, suf)
206 #define CASE_FMA4_PACKED_RR(Inst) \
207 CASE_FMA4(Inst##PD, rr) \
208 CASE_FMA4(Inst##PS, rr)
210 #define CASE_FMA4_PACKED_RM(Inst) \
211 CASE_FMA4(Inst##PD, rm) \
212 CASE_FMA4(Inst##PS, rm)
214 #define CASE_FMA4_PACKED_MR(Inst) \
215 CASE_FMA4(Inst##PD, mr) \
216 CASE_FMA4(Inst##PS, mr)
218 #define CASE_FMA4_SCALAR_RR(Inst) \
219 CASE_AVX_INS_COMMON(Inst##SD4, , rr) \
220 CASE_AVX_INS_COMMON(Inst##SS4, , rr) \
221 CASE_AVX_INS_COMMON(Inst##SD4, , rr_Int) \
222 CASE_AVX_INS_COMMON(Inst##SS4, , rr_Int)
224 #define CASE_FMA4_SCALAR_RM(Inst) \
225 CASE_AVX_INS_COMMON(Inst##SD4, , rm) \
226 CASE_AVX_INS_COMMON(Inst##SS4, , rm) \
227 CASE_AVX_INS_COMMON(Inst##SD4, , rm_Int) \
228 CASE_AVX_INS_COMMON(Inst##SS4, , rm_Int)
230 #define CASE_FMA4_SCALAR_MR(Inst) \
231 CASE_AVX_INS_COMMON(Inst##SD4, , mr) \
232 CASE_AVX_INS_COMMON(Inst##SS4, , mr) \
233 CASE_AVX_INS_COMMON(Inst##SD4, , mr_Int) \
234 CASE_AVX_INS_COMMON(Inst##SS4, , mr_Int)
237 if (X86::ZMM0 <= RegNo && RegNo <= X86::ZMM31)
239 if (X86::YMM0 <= RegNo && RegNo <= X86::YMM31)
241 if (X86::XMM0 <= RegNo && RegNo <= X86::XMM31)
243 if (X86::MM0 <= RegNo && RegNo <= X86::MM7)
250 unsigned OperandIndex) {
251 unsigned OpReg =
MI->getOperand(OperandIndex).getReg();
274 const char *MaskRegName =
getRegName(
MI->getOperand(MaskOp).getReg());
277 OS <<
" {%" << MaskRegName <<
"}";
286 const char *Mul1Name =
nullptr, *Mul2Name =
nullptr, *AccName =
nullptr;
287 unsigned NumOperands =
MI->getNumOperands();
288 bool RegForm =
false;
306 switch (
MI->getOpcode()) {
312 AccName =
getRegName(
MI->getOperand(NumOperands - 1).getReg());
321 AccName =
getRegName(
MI->getOperand(NumOperands - 1).getReg());
327 AccName =
getRegName(
MI->getOperand(NumOperands - 1).getReg());
337 AccName =
getRegName(
MI->getOperand(NumOperands - 1).getReg());
344 AccName =
getRegName(
MI->getOperand(NumOperands - 1).getReg());
354 AccName =
getRegName(
MI->getOperand(NumOperands - 1).getReg());
361 AccName =
getRegName(
MI->getOperand(NumOperands - 1).getReg());
372 AccName =
getRegName(
MI->getOperand(NumOperands - 1).getReg());
379 AccName =
getRegName(
MI->getOperand(NumOperands - 1).getReg());
387 AccName =
getRegName(
MI->getOperand(NumOperands - 1).getReg());
393 AccName =
getRegName(
MI->getOperand(NumOperands - 1).getReg());
401 AccName =
getRegName(
MI->getOperand(NumOperands - 1).getReg());
408 Mul2Name =
getRegName(
MI->getOperand(NumOperands - 1).getReg());
413 AccName =
getRegName(
MI->getOperand(NumOperands-(RegForm?2:6)).getReg());
419 AccName =
getRegName(
MI->getOperand(NumOperands - 1).getReg());
424 Mul1Name =
getRegName(
MI->getOperand(NumOperands-(RegForm?2:6)).getReg());
430 Mul2Name =
getRegName(
MI->getOperand(NumOperands - 1).getReg());
435 Mul1Name =
getRegName(
MI->getOperand(NumOperands-(RegForm?2:6)).getReg());
441 Mul2Name =
getRegName(
MI->getOperand(NumOperands - 1).getReg());
446 AccName =
getRegName(
MI->getOperand(NumOperands-(RegForm?2:6)).getReg());
453 AccName =
getRegName(
MI->getOperand(NumOperands - 1).getReg());
458 Mul1Name =
getRegName(
MI->getOperand(NumOperands-(RegForm?2:6)).getReg());
465 Mul2Name =
getRegName(
MI->getOperand(NumOperands - 1).getReg());
470 Mul1Name =
getRegName(
MI->getOperand(NumOperands-(RegForm?2:6)).getReg());
477 Mul2Name =
getRegName(
MI->getOperand(NumOperands - 1).getReg());
482 AccName =
getRegName(
MI->getOperand(NumOperands-(RegForm?2:6)).getReg());
489 AccName =
getRegName(
MI->getOperand(NumOperands - 1).getReg());
494 Mul1Name =
getRegName(
MI->getOperand(NumOperands-(RegForm?2:6)).getReg());
501 Mul2Name =
getRegName(
MI->getOperand(NumOperands - 1).getReg());
506 Mul1Name =
getRegName(
MI->getOperand(NumOperands-(RegForm?2:6)).getReg());
513 Mul2Name =
getRegName(
MI->getOperand(NumOperands - 1).getReg());
518 AccName =
getRegName(
MI->getOperand(NumOperands-(RegForm?2:6)).getReg());
526 AccName =
getRegName(
MI->getOperand(NumOperands - 1).getReg());
531 Mul1Name =
getRegName(
MI->getOperand(NumOperands-(RegForm?2:6)).getReg());
539 Mul2Name =
getRegName(
MI->getOperand(NumOperands - 1).getReg());
544 Mul1Name =
getRegName(
MI->getOperand(NumOperands-(RegForm?2:6)).getReg());
551 Mul2Name =
getRegName(
MI->getOperand(NumOperands - 1).getReg());
555 AccName =
getRegName(
MI->getOperand(NumOperands-(RegForm?2:6)).getReg());
561 AccName =
getRegName(
MI->getOperand(NumOperands - 1).getReg());
565 Mul1Name =
getRegName(
MI->getOperand(NumOperands-(RegForm?2:6)).getReg());
571 Mul2Name =
getRegName(
MI->getOperand(NumOperands - 1).getReg());
575 Mul1Name =
getRegName(
MI->getOperand(NumOperands-(RegForm?2:6)).getReg());
581 Mul2Name =
getRegName(
MI->getOperand(NumOperands - 1).getReg());
585 AccName =
getRegName(
MI->getOperand(NumOperands-(RegForm?2:6)).getReg());
591 AccName =
getRegName(
MI->getOperand(NumOperands - 1).getReg());
595 Mul1Name =
getRegName(
MI->getOperand(NumOperands-(RegForm?2:6)).getReg());
601 Mul2Name =
getRegName(
MI->getOperand(NumOperands - 1).getReg());
605 Mul1Name =
getRegName(
MI->getOperand(NumOperands-(RegForm?2:6)).getReg());
611 const char *DestName =
getRegName(
MI->getOperand(0).getReg());
613 if (!Mul1Name) Mul1Name =
"mem";
614 if (!Mul2Name) Mul2Name =
"mem";
615 if (!AccName) AccName =
"mem";
624 OS <<
'(' << Mul1Name <<
" * " << Mul2Name <<
") " << AccStr <<
' '
642 const char *DestName =
nullptr, *Src1Name =
nullptr, *Src2Name =
nullptr;
643 unsigned NumOperands =
MI->getNumOperands();
644 bool RegForm =
false;
649 switch (
MI->getOpcode()) {
654 case X86::BLENDPDrri:
655 case X86::VBLENDPDrri:
656 case X86::VBLENDPDYrri:
659 case X86::BLENDPDrmi:
660 case X86::VBLENDPDrmi:
661 case X86::VBLENDPDYrmi:
662 if (
MI->getOperand(NumOperands - 1).isImm())
664 MI->getOperand(NumOperands - 1).getImm(),
670 case X86::BLENDPSrri:
671 case X86::VBLENDPSrri:
672 case X86::VBLENDPSYrri:
675 case X86::BLENDPSrmi:
676 case X86::VBLENDPSrmi:
677 case X86::VBLENDPSYrmi:
678 if (
MI->getOperand(NumOperands - 1).isImm())
680 MI->getOperand(NumOperands - 1).getImm(),
686 case X86::PBLENDWrri:
687 case X86::VPBLENDWrri:
688 case X86::VPBLENDWYrri:
691 case X86::PBLENDWrmi:
692 case X86::VPBLENDWrmi:
693 case X86::VPBLENDWYrmi:
694 if (
MI->getOperand(NumOperands - 1).isImm())
696 MI->getOperand(NumOperands - 1).getImm(),
702 case X86::VPBLENDDrri:
703 case X86::VPBLENDDYrri:
706 case X86::VPBLENDDrmi:
707 case X86::VPBLENDDYrmi:
708 if (
MI->getOperand(NumOperands - 1).isImm())
710 MI->getOperand(NumOperands - 1).getImm(),
716 case X86::INSERTPSrr:
717 case X86::VINSERTPSrr:
718 case X86::VINSERTPSZrr:
721 case X86::INSERTPSrm:
722 case X86::VINSERTPSrm:
723 case X86::VINSERTPSZrm:
726 if (
MI->getOperand(NumOperands - 1).isImm())
732 case X86::VMOVLHPSrr:
733 case X86::VMOVLHPSZrr:
741 case X86::VMOVHLPSrr:
742 case X86::VMOVHLPSZrr:
751 case X86::VMOVHPDZ128rm:
759 case X86::VMOVHPSZ128rm:
767 case X86::VMOVLPDZ128rm:
775 case X86::VMOVLPSZ128rm:
782 Src1Name =
getRegName(
MI->getOperand(NumOperands - 1).getReg());
791 Src1Name =
getRegName(
MI->getOperand(NumOperands - 1).getReg());
800 Src1Name =
getRegName(
MI->getOperand(NumOperands - 1).getReg());
810 case X86::VPSLLDQYri:
811 case X86::VPSLLDQZ128ri:
812 case X86::VPSLLDQZ256ri:
813 case X86::VPSLLDQZri:
816 case X86::VPSLLDQZ128mi:
817 case X86::VPSLLDQZ256mi:
818 case X86::VPSLLDQZmi:
820 if (
MI->getOperand(NumOperands - 1).isImm())
822 MI->getOperand(NumOperands - 1).getImm(),
828 case X86::VPSRLDQYri:
829 case X86::VPSRLDQZ128ri:
830 case X86::VPSRLDQZ256ri:
831 case X86::VPSRLDQZri:
834 case X86::VPSRLDQZ128mi:
835 case X86::VPSRLDQZ256mi:
836 case X86::VPSRLDQZmi:
838 if (
MI->getOperand(NumOperands - 1).isImm())
840 MI->getOperand(NumOperands - 1).getImm(),
845 Src1Name =
getRegName(
MI->getOperand(NumOperands - 2).getReg());
850 Src2Name =
getRegName(
MI->getOperand(NumOperands-(RegForm?3:7)).getReg());
852 if (
MI->getOperand(NumOperands - 1).isImm())
854 MI->getOperand(NumOperands - 1).getImm(),
861 Src1Name =
getRegName(
MI->getOperand(NumOperands - 2).getReg());
868 Src2Name =
getRegName(
MI->getOperand(NumOperands-(RegForm?3:7)).getReg());
870 if (
MI->getOperand(NumOperands - 1).isImm())
872 MI->getOperand(NumOperands - 1).getImm(),
879 Src1Name =
getRegName(
MI->getOperand(NumOperands - 2).getReg());
886 Src2Name =
getRegName(
MI->getOperand(NumOperands-(RegForm?3:7)).getReg());
888 if (
MI->getOperand(NumOperands - 1).isImm())
890 MI->getOperand(NumOperands - 1).getImm(),
895 Src1Name =
getRegName(
MI->getOperand(NumOperands - 2).getReg());
900 if (
MI->getOperand(NumOperands - 1).isImm())
902 MI->getOperand(NumOperands - 1).getImm(),
907 Src1Name =
getRegName(
MI->getOperand(NumOperands - 2).getReg());
912 if (
MI->getOperand(NumOperands - 1).isImm())
914 MI->getOperand(NumOperands - 1).getImm(),
919 Src1Name =
getRegName(
MI->getOperand(NumOperands - 2).getReg());
924 if (
MI->getOperand(NumOperands - 1).isImm())
926 MI->getOperand(NumOperands - 1).getImm(),
930 case X86::MMX_PSHUFWri:
934 case X86::MMX_PSHUFWmi:
936 if (
MI->getOperand(NumOperands - 1).isImm())
951 case X86::MMX_PUNPCKHBWrr:
952 Src2Name =
getRegName(
MI->getOperand(NumOperands - 1).getReg());
957 case X86::MMX_PUNPCKHBWrm:
958 Src1Name =
getRegName(
MI->getOperand(NumOperands-(RegForm?2:6)).getReg());
964 case X86::MMX_PUNPCKHWDrr:
965 Src2Name =
getRegName(
MI->getOperand(NumOperands - 1).getReg());
970 case X86::MMX_PUNPCKHWDrm:
971 Src1Name =
getRegName(
MI->getOperand(NumOperands-(RegForm?2:6)).getReg());
977 case X86::MMX_PUNPCKHDQrr:
978 Src2Name =
getRegName(
MI->getOperand(NumOperands - 1).getReg());
983 case X86::MMX_PUNPCKHDQrm:
984 Src1Name =
getRegName(
MI->getOperand(NumOperands-(RegForm?2:6)).getReg());
990 Src2Name =
getRegName(
MI->getOperand(NumOperands - 1).getReg());
995 Src1Name =
getRegName(
MI->getOperand(NumOperands-(RegForm?2:6)).getReg());
1001 case X86::MMX_PUNPCKLBWrr:
1002 Src2Name =
getRegName(
MI->getOperand(NumOperands - 1).getReg());
1007 case X86::MMX_PUNPCKLBWrm:
1008 Src1Name =
getRegName(
MI->getOperand(NumOperands-(RegForm?2:6)).getReg());
1014 case X86::MMX_PUNPCKLWDrr:
1015 Src2Name =
getRegName(
MI->getOperand(NumOperands - 1).getReg());
1020 case X86::MMX_PUNPCKLWDrm:
1021 Src1Name =
getRegName(
MI->getOperand(NumOperands-(RegForm?2:6)).getReg());
1027 case X86::MMX_PUNPCKLDQrr:
1028 Src2Name =
getRegName(
MI->getOperand(NumOperands - 1).getReg());
1033 case X86::MMX_PUNPCKLDQrm:
1034 Src1Name =
getRegName(
MI->getOperand(NumOperands-(RegForm?2:6)).getReg());
1040 Src2Name =
getRegName(
MI->getOperand(NumOperands - 1).getReg());
1045 Src1Name =
getRegName(
MI->getOperand(NumOperands-(RegForm?2:6)).getReg());
1051 Src2Name =
getRegName(
MI->getOperand(NumOperands - 2).getReg());
1056 if (
MI->getOperand(NumOperands - 1).isImm())
1058 MI->getOperand(NumOperands - 1).getImm(), ShuffleMask);
1059 Src1Name =
getRegName(
MI->getOperand(NumOperands-(RegForm?3:7)).getReg());
1064 Src2Name =
getRegName(
MI->getOperand(NumOperands - 2).getReg());
1069 if (
MI->getOperand(NumOperands - 1).isImm())
1071 MI->getOperand(NumOperands - 1).getImm(),
1073 Src1Name =
getRegName(
MI->getOperand(NumOperands-(RegForm?3:7)).getReg());
1078 Src2Name =
getRegName(
MI->getOperand(NumOperands - 2).getReg());
1084 MI->getOperand(NumOperands - 1).getImm(),
1086 Src1Name =
getRegName(
MI->getOperand(NumOperands-(RegForm?3:7)).getReg());
1091 Src2Name =
getRegName(
MI->getOperand(NumOperands - 2).getReg());
1097 MI->getOperand(NumOperands - 1).getImm(),
1099 Src1Name =
getRegName(
MI->getOperand(NumOperands-(RegForm?3:7)).getReg());
1104 Src2Name =
getRegName(
MI->getOperand(NumOperands - 1).getReg());
1110 Src1Name =
getRegName(
MI->getOperand(NumOperands-(RegForm?2:6)).getReg());
1115 Src2Name =
getRegName(
MI->getOperand(NumOperands - 1).getReg());
1121 Src1Name =
getRegName(
MI->getOperand(NumOperands-(RegForm?2:6)).getReg());
1126 Src2Name =
getRegName(
MI->getOperand(NumOperands - 1).getReg());
1132 Src1Name =
getRegName(
MI->getOperand(NumOperands-(RegForm?2:6)).getReg());
1137 Src2Name =
getRegName(
MI->getOperand(NumOperands - 1).getReg());
1143 Src1Name =
getRegName(
MI->getOperand(NumOperands-(RegForm?2:6)).getReg());
1148 Src1Name =
getRegName(
MI->getOperand(NumOperands - 2).getReg());
1152 if (
MI->getOperand(NumOperands - 1).isImm())
1154 MI->getOperand(NumOperands - 1).getImm(),
1160 Src1Name =
getRegName(
MI->getOperand(NumOperands - 2).getReg());
1164 if (
MI->getOperand(NumOperands - 1).isImm())
1166 MI->getOperand(NumOperands - 1).getImm(),
1171 case X86::VPERM2F128rr:
1172 case X86::VPERM2I128rr:
1176 case X86::VPERM2F128rm:
1177 case X86::VPERM2I128rm:
1179 if (
MI->getOperand(NumOperands - 1).isImm())
1187 Src1Name =
getRegName(
MI->getOperand(NumOperands - 2).getReg());
1191 if (
MI->getOperand(NumOperands - 1).isImm())
1193 MI->getOperand(NumOperands - 1).getImm(),
1199 Src1Name =
getRegName(
MI->getOperand(NumOperands - 2).getReg());
1203 if (
MI->getOperand(NumOperands - 1).isImm())
1205 MI->getOperand(NumOperands - 1).getImm(),
1212 case X86::VMOVSDZrr:
1217 case X86::MOVSDrm_alt:
1219 case X86::VMOVSDrm_alt:
1221 case X86::VMOVSDZrm:
1222 case X86::VMOVSDZrm_alt:
1229 case X86::VMOVSSZrr:
1235 case X86::MOVSSrm_alt:
1237 case X86::VMOVSSrm_alt:
1238 case X86::VMOVSSZrm:
1239 case X86::VMOVSSZrm_alt:
1244 case X86::MOVPQI2QIrr:
1245 case X86::MOVZPQILo2PQIrr:
1246 case X86::VMOVPQI2QIrr:
1247 case X86::VMOVPQI2QIZrr:
1248 case X86::VMOVZPQILo2PQIrr:
1249 case X86::VMOVZPQILo2PQIZrr:
1253 case X86::MOVQI2PQIrm:
1254 case X86::VMOVQI2PQIrm:
1255 case X86::VMOVQI2PQIZrm:
1260 case X86::MOVDI2PDIrm:
1261 case X86::VMOVDI2PDIrm:
1262 case X86::VMOVDI2PDIZrm:
1268 if (
MI->getOperand(2).isImm() &&
1269 MI->getOperand(3).isImm())
1271 MI->getOperand(3).getImm(), ShuffleMask);
1278 if (
MI->getOperand(3).isImm() &&
1279 MI->getOperand(4).isImm())
1281 MI->getOperand(4).getImm(), ShuffleMask);
1288 case X86::VBROADCASTF128:
1289 case X86::VBROADCASTI128:
1321 Src1Name =
getRegName(
MI->getOperand(NumOperands - 1).getReg());
1329 Src1Name =
getRegName(
MI->getOperand(NumOperands - 1).getReg());
1338 Src1Name =
getRegName(
MI->getOperand(NumOperands - 1).getReg());
1347 Src1Name =
getRegName(
MI->getOperand(NumOperands - 1).getReg());
1356 Src1Name =
getRegName(
MI->getOperand(NumOperands - 1).getReg());
1365 Src1Name =
getRegName(
MI->getOperand(NumOperands - 1).getReg());
1374 Src1Name =
getRegName(
MI->getOperand(NumOperands - 1).getReg());
1383 Src1Name =
getRegName(
MI->getOperand(NumOperands - 1).getReg());
1392 Src1Name =
getRegName(
MI->getOperand(NumOperands - 1).getReg());
1403 if (ShuffleMask.empty())
1406 if (!DestName) DestName = Src1Name;
1417 if (Src1Name == Src2Name) {
1418 for (
unsigned i = 0,
e = ShuffleMask.size();
i !=
e; ++
i) {
1419 if ((
int)ShuffleMask[
i] >= 0 &&
1420 ShuffleMask[
i] >= (
int)
e)
1421 ShuffleMask[
i] -=
e;
1428 for (
unsigned i = 0,
e = ShuffleMask.size();
i !=
e; ++
i) {
1438 bool isSrc1 = ShuffleMask[
i] < (
int)ShuffleMask.size();
1439 const char *SrcName = isSrc1 ? Src1Name : Src2Name;
1440 OS << (SrcName ? SrcName :
"mem") <<
'[';
1441 bool IsFirst =
true;
1443 (ShuffleMask[
i] < (
int)ShuffleMask.size()) == isSrc1) {
1451 OS << ShuffleMask[
i] % ShuffleMask.size();