llvm.org GIT mirror llvm / 2b24b93
[X86] Remove the _alt forms of (V)CMP instructions. Use a combination of custom printing and custom parsing to achieve the same result and more Similar to previous change done for VPCOM and VPCMP Differential Revision: https://reviews.llvm.org/D59468 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@356384 91177308-0d34-0410-b5e6-96231b3b80d8 Craig Topper 1 year, 4 months ago
45 changed file(s) with 793 addition(s) and 657 deletion(s). Raw diff Collapse all Expand all
413413 ENUM_ENTRY(TYPE_R32, "4-byte") \
414414 ENUM_ENTRY(TYPE_R64, "8-byte") \
415415 ENUM_ENTRY(TYPE_IMM, "immediate operand") \
416 ENUM_ENTRY(TYPE_IMM3, "1-byte immediate operand between 0 and 7") \
417 ENUM_ENTRY(TYPE_IMM5, "1-byte immediate operand between 0 and 31") \
418416 ENUM_ENTRY(TYPE_UIMM8, "1-byte unsigned immediate operand") \
419417 ENUM_ENTRY(TYPE_M, "Memory operand") \
420418 ENUM_ENTRY(TYPE_MVSIBX, "Memory operand using XMM index") \
23172317 PatchedName != "setb" && PatchedName != "setnb")
23182318 PatchedName = PatchedName.substr(0, Name.size()-1);
23192319
2320 unsigned ComparisonCode = ~0U;
2321
23202322 // FIXME: Hack to recognize cmp{ss,sd,ps,pd}.
23212323 if ((PatchedName.startswith("cmp") || PatchedName.startswith("vcmp")) &&
23222324 (PatchedName.endswith("ss") || PatchedName.endswith("sd") ||
23232325 PatchedName.endswith("ps") || PatchedName.endswith("pd"))) {
23242326 bool IsVCMP = PatchedName[0] == 'v';
23252327 unsigned CCIdx = IsVCMP ? 4 : 3;
2326 unsigned ComparisonCode = StringSwitch(
2328 unsigned CC = StringSwitch(
23272329 PatchedName.slice(CCIdx, PatchedName.size() - 2))
23282330 .Case("eq", 0x00)
23292331 .Case("eq_oq", 0x00)
23732375 .Case("gt_oq", 0x1E)
23742376 .Case("true_us", 0x1F)
23752377 .Default(~0U);
2376 if (ComparisonCode != ~0U && (IsVCMP || ComparisonCode < 8)) {
2377
2378 Operands.push_back(X86Operand::CreateToken(PatchedName.slice(0, CCIdx),
2379 NameLoc));
2380
2381 const MCExpr *ImmOp = MCConstantExpr::create(ComparisonCode,
2382 getParser().getContext());
2383 Operands.push_back(X86Operand::CreateImm(ImmOp, NameLoc, NameLoc));
2384
2385 PatchedName = PatchedName.substr(PatchedName.size() - 2);
2386 }
2387 }
2388
2389 unsigned ComparisonCode = ~0U;
2378 if (CC != ~0U && (IsVCMP || CC < 8)) {
2379 if (PatchedName.endswith("ss"))
2380 PatchedName = IsVCMP ? "vcmpss" : "cmpss";
2381 else if (PatchedName.endswith("sd"))
2382 PatchedName = IsVCMP ? "vcmpsd" : "cmpsd";
2383 else if (PatchedName.endswith("ps"))
2384 PatchedName = IsVCMP ? "vcmpps" : "cmpps";
2385 else if (PatchedName.endswith("pd"))
2386 PatchedName = IsVCMP ? "vcmppd" : "cmppd";
2387 else
2388 llvm_unreachable("Unexpecte suffix!");
2389
2390 ComparisonCode = CC;
2391 }
2392 }
23902393
23912394 // FIXME: Hack to recognize vpcmp{ub,uw,ud,uq,b,w,d,q}.
23922395 if (PatchedName.startswith("vpcmp") &&
443443 break;
444444 case ENCODING_IO:
445445 break;
446 }
447 } else if (type == TYPE_IMM3) {
448 // Check for immediates that printSSECC can't handle.
449 if (immediate >= 8) {
450 unsigned NewOpc;
451 switch (mcInst.getOpcode()) {
452 default: llvm_unreachable("unexpected opcode");
453 case X86::CMPPDrmi: NewOpc = X86::CMPPDrmi_alt; break;
454 case X86::CMPPDrri: NewOpc = X86::CMPPDrri_alt; break;
455 case X86::CMPPSrmi: NewOpc = X86::CMPPSrmi_alt; break;
456 case X86::CMPPSrri: NewOpc = X86::CMPPSrri_alt; break;
457 case X86::CMPSDrm: NewOpc = X86::CMPSDrm_alt; break;
458 case X86::CMPSDrr: NewOpc = X86::CMPSDrr_alt; break;
459 case X86::CMPSSrm: NewOpc = X86::CMPSSrm_alt; break;
460 case X86::CMPSSrr: NewOpc = X86::CMPSSrr_alt; break;
461 }
462 // Switch opcode to the one that doesn't get special printing.
463 mcInst.setOpcode(NewOpc);
464 }
465 } else if (type == TYPE_IMM5) {
466 // Check for immediates that printAVXCC can't handle.
467 if (immediate >= 32) {
468 unsigned NewOpc;
469 switch (mcInst.getOpcode()) {
470 default: llvm_unreachable("unexpected opcode");
471 case X86::VCMPPDrmi: NewOpc = X86::VCMPPDrmi_alt; break;
472 case X86::VCMPPDrri: NewOpc = X86::VCMPPDrri_alt; break;
473 case X86::VCMPPSrmi: NewOpc = X86::VCMPPSrmi_alt; break;
474 case X86::VCMPPSrri: NewOpc = X86::VCMPPSrri_alt; break;
475 case X86::VCMPSDrm: NewOpc = X86::VCMPSDrm_alt; break;
476 case X86::VCMPSDrr: NewOpc = X86::VCMPSDrr_alt; break;
477 case X86::VCMPSSrm: NewOpc = X86::VCMPSSrm_alt; break;
478 case X86::VCMPSSrr: NewOpc = X86::VCMPSSrr_alt; break;
479 case X86::VCMPPDYrmi: NewOpc = X86::VCMPPDYrmi_alt; break;
480 case X86::VCMPPDYrri: NewOpc = X86::VCMPPDYrri_alt; break;
481 case X86::VCMPPSYrmi: NewOpc = X86::VCMPPSYrmi_alt; break;
482 case X86::VCMPPSYrri: NewOpc = X86::VCMPPSYrri_alt; break;
483 case X86::VCMPPDZrmi: NewOpc = X86::VCMPPDZrmi_alt; break;
484 case X86::VCMPPDZrri: NewOpc = X86::VCMPPDZrri_alt; break;
485 case X86::VCMPPDZrrib: NewOpc = X86::VCMPPDZrrib_alt; break;
486 case X86::VCMPPSZrmi: NewOpc = X86::VCMPPSZrmi_alt; break;
487 case X86::VCMPPSZrri: NewOpc = X86::VCMPPSZrri_alt; break;
488 case X86::VCMPPSZrrib: NewOpc = X86::VCMPPSZrrib_alt; break;
489 case X86::VCMPPDZ128rmi: NewOpc = X86::VCMPPDZ128rmi_alt; break;
490 case X86::VCMPPDZ128rri: NewOpc = X86::VCMPPDZ128rri_alt; break;
491 case X86::VCMPPSZ128rmi: NewOpc = X86::VCMPPSZ128rmi_alt; break;
492 case X86::VCMPPSZ128rri: NewOpc = X86::VCMPPSZ128rri_alt; break;
493 case X86::VCMPPDZ256rmi: NewOpc = X86::VCMPPDZ256rmi_alt; break;
494 case X86::VCMPPDZ256rri: NewOpc = X86::VCMPPDZ256rri_alt; break;
495 case X86::VCMPPSZ256rmi: NewOpc = X86::VCMPPSZ256rmi_alt; break;
496 case X86::VCMPPSZ256rri: NewOpc = X86::VCMPPSZ256rri_alt; break;
497 case X86::VCMPSDZrm_Int: NewOpc = X86::VCMPSDZrmi_alt; break;
498 case X86::VCMPSDZrr_Int: NewOpc = X86::VCMPSDZrri_alt; break;
499 case X86::VCMPSDZrrb_Int: NewOpc = X86::VCMPSDZrrb_alt; break;
500 case X86::VCMPSSZrm_Int: NewOpc = X86::VCMPSSZrmi_alt; break;
501 case X86::VCMPSSZrr_Int: NewOpc = X86::VCMPSSZrri_alt; break;
502 case X86::VCMPSSZrrb_Int: NewOpc = X86::VCMPSSZrrb_alt; break;
503 }
504 // Switch opcode to the one that doesn't get special printing.
505 mcInst.setOpcode(NewOpc);
506446 }
507447 }
508448
8787 // Custom print the vector compare instructions to get the immediate
8888 // translated into the mnemonic.
8989 switch (MI->getOpcode()) {
90 case X86::CMPPDrmi: case X86::CMPPDrri:
91 case X86::CMPPSrmi: case X86::CMPPSrri:
92 case X86::CMPSDrm: case X86::CMPSDrr:
93 case X86::CMPSDrm_Int: case X86::CMPSDrr_Int:
94 case X86::CMPSSrm: case X86::CMPSSrr:
95 case X86::CMPSSrm_Int: case X86::CMPSSrr_Int:
96 if (Imm >= 0 && Imm <= 7) {
97 OS << '\t';
98 printCMPMnemonic(MI, /*IsVCMP*/false, OS);
99
100 if ((Desc.TSFlags & X86II::FormMask) == X86II::MRMSrcMem) {
101 if ((Desc.TSFlags & X86II::OpPrefixMask) == X86II::XS)
102 printdwordmem(MI, 2, OS);
103 else if ((Desc.TSFlags & X86II::OpPrefixMask) == X86II::XD)
104 printqwordmem(MI, 2, OS);
105 else
106 printxmmwordmem(MI, 2, OS);
107 } else
108 printOperand(MI, 2, OS);
109
110 // Skip operand 1 as its tied to the dest.
111
112 OS << ", ";
113 printOperand(MI, 0, OS);
114 return true;
115 }
116 break;
117
118 case X86::VCMPPDrmi: case X86::VCMPPDrri:
119 case X86::VCMPPDYrmi: case X86::VCMPPDYrri:
120 case X86::VCMPPDZ128rmi: case X86::VCMPPDZ128rri:
121 case X86::VCMPPDZ256rmi: case X86::VCMPPDZ256rri:
122 case X86::VCMPPDZrmi: case X86::VCMPPDZrri:
123 case X86::VCMPPSrmi: case X86::VCMPPSrri:
124 case X86::VCMPPSYrmi: case X86::VCMPPSYrri:
125 case X86::VCMPPSZ128rmi: case X86::VCMPPSZ128rri:
126 case X86::VCMPPSZ256rmi: case X86::VCMPPSZ256rri:
127 case X86::VCMPPSZrmi: case X86::VCMPPSZrri:
128 case X86::VCMPSDrm: case X86::VCMPSDrr:
129 case X86::VCMPSDZrm: case X86::VCMPSDZrr:
130 case X86::VCMPSDrm_Int: case X86::VCMPSDrr_Int:
131 case X86::VCMPSDZrm_Int: case X86::VCMPSDZrr_Int:
132 case X86::VCMPSSrm: case X86::VCMPSSrr:
133 case X86::VCMPSSZrm: case X86::VCMPSSZrr:
134 case X86::VCMPSSrm_Int: case X86::VCMPSSrr_Int:
135 case X86::VCMPSSZrm_Int: case X86::VCMPSSZrr_Int:
136 case X86::VCMPPDZ128rmik: case X86::VCMPPDZ128rrik:
137 case X86::VCMPPDZ256rmik: case X86::VCMPPDZ256rrik:
138 case X86::VCMPPDZrmik: case X86::VCMPPDZrrik:
139 case X86::VCMPPSZ128rmik: case X86::VCMPPSZ128rrik:
140 case X86::VCMPPSZ256rmik: case X86::VCMPPSZ256rrik:
141 case X86::VCMPPSZrmik: case X86::VCMPPSZrrik:
142 case X86::VCMPSDZrm_Intk: case X86::VCMPSDZrr_Intk:
143 case X86::VCMPSSZrm_Intk: case X86::VCMPSSZrr_Intk:
144 case X86::VCMPPDZ128rmbi: case X86::VCMPPDZ128rmbik:
145 case X86::VCMPPDZ256rmbi: case X86::VCMPPDZ256rmbik:
146 case X86::VCMPPDZrmbi: case X86::VCMPPDZrmbik:
147 case X86::VCMPPSZ128rmbi: case X86::VCMPPSZ128rmbik:
148 case X86::VCMPPSZ256rmbi: case X86::VCMPPSZ256rmbik:
149 case X86::VCMPPSZrmbi: case X86::VCMPPSZrmbik:
150 case X86::VCMPPDZrrib: case X86::VCMPPDZrribk:
151 case X86::VCMPPSZrrib: case X86::VCMPPSZrribk:
152 case X86::VCMPSDZrrb_Int: case X86::VCMPSDZrrb_Intk:
153 case X86::VCMPSSZrrb_Int: case X86::VCMPSSZrrb_Intk:
154 if (Imm >= 0 && Imm <= 31) {
155 OS << '\t';
156 printCMPMnemonic(MI, /*IsVCMP*/true, OS);
157
158 unsigned CurOp = (Desc.TSFlags & X86II::EVEX_K) ? 3 : 2;
159
160 if ((Desc.TSFlags & X86II::FormMask) == X86II::MRMSrcMem) {
161 if (Desc.TSFlags & X86II::EVEX_B) {
162 // Broadcast form.
163 // Load size is based on W-bit.
164 if (Desc.TSFlags & X86II::VEX_W)
165 printqwordmem(MI, CurOp--, OS);
166 else
167 printdwordmem(MI, CurOp--, OS);
168
169 // Print the number of elements broadcasted.
170 unsigned NumElts;
171 if (Desc.TSFlags & X86II::EVEX_L2)
172 NumElts = (Desc.TSFlags & X86II::VEX_W) ? 8 : 16;
173 else if (Desc.TSFlags & X86II::VEX_L)
174 NumElts = (Desc.TSFlags & X86II::VEX_W) ? 4 : 8;
175 else
176 NumElts = (Desc.TSFlags & X86II::VEX_W) ? 2 : 4;
177 OS << "{1to" << NumElts << "}";
178 } else {
179 if ((Desc.TSFlags & X86II::OpPrefixMask) == X86II::XS)
180 printdwordmem(MI, CurOp--, OS);
181 else if ((Desc.TSFlags & X86II::OpPrefixMask) == X86II::XD)
182 printqwordmem(MI, CurOp--, OS);
183 else if (Desc.TSFlags & X86II::EVEX_L2)
184 printzmmwordmem(MI, CurOp--, OS);
185 else if (Desc.TSFlags & X86II::VEX_L)
186 printymmwordmem(MI, CurOp--, OS);
187 else
188 printxmmwordmem(MI, CurOp--, OS);
189 }
190 } else {
191 if (Desc.TSFlags & X86II::EVEX_B)
192 OS << "{sae}, ";
193 printOperand(MI, CurOp--, OS);
194 }
195
196 OS << ", ";
197 printOperand(MI, CurOp--, OS);
198 OS << ", ";
199 printOperand(MI, 0, OS);
200 if (CurOp > 0) {
201 // Print mask operand.
202 OS << " {";
203 printOperand(MI, CurOp--, OS);
204 OS << "}";
205 }
206
207 return true;
208 }
209 break;
210
90211 case X86::VPCOMBmi: case X86::VPCOMBri:
91212 case X86::VPCOMDmi: case X86::VPCOMDri:
92213 case X86::VPCOMQmi: case X86::VPCOMQri:
180180 }
181181 }
182182
183 void X86InstPrinterCommon::printCMPMnemonic(const MCInst *MI, bool IsVCmp,
184 raw_ostream &OS) {
185 OS << (IsVCmp ? "vcmp" : "cmp");
186
187 printSSEAVXCC(MI, MI->getNumOperands() - 1, OS);
188
189 switch (MI->getOpcode()) {
190 default: llvm_unreachable("Unexpected opcode!");
191 case X86::CMPPDrmi: case X86::CMPPDrri:
192 case X86::VCMPPDrmi: case X86::VCMPPDrri:
193 case X86::VCMPPDYrmi: case X86::VCMPPDYrri:
194 case X86::VCMPPDZ128rmi: case X86::VCMPPDZ128rri:
195 case X86::VCMPPDZ256rmi: case X86::VCMPPDZ256rri:
196 case X86::VCMPPDZrmi: case X86::VCMPPDZrri:
197 case X86::VCMPPDZ128rmik: case X86::VCMPPDZ128rrik:
198 case X86::VCMPPDZ256rmik: case X86::VCMPPDZ256rrik:
199 case X86::VCMPPDZrmik: case X86::VCMPPDZrrik:
200 case X86::VCMPPDZ128rmbi: case X86::VCMPPDZ128rmbik:
201 case X86::VCMPPDZ256rmbi: case X86::VCMPPDZ256rmbik:
202 case X86::VCMPPDZrmbi: case X86::VCMPPDZrmbik:
203 case X86::VCMPPDZrrib: case X86::VCMPPDZrribk:
204 OS << "pd\t";
205 break;
206 case X86::CMPPSrmi: case X86::CMPPSrri:
207 case X86::VCMPPSrmi: case X86::VCMPPSrri:
208 case X86::VCMPPSYrmi: case X86::VCMPPSYrri:
209 case X86::VCMPPSZ128rmi: case X86::VCMPPSZ128rri:
210 case X86::VCMPPSZ256rmi: case X86::VCMPPSZ256rri:
211 case X86::VCMPPSZrmi: case X86::VCMPPSZrri:
212 case X86::VCMPPSZ128rmik: case X86::VCMPPSZ128rrik:
213 case X86::VCMPPSZ256rmik: case X86::VCMPPSZ256rrik:
214 case X86::VCMPPSZrmik: case X86::VCMPPSZrrik:
215 case X86::VCMPPSZ128rmbi: case X86::VCMPPSZ128rmbik:
216 case X86::VCMPPSZ256rmbi: case X86::VCMPPSZ256rmbik:
217 case X86::VCMPPSZrmbi: case X86::VCMPPSZrmbik:
218 case X86::VCMPPSZrrib: case X86::VCMPPSZrribk:
219 OS << "ps\t";
220 break;
221 case X86::CMPSDrm: case X86::CMPSDrr:
222 case X86::CMPSDrm_Int: case X86::CMPSDrr_Int:
223 case X86::VCMPSDrm: case X86::VCMPSDrr:
224 case X86::VCMPSDrm_Int: case X86::VCMPSDrr_Int:
225 case X86::VCMPSDZrm: case X86::VCMPSDZrr:
226 case X86::VCMPSDZrm_Int: case X86::VCMPSDZrr_Int:
227 case X86::VCMPSDZrm_Intk: case X86::VCMPSDZrr_Intk:
228 case X86::VCMPSDZrrb_Int: case X86::VCMPSDZrrb_Intk:
229 OS << "sd\t";
230 break;
231 case X86::CMPSSrm: case X86::CMPSSrr:
232 case X86::CMPSSrm_Int: case X86::CMPSSrr_Int:
233 case X86::VCMPSSrm: case X86::VCMPSSrr:
234 case X86::VCMPSSrm_Int: case X86::VCMPSSrr_Int:
235 case X86::VCMPSSZrm: case X86::VCMPSSZrr:
236 case X86::VCMPSSZrm_Int: case X86::VCMPSSZrr_Int:
237 case X86::VCMPSSZrm_Intk: case X86::VCMPSSZrr_Intk:
238 case X86::VCMPSSZrrb_Int: case X86::VCMPSSZrrb_Intk:
239 OS << "ss\t";
240 break;
241 }
242 }
243
183244 void X86InstPrinterCommon::printRoundingControl(const MCInst *MI, unsigned Op,
184245 raw_ostream &O) {
185246 int64_t Imm = MI->getOperand(Op).getImm();
2525 void printSSEAVXCC(const MCInst *MI, unsigned Op, raw_ostream &OS);
2626 void printVPCOMMnemonic(const MCInst *MI, raw_ostream &OS);
2727 void printVPCMPMnemonic(const MCInst *MI, raw_ostream &OS);
28 void printCMPMnemonic(const MCInst *MI, bool IsVCmp, raw_ostream &OS);
2829 void printRoundingControl(const MCInst *MI, unsigned Op, raw_ostream &O);
2930 void printPCRelImm(const MCInst *MI, unsigned OpNo, raw_ostream &O);
3031 protected:
6868 // Custom print the vector compare instructions to get the immediate
6969 // translated into the mnemonic.
7070 switch (MI->getOpcode()) {
71 case X86::CMPPDrmi: case X86::CMPPDrri:
72 case X86::CMPPSrmi: case X86::CMPPSrri:
73 case X86::CMPSDrm: case X86::CMPSDrr:
74 case X86::CMPSDrm_Int: case X86::CMPSDrr_Int:
75 case X86::CMPSSrm: case X86::CMPSSrr:
76 case X86::CMPSSrm_Int: case X86::CMPSSrr_Int:
77 if (Imm >= 0 && Imm <= 7) {
78 OS << '\t';
79 printCMPMnemonic(MI, /*IsVCMP*/false, OS);
80 printOperand(MI, 0, OS);
81 OS << ", ";
82 // Skip operand 1 as its tied to the dest.
83
84 if ((Desc.TSFlags & X86II::FormMask) == X86II::MRMSrcMem) {
85 if ((Desc.TSFlags & X86II::OpPrefixMask) == X86II::XS)
86 printdwordmem(MI, 2, OS);
87 else if ((Desc.TSFlags & X86II::OpPrefixMask) == X86II::XD)
88 printqwordmem(MI, 2, OS);
89 else
90 printxmmwordmem(MI, 2, OS);
91 } else
92 printOperand(MI, 2, OS);
93
94 return true;
95 }
96 break;
97
98 case X86::VCMPPDrmi: case X86::VCMPPDrri:
99 case X86::VCMPPDYrmi: case X86::VCMPPDYrri:
100 case X86::VCMPPDZ128rmi: case X86::VCMPPDZ128rri:
101 case X86::VCMPPDZ256rmi: case X86::VCMPPDZ256rri:
102 case X86::VCMPPDZrmi: case X86::VCMPPDZrri:
103 case X86::VCMPPSrmi: case X86::VCMPPSrri:
104 case X86::VCMPPSYrmi: case X86::VCMPPSYrri:
105 case X86::VCMPPSZ128rmi: case X86::VCMPPSZ128rri:
106 case X86::VCMPPSZ256rmi: case X86::VCMPPSZ256rri:
107 case X86::VCMPPSZrmi: case X86::VCMPPSZrri:
108 case X86::VCMPSDrm: case X86::VCMPSDrr:
109 case X86::VCMPSDZrm: case X86::VCMPSDZrr:
110 case X86::VCMPSDrm_Int: case X86::VCMPSDrr_Int:
111 case X86::VCMPSDZrm_Int: case X86::VCMPSDZrr_Int:
112 case X86::VCMPSSrm: case X86::VCMPSSrr:
113 case X86::VCMPSSZrm: case X86::VCMPSSZrr:
114 case X86::VCMPSSrm_Int: case X86::VCMPSSrr_Int:
115 case X86::VCMPSSZrm_Int: case X86::VCMPSSZrr_Int:
116 case X86::VCMPPDZ128rmik: case X86::VCMPPDZ128rrik:
117 case X86::VCMPPDZ256rmik: case X86::VCMPPDZ256rrik:
118 case X86::VCMPPDZrmik: case X86::VCMPPDZrrik:
119 case X86::VCMPPSZ128rmik: case X86::VCMPPSZ128rrik:
120 case X86::VCMPPSZ256rmik: case X86::VCMPPSZ256rrik:
121 case X86::VCMPPSZrmik: case X86::VCMPPSZrrik:
122 case X86::VCMPSDZrm_Intk: case X86::VCMPSDZrr_Intk:
123 case X86::VCMPSSZrm_Intk: case X86::VCMPSSZrr_Intk:
124 case X86::VCMPPDZ128rmbi: case X86::VCMPPDZ128rmbik:
125 case X86::VCMPPDZ256rmbi: case X86::VCMPPDZ256rmbik:
126 case X86::VCMPPDZrmbi: case X86::VCMPPDZrmbik:
127 case X86::VCMPPSZ128rmbi: case X86::VCMPPSZ128rmbik:
128 case X86::VCMPPSZ256rmbi: case X86::VCMPPSZ256rmbik:
129 case X86::VCMPPSZrmbi: case X86::VCMPPSZrmbik:
130 case X86::VCMPPDZrrib: case X86::VCMPPDZrribk:
131 case X86::VCMPPSZrrib: case X86::VCMPPSZrribk:
132 case X86::VCMPSDZrrb_Int: case X86::VCMPSDZrrb_Intk:
133 case X86::VCMPSSZrrb_Int: case X86::VCMPSSZrrb_Intk:
134 if (Imm >= 0 && Imm <= 31) {
135 OS << '\t';
136 printCMPMnemonic(MI, /*IsVCMP*/true, OS);
137
138 unsigned CurOp = 0;
139 printOperand(MI, CurOp++, OS);
140
141 if (Desc.TSFlags & X86II::EVEX_K) {
142 // Print mask operand.
143 OS << " {";
144 printOperand(MI, CurOp++, OS);
145 OS << "}";
146 }
147 OS << ", ";
148 printOperand(MI, CurOp++, OS);
149 OS << ", ";
150
151 if ((Desc.TSFlags & X86II::FormMask) == X86II::MRMSrcMem) {
152 if (Desc.TSFlags & X86II::EVEX_B) {
153 // Broadcast form.
154 // Load size is based on W-bit.
155 if (Desc.TSFlags & X86II::VEX_W)
156 printqwordmem(MI, CurOp++, OS);
157 else
158 printdwordmem(MI, CurOp++, OS);
159
160 // Print the number of elements broadcasted.
161 unsigned NumElts;
162 if (Desc.TSFlags & X86II::EVEX_L2)
163 NumElts = (Desc.TSFlags & X86II::VEX_W) ? 8 : 16;
164 else if (Desc.TSFlags & X86II::VEX_L)
165 NumElts = (Desc.TSFlags & X86II::VEX_W) ? 4 : 8;
166 else
167 NumElts = (Desc.TSFlags & X86II::VEX_W) ? 2 : 4;
168 OS << "{1to" << NumElts << "}";
169 } else {
170 if ((Desc.TSFlags & X86II::OpPrefixMask) == X86II::XS)
171 printdwordmem(MI, CurOp++, OS);
172 else if ((Desc.TSFlags & X86II::OpPrefixMask) == X86II::XD)
173 printqwordmem(MI, CurOp++, OS);
174 else if (Desc.TSFlags & X86II::EVEX_L2)
175 printzmmwordmem(MI, CurOp++, OS);
176 else if (Desc.TSFlags & X86II::VEX_L)
177 printymmwordmem(MI, CurOp++, OS);
178 else
179 printxmmwordmem(MI, CurOp++, OS);
180 }
181 } else {
182 printOperand(MI, CurOp++, OS);
183 if (Desc.TSFlags & X86II::EVEX_B)
184 OS << ", {sae}";
185 }
186
187 return true;
188 }
189 break;
190
71191 case X86::VPCOMBmi: case X86::VPCOMBri:
72192 case X86::VPCOMDmi: case X86::VPCOMDri:
73193 case X86::VPCOMQmi: case X86::VPCOMQri:
20312031 X86FoldableSchedWrite sched> {
20322032 defm rr_Int : AVX512_maskable_cmp<0xC2, MRMSrcReg, _,
20332033 (outs _.KRC:$dst),
2034 (ins _.RC:$src1, _.RC:$src2, AVXCC:$cc),
2035 "vcmp${cc}"#_.Suffix,
2036 "$src2, $src1", "$src1, $src2",
2034 (ins _.RC:$src1, _.RC:$src2, u8imm:$cc),
2035 "vcmp"#_.Suffix,
2036 "$cc, $src2, $src1", "$src1, $src2, $cc",
20372037 (OpNode (_.VT _.RC:$src1),
20382038 (_.VT _.RC:$src2),
20392039 imm:$cc)>, EVEX_4V, Sched<[sched]>;
20402040 let mayLoad = 1 in
20412041 defm rm_Int : AVX512_maskable_cmp<0xC2, MRMSrcMem, _,
20422042 (outs _.KRC:$dst),
2043 (ins _.RC:$src1, _.IntScalarMemOp:$src2, AVXCC:$cc),
2044 "vcmp${cc}"#_.Suffix,
2045 "$src2, $src1", "$src1, $src2",
2043 (ins _.RC:$src1, _.IntScalarMemOp:$src2, u8imm:$cc),
2044 "vcmp"#_.Suffix,
2045 "$cc, $src2, $src1", "$src1, $src2, $cc",
20462046 (OpNode (_.VT _.RC:$src1), _.ScalarIntMemCPat:$src2,
20472047 imm:$cc)>, EVEX_4V, EVEX_CD8<_.EltSize, CD8VT1>,
20482048 Sched<[sched.Folded, sched.ReadAfterFold]>;
20492049
20502050 defm rrb_Int : AVX512_maskable_cmp<0xC2, MRMSrcReg, _,
20512051 (outs _.KRC:$dst),
2052 (ins _.RC:$src1, _.RC:$src2, AVXCC:$cc),
2053 "vcmp${cc}"#_.Suffix,
2054 "{sae}, $src2, $src1", "$src1, $src2, {sae}",
2052 (ins _.RC:$src1, _.RC:$src2, u8imm:$cc),
2053 "vcmp"#_.Suffix,
2054 "$cc, {sae}, $src2, $src1","$src1, $src2, {sae}, $cc",
20552055 (OpNodeSAE (_.VT _.RC:$src1),
20562056 (_.VT _.RC:$src2),
20572057 imm:$cc)>,
20582058 EVEX_4V, EVEX_B, Sched<[sched]>;
2059 // Accept explicit immediate argument form instead of comparison code.
2060 let isAsmParserOnly = 1, hasSideEffects = 0 in {
2061 defm rri_alt : AVX512_maskable_cmp_alt<0xC2, MRMSrcReg, _,
2062 (outs VK1:$dst),
2063 (ins _.RC:$src1, _.RC:$src2, u8imm:$cc),
2064 "vcmp"#_.Suffix,
2065 "$cc, $src2, $src1", "$src1, $src2, $cc">, EVEX_4V,
2066 Sched<[sched]>, NotMemoryFoldable;
2067 let mayLoad = 1 in
2068 defm rmi_alt : AVX512_maskable_cmp_alt<0xC2, MRMSrcMem, _,
2069 (outs _.KRC:$dst),
2070 (ins _.RC:$src1, _.ScalarMemOp:$src2, u8imm:$cc),
2071 "vcmp"#_.Suffix,
2072 "$cc, $src2, $src1", "$src1, $src2, $cc">,
2073 EVEX_4V, EVEX_CD8<_.EltSize, CD8VT1>,
2074 Sched<[sched.Folded, sched.ReadAfterFold]>, NotMemoryFoldable;
2075
2076 defm rrb_alt : AVX512_maskable_cmp_alt<0xC2, MRMSrcReg, _,
2077 (outs _.KRC:$dst),
2078 (ins _.RC:$src1, _.RC:$src2, u8imm:$cc),
2079 "vcmp"#_.Suffix,
2080 "$cc, {sae}, $src2, $src1","$src1, $src2, {sae}, $cc">,
2081 EVEX_4V, EVEX_B, Sched<[sched]>, NotMemoryFoldable;
2082 }// let isAsmParserOnly = 1, hasSideEffects = 0
20832059
20842060 let isCodeGenOnly = 1 in {
20852061 let isCommutable = 1 in
20862062 def rr : AVX512Ii8<0xC2, MRMSrcReg,
2087 (outs _.KRC:$dst), (ins _.FRC:$src1, _.FRC:$src2, AVXCC:$cc),
2088 !strconcat("vcmp${cc}", _.Suffix,
2089 "\t{$src2, $src1, $dst|$dst, $src1, $src2}"),
2063 (outs _.KRC:$dst), (ins _.FRC:$src1, _.FRC:$src2, u8imm:$cc),
2064 !strconcat("vcmp", _.Suffix,
2065 "\t{$cc, $src2, $src1, $dst|$dst, $src1, $src2, $cc}"),
20902066 [(set _.KRC:$dst, (OpNode _.FRC:$src1,
20912067 _.FRC:$src2,
20922068 imm:$cc))]>,
20932069 EVEX_4V, Sched<[sched]>;
20942070 def rm : AVX512Ii8<0xC2, MRMSrcMem,
20952071 (outs _.KRC:$dst),
2096 (ins _.FRC:$src1, _.ScalarMemOp:$src2, AVXCC:$cc),
2097 !strconcat("vcmp${cc}", _.Suffix,
2098 "\t{$src2, $src1, $dst|$dst, $src1, $src2}"),
2072 (ins _.FRC:$src1, _.ScalarMemOp:$src2, u8imm:$cc),
2073 !strconcat("vcmp", _.Suffix,
2074 "\t{$cc, $src2, $src1, $dst|$dst, $src1, $src2, $cc}"),
20992075 [(set _.KRC:$dst, (OpNode _.FRC:$src1,
21002076 (_.ScalarLdFrag addr:$src2),
21012077 imm:$cc))]>,
24552431 multiclass avx512_vcmp_common
24562432 string Name> {
24572433 defm rri : AVX512_maskable_cmp<0xC2, MRMSrcReg, _,
2458 (outs _.KRC:$dst), (ins _.RC:$src1, _.RC:$src2,AVXCC:$cc),
2459 "vcmp${cc}"#_.Suffix,
2460 "$src2, $src1", "$src1, $src2",
2434 (outs _.KRC:$dst), (ins _.RC:$src1, _.RC:$src2,u8imm:$cc),
2435 "vcmp"#_.Suffix,
2436 "$cc, $src2, $src1", "$src1, $src2, $cc",
24612437 (X86cmpm (_.VT _.RC:$src1),
24622438 (_.VT _.RC:$src2),
24632439 imm:$cc), 1>,
24642440 Sched<[sched]>;
24652441
24662442 defm rmi : AVX512_maskable_cmp<0xC2, MRMSrcMem, _,
2467 (outs _.KRC:$dst),(ins _.RC:$src1, _.MemOp:$src2, AVXCC:$cc),
2468 "vcmp${cc}"#_.Suffix,
2469 "$src2, $src1", "$src1, $src2",
2443 (outs _.KRC:$dst),(ins _.RC:$src1, _.MemOp:$src2, u8imm:$cc),
2444 "vcmp"#_.Suffix,
2445 "$cc, $src2, $src1", "$src1, $src2, $cc",
24702446 (X86cmpm (_.VT _.RC:$src1),
24712447 (_.VT (_.LdFrag addr:$src2)),
24722448 imm:$cc)>,
24742450
24752451 defm rmbi : AVX512_maskable_cmp<0xC2, MRMSrcMem, _,
24762452 (outs _.KRC:$dst),
2477 (ins _.RC:$src1, _.ScalarMemOp:$src2, AVXCC:$cc),
2478 "vcmp${cc}"#_.Suffix,
2479 "${src2}"##_.BroadcastStr##", $src1",
2480 "$src1, ${src2}"##_.BroadcastStr,
2453 (ins _.RC:$src1, _.ScalarMemOp:$src2, u8imm:$cc),
2454 "vcmp"#_.Suffix,
2455 "$cc, ${src2}"#_.BroadcastStr#", $src1",
2456 "$src1, ${src2}"#_.BroadcastStr#", $cc",
24812457 (X86cmpm (_.VT _.RC:$src1),
24822458 (_.VT (X86VBroadcast(_.ScalarLdFrag addr:$src2))),
24832459 imm:$cc)>,
24842460 EVEX_B, Sched<[sched.Folded, sched.ReadAfterFold]>;
2485 // Accept explicit immediate argument form instead of comparison code.
2486 let isAsmParserOnly = 1, hasSideEffects = 0 in {
2487 defm rri_alt : AVX512_maskable_cmp_alt<0xC2, MRMSrcReg, _,
2488 (outs _.KRC:$dst),
2489 (ins _.RC:$src1, _.RC:$src2, u8imm:$cc),
2490 "vcmp"#_.Suffix,
2491 "$cc, $src2, $src1", "$src1, $src2, $cc">,
2492 Sched<[sched]>, NotMemoryFoldable;
2493
2494 let mayLoad = 1 in {
2495 defm rmi_alt : AVX512_maskable_cmp_alt<0xC2, MRMSrcMem, _,
2496 (outs _.KRC:$dst),
2497 (ins _.RC:$src1, _.MemOp:$src2, u8imm:$cc),
2498 "vcmp"#_.Suffix,
2499 "$cc, $src2, $src1", "$src1, $src2, $cc">,
2500 Sched<[sched.Folded, sched.ReadAfterFold]>,
2501 NotMemoryFoldable;
2502
2503 defm rmbi_alt : AVX512_maskable_cmp_alt<0xC2, MRMSrcMem, _,
2504 (outs _.KRC:$dst),
2505 (ins _.RC:$src1, _.ScalarMemOp:$src2, u8imm:$cc),
2506 "vcmp"#_.Suffix,
2507 "$cc, ${src2}"##_.BroadcastStr##", $src1",
2508 "$src1, ${src2}"##_.BroadcastStr##", $cc">,
2509 EVEX_B, Sched<[sched.Folded, sched.ReadAfterFold]>,
2510 NotMemoryFoldable;
2511 }
2512 }
25132461
25142462 // Patterns for selecting with loads in other operand.
25152463 def : Pat<(X86cmpm (_.LdFrag addr:$src2), (_.VT _.RC:$src1),
25412489 multiclass avx512_vcmp_sae {
25422490 // comparison code form (VCMP[EQ/LT/LE/...]
25432491 defm rrib : AVX512_maskable_cmp<0xC2, MRMSrcReg, _,
2544 (outs _.KRC:$dst),(ins _.RC:$src1, _.RC:$src2, AVXCC:$cc),
2545 "vcmp${cc}"#_.Suffix,
2546 "{sae}, $src2, $src1", "$src1, $src2, {sae}",
2492 (outs _.KRC:$dst),(ins _.RC:$src1, _.RC:$src2, u8imm:$cc),
2493 "vcmp"#_.Suffix,
2494 "$cc, {sae}, $src2, $src1",
2495 "$src1, $src2, {sae}, $cc",
25472496 (X86cmpmSAE (_.VT _.RC:$src1),
25482497 (_.VT _.RC:$src2),
25492498 imm:$cc)>,
25502499 EVEX_B, Sched<[sched]>;
2551
2552 let isAsmParserOnly = 1, hasSideEffects = 0 in {
2553 defm rrib_alt : AVX512_maskable_cmp_alt<0xC2, MRMSrcReg, _,
2554 (outs _.KRC:$dst),
2555 (ins _.RC:$src1, _.RC:$src2, u8imm:$cc),
2556 "vcmp"#_.Suffix,
2557 "$cc, {sae}, $src2, $src1",
2558 "$src1, $src2, {sae}, $cc">,
2559 EVEX_B, Sched<[sched]>, NotMemoryFoldable;
2560 }
25612500 }
25622501
25632502 multiclass avx512_vcmp {
598598 X86MemOffs64_32AsmOperand>;
599599 def offset64_64 : X86MemOffsOperand
600600 X86MemOffs64_64AsmOperand>;
601
602 def SSECC : Operand {
603 let PrintMethod = "printSSEAVXCC";
604 let OperandType = "OPERAND_IMMEDIATE";
605 }
606
607 def AVXCC : Operand {
608 let PrintMethod = "printSSEAVXCC";
609 let OperandType = "OPERAND_IMMEDIATE";
610 }
611601
612602 class ImmSExtAsmOperandClass : AsmOperandClass {
613603 let SuperClasses = [ImmAsmOperand];
17671767
17681768 // sse12_cmp_scalar - sse 1 & 2 compare scalar instructions
17691769 multiclass sse12_cmp_scalar
1770 Operand CC, SDNode OpNode, ValueType VT,
1771 PatFrag ld_frag, string asm, string asm_alt,
1770 SDNode OpNode, ValueType VT,
1771 PatFrag ld_frag, string asm,
17721772 X86FoldableSchedWrite sched> {
17731773 let isCommutable = 1 in
17741774 def rr : SIi8<0xC2, MRMSrcReg,
1775 (outs RC:$dst), (ins RC:$src1, RC:$src2, CC:$cc), asm,
1775 (outs RC:$dst), (ins RC:$src1, RC:$src2, u8imm:$cc), asm,
17761776 [(set RC:$dst, (OpNode (VT RC:$src1), RC:$src2, imm:$cc))]>,
17771777 Sched<[sched]>;
17781778 def rm : SIi8<0xC2, MRMSrcMem,
1779 (outs RC:$dst), (ins RC:$src1, x86memop:$src2, CC:$cc), asm,
1779 (outs RC:$dst), (ins RC:$src1, x86memop:$src2, u8imm:$cc), asm,
17801780 [(set RC:$dst, (OpNode (VT RC:$src1),
17811781 (ld_frag addr:$src2), imm:$cc))]>,
17821782 Sched<[sched.Folded, sched.ReadAfterFold]>;
1783
1784 // Accept explicit immediate argument form instead of comparison code.
1785 let isAsmParserOnly = 1, hasSideEffects = 0 in {
1786 def rr_alt : SIi8<0xC2, MRMSrcReg, (outs RC:$dst),
1787 (ins RC:$src1, RC:$src2, u8imm:$cc), asm_alt, []>,
1788 Sched<[sched]>, NotMemoryFoldable;
1789 let mayLoad = 1 in
1790 def rm_alt : SIi8<0xC2, MRMSrcMem, (outs RC:$dst),
1791 (ins RC:$src1, x86memop:$src2, u8imm:$cc), asm_alt, []>,
1792 Sched<[sched.Folded, sched.ReadAfterFold]>, NotMemoryFoldable;
1793 }
17941783 }
17951784
17961785 let ExeDomain = SSEPackedSingle in
1797 defm VCMPSS : sse12_cmp_scalar
1798 "cmp${cc}ss\t{$src2, $src1, $dst|$dst, $src1, $src2}",
1786 defm VCMPSS : sse12_cmp_scalar,
17991787 "cmpss\t{$cc, $src2, $src1, $dst|$dst, $src1, $src2, $cc}",
18001788 SchedWriteFCmpSizes.PS.Scl>, XS, VEX_4V, VEX_LIG, VEX_WIG;
18011789 let ExeDomain = SSEPackedDouble in
1802 defm VCMPSD : sse12_cmp_scalar
1803 "cmp${cc}sd\t{$src2, $src1, $dst|$dst, $src1, $src2}",
1790 defm VCMPSD : sse12_cmp_scalar,
18041791 "cmpsd\t{$cc, $src2, $src1, $dst|$dst, $src1, $src2, $cc}",
18051792 SchedWriteFCmpSizes.PD.Scl>,
18061793 XD, VEX_4V, VEX_LIG, VEX_WIG;
18071794
18081795 let Constraints = "$src1 = $dst" in {
18091796 let ExeDomain = SSEPackedSingle in
1810 defm CMPSS : sse12_cmp_scalar
1811 "cmp${cc}ss\t{$src2, $dst|$dst, $src2}",
1797 defm CMPSS : sse12_cmp_scalar,
18121798 "cmpss\t{$cc, $src2, $dst|$dst, $src2, $cc}",
18131799 SchedWriteFCmpSizes.PS.Scl>, XS;
18141800 let ExeDomain = SSEPackedDouble in
1815 defm CMPSD : sse12_cmp_scalar
1816 "cmp${cc}sd\t{$src2, $dst|$dst, $src2}",
1801 defm CMPSD : sse12_cmp_scalar,
18171802 "cmpsd\t{$cc, $src2, $dst|$dst, $src2, $cc}",
18181803 SchedWriteFCmpSizes.PD.Scl>, XD;
18191804 }
18201805
1821 multiclass sse12_cmp_scalar_int Operand CC,
1806 multiclass sse12_cmp_scalar_int
18221807 Intrinsic Int, string asm, X86FoldableSchedWrite sched,
18231808 ComplexPattern mem_cpat> {
18241809 def rr_Int : SIi8<0xC2, MRMSrcReg, (outs VR128:$dst),
1825 (ins VR128:$src1, VR128:$src, CC:$cc), asm,
1810 (ins VR128:$src1, VR128:$src, u8imm:$cc), asm,
18261811 [(set VR128:$dst, (Int VR128:$src1,
18271812 VR128:$src, imm:$cc))]>,
18281813 Sched<[sched]>;
18291814 let mayLoad = 1 in
18301815 def rm_Int : SIi8<0xC2, MRMSrcMem, (outs VR128:$dst),
1831 (ins VR128:$src1, memop:$src, CC:$cc), asm,
1816 (ins VR128:$src1, memop:$src, u8imm:$cc), asm,
18321817 [(set VR128:$dst, (Int VR128:$src1,
18331818 mem_cpat:$src, imm:$cc))]>,
18341819 Sched<[sched.Folded, sched.ReadAfterFold]>;
18371822 let isCodeGenOnly = 1 in {
18381823 // Aliases to match intrinsics which expect XMM operand(s).
18391824 let ExeDomain = SSEPackedSingle in
1840 defm VCMPSS : sse12_cmp_scalar_int
1841 "cmp${cc}ss\t{$src, $src1, $dst|$dst, $src1, $src}",
1825 defm VCMPSS : sse12_cmp_scalar_int,
1826 "cmpss\t{$cc, $src, $src1, $dst|$dst, $src1, $src, $cc}",
18421827 SchedWriteFCmpSizes.PS.Scl, sse_load_f32>, XS, VEX_4V;
18431828 let ExeDomain = SSEPackedDouble in
1844 defm VCMPSD : sse12_cmp_scalar_int
1845 "cmp${cc}sd\t{$src, $src1, $dst|$dst, $src1, $src}",
1829 defm VCMPSD : sse12_cmp_scalar_int,
1830 "cmpsd\t{$cc, $src, $src1, $dst|$dst, $src1, $src, $cc}",
18461831 SchedWriteFCmpSizes.PD.Scl, sse_load_f64>,
18471832 XD, VEX_4V;
18481833 let Constraints = "$src1 = $dst" in {
18491834 let ExeDomain = SSEPackedSingle in
1850 defm CMPSS : sse12_cmp_scalar_int
1851 "cmp${cc}ss\t{$src, $dst|$dst, $src}",
1835 defm CMPSS : sse12_cmp_scalar_int,
1836 "cmpss\t{$cc, $src, $dst|$dst, $src, $cc}",
18521837 SchedWriteFCmpSizes.PS.Scl, sse_load_f32>, XS;
18531838 let ExeDomain = SSEPackedDouble in
1854 defm CMPSD : sse12_cmp_scalar_int
1855 "cmp${cc}sd\t{$src, $dst|$dst, $src}",
1839 defm CMPSD : sse12_cmp_scalar_int,
1840 "cmpsd\t{$cc, $src, $dst|$dst, $src, $cc}",
18561841 SchedWriteFCmpSizes.PD.Scl, sse_load_f64>, XD;
18571842 }
18581843 }
19441929
19451930 // sse12_cmp_packed - sse 1 & 2 compare packed instructions
19461931 multiclass sse12_cmp_packed
1947 Operand CC, ValueType VT, string asm,
1948 string asm_alt, X86FoldableSchedWrite sched,
1932 ValueType VT, string asm,
1933 X86FoldableSchedWrite sched,
19491934 Domain d, PatFrag ld_frag> {
19501935 let isCommutable = 1 in
19511936 def rri : PIi8<0xC2, MRMSrcReg,
1952 (outs RC:$dst), (ins RC:$src1, RC:$src2, CC:$cc), asm,
1937 (outs RC:$dst), (ins RC:$src1, RC:$src2, u8imm:$cc), asm,
19531938 [(set RC:$dst, (VT (X86cmpp RC:$src1, RC:$src2, imm:$cc)))], d>,
19541939 Sched<[sched]>;
19551940 def rmi : PIi8<0xC2, MRMSrcMem,
1956 (outs RC:$dst), (ins RC:$src1, x86memop:$src2, CC:$cc), asm,
1941 (outs RC:$dst), (ins RC:$src1, x86memop:$src2, u8imm:$cc), asm,
19571942 [(set RC:$dst,
19581943 (VT (X86cmpp RC:$src1, (ld_frag addr:$src2), imm:$cc)))], d>,
19591944 Sched<[sched.Folded, sched.ReadAfterFold]>;
1960
1961 // Accept explicit immediate argument form instead of comparison code.
1962 let isAsmParserOnly = 1, hasSideEffects = 0 in {
1963 def rri_alt : PIi8<0xC2, MRMSrcReg,
1964 (outs RC:$dst), (ins RC:$src1, RC:$src2, u8imm:$cc),
1965 asm_alt, [], d>, Sched<[sched]>, NotMemoryFoldable;
1966 let mayLoad = 1 in
1967 def rmi_alt : PIi8<0xC2, MRMSrcMem,
1968 (outs RC:$dst), (ins RC:$src1, x86memop:$src2, u8imm:$cc),
1969 asm_alt, [], d>, Sched<[sched.Folded, sched.ReadAfterFold]>,
1970 NotMemoryFoldable;
1971 }
1972 }
1973
1974 defm VCMPPS : sse12_cmp_packed
1975 "cmp${cc}ps\t{$src2, $src1, $dst|$dst, $src1, $src2}",
1945 }
1946
1947 defm VCMPPS : sse12_cmp_packed
19761948 "cmpps\t{$cc, $src2, $src1, $dst|$dst, $src1, $src2, $cc}",
19771949 SchedWriteFCmpSizes.PS.XMM, SSEPackedSingle, loadv4f32>, PS, VEX_4V, VEX_WIG;
1978 defm VCMPPD : sse12_cmp_packed
1979 "cmp${cc}pd\t{$src2, $src1, $dst|$dst, $src1, $src2}",
1950 defm VCMPPD : sse12_cmp_packed,
19801951 "cmppd\t{$cc, $src2, $src1, $dst|$dst, $src1, $src2, $cc}",
19811952 SchedWriteFCmpSizes.PD.XMM, SSEPackedDouble, loadv2f64>, PD, VEX_4V, VEX_WIG;
1982 defm VCMPPSY : sse12_cmp_packed
1983 "cmp${cc}ps\t{$src2, $src1, $dst|$dst, $src1, $src2}",
1953 defm VCMPPSY : sse12_cmp_packed,
19841954 "cmpps\t{$cc, $src2, $src1, $dst|$dst, $src1, $src2, $cc}",
19851955 SchedWriteFCmpSizes.PS.YMM, SSEPackedSingle, loadv8f32>, PS, VEX_4V, VEX_L, VEX_WIG;
1986 defm VCMPPDY : sse12_cmp_packed
1987 "cmp${cc}pd\t{$src2, $src1, $dst|$dst, $src1, $src2}",
1956 defm VCMPPDY : sse12_cmp_packed,
19881957 "cmppd\t{$cc, $src2, $src1, $dst|$dst, $src1, $src2, $cc}",
19891958 SchedWriteFCmpSizes.PD.YMM, SSEPackedDouble, loadv4f64>, PD, VEX_4V, VEX_L, VEX_WIG;
19901959 let Constraints = "$src1 = $dst" in {
1991 defm CMPPS : sse12_cmp_packed
1992 "cmp${cc}ps\t{$src2, $dst|$dst, $src2}",
1960 defm CMPPS : sse12_cmp_packed,
19931961 "cmpps\t{$cc, $src2, $dst|$dst, $src2, $cc}",
19941962 SchedWriteFCmpSizes.PS.XMM, SSEPackedSingle, memopv4f32>, PS;
1995 defm CMPPD : sse12_cmp_packed
1996 "cmp${cc}pd\t{$src2, $dst|$dst, $src2}",
1963 defm CMPPD : sse12_cmp_packed,
19971964 "cmppd\t{$cc, $src2, $dst|$dst, $src2, $cc}",
19981965 SchedWriteFCmpSizes.PD.XMM, SSEPackedDouble, memopv2f64>, PD;
19991966 }
302302 // CHECK: encoding: [0xc5,0xe9,0x14,0x6c,0xcb,0xfc]
303303 vunpcklpd -4(%ebx,%ecx,8), %xmm2, %xmm5
304304
305 // CHECK: vcmpps $0, %xmm0, %xmm6, %xmm1
305 // CHECK: vcmpeqps %xmm0, %xmm6, %xmm1
306306 // CHECK: encoding: [0xc5,0xc8,0xc2,0xc8,0x00]
307307 vcmpps $0, %xmm0, %xmm6, %xmm1
308308
309 // CHECK: vcmpps $0, (%eax), %xmm6, %xmm1
309 // CHECK: vcmpeqps (%eax), %xmm6, %xmm1
310310 // CHECK: encoding: [0xc5,0xc8,0xc2,0x08,0x00]
311311 vcmpps $0, (%eax), %xmm6, %xmm1
312312
313 // CHECK: vcmpps $7, %xmm0, %xmm6, %xmm1
313 // CHECK: vcmpordps %xmm0, %xmm6, %xmm1
314314 // CHECK: encoding: [0xc5,0xc8,0xc2,0xc8,0x07]
315315 vcmpps $7, %xmm0, %xmm6, %xmm1
316316
317 // CHECK: vcmppd $0, %xmm0, %xmm6, %xmm1
317 // CHECK: vcmpeqpd %xmm0, %xmm6, %xmm1
318318 // CHECK: encoding: [0xc5,0xc9,0xc2,0xc8,0x00]
319319 vcmppd $0, %xmm0, %xmm6, %xmm1
320320
321 // CHECK: vcmppd $0, (%eax), %xmm6, %xmm1
321 // CHECK: vcmpeqpd (%eax), %xmm6, %xmm1
322322 // CHECK: encoding: [0xc5,0xc9,0xc2,0x08,0x00]
323323 vcmppd $0, (%eax), %xmm6, %xmm1
324324
325 // CHECK: vcmppd $7, %xmm0, %xmm6, %xmm1
325 // CHECK: vcmpordpd %xmm0, %xmm6, %xmm1
326326 // CHECK: encoding: [0xc5,0xc9,0xc2,0xc8,0x07]
327327 vcmppd $7, %xmm0, %xmm6, %xmm1
328328
261261 // CHECK: encoding: [0x0f,0x44,0xd0]
262262 cmovzl %eax,%edx
263263
264 // CHECK: cmpps $0, %xmm0, %xmm1
264 // CHECK: cmpeqps %xmm0, %xmm1
265265 // CHECK: encoding: [0x0f,0xc2,0xc8,0x00]
266266 cmpps $0, %xmm0, %xmm1
267 // CHECK: cmpps $0, (%eax), %xmm1
267 // CHECK: cmpeqps (%eax), %xmm1
268268 // CHECK: encoding: [0x0f,0xc2,0x08,0x00]
269269 cmpps $0, 0(%eax), %xmm1
270 // CHECK: cmppd $0, %xmm0, %xmm1
270 // CHECK: cmpeqpd %xmm0, %xmm1
271271 // CHECK: encoding: [0x66,0x0f,0xc2,0xc8,0x00]
272272 cmppd $0, %xmm0, %xmm1
273 // CHECK: cmppd $0, (%eax), %xmm1
273 // CHECK: cmpeqpd (%eax), %xmm1
274274 // CHECK: encoding: [0x66,0x0f,0xc2,0x08,0x00]
275275 cmppd $0, 0(%eax), %xmm1
276 // CHECK: cmpss $0, %xmm0, %xmm1
276 // CHECK: cmpeqss %xmm0, %xmm1
277277 // CHECK: encoding: [0xf3,0x0f,0xc2,0xc8,0x00]
278278 cmpss $0, %xmm0, %xmm1
279 // CHECK: cmpss $0, (%eax), %xmm1
279 // CHECK: cmpeqss (%eax), %xmm1
280280 // CHECK: encoding: [0xf3,0x0f,0xc2,0x08,0x00]
281281 cmpss $0, 0(%eax), %xmm1
282 // CHECK: cmpsd $0, %xmm0, %xmm1
282 // CHECK: cmpeqsd %xmm0, %xmm1
283283 // CHECK: encoding: [0xf2,0x0f,0xc2,0xc8,0x00]
284284 cmpsd $0, %xmm0, %xmm1
285 // CHECK: cmpsd $0, (%eax), %xmm1
285 // CHECK: cmpeqsd (%eax), %xmm1
286286 // CHECK: encoding: [0xf2,0x0f,0xc2,0x08,0x00]
287287 cmpsd $0, 0(%eax), %xmm1
288288
303303 // CHECK: encoding: [0xc5,0x19,0x14,0x7c,0xcb,0xfc]
304304 vunpcklpd -4(%rbx,%rcx,8), %xmm12, %xmm15
305305
306 // CHECK: vcmpps $0, %xmm10, %xmm12, %xmm15
306 // CHECK: vcmpeqps %xmm10, %xmm12, %xmm15
307307 // CHECK: encoding: [0xc4,0x41,0x18,0xc2,0xfa,0x00]
308308 vcmpps $0, %xmm10, %xmm12, %xmm15
309309
310 // CHECK: vcmpps $0, (%rax), %xmm12, %xmm15
310 // CHECK: vcmpeqps (%rax), %xmm12, %xmm15
311311 // CHECK: encoding: [0xc5,0x18,0xc2,0x38,0x00]
312312 vcmpps $0, (%rax), %xmm12, %xmm15
313313
314 // CHECK: vcmpps $7, %xmm10, %xmm12, %xmm15
314 // CHECK: vcmpordps %xmm10, %xmm12, %xmm15
315315 // CHECK: encoding: [0xc4,0x41,0x18,0xc2,0xfa,0x07]
316316 vcmpps $7, %xmm10, %xmm12, %xmm15
317317
318 // CHECK: vcmppd $0, %xmm10, %xmm12, %xmm15
318 // CHECK: vcmpeqpd %xmm10, %xmm12, %xmm15
319319 // CHECK: encoding: [0xc4,0x41,0x19,0xc2,0xfa,0x00]
320320 vcmppd $0, %xmm10, %xmm12, %xmm15
321321
322 // CHECK: vcmppd $0, (%rax), %xmm12, %xmm15
322 // CHECK: vcmpeqpd (%rax), %xmm12, %xmm15
323323 // CHECK: encoding: [0xc5,0x19,0xc2,0x38,0x00]
324324 vcmppd $0, (%rax), %xmm12, %xmm15
325325
326 // CHECK: vcmppd $7, %xmm10, %xmm12, %xmm15
326 // CHECK: vcmpordpd %xmm10, %xmm12, %xmm15
327327 // CHECK: encoding: [0xc4,0x41,0x19,0xc2,0xfa,0x07]
328328 vcmppd $7, %xmm10, %xmm12, %xmm15
329329
201201 # CHECK-NEXT: 1 1 1.00 * andnps (%rax), %xmm2
202202 # CHECK-NEXT: 1 1 0.50 andps %xmm0, %xmm2
203203 # CHECK-NEXT: 1 1 1.00 * andps (%rax), %xmm2
204 # CHECK-NEXT: 1 5 5.00 cmpps $0, %xmm0, %xmm2
205 # CHECK-NEXT: 1 5 5.00 * cmpps $0, (%rax), %xmm2
206 # CHECK-NEXT: 1 5 5.00 cmpss $0, %xmm0, %xmm2
207 # CHECK-NEXT: 1 5 5.00 * cmpss $0, (%rax), %xmm2
204 # CHECK-NEXT: 1 5 5.00 cmpeqps %xmm0, %xmm2
205 # CHECK-NEXT: 1 5 5.00 * cmpeqps (%rax), %xmm2
206 # CHECK-NEXT: 1 5 5.00 cmpeqss %xmm0, %xmm2
207 # CHECK-NEXT: 1 5 5.00 * cmpeqss (%rax), %xmm2
208208 # CHECK-NEXT: 1 9 4.50 comiss %xmm0, %xmm1
209209 # CHECK-NEXT: 1 10 5.00 * comiss (%rax), %xmm1
210210 # CHECK-NEXT: 1 5 5.00 cvtpi2ps %mm0, %xmm2
336336 # CHECK-NEXT: 1.00 - andnps (%rax), %xmm2
337337 # CHECK-NEXT: 0.50 0.50 andps %xmm0, %xmm2
338338 # CHECK-NEXT: 1.00 - andps (%rax), %xmm2
339 # CHECK-NEXT: 5.00 - cmpps $0, %xmm0, %xmm2
340 # CHECK-NEXT: 5.00 - cmpps $0, (%rax), %xmm2
341 # CHECK-NEXT: 5.00 - cmpss $0, %xmm0, %xmm2
342 # CHECK-NEXT: 5.00 - cmpss $0, (%rax), %xmm2
339 # CHECK-NEXT: 5.00 - cmpeqps %xmm0, %xmm2
340 # CHECK-NEXT: 5.00 - cmpeqps (%rax), %xmm2
341 # CHECK-NEXT: 5.00 - cmpeqss %xmm0, %xmm2
342 # CHECK-NEXT: 5.00 - cmpeqss (%rax), %xmm2
343343 # CHECK-NEXT: 4.50 4.50 comiss %xmm0, %xmm1
344344 # CHECK-NEXT: 5.00 5.00 comiss (%rax), %xmm1
345345 # CHECK-NEXT: - 5.00 cvtpi2ps %mm0, %xmm2
415415 # CHECK-NEXT: 1 1 0.50 andpd %xmm0, %xmm2
416416 # CHECK-NEXT: 1 1 1.00 * andpd (%rax), %xmm2
417417 # CHECK-NEXT: 1 1 1.00 * * U clflush (%rax)
418 # CHECK-NEXT: 1 6 3.00 cmppd $0, %xmm0, %xmm2
419 # CHECK-NEXT: 1 7 3.50 * cmppd $0, (%rax), %xmm2
420 # CHECK-NEXT: 1 5 5.00 cmpsd $0, %xmm0, %xmm2
421 # CHECK-NEXT: 1 5 5.00 * cmpsd $0, (%rax), %xmm2
418 # CHECK-NEXT: 1 6 3.00 cmpeqpd %xmm0, %xmm2
419 # CHECK-NEXT: 1 7 3.50 * cmpeqpd (%rax), %xmm2
420 # CHECK-NEXT: 1 5 5.00 cmpeqsd %xmm0, %xmm2
421 # CHECK-NEXT: 1 5 5.00 * cmpeqsd (%rax), %xmm2
422422 # CHECK-NEXT: 1 9 4.50 comisd %xmm0, %xmm1
423423 # CHECK-NEXT: 1 10 5.00 * comisd (%rax), %xmm1
424424 # CHECK-NEXT: 1 7 3.50 cvtdq2pd %xmm0, %xmm2
693693 # CHECK-NEXT: 0.50 0.50 andpd %xmm0, %xmm2
694694 # CHECK-NEXT: 1.00 - andpd (%rax), %xmm2
695695 # CHECK-NEXT: 1.00 - clflush (%rax)
696 # CHECK-NEXT: 3.00 3.00 cmppd $0, %xmm0, %xmm2
697 # CHECK-NEXT: 3.50 3.50 cmppd $0, (%rax), %xmm2
698 # CHECK-NEXT: 5.00 - cmpsd $0, %xmm0, %xmm2
699 # CHECK-NEXT: 5.00 - cmpsd $0, (%rax), %xmm2
696 # CHECK-NEXT: 3.00 3.00 cmpeqpd %xmm0, %xmm2
697 # CHECK-NEXT: 3.50 3.50 cmpeqpd (%rax), %xmm2
698 # CHECK-NEXT: 5.00 - cmpeqsd %xmm0, %xmm2
699 # CHECK-NEXT: 5.00 - cmpeqsd (%rax), %xmm2
700700 # CHECK-NEXT: 4.50 4.50 comisd %xmm0, %xmm1
701701 # CHECK-NEXT: 5.00 5.00 comisd (%rax), %xmm1
702702 # CHECK-NEXT: 3.50 3.50 cvtdq2pd %xmm0, %xmm2
10971097 # CHECK-NEXT: 2 6 2.00 * vbroadcastsd (%rax), %ymm2
10981098 # CHECK-NEXT: 1 7 0.50 * vbroadcastss (%rax), %xmm2
10991099 # CHECK-NEXT: 2 6 2.00 * vbroadcastss (%rax), %ymm2
1100 # CHECK-NEXT: 1 2 1.00 vcmppd $0, %xmm0, %xmm1, %xmm2
1101 # CHECK-NEXT: 1 7 1.00 * vcmppd $0, (%rax), %xmm1, %xmm2
1102 # CHECK-NEXT: 2 2 2.00 vcmppd $0, %ymm0, %ymm1, %ymm2
1103 # CHECK-NEXT: 2 7 2.00 * vcmppd $0, (%rax), %ymm1, %ymm2
1104 # CHECK-NEXT: 1 2 1.00 vcmpps $0, %xmm0, %xmm1, %xmm2
1105 # CHECK-NEXT: 1 7 1.00 * vcmpps $0, (%rax), %xmm1, %xmm2
1106 # CHECK-NEXT: 2 2 2.00 vcmpps $0, %ymm0, %ymm1, %ymm2
1107 # CHECK-NEXT: 2 7 2.00 * vcmpps $0, (%rax), %ymm1, %ymm2
1108 # CHECK-NEXT: 1 2 1.00 vcmpsd $0, %xmm0, %xmm1, %xmm2
1109 # CHECK-NEXT: 1 7 1.00 * vcmpsd $0, (%rax), %xmm1, %xmm2
1110 # CHECK-NEXT: 1 2 1.00 vcmpss $0, %xmm0, %xmm1, %xmm2
1111 # CHECK-NEXT: 1 7 1.00 * vcmpss $0, (%rax), %xmm1, %xmm2
1100 # CHECK-NEXT: 1 2 1.00 vcmpeqpd %xmm0, %xmm1, %xmm2
1101 # CHECK-NEXT: 1 7 1.00 * vcmpeqpd (%rax), %xmm1, %xmm2
1102 # CHECK-NEXT: 2 2 2.00 vcmpeqpd %ymm0, %ymm1, %ymm2
1103 # CHECK-NEXT: 2 7 2.00 * vcmpeqpd (%rax), %ymm1, %ymm2
1104 # CHECK-NEXT: 1 2 1.00 vcmpeqps %xmm0, %xmm1, %xmm2
1105 # CHECK-NEXT: 1 7 1.00 * vcmpeqps (%rax), %xmm1, %xmm2
1106 # CHECK-NEXT: 2 2 2.00 vcmpeqps %ymm0, %ymm1, %ymm2
1107 # CHECK-NEXT: 2 7 2.00 * vcmpeqps (%rax), %ymm1, %ymm2
1108 # CHECK-NEXT: 1 2 1.00 vcmpeqsd %xmm0, %xmm1, %xmm2
1109 # CHECK-NEXT: 1 7 1.00 * vcmpeqsd (%rax), %xmm1, %xmm2
1110 # CHECK-NEXT: 1 2 1.00 vcmpeqss %xmm0, %xmm1, %xmm2
1111 # CHECK-NEXT: 1 7 1.00 * vcmpeqss (%rax), %xmm1, %xmm2
11121112 # CHECK-NEXT: 2 1 1.00 vcomisd %xmm0, %xmm1
11131113 # CHECK-NEXT: 2 6 1.00 * vcomisd (%rax), %xmm1
11141114 # CHECK-NEXT: 2 1 1.00 vcomiss %xmm0, %xmm1
18201820 # CHECK-NEXT: 0.50 0.50 - - - - - - 2.00 2.00 - - - - 1.00 1.00 - - - 0.50 0.50 - - vbroadcastsd (%rax), %ymm2
18211821 # CHECK-NEXT: 0.50 0.50 - - - - - - 0.50 0.50 - - - - 0.50 0.50 - - - 0.50 0.50 - - vbroadcastss (%rax), %xmm2
18221822 # CHECK-NEXT: 0.50 0.50 - - - - - - 2.00 2.00 - - - - 1.00 1.00 - - - 0.50 0.50 - - vbroadcastss (%rax), %ymm2
1823 # CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 1.00 - - - - - - - - vcmppd $0, %xmm0, %xmm1, %xmm2
1824 # CHECK-NEXT: 0.50 0.50 - - - - - - 0.50 0.50 - - - - 1.00 - - - - 0.50 0.50 - - vcmppd $0, (%rax), %xmm1, %xmm2
1825 # CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 2.00 - - - - - - - - vcmppd $0, %ymm0, %ymm1, %ymm2
1826 # CHECK-NEXT: 1.00 1.00 - - - - - - 0.50 0.50 - - - - 2.00 - - - - 1.00 1.00 - - vcmppd $0, (%rax), %ymm1, %ymm2
1827 # CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 1.00 - - - - - - - - vcmpps $0, %xmm0, %xmm1, %xmm2
1828 # CHECK-NEXT: 0.50 0.50 - - - - - - 0.50 0.50 - - - - 1.00 - - - - 0.50 0.50 - - vcmpps $0, (%rax), %xmm1, %xmm2
1829 # CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 2.00 - - - - - - - - vcmpps $0, %ymm0, %ymm1, %ymm2
1830 # CHECK-NEXT: 1.00 1.00 - - - - - - 0.50 0.50 - - - - 2.00 - - - - 1.00 1.00 - - vcmpps $0, (%rax), %ymm1, %ymm2
1831 # CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 1.00 - - - - - - - - vcmpsd $0, %xmm0, %xmm1, %xmm2
1832 # CHECK-NEXT: 0.50 0.50 - - - - - - 0.50 0.50 - - - - 1.00 - - - - 0.50 0.50 - - vcmpsd $0, (%rax), %xmm1, %xmm2
1833 # CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 1.00 - - - - - - - - vcmpss $0, %xmm0, %xmm1, %xmm2
1834 # CHECK-NEXT: 0.50 0.50 - - - - - - 0.50 0.50 - - - - 1.00 - - - - 0.50 0.50 - - vcmpss $0, (%rax), %xmm1, %xmm2
1823 # CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 1.00 - - - - - - - - vcmpeqpd %xmm0, %xmm1, %xmm2
1824 # CHECK-NEXT: 0.50 0.50 - - - - - - 0.50 0.50 - - - - 1.00 - - - - 0.50 0.50 - - vcmpeqpd (%rax), %xmm1, %xmm2
1825 # CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 2.00 - - - - - - - - vcmpeqpd %ymm0, %ymm1, %ymm2
1826 # CHECK-NEXT: 1.00 1.00 - - - - - - 0.50 0.50 - - - - 2.00 - - - - 1.00 1.00 - - vcmpeqpd (%rax), %ymm1, %ymm2
1827 # CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 1.00 - - - - - - - - vcmpeqps %xmm0, %xmm1, %xmm2
1828 # CHECK-NEXT: 0.50 0.50 - - - - - - 0.50 0.50 - - - - 1.00 - - - - 0.50 0.50 - - vcmpeqps (%rax), %xmm1, %xmm2
1829 # CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 2.00 - - - - - - - - vcmpeqps %ymm0, %ymm1, %ymm2
1830 # CHECK-NEXT: 1.00 1.00 - - - - - - 0.50 0.50 - - - - 2.00 - - - - 1.00 1.00 - - vcmpeqps (%rax), %ymm1, %ymm2
1831 # CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 1.00 - - - - - - - - vcmpeqsd %xmm0, %xmm1, %xmm2
1832 # CHECK-NEXT: 0.50 0.50 - - - - - - 0.50 0.50 - - - - 1.00 - - - - 0.50 0.50 - - vcmpeqsd (%rax), %xmm1, %xmm2
1833 # CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 1.00 - - - - - - - - vcmpeqss %xmm0, %xmm1, %xmm2
1834 # CHECK-NEXT: 0.50 0.50 - - - - - - 0.50 0.50 - - - - 1.00 - - - - 0.50 0.50 - - vcmpeqss (%rax), %xmm1, %xmm2
18351835 # CHECK-NEXT: - - - - - 1.00 - - 0.50 0.50 - - - - 1.00 - - - - - - - - vcomisd %xmm0, %xmm1
18361836 # CHECK-NEXT: 0.50 0.50 - - - 1.00 - - 0.50 0.50 - - - - 1.00 - - - - 0.50 0.50 - - vcomisd (%rax), %xmm1
18371837 # CHECK-NEXT: - - - - - 1.00 - - 0.50 0.50 - - - - 1.00 - - - - - - - - vcomiss %xmm0, %xmm1
201201 # CHECK-NEXT: 1 7 0.50 * andnps (%rax), %xmm2
202202 # CHECK-NEXT: 1 2 0.50 andps %xmm0, %xmm2
203203 # CHECK-NEXT: 1 7 0.50 * andps (%rax), %xmm2
204 # CHECK-NEXT: 1 2 1.00 cmpps $0, %xmm0, %xmm2
205 # CHECK-NEXT: 1 7 1.00 * cmpps $0, (%rax), %xmm2
206 # CHECK-NEXT: 1 2 1.00 cmpss $0, %xmm0, %xmm2
207 # CHECK-NEXT: 1 7 1.00 * cmpss $0, (%rax), %xmm2
204 # CHECK-NEXT: 1 2 1.00 cmpeqps %xmm0, %xmm2
205 # CHECK-NEXT: 1 7 1.00 * cmpeqps (%rax), %xmm2
206 # CHECK-NEXT: 1 2 1.00 cmpeqss %xmm0, %xmm2
207 # CHECK-NEXT: 1 7 1.00 * cmpeqss (%rax), %xmm2
208208 # CHECK-NEXT: 2 1 1.00 comiss %xmm0, %xmm1
209209 # CHECK-NEXT: 2 6 1.00 * comiss (%rax), %xmm1
210210 # CHECK-NEXT: 2 4 1.00 cvtpi2ps %mm0, %xmm2
357357 # CHECK-NEXT: 0.50 0.50 - - - - - - 0.50 0.50 - - - - 0.50 0.50 - - - 0.50 0.50 - - andnps (%rax), %xmm2
358358 # CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 0.50 0.50 - - - - - - - andps %xmm0, %xmm2
359359 # CHECK-NEXT: 0.50 0.50 - - - - - - 0.50 0.50 - - - - 0.50 0.50 - - - 0.50 0.50 - - andps (%rax), %xmm2
360 # CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 1.00 - - - - - - - - cmpps $0, %xmm0, %xmm2
361 # CHECK-NEXT: 0.50 0.50 - - - - - - 0.50 0.50 - - - - 1.00 - - - - 0.50 0.50 - - cmpps $0, (%rax), %xmm2
362 # CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 1.00 - - - - - - - - cmpss $0, %xmm0, %xmm2
363 # CHECK-NEXT: 0.50 0.50 - - - - - - 0.50 0.50 - - - - 1.00 - - - - 0.50 0.50 - - cmpss $0, (%rax), %xmm2
360 # CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 1.00 - - - - - - - - cmpeqps %xmm0, %xmm2
361 # CHECK-NEXT: 0.50 0.50 - - - - - - 0.50 0.50 - - - - 1.00 - - - - 0.50 0.50 - - cmpeqps (%rax), %xmm2
362 # CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 1.00 - - - - - - - - cmpeqss %xmm0, %xmm2
363 # CHECK-NEXT: 0.50 0.50 - - - - - - 0.50 0.50 - - - - 1.00 - - - - 0.50 0.50 - - cmpeqss (%rax), %xmm2
364364 # CHECK-NEXT: - - - - - 1.00 - - 0.50 0.50 - - - - 1.00 - - - - - - - - comiss %xmm0, %xmm1
365365 # CHECK-NEXT: 0.50 0.50 - - - 1.00 - - 0.50 0.50 - - - - 1.00 - - - - 0.50 0.50 - - comiss (%rax), %xmm1
366366 # CHECK-NEXT: - - - - - - - - - - - - - 1.00 - 1.00 - - - - - - - cvtpi2ps %mm0, %xmm2
415415 # CHECK-NEXT: 1 2 0.50 andpd %xmm0, %xmm2
416416 # CHECK-NEXT: 1 7 0.50 * andpd (%rax), %xmm2
417417 # CHECK-NEXT: 1 5 0.50 * * U clflush (%rax)
418 # CHECK-NEXT: 1 2 1.00 cmppd $0, %xmm0, %xmm2
419 # CHECK-NEXT: 1 7 1.00 * cmppd $0, (%rax), %xmm2
420 # CHECK-NEXT: 1 2 1.00 cmpsd $0, %xmm0, %xmm2
421 # CHECK-NEXT: 1 7 1.00 * cmpsd $0, (%rax), %xmm2
418 # CHECK-NEXT: 1 2 1.00 cmpeqpd %xmm0, %xmm2
419 # CHECK-NEXT: 1 7 1.00 * cmpeqpd (%rax), %xmm2
420 # CHECK-NEXT: 1 2 1.00 cmpeqsd %xmm0, %xmm2
421 # CHECK-NEXT: 1 7 1.00 * cmpeqsd (%rax), %xmm2
422422 # CHECK-NEXT: 2 1 1.00 comisd %xmm0, %xmm1
423423 # CHECK-NEXT: 2 6 1.00 * comisd (%rax), %xmm1
424424 # CHECK-NEXT: 2 8 1.00 cvtdq2pd %xmm0, %xmm2
714714 # CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 0.50 0.50 - - - - - - - andpd %xmm0, %xmm2
715715 # CHECK-NEXT: 0.50 0.50 - - - - - - 0.50 0.50 - - - - 0.50 0.50 - - - 0.50 0.50 - - andpd (%rax), %xmm2
716716 # CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - - - - - - 0.50 0.50 - - clflush (%rax)
717 # CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 1.00 - - - - - - - - cmppd $0, %xmm0, %xmm2
718 # CHECK-NEXT: 0.50 0.50 - - - - - - 0.50 0.50 - - - - 1.00 - - - - 0.50 0.50 - - cmppd $0, (%rax), %xmm2
719 # CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 1.00 - - - - - - - - cmpsd $0, %xmm0, %xmm2
720 # CHECK-NEXT: 0.50 0.50 - - - - - - 0.50 0.50 - - - - 1.00 - - - - 0.50 0.50 - - cmpsd $0, (%rax), %xmm2
717 # CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 1.00 - - - - - - - - cmpeqpd %xmm0, %xmm2
718 # CHECK-NEXT: 0.50 0.50 - - - - - - 0.50 0.50 - - - - 1.00 - - - - 0.50 0.50 - - cmpeqpd (%rax), %xmm2
719 # CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 1.00 - - - - - - - - cmpeqsd %xmm0, %xmm2
720 # CHECK-NEXT: 0.50 0.50 - - - - - - 0.50 0.50 - - - - 1.00 - - - - 0.50 0.50 - - cmpeqsd (%rax), %xmm2
721721 # CHECK-NEXT: - - - - - 1.00 - - 0.50 0.50 - - - - 1.00 - - - - - - - - comisd %xmm0, %xmm1
722722 # CHECK-NEXT: 0.50 0.50 - - - 1.00 - - 0.50 0.50 - - - - 1.00 - - - - 0.50 0.50 - - comisd (%rax), %xmm1
723723 # CHECK-NEXT: - - - - - - - - - - - - - 1.00 - 1.00 - - - - - - - cvtdq2pd %xmm0, %xmm2
10971097 # CHECK-NEXT: 1 6 0.50 * vbroadcastsd (%rax), %ymm2
10981098 # CHECK-NEXT: 1 5 0.50 * vbroadcastss (%rax), %xmm2
10991099 # CHECK-NEXT: 1 6 0.50 * vbroadcastss (%rax), %ymm2
1100 # CHECK-NEXT: 1 3 1.00 vcmppd $0, %xmm0, %xmm1, %xmm2
1101 # CHECK-NEXT: 2 8 1.00 * vcmppd $0, (%rax), %xmm1, %xmm2
1102 # CHECK-NEXT: 1 3 1.00 vcmppd $0, %ymm0, %ymm1, %ymm2
1103 # CHECK-NEXT: 2 9 1.00 * vcmppd $0, (%rax), %ymm1, %ymm2
1104 # CHECK-NEXT: 1 3 1.00 vcmpps $0, %xmm0, %xmm1, %xmm2
1105 # CHECK-NEXT: 2 8 1.00 * vcmpps $0, (%rax), %xmm1, %xmm2
1106 # CHECK-NEXT: 1 3 1.00 vcmpps $0, %ymm0, %ymm1, %ymm2
1107 # CHECK-NEXT: 2 9 1.00 * vcmpps $0, (%rax), %ymm1, %ymm2
1108 # CHECK-NEXT: 1 3 1.00 vcmpsd $0, %xmm0, %xmm1, %xmm2
1109 # CHECK-NEXT: 2 8 1.00 * vcmpsd $0, (%rax), %xmm1, %xmm2
1110 # CHECK-NEXT: 1 3 1.00 vcmpss $0, %xmm0, %xmm1, %xmm2
1111 # CHECK-NEXT: 2 8 1.00 * vcmpss $0, (%rax), %xmm1, %xmm2
1100 # CHECK-NEXT: 1 3 1.00 vcmpeqpd %xmm0, %xmm1, %xmm2
1101 # CHECK-NEXT: 2 8 1.00 * vcmpeqpd (%rax), %xmm1, %xmm2
1102 # CHECK-NEXT: 1 3 1.00 vcmpeqpd %ymm0, %ymm1, %ymm2
1103 # CHECK-NEXT: 2 9 1.00 * vcmpeqpd (%rax), %ymm1, %ymm2
1104 # CHECK-NEXT: 1 3 1.00 vcmpeqps %xmm0, %xmm1, %xmm2
1105 # CHECK-NEXT: 2 8 1.00 * vcmpeqps (%rax), %xmm1, %xmm2
1106 # CHECK-NEXT: 1 3 1.00 vcmpeqps %ymm0, %ymm1, %ymm2
1107 # CHECK-NEXT: 2 9 1.00 * vcmpeqps (%rax), %ymm1, %ymm2
1108 # CHECK-NEXT: 1 3 1.00 vcmpeqsd %xmm0, %xmm1, %xmm2
1109 # CHECK-NEXT: 2 8 1.00 * vcmpeqsd (%rax), %xmm1, %xmm2
1110 # CHECK-NEXT: 1 3 1.00 vcmpeqss %xmm0, %xmm1, %xmm2
1111 # CHECK-NEXT: 2 8 1.00 * vcmpeqss (%rax), %xmm1, %xmm2
11121112 # CHECK-NEXT: 1 3 1.00 vcomisd %xmm0, %xmm1
11131113 # CHECK-NEXT: 2 8 1.00 * vcomisd (%rax), %xmm1
11141114 # CHECK-NEXT: 1 3 1.00 vcomiss %xmm0, %xmm1
18071807 # CHECK-NEXT: - - - - 0.50 0.50 - - - - vbroadcastsd (%rax), %ymm2
18081808 # CHECK-NEXT: - - - - 0.50 0.50 - - - - vbroadcastss (%rax), %xmm2
18091809 # CHECK-NEXT: - - - - 0.50 0.50 - - - - vbroadcastss (%rax), %ymm2
1810 # CHECK-NEXT: - - - 1.00 - - - - - - vcmppd $0, %xmm0, %xmm1, %xmm2
1811 # CHECK-NEXT: - - - 1.00 0.50 0.50 - - - - vcmppd $0, (%rax), %xmm1, %xmm2
1812 # CHECK-NEXT: - - - 1.00 - - - - - - vcmppd $0, %ymm0, %ymm1, %ymm2
1813 # CHECK-NEXT: - - - 1.00 0.50 0.50 - - - - vcmppd $0, (%rax), %ymm1, %ymm2
1814 # CHECK-NEXT: - - - 1.00 - - - - - - vcmpps $0, %xmm0, %xmm1, %xmm2
1815 # CHECK-NEXT: - - - 1.00 0.50 0.50 - - - - vcmpps $0, (%rax), %xmm1, %xmm2
1816 # CHECK-NEXT: - - - 1.00 - - - - - - vcmpps $0, %ymm0, %ymm1, %ymm2
1817 # CHECK-NEXT: - - - 1.00 0.50 0.50 - - - - vcmpps $0, (%rax), %ymm1, %ymm2
1818 # CHECK-NEXT: - - - 1.00 - - - - - - vcmpsd $0, %xmm0, %xmm1, %xmm2
1819 # CHECK-NEXT: - - - 1.00 0.50 0.50 - - - - vcmpsd $0, (%rax), %xmm1, %xmm2
1820 # CHECK-NEXT: - - - 1.00 - - - - - - vcmpss $0, %xmm0, %xmm1, %xmm2
1821 # CHECK-NEXT: - - - 1.00 0.50 0.50 - - - - vcmpss $0, (%rax), %xmm1, %xmm2
1810 # CHECK-NEXT: - - - 1.00 - - - - - - vcmpeqpd %xmm0, %xmm1, %xmm2
1811 # CHECK-NEXT: - - - 1.00 0.50 0.50 - - - - vcmpeqpd (%rax), %xmm1, %xmm2
1812 # CHECK-NEXT: - - - 1.00 - - - - - - vcmpeqpd %ymm0, %ymm1, %ymm2
1813 # CHECK-NEXT: - - - 1.00 0.50 0.50 - - - - vcmpeqpd (%rax), %ymm1, %ymm2
1814 # CHECK-NEXT: - - - 1.00 - - - - - - vcmpeqps %xmm0, %xmm1, %xmm2
1815 # CHECK-NEXT: - - - 1.00 0.50 0.50 - - - - vcmpeqps (%rax), %xmm1, %xmm2
1816 # CHECK-NEXT: - - - 1.00 - - - - - - vcmpeqps %ymm0, %ymm1, %ymm2
1817 # CHECK-NEXT: - - - 1.00 0.50 0.50 - - - - vcmpeqps (%rax), %ymm1, %ymm2
1818 # CHECK-NEXT: - - - 1.00 - - - - - - vcmpeqsd %xmm0, %xmm1, %xmm2
1819 # CHECK-NEXT: - - - 1.00 0.50 0.50 - - - - vcmpeqsd (%rax), %xmm1, %xmm2
1820 # CHECK-NEXT: - - - 1.00 - - - - - - vcmpeqss %xmm0, %xmm1, %xmm2
1821 # CHECK-NEXT: - - - 1.00 0.50 0.50 - - - - vcmpeqss (%rax), %xmm1, %xmm2
18221822 # CHECK-NEXT: - - - 1.00 - - - - - - vcomisd %xmm0, %xmm1
18231823 # CHECK-NEXT: - - - 1.00 0.50 0.50 - - - - vcomisd (%rax), %xmm1
18241824 # CHECK-NEXT: - - - 1.00 - - - - - - vcomiss %xmm0, %xmm1
201201 # CHECK-NEXT: 2 6 1.00 * andnps (%rax), %xmm2
202202 # CHECK-NEXT: 1 1 1.00 andps %xmm0, %xmm2
203203 # CHECK-NEXT: 2 6 1.00 * andps (%rax), %xmm2
204 # CHECK-NEXT: 1 3 1.00 cmpps $0, %xmm0, %xmm2
205 # CHECK-NEXT: 2 8 1.00 * cmpps $0, (%rax), %xmm2
206 # CHECK-NEXT: 1 3 1.00 cmpss $0, %xmm0, %xmm2
207 # CHECK-NEXT: 2 8 1.00 * cmpss $0, (%rax), %xmm2
204 # CHECK-NEXT: 1 3 1.00 cmpeqps %xmm0, %xmm2
205 # CHECK-NEXT: 2 8 1.00 * cmpeqps (%rax), %xmm2
206 # CHECK-NEXT: 1 3 1.00 cmpeqss %xmm0, %xmm2
207 # CHECK-NEXT: 2 8 1.00 * cmpeqss (%rax), %xmm2
208208 # CHECK-NEXT: 1 3 1.00 comiss %xmm0, %xmm1
209209 # CHECK-NEXT: 2 8 1.00 * comiss (%rax), %xmm1
210210 # CHECK-NEXT: 1 3 1.00 cvtpi2ps %mm0, %xmm2
344344 # CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - andnps (%rax), %xmm2
345345 # CHECK-NEXT: - - - - - - - 1.00 - - andps %xmm0, %xmm2
346346 # CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - andps (%rax), %xmm2
347 # CHECK-NEXT: - - - 1.00 - - - - - - cmpps $0, %xmm0, %xmm2
348 # CHECK-NEXT: - - - 1.00 0.50 0.50 - - - - cmpps $0, (%rax), %xmm2
349 # CHECK-NEXT: - - - 1.00 - - - - - - cmpss $0, %xmm0, %xmm2
350 # CHECK-NEXT: - - - 1.00 0.50 0.50 - - - - cmpss $0, (%rax), %xmm2
347 # CHECK-NEXT: - - - 1.00 - - - - - - cmpeqps %xmm0, %xmm2
348 # CHECK-NEXT: - - - 1.00 0.50 0.50 - - - - cmpeqps (%rax), %xmm2
349 # CHECK-NEXT: - - - 1.00 - - - - - - cmpeqss %xmm0, %xmm2
350 # CHECK-NEXT: - - - 1.00 0.50 0.50 - - - - cmpeqss (%rax), %xmm2
351351 # CHECK-NEXT: - - - 1.00 - - - - - - comiss %xmm0, %xmm1
352352 # CHECK-NEXT: - - - 1.00 0.50 0.50 - - - - comiss (%rax), %xmm1
353353 # CHECK-NEXT: - - - 1.00 - - - - - - cvtpi2ps %mm0, %xmm2
415415 # CHECK-NEXT: 1 1 1.00 andpd %xmm0, %xmm2
416416 # CHECK-NEXT: 2 6 1.00 * andpd (%rax), %xmm2
417417 # CHECK-NEXT: 2 2 1.00 * * U clflush (%rax)
418 # CHECK-NEXT: 1 3 1.00 cmppd $0, %xmm0, %xmm2
419 # CHECK-NEXT: 2 8 1.00 * cmppd $0, (%rax), %xmm2
420 # CHECK-NEXT: 1 3 1.00 cmpsd $0, %xmm0, %xmm2
421 # CHECK-NEXT: 2 8 1.00 * cmpsd $0, (%rax), %xmm2
418 # CHECK-NEXT: 1 3 1.00 cmpeqpd %xmm0, %xmm2
419 # CHECK-NEXT: 2 8 1.00 * cmpeqpd (%rax), %xmm2
420 # CHECK-NEXT: 1 3 1.00 cmpeqsd %xmm0, %xmm2
421 # CHECK-NEXT: 2 8 1.00 * cmpeqsd (%rax), %xmm2
422422 # CHECK-NEXT: 1 3 1.00 comisd %xmm0, %xmm1
423423 # CHECK-NEXT: 2 8 1.00 * comisd (%rax), %xmm1
424424 # CHECK-NEXT: 2 4 1.00 cvtdq2pd %xmm0, %xmm2
701701 # CHECK-NEXT: - - - - - - - 1.00 - - andpd %xmm0, %xmm2
702702 # CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - andpd (%rax), %xmm2
703703 # CHECK-NEXT: - - 0.25 0.25 - - - 0.25 1.25 - clflush (%rax)
704 # CHECK-NEXT: - - - 1.00 - - - - - - cmppd $0, %xmm0, %xmm2
705 # CHECK-NEXT: - - - 1.00 0.50 0.50 - - - - cmppd $0, (%rax), %xmm2
706 # CHECK-NEXT: - - - 1.00 - - - - - - cmpsd $0, %xmm0, %xmm2
707 # CHECK-NEXT: - - - 1.00 0.50 0.50 - - - - cmpsd $0, (%rax), %xmm2
704 # CHECK-NEXT: - - - 1.00 - - - - - - cmpeqpd %xmm0, %xmm2
705 # CHECK-NEXT: - - - 1.00 0.50 0.50 - - - - cmpeqpd (%rax), %xmm2
706 # CHECK-NEXT: - - - 1.00 - - - - - - cmpeqsd %xmm0, %xmm2
707 # CHECK-NEXT: - - - 1.00 0.50 0.50 - - - - cmpeqsd (%rax), %xmm2
708708 # CHECK-NEXT: - - - 1.00 - - - - - - comisd %xmm0, %xmm1
709709 # CHECK-NEXT: - - - 1.00 0.50 0.50 - - - - comisd (%rax), %xmm1
710710 # CHECK-NEXT: - - - 1.00 - - - 1.00 - - cvtdq2pd %xmm0, %xmm2
10971097 # CHECK-NEXT: 2 6 2.00 * vbroadcastsd (%rax), %ymm2
10981098 # CHECK-NEXT: 1 6 1.00 * vbroadcastss (%rax), %xmm2
10991099 # CHECK-NEXT: 2 6 2.00 * vbroadcastss (%rax), %ymm2
1100 # CHECK-NEXT: 1 2 1.00 vcmppd $0, %xmm0, %xmm1, %xmm2
1101 # CHECK-NEXT: 1 7 1.00 * vcmppd $0, (%rax), %xmm1, %xmm2
1102 # CHECK-NEXT: 2 2 2.00 vcmppd $0, %ymm0, %ymm1, %ymm2
1103 # CHECK-NEXT: 2 7 2.00 * vcmppd $0, (%rax), %ymm1, %ymm2
1104 # CHECK-NEXT: 1 2 1.00 vcmpps $0, %xmm0, %xmm1, %xmm2
1105 # CHECK-NEXT: 1 7 1.00 * vcmpps $0, (%rax), %xmm1, %xmm2
1106 # CHECK-NEXT: 2 2 2.00 vcmpps $0, %ymm0, %ymm1, %ymm2
1107 # CHECK-NEXT: 2 7 2.00 * vcmpps $0, (%rax), %ymm1, %ymm2
1108 # CHECK-NEXT: 1 2 1.00 vcmpsd $0, %xmm0, %xmm1, %xmm2
1109 # CHECK-NEXT: 1 7 1.00 * vcmpsd $0, (%rax), %xmm1, %xmm2
1110 # CHECK-NEXT: 1 2 1.00 vcmpss $0, %xmm0, %xmm1, %xmm2
1111 # CHECK-NEXT: 1 7 1.00 * vcmpss $0, (%rax), %xmm1, %xmm2
1100 # CHECK-NEXT: 1 2 1.00 vcmpeqpd %xmm0, %xmm1, %xmm2
1101 # CHECK-NEXT: 1 7 1.00 * vcmpeqpd (%rax), %xmm1, %xmm2
1102 # CHECK-NEXT: 2 2 2.00 vcmpeqpd %ymm0, %ymm1, %ymm2
1103 # CHECK-NEXT: 2 7 2.00 * vcmpeqpd (%rax), %ymm1, %ymm2
1104 # CHECK-NEXT: 1 2 1.00 vcmpeqps %xmm0, %xmm1, %xmm2
1105 # CHECK-NEXT: 1 7 1.00 * vcmpeqps (%rax), %xmm1, %xmm2
1106 # CHECK-NEXT: 2 2 2.00 vcmpeqps %ymm0, %ymm1, %ymm2
1107 # CHECK-NEXT: 2 7 2.00 * vcmpeqps (%rax), %ymm1, %ymm2
1108 # CHECK-NEXT: 1 2 1.00 vcmpeqsd %xmm0, %xmm1, %xmm2
1109 # CHECK-NEXT: 1 7 1.00 * vcmpeqsd (%rax), %xmm1, %xmm2
1110 # CHECK-NEXT: 1 2 1.00 vcmpeqss %xmm0, %xmm1, %xmm2
1111 # CHECK-NEXT: 1 7 1.00 * vcmpeqss (%rax), %xmm1, %xmm2
11121112 # CHECK-NEXT: 1 3 1.00 vcomisd %xmm0, %xmm1
11131113 # CHECK-NEXT: 1 8 1.00 * vcomisd (%rax), %xmm1
11141114 # CHECK-NEXT: 1 3 1.00 vcomiss %xmm0, %xmm1
18111811 # CHECK-NEXT: - - - 2.00 2.00 1.00 1.00 1.00 - - - - - - vbroadcastsd (%rax), %ymm2
18121812 # CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 1.00 - - - - - - vbroadcastss (%rax), %xmm2
18131813 # CHECK-NEXT: - - - 2.00 2.00 1.00 1.00 1.00 - - - - - - vbroadcastss (%rax), %ymm2
1814 # CHECK-NEXT: - - - 1.00 - 1.00 - - - - - - - - vcmppd $0, %xmm0, %xmm1, %xmm2
1815 # CHECK-NEXT: - - - 1.00 - 1.00 - 1.00 - - - - - - vcmppd $0, (%rax), %xmm1, %xmm2
1816 # CHECK-NEXT: - - - 2.00 - 2.00 - - - - - - - - vcmppd $0, %ymm0, %ymm1, %ymm2
1817 # CHECK-NEXT: - - - 2.00 - 2.00 - 2.00 - - - - - - vcmppd $0, (%rax), %ymm1, %ymm2
1818 # CHECK-NEXT: - - - 1.00 - 1.00 - - - - - - - - vcmpps $0, %xmm0, %xmm1, %xmm2
1819 # CHECK-NEXT: - - - 1.00 - 1.00 - 1.00 - - - - - - vcmpps $0, (%rax), %xmm1, %xmm2
1820 # CHECK-NEXT: - - - 2.00 - 2.00 - - - - - - - - vcmpps $0, %ymm0, %ymm1, %ymm2
1821 # CHECK-NEXT: - - - 2.00 - 2.00 - 2.00 - - - - - - vcmpps $0, (%rax), %ymm1, %ymm2
1822 # CHECK-NEXT: - - - 1.00 - 1.00 - - - - - - - - vcmpsd $0, %xmm0, %xmm1, %xmm2
1823 # CHECK-NEXT: - - - 1.00 - 1.00 - 1.00 - - - - - - vcmpsd $0, (%rax), %xmm1, %xmm2
1824 # CHECK-NEXT: - - - 1.00 - 1.00 - - - - - - - - vcmpss $0, %xmm0, %xmm1, %xmm2
1825 # CHECK-NEXT: - - - 1.00 - 1.00 - 1.00 - - - - - - vcmpss $0, (%rax), %xmm1, %xmm2
1814 # CHECK-NEXT: - - - 1.00 - 1.00 - - - - - - - - vcmpeqpd %xmm0, %xmm1, %xmm2
1815 # CHECK-NEXT: - - - 1.00 - 1.00 - 1.00 - - - - - - vcmpeqpd (%rax), %xmm1, %xmm2
1816 # CHECK-NEXT: - - - 2.00 - 2.00 - - - - - - - - vcmpeqpd %ymm0, %ymm1, %ymm2
1817 # CHECK-NEXT: - - - 2.00 - 2.00 - 2.00 - - - - - - vcmpeqpd (%rax), %ymm1, %ymm2
1818 # CHECK-NEXT: - - - 1.00 - 1.00 - - - - - - - - vcmpeqps %xmm0, %xmm1, %xmm2
1819 # CHECK-NEXT: - - - 1.00 - 1.00 - 1.00 - - - - - - vcmpeqps (%rax), %xmm1, %xmm2
1820 # CHECK-NEXT: - - - 2.00 - 2.00 - - - - - - - - vcmpeqps %ymm0, %ymm1, %ymm2
1821 # CHECK-NEXT: - - - 2.00 - 2.00 - 2.00 - - - - - - vcmpeqps (%rax), %ymm1, %ymm2
1822 # CHECK-NEXT: - - - 1.00 - 1.00 - - - - - - - - vcmpeqsd %xmm0, %xmm1, %xmm2
1823 # CHECK-NEXT: - - - 1.00 - 1.00 - 1.00 - - - - - - vcmpeqsd (%rax), %xmm1, %xmm2
1824 # CHECK-NEXT: - - - 1.00 - 1.00 - - - - - - - - vcmpeqss %xmm0, %xmm1, %xmm2
1825 # CHECK-NEXT: - - - 1.00 - 1.00 - 1.00 - - - - - - vcmpeqss (%rax), %xmm1, %xmm2
18261826 # CHECK-NEXT: 1.00 - - 1.00 - 1.00 - - - - - - - - vcomisd %xmm0, %xmm1
18271827 # CHECK-NEXT: 1.00 - - 1.00 - 1.00 - 1.00 - - - - - - vcomisd (%rax), %xmm1
18281828 # CHECK-NEXT: 1.00 - - 1.00 - 1.00 - - - - - - - - vcomiss %xmm0, %xmm1
201201 # CHECK-NEXT: 1 6 1.00 * andnps (%rax), %xmm2
202202 # CHECK-NEXT: 1 1 0.50 andps %xmm0, %xmm2
203203 # CHECK-NEXT: 1 6 1.00 * andps (%rax), %xmm2
204 # CHECK-NEXT: 1 2 1.00 cmpps $0, %xmm0, %xmm2
205 # CHECK-NEXT: 1 7 1.00 * cmpps $0, (%rax), %xmm2
206 # CHECK-NEXT: 1 2 1.00 cmpss $0, %xmm0, %xmm2
207 # CHECK-NEXT: 1 7 1.00 * cmpss $0, (%rax), %xmm2
204 # CHECK-NEXT: 1 2 1.00 cmpeqps %xmm0, %xmm2
205 # CHECK-NEXT: 1 7 1.00 * cmpeqps (%rax), %xmm2
206 # CHECK-NEXT: 1 2 1.00 cmpeqss %xmm0, %xmm2
207 # CHECK-NEXT: 1 7 1.00 * cmpeqss (%rax), %xmm2
208208 # CHECK-NEXT: 1 3 1.00 comiss %xmm0, %xmm1
209209 # CHECK-NEXT: 1 8 1.00 * comiss (%rax), %xmm1
210210 # CHECK-NEXT: 1 3 1.00 cvtpi2ps %mm0, %xmm2
348348 # CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 1.00 - - - - - - andnps (%rax), %xmm2
349349 # CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 - - - - - - - andps %xmm0, %xmm2
350350 # CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 1.00 - - - - - - andps (%rax), %xmm2
351 # CHECK-NEXT: - - - 1.00 - 1.00 - - - - - - - - cmpps $0, %xmm0, %xmm2
352 # CHECK-NEXT: - - - 1.00 - 1.00 - 1.00 - - - - - - cmpps $0, (%rax), %xmm2
353 # CHECK-NEXT: - - - 1.00 - 1.00 - - - - - - - - cmpss $0, %xmm0, %xmm2
354 # CHECK-NEXT: - - - 1.00 - 1.00 - 1.00 - - - - - - cmpss $0, (%rax), %xmm2
351 # CHECK-NEXT: - - - 1.00 - 1.00 - - - - - - - - cmpeqps %xmm0, %xmm2
352 # CHECK-NEXT: - - - 1.00 - 1.00 - 1.00 - - - - - - cmpeqps (%rax), %xmm2
353 # CHECK-NEXT: - - - 1.00 - 1.00 - - - - - - - - cmpeqss %xmm0, %xmm2
354 # CHECK-NEXT: - - - 1.00 - 1.00 - 1.00 - - - - - - cmpeqss (%rax), %xmm2
355355 # CHECK-NEXT: 1.00 - - 1.00 - 1.00 - - - - - - - - comiss %xmm0, %xmm1
356356 # CHECK-NEXT: 1.00 - - 1.00 - 1.00 - 1.00 - - - - - - comiss (%rax), %xmm1
357357 # CHECK-NEXT: - - - - - - 1.00 - - - 1.00 - - - cvtpi2ps %mm0, %xmm2
415415 # CHECK-NEXT: 1 1 0.50 andpd %xmm0, %xmm2
416416 # CHECK-NEXT: 1 6 1.00 * andpd (%rax), %xmm2
417417 # CHECK-NEXT: 1 3 1.00 * * U clflush (%rax)
418 # CHECK-NEXT: 1 2 1.00 cmppd $0, %xmm0, %xmm2
419 # CHECK-NEXT: 1 7 1.00 * cmppd $0, (%rax), %xmm2
420 # CHECK-NEXT: 1 2 1.00 cmpsd $0, %xmm0, %xmm2
421 # CHECK-NEXT: 1 7 1.00 * cmpsd $0, (%rax), %xmm2
418 # CHECK-NEXT: 1 2 1.00 cmpeqpd %xmm0, %xmm2
419 # CHECK-NEXT: 1 7 1.00 * cmpeqpd (%rax), %xmm2
420 # CHECK-NEXT: 1 2 1.00 cmpeqsd %xmm0, %xmm2
421 # CHECK-NEXT: 1 7 1.00 * cmpeqsd (%rax), %xmm2
422422 # CHECK-NEXT: 1 3 1.00 comisd %xmm0, %xmm1
423423 # CHECK-NEXT: 1 8 1.00 * comisd (%rax), %xmm1
424424 # CHECK-NEXT: 1 3 1.00 cvtdq2pd %xmm0, %xmm2
705705 # CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 - - - - - - - andpd %xmm0, %xmm2
706706 # CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 1.00 - - - - - - andpd (%rax), %xmm2
707707 # CHECK-NEXT: - - - - - - - 1.00 - - - - - - clflush (%rax)
708 # CHECK-NEXT: - - - 1.00 - 1.00 - - - - - - - - cmppd $0, %xmm0, %xmm2
709 # CHECK-NEXT: - - - 1.00 - 1.00 - 1.00 - - - - - - cmppd $0, (%rax), %xmm2
710 # CHECK-NEXT: - - - 1.00 - 1.00 - - - - - - - - cmpsd $0, %xmm0, %xmm2
711 # CHECK-NEXT: - - - 1.00 - 1.00 - 1.00 - - - - - - cmpsd $0, (%rax), %xmm2
708 # CHECK-NEXT: - - - 1.00 - 1.00 - - - - - - - - cmpeqpd %xmm0, %xmm2
709 # CHECK-NEXT: - - - 1.00 - 1.00 - 1.00 - - - - - - cmpeqpd (%rax), %xmm2
710 # CHECK-NEXT: - - - 1.00 - 1.00 - - - - - - - - cmpeqsd %xmm0, %xmm2
711 # CHECK-NEXT: - - - 1.00 - 1.00 - 1.00 - - - - - - cmpeqsd (%rax), %xmm2
712712 # CHECK-NEXT: 1.00 - - 1.00 - 1.00 - - - - - - - - comisd %xmm0, %xmm1
713713 # CHECK-NEXT: 1.00 - - 1.00 - 1.00 - 1.00 - - - - - - comisd (%rax), %xmm1
714714 # CHECK-NEXT: - - - - - - 1.00 - - - 1.00 - - - cvtdq2pd %xmm0, %xmm2
10971097 # CHECK-NEXT: 1 7 0.50 * vbroadcastsd (%rax), %ymm2
10981098 # CHECK-NEXT: 1 6 0.50 * vbroadcastss (%rax), %xmm2
10991099 # CHECK-NEXT: 1 7 0.50 * vbroadcastss (%rax), %ymm2
1100 # CHECK-NEXT: 1 3 1.00 vcmppd $0, %xmm0, %xmm1, %xmm2
1101 # CHECK-NEXT: 2 9 1.00 * vcmppd $0, (%rax), %xmm1, %xmm2
1102 # CHECK-NEXT: 1 3 1.00 vcmppd $0, %ymm0, %ymm1, %ymm2
1103 # CHECK-NEXT: 2 10 1.00 * vcmppd $0, (%rax), %ymm1, %ymm2
1104 # CHECK-NEXT: 1 3 1.00 vcmpps $0, %xmm0, %xmm1, %xmm2
1105 # CHECK-NEXT: 2 9 1.00 * vcmpps $0, (%rax), %xmm1, %xmm2
1106 # CHECK-NEXT: 1 3 1.00 vcmpps $0, %ymm0, %ymm1, %ymm2
1107 # CHECK-NEXT: 2 10 1.00 * vcmpps $0, (%rax), %ymm1, %ymm2
1108 # CHECK-NEXT: 1 3 1.00 vcmpsd $0, %xmm0, %xmm1, %xmm2
1109 # CHECK-NEXT: 2 9 1.00 * vcmpsd $0, (%rax), %xmm1, %xmm2
1110 # CHECK-NEXT: 1 3 1.00 vcmpss $0, %xmm0, %xmm1, %xmm2
1111 # CHECK-NEXT: 2 9 1.00 * vcmpss $0, (%rax), %xmm1, %xmm2
1100 # CHECK-NEXT: 1 3 1.00 vcmpeqpd %xmm0, %xmm1, %xmm2
1101 # CHECK-NEXT: 2 9 1.00 * vcmpeqpd (%rax), %xmm1, %xmm2
1102 # CHECK-NEXT: 1 3 1.00 vcmpeqpd %ymm0, %ymm1, %ymm2
1103 # CHECK-NEXT: 2 10 1.00 * vcmpeqpd (%rax), %ymm1, %ymm2
1104 # CHECK-NEXT: 1 3 1.00 vcmpeqps %xmm0, %xmm1, %xmm2
1105 # CHECK-NEXT: 2 9 1.00 * vcmpeqps (%rax), %xmm1, %xmm2
1106 # CHECK-NEXT: 1 3 1.00 vcmpeqps %ymm0, %ymm1, %ymm2
1107 # CHECK-NEXT: 2 10 1.00 * vcmpeqps (%rax), %ymm1, %ymm2
1108 # CHECK-NEXT: 1 3 1.00 vcmpeqsd %xmm0, %xmm1, %xmm2
1109 # CHECK-NEXT: 2 9 1.00 * vcmpeqsd (%rax), %xmm1, %xmm2
1110 # CHECK-NEXT: 1 3 1.00 vcmpeqss %xmm0, %xmm1, %xmm2
1111 # CHECK-NEXT: 2 9 1.00 * vcmpeqss (%rax), %xmm1, %xmm2
11121112 # CHECK-NEXT: 2 2 1.00 vcomisd %xmm0, %xmm1
11131113 # CHECK-NEXT: 3 8 1.00 * vcomisd (%rax), %xmm1
11141114 # CHECK-NEXT: 2 2 1.00 vcomiss %xmm0, %xmm1
18051805 # CHECK-NEXT: - - - - - - 0.50 0.50 vbroadcastsd (%rax), %ymm2
18061806 # CHECK-NEXT: - - - - - - 0.50 0.50 vbroadcastss (%rax), %xmm2
18071807 # CHECK-NEXT: - - - - - - 0.50 0.50 vbroadcastss (%rax), %ymm2
1808 # CHECK-NEXT: - - - 1.00 - - - - vcmppd $0, %xmm0, %xmm1, %xmm2
1809 # CHECK-NEXT: - - - 1.00 - - 0.50 0.50 vcmppd $0, (%rax), %xmm1, %xmm2
1810 # CHECK-NEXT: - - - 1.00 - - - - vcmppd $0, %ymm0, %ymm1, %ymm2
1811 # CHECK-NEXT: - - - 1.00 - - 0.50 0.50 vcmppd $0, (%rax), %ymm1, %ymm2
1812 # CHECK-NEXT: - - - 1.00 - - - - vcmpps $0, %xmm0, %xmm1, %xmm2
1813 # CHECK-NEXT: - - - 1.00 - - 0.50 0.50 vcmpps $0, (%rax), %xmm1, %xmm2
1814 # CHECK-NEXT: - - - 1.00 - - - - vcmpps $0, %ymm0, %ymm1, %ymm2
1815 # CHECK-NEXT: - - - 1.00 - - 0.50 0.50 vcmpps $0, (%rax), %ymm1, %ymm2
1816 # CHECK-NEXT: - - - 1.00 - - - - vcmpsd $0, %xmm0, %xmm1, %xmm2
1817 # CHECK-NEXT: - - - 1.00 - - 0.50 0.50 vcmpsd $0, (%rax), %xmm1, %xmm2
1818 # CHECK-NEXT: - - - 1.00 - - - - vcmpss $0, %xmm0, %xmm1, %xmm2
1819 # CHECK-NEXT: - - - 1.00 - - 0.50 0.50 vcmpss $0, (%rax), %xmm1, %xmm2
1808 # CHECK-NEXT: - - - 1.00 - - - - vcmpeqpd %xmm0, %xmm1, %xmm2
1809 # CHECK-NEXT: - - - 1.00 - - 0.50 0.50 vcmpeqpd (%rax), %xmm1, %xmm2
1810 # CHECK-NEXT: - - - 1.00 - - - - vcmpeqpd %ymm0, %ymm1, %ymm2
1811 # CHECK-NEXT: - - - 1.00 - - 0.50 0.50 vcmpeqpd (%rax), %ymm1, %ymm2
1812 # CHECK-NEXT: - - - 1.00 - - - - vcmpeqps %xmm0, %xmm1, %xmm2
1813 # CHECK-NEXT: - - - 1.00 - - 0.50 0.50 vcmpeqps (%rax), %xmm1, %xmm2
1814 # CHECK-NEXT: - - - 1.00 - - - - vcmpeqps %ymm0, %ymm1, %ymm2
1815 # CHECK-NEXT: - - - 1.00 - - 0.50 0.50 vcmpeqps (%rax), %ymm1, %ymm2
1816 # CHECK-NEXT: - - - 1.00 - - - - vcmpeqsd %xmm0, %xmm1, %xmm2
1817 # CHECK-NEXT: - - - 1.00 - - 0.50 0.50 vcmpeqsd (%rax), %xmm1, %xmm2
1818 # CHECK-NEXT: - - - 1.00 - - - - vcmpeqss %xmm0, %xmm1, %xmm2
1819 # CHECK-NEXT: - - - 1.00 - - 0.50 0.50 vcmpeqss (%rax), %xmm1, %xmm2
18201820 # CHECK-NEXT: - - 1.00 1.00 - - - - vcomisd %xmm0, %xmm1
18211821 # CHECK-NEXT: - - 1.00 1.00 - - 0.50 0.50 vcomisd (%rax), %xmm1
18221822 # CHECK-NEXT: - - 1.00 1.00 - - - - vcomiss %xmm0, %xmm1
201201 # CHECK-NEXT: 2 7 1.00 * andnps (%rax), %xmm2
202202 # CHECK-NEXT: 1 1 1.00 andps %xmm0, %xmm2
203203 # CHECK-NEXT: 2 7 1.00 * andps (%rax), %xmm2
204 # CHECK-NEXT: 1 3 1.00 cmpps $0, %xmm0, %xmm2
205 # CHECK-NEXT: 2 9 1.00 * cmpps $0, (%rax), %xmm2
206 # CHECK-NEXT: 1 3 1.00 cmpss $0, %xmm0, %xmm2
207 # CHECK-NEXT: 2 9 1.00 * cmpss $0, (%rax), %xmm2
204 # CHECK-NEXT: 1 3 1.00 cmpeqps %xmm0, %xmm2
205 # CHECK-NEXT: 2 9 1.00 * cmpeqps (%rax), %xmm2
206 # CHECK-NEXT: 1 3 1.00 cmpeqss %xmm0, %xmm2
207 # CHECK-NEXT: 2 9 1.00 * cmpeqss (%rax), %xmm2
208208 # CHECK-NEXT: 2 2 1.00 comiss %xmm0, %xmm1
209209 # CHECK-NEXT: 3 8 1.00 * comiss (%rax), %xmm1
210210 # CHECK-NEXT: 1 3 1.00 cvtpi2ps %mm0, %xmm2
342342 # CHECK-NEXT: - - - - - 1.00 0.50 0.50 andnps (%rax), %xmm2
343343 # CHECK-NEXT: - - - - - 1.00 - - andps %xmm0, %xmm2
344344 # CHECK-NEXT: - - - - - 1.00 0.50 0.50 andps (%rax), %xmm2
345 # CHECK-NEXT: - - - 1.00 - - - - cmpps $0, %xmm0, %xmm2
346 # CHECK-NEXT: - - - 1.00 - - 0.50 0.50 cmpps $0, (%rax), %xmm2
347 # CHECK-NEXT: - - - 1.00 - - - - cmpss $0, %xmm0, %xmm2
348 # CHECK-NEXT: - - - 1.00 - - 0.50 0.50 cmpss $0, (%rax), %xmm2
345 # CHECK-NEXT: - - - 1.00 - - - - cmpeqps %xmm0, %xmm2
346 # CHECK-NEXT: - - - 1.00 - - 0.50 0.50 cmpeqps (%rax), %xmm2
347 # CHECK-NEXT: - - - 1.00 - - - - cmpeqss %xmm0, %xmm2
348 # CHECK-NEXT: - - - 1.00 - - 0.50 0.50 cmpeqss (%rax), %xmm2
349349 # CHECK-NEXT: - - 1.00 1.00 - - - - comiss %xmm0, %xmm1
350350 # CHECK-NEXT: - - 1.00 1.00 - - 0.50 0.50 comiss (%rax), %xmm1
351351 # CHECK-NEXT: - - - 1.00 - - - - cvtpi2ps %mm0, %xmm2
415415 # CHECK-NEXT: 1 1 1.00 andpd %xmm0, %xmm2
416416 # CHECK-NEXT: 2 7 1.00 * andpd (%rax), %xmm2
417417 # CHECK-NEXT: 4 5 1.00 * * U clflush (%rax)
418 # CHECK-NEXT: 1 3 1.00 cmppd $0, %xmm0, %xmm2
419 # CHECK-NEXT: 2 9 1.00 * cmppd $0, (%rax), %xmm2
420 # CHECK-NEXT: 1 3 1.00 cmpsd $0, %xmm0, %xmm2
421 # CHECK-NEXT: 2 9 1.00 * cmpsd $0, (%rax), %xmm2
418 # CHECK-NEXT: 1 3 1.00 cmpeqpd %xmm0, %xmm2
419 # CHECK-NEXT: 2 9 1.00 * cmpeqpd (%rax), %xmm2
420 # CHECK-NEXT: 1 3 1.00 cmpeqsd %xmm0, %xmm2
421 # CHECK-NEXT: 2 9 1.00 * cmpeqsd (%rax), %xmm2
422422 # CHECK-NEXT: 2 2 1.00 comisd %xmm0, %xmm1
423423 # CHECK-NEXT: 3 8 1.00 * comisd (%rax), %xmm1
424424 # CHECK-NEXT: 2 4 1.00 cvtdq2pd %xmm0, %xmm2
699699 # CHECK-NEXT: - - - - - 1.00 - - andpd %xmm0, %xmm2
700700 # CHECK-NEXT: - - - - - 1.00 0.50 0.50 andpd (%rax), %xmm2
701701 # CHECK-NEXT: - - 0.50 0.50 1.00 1.00 0.50 0.50 clflush (%rax)
702 # CHECK-NEXT: - - - 1.00 - - - - cmppd $0, %xmm0, %xmm2
703 # CHECK-NEXT: - - - 1.00 - - 0.50 0.50 cmppd $0, (%rax), %xmm2
704 # CHECK-NEXT: - - - 1.00 - - - - cmpsd $0, %xmm0, %xmm2
705 # CHECK-NEXT: - - - 1.00 - - 0.50 0.50 cmpsd $0, (%rax), %xmm2
702 # CHECK-NEXT: - - - 1.00 - - - - cmpeqpd %xmm0, %xmm2
703 # CHECK-NEXT: - - - 1.00 - - 0.50 0.50 cmpeqpd (%rax), %xmm2
704 # CHECK-NEXT: - - - 1.00 - - - - cmpeqsd %xmm0, %xmm2
705 # CHECK-NEXT: - - - 1.00 - - 0.50 0.50 cmpeqsd (%rax), %xmm2
706706 # CHECK-NEXT: - - 1.00 1.00 - - - - comisd %xmm0, %xmm1
707707 # CHECK-NEXT: - - 1.00 1.00 - - 0.50 0.50 comisd (%rax), %xmm1
708708 # CHECK-NEXT: - - - 1.00 - 1.00 - - cvtdq2pd %xmm0, %xmm2
10971097 # CHECK-NEXT: 1 7 0.50 * vbroadcastsd (%rax), %ymm2
10981098 # CHECK-NEXT: 1 6 0.50 * vbroadcastss (%rax), %xmm2
10991099 # CHECK-NEXT: 1 7 0.50 * vbroadcastss (%rax), %ymm2
1100 # CHECK-NEXT: 1 3 1.00 vcmppd $0, %xmm0, %xmm1, %xmm2
1101 # CHECK-NEXT: 2 9 1.00 * vcmppd $0, (%rax), %xmm1, %xmm2
1102 # CHECK-NEXT: 1 3 1.00 vcmppd $0, %ymm0, %ymm1, %ymm2
1103 # CHECK-NEXT: 2 10 1.00 * vcmppd $0, (%rax), %ymm1, %ymm2
1104 # CHECK-NEXT: 1 3 1.00 vcmpps $0, %xmm0, %xmm1, %xmm2
1105 # CHECK-NEXT: 2 9 1.00 * vcmpps $0, (%rax), %xmm1, %xmm2
1106 # CHECK-NEXT: 1 3 1.00 vcmpps $0, %ymm0, %ymm1, %ymm2
1107 # CHECK-NEXT: 2 10 1.00 * vcmpps $0, (%rax), %ymm1, %ymm2
1108 # CHECK-NEXT: 1 3 1.00 vcmpsd $0, %xmm0, %xmm1, %xmm2
1109 # CHECK-NEXT: 2 8 1.00 * vcmpsd $0, (%rax), %xmm1, %xmm2
1110 # CHECK-NEXT: 1 3 1.00 vcmpss $0, %xmm0, %xmm1, %xmm2
1111 # CHECK-NEXT: 2 8 1.00 * vcmpss $0, (%rax), %xmm1, %xmm2
1100 # CHECK-NEXT: 1 3 1.00 vcmpeqpd %xmm0, %xmm1, %xmm2
1101 # CHECK-NEXT: 2 9 1.00 * vcmpeqpd (%rax), %xmm1, %xmm2
1102 # CHECK-NEXT: 1 3 1.00 vcmpeqpd %ymm0, %ymm1, %ymm2
1103 # CHECK-NEXT: 2 10 1.00 * vcmpeqpd (%rax), %ymm1, %ymm2
1104 # CHECK-NEXT: 1 3 1.00 vcmpeqps %xmm0, %xmm1, %xmm2
1105 # CHECK-NEXT: 2 9 1.00 * vcmpeqps (%rax), %xmm1, %xmm2
1106 # CHECK-NEXT: 1 3 1.00 vcmpeqps %ymm0, %ymm1, %ymm2
1107 # CHECK-NEXT: 2 10 1.00 * vcmpeqps (%rax), %ymm1, %ymm2
1108 # CHECK-NEXT: 1 3 1.00 vcmpeqsd %xmm0, %xmm1, %xmm2
1109 # CHECK-NEXT: 2 8 1.00 * vcmpeqsd (%rax), %xmm1, %xmm2
1110 # CHECK-NEXT: 1 3 1.00 vcmpeqss %xmm0, %xmm1, %xmm2
1111 # CHECK-NEXT: 2 8 1.00 * vcmpeqss (%rax), %xmm1, %xmm2
11121112 # CHECK-NEXT: 1 3 1.00 vcomisd %xmm0, %xmm1
11131113 # CHECK-NEXT: 2 8 1.00 * vcomisd (%rax), %xmm1
11141114 # CHECK-NEXT: 1 3 1.00 vcomiss %xmm0, %xmm1
18071807 # CHECK-NEXT: - - - - 0.50 0.50 - - - - vbroadcastsd (%rax), %ymm2
18081808 # CHECK-NEXT: - - - - 0.50 0.50 - - - - vbroadcastss (%rax), %xmm2
18091809 # CHECK-NEXT: - - - - 0.50 0.50 - - - - vbroadcastss (%rax), %ymm2
1810 # CHECK-NEXT: - - - 1.00 - - - - - - vcmppd $0, %xmm0, %xmm1, %xmm2
1811 # CHECK-NEXT: - - - 1.00 0.50 0.50 - - - - vcmppd $0, (%rax), %xmm1, %xmm2
1812 # CHECK-NEXT: - - - 1.00 - - - - - - vcmppd $0, %ymm0, %ymm1, %ymm2
1813 # CHECK-NEXT: - - - 1.00 0.50 0.50 - - - - vcmppd $0, (%rax), %ymm1, %ymm2
1814 # CHECK-NEXT: - - - 1.00 - - - - - - vcmpps $0, %xmm0, %xmm1, %xmm2
1815 # CHECK-NEXT: - - - 1.00 0.50 0.50 - - - - vcmpps $0, (%rax), %xmm1, %xmm2
1816 # CHECK-NEXT: - - - 1.00 - - - - - - vcmpps $0, %ymm0, %ymm1, %ymm2
1817 # CHECK-NEXT: - - - 1.00 0.50 0.50 - - - - vcmpps $0, (%rax), %ymm1, %ymm2
1818 # CHECK-NEXT: - - - 1.00 - - - - - - vcmpsd $0, %xmm0, %xmm1, %xmm2
1819 # CHECK-NEXT: - - - 1.00 0.50 0.50 - - - - vcmpsd $0, (%rax), %xmm1, %xmm2
1820 # CHECK-NEXT: - - - 1.00 - - - - - - vcmpss $0, %xmm0, %xmm1, %xmm2
1821 # CHECK-NEXT: - - - 1.00 0.50 0.50 - - - - vcmpss $0, (%rax), %xmm1, %xmm2
1810 # CHECK-NEXT: - - - 1.00 - - - - - - vcmpeqpd %xmm0, %xmm1, %xmm2
1811 # CHECK-NEXT: - - - 1.00 0.50 0.50 - - - - vcmpeqpd (%rax), %xmm1, %xmm2
1812 # CHECK-NEXT: - - - 1.00 - - - - - - vcmpeqpd %ymm0, %ymm1, %ymm2
1813 # CHECK-NEXT: - - - 1.00 0.50 0.50 - - - - vcmpeqpd (%rax), %ymm1, %ymm2
1814 # CHECK-NEXT: - - - 1.00 - - - - - - vcmpeqps %xmm0, %xmm1, %xmm2
1815 # CHECK-NEXT: - - - 1.00 0.50 0.50 - - - - vcmpeqps (%rax), %xmm1, %xmm2
1816 # CHECK-NEXT: - - - 1.00 - - - - - - vcmpeqps %ymm0, %ymm1, %ymm2
1817 # CHECK-NEXT: - - - 1.00 0.50 0.50 - - - - vcmpeqps (%rax), %ymm1, %ymm2
1818 # CHECK-NEXT: - - - 1.00 - - - - - - vcmpeqsd %xmm0, %xmm1, %xmm2
1819 # CHECK-NEXT: - - - 1.00 0.50 0.50 - - - - vcmpeqsd (%rax), %xmm1, %xmm2
1820 # CHECK-NEXT: - - - 1.00 - - - - - - vcmpeqss %xmm0, %xmm1, %xmm2
1821 # CHECK-NEXT: - - - 1.00 0.50 0.50 - - - - vcmpeqss (%rax), %xmm1, %xmm2
18221822 # CHECK-NEXT: - - - 1.00 - - - - - - vcomisd %xmm0, %xmm1
18231823 # CHECK-NEXT: - - - 1.00 0.50 0.50 - - - - vcomisd (%rax), %xmm1
18241824 # CHECK-NEXT: - - - 1.00 - - - - - - vcomiss %xmm0, %xmm1
201201 # CHECK-NEXT: 2 7 1.00 * andnps (%rax), %xmm2
202202 # CHECK-NEXT: 1 1 1.00 andps %xmm0, %xmm2
203203 # CHECK-NEXT: 2 7 1.00 * andps (%rax), %xmm2
204 # CHECK-NEXT: 1 3 1.00 cmpps $0, %xmm0, %xmm2
205 # CHECK-NEXT: 2 9 1.00 * cmpps $0, (%rax), %xmm2
206 # CHECK-NEXT: 1 3 1.00 cmpss $0, %xmm0, %xmm2
207 # CHECK-NEXT: 2 8 1.00 * cmpss $0, (%rax), %xmm2
204 # CHECK-NEXT: 1 3 1.00 cmpeqps %xmm0, %xmm2
205 # CHECK-NEXT: 2 9 1.00 * cmpeqps (%rax), %xmm2
206 # CHECK-NEXT: 1 3 1.00 cmpeqss %xmm0, %xmm2
207 # CHECK-NEXT: 2 8 1.00 * cmpeqss (%rax), %xmm2
208208 # CHECK-NEXT: 1 3 1.00 comiss %xmm0, %xmm1
209209 # CHECK-NEXT: 2 8 1.00 * comiss (%rax), %xmm1
210210 # CHECK-NEXT: 1 3 1.00 cvtpi2ps %mm0, %xmm2
344344 # CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - andnps (%rax), %xmm2
345345 # CHECK-NEXT: - - - - - - - 1.00 - - andps %xmm0, %xmm2
346346 # CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - andps (%rax), %xmm2
347 # CHECK-NEXT: - - - 1.00 - - - - - - cmpps $0, %xmm0, %xmm2
348 # CHECK-NEXT: - - - 1.00 0.50 0.50 - - - - cmpps $0, (%rax), %xmm2
349 # CHECK-NEXT: - - - 1.00 - - - - - - cmpss $0, %xmm0, %xmm2
350 # CHECK-NEXT: - - - 1.00 0.50 0.50 - - - - cmpss $0, (%rax), %xmm2
347 # CHECK-NEXT: - - - 1.00 - - - - - - cmpeqps %xmm0, %xmm2
348 # CHECK-NEXT: - - - 1.00 0.50 0.50 - - - - cmpeqps (%rax), %xmm2
349 # CHECK-NEXT: - - - 1.00 - - - - - - cmpeqss %xmm0, %xmm2
350 # CHECK-NEXT: - - - 1.00 0.50 0.50 - - - - cmpeqss (%rax), %xmm2
351351 # CHECK-NEXT: - - - 1.00 - - - - - - comiss %xmm0, %xmm1
352352 # CHECK-NEXT: - - - 1.00 0.50 0.50 - - - - comiss (%rax), %xmm1
353353 # CHECK-NEXT: - - - 1.00 - - - - - - cvtpi2ps %mm0, %xmm2
415415 # CHECK-NEXT: 1 1 1.00 andpd %xmm0, %xmm2
416416 # CHECK-NEXT: 2 7 1.00 * andpd (%rax), %xmm2
417417 # CHECK-NEXT: 2 2 1.00 * * U clflush (%rax)
418 # CHECK-NEXT: 1 3 1.00 cmppd $0, %xmm0, %xmm2
419 # CHECK-NEXT: 2 9 1.00 * cmppd $0, (%rax), %xmm2
420 # CHECK-NEXT: 1 3 1.00 cmpsd $0, %xmm0, %xmm2
421 # CHECK-NEXT: 2 8 1.00 * cmpsd $0, (%rax), %xmm2
418 # CHECK-NEXT: 1 3 1.00 cmpeqpd %xmm0, %xmm2
419 # CHECK-NEXT: 2 9 1.00 * cmpeqpd (%rax), %xmm2
420 # CHECK-NEXT: 1 3 1.00 cmpeqsd %xmm0, %xmm2
421 # CHECK-NEXT: 2 8 1.00 * cmpeqsd (%rax), %xmm2
422422 # CHECK-NEXT: 1 3 1.00 comisd %xmm0, %xmm1
423423 # CHECK-NEXT: 2 8 1.00 * comisd (%rax), %xmm1
424424 # CHECK-NEXT: 2 4 1.00 cvtdq2pd %xmm0, %xmm2
701701 # CHECK-NEXT: - - - - - - - 1.00 - - andpd %xmm0, %xmm2
702702 # CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - andpd (%rax), %xmm2
703703 # CHECK-NEXT: - - 0.25 0.25 - - - 0.25 1.25 - clflush (%rax)
704 # CHECK-NEXT: - - - 1.00 - - - - - - cmppd $0, %xmm0, %xmm2
705 # CHECK-NEXT: - - - 1.00 0.50 0.50 - - - - cmppd $0, (%rax), %xmm2
706 # CHECK-NEXT: - - - 1.00 - - - - - - cmpsd $0, %xmm0, %xmm2
707 # CHECK-NEXT: - - - 1.00 0.50 0.50 - - - - cmpsd $0, (%rax), %xmm2
704 # CHECK-NEXT: - - - 1.00 - - - - - - cmpeqpd %xmm0, %xmm2
705 # CHECK-NEXT: - - - 1.00 0.50 0.50 - - - - cmpeqpd (%rax), %xmm2
706 # CHECK-NEXT: - - - 1.00 - - - - - - cmpeqsd %xmm0, %xmm2
707 # CHECK-NEXT: - - - 1.00 0.50 0.50 - - - - cmpeqsd (%rax), %xmm2
708708 # CHECK-NEXT: - - - 1.00 - - - - - - comisd %xmm0, %xmm1
709709 # CHECK-NEXT: - - - 1.00 0.50 0.50 - - - - comisd (%rax), %xmm1
710710 # CHECK-NEXT: - - - 1.00 - - - 1.00 - - cvtdq2pd %xmm0, %xmm2
201201 # CHECK-NEXT: 1 4 1.00 * andnps (%rax), %xmm2
202202 # CHECK-NEXT: 1 1 0.50 andps %xmm0, %xmm2
203203 # CHECK-NEXT: 1 4 1.00 * andps (%rax), %xmm2
204 # CHECK-NEXT: 1 3 1.00 cmpps $0, %xmm0, %xmm2
205 # CHECK-NEXT: 1 6 1.00 * cmpps $0, (%rax), %xmm2
206 # CHECK-NEXT: 1 3 1.00 cmpss $0, %xmm0, %xmm2
207 # CHECK-NEXT: 1 6 1.00 * cmpss $0, (%rax), %xmm2
204 # CHECK-NEXT: 1 3 1.00 cmpeqps %xmm0, %xmm2
205 # CHECK-NEXT: 1 6 1.00 * cmpeqps (%rax), %xmm2
206 # CHECK-NEXT: 1 3 1.00 cmpeqss %xmm0, %xmm2
207 # CHECK-NEXT: 1 6 1.00 * cmpeqss (%rax), %xmm2
208208 # CHECK-NEXT: 1 3 1.00 comiss %xmm0, %xmm1
209209 # CHECK-NEXT: 1 6 1.00 * comiss (%rax), %xmm1
210210 # CHECK-NEXT: 1 4 0.50 cvtpi2ps %mm0, %xmm2
342342 # CHECK-NEXT: - - - 0.50 0.50 - - 1.00 andnps (%rax), %xmm2
343343 # CHECK-NEXT: - - - 0.50 0.50 - - - andps %xmm0, %xmm2
344344 # CHECK-NEXT: - - - 0.50 0.50 - - 1.00 andps (%rax), %xmm2
345 # CHECK-NEXT: - - - - 1.00 - - - cmpps $0, %xmm0, %xmm2
346 # CHECK-NEXT: - - - - 1.00 - - 1.00 cmpps $0, (%rax), %xmm2
347 # CHECK-NEXT: - - - - 1.00 - - - cmpss $0, %xmm0, %xmm2
348 # CHECK-NEXT: - - - - 1.00 - - 1.00 cmpss $0, (%rax), %xmm2
345 # CHECK-NEXT: - - - - 1.00 - - - cmpeqps %xmm0, %xmm2
346 # CHECK-NEXT: - - - - 1.00 - - 1.00 cmpeqps (%rax), %xmm2
347 # CHECK-NEXT: - - - - 1.00 - - - cmpeqss %xmm0, %xmm2
348 # CHECK-NEXT: - - - - 1.00 - - 1.00 cmpeqss (%rax), %xmm2
349349 # CHECK-NEXT: - - - - 1.00 - - - comiss %xmm0, %xmm1
350350 # CHECK-NEXT: - - - - 1.00 - - 1.00 comiss (%rax), %xmm1
351351 # CHECK-NEXT: - - - 0.50 0.50 - - - cvtpi2ps %mm0, %xmm2
415415 # CHECK-NEXT: 1 1 0.50 andpd %xmm0, %xmm2
416416 # CHECK-NEXT: 1 4 1.00 * andpd (%rax), %xmm2
417417 # CHECK-NEXT: 1 3 1.00 * * U clflush (%rax)
418 # CHECK-NEXT: 1 3 1.00 cmppd $0, %xmm0, %xmm2
419 # CHECK-NEXT: 1 6 1.00 * cmppd $0, (%rax), %xmm2
420 # CHECK-NEXT: 1 3 1.00 cmpsd $0, %xmm0, %xmm2
421 # CHECK-NEXT: 1 6 1.00 * cmpsd $0, (%rax), %xmm2
418 # CHECK-NEXT: 1 3 1.00 cmpeqpd %xmm0, %xmm2
419 # CHECK-NEXT: 1 6 1.00 * cmpeqpd (%rax), %xmm2
420 # CHECK-NEXT: 1 3 1.00 cmpeqsd %xmm0, %xmm2
421 # CHECK-NEXT: 1 6 1.00 * cmpeqsd (%rax), %xmm2
422422 # CHECK-NEXT: 1 3 1.00 comisd %xmm0, %xmm1
423423 # CHECK-NEXT: 1 6 1.00 * comisd (%rax), %xmm1
424424 # CHECK-NEXT: 1 4 0.50 cvtdq2pd %xmm0, %xmm2
699699 # CHECK-NEXT: - - - 0.50 0.50 - - - andpd %xmm0, %xmm2
700700 # CHECK-NEXT: - - - 0.50 0.50 - - 1.00 andpd (%rax), %xmm2
701701 # CHECK-NEXT: - - - - - - - 1.00 clflush (%rax)
702 # CHECK-NEXT: - - - - 1.00 - - - cmppd $0, %xmm0, %xmm2
703 # CHECK-NEXT: - - - - 1.00 - - 1.00 cmppd $0, (%rax), %xmm2
704 # CHECK-NEXT: - - - - 1.00 - - - cmpsd $0, %xmm0, %xmm2
705 # CHECK-NEXT: - - - - 1.00 - - 1.00 cmpsd $0, (%rax), %xmm2
702 # CHECK-NEXT: - - - - 1.00 - - - cmpeqpd %xmm0, %xmm2
703 # CHECK-NEXT: - - - - 1.00 - - 1.00 cmpeqpd (%rax), %xmm2
704 # CHECK-NEXT: - - - - 1.00 - - - cmpeqsd %xmm0, %xmm2
705 # CHECK-NEXT: - - - - 1.00 - - 1.00 cmpeqsd (%rax), %xmm2
706706 # CHECK-NEXT: - - - - 1.00 - - - comisd %xmm0, %xmm1
707707 # CHECK-NEXT: - - - - 1.00 - - 1.00 comisd (%rax), %xmm1
708708 # CHECK-NEXT: - - - 0.50 0.50 - - - cvtdq2pd %xmm0, %xmm2
10971097 # CHECK-NEXT: 1 7 0.50 * vbroadcastsd (%rax), %ymm2
10981098 # CHECK-NEXT: 1 6 0.50 * vbroadcastss (%rax), %xmm2
10991099 # CHECK-NEXT: 1 7 0.50 * vbroadcastss (%rax), %ymm2
1100 # CHECK-NEXT: 1 3 1.00 vcmppd $0, %xmm0, %xmm1, %xmm2
1101 # CHECK-NEXT: 2 9 1.00 * vcmppd $0, (%rax), %xmm1, %xmm2
1102 # CHECK-NEXT: 1 3 1.00 vcmppd $0, %ymm0, %ymm1, %ymm2
1103 # CHECK-NEXT: 2 10 1.00 * vcmppd $0, (%rax), %ymm1, %ymm2
1104 # CHECK-NEXT: 1 3 1.00 vcmpps $0, %xmm0, %xmm1, %xmm2
1105 # CHECK-NEXT: 2 9 1.00 * vcmpps $0, (%rax), %xmm1, %xmm2
1106 # CHECK-NEXT: 1 3 1.00 vcmpps $0, %ymm0, %ymm1, %ymm2
1107 # CHECK-NEXT: 2 10 1.00 * vcmpps $0, (%rax), %ymm1, %ymm2
1108 # CHECK-NEXT: 1 3 1.00 vcmpsd $0, %xmm0, %xmm1, %xmm2
1109 # CHECK-NEXT: 2 9 1.00 * vcmpsd $0, (%rax), %xmm1, %xmm2
1110 # CHECK-NEXT: 1 3 1.00 vcmpss $0, %xmm0, %xmm1, %xmm2
1111 # CHECK-NEXT: 2 9 1.00 * vcmpss $0, (%rax), %xmm1, %xmm2
1100 # CHECK-NEXT: 1 3 1.00 vcmpeqpd %xmm0, %xmm1, %xmm2
1101 # CHECK-NEXT: 2 9 1.00 * vcmpeqpd (%rax), %xmm1, %xmm2
1102 # CHECK-NEXT: 1 3 1.00 vcmpeqpd %ymm0, %ymm1, %ymm2
1103 # CHECK-NEXT: 2 10 1.00 * vcmpeqpd (%rax), %ymm1, %ymm2
1104 # CHECK-NEXT: 1 3 1.00 vcmpeqps %xmm0, %xmm1, %xmm2
1105 # CHECK-NEXT: 2 9 1.00 * vcmpeqps (%rax), %xmm1, %xmm2
1106 # CHECK-NEXT: 1 3 1.00 vcmpeqps %ymm0, %ymm1, %ymm2
1107 # CHECK-NEXT: 2 10 1.00 * vcmpeqps (%rax), %ymm1, %ymm2
1108 # CHECK-NEXT: 1 3 1.00 vcmpeqsd %xmm0, %xmm1, %xmm2
1109 # CHECK-NEXT: 2 9 1.00 * vcmpeqsd (%rax), %xmm1, %xmm2
1110 # CHECK-NEXT: 1 3 1.00 vcmpeqss %xmm0, %xmm1, %xmm2
1111 # CHECK-NEXT: 2 9 1.00 * vcmpeqss (%rax), %xmm1, %xmm2
11121112 # CHECK-NEXT: 2 2 1.00 vcomisd %xmm0, %xmm1
11131113 # CHECK-NEXT: 3 8 1.00 * vcomisd (%rax), %xmm1
11141114 # CHECK-NEXT: 2 2 1.00 vcomiss %xmm0, %xmm1
18051805 # CHECK-NEXT: - - - - - - 0.50 0.50 vbroadcastsd (%rax), %ymm2
18061806 # CHECK-NEXT: - - - - - - 0.50 0.50 vbroadcastss (%rax), %xmm2
18071807 # CHECK-NEXT: - - - - - - 0.50 0.50 vbroadcastss (%rax), %ymm2
1808 # CHECK-NEXT: - - - 1.00 - - - - vcmppd $0, %xmm0, %xmm1, %xmm2
1809 # CHECK-NEXT: - - - 1.00 - - 0.50 0.50 vcmppd $0, (%rax), %xmm1, %xmm2
1810 # CHECK-NEXT: - - - 1.00 - - - - vcmppd $0, %ymm0, %ymm1, %ymm2
1811 # CHECK-NEXT: - - - 1.00 - - 0.50 0.50 vcmppd $0, (%rax), %ymm1, %ymm2
1812 # CHECK-NEXT: - - - 1.00 - - - - vcmpps $0, %xmm0, %xmm1, %xmm2
1813 # CHECK-NEXT: - - - 1.00 - - 0.50 0.50 vcmpps $0, (%rax), %xmm1, %xmm2
1814 # CHECK-NEXT: - - - 1.00 - - - - vcmpps $0, %ymm0, %ymm1, %ymm2
1815 # CHECK-NEXT: - - - 1.00 - - 0.50 0.50 vcmpps $0, (%rax), %ymm1, %ymm2
1816 # CHECK-NEXT: - - - 1.00 - - - - vcmpsd $0, %xmm0, %xmm1, %xmm2
1817 # CHECK-NEXT: - - - 1.00 - - 0.50 0.50 vcmpsd $0, (%rax), %xmm1, %xmm2
1818 # CHECK-NEXT: - - - 1.00 - - - - vcmpss $0, %xmm0, %xmm1, %xmm2
1819 # CHECK-NEXT: - - - 1.00 - - 0.50 0.50 vcmpss $0, (%rax), %xmm1, %xmm2
1808 # CHECK-NEXT: - - - 1.00 - - - - vcmpeqpd %xmm0, %xmm1, %xmm2
1809 # CHECK-NEXT: - - - 1.00 - - 0.50 0.50 vcmpeqpd (%rax), %xmm1, %xmm2
1810 # CHECK-NEXT: - - - 1.00 - - - - vcmpeqpd %ymm0, %ymm1, %ymm2
1811 # CHECK-NEXT: - - - 1.00 - - 0.50 0.50 vcmpeqpd (%rax), %ymm1, %ymm2
1812 # CHECK-NEXT: - - - 1.00 - - - - vcmpeqps %xmm0, %xmm1, %xmm2
1813 # CHECK-NEXT: - - - 1.00 - - 0.50 0.50 vcmpeqps (%rax), %xmm1, %xmm2
1814 # CHECK-NEXT: - - - 1.00 - - - - vcmpeqps %ymm0, %ymm1, %ymm2
1815 # CHECK-NEXT: - - - 1.00 - - 0.50 0.50 vcmpeqps (%rax), %ymm1, %ymm2
1816 # CHECK-NEXT: - - - 1.00 - - - - vcmpeqsd %xmm0, %xmm1, %xmm2
1817 # CHECK-NEXT: - - - 1.00 - - 0.50 0.50 vcmpeqsd (%rax), %xmm1, %xmm2
1818 # CHECK-NEXT: - - - 1.00 - - - - vcmpeqss %xmm0, %xmm1, %xmm2
1819 # CHECK-NEXT: - - - 1.00 - - 0.50 0.50 vcmpeqss (%rax), %xmm1, %xmm2
18201820 # CHECK-NEXT: - - 1.00 1.00 - - - - vcomisd %xmm0, %xmm1
18211821 # CHECK-NEXT: - - 1.00 1.00 - - 0.50 0.50 vcomisd (%rax), %xmm1
18221822 # CHECK-NEXT: - - 1.00 1.00 - - - - vcomiss %xmm0, %xmm1
201201 # CHECK-NEXT: 2 7 1.00 * andnps (%rax), %xmm2
202202 # CHECK-NEXT: 1 1 1.00 andps %xmm0, %xmm2
203203 # CHECK-NEXT: 2 7 1.00 * andps (%rax), %xmm2
204 # CHECK-NEXT: 1 3 1.00 cmpps $0, %xmm0, %xmm2
205 # CHECK-NEXT: 2 9 1.00 * cmpps $0, (%rax), %xmm2
206 # CHECK-NEXT: 1 3 1.00 cmpss $0, %xmm0, %xmm2
207 # CHECK-NEXT: 2 9 1.00 * cmpss $0, (%rax), %xmm2
204 # CHECK-NEXT: 1 3 1.00 cmpeqps %xmm0, %xmm2
205 # CHECK-NEXT: 2 9 1.00 * cmpeqps (%rax), %xmm2
206 # CHECK-NEXT: 1 3 1.00 cmpeqss %xmm0, %xmm2
207 # CHECK-NEXT: 2 9 1.00 * cmpeqss (%rax), %xmm2
208208 # CHECK-NEXT: 2 2 1.00 comiss %xmm0, %xmm1
209209 # CHECK-NEXT: 3 8 1.00 * comiss (%rax), %xmm1
210210 # CHECK-NEXT: 1 3 1.00 cvtpi2ps %mm0, %xmm2
342342 # CHECK-NEXT: - - - - - 1.00 0.50 0.50 andnps (%rax), %xmm2
343343 # CHECK-NEXT: - - - - - 1.00 - - andps %xmm0, %xmm2
344344 # CHECK-NEXT: - - - - - 1.00 0.50 0.50 andps (%rax), %xmm2
345 # CHECK-NEXT: - - - 1.00 - - - - cmpps $0, %xmm0, %xmm2
346 # CHECK-NEXT: - - - 1.00 - - 0.50 0.50 cmpps $0, (%rax), %xmm2
347 # CHECK-NEXT: - - - 1.00 - - - - cmpss $0, %xmm0, %xmm2
348 # CHECK-NEXT: - - - 1.00 - - 0.50 0.50 cmpss $0, (%rax), %xmm2
345 # CHECK-NEXT: - - - 1.00 - - - - cmpeqps %xmm0, %xmm2
346 # CHECK-NEXT: - - - 1.00 - - 0.50 0.50 cmpeqps (%rax), %xmm2
347 # CHECK-NEXT: - - - 1.00 - - - - cmpeqss %xmm0, %xmm2
348 # CHECK-NEXT: - - - 1.00 - - 0.50 0.50 cmpeqss (%rax), %xmm2
349349 # CHECK-NEXT: - - 1.00 1.00 - - - - comiss %xmm0, %xmm1
350350 # CHECK-NEXT: - - 1.00 1.00 - - 0.50 0.50 comiss (%rax), %xmm1
351351 # CHECK-NEXT: - - - 1.00 - - - - cvtpi2ps %mm0, %xmm2
415415 # CHECK-NEXT: 1 1 1.00 andpd %xmm0, %xmm2
416416 # CHECK-NEXT: 2 7 1.00 * andpd (%rax), %xmm2
417417 # CHECK-NEXT: 4 5 1.00 * * U clflush (%rax)
418 # CHECK-NEXT: 1 3 1.00 cmppd $0, %xmm0, %xmm2
419 # CHECK-NEXT: 2 9 1.00 * cmppd $0, (%rax), %xmm2
420 # CHECK-NEXT: 1 3 1.00 cmpsd $0, %xmm0, %xmm2
421 # CHECK-NEXT: 2 9 1.00 * cmpsd $0, (%rax), %xmm2
418 # CHECK-NEXT: 1 3 1.00 cmpeqpd %xmm0, %xmm2
419 # CHECK-NEXT: 2 9 1.00 * cmpeqpd (%rax), %xmm2
420 # CHECK-NEXT: 1 3 1.00 cmpeqsd %xmm0, %xmm2
421 # CHECK-NEXT: 2 9 1.00 * cmpeqsd (%rax), %xmm2
422422 # CHECK-NEXT: 2 2 1.00 comisd %xmm0, %xmm1
423423 # CHECK-NEXT: 3 8 1.00 * comisd (%rax), %xmm1
424424 # CHECK-NEXT: 2 4 1.00 cvtdq2pd %xmm0, %xmm2
699699 # CHECK-NEXT: - - - - - 1.00 - - andpd %xmm0, %xmm2
700700 # CHECK-NEXT: - - - - - 1.00 0.50 0.50 andpd (%rax), %xmm2
701701 # CHECK-NEXT: - - 0.50 0.50 1.00 1.00 0.50 0.50 clflush (%rax)
702 # CHECK-NEXT: - - - 1.00 - - - - cmppd $0, %xmm0, %xmm2
703 # CHECK-NEXT: - - - 1.00 - - 0.50 0.50 cmppd $0, (%rax), %xmm2
704 # CHECK-NEXT: - - - 1.00 - - - - cmpsd $0, %xmm0, %xmm2
705 # CHECK-NEXT: - - - 1.00 - - 0.50 0.50 cmpsd $0, (%rax), %xmm2
702 # CHECK-NEXT: - - - 1.00 - - - - cmpeqpd %xmm0, %xmm2
703 # CHECK-NEXT: - - - 1.00 - - 0.50 0.50 cmpeqpd (%rax), %xmm2
704 # CHECK-NEXT: - - - 1.00 - - - - cmpeqsd %xmm0, %xmm2
705 # CHECK-NEXT: - - - 1.00 - - 0.50 0.50 cmpeqsd (%rax), %xmm2
706706 # CHECK-NEXT: - - 1.00 1.00 - - - - comisd %xmm0, %xmm1
707707 # CHECK-NEXT: - - 1.00 1.00 - - 0.50 0.50 comisd (%rax), %xmm1
708708 # CHECK-NEXT: - - - 1.00 - 1.00 - - cvtdq2pd %xmm0, %xmm2
10971097 # CHECK-NEXT: 1 7 0.50 * vbroadcastsd (%rax), %ymm2
10981098 # CHECK-NEXT: 1 6 0.50 * vbroadcastss (%rax), %xmm2
10991099 # CHECK-NEXT: 1 7 0.50 * vbroadcastss (%rax), %ymm2
1100 # CHECK-NEXT: 1 4 0.50 vcmppd $0, %xmm0, %xmm1, %xmm2
1101 # CHECK-NEXT: 2 10 0.50 * vcmppd $0, (%rax), %xmm1, %xmm2
1102 # CHECK-NEXT: 1 4 0.50 vcmppd $0, %ymm0, %ymm1, %ymm2
1103 # CHECK-NEXT: 2 11 0.50 * vcmppd $0, (%rax), %ymm1, %ymm2
1104 # CHECK-NEXT: 1 4 0.50 vcmpps $0, %xmm0, %xmm1, %xmm2
1105 # CHECK-NEXT: 2 10 0.50 * vcmpps $0, (%rax), %xmm1, %xmm2
1106 # CHECK-NEXT: 1 4 0.50 vcmpps $0, %ymm0, %ymm1, %ymm2
1107 # CHECK-NEXT: 2 11 0.50 * vcmpps $0, (%rax), %ymm1, %ymm2
1108 # CHECK-NEXT: 1 4 0.50 vcmpsd $0, %xmm0, %xmm1, %xmm2
1109 # CHECK-NEXT: 2 9 0.50 * vcmpsd $0, (%rax), %xmm1, %xmm2
1110 # CHECK-NEXT: 1 4 0.50 vcmpss $0, %xmm0, %xmm1, %xmm2
1111 # CHECK-NEXT: 2 9 0.50 * vcmpss $0, (%rax), %xmm1, %xmm2
1100 # CHECK-NEXT: 1 4 0.50 vcmpeqpd %xmm0, %xmm1, %xmm2
1101 # CHECK-NEXT: 2 10 0.50 * vcmpeqpd (%rax), %xmm1, %xmm2
1102 # CHECK-NEXT: 1 4 0.50 vcmpeqpd %ymm0, %ymm1, %ymm2
1103 # CHECK-NEXT: 2 11 0.50 * vcmpeqpd (%rax), %ymm1, %ymm2
1104 # CHECK-NEXT: 1 4 0.50 vcmpeqps %xmm0, %xmm1, %xmm2
1105 # CHECK-NEXT: 2 10 0.50 * vcmpeqps (%rax), %xmm1, %xmm2
1106 # CHECK-NEXT: 1 4 0.50 vcmpeqps %ymm0, %ymm1, %ymm2
1107 # CHECK-NEXT: 2 11 0.50 * vcmpeqps (%rax), %ymm1, %ymm2
1108 # CHECK-NEXT: 1 4 0.50 vcmpeqsd %xmm0, %xmm1, %xmm2
1109 # CHECK-NEXT: 2 9 0.50 * vcmpeqsd (%rax), %xmm1, %xmm2
1110 # CHECK-NEXT: 1 4 0.50 vcmpeqss %xmm0, %xmm1, %xmm2
1111 # CHECK-NEXT: 2 9 0.50 * vcmpeqss (%rax), %xmm1, %xmm2
11121112 # CHECK-NEXT: 1 2 1.00 vcomisd %xmm0, %xmm1
11131113 # CHECK-NEXT: 2 7 1.00 * vcomisd (%rax), %xmm1
11141114 # CHECK-NEXT: 1 2 1.00 vcomiss %xmm0, %xmm1
18071807 # CHECK-NEXT: - - - - 0.50 0.50 - - - - vbroadcastsd (%rax), %ymm2
18081808 # CHECK-NEXT: - - - - 0.50 0.50 - - - - vbroadcastss (%rax), %xmm2
18091809 # CHECK-NEXT: - - - - 0.50 0.50 - - - - vbroadcastss (%rax), %ymm2
1810 # CHECK-NEXT: - - 0.50 0.50 - - - - - - vcmppd $0, %xmm0, %xmm1, %xmm2
1811 # CHECK-NEXT: - - 0.50 0.50 0.50 0.50 - - - - vcmppd $0, (%rax), %xmm1, %xmm2
1812 # CHECK-NEXT: - - 0.50 0.50 - - - - - - vcmppd $0, %ymm0, %ymm1, %ymm2
1813 # CHECK-NEXT: - - 0.50 0.50 0.50 0.50 - - - - vcmppd $0, (%rax), %ymm1, %ymm2
1814 # CHECK-NEXT: - - 0.50 0.50 - - - - - - vcmpps $0, %xmm0, %xmm1, %xmm2
1815 # CHECK-NEXT: - - 0.50 0.50 0.50 0.50 - - - - vcmpps $0, (%rax), %xmm1, %xmm2
1816 # CHECK-NEXT: - - 0.50 0.50 - - - - - - vcmpps $0, %ymm0, %ymm1, %ymm2
1817 # CHECK-NEXT: - - 0.50 0.50 0.50 0.50 - - - - vcmpps $0, (%rax), %ymm1, %ymm2
1818 # CHECK-NEXT: - - 0.50 0.50 - - - - - - vcmpsd $0, %xmm0, %xmm1, %xmm2
1819 # CHECK-NEXT: - - 0.50 0.50 0.50 0.50 - - - - vcmpsd $0, (%rax), %xmm1, %xmm2
1820 # CHECK-NEXT: - - 0.50 0.50 - - - - - - vcmpss $0, %xmm0, %xmm1, %xmm2
1821 # CHECK-NEXT: - - 0.50 0.50 0.50 0.50 - - - - vcmpss $0, (%rax), %xmm1, %xmm2
1810 # CHECK-NEXT: - - 0.50 0.50 - - - - - - vcmpeqpd %xmm0, %xmm1, %xmm2
1811 # CHECK-NEXT: - - 0.50 0.50 0.50 0.50 - - - - vcmpeqpd (%rax), %xmm1, %xmm2
1812 # CHECK-NEXT: - - 0.50 0.50 - - - - - - vcmpeqpd %ymm0, %ymm1, %ymm2
1813 # CHECK-NEXT: - - 0.50 0.50 0.50 0.50 - - - - vcmpeqpd (%rax), %ymm1, %ymm2
1814 # CHECK-NEXT: - - 0.50 0.50 - - - - - - vcmpeqps %xmm0, %xmm1, %xmm2
1815 # CHECK-NEXT: - - 0.50 0.50 0.50 0.50 - - - - vcmpeqps (%rax), %xmm1, %xmm2
1816 # CHECK-NEXT: - - 0.50 0.50 - - - - - - vcmpeqps %ymm0, %ymm1, %ymm2
1817 # CHECK-NEXT: - - 0.50 0.50 0.50 0.50 - - - - vcmpeqps (%rax), %ymm1, %ymm2
1818 # CHECK-NEXT: - - 0.50 0.50 - - - - - - vcmpeqsd %xmm0, %xmm1, %xmm2
1819 # CHECK-NEXT: - - 0.50 0.50 0.50 0.50 - - - - vcmpeqsd (%rax), %xmm1, %xmm2
1820 # CHECK-NEXT: - - 0.50 0.50 - - - - - - vcmpeqss %xmm0, %xmm1, %xmm2
1821 # CHECK-NEXT: - - 0.50 0.50 0.50 0.50 - - - - vcmpeqss (%rax), %xmm1, %xmm2
18221822 # CHECK-NEXT: - - 1.00 - - - - - - - vcomisd %xmm0, %xmm1
18231823 # CHECK-NEXT: - - 1.00 - 0.50 0.50 - - - - vcomisd (%rax), %xmm1
18241824 # CHECK-NEXT: - - 1.00 - - - - - - - vcomiss %xmm0, %xmm1
201201 # CHECK-NEXT: 2 7 0.50 * andnps (%rax), %xmm2
202202 # CHECK-NEXT: 1 1 0.33 andps %xmm0, %xmm2
203203 # CHECK-NEXT: 2 7 0.50 * andps (%rax), %xmm2
204 # CHECK-NEXT: 1 4 0.50 cmpps $0, %xmm0, %xmm2
205 # CHECK-NEXT: 2 10 0.50 * cmpps $0, (%rax), %xmm2
206 # CHECK-NEXT: 1 4 0.50 cmpss $0, %xmm0, %xmm2
207 # CHECK-NEXT: 2 9 0.50 * cmpss $0, (%rax), %xmm2
204 # CHECK-NEXT: 1 4 0.50 cmpeqps %xmm0, %xmm2
205 # CHECK-NEXT: 2 10 0.50 * cmpeqps (%rax), %xmm2
206 # CHECK-NEXT: 1 4 0.50 cmpeqss %xmm0, %xmm2
207 # CHECK-NEXT: 2 9 0.50 * cmpeqss (%rax), %xmm2
208208 # CHECK-NEXT: 1 2 1.00 comiss %xmm0, %xmm1
209209 # CHECK-NEXT: 2 7 1.00 * comiss (%rax), %xmm1
210210 # CHECK-NEXT: 2 6 2.00 cvtpi2ps %mm0, %xmm2
344344 # CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - andnps (%rax), %xmm2
345345 # CHECK-NEXT: - - 0.33 0.33 - - - 0.33 - - andps %xmm0, %xmm2
346346 # CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - andps (%rax), %xmm2
347 # CHECK-NEXT: - - 0.50 0.50 - - - - - - cmpps $0, %xmm0, %xmm2
348 # CHECK-NEXT: - - 0.50 0.50 0.50 0.50 - - - - cmpps $0, (%rax), %xmm2
349 # CHECK-NEXT: - - 0.50 0.50 - - - - - - cmpss $0, %xmm0, %xmm2
350 # CHECK-NEXT: - - 0.50 0.50 0.50 0.50 - - - - cmpss $0, (%rax), %xmm2
347 # CHECK-NEXT: - - 0.50 0.50 - - - - - - cmpeqps %xmm0, %xmm2
348 # CHECK-NEXT: - - 0.50 0.50 0.50 0.50 - - - - cmpeqps (%rax), %xmm2
349 # CHECK-NEXT: - - 0.50 0.50 - - - - - - cmpeqss %xmm0, %xmm2
350 # CHECK-NEXT: - - 0.50 0.50 0.50 0.50 - - - - cmpeqss (%rax), %xmm2
351351 # CHECK-NEXT: - - 1.00 - - - - - - - comiss %xmm0, %xmm1
352352 # CHECK-NEXT: - - 1.00 - 0.50 0.50 - - - - comiss (%rax), %xmm1
353353 # CHECK-NEXT: - - 2.00 - - - - - - - cvtpi2ps %mm0, %xmm2
415415 # CHECK-NEXT: 1 1 0.33 andpd %xmm0, %xmm2
416416 # CHECK-NEXT: 2 7 0.50 * andpd (%rax), %xmm2
417417 # CHECK-NEXT: 2 2 1.00 * * U clflush (%rax)
418 # CHECK-NEXT: 1 4 0.50 cmppd $0, %xmm0, %xmm2
419 # CHECK-NEXT: 2 10 0.50 * cmppd $0, (%rax), %xmm2
420 # CHECK-NEXT: 1 4 0.50 cmpsd $0, %xmm0, %xmm2
421 # CHECK-NEXT: 2 9 0.50 * cmpsd $0, (%rax), %xmm2
418 # CHECK-NEXT: 1 4 0.50 cmpeqpd %xmm0, %xmm2
419 # CHECK-NEXT: 2 10 0.50 * cmpeqpd (%rax), %xmm2
420 # CHECK-NEXT: 1 4 0.50 cmpeqsd %xmm0, %xmm2
421 # CHECK-NEXT: 2 9 0.50 * cmpeqsd (%rax), %xmm2
422422 # CHECK-NEXT: 1 2 1.00 comisd %xmm0, %xmm1
423423 # CHECK-NEXT: 2 7 1.00 * comisd (%rax), %xmm1
424424 # CHECK-NEXT: 2 5 1.00 cvtdq2pd %xmm0, %xmm2
701701 # CHECK-NEXT: - - 0.33 0.33 - - - 0.33 - - andpd %xmm0, %xmm2
702702 # CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - andpd (%rax), %xmm2
703703 # CHECK-NEXT: - - 0.25 0.25 - - - 0.25 1.25 - clflush (%rax)
704 # CHECK-NEXT: - - 0.50 0.50 - - - - - - cmppd $0, %xmm0, %xmm2
705 # CHECK-NEXT: - - 0.50 0.50 0.50 0.50 - - - - cmppd $0, (%rax), %xmm2
706 # CHECK-NEXT: - - 0.50 0.50 - - - - - - cmpsd $0, %xmm0, %xmm2
707 # CHECK-NEXT: - - 0.50 0.50 0.50 0.50 - - - - cmpsd $0, (%rax), %xmm2
704 # CHECK-NEXT: - - 0.50 0.50 - - - - - - cmpeqpd %xmm0, %xmm2
705 # CHECK-NEXT: - - 0.50 0.50 0.50 0.50 - - - - cmpeqpd (%rax), %xmm2
706 # CHECK-NEXT: - - 0.50 0.50 - - - - - - cmpeqsd %xmm0, %xmm2
707 # CHECK-NEXT: - - 0.50 0.50 0.50 0.50 - - - - cmpeqsd (%rax), %xmm2
708708 # CHECK-NEXT: - - 1.00 - - - - - - - comisd %xmm0, %xmm1
709709 # CHECK-NEXT: - - 1.00 - 0.50 0.50 - - - - comisd (%rax), %xmm1
710710 # CHECK-NEXT: - - 1.00 - - - - 1.00 - - cvtdq2pd %xmm0, %xmm2
10971097 # CHECK-NEXT: 1 7 0.50 * vbroadcastsd (%rax), %ymm2
10981098 # CHECK-NEXT: 1 6 0.50 * vbroadcastss (%rax), %xmm2
10991099 # CHECK-NEXT: 1 7 0.50 * vbroadcastss (%rax), %ymm2
1100 # CHECK-NEXT: 1 4 0.50 vcmppd $0, %xmm0, %xmm1, %xmm2
1101 # CHECK-NEXT: 2 10 0.50 * vcmppd $0, (%rax), %xmm1, %xmm2
1102 # CHECK-NEXT: 1 4 0.50 vcmppd $0, %ymm0, %ymm1, %ymm2
1103 # CHECK-NEXT: 2 11 0.50 * vcmppd $0, (%rax), %ymm1, %ymm2
1104 # CHECK-NEXT: 1 4 0.50 vcmpps $0, %xmm0, %xmm1, %xmm2
1105 # CHECK-NEXT: 2 10 0.50 * vcmpps $0, (%rax), %xmm1, %xmm2
1106 # CHECK-NEXT: 1 4 0.50 vcmpps $0, %ymm0, %ymm1, %ymm2
1107 # CHECK-NEXT: 2 11 0.50 * vcmpps $0, (%rax), %ymm1, %ymm2
1108 # CHECK-NEXT: 1 4 0.50 vcmpsd $0, %xmm0, %xmm1, %xmm2
1109 # CHECK-NEXT: 2 9 0.50 * vcmpsd $0, (%rax), %xmm1, %xmm2
1110 # CHECK-NEXT: 1 4 0.50 vcmpss $0, %xmm0, %xmm1, %xmm2
1111 # CHECK-NEXT: 2 9 0.50 * vcmpss $0, (%rax), %xmm1, %xmm2
1100 # CHECK-NEXT: 1 4 0.50 vcmpeqpd %xmm0, %xmm1, %xmm2
1101 # CHECK-NEXT: 2 10 0.50 * vcmpeqpd (%rax), %xmm1, %xmm2
1102 # CHECK-NEXT: 1 4 0.50 vcmpeqpd %ymm0, %ymm1, %ymm2
1103 # CHECK-NEXT: 2 11 0.50 * vcmpeqpd (%rax), %ymm1, %ymm2
1104 # CHECK-NEXT: 1 4 0.50 vcmpeqps %xmm0, %xmm1, %xmm2
1105 # CHECK-NEXT: 2 10 0.50 * vcmpeqps (%rax), %xmm1, %xmm2
1106 # CHECK-NEXT: 1 4 0.50 vcmpeqps %ymm0, %ymm1, %ymm2
1107 # CHECK-NEXT: 2 11 0.50 * vcmpeqps (%rax), %ymm1, %ymm2
1108 # CHECK-NEXT: 1 4 0.50 vcmpeqsd %xmm0, %xmm1, %xmm2
1109 # CHECK-NEXT: 2 9 0.50 * vcmpeqsd (%rax), %xmm1, %xmm2
1110 # CHECK-NEXT: 1 4 0.50 vcmpeqss %xmm0, %xmm1, %xmm2
1111 # CHECK-NEXT: 2 9 0.50 * vcmpeqss (%rax), %xmm1, %xmm2
11121112 # CHECK-NEXT: 1 2 1.00 vcomisd %xmm0, %xmm1
11131113 # CHECK-NEXT: 2 7 1.00 * vcomisd (%rax), %xmm1
11141114 # CHECK-NEXT: 1 2 1.00 vcomiss %xmm0, %xmm1
18071807 # CHECK-NEXT: - - - - 0.50 0.50 - - - - vbroadcastsd (%rax), %ymm2
18081808 # CHECK-NEXT: - - - - 0.50 0.50 - - - - vbroadcastss (%rax), %xmm2
18091809 # CHECK-NEXT: - - - - 0.50 0.50 - - - - vbroadcastss (%rax), %ymm2
1810 # CHECK-NEXT: - - 0.50 0.50 - - - - - - vcmppd $0, %xmm0, %xmm1, %xmm2
1811 # CHECK-NEXT: - - 0.50 0.50 0.50 0.50 - - - - vcmppd $0, (%rax), %xmm1, %xmm2
1812 # CHECK-NEXT: - - 0.50 0.50 - - - - - - vcmppd $0, %ymm0, %ymm1, %ymm2
1813 # CHECK-NEXT: - - 0.50 0.50 0.50 0.50 - - - - vcmppd $0, (%rax), %ymm1, %ymm2
1814 # CHECK-NEXT: - - 0.50 0.50 - - - - - - vcmpps $0, %xmm0, %xmm1, %xmm2
1815 # CHECK-NEXT: - - 0.50 0.50 0.50 0.50 - - - - vcmpps $0, (%rax), %xmm1, %xmm2
1816 # CHECK-NEXT: - - 0.50 0.50 - - - - - - vcmpps $0, %ymm0, %ymm1, %ymm2
1817 # CHECK-NEXT: - - 0.50 0.50 0.50 0.50 - - - - vcmpps $0, (%rax), %ymm1, %ymm2
1818 # CHECK-NEXT: - - 0.50 0.50 - - - - - - vcmpsd $0, %xmm0, %xmm1, %xmm2
1819 # CHECK-NEXT: - - 0.50 0.50 0.50 0.50 - - - - vcmpsd $0, (%rax), %xmm1, %xmm2
1820 # CHECK-NEXT: - - 0.50 0.50 - - - - - - vcmpss $0, %xmm0, %xmm1, %xmm2
1821 # CHECK-NEXT: - - 0.50 0.50 0.50 0.50 - - - - vcmpss $0, (%rax), %xmm1, %xmm2
1810 # CHECK-NEXT: - - 0.50 0.50 - - - - - - vcmpeqpd %xmm0, %xmm1, %xmm2
1811 # CHECK-NEXT: - - 0.50 0.50 0.50 0.50 - - - - vcmpeqpd (%rax), %xmm1, %xmm2
1812 # CHECK-NEXT: - - 0.50 0.50 - - - - - - vcmpeqpd %ymm0, %ymm1, %ymm2
1813 # CHECK-NEXT: - - 0.50 0.50 0.50 0.50 - - - - vcmpeqpd (%rax), %ymm1, %ymm2
1814 # CHECK-NEXT: - - 0.50 0.50 - - - - - - vcmpeqps %xmm0, %xmm1, %xmm2
1815 # CHECK-NEXT: - - 0.50 0.50 0.50 0.50 - - - - vcmpeqps (%rax), %xmm1, %xmm2
1816 # CHECK-NEXT: - - 0.50 0.50 - - - - - - vcmpeqps %ymm0, %ymm1, %ymm2
1817 # CHECK-NEXT: - - 0.50 0.50 0.50 0.50 - - - - vcmpeqps (%rax), %ymm1, %ymm2
1818 # CHECK-NEXT: - - 0.50 0.50 - - - - - - vcmpeqsd %xmm0, %xmm1, %xmm2
1819 # CHECK-NEXT: - - 0.50 0.50 0.50 0.50 - - - - vcmpeqsd (%rax), %xmm1, %xmm2
1820 # CHECK-NEXT: - - 0.50 0.50 - - - - - - vcmpeqss %xmm0, %xmm1, %xmm2
1821 # CHECK-NEXT: - - 0.50 0.50 0.50 0.50 - - - - vcmpeqss (%rax), %xmm1, %xmm2
18221822 # CHECK-NEXT: - - 1.00 - - - - - - - vcomisd %xmm0, %xmm1
18231823 # CHECK-NEXT: - - 1.00 - 0.50 0.50 - - - - vcomisd (%rax), %xmm1
18241824 # CHECK-NEXT: - - 1.00 - - - - - - - vcomiss %xmm0, %xmm1
201201 # CHECK-NEXT: 2 7 0.50 * andnps (%rax), %xmm2
202202 # CHECK-NEXT: 1 1 0.33 andps %xmm0, %xmm2
203203 # CHECK-NEXT: 2 7 0.50 * andps (%rax), %xmm2
204 # CHECK-NEXT: 1 4 0.50 cmpps $0, %xmm0, %xmm2
205 # CHECK-NEXT: 2 10 0.50 * cmpps $0, (%rax), %xmm2
206 # CHECK-NEXT: 1 4 0.50 cmpss $0, %xmm0, %xmm2
207 # CHECK-NEXT: 2 9 0.50 * cmpss $0, (%rax), %xmm2
204 # CHECK-NEXT: 1 4 0.50 cmpeqps %xmm0, %xmm2
205 # CHECK-NEXT: 2 10 0.50 * cmpeqps (%rax), %xmm2
206 # CHECK-NEXT: 1 4 0.50 cmpeqss %xmm0, %xmm2
207 # CHECK-NEXT: 2 9 0.50 * cmpeqss (%rax), %xmm2
208208 # CHECK-NEXT: 1 2 1.00 comiss %xmm0, %xmm1
209209 # CHECK-NEXT: 2 7 1.00 * comiss (%rax), %xmm1
210210 # CHECK-NEXT: 2 6 2.00 cvtpi2ps %mm0, %xmm2
344344 # CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - andnps (%rax), %xmm2
345345 # CHECK-NEXT: - - 0.33 0.33 - - - 0.33 - - andps %xmm0, %xmm2
346346 # CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - andps (%rax), %xmm2
347 # CHECK-NEXT: - - 0.50 0.50 - - - - - - cmpps $0, %xmm0, %xmm2
348 # CHECK-NEXT: - - 0.50 0.50 0.50 0.50 - - - - cmpps $0, (%rax), %xmm2
349 # CHECK-NEXT: - - 0.50 0.50 - - - - - - cmpss $0, %xmm0, %xmm2
350 # CHECK-NEXT: - - 0.50 0.50 0.50 0.50 - - - - cmpss $0, (%rax), %xmm2
347 # CHECK-NEXT: - - 0.50 0.50 - - - - - - cmpeqps %xmm0, %xmm2
348 # CHECK-NEXT: - - 0.50 0.50 0.50 0.50 - - - - cmpeqps (%rax), %xmm2
349 # CHECK-NEXT: - - 0.50 0.50 - - - - - - cmpeqss %xmm0, %xmm2
350 # CHECK-NEXT: - - 0.50 0.50 0.50 0.50 - - - - cmpeqss (%rax), %xmm2
351351 # CHECK-NEXT: - - 1.00 - - - - - - - comiss %xmm0, %xmm1
352352 # CHECK-NEXT: - - 1.00 - 0.50 0.50 - - - - comiss (%rax), %xmm1
353353 # CHECK-NEXT: - - - - - - - 2.00 - - cvtpi2ps %mm0, %xmm2
415415 # CHECK-NEXT: 1 1 0.33 andpd %xmm0, %xmm2
416416 # CHECK-NEXT: 2 7 0.50 * andpd (%rax), %xmm2
417417 # CHECK-NEXT: 2 2 1.00 * * U clflush (%rax)
418 # CHECK-NEXT: 1 4 0.50 cmppd $0, %xmm0, %xmm2
419 # CHECK-NEXT: 2 10 0.50 * cmppd $0, (%rax), %xmm2
420 # CHECK-NEXT: 1 4 0.50 cmpsd $0, %xmm0, %xmm2
421 # CHECK-NEXT: 2 9 0.50 * cmpsd $0, (%rax), %xmm2
418 # CHECK-NEXT: 1 4 0.50 cmpeqpd %xmm0, %xmm2
419 # CHECK-NEXT: 2 10 0.50 * cmpeqpd (%rax), %xmm2
420 # CHECK-NEXT: 1 4 0.50 cmpeqsd %xmm0, %xmm2
421 # CHECK-NEXT: 2 9 0.50 * cmpeqsd (%rax), %xmm2
422422 # CHECK-NEXT: 1 2 1.00 comisd %xmm0, %xmm1
423423 # CHECK-NEXT: 2 7 1.00 * comisd (%rax), %xmm1
424424 # CHECK-NEXT: 1 4 0.50 cvtdq2pd %xmm0, %xmm2
701701 # CHECK-NEXT: - - 0.33 0.33 - - - 0.33 - - andpd %xmm0, %xmm2
702702 # CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - andpd (%rax), %xmm2
703703 # CHECK-NEXT: - - 0.25 0.25 - - - 0.25 1.25 - clflush (%rax)
704 # CHECK-NEXT: - - 0.50 0.50 - - - - - - cmppd $0, %xmm0, %xmm2
705 # CHECK-NEXT: - - 0.50 0.50 0.50 0.50 - - - - cmppd $0, (%rax), %xmm2
706 # CHECK-NEXT: - - 0.50 0.50 - - - - - - cmpsd $0, %xmm0, %xmm2
707 # CHECK-NEXT: - - 0.50 0.50 0.50 0.50 - - - - cmpsd $0, (%rax), %xmm2
704 # CHECK-NEXT: - - 0.50 0.50 - - - - - - cmpeqpd %xmm0, %xmm2
705 # CHECK-NEXT: - - 0.50 0.50 0.50 0.50 - - - - cmpeqpd (%rax), %xmm2
706 # CHECK-NEXT: - - 0.50 0.50 - - - - - - cmpeqsd %xmm0, %xmm2
707 # CHECK-NEXT: - - 0.50 0.50 0.50 0.50 - - - - cmpeqsd (%rax), %xmm2
708708 # CHECK-NEXT: - - 1.00 - - - - - - - comisd %xmm0, %xmm1
709709 # CHECK-NEXT: - - 1.00 - 0.50 0.50 - - - - comisd (%rax), %xmm1
710710 # CHECK-NEXT: - - 0.50 0.50 - - - - - - cvtdq2pd %xmm0, %xmm2
10971097 # CHECK-NEXT: 1 8 0.50 * vbroadcastsd (%rax), %ymm2
10981098 # CHECK-NEXT: 1 8 0.50 * vbroadcastss (%rax), %xmm2
10991099 # CHECK-NEXT: 1 8 0.50 * vbroadcastss (%rax), %ymm2
1100 # CHECK-NEXT: 1 3 1.00 vcmppd $0, %xmm0, %xmm1, %xmm2
1101 # CHECK-NEXT: 1 10 1.00 * vcmppd $0, (%rax), %xmm1, %xmm2
1102 # CHECK-NEXT: 1 3 1.00 vcmppd $0, %ymm0, %ymm1, %ymm2
1103 # CHECK-NEXT: 1 10 1.00 * vcmppd $0, (%rax), %ymm1, %ymm2
1104 # CHECK-NEXT: 1 3 1.00 vcmpps $0, %xmm0, %xmm1, %xmm2
1105 # CHECK-NEXT: 1 10 1.00 * vcmpps $0, (%rax), %xmm1, %xmm2
1106 # CHECK-NEXT: 1 3 1.00 vcmpps $0, %ymm0, %ymm1, %ymm2
1107 # CHECK-NEXT: 1 10 1.00 * vcmpps $0, (%rax), %ymm1, %ymm2
1108 # CHECK-NEXT: 1 3 1.00 vcmpsd $0, %xmm0, %xmm1, %xmm2
1109 # CHECK-NEXT: 1 10 1.00 * vcmpsd $0, (%rax), %xmm1, %xmm2
1110 # CHECK-NEXT: 1 3 1.00 vcmpss $0, %xmm0, %xmm1, %xmm2
1111 # CHECK-NEXT: 1 10 1.00 * vcmpss $0, (%rax), %xmm1, %xmm2
1100 # CHECK-NEXT: 1 3 1.00 vcmpeqpd %xmm0, %xmm1, %xmm2
1101 # CHECK-NEXT: 1 10 1.00 * vcmpeqpd (%rax), %xmm1, %xmm2
1102 # CHECK-NEXT: 1 3 1.00 vcmpeqpd %ymm0, %ymm1, %ymm2
1103 # CHECK-NEXT: 1 10 1.00 * vcmpeqpd (%rax), %ymm1, %ymm2
1104 # CHECK-NEXT: 1 3 1.00 vcmpeqps %xmm0, %xmm1, %xmm2
1105 # CHECK-NEXT: 1 10 1.00 * vcmpeqps (%rax), %xmm1, %xmm2
1106 # CHECK-NEXT: 1 3 1.00 vcmpeqps %ymm0, %ymm1, %ymm2
1107 # CHECK-NEXT: 1 10 1.00 * vcmpeqps (%rax), %ymm1, %ymm2
1108 # CHECK-NEXT: 1 3 1.00 vcmpeqsd %xmm0, %xmm1, %xmm2
1109 # CHECK-NEXT: 1 10 1.00 * vcmpeqsd (%rax), %xmm1, %xmm2
1110 # CHECK-NEXT: 1 3 1.00 vcmpeqss %xmm0, %xmm1, %xmm2
1111 # CHECK-NEXT: 1 10 1.00 * vcmpeqss (%rax), %xmm1, %xmm2
11121112 # CHECK-NEXT: 1 3 1.00 vcomisd %xmm0, %xmm1
11131113 # CHECK-NEXT: 1 10 1.00 * vcomisd (%rax), %xmm1
11141114 # CHECK-NEXT: 1 3 1.00 vcomiss %xmm0, %xmm1
18091809 # CHECK-NEXT: 0.50 0.50 - - - - - - 0.50 0.50 - - vbroadcastsd (%rax), %ymm2
18101810 # CHECK-NEXT: 0.50 0.50 - - - - - - 0.50 0.50 - - vbroadcastss (%rax), %xmm2
18111811 # CHECK-NEXT: 0.50 0.50 - - - - - - 0.50 0.50 - - vbroadcastss (%rax), %ymm2
1812 # CHECK-NEXT: - - - - - - - 1.00 - - - - vcmppd $0, %xmm0, %xmm1, %xmm2
1813 # CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - - - - vcmppd $0, (%rax), %xmm1, %xmm2
1814 # CHECK-NEXT: - - - - - - - 1.00 - - - - vcmppd $0, %ymm0, %ymm1, %ymm2
1815 # CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - - - - vcmppd $0, (%rax), %ymm1, %ymm2
1816 # CHECK-NEXT: - - - - - - - 1.00 - - - - vcmpps $0, %xmm0, %xmm1, %xmm2
1817 # CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - - - - vcmpps $0, (%rax), %xmm1, %xmm2
1818 # CHECK-NEXT: - - - - - - - 1.00 - - - - vcmpps $0, %ymm0, %ymm1, %ymm2
1819 # CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - - - - vcmpps $0, (%rax), %ymm1, %ymm2
1820 # CHECK-NEXT: - - - - - - - 1.00 - - - - vcmpsd $0, %xmm0, %xmm1, %xmm2
1821 # CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - - - - vcmpsd $0, (%rax), %xmm1, %xmm2
1822 # CHECK-NEXT: - - - - - - - 1.00 - - - - vcmpss $0, %xmm0, %xmm1, %xmm2
1823 # CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - - - - vcmpss $0, (%rax), %xmm1, %xmm2
1812 # CHECK-NEXT: - - - - - - - 1.00 - - - - vcmpeqpd %xmm0, %xmm1, %xmm2
1813 # CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - - - - vcmpeqpd (%rax), %xmm1, %xmm2
1814 # CHECK-NEXT: - - - - - - - 1.00 - - - - vcmpeqpd %ymm0, %ymm1, %ymm2
1815 # CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - - - - vcmpeqpd (%rax), %ymm1, %ymm2
1816 # CHECK-NEXT: - - - - - - - 1.00 - - - - vcmpeqps %xmm0, %xmm1, %xmm2
1817 # CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - - - - vcmpeqps (%rax), %xmm1, %xmm2
1818 # CHECK-NEXT: - - - - - - - 1.00 - - - - vcmpeqps %ymm0, %ymm1, %ymm2
1819 # CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - - - - vcmpeqps (%rax), %ymm1, %ymm2
1820 # CHECK-NEXT: - - - - - - - 1.00 - - - - vcmpeqsd %xmm0, %xmm1, %xmm2
1821 # CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - - - - vcmpeqsd (%rax), %xmm1, %xmm2
1822 # CHECK-NEXT: - - - - - - - 1.00 - - - - vcmpeqss %xmm0, %xmm1, %xmm2
1823 # CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - - - - vcmpeqss (%rax), %xmm1, %xmm2
18241824 # CHECK-NEXT: - - - - - - - 1.00 - - - - vcomisd %xmm0, %xmm1
18251825 # CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - - - - vcomisd (%rax), %xmm1
18261826 # CHECK-NEXT: - - - - - - - 1.00 - - - - vcomiss %xmm0, %xmm1
201201 # CHECK-NEXT: 1 8 0.50 * andnps (%rax), %xmm2
202202 # CHECK-NEXT: 1 1 0.25 andps %xmm0, %xmm2
203203 # CHECK-NEXT: 1 8 0.50 * andps (%rax), %xmm2
204 # CHECK-NEXT: 1 3 1.00 cmpps $0, %xmm0, %xmm2
205 # CHECK-NEXT: 1 10 1.00 * cmpps $0, (%rax), %xmm2
206 # CHECK-NEXT: 1 3 1.00 cmpss $0, %xmm0, %xmm2
207 # CHECK-NEXT: 1 10 1.00 * cmpss $0, (%rax), %xmm2
204 # CHECK-NEXT: 1 3 1.00 cmpeqps %xmm0, %xmm2
205 # CHECK-NEXT: 1 10 1.00 * cmpeqps (%rax), %xmm2
206 # CHECK-NEXT: 1 3 1.00 cmpeqss %xmm0, %xmm2
207 # CHECK-NEXT: 1 10 1.00 * cmpeqss (%rax), %xmm2
208208 # CHECK-NEXT: 1 3 1.00 comiss %xmm0, %xmm1
209209 # CHECK-NEXT: 1 10 1.00 * comiss (%rax), %xmm1
210210 # CHECK-NEXT: 1 5 1.00 cvtpi2ps %mm0, %xmm2
346346 # CHECK-NEXT: 0.50 0.50 - - - - - 0.25 0.25 0.25 0.25 - andnps (%rax), %xmm2
347347 # CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - andps %xmm0, %xmm2
348348 # CHECK-NEXT: 0.50 0.50 - - - - - 0.25 0.25 0.25 0.25 - andps (%rax), %xmm2
349 # CHECK-NEXT: - - - - - - - 1.00 - - - - cmpps $0, %xmm0, %xmm2
350 # CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - - - - cmpps $0, (%rax), %xmm2
351 # CHECK-NEXT: - - - - - - - 1.00 - - - - cmpss $0, %xmm0, %xmm2
352 # CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - - - - cmpss $0, (%rax), %xmm2
349 # CHECK-NEXT: - - - - - - - 1.00 - - - - cmpeqps %xmm0, %xmm2
350 # CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - - - - cmpeqps (%rax), %xmm2
351 # CHECK-NEXT: - - - - - - - 1.00 - - - - cmpeqss %xmm0, %xmm2
352 # CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - - - - cmpeqss (%rax), %xmm2
353353 # CHECK-NEXT: - - - - - - - 1.00 - - - - comiss %xmm0, %xmm1
354354 # CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - - - - comiss (%rax), %xmm1
355355 # CHECK-NEXT: - - - - - - - - - - 1.00 - cvtpi2ps %mm0, %xmm2
415415 # CHECK-NEXT: 1 1 0.25 andpd %xmm0, %xmm2
416416 # CHECK-NEXT: 1 8 0.50 * andpd (%rax), %xmm2
417417 # CHECK-NEXT: 1 8 0.50 * * U clflush (%rax)
418 # CHECK-NEXT: 1 3 1.00 cmppd $0, %xmm0, %xmm2
419 # CHECK-NEXT: 1 10 1.00 * cmppd $0, (%rax), %xmm2
420 # CHECK-NEXT: 1 3 1.00 cmpsd $0, %xmm0, %xmm2
421 # CHECK-NEXT: 1 10 1.00 * cmpsd $0, (%rax), %xmm2
418 # CHECK-NEXT: 1 3 1.00 cmpeqpd %xmm0, %xmm2
419 # CHECK-NEXT: 1 10 1.00 * cmpeqpd (%rax), %xmm2
420 # CHECK-NEXT: 1 3 1.00 cmpeqsd %xmm0, %xmm2
421 # CHECK-NEXT: 1 10 1.00 * cmpeqsd (%rax), %xmm2
422422 # CHECK-NEXT: 1 3 1.00 comisd %xmm0, %xmm1
423423 # CHECK-NEXT: 1 10 1.00 * comisd (%rax), %xmm1
424424 # CHECK-NEXT: 1 5 1.00 cvtdq2pd %xmm0, %xmm2
703703 # CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - andpd %xmm0, %xmm2
704704 # CHECK-NEXT: 0.50 0.50 - - - - - 0.25 0.25 0.25 0.25 - andpd (%rax), %xmm2
705705 # CHECK-NEXT: 0.50 0.50 - - - - - - - - - - clflush (%rax)
706 # CHECK-NEXT: - - - - - - - 1.00 - - - - cmppd $0, %xmm0, %xmm2
707 # CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - - - - cmppd $0, (%rax), %xmm2
708 # CHECK-NEXT: - - - - - - - 1.00 - - - - cmpsd $0, %xmm0, %xmm2
709 # CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - - - - cmpsd $0, (%rax), %xmm2
706 # CHECK-NEXT: - - - - - - - 1.00 - - - - cmpeqpd %xmm0, %xmm2
707 # CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - - - - cmpeqpd (%rax), %xmm2
708 # CHECK-NEXT: - - - - - - - 1.00 - - - - cmpeqsd %xmm0, %xmm2
709 # CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - - - - cmpeqsd (%rax), %xmm2
710710 # CHECK-NEXT: - - - - - - - 1.00 - - - - comisd %xmm0, %xmm1
711711 # CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - - - - comisd (%rax), %xmm1
712712 # CHECK-NEXT: - - - - - - - - 0.50 0.50 1.00 - cvtdq2pd %xmm0, %xmm2
847847 TYPE("i64i32imm_pcrel", TYPE_REL)
848848 TYPE("i16imm_pcrel", TYPE_REL)
849849 TYPE("i32imm_pcrel", TYPE_REL)
850 TYPE("SSECC", TYPE_IMM3)
851 TYPE("AVXCC", TYPE_IMM5)
852850 TYPE("AVX512RC", TYPE_IMM)
853851 TYPE("brtarget32", TYPE_REL)
854852 TYPE("brtarget16", TYPE_REL)
928926 ENCODING("i16imm", ENCODING_IW)
929927 }
930928 ENCODING("i32i8imm", ENCODING_IB)
931 ENCODING("SSECC", ENCODING_IB)
932 ENCODING("AVXCC", ENCODING_IB)
933929 ENCODING("AVX512RC", ENCODING_IRC)
934930 ENCODING("i16imm", ENCODING_Iv)
935931 ENCODING("i16i8imm", ENCODING_IB)