[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

llvm-svn: 356384
This commit is contained in:
Craig Topper 2019-03-18 17:59:59 +00:00
parent 08b5e68ef6
commit c2b35ebc1d
45 changed files with 788 additions and 652 deletions

View File

@ -414,8 +414,6 @@ enum OperandEncoding {
ENUM_ENTRY(TYPE_R32, "4-byte") \
ENUM_ENTRY(TYPE_R64, "8-byte") \
ENUM_ENTRY(TYPE_IMM, "immediate operand") \
ENUM_ENTRY(TYPE_IMM3, "1-byte immediate operand between 0 and 7") \
ENUM_ENTRY(TYPE_IMM5, "1-byte immediate operand between 0 and 31") \
ENUM_ENTRY(TYPE_UIMM8, "1-byte unsigned immediate operand") \
ENUM_ENTRY(TYPE_M, "Memory operand") \
ENUM_ENTRY(TYPE_MVSIBX, "Memory operand using XMM index") \

View File

@ -2318,13 +2318,15 @@ bool X86AsmParser::ParseInstruction(ParseInstructionInfo &Info, StringRef Name,
PatchedName != "setb" && PatchedName != "setnb")
PatchedName = PatchedName.substr(0, Name.size()-1);
unsigned ComparisonCode = ~0U;
// FIXME: Hack to recognize cmp<comparison code>{ss,sd,ps,pd}.
if ((PatchedName.startswith("cmp") || PatchedName.startswith("vcmp")) &&
(PatchedName.endswith("ss") || PatchedName.endswith("sd") ||
PatchedName.endswith("ps") || PatchedName.endswith("pd"))) {
bool IsVCMP = PatchedName[0] == 'v';
unsigned CCIdx = IsVCMP ? 4 : 3;
unsigned ComparisonCode = StringSwitch<unsigned>(
unsigned CC = StringSwitch<unsigned>(
PatchedName.slice(CCIdx, PatchedName.size() - 2))
.Case("eq", 0x00)
.Case("eq_oq", 0x00)
@ -2374,21 +2376,22 @@ bool X86AsmParser::ParseInstruction(ParseInstructionInfo &Info, StringRef Name,
.Case("gt_oq", 0x1E)
.Case("true_us", 0x1F)
.Default(~0U);
if (ComparisonCode != ~0U && (IsVCMP || ComparisonCode < 8)) {
if (CC != ~0U && (IsVCMP || CC < 8)) {
if (PatchedName.endswith("ss"))
PatchedName = IsVCMP ? "vcmpss" : "cmpss";
else if (PatchedName.endswith("sd"))
PatchedName = IsVCMP ? "vcmpsd" : "cmpsd";
else if (PatchedName.endswith("ps"))
PatchedName = IsVCMP ? "vcmpps" : "cmpps";
else if (PatchedName.endswith("pd"))
PatchedName = IsVCMP ? "vcmppd" : "cmppd";
else
llvm_unreachable("Unexpecte suffix!");
Operands.push_back(X86Operand::CreateToken(PatchedName.slice(0, CCIdx),
NameLoc));
const MCExpr *ImmOp = MCConstantExpr::create(ComparisonCode,
getParser().getContext());
Operands.push_back(X86Operand::CreateImm(ImmOp, NameLoc, NameLoc));
PatchedName = PatchedName.substr(PatchedName.size() - 2);
ComparisonCode = CC;
}
}
unsigned ComparisonCode = ~0U;
// FIXME: Hack to recognize vpcmp<comparison code>{ub,uw,ud,uq,b,w,d,q}.
if (PatchedName.startswith("vpcmp") &&
(PatchedName.back() == 'b' || PatchedName.back() == 'w' ||

View File

@ -445,66 +445,6 @@ static void translateImmediate(MCInst &mcInst, uint64_t immediate,
case ENCODING_IO:
break;
}
} else if (type == TYPE_IMM3) {
// Check for immediates that printSSECC can't handle.
if (immediate >= 8) {
unsigned NewOpc;
switch (mcInst.getOpcode()) {
default: llvm_unreachable("unexpected opcode");
case X86::CMPPDrmi: NewOpc = X86::CMPPDrmi_alt; break;
case X86::CMPPDrri: NewOpc = X86::CMPPDrri_alt; break;
case X86::CMPPSrmi: NewOpc = X86::CMPPSrmi_alt; break;
case X86::CMPPSrri: NewOpc = X86::CMPPSrri_alt; break;
case X86::CMPSDrm: NewOpc = X86::CMPSDrm_alt; break;
case X86::CMPSDrr: NewOpc = X86::CMPSDrr_alt; break;
case X86::CMPSSrm: NewOpc = X86::CMPSSrm_alt; break;
case X86::CMPSSrr: NewOpc = X86::CMPSSrr_alt; break;
}
// Switch opcode to the one that doesn't get special printing.
mcInst.setOpcode(NewOpc);
}
} else if (type == TYPE_IMM5) {
// Check for immediates that printAVXCC can't handle.
if (immediate >= 32) {
unsigned NewOpc;
switch (mcInst.getOpcode()) {
default: llvm_unreachable("unexpected opcode");
case X86::VCMPPDrmi: NewOpc = X86::VCMPPDrmi_alt; break;
case X86::VCMPPDrri: NewOpc = X86::VCMPPDrri_alt; break;
case X86::VCMPPSrmi: NewOpc = X86::VCMPPSrmi_alt; break;
case X86::VCMPPSrri: NewOpc = X86::VCMPPSrri_alt; break;
case X86::VCMPSDrm: NewOpc = X86::VCMPSDrm_alt; break;
case X86::VCMPSDrr: NewOpc = X86::VCMPSDrr_alt; break;
case X86::VCMPSSrm: NewOpc = X86::VCMPSSrm_alt; break;
case X86::VCMPSSrr: NewOpc = X86::VCMPSSrr_alt; break;
case X86::VCMPPDYrmi: NewOpc = X86::VCMPPDYrmi_alt; break;
case X86::VCMPPDYrri: NewOpc = X86::VCMPPDYrri_alt; break;
case X86::VCMPPSYrmi: NewOpc = X86::VCMPPSYrmi_alt; break;
case X86::VCMPPSYrri: NewOpc = X86::VCMPPSYrri_alt; break;
case X86::VCMPPDZrmi: NewOpc = X86::VCMPPDZrmi_alt; break;
case X86::VCMPPDZrri: NewOpc = X86::VCMPPDZrri_alt; break;
case X86::VCMPPDZrrib: NewOpc = X86::VCMPPDZrrib_alt; break;
case X86::VCMPPSZrmi: NewOpc = X86::VCMPPSZrmi_alt; break;
case X86::VCMPPSZrri: NewOpc = X86::VCMPPSZrri_alt; break;
case X86::VCMPPSZrrib: NewOpc = X86::VCMPPSZrrib_alt; break;
case X86::VCMPPDZ128rmi: NewOpc = X86::VCMPPDZ128rmi_alt; break;
case X86::VCMPPDZ128rri: NewOpc = X86::VCMPPDZ128rri_alt; break;
case X86::VCMPPSZ128rmi: NewOpc = X86::VCMPPSZ128rmi_alt; break;
case X86::VCMPPSZ128rri: NewOpc = X86::VCMPPSZ128rri_alt; break;
case X86::VCMPPDZ256rmi: NewOpc = X86::VCMPPDZ256rmi_alt; break;
case X86::VCMPPDZ256rri: NewOpc = X86::VCMPPDZ256rri_alt; break;
case X86::VCMPPSZ256rmi: NewOpc = X86::VCMPPSZ256rmi_alt; break;
case X86::VCMPPSZ256rri: NewOpc = X86::VCMPPSZ256rri_alt; break;
case X86::VCMPSDZrm_Int: NewOpc = X86::VCMPSDZrmi_alt; break;
case X86::VCMPSDZrr_Int: NewOpc = X86::VCMPSDZrri_alt; break;
case X86::VCMPSDZrrb_Int: NewOpc = X86::VCMPSDZrrb_alt; break;
case X86::VCMPSSZrm_Int: NewOpc = X86::VCMPSSZrmi_alt; break;
case X86::VCMPSSZrr_Int: NewOpc = X86::VCMPSSZrri_alt; break;
case X86::VCMPSSZrrb_Int: NewOpc = X86::VCMPSSZrrb_alt; break;
}
// Switch opcode to the one that doesn't get special printing.
mcInst.setOpcode(NewOpc);
}
}
switch (type) {

View File

@ -88,6 +88,127 @@ bool X86ATTInstPrinter::printVecCompareInstr(const MCInst *MI,
// Custom print the vector compare instructions to get the immediate
// translated into the mnemonic.
switch (MI->getOpcode()) {
case X86::CMPPDrmi: case X86::CMPPDrri:
case X86::CMPPSrmi: case X86::CMPPSrri:
case X86::CMPSDrm: case X86::CMPSDrr:
case X86::CMPSDrm_Int: case X86::CMPSDrr_Int:
case X86::CMPSSrm: case X86::CMPSSrr:
case X86::CMPSSrm_Int: case X86::CMPSSrr_Int:
if (Imm >= 0 && Imm <= 7) {
OS << '\t';
printCMPMnemonic(MI, /*IsVCMP*/false, OS);
if ((Desc.TSFlags & X86II::FormMask) == X86II::MRMSrcMem) {
if ((Desc.TSFlags & X86II::OpPrefixMask) == X86II::XS)
printdwordmem(MI, 2, OS);
else if ((Desc.TSFlags & X86II::OpPrefixMask) == X86II::XD)
printqwordmem(MI, 2, OS);
else
printxmmwordmem(MI, 2, OS);
} else
printOperand(MI, 2, OS);
// Skip operand 1 as its tied to the dest.
OS << ", ";
printOperand(MI, 0, OS);
return true;
}
break;
case X86::VCMPPDrmi: case X86::VCMPPDrri:
case X86::VCMPPDYrmi: case X86::VCMPPDYrri:
case X86::VCMPPDZ128rmi: case X86::VCMPPDZ128rri:
case X86::VCMPPDZ256rmi: case X86::VCMPPDZ256rri:
case X86::VCMPPDZrmi: case X86::VCMPPDZrri:
case X86::VCMPPSrmi: case X86::VCMPPSrri:
case X86::VCMPPSYrmi: case X86::VCMPPSYrri:
case X86::VCMPPSZ128rmi: case X86::VCMPPSZ128rri:
case X86::VCMPPSZ256rmi: case X86::VCMPPSZ256rri:
case X86::VCMPPSZrmi: case X86::VCMPPSZrri:
case X86::VCMPSDrm: case X86::VCMPSDrr:
case X86::VCMPSDZrm: case X86::VCMPSDZrr:
case X86::VCMPSDrm_Int: case X86::VCMPSDrr_Int:
case X86::VCMPSDZrm_Int: case X86::VCMPSDZrr_Int:
case X86::VCMPSSrm: case X86::VCMPSSrr:
case X86::VCMPSSZrm: case X86::VCMPSSZrr:
case X86::VCMPSSrm_Int: case X86::VCMPSSrr_Int:
case X86::VCMPSSZrm_Int: case X86::VCMPSSZrr_Int:
case X86::VCMPPDZ128rmik: case X86::VCMPPDZ128rrik:
case X86::VCMPPDZ256rmik: case X86::VCMPPDZ256rrik:
case X86::VCMPPDZrmik: case X86::VCMPPDZrrik:
case X86::VCMPPSZ128rmik: case X86::VCMPPSZ128rrik:
case X86::VCMPPSZ256rmik: case X86::VCMPPSZ256rrik:
case X86::VCMPPSZrmik: case X86::VCMPPSZrrik:
case X86::VCMPSDZrm_Intk: case X86::VCMPSDZrr_Intk:
case X86::VCMPSSZrm_Intk: case X86::VCMPSSZrr_Intk:
case X86::VCMPPDZ128rmbi: case X86::VCMPPDZ128rmbik:
case X86::VCMPPDZ256rmbi: case X86::VCMPPDZ256rmbik:
case X86::VCMPPDZrmbi: case X86::VCMPPDZrmbik:
case X86::VCMPPSZ128rmbi: case X86::VCMPPSZ128rmbik:
case X86::VCMPPSZ256rmbi: case X86::VCMPPSZ256rmbik:
case X86::VCMPPSZrmbi: case X86::VCMPPSZrmbik:
case X86::VCMPPDZrrib: case X86::VCMPPDZrribk:
case X86::VCMPPSZrrib: case X86::VCMPPSZrribk:
case X86::VCMPSDZrrb_Int: case X86::VCMPSDZrrb_Intk:
case X86::VCMPSSZrrb_Int: case X86::VCMPSSZrrb_Intk:
if (Imm >= 0 && Imm <= 31) {
OS << '\t';
printCMPMnemonic(MI, /*IsVCMP*/true, OS);
unsigned CurOp = (Desc.TSFlags & X86II::EVEX_K) ? 3 : 2;
if ((Desc.TSFlags & X86II::FormMask) == X86II::MRMSrcMem) {
if (Desc.TSFlags & X86II::EVEX_B) {
// Broadcast form.
// Load size is based on W-bit.
if (Desc.TSFlags & X86II::VEX_W)
printqwordmem(MI, CurOp--, OS);
else
printdwordmem(MI, CurOp--, OS);
// Print the number of elements broadcasted.
unsigned NumElts;
if (Desc.TSFlags & X86II::EVEX_L2)
NumElts = (Desc.TSFlags & X86II::VEX_W) ? 8 : 16;
else if (Desc.TSFlags & X86II::VEX_L)
NumElts = (Desc.TSFlags & X86II::VEX_W) ? 4 : 8;
else
NumElts = (Desc.TSFlags & X86II::VEX_W) ? 2 : 4;
OS << "{1to" << NumElts << "}";
} else {
if ((Desc.TSFlags & X86II::OpPrefixMask) == X86II::XS)
printdwordmem(MI, CurOp--, OS);
else if ((Desc.TSFlags & X86II::OpPrefixMask) == X86II::XD)
printqwordmem(MI, CurOp--, OS);
else if (Desc.TSFlags & X86II::EVEX_L2)
printzmmwordmem(MI, CurOp--, OS);
else if (Desc.TSFlags & X86II::VEX_L)
printymmwordmem(MI, CurOp--, OS);
else
printxmmwordmem(MI, CurOp--, OS);
}
} else {
if (Desc.TSFlags & X86II::EVEX_B)
OS << "{sae}, ";
printOperand(MI, CurOp--, OS);
}
OS << ", ";
printOperand(MI, CurOp--, OS);
OS << ", ";
printOperand(MI, 0, OS);
if (CurOp > 0) {
// Print mask operand.
OS << " {";
printOperand(MI, CurOp--, OS);
OS << "}";
}
return true;
}
break;
case X86::VPCOMBmi: case X86::VPCOMBri:
case X86::VPCOMDmi: case X86::VPCOMDri:
case X86::VPCOMQmi: case X86::VPCOMQri:

View File

@ -181,6 +181,67 @@ void X86InstPrinterCommon::printVPCMPMnemonic(const MCInst *MI,
}
}
void X86InstPrinterCommon::printCMPMnemonic(const MCInst *MI, bool IsVCmp,
raw_ostream &OS) {
OS << (IsVCmp ? "vcmp" : "cmp");
printSSEAVXCC(MI, MI->getNumOperands() - 1, OS);
switch (MI->getOpcode()) {
default: llvm_unreachable("Unexpected opcode!");
case X86::CMPPDrmi: case X86::CMPPDrri:
case X86::VCMPPDrmi: case X86::VCMPPDrri:
case X86::VCMPPDYrmi: case X86::VCMPPDYrri:
case X86::VCMPPDZ128rmi: case X86::VCMPPDZ128rri:
case X86::VCMPPDZ256rmi: case X86::VCMPPDZ256rri:
case X86::VCMPPDZrmi: case X86::VCMPPDZrri:
case X86::VCMPPDZ128rmik: case X86::VCMPPDZ128rrik:
case X86::VCMPPDZ256rmik: case X86::VCMPPDZ256rrik:
case X86::VCMPPDZrmik: case X86::VCMPPDZrrik:
case X86::VCMPPDZ128rmbi: case X86::VCMPPDZ128rmbik:
case X86::VCMPPDZ256rmbi: case X86::VCMPPDZ256rmbik:
case X86::VCMPPDZrmbi: case X86::VCMPPDZrmbik:
case X86::VCMPPDZrrib: case X86::VCMPPDZrribk:
OS << "pd\t";
break;
case X86::CMPPSrmi: case X86::CMPPSrri:
case X86::VCMPPSrmi: case X86::VCMPPSrri:
case X86::VCMPPSYrmi: case X86::VCMPPSYrri:
case X86::VCMPPSZ128rmi: case X86::VCMPPSZ128rri:
case X86::VCMPPSZ256rmi: case X86::VCMPPSZ256rri:
case X86::VCMPPSZrmi: case X86::VCMPPSZrri:
case X86::VCMPPSZ128rmik: case X86::VCMPPSZ128rrik:
case X86::VCMPPSZ256rmik: case X86::VCMPPSZ256rrik:
case X86::VCMPPSZrmik: case X86::VCMPPSZrrik:
case X86::VCMPPSZ128rmbi: case X86::VCMPPSZ128rmbik:
case X86::VCMPPSZ256rmbi: case X86::VCMPPSZ256rmbik:
case X86::VCMPPSZrmbi: case X86::VCMPPSZrmbik:
case X86::VCMPPSZrrib: case X86::VCMPPSZrribk:
OS << "ps\t";
break;
case X86::CMPSDrm: case X86::CMPSDrr:
case X86::CMPSDrm_Int: case X86::CMPSDrr_Int:
case X86::VCMPSDrm: case X86::VCMPSDrr:
case X86::VCMPSDrm_Int: case X86::VCMPSDrr_Int:
case X86::VCMPSDZrm: case X86::VCMPSDZrr:
case X86::VCMPSDZrm_Int: case X86::VCMPSDZrr_Int:
case X86::VCMPSDZrm_Intk: case X86::VCMPSDZrr_Intk:
case X86::VCMPSDZrrb_Int: case X86::VCMPSDZrrb_Intk:
OS << "sd\t";
break;
case X86::CMPSSrm: case X86::CMPSSrr:
case X86::CMPSSrm_Int: case X86::CMPSSrr_Int:
case X86::VCMPSSrm: case X86::VCMPSSrr:
case X86::VCMPSSrm_Int: case X86::VCMPSSrr_Int:
case X86::VCMPSSZrm: case X86::VCMPSSZrr:
case X86::VCMPSSZrm_Int: case X86::VCMPSSZrr_Int:
case X86::VCMPSSZrm_Intk: case X86::VCMPSSZrr_Intk:
case X86::VCMPSSZrrb_Int: case X86::VCMPSSZrrb_Intk:
OS << "ss\t";
break;
}
}
void X86InstPrinterCommon::printRoundingControl(const MCInst *MI, unsigned Op,
raw_ostream &O) {
int64_t Imm = MI->getOperand(Op).getImm();

View File

@ -26,6 +26,7 @@ public:
void printSSEAVXCC(const MCInst *MI, unsigned Op, raw_ostream &OS);
void printVPCOMMnemonic(const MCInst *MI, raw_ostream &OS);
void printVPCMPMnemonic(const MCInst *MI, raw_ostream &OS);
void printCMPMnemonic(const MCInst *MI, bool IsVCmp, raw_ostream &OS);
void printRoundingControl(const MCInst *MI, unsigned Op, raw_ostream &O);
void printPCRelImm(const MCInst *MI, unsigned OpNo, raw_ostream &O);
protected:

View File

@ -69,6 +69,126 @@ bool X86IntelInstPrinter::printVecCompareInstr(const MCInst *MI, raw_ostream &OS
// Custom print the vector compare instructions to get the immediate
// translated into the mnemonic.
switch (MI->getOpcode()) {
case X86::CMPPDrmi: case X86::CMPPDrri:
case X86::CMPPSrmi: case X86::CMPPSrri:
case X86::CMPSDrm: case X86::CMPSDrr:
case X86::CMPSDrm_Int: case X86::CMPSDrr_Int:
case X86::CMPSSrm: case X86::CMPSSrr:
case X86::CMPSSrm_Int: case X86::CMPSSrr_Int:
if (Imm >= 0 && Imm <= 7) {
OS << '\t';
printCMPMnemonic(MI, /*IsVCMP*/false, OS);
printOperand(MI, 0, OS);
OS << ", ";
// Skip operand 1 as its tied to the dest.
if ((Desc.TSFlags & X86II::FormMask) == X86II::MRMSrcMem) {
if ((Desc.TSFlags & X86II::OpPrefixMask) == X86II::XS)
printdwordmem(MI, 2, OS);
else if ((Desc.TSFlags & X86II::OpPrefixMask) == X86II::XD)
printqwordmem(MI, 2, OS);
else
printxmmwordmem(MI, 2, OS);
} else
printOperand(MI, 2, OS);
return true;
}
break;
case X86::VCMPPDrmi: case X86::VCMPPDrri:
case X86::VCMPPDYrmi: case X86::VCMPPDYrri:
case X86::VCMPPDZ128rmi: case X86::VCMPPDZ128rri:
case X86::VCMPPDZ256rmi: case X86::VCMPPDZ256rri:
case X86::VCMPPDZrmi: case X86::VCMPPDZrri:
case X86::VCMPPSrmi: case X86::VCMPPSrri:
case X86::VCMPPSYrmi: case X86::VCMPPSYrri:
case X86::VCMPPSZ128rmi: case X86::VCMPPSZ128rri:
case X86::VCMPPSZ256rmi: case X86::VCMPPSZ256rri:
case X86::VCMPPSZrmi: case X86::VCMPPSZrri:
case X86::VCMPSDrm: case X86::VCMPSDrr:
case X86::VCMPSDZrm: case X86::VCMPSDZrr:
case X86::VCMPSDrm_Int: case X86::VCMPSDrr_Int:
case X86::VCMPSDZrm_Int: case X86::VCMPSDZrr_Int:
case X86::VCMPSSrm: case X86::VCMPSSrr:
case X86::VCMPSSZrm: case X86::VCMPSSZrr:
case X86::VCMPSSrm_Int: case X86::VCMPSSrr_Int:
case X86::VCMPSSZrm_Int: case X86::VCMPSSZrr_Int:
case X86::VCMPPDZ128rmik: case X86::VCMPPDZ128rrik:
case X86::VCMPPDZ256rmik: case X86::VCMPPDZ256rrik:
case X86::VCMPPDZrmik: case X86::VCMPPDZrrik:
case X86::VCMPPSZ128rmik: case X86::VCMPPSZ128rrik:
case X86::VCMPPSZ256rmik: case X86::VCMPPSZ256rrik:
case X86::VCMPPSZrmik: case X86::VCMPPSZrrik:
case X86::VCMPSDZrm_Intk: case X86::VCMPSDZrr_Intk:
case X86::VCMPSSZrm_Intk: case X86::VCMPSSZrr_Intk:
case X86::VCMPPDZ128rmbi: case X86::VCMPPDZ128rmbik:
case X86::VCMPPDZ256rmbi: case X86::VCMPPDZ256rmbik:
case X86::VCMPPDZrmbi: case X86::VCMPPDZrmbik:
case X86::VCMPPSZ128rmbi: case X86::VCMPPSZ128rmbik:
case X86::VCMPPSZ256rmbi: case X86::VCMPPSZ256rmbik:
case X86::VCMPPSZrmbi: case X86::VCMPPSZrmbik:
case X86::VCMPPDZrrib: case X86::VCMPPDZrribk:
case X86::VCMPPSZrrib: case X86::VCMPPSZrribk:
case X86::VCMPSDZrrb_Int: case X86::VCMPSDZrrb_Intk:
case X86::VCMPSSZrrb_Int: case X86::VCMPSSZrrb_Intk:
if (Imm >= 0 && Imm <= 31) {
OS << '\t';
printCMPMnemonic(MI, /*IsVCMP*/true, OS);
unsigned CurOp = 0;
printOperand(MI, CurOp++, OS);
if (Desc.TSFlags & X86II::EVEX_K) {
// Print mask operand.
OS << " {";
printOperand(MI, CurOp++, OS);
OS << "}";
}
OS << ", ";
printOperand(MI, CurOp++, OS);
OS << ", ";
if ((Desc.TSFlags & X86II::FormMask) == X86II::MRMSrcMem) {
if (Desc.TSFlags & X86II::EVEX_B) {
// Broadcast form.
// Load size is based on W-bit.
if (Desc.TSFlags & X86II::VEX_W)
printqwordmem(MI, CurOp++, OS);
else
printdwordmem(MI, CurOp++, OS);
// Print the number of elements broadcasted.
unsigned NumElts;
if (Desc.TSFlags & X86II::EVEX_L2)
NumElts = (Desc.TSFlags & X86II::VEX_W) ? 8 : 16;
else if (Desc.TSFlags & X86II::VEX_L)
NumElts = (Desc.TSFlags & X86II::VEX_W) ? 4 : 8;
else
NumElts = (Desc.TSFlags & X86II::VEX_W) ? 2 : 4;
OS << "{1to" << NumElts << "}";
} else {
if ((Desc.TSFlags & X86II::OpPrefixMask) == X86II::XS)
printdwordmem(MI, CurOp++, OS);
else if ((Desc.TSFlags & X86II::OpPrefixMask) == X86II::XD)
printqwordmem(MI, CurOp++, OS);
else if (Desc.TSFlags & X86II::EVEX_L2)
printzmmwordmem(MI, CurOp++, OS);
else if (Desc.TSFlags & X86II::VEX_L)
printymmwordmem(MI, CurOp++, OS);
else
printxmmwordmem(MI, CurOp++, OS);
}
} else {
printOperand(MI, CurOp++, OS);
if (Desc.TSFlags & X86II::EVEX_B)
OS << ", {sae}";
}
return true;
}
break;
case X86::VPCOMBmi: case X86::VPCOMBri:
case X86::VPCOMDmi: case X86::VPCOMDri:
case X86::VPCOMQmi: case X86::VPCOMQri:

View File

@ -2032,71 +2032,47 @@ multiclass avx512_cmp_scalar<X86VectorVTInfo _, SDNode OpNode, SDNode OpNodeSAE,
X86FoldableSchedWrite sched> {
defm rr_Int : AVX512_maskable_cmp<0xC2, MRMSrcReg, _,
(outs _.KRC:$dst),
(ins _.RC:$src1, _.RC:$src2, AVXCC:$cc),
"vcmp${cc}"#_.Suffix,
"$src2, $src1", "$src1, $src2",
(ins _.RC:$src1, _.RC:$src2, u8imm:$cc),
"vcmp"#_.Suffix,
"$cc, $src2, $src1", "$src1, $src2, $cc",
(OpNode (_.VT _.RC:$src1),
(_.VT _.RC:$src2),
imm:$cc)>, EVEX_4V, Sched<[sched]>;
let mayLoad = 1 in
defm rm_Int : AVX512_maskable_cmp<0xC2, MRMSrcMem, _,
(outs _.KRC:$dst),
(ins _.RC:$src1, _.IntScalarMemOp:$src2, AVXCC:$cc),
"vcmp${cc}"#_.Suffix,
"$src2, $src1", "$src1, $src2",
(ins _.RC:$src1, _.IntScalarMemOp:$src2, u8imm:$cc),
"vcmp"#_.Suffix,
"$cc, $src2, $src1", "$src1, $src2, $cc",
(OpNode (_.VT _.RC:$src1), _.ScalarIntMemCPat:$src2,
imm:$cc)>, EVEX_4V, EVEX_CD8<_.EltSize, CD8VT1>,
Sched<[sched.Folded, sched.ReadAfterFold]>;
defm rrb_Int : AVX512_maskable_cmp<0xC2, MRMSrcReg, _,
(outs _.KRC:$dst),
(ins _.RC:$src1, _.RC:$src2, AVXCC:$cc),
"vcmp${cc}"#_.Suffix,
"{sae}, $src2, $src1", "$src1, $src2, {sae}",
(ins _.RC:$src1, _.RC:$src2, u8imm:$cc),
"vcmp"#_.Suffix,
"$cc, {sae}, $src2, $src1","$src1, $src2, {sae}, $cc",
(OpNodeSAE (_.VT _.RC:$src1),
(_.VT _.RC:$src2),
imm:$cc)>,
EVEX_4V, EVEX_B, Sched<[sched]>;
// Accept explicit immediate argument form instead of comparison code.
let isAsmParserOnly = 1, hasSideEffects = 0 in {
defm rri_alt : AVX512_maskable_cmp_alt<0xC2, MRMSrcReg, _,
(outs VK1:$dst),
(ins _.RC:$src1, _.RC:$src2, u8imm:$cc),
"vcmp"#_.Suffix,
"$cc, $src2, $src1", "$src1, $src2, $cc">, EVEX_4V,
Sched<[sched]>, NotMemoryFoldable;
let mayLoad = 1 in
defm rmi_alt : AVX512_maskable_cmp_alt<0xC2, MRMSrcMem, _,
(outs _.KRC:$dst),
(ins _.RC:$src1, _.ScalarMemOp:$src2, u8imm:$cc),
"vcmp"#_.Suffix,
"$cc, $src2, $src1", "$src1, $src2, $cc">,
EVEX_4V, EVEX_CD8<_.EltSize, CD8VT1>,
Sched<[sched.Folded, sched.ReadAfterFold]>, NotMemoryFoldable;
defm rrb_alt : AVX512_maskable_cmp_alt<0xC2, MRMSrcReg, _,
(outs _.KRC:$dst),
(ins _.RC:$src1, _.RC:$src2, u8imm:$cc),
"vcmp"#_.Suffix,
"$cc, {sae}, $src2, $src1","$src1, $src2, {sae}, $cc">,
EVEX_4V, EVEX_B, Sched<[sched]>, NotMemoryFoldable;
}// let isAsmParserOnly = 1, hasSideEffects = 0
let isCodeGenOnly = 1 in {
let isCommutable = 1 in
def rr : AVX512Ii8<0xC2, MRMSrcReg,
(outs _.KRC:$dst), (ins _.FRC:$src1, _.FRC:$src2, AVXCC:$cc),
!strconcat("vcmp${cc}", _.Suffix,
"\t{$src2, $src1, $dst|$dst, $src1, $src2}"),
(outs _.KRC:$dst), (ins _.FRC:$src1, _.FRC:$src2, u8imm:$cc),
!strconcat("vcmp", _.Suffix,
"\t{$cc, $src2, $src1, $dst|$dst, $src1, $src2, $cc}"),
[(set _.KRC:$dst, (OpNode _.FRC:$src1,
_.FRC:$src2,
imm:$cc))]>,
EVEX_4V, Sched<[sched]>;
def rm : AVX512Ii8<0xC2, MRMSrcMem,
(outs _.KRC:$dst),
(ins _.FRC:$src1, _.ScalarMemOp:$src2, AVXCC:$cc),
!strconcat("vcmp${cc}", _.Suffix,
"\t{$src2, $src1, $dst|$dst, $src1, $src2}"),
(ins _.FRC:$src1, _.ScalarMemOp:$src2, u8imm:$cc),
!strconcat("vcmp", _.Suffix,
"\t{$cc, $src2, $src1, $dst|$dst, $src1, $src2, $cc}"),
[(set _.KRC:$dst, (OpNode _.FRC:$src1,
(_.ScalarLdFrag addr:$src2),
imm:$cc))]>,
@ -2456,18 +2432,18 @@ defm VPCMPUQ : avx512_icmp_cc_rmb_vl<0x1E, "uq", X86pcmpum, X86pcmpum_commute,
multiclass avx512_vcmp_common<X86FoldableSchedWrite sched, X86VectorVTInfo _,
string Name> {
defm rri : AVX512_maskable_cmp<0xC2, MRMSrcReg, _,
(outs _.KRC:$dst), (ins _.RC:$src1, _.RC:$src2,AVXCC:$cc),
"vcmp${cc}"#_.Suffix,
"$src2, $src1", "$src1, $src2",
(outs _.KRC:$dst), (ins _.RC:$src1, _.RC:$src2,u8imm:$cc),
"vcmp"#_.Suffix,
"$cc, $src2, $src1", "$src1, $src2, $cc",
(X86cmpm (_.VT _.RC:$src1),
(_.VT _.RC:$src2),
imm:$cc), 1>,
Sched<[sched]>;
defm rmi : AVX512_maskable_cmp<0xC2, MRMSrcMem, _,
(outs _.KRC:$dst),(ins _.RC:$src1, _.MemOp:$src2, AVXCC:$cc),
"vcmp${cc}"#_.Suffix,
"$src2, $src1", "$src1, $src2",
(outs _.KRC:$dst),(ins _.RC:$src1, _.MemOp:$src2, u8imm:$cc),
"vcmp"#_.Suffix,
"$cc, $src2, $src1", "$src1, $src2, $cc",
(X86cmpm (_.VT _.RC:$src1),
(_.VT (_.LdFrag addr:$src2)),
imm:$cc)>,
@ -2475,42 +2451,14 @@ multiclass avx512_vcmp_common<X86FoldableSchedWrite sched, X86VectorVTInfo _,
defm rmbi : AVX512_maskable_cmp<0xC2, MRMSrcMem, _,
(outs _.KRC:$dst),
(ins _.RC:$src1, _.ScalarMemOp:$src2, AVXCC:$cc),
"vcmp${cc}"#_.Suffix,
"${src2}"##_.BroadcastStr##", $src1",
"$src1, ${src2}"##_.BroadcastStr,
(ins _.RC:$src1, _.ScalarMemOp:$src2, u8imm:$cc),
"vcmp"#_.Suffix,
"$cc, ${src2}"#_.BroadcastStr#", $src1",
"$src1, ${src2}"#_.BroadcastStr#", $cc",
(X86cmpm (_.VT _.RC:$src1),
(_.VT (X86VBroadcast(_.ScalarLdFrag addr:$src2))),
imm:$cc)>,
EVEX_B, Sched<[sched.Folded, sched.ReadAfterFold]>;
// Accept explicit immediate argument form instead of comparison code.
let isAsmParserOnly = 1, hasSideEffects = 0 in {
defm rri_alt : AVX512_maskable_cmp_alt<0xC2, MRMSrcReg, _,
(outs _.KRC:$dst),
(ins _.RC:$src1, _.RC:$src2, u8imm:$cc),
"vcmp"#_.Suffix,
"$cc, $src2, $src1", "$src1, $src2, $cc">,
Sched<[sched]>, NotMemoryFoldable;
let mayLoad = 1 in {
defm rmi_alt : AVX512_maskable_cmp_alt<0xC2, MRMSrcMem, _,
(outs _.KRC:$dst),
(ins _.RC:$src1, _.MemOp:$src2, u8imm:$cc),
"vcmp"#_.Suffix,
"$cc, $src2, $src1", "$src1, $src2, $cc">,
Sched<[sched.Folded, sched.ReadAfterFold]>,
NotMemoryFoldable;
defm rmbi_alt : AVX512_maskable_cmp_alt<0xC2, MRMSrcMem, _,
(outs _.KRC:$dst),
(ins _.RC:$src1, _.ScalarMemOp:$src2, u8imm:$cc),
"vcmp"#_.Suffix,
"$cc, ${src2}"##_.BroadcastStr##", $src1",
"$src1, ${src2}"##_.BroadcastStr##", $cc">,
EVEX_B, Sched<[sched.Folded, sched.ReadAfterFold]>,
NotMemoryFoldable;
}
}
// Patterns for selecting with loads in other operand.
def : Pat<(X86cmpm (_.LdFrag addr:$src2), (_.VT _.RC:$src1),
@ -2542,23 +2490,14 @@ multiclass avx512_vcmp_common<X86FoldableSchedWrite sched, X86VectorVTInfo _,
multiclass avx512_vcmp_sae<X86FoldableSchedWrite sched, X86VectorVTInfo _> {
// comparison code form (VCMP[EQ/LT/LE/...]
defm rrib : AVX512_maskable_cmp<0xC2, MRMSrcReg, _,
(outs _.KRC:$dst),(ins _.RC:$src1, _.RC:$src2, AVXCC:$cc),
"vcmp${cc}"#_.Suffix,
"{sae}, $src2, $src1", "$src1, $src2, {sae}",
(outs _.KRC:$dst),(ins _.RC:$src1, _.RC:$src2, u8imm:$cc),
"vcmp"#_.Suffix,
"$cc, {sae}, $src2, $src1",
"$src1, $src2, {sae}, $cc",
(X86cmpmSAE (_.VT _.RC:$src1),
(_.VT _.RC:$src2),
imm:$cc)>,
EVEX_B, Sched<[sched]>;
let isAsmParserOnly = 1, hasSideEffects = 0 in {
defm rrib_alt : AVX512_maskable_cmp_alt<0xC2, MRMSrcReg, _,
(outs _.KRC:$dst),
(ins _.RC:$src1, _.RC:$src2, u8imm:$cc),
"vcmp"#_.Suffix,
"$cc, {sae}, $src2, $src1",
"$src1, $src2, {sae}, $cc">,
EVEX_B, Sched<[sched]>, NotMemoryFoldable;
}
}
multiclass avx512_vcmp<X86SchedWriteWidths sched, AVX512VLVectorVTInfo _> {

View File

@ -600,16 +600,6 @@ def offset64_32 : X86MemOffsOperand<i64imm, "printMemOffs32",
def offset64_64 : X86MemOffsOperand<i64imm, "printMemOffs64",
X86MemOffs64_64AsmOperand>;
def SSECC : Operand<i8> {
let PrintMethod = "printSSEAVXCC";
let OperandType = "OPERAND_IMMEDIATE";
}
def AVXCC : Operand<i8> {
let PrintMethod = "printSSEAVXCC";
let OperandType = "OPERAND_IMMEDIATE";
}
class ImmSExtAsmOperandClass : AsmOperandClass {
let SuperClasses = [ImmAsmOperand];
let RenderMethod = "addImmOperands";

View File

@ -1768,68 +1768,53 @@ let Predicates = [HasAVX, NoVLX] in {
// sse12_cmp_scalar - sse 1 & 2 compare scalar instructions
multiclass sse12_cmp_scalar<RegisterClass RC, X86MemOperand x86memop,
Operand CC, SDNode OpNode, ValueType VT,
PatFrag ld_frag, string asm, string asm_alt,
SDNode OpNode, ValueType VT,
PatFrag ld_frag, string asm,
X86FoldableSchedWrite sched> {
let isCommutable = 1 in
def rr : SIi8<0xC2, MRMSrcReg,
(outs RC:$dst), (ins RC:$src1, RC:$src2, CC:$cc), asm,
(outs RC:$dst), (ins RC:$src1, RC:$src2, u8imm:$cc), asm,
[(set RC:$dst, (OpNode (VT RC:$src1), RC:$src2, imm:$cc))]>,
Sched<[sched]>;
def rm : SIi8<0xC2, MRMSrcMem,
(outs RC:$dst), (ins RC:$src1, x86memop:$src2, CC:$cc), asm,
(outs RC:$dst), (ins RC:$src1, x86memop:$src2, u8imm:$cc), asm,
[(set RC:$dst, (OpNode (VT RC:$src1),
(ld_frag addr:$src2), imm:$cc))]>,
Sched<[sched.Folded, sched.ReadAfterFold]>;
// Accept explicit immediate argument form instead of comparison code.
let isAsmParserOnly = 1, hasSideEffects = 0 in {
def rr_alt : SIi8<0xC2, MRMSrcReg, (outs RC:$dst),
(ins RC:$src1, RC:$src2, u8imm:$cc), asm_alt, []>,
Sched<[sched]>, NotMemoryFoldable;
let mayLoad = 1 in
def rm_alt : SIi8<0xC2, MRMSrcMem, (outs RC:$dst),
(ins RC:$src1, x86memop:$src2, u8imm:$cc), asm_alt, []>,
Sched<[sched.Folded, sched.ReadAfterFold]>, NotMemoryFoldable;
}
}
let ExeDomain = SSEPackedSingle in
defm VCMPSS : sse12_cmp_scalar<FR32, f32mem, AVXCC, X86cmps, f32, loadf32,
"cmp${cc}ss\t{$src2, $src1, $dst|$dst, $src1, $src2}",
defm VCMPSS : sse12_cmp_scalar<FR32, f32mem, X86cmps, f32, loadf32,
"cmpss\t{$cc, $src2, $src1, $dst|$dst, $src1, $src2, $cc}",
SchedWriteFCmpSizes.PS.Scl>, XS, VEX_4V, VEX_LIG, VEX_WIG;
let ExeDomain = SSEPackedDouble in
defm VCMPSD : sse12_cmp_scalar<FR64, f64mem, AVXCC, X86cmps, f64, loadf64,
"cmp${cc}sd\t{$src2, $src1, $dst|$dst, $src1, $src2}",
defm VCMPSD : sse12_cmp_scalar<FR64, f64mem, X86cmps, f64, loadf64,
"cmpsd\t{$cc, $src2, $src1, $dst|$dst, $src1, $src2, $cc}",
SchedWriteFCmpSizes.PD.Scl>,
XD, VEX_4V, VEX_LIG, VEX_WIG;
let Constraints = "$src1 = $dst" in {
let ExeDomain = SSEPackedSingle in
defm CMPSS : sse12_cmp_scalar<FR32, f32mem, SSECC, X86cmps, f32, loadf32,
"cmp${cc}ss\t{$src2, $dst|$dst, $src2}",
defm CMPSS : sse12_cmp_scalar<FR32, f32mem, X86cmps, f32, loadf32,
"cmpss\t{$cc, $src2, $dst|$dst, $src2, $cc}",
SchedWriteFCmpSizes.PS.Scl>, XS;
let ExeDomain = SSEPackedDouble in
defm CMPSD : sse12_cmp_scalar<FR64, f64mem, SSECC, X86cmps, f64, loadf64,
"cmp${cc}sd\t{$src2, $dst|$dst, $src2}",
defm CMPSD : sse12_cmp_scalar<FR64, f64mem, X86cmps, f64, loadf64,
"cmpsd\t{$cc, $src2, $dst|$dst, $src2, $cc}",
SchedWriteFCmpSizes.PD.Scl>, XD;
}
multiclass sse12_cmp_scalar_int<Operand memop, Operand CC,
multiclass sse12_cmp_scalar_int<Operand memop,
Intrinsic Int, string asm, X86FoldableSchedWrite sched,
ComplexPattern mem_cpat> {
def rr_Int : SIi8<0xC2, MRMSrcReg, (outs VR128:$dst),
(ins VR128:$src1, VR128:$src, CC:$cc), asm,
(ins VR128:$src1, VR128:$src, u8imm:$cc), asm,
[(set VR128:$dst, (Int VR128:$src1,
VR128:$src, imm:$cc))]>,
Sched<[sched]>;
let mayLoad = 1 in
def rm_Int : SIi8<0xC2, MRMSrcMem, (outs VR128:$dst),
(ins VR128:$src1, memop:$src, CC:$cc), asm,
(ins VR128:$src1, memop:$src, u8imm:$cc), asm,
[(set VR128:$dst, (Int VR128:$src1,
mem_cpat:$src, imm:$cc))]>,
Sched<[sched.Folded, sched.ReadAfterFold]>;
@ -1838,22 +1823,22 @@ let mayLoad = 1 in
let isCodeGenOnly = 1 in {
// Aliases to match intrinsics which expect XMM operand(s).
let ExeDomain = SSEPackedSingle in
defm VCMPSS : sse12_cmp_scalar_int<ssmem, AVXCC, int_x86_sse_cmp_ss,
"cmp${cc}ss\t{$src, $src1, $dst|$dst, $src1, $src}",
defm VCMPSS : sse12_cmp_scalar_int<ssmem, int_x86_sse_cmp_ss,
"cmpss\t{$cc, $src, $src1, $dst|$dst, $src1, $src, $cc}",
SchedWriteFCmpSizes.PS.Scl, sse_load_f32>, XS, VEX_4V;
let ExeDomain = SSEPackedDouble in
defm VCMPSD : sse12_cmp_scalar_int<sdmem, AVXCC, int_x86_sse2_cmp_sd,
"cmp${cc}sd\t{$src, $src1, $dst|$dst, $src1, $src}",
defm VCMPSD : sse12_cmp_scalar_int<sdmem, int_x86_sse2_cmp_sd,
"cmpsd\t{$cc, $src, $src1, $dst|$dst, $src1, $src, $cc}",
SchedWriteFCmpSizes.PD.Scl, sse_load_f64>,
XD, VEX_4V;
let Constraints = "$src1 = $dst" in {
let ExeDomain = SSEPackedSingle in
defm CMPSS : sse12_cmp_scalar_int<ssmem, SSECC, int_x86_sse_cmp_ss,
"cmp${cc}ss\t{$src, $dst|$dst, $src}",
defm CMPSS : sse12_cmp_scalar_int<ssmem, int_x86_sse_cmp_ss,
"cmpss\t{$cc, $src, $dst|$dst, $src, $cc}",
SchedWriteFCmpSizes.PS.Scl, sse_load_f32>, XS;
let ExeDomain = SSEPackedDouble in
defm CMPSD : sse12_cmp_scalar_int<sdmem, SSECC, int_x86_sse2_cmp_sd,
"cmp${cc}sd\t{$src, $dst|$dst, $src}",
defm CMPSD : sse12_cmp_scalar_int<sdmem, int_x86_sse2_cmp_sd,
"cmpsd\t{$cc, $src, $dst|$dst, $src, $cc}",
SchedWriteFCmpSizes.PD.Scl, sse_load_f64>, XD;
}
}
@ -1945,56 +1930,38 @@ let Defs = [EFLAGS] in {
// sse12_cmp_packed - sse 1 & 2 compare packed instructions
multiclass sse12_cmp_packed<RegisterClass RC, X86MemOperand x86memop,
Operand CC, ValueType VT, string asm,
string asm_alt, X86FoldableSchedWrite sched,
ValueType VT, string asm,
X86FoldableSchedWrite sched,
Domain d, PatFrag ld_frag> {
let isCommutable = 1 in
def rri : PIi8<0xC2, MRMSrcReg,
(outs RC:$dst), (ins RC:$src1, RC:$src2, CC:$cc), asm,
(outs RC:$dst), (ins RC:$src1, RC:$src2, u8imm:$cc), asm,
[(set RC:$dst, (VT (X86cmpp RC:$src1, RC:$src2, imm:$cc)))], d>,
Sched<[sched]>;
def rmi : PIi8<0xC2, MRMSrcMem,
(outs RC:$dst), (ins RC:$src1, x86memop:$src2, CC:$cc), asm,
(outs RC:$dst), (ins RC:$src1, x86memop:$src2, u8imm:$cc), asm,
[(set RC:$dst,
(VT (X86cmpp RC:$src1, (ld_frag addr:$src2), imm:$cc)))], d>,
Sched<[sched.Folded, sched.ReadAfterFold]>;
// Accept explicit immediate argument form instead of comparison code.
let isAsmParserOnly = 1, hasSideEffects = 0 in {
def rri_alt : PIi8<0xC2, MRMSrcReg,
(outs RC:$dst), (ins RC:$src1, RC:$src2, u8imm:$cc),
asm_alt, [], d>, Sched<[sched]>, NotMemoryFoldable;
let mayLoad = 1 in
def rmi_alt : PIi8<0xC2, MRMSrcMem,
(outs RC:$dst), (ins RC:$src1, x86memop:$src2, u8imm:$cc),
asm_alt, [], d>, Sched<[sched.Folded, sched.ReadAfterFold]>,
NotMemoryFoldable;
}
}
defm VCMPPS : sse12_cmp_packed<VR128, f128mem, AVXCC, v4f32,
"cmp${cc}ps\t{$src2, $src1, $dst|$dst, $src1, $src2}",
defm VCMPPS : sse12_cmp_packed<VR128, f128mem, v4f32,
"cmpps\t{$cc, $src2, $src1, $dst|$dst, $src1, $src2, $cc}",
SchedWriteFCmpSizes.PS.XMM, SSEPackedSingle, loadv4f32>, PS, VEX_4V, VEX_WIG;
defm VCMPPD : sse12_cmp_packed<VR128, f128mem, AVXCC, v2f64,
"cmp${cc}pd\t{$src2, $src1, $dst|$dst, $src1, $src2}",
defm VCMPPD : sse12_cmp_packed<VR128, f128mem, v2f64,
"cmppd\t{$cc, $src2, $src1, $dst|$dst, $src1, $src2, $cc}",
SchedWriteFCmpSizes.PD.XMM, SSEPackedDouble, loadv2f64>, PD, VEX_4V, VEX_WIG;
defm VCMPPSY : sse12_cmp_packed<VR256, f256mem, AVXCC, v8f32,
"cmp${cc}ps\t{$src2, $src1, $dst|$dst, $src1, $src2}",
defm VCMPPSY : sse12_cmp_packed<VR256, f256mem, v8f32,
"cmpps\t{$cc, $src2, $src1, $dst|$dst, $src1, $src2, $cc}",
SchedWriteFCmpSizes.PS.YMM, SSEPackedSingle, loadv8f32>, PS, VEX_4V, VEX_L, VEX_WIG;
defm VCMPPDY : sse12_cmp_packed<VR256, f256mem, AVXCC, v4f64,
"cmp${cc}pd\t{$src2, $src1, $dst|$dst, $src1, $src2}",
defm VCMPPDY : sse12_cmp_packed<VR256, f256mem, v4f64,
"cmppd\t{$cc, $src2, $src1, $dst|$dst, $src1, $src2, $cc}",
SchedWriteFCmpSizes.PD.YMM, SSEPackedDouble, loadv4f64>, PD, VEX_4V, VEX_L, VEX_WIG;
let Constraints = "$src1 = $dst" in {
defm CMPPS : sse12_cmp_packed<VR128, f128mem, SSECC, v4f32,
"cmp${cc}ps\t{$src2, $dst|$dst, $src2}",
defm CMPPS : sse12_cmp_packed<VR128, f128mem, v4f32,
"cmpps\t{$cc, $src2, $dst|$dst, $src2, $cc}",
SchedWriteFCmpSizes.PS.XMM, SSEPackedSingle, memopv4f32>, PS;
defm CMPPD : sse12_cmp_packed<VR128, f128mem, SSECC, v2f64,
"cmp${cc}pd\t{$src2, $dst|$dst, $src2}",
defm CMPPD : sse12_cmp_packed<VR128, f128mem, v2f64,
"cmppd\t{$cc, $src2, $dst|$dst, $src2, $cc}",
SchedWriteFCmpSizes.PD.XMM, SSEPackedDouble, memopv2f64>, PD;
}

View File

@ -303,27 +303,27 @@
// CHECK: encoding: [0xc5,0xe9,0x14,0x6c,0xcb,0xfc]
vunpcklpd -4(%ebx,%ecx,8), %xmm2, %xmm5
// CHECK: vcmpps $0, %xmm0, %xmm6, %xmm1
// CHECK: vcmpeqps %xmm0, %xmm6, %xmm1
// CHECK: encoding: [0xc5,0xc8,0xc2,0xc8,0x00]
vcmpps $0, %xmm0, %xmm6, %xmm1
// CHECK: vcmpps $0, (%eax), %xmm6, %xmm1
// CHECK: vcmpeqps (%eax), %xmm6, %xmm1
// CHECK: encoding: [0xc5,0xc8,0xc2,0x08,0x00]
vcmpps $0, (%eax), %xmm6, %xmm1
// CHECK: vcmpps $7, %xmm0, %xmm6, %xmm1
// CHECK: vcmpordps %xmm0, %xmm6, %xmm1
// CHECK: encoding: [0xc5,0xc8,0xc2,0xc8,0x07]
vcmpps $7, %xmm0, %xmm6, %xmm1
// CHECK: vcmppd $0, %xmm0, %xmm6, %xmm1
// CHECK: vcmpeqpd %xmm0, %xmm6, %xmm1
// CHECK: encoding: [0xc5,0xc9,0xc2,0xc8,0x00]
vcmppd $0, %xmm0, %xmm6, %xmm1
// CHECK: vcmppd $0, (%eax), %xmm6, %xmm1
// CHECK: vcmpeqpd (%eax), %xmm6, %xmm1
// CHECK: encoding: [0xc5,0xc9,0xc2,0x08,0x00]
vcmppd $0, (%eax), %xmm6, %xmm1
// CHECK: vcmppd $7, %xmm0, %xmm6, %xmm1
// CHECK: vcmpordpd %xmm0, %xmm6, %xmm1
// CHECK: encoding: [0xc5,0xc9,0xc2,0xc8,0x07]
vcmppd $7, %xmm0, %xmm6, %xmm1

View File

@ -262,28 +262,28 @@ cmovnae %bx,%bx
// CHECK: encoding: [0x0f,0x44,0xd0]
cmovzl %eax,%edx
// CHECK: cmpps $0, %xmm0, %xmm1
// CHECK: cmpeqps %xmm0, %xmm1
// CHECK: encoding: [0x0f,0xc2,0xc8,0x00]
cmpps $0, %xmm0, %xmm1
// CHECK: cmpps $0, (%eax), %xmm1
// CHECK: cmpeqps (%eax), %xmm1
// CHECK: encoding: [0x0f,0xc2,0x08,0x00]
cmpps $0, 0(%eax), %xmm1
// CHECK: cmppd $0, %xmm0, %xmm1
// CHECK: cmpeqpd %xmm0, %xmm1
// CHECK: encoding: [0x66,0x0f,0xc2,0xc8,0x00]
cmppd $0, %xmm0, %xmm1
// CHECK: cmppd $0, (%eax), %xmm1
// CHECK: cmpeqpd (%eax), %xmm1
// CHECK: encoding: [0x66,0x0f,0xc2,0x08,0x00]
cmppd $0, 0(%eax), %xmm1
// CHECK: cmpss $0, %xmm0, %xmm1
// CHECK: cmpeqss %xmm0, %xmm1
// CHECK: encoding: [0xf3,0x0f,0xc2,0xc8,0x00]
cmpss $0, %xmm0, %xmm1
// CHECK: cmpss $0, (%eax), %xmm1
// CHECK: cmpeqss (%eax), %xmm1
// CHECK: encoding: [0xf3,0x0f,0xc2,0x08,0x00]
cmpss $0, 0(%eax), %xmm1
// CHECK: cmpsd $0, %xmm0, %xmm1
// CHECK: cmpeqsd %xmm0, %xmm1
// CHECK: encoding: [0xf2,0x0f,0xc2,0xc8,0x00]
cmpsd $0, %xmm0, %xmm1
// CHECK: cmpsd $0, (%eax), %xmm1
// CHECK: cmpeqsd (%eax), %xmm1
// CHECK: encoding: [0xf2,0x0f,0xc2,0x08,0x00]
cmpsd $0, 0(%eax), %xmm1

View File

@ -304,27 +304,27 @@ vdivpd -4(%rcx,%rbx,8), %xmm10, %xmm11
// CHECK: encoding: [0xc5,0x19,0x14,0x7c,0xcb,0xfc]
vunpcklpd -4(%rbx,%rcx,8), %xmm12, %xmm15
// CHECK: vcmpps $0, %xmm10, %xmm12, %xmm15
// CHECK: vcmpeqps %xmm10, %xmm12, %xmm15
// CHECK: encoding: [0xc4,0x41,0x18,0xc2,0xfa,0x00]
vcmpps $0, %xmm10, %xmm12, %xmm15
// CHECK: vcmpps $0, (%rax), %xmm12, %xmm15
// CHECK: vcmpeqps (%rax), %xmm12, %xmm15
// CHECK: encoding: [0xc5,0x18,0xc2,0x38,0x00]
vcmpps $0, (%rax), %xmm12, %xmm15
// CHECK: vcmpps $7, %xmm10, %xmm12, %xmm15
// CHECK: vcmpordps %xmm10, %xmm12, %xmm15
// CHECK: encoding: [0xc4,0x41,0x18,0xc2,0xfa,0x07]
vcmpps $7, %xmm10, %xmm12, %xmm15
// CHECK: vcmppd $0, %xmm10, %xmm12, %xmm15
// CHECK: vcmpeqpd %xmm10, %xmm12, %xmm15
// CHECK: encoding: [0xc4,0x41,0x19,0xc2,0xfa,0x00]
vcmppd $0, %xmm10, %xmm12, %xmm15
// CHECK: vcmppd $0, (%rax), %xmm12, %xmm15
// CHECK: vcmpeqpd (%rax), %xmm12, %xmm15
// CHECK: encoding: [0xc5,0x19,0xc2,0x38,0x00]
vcmppd $0, (%rax), %xmm12, %xmm15
// CHECK: vcmppd $7, %xmm10, %xmm12, %xmm15
// CHECK: vcmpordpd %xmm10, %xmm12, %xmm15
// CHECK: encoding: [0xc4,0x41,0x19,0xc2,0xfa,0x07]
vcmppd $7, %xmm10, %xmm12, %xmm15

View File

@ -202,10 +202,10 @@ xorps (%rax), %xmm2
# CHECK-NEXT: 1 1 1.00 * andnps (%rax), %xmm2
# CHECK-NEXT: 1 1 0.50 andps %xmm0, %xmm2
# CHECK-NEXT: 1 1 1.00 * andps (%rax), %xmm2
# CHECK-NEXT: 1 5 5.00 cmpps $0, %xmm0, %xmm2
# CHECK-NEXT: 1 5 5.00 * cmpps $0, (%rax), %xmm2
# CHECK-NEXT: 1 5 5.00 cmpss $0, %xmm0, %xmm2
# CHECK-NEXT: 1 5 5.00 * cmpss $0, (%rax), %xmm2
# CHECK-NEXT: 1 5 5.00 cmpeqps %xmm0, %xmm2
# CHECK-NEXT: 1 5 5.00 * cmpeqps (%rax), %xmm2
# CHECK-NEXT: 1 5 5.00 cmpeqss %xmm0, %xmm2
# CHECK-NEXT: 1 5 5.00 * cmpeqss (%rax), %xmm2
# CHECK-NEXT: 1 9 4.50 comiss %xmm0, %xmm1
# CHECK-NEXT: 1 10 5.00 * comiss (%rax), %xmm1
# CHECK-NEXT: 1 5 5.00 cvtpi2ps %mm0, %xmm2
@ -337,10 +337,10 @@ xorps (%rax), %xmm2
# CHECK-NEXT: 1.00 - andnps (%rax), %xmm2
# CHECK-NEXT: 0.50 0.50 andps %xmm0, %xmm2
# CHECK-NEXT: 1.00 - andps (%rax), %xmm2
# CHECK-NEXT: 5.00 - cmpps $0, %xmm0, %xmm2
# CHECK-NEXT: 5.00 - cmpps $0, (%rax), %xmm2
# CHECK-NEXT: 5.00 - cmpss $0, %xmm0, %xmm2
# CHECK-NEXT: 5.00 - cmpss $0, (%rax), %xmm2
# CHECK-NEXT: 5.00 - cmpeqps %xmm0, %xmm2
# CHECK-NEXT: 5.00 - cmpeqps (%rax), %xmm2
# CHECK-NEXT: 5.00 - cmpeqss %xmm0, %xmm2
# CHECK-NEXT: 5.00 - cmpeqss (%rax), %xmm2
# CHECK-NEXT: 4.50 4.50 comiss %xmm0, %xmm1
# CHECK-NEXT: 5.00 5.00 comiss (%rax), %xmm1
# CHECK-NEXT: - 5.00 cvtpi2ps %mm0, %xmm2

View File

@ -416,10 +416,10 @@ xorpd (%rax), %xmm2
# CHECK-NEXT: 1 1 0.50 andpd %xmm0, %xmm2
# CHECK-NEXT: 1 1 1.00 * andpd (%rax), %xmm2
# CHECK-NEXT: 1 1 1.00 * * U clflush (%rax)
# CHECK-NEXT: 1 6 3.00 cmppd $0, %xmm0, %xmm2
# CHECK-NEXT: 1 7 3.50 * cmppd $0, (%rax), %xmm2
# CHECK-NEXT: 1 5 5.00 cmpsd $0, %xmm0, %xmm2
# CHECK-NEXT: 1 5 5.00 * cmpsd $0, (%rax), %xmm2
# CHECK-NEXT: 1 6 3.00 cmpeqpd %xmm0, %xmm2
# CHECK-NEXT: 1 7 3.50 * cmpeqpd (%rax), %xmm2
# CHECK-NEXT: 1 5 5.00 cmpeqsd %xmm0, %xmm2
# CHECK-NEXT: 1 5 5.00 * cmpeqsd (%rax), %xmm2
# CHECK-NEXT: 1 9 4.50 comisd %xmm0, %xmm1
# CHECK-NEXT: 1 10 5.00 * comisd (%rax), %xmm1
# CHECK-NEXT: 1 7 3.50 cvtdq2pd %xmm0, %xmm2
@ -694,10 +694,10 @@ xorpd (%rax), %xmm2
# CHECK-NEXT: 0.50 0.50 andpd %xmm0, %xmm2
# CHECK-NEXT: 1.00 - andpd (%rax), %xmm2
# CHECK-NEXT: 1.00 - clflush (%rax)
# CHECK-NEXT: 3.00 3.00 cmppd $0, %xmm0, %xmm2
# CHECK-NEXT: 3.50 3.50 cmppd $0, (%rax), %xmm2
# CHECK-NEXT: 5.00 - cmpsd $0, %xmm0, %xmm2
# CHECK-NEXT: 5.00 - cmpsd $0, (%rax), %xmm2
# CHECK-NEXT: 3.00 3.00 cmpeqpd %xmm0, %xmm2
# CHECK-NEXT: 3.50 3.50 cmpeqpd (%rax), %xmm2
# CHECK-NEXT: 5.00 - cmpeqsd %xmm0, %xmm2
# CHECK-NEXT: 5.00 - cmpeqsd (%rax), %xmm2
# CHECK-NEXT: 4.50 4.50 comisd %xmm0, %xmm1
# CHECK-NEXT: 5.00 5.00 comisd (%rax), %xmm1
# CHECK-NEXT: 3.50 3.50 cvtdq2pd %xmm0, %xmm2

View File

@ -1098,18 +1098,18 @@ vzeroupper
# CHECK-NEXT: 2 6 2.00 * vbroadcastsd (%rax), %ymm2
# CHECK-NEXT: 1 7 0.50 * vbroadcastss (%rax), %xmm2
# CHECK-NEXT: 2 6 2.00 * vbroadcastss (%rax), %ymm2
# CHECK-NEXT: 1 2 1.00 vcmppd $0, %xmm0, %xmm1, %xmm2
# CHECK-NEXT: 1 7 1.00 * vcmppd $0, (%rax), %xmm1, %xmm2
# CHECK-NEXT: 2 2 2.00 vcmppd $0, %ymm0, %ymm1, %ymm2
# CHECK-NEXT: 2 7 2.00 * vcmppd $0, (%rax), %ymm1, %ymm2
# CHECK-NEXT: 1 2 1.00 vcmpps $0, %xmm0, %xmm1, %xmm2
# CHECK-NEXT: 1 7 1.00 * vcmpps $0, (%rax), %xmm1, %xmm2
# CHECK-NEXT: 2 2 2.00 vcmpps $0, %ymm0, %ymm1, %ymm2
# CHECK-NEXT: 2 7 2.00 * vcmpps $0, (%rax), %ymm1, %ymm2
# CHECK-NEXT: 1 2 1.00 vcmpsd $0, %xmm0, %xmm1, %xmm2
# CHECK-NEXT: 1 7 1.00 * vcmpsd $0, (%rax), %xmm1, %xmm2
# CHECK-NEXT: 1 2 1.00 vcmpss $0, %xmm0, %xmm1, %xmm2
# CHECK-NEXT: 1 7 1.00 * vcmpss $0, (%rax), %xmm1, %xmm2
# CHECK-NEXT: 1 2 1.00 vcmpeqpd %xmm0, %xmm1, %xmm2
# CHECK-NEXT: 1 7 1.00 * vcmpeqpd (%rax), %xmm1, %xmm2
# CHECK-NEXT: 2 2 2.00 vcmpeqpd %ymm0, %ymm1, %ymm2
# CHECK-NEXT: 2 7 2.00 * vcmpeqpd (%rax), %ymm1, %ymm2
# CHECK-NEXT: 1 2 1.00 vcmpeqps %xmm0, %xmm1, %xmm2
# CHECK-NEXT: 1 7 1.00 * vcmpeqps (%rax), %xmm1, %xmm2
# CHECK-NEXT: 2 2 2.00 vcmpeqps %ymm0, %ymm1, %ymm2
# CHECK-NEXT: 2 7 2.00 * vcmpeqps (%rax), %ymm1, %ymm2
# CHECK-NEXT: 1 2 1.00 vcmpeqsd %xmm0, %xmm1, %xmm2
# CHECK-NEXT: 1 7 1.00 * vcmpeqsd (%rax), %xmm1, %xmm2
# CHECK-NEXT: 1 2 1.00 vcmpeqss %xmm0, %xmm1, %xmm2
# CHECK-NEXT: 1 7 1.00 * vcmpeqss (%rax), %xmm1, %xmm2
# CHECK-NEXT: 2 1 1.00 vcomisd %xmm0, %xmm1
# CHECK-NEXT: 2 6 1.00 * vcomisd (%rax), %xmm1
# CHECK-NEXT: 2 1 1.00 vcomiss %xmm0, %xmm1
@ -1821,18 +1821,18 @@ vzeroupper
# CHECK-NEXT: 0.50 0.50 - - - - - - 2.00 2.00 - - - - 1.00 1.00 - - - 0.50 0.50 - - vbroadcastsd (%rax), %ymm2
# CHECK-NEXT: 0.50 0.50 - - - - - - 0.50 0.50 - - - - 0.50 0.50 - - - 0.50 0.50 - - vbroadcastss (%rax), %xmm2
# CHECK-NEXT: 0.50 0.50 - - - - - - 2.00 2.00 - - - - 1.00 1.00 - - - 0.50 0.50 - - vbroadcastss (%rax), %ymm2
# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 1.00 - - - - - - - - vcmppd $0, %xmm0, %xmm1, %xmm2
# CHECK-NEXT: 0.50 0.50 - - - - - - 0.50 0.50 - - - - 1.00 - - - - 0.50 0.50 - - vcmppd $0, (%rax), %xmm1, %xmm2
# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 2.00 - - - - - - - - vcmppd $0, %ymm0, %ymm1, %ymm2
# CHECK-NEXT: 1.00 1.00 - - - - - - 0.50 0.50 - - - - 2.00 - - - - 1.00 1.00 - - vcmppd $0, (%rax), %ymm1, %ymm2
# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 1.00 - - - - - - - - vcmpps $0, %xmm0, %xmm1, %xmm2
# CHECK-NEXT: 0.50 0.50 - - - - - - 0.50 0.50 - - - - 1.00 - - - - 0.50 0.50 - - vcmpps $0, (%rax), %xmm1, %xmm2
# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 2.00 - - - - - - - - vcmpps $0, %ymm0, %ymm1, %ymm2
# CHECK-NEXT: 1.00 1.00 - - - - - - 0.50 0.50 - - - - 2.00 - - - - 1.00 1.00 - - vcmpps $0, (%rax), %ymm1, %ymm2
# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 1.00 - - - - - - - - vcmpsd $0, %xmm0, %xmm1, %xmm2
# CHECK-NEXT: 0.50 0.50 - - - - - - 0.50 0.50 - - - - 1.00 - - - - 0.50 0.50 - - vcmpsd $0, (%rax), %xmm1, %xmm2
# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 1.00 - - - - - - - - vcmpss $0, %xmm0, %xmm1, %xmm2
# CHECK-NEXT: 0.50 0.50 - - - - - - 0.50 0.50 - - - - 1.00 - - - - 0.50 0.50 - - vcmpss $0, (%rax), %xmm1, %xmm2
# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 1.00 - - - - - - - - vcmpeqpd %xmm0, %xmm1, %xmm2
# CHECK-NEXT: 0.50 0.50 - - - - - - 0.50 0.50 - - - - 1.00 - - - - 0.50 0.50 - - vcmpeqpd (%rax), %xmm1, %xmm2
# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 2.00 - - - - - - - - vcmpeqpd %ymm0, %ymm1, %ymm2
# CHECK-NEXT: 1.00 1.00 - - - - - - 0.50 0.50 - - - - 2.00 - - - - 1.00 1.00 - - vcmpeqpd (%rax), %ymm1, %ymm2
# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 1.00 - - - - - - - - vcmpeqps %xmm0, %xmm1, %xmm2
# CHECK-NEXT: 0.50 0.50 - - - - - - 0.50 0.50 - - - - 1.00 - - - - 0.50 0.50 - - vcmpeqps (%rax), %xmm1, %xmm2
# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 2.00 - - - - - - - - vcmpeqps %ymm0, %ymm1, %ymm2
# CHECK-NEXT: 1.00 1.00 - - - - - - 0.50 0.50 - - - - 2.00 - - - - 1.00 1.00 - - vcmpeqps (%rax), %ymm1, %ymm2
# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 1.00 - - - - - - - - vcmpeqsd %xmm0, %xmm1, %xmm2
# CHECK-NEXT: 0.50 0.50 - - - - - - 0.50 0.50 - - - - 1.00 - - - - 0.50 0.50 - - vcmpeqsd (%rax), %xmm1, %xmm2
# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 1.00 - - - - - - - - vcmpeqss %xmm0, %xmm1, %xmm2
# CHECK-NEXT: 0.50 0.50 - - - - - - 0.50 0.50 - - - - 1.00 - - - - 0.50 0.50 - - vcmpeqss (%rax), %xmm1, %xmm2
# CHECK-NEXT: - - - - - 1.00 - - 0.50 0.50 - - - - 1.00 - - - - - - - - vcomisd %xmm0, %xmm1
# CHECK-NEXT: 0.50 0.50 - - - 1.00 - - 0.50 0.50 - - - - 1.00 - - - - 0.50 0.50 - - vcomisd (%rax), %xmm1
# CHECK-NEXT: - - - - - 1.00 - - 0.50 0.50 - - - - 1.00 - - - - - - - - vcomiss %xmm0, %xmm1

View File

@ -202,10 +202,10 @@ xorps (%rax), %xmm2
# CHECK-NEXT: 1 7 0.50 * andnps (%rax), %xmm2
# CHECK-NEXT: 1 2 0.50 andps %xmm0, %xmm2
# CHECK-NEXT: 1 7 0.50 * andps (%rax), %xmm2
# CHECK-NEXT: 1 2 1.00 cmpps $0, %xmm0, %xmm2
# CHECK-NEXT: 1 7 1.00 * cmpps $0, (%rax), %xmm2
# CHECK-NEXT: 1 2 1.00 cmpss $0, %xmm0, %xmm2
# CHECK-NEXT: 1 7 1.00 * cmpss $0, (%rax), %xmm2
# CHECK-NEXT: 1 2 1.00 cmpeqps %xmm0, %xmm2
# CHECK-NEXT: 1 7 1.00 * cmpeqps (%rax), %xmm2
# CHECK-NEXT: 1 2 1.00 cmpeqss %xmm0, %xmm2
# CHECK-NEXT: 1 7 1.00 * cmpeqss (%rax), %xmm2
# CHECK-NEXT: 2 1 1.00 comiss %xmm0, %xmm1
# CHECK-NEXT: 2 6 1.00 * comiss (%rax), %xmm1
# CHECK-NEXT: 2 4 1.00 cvtpi2ps %mm0, %xmm2
@ -358,10 +358,10 @@ xorps (%rax), %xmm2
# CHECK-NEXT: 0.50 0.50 - - - - - - 0.50 0.50 - - - - 0.50 0.50 - - - 0.50 0.50 - - andnps (%rax), %xmm2
# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 0.50 0.50 - - - - - - - andps %xmm0, %xmm2
# CHECK-NEXT: 0.50 0.50 - - - - - - 0.50 0.50 - - - - 0.50 0.50 - - - 0.50 0.50 - - andps (%rax), %xmm2
# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 1.00 - - - - - - - - cmpps $0, %xmm0, %xmm2
# CHECK-NEXT: 0.50 0.50 - - - - - - 0.50 0.50 - - - - 1.00 - - - - 0.50 0.50 - - cmpps $0, (%rax), %xmm2
# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 1.00 - - - - - - - - cmpss $0, %xmm0, %xmm2
# CHECK-NEXT: 0.50 0.50 - - - - - - 0.50 0.50 - - - - 1.00 - - - - 0.50 0.50 - - cmpss $0, (%rax), %xmm2
# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 1.00 - - - - - - - - cmpeqps %xmm0, %xmm2
# CHECK-NEXT: 0.50 0.50 - - - - - - 0.50 0.50 - - - - 1.00 - - - - 0.50 0.50 - - cmpeqps (%rax), %xmm2
# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 1.00 - - - - - - - - cmpeqss %xmm0, %xmm2
# CHECK-NEXT: 0.50 0.50 - - - - - - 0.50 0.50 - - - - 1.00 - - - - 0.50 0.50 - - cmpeqss (%rax), %xmm2
# CHECK-NEXT: - - - - - 1.00 - - 0.50 0.50 - - - - 1.00 - - - - - - - - comiss %xmm0, %xmm1
# CHECK-NEXT: 0.50 0.50 - - - 1.00 - - 0.50 0.50 - - - - 1.00 - - - - 0.50 0.50 - - comiss (%rax), %xmm1
# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - 1.00 - - - - - - - cvtpi2ps %mm0, %xmm2

View File

@ -416,10 +416,10 @@ xorpd (%rax), %xmm2
# CHECK-NEXT: 1 2 0.50 andpd %xmm0, %xmm2
# CHECK-NEXT: 1 7 0.50 * andpd (%rax), %xmm2
# CHECK-NEXT: 1 5 0.50 * * U clflush (%rax)
# CHECK-NEXT: 1 2 1.00 cmppd $0, %xmm0, %xmm2
# CHECK-NEXT: 1 7 1.00 * cmppd $0, (%rax), %xmm2
# CHECK-NEXT: 1 2 1.00 cmpsd $0, %xmm0, %xmm2
# CHECK-NEXT: 1 7 1.00 * cmpsd $0, (%rax), %xmm2
# CHECK-NEXT: 1 2 1.00 cmpeqpd %xmm0, %xmm2
# CHECK-NEXT: 1 7 1.00 * cmpeqpd (%rax), %xmm2
# CHECK-NEXT: 1 2 1.00 cmpeqsd %xmm0, %xmm2
# CHECK-NEXT: 1 7 1.00 * cmpeqsd (%rax), %xmm2
# CHECK-NEXT: 2 1 1.00 comisd %xmm0, %xmm1
# CHECK-NEXT: 2 6 1.00 * comisd (%rax), %xmm1
# CHECK-NEXT: 2 8 1.00 cvtdq2pd %xmm0, %xmm2
@ -715,10 +715,10 @@ xorpd (%rax), %xmm2
# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 0.50 0.50 - - - - - - - andpd %xmm0, %xmm2
# CHECK-NEXT: 0.50 0.50 - - - - - - 0.50 0.50 - - - - 0.50 0.50 - - - 0.50 0.50 - - andpd (%rax), %xmm2
# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - - - - - - 0.50 0.50 - - clflush (%rax)
# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 1.00 - - - - - - - - cmppd $0, %xmm0, %xmm2
# CHECK-NEXT: 0.50 0.50 - - - - - - 0.50 0.50 - - - - 1.00 - - - - 0.50 0.50 - - cmppd $0, (%rax), %xmm2
# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 1.00 - - - - - - - - cmpsd $0, %xmm0, %xmm2
# CHECK-NEXT: 0.50 0.50 - - - - - - 0.50 0.50 - - - - 1.00 - - - - 0.50 0.50 - - cmpsd $0, (%rax), %xmm2
# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 1.00 - - - - - - - - cmpeqpd %xmm0, %xmm2
# CHECK-NEXT: 0.50 0.50 - - - - - - 0.50 0.50 - - - - 1.00 - - - - 0.50 0.50 - - cmpeqpd (%rax), %xmm2
# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 1.00 - - - - - - - - cmpeqsd %xmm0, %xmm2
# CHECK-NEXT: 0.50 0.50 - - - - - - 0.50 0.50 - - - - 1.00 - - - - 0.50 0.50 - - cmpeqsd (%rax), %xmm2
# CHECK-NEXT: - - - - - 1.00 - - 0.50 0.50 - - - - 1.00 - - - - - - - - comisd %xmm0, %xmm1
# CHECK-NEXT: 0.50 0.50 - - - 1.00 - - 0.50 0.50 - - - - 1.00 - - - - 0.50 0.50 - - comisd (%rax), %xmm1
# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - 1.00 - - - - - - - cvtdq2pd %xmm0, %xmm2

View File

@ -1098,18 +1098,18 @@ vzeroupper
# CHECK-NEXT: 1 6 0.50 * vbroadcastsd (%rax), %ymm2
# CHECK-NEXT: 1 5 0.50 * vbroadcastss (%rax), %xmm2
# CHECK-NEXT: 1 6 0.50 * vbroadcastss (%rax), %ymm2
# CHECK-NEXT: 1 3 1.00 vcmppd $0, %xmm0, %xmm1, %xmm2
# CHECK-NEXT: 2 8 1.00 * vcmppd $0, (%rax), %xmm1, %xmm2
# CHECK-NEXT: 1 3 1.00 vcmppd $0, %ymm0, %ymm1, %ymm2
# CHECK-NEXT: 2 9 1.00 * vcmppd $0, (%rax), %ymm1, %ymm2
# CHECK-NEXT: 1 3 1.00 vcmpps $0, %xmm0, %xmm1, %xmm2
# CHECK-NEXT: 2 8 1.00 * vcmpps $0, (%rax), %xmm1, %xmm2
# CHECK-NEXT: 1 3 1.00 vcmpps $0, %ymm0, %ymm1, %ymm2
# CHECK-NEXT: 2 9 1.00 * vcmpps $0, (%rax), %ymm1, %ymm2
# CHECK-NEXT: 1 3 1.00 vcmpsd $0, %xmm0, %xmm1, %xmm2
# CHECK-NEXT: 2 8 1.00 * vcmpsd $0, (%rax), %xmm1, %xmm2
# CHECK-NEXT: 1 3 1.00 vcmpss $0, %xmm0, %xmm1, %xmm2
# CHECK-NEXT: 2 8 1.00 * vcmpss $0, (%rax), %xmm1, %xmm2
# CHECK-NEXT: 1 3 1.00 vcmpeqpd %xmm0, %xmm1, %xmm2
# CHECK-NEXT: 2 8 1.00 * vcmpeqpd (%rax), %xmm1, %xmm2
# CHECK-NEXT: 1 3 1.00 vcmpeqpd %ymm0, %ymm1, %ymm2
# CHECK-NEXT: 2 9 1.00 * vcmpeqpd (%rax), %ymm1, %ymm2
# CHECK-NEXT: 1 3 1.00 vcmpeqps %xmm0, %xmm1, %xmm2
# CHECK-NEXT: 2 8 1.00 * vcmpeqps (%rax), %xmm1, %xmm2
# CHECK-NEXT: 1 3 1.00 vcmpeqps %ymm0, %ymm1, %ymm2
# CHECK-NEXT: 2 9 1.00 * vcmpeqps (%rax), %ymm1, %ymm2
# CHECK-NEXT: 1 3 1.00 vcmpeqsd %xmm0, %xmm1, %xmm2
# CHECK-NEXT: 2 8 1.00 * vcmpeqsd (%rax), %xmm1, %xmm2
# CHECK-NEXT: 1 3 1.00 vcmpeqss %xmm0, %xmm1, %xmm2
# CHECK-NEXT: 2 8 1.00 * vcmpeqss (%rax), %xmm1, %xmm2
# CHECK-NEXT: 1 3 1.00 vcomisd %xmm0, %xmm1
# CHECK-NEXT: 2 8 1.00 * vcomisd (%rax), %xmm1
# CHECK-NEXT: 1 3 1.00 vcomiss %xmm0, %xmm1
@ -1808,18 +1808,18 @@ vzeroupper
# CHECK-NEXT: - - - - 0.50 0.50 - - - - vbroadcastsd (%rax), %ymm2
# CHECK-NEXT: - - - - 0.50 0.50 - - - - vbroadcastss (%rax), %xmm2
# CHECK-NEXT: - - - - 0.50 0.50 - - - - vbroadcastss (%rax), %ymm2
# CHECK-NEXT: - - - 1.00 - - - - - - vcmppd $0, %xmm0, %xmm1, %xmm2
# CHECK-NEXT: - - - 1.00 0.50 0.50 - - - - vcmppd $0, (%rax), %xmm1, %xmm2
# CHECK-NEXT: - - - 1.00 - - - - - - vcmppd $0, %ymm0, %ymm1, %ymm2
# CHECK-NEXT: - - - 1.00 0.50 0.50 - - - - vcmppd $0, (%rax), %ymm1, %ymm2
# CHECK-NEXT: - - - 1.00 - - - - - - vcmpps $0, %xmm0, %xmm1, %xmm2
# CHECK-NEXT: - - - 1.00 0.50 0.50 - - - - vcmpps $0, (%rax), %xmm1, %xmm2
# CHECK-NEXT: - - - 1.00 - - - - - - vcmpps $0, %ymm0, %ymm1, %ymm2
# CHECK-NEXT: - - - 1.00 0.50 0.50 - - - - vcmpps $0, (%rax), %ymm1, %ymm2
# CHECK-NEXT: - - - 1.00 - - - - - - vcmpsd $0, %xmm0, %xmm1, %xmm2
# CHECK-NEXT: - - - 1.00 0.50 0.50 - - - - vcmpsd $0, (%rax), %xmm1, %xmm2
# CHECK-NEXT: - - - 1.00 - - - - - - vcmpss $0, %xmm0, %xmm1, %xmm2
# CHECK-NEXT: - - - 1.00 0.50 0.50 - - - - vcmpss $0, (%rax), %xmm1, %xmm2
# CHECK-NEXT: - - - 1.00 - - - - - - vcmpeqpd %xmm0, %xmm1, %xmm2
# CHECK-NEXT: - - - 1.00 0.50 0.50 - - - - vcmpeqpd (%rax), %xmm1, %xmm2
# CHECK-NEXT: - - - 1.00 - - - - - - vcmpeqpd %ymm0, %ymm1, %ymm2
# CHECK-NEXT: - - - 1.00 0.50 0.50 - - - - vcmpeqpd (%rax), %ymm1, %ymm2
# CHECK-NEXT: - - - 1.00 - - - - - - vcmpeqps %xmm0, %xmm1, %xmm2
# CHECK-NEXT: - - - 1.00 0.50 0.50 - - - - vcmpeqps (%rax), %xmm1, %xmm2
# CHECK-NEXT: - - - 1.00 - - - - - - vcmpeqps %ymm0, %ymm1, %ymm2
# CHECK-NEXT: - - - 1.00 0.50 0.50 - - - - vcmpeqps (%rax), %ymm1, %ymm2
# CHECK-NEXT: - - - 1.00 - - - - - - vcmpeqsd %xmm0, %xmm1, %xmm2
# CHECK-NEXT: - - - 1.00 0.50 0.50 - - - - vcmpeqsd (%rax), %xmm1, %xmm2
# CHECK-NEXT: - - - 1.00 - - - - - - vcmpeqss %xmm0, %xmm1, %xmm2
# CHECK-NEXT: - - - 1.00 0.50 0.50 - - - - vcmpeqss (%rax), %xmm1, %xmm2
# CHECK-NEXT: - - - 1.00 - - - - - - vcomisd %xmm0, %xmm1
# CHECK-NEXT: - - - 1.00 0.50 0.50 - - - - vcomisd (%rax), %xmm1
# CHECK-NEXT: - - - 1.00 - - - - - - vcomiss %xmm0, %xmm1

View File

@ -202,10 +202,10 @@ xorps (%rax), %xmm2
# CHECK-NEXT: 2 6 1.00 * andnps (%rax), %xmm2
# CHECK-NEXT: 1 1 1.00 andps %xmm0, %xmm2
# CHECK-NEXT: 2 6 1.00 * andps (%rax), %xmm2
# CHECK-NEXT: 1 3 1.00 cmpps $0, %xmm0, %xmm2
# CHECK-NEXT: 2 8 1.00 * cmpps $0, (%rax), %xmm2
# CHECK-NEXT: 1 3 1.00 cmpss $0, %xmm0, %xmm2
# CHECK-NEXT: 2 8 1.00 * cmpss $0, (%rax), %xmm2
# CHECK-NEXT: 1 3 1.00 cmpeqps %xmm0, %xmm2
# CHECK-NEXT: 2 8 1.00 * cmpeqps (%rax), %xmm2
# CHECK-NEXT: 1 3 1.00 cmpeqss %xmm0, %xmm2
# CHECK-NEXT: 2 8 1.00 * cmpeqss (%rax), %xmm2
# CHECK-NEXT: 1 3 1.00 comiss %xmm0, %xmm1
# CHECK-NEXT: 2 8 1.00 * comiss (%rax), %xmm1
# CHECK-NEXT: 1 3 1.00 cvtpi2ps %mm0, %xmm2
@ -345,10 +345,10 @@ xorps (%rax), %xmm2
# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - andnps (%rax), %xmm2
# CHECK-NEXT: - - - - - - - 1.00 - - andps %xmm0, %xmm2
# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - andps (%rax), %xmm2
# CHECK-NEXT: - - - 1.00 - - - - - - cmpps $0, %xmm0, %xmm2
# CHECK-NEXT: - - - 1.00 0.50 0.50 - - - - cmpps $0, (%rax), %xmm2
# CHECK-NEXT: - - - 1.00 - - - - - - cmpss $0, %xmm0, %xmm2
# CHECK-NEXT: - - - 1.00 0.50 0.50 - - - - cmpss $0, (%rax), %xmm2
# CHECK-NEXT: - - - 1.00 - - - - - - cmpeqps %xmm0, %xmm2
# CHECK-NEXT: - - - 1.00 0.50 0.50 - - - - cmpeqps (%rax), %xmm2
# CHECK-NEXT: - - - 1.00 - - - - - - cmpeqss %xmm0, %xmm2
# CHECK-NEXT: - - - 1.00 0.50 0.50 - - - - cmpeqss (%rax), %xmm2
# CHECK-NEXT: - - - 1.00 - - - - - - comiss %xmm0, %xmm1
# CHECK-NEXT: - - - 1.00 0.50 0.50 - - - - comiss (%rax), %xmm1
# CHECK-NEXT: - - - 1.00 - - - - - - cvtpi2ps %mm0, %xmm2

View File

@ -416,10 +416,10 @@ xorpd (%rax), %xmm2
# CHECK-NEXT: 1 1 1.00 andpd %xmm0, %xmm2
# CHECK-NEXT: 2 6 1.00 * andpd (%rax), %xmm2
# CHECK-NEXT: 2 2 1.00 * * U clflush (%rax)
# CHECK-NEXT: 1 3 1.00 cmppd $0, %xmm0, %xmm2
# CHECK-NEXT: 2 8 1.00 * cmppd $0, (%rax), %xmm2
# CHECK-NEXT: 1 3 1.00 cmpsd $0, %xmm0, %xmm2
# CHECK-NEXT: 2 8 1.00 * cmpsd $0, (%rax), %xmm2
# CHECK-NEXT: 1 3 1.00 cmpeqpd %xmm0, %xmm2
# CHECK-NEXT: 2 8 1.00 * cmpeqpd (%rax), %xmm2
# CHECK-NEXT: 1 3 1.00 cmpeqsd %xmm0, %xmm2
# CHECK-NEXT: 2 8 1.00 * cmpeqsd (%rax), %xmm2
# CHECK-NEXT: 1 3 1.00 comisd %xmm0, %xmm1
# CHECK-NEXT: 2 8 1.00 * comisd (%rax), %xmm1
# CHECK-NEXT: 2 4 1.00 cvtdq2pd %xmm0, %xmm2
@ -702,10 +702,10 @@ xorpd (%rax), %xmm2
# CHECK-NEXT: - - - - - - - 1.00 - - andpd %xmm0, %xmm2
# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - andpd (%rax), %xmm2
# CHECK-NEXT: - - 0.25 0.25 - - - 0.25 1.25 - clflush (%rax)
# CHECK-NEXT: - - - 1.00 - - - - - - cmppd $0, %xmm0, %xmm2
# CHECK-NEXT: - - - 1.00 0.50 0.50 - - - - cmppd $0, (%rax), %xmm2
# CHECK-NEXT: - - - 1.00 - - - - - - cmpsd $0, %xmm0, %xmm2
# CHECK-NEXT: - - - 1.00 0.50 0.50 - - - - cmpsd $0, (%rax), %xmm2
# CHECK-NEXT: - - - 1.00 - - - - - - cmpeqpd %xmm0, %xmm2
# CHECK-NEXT: - - - 1.00 0.50 0.50 - - - - cmpeqpd (%rax), %xmm2
# CHECK-NEXT: - - - 1.00 - - - - - - cmpeqsd %xmm0, %xmm2
# CHECK-NEXT: - - - 1.00 0.50 0.50 - - - - cmpeqsd (%rax), %xmm2
# CHECK-NEXT: - - - 1.00 - - - - - - comisd %xmm0, %xmm1
# CHECK-NEXT: - - - 1.00 0.50 0.50 - - - - comisd (%rax), %xmm1
# CHECK-NEXT: - - - 1.00 - - - 1.00 - - cvtdq2pd %xmm0, %xmm2

View File

@ -1098,18 +1098,18 @@ vzeroupper
# CHECK-NEXT: 2 6 2.00 * vbroadcastsd (%rax), %ymm2
# CHECK-NEXT: 1 6 1.00 * vbroadcastss (%rax), %xmm2
# CHECK-NEXT: 2 6 2.00 * vbroadcastss (%rax), %ymm2
# CHECK-NEXT: 1 2 1.00 vcmppd $0, %xmm0, %xmm1, %xmm2
# CHECK-NEXT: 1 7 1.00 * vcmppd $0, (%rax), %xmm1, %xmm2
# CHECK-NEXT: 2 2 2.00 vcmppd $0, %ymm0, %ymm1, %ymm2
# CHECK-NEXT: 2 7 2.00 * vcmppd $0, (%rax), %ymm1, %ymm2
# CHECK-NEXT: 1 2 1.00 vcmpps $0, %xmm0, %xmm1, %xmm2
# CHECK-NEXT: 1 7 1.00 * vcmpps $0, (%rax), %xmm1, %xmm2
# CHECK-NEXT: 2 2 2.00 vcmpps $0, %ymm0, %ymm1, %ymm2
# CHECK-NEXT: 2 7 2.00 * vcmpps $0, (%rax), %ymm1, %ymm2
# CHECK-NEXT: 1 2 1.00 vcmpsd $0, %xmm0, %xmm1, %xmm2
# CHECK-NEXT: 1 7 1.00 * vcmpsd $0, (%rax), %xmm1, %xmm2
# CHECK-NEXT: 1 2 1.00 vcmpss $0, %xmm0, %xmm1, %xmm2
# CHECK-NEXT: 1 7 1.00 * vcmpss $0, (%rax), %xmm1, %xmm2
# CHECK-NEXT: 1 2 1.00 vcmpeqpd %xmm0, %xmm1, %xmm2
# CHECK-NEXT: 1 7 1.00 * vcmpeqpd (%rax), %xmm1, %xmm2
# CHECK-NEXT: 2 2 2.00 vcmpeqpd %ymm0, %ymm1, %ymm2
# CHECK-NEXT: 2 7 2.00 * vcmpeqpd (%rax), %ymm1, %ymm2
# CHECK-NEXT: 1 2 1.00 vcmpeqps %xmm0, %xmm1, %xmm2
# CHECK-NEXT: 1 7 1.00 * vcmpeqps (%rax), %xmm1, %xmm2
# CHECK-NEXT: 2 2 2.00 vcmpeqps %ymm0, %ymm1, %ymm2
# CHECK-NEXT: 2 7 2.00 * vcmpeqps (%rax), %ymm1, %ymm2
# CHECK-NEXT: 1 2 1.00 vcmpeqsd %xmm0, %xmm1, %xmm2
# CHECK-NEXT: 1 7 1.00 * vcmpeqsd (%rax), %xmm1, %xmm2
# CHECK-NEXT: 1 2 1.00 vcmpeqss %xmm0, %xmm1, %xmm2
# CHECK-NEXT: 1 7 1.00 * vcmpeqss (%rax), %xmm1, %xmm2
# CHECK-NEXT: 1 3 1.00 vcomisd %xmm0, %xmm1
# CHECK-NEXT: 1 8 1.00 * vcomisd (%rax), %xmm1
# CHECK-NEXT: 1 3 1.00 vcomiss %xmm0, %xmm1
@ -1812,18 +1812,18 @@ vzeroupper
# CHECK-NEXT: - - - 2.00 2.00 1.00 1.00 1.00 - - - - - - vbroadcastsd (%rax), %ymm2
# CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 1.00 - - - - - - vbroadcastss (%rax), %xmm2
# CHECK-NEXT: - - - 2.00 2.00 1.00 1.00 1.00 - - - - - - vbroadcastss (%rax), %ymm2
# CHECK-NEXT: - - - 1.00 - 1.00 - - - - - - - - vcmppd $0, %xmm0, %xmm1, %xmm2
# CHECK-NEXT: - - - 1.00 - 1.00 - 1.00 - - - - - - vcmppd $0, (%rax), %xmm1, %xmm2
# CHECK-NEXT: - - - 2.00 - 2.00 - - - - - - - - vcmppd $0, %ymm0, %ymm1, %ymm2
# CHECK-NEXT: - - - 2.00 - 2.00 - 2.00 - - - - - - vcmppd $0, (%rax), %ymm1, %ymm2
# CHECK-NEXT: - - - 1.00 - 1.00 - - - - - - - - vcmpps $0, %xmm0, %xmm1, %xmm2
# CHECK-NEXT: - - - 1.00 - 1.00 - 1.00 - - - - - - vcmpps $0, (%rax), %xmm1, %xmm2
# CHECK-NEXT: - - - 2.00 - 2.00 - - - - - - - - vcmpps $0, %ymm0, %ymm1, %ymm2
# CHECK-NEXT: - - - 2.00 - 2.00 - 2.00 - - - - - - vcmpps $0, (%rax), %ymm1, %ymm2
# CHECK-NEXT: - - - 1.00 - 1.00 - - - - - - - - vcmpsd $0, %xmm0, %xmm1, %xmm2
# CHECK-NEXT: - - - 1.00 - 1.00 - 1.00 - - - - - - vcmpsd $0, (%rax), %xmm1, %xmm2
# CHECK-NEXT: - - - 1.00 - 1.00 - - - - - - - - vcmpss $0, %xmm0, %xmm1, %xmm2
# CHECK-NEXT: - - - 1.00 - 1.00 - 1.00 - - - - - - vcmpss $0, (%rax), %xmm1, %xmm2
# CHECK-NEXT: - - - 1.00 - 1.00 - - - - - - - - vcmpeqpd %xmm0, %xmm1, %xmm2
# CHECK-NEXT: - - - 1.00 - 1.00 - 1.00 - - - - - - vcmpeqpd (%rax), %xmm1, %xmm2
# CHECK-NEXT: - - - 2.00 - 2.00 - - - - - - - - vcmpeqpd %ymm0, %ymm1, %ymm2
# CHECK-NEXT: - - - 2.00 - 2.00 - 2.00 - - - - - - vcmpeqpd (%rax), %ymm1, %ymm2
# CHECK-NEXT: - - - 1.00 - 1.00 - - - - - - - - vcmpeqps %xmm0, %xmm1, %xmm2
# CHECK-NEXT: - - - 1.00 - 1.00 - 1.00 - - - - - - vcmpeqps (%rax), %xmm1, %xmm2
# CHECK-NEXT: - - - 2.00 - 2.00 - - - - - - - - vcmpeqps %ymm0, %ymm1, %ymm2
# CHECK-NEXT: - - - 2.00 - 2.00 - 2.00 - - - - - - vcmpeqps (%rax), %ymm1, %ymm2
# CHECK-NEXT: - - - 1.00 - 1.00 - - - - - - - - vcmpeqsd %xmm0, %xmm1, %xmm2
# CHECK-NEXT: - - - 1.00 - 1.00 - 1.00 - - - - - - vcmpeqsd (%rax), %xmm1, %xmm2
# CHECK-NEXT: - - - 1.00 - 1.00 - - - - - - - - vcmpeqss %xmm0, %xmm1, %xmm2
# CHECK-NEXT: - - - 1.00 - 1.00 - 1.00 - - - - - - vcmpeqss (%rax), %xmm1, %xmm2
# CHECK-NEXT: 1.00 - - 1.00 - 1.00 - - - - - - - - vcomisd %xmm0, %xmm1
# CHECK-NEXT: 1.00 - - 1.00 - 1.00 - 1.00 - - - - - - vcomisd (%rax), %xmm1
# CHECK-NEXT: 1.00 - - 1.00 - 1.00 - - - - - - - - vcomiss %xmm0, %xmm1

View File

@ -202,10 +202,10 @@ xorps (%rax), %xmm2
# CHECK-NEXT: 1 6 1.00 * andnps (%rax), %xmm2
# CHECK-NEXT: 1 1 0.50 andps %xmm0, %xmm2
# CHECK-NEXT: 1 6 1.00 * andps (%rax), %xmm2
# CHECK-NEXT: 1 2 1.00 cmpps $0, %xmm0, %xmm2
# CHECK-NEXT: 1 7 1.00 * cmpps $0, (%rax), %xmm2
# CHECK-NEXT: 1 2 1.00 cmpss $0, %xmm0, %xmm2
# CHECK-NEXT: 1 7 1.00 * cmpss $0, (%rax), %xmm2
# CHECK-NEXT: 1 2 1.00 cmpeqps %xmm0, %xmm2
# CHECK-NEXT: 1 7 1.00 * cmpeqps (%rax), %xmm2
# CHECK-NEXT: 1 2 1.00 cmpeqss %xmm0, %xmm2
# CHECK-NEXT: 1 7 1.00 * cmpeqss (%rax), %xmm2
# CHECK-NEXT: 1 3 1.00 comiss %xmm0, %xmm1
# CHECK-NEXT: 1 8 1.00 * comiss (%rax), %xmm1
# CHECK-NEXT: 1 3 1.00 cvtpi2ps %mm0, %xmm2
@ -349,10 +349,10 @@ xorps (%rax), %xmm2
# CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 1.00 - - - - - - andnps (%rax), %xmm2
# CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 - - - - - - - andps %xmm0, %xmm2
# CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 1.00 - - - - - - andps (%rax), %xmm2
# CHECK-NEXT: - - - 1.00 - 1.00 - - - - - - - - cmpps $0, %xmm0, %xmm2
# CHECK-NEXT: - - - 1.00 - 1.00 - 1.00 - - - - - - cmpps $0, (%rax), %xmm2
# CHECK-NEXT: - - - 1.00 - 1.00 - - - - - - - - cmpss $0, %xmm0, %xmm2
# CHECK-NEXT: - - - 1.00 - 1.00 - 1.00 - - - - - - cmpss $0, (%rax), %xmm2
# CHECK-NEXT: - - - 1.00 - 1.00 - - - - - - - - cmpeqps %xmm0, %xmm2
# CHECK-NEXT: - - - 1.00 - 1.00 - 1.00 - - - - - - cmpeqps (%rax), %xmm2
# CHECK-NEXT: - - - 1.00 - 1.00 - - - - - - - - cmpeqss %xmm0, %xmm2
# CHECK-NEXT: - - - 1.00 - 1.00 - 1.00 - - - - - - cmpeqss (%rax), %xmm2
# CHECK-NEXT: 1.00 - - 1.00 - 1.00 - - - - - - - - comiss %xmm0, %xmm1
# CHECK-NEXT: 1.00 - - 1.00 - 1.00 - 1.00 - - - - - - comiss (%rax), %xmm1
# CHECK-NEXT: - - - - - - 1.00 - - - 1.00 - - - cvtpi2ps %mm0, %xmm2

View File

@ -416,10 +416,10 @@ xorpd (%rax), %xmm2
# CHECK-NEXT: 1 1 0.50 andpd %xmm0, %xmm2
# CHECK-NEXT: 1 6 1.00 * andpd (%rax), %xmm2
# CHECK-NEXT: 1 3 1.00 * * U clflush (%rax)
# CHECK-NEXT: 1 2 1.00 cmppd $0, %xmm0, %xmm2
# CHECK-NEXT: 1 7 1.00 * cmppd $0, (%rax), %xmm2
# CHECK-NEXT: 1 2 1.00 cmpsd $0, %xmm0, %xmm2
# CHECK-NEXT: 1 7 1.00 * cmpsd $0, (%rax), %xmm2
# CHECK-NEXT: 1 2 1.00 cmpeqpd %xmm0, %xmm2
# CHECK-NEXT: 1 7 1.00 * cmpeqpd (%rax), %xmm2
# CHECK-NEXT: 1 2 1.00 cmpeqsd %xmm0, %xmm2
# CHECK-NEXT: 1 7 1.00 * cmpeqsd (%rax), %xmm2
# CHECK-NEXT: 1 3 1.00 comisd %xmm0, %xmm1
# CHECK-NEXT: 1 8 1.00 * comisd (%rax), %xmm1
# CHECK-NEXT: 1 3 1.00 cvtdq2pd %xmm0, %xmm2
@ -706,10 +706,10 @@ xorpd (%rax), %xmm2
# CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 - - - - - - - andpd %xmm0, %xmm2
# CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 1.00 - - - - - - andpd (%rax), %xmm2
# CHECK-NEXT: - - - - - - - 1.00 - - - - - - clflush (%rax)
# CHECK-NEXT: - - - 1.00 - 1.00 - - - - - - - - cmppd $0, %xmm0, %xmm2
# CHECK-NEXT: - - - 1.00 - 1.00 - 1.00 - - - - - - cmppd $0, (%rax), %xmm2
# CHECK-NEXT: - - - 1.00 - 1.00 - - - - - - - - cmpsd $0, %xmm0, %xmm2
# CHECK-NEXT: - - - 1.00 - 1.00 - 1.00 - - - - - - cmpsd $0, (%rax), %xmm2
# CHECK-NEXT: - - - 1.00 - 1.00 - - - - - - - - cmpeqpd %xmm0, %xmm2
# CHECK-NEXT: - - - 1.00 - 1.00 - 1.00 - - - - - - cmpeqpd (%rax), %xmm2
# CHECK-NEXT: - - - 1.00 - 1.00 - - - - - - - - cmpeqsd %xmm0, %xmm2
# CHECK-NEXT: - - - 1.00 - 1.00 - 1.00 - - - - - - cmpeqsd (%rax), %xmm2
# CHECK-NEXT: 1.00 - - 1.00 - 1.00 - - - - - - - - comisd %xmm0, %xmm1
# CHECK-NEXT: 1.00 - - 1.00 - 1.00 - 1.00 - - - - - - comisd (%rax), %xmm1
# CHECK-NEXT: - - - - - - 1.00 - - - 1.00 - - - cvtdq2pd %xmm0, %xmm2

View File

@ -1098,18 +1098,18 @@ vzeroupper
# CHECK-NEXT: 1 7 0.50 * vbroadcastsd (%rax), %ymm2
# CHECK-NEXT: 1 6 0.50 * vbroadcastss (%rax), %xmm2
# CHECK-NEXT: 1 7 0.50 * vbroadcastss (%rax), %ymm2
# CHECK-NEXT: 1 3 1.00 vcmppd $0, %xmm0, %xmm1, %xmm2
# CHECK-NEXT: 2 9 1.00 * vcmppd $0, (%rax), %xmm1, %xmm2
# CHECK-NEXT: 1 3 1.00 vcmppd $0, %ymm0, %ymm1, %ymm2
# CHECK-NEXT: 2 10 1.00 * vcmppd $0, (%rax), %ymm1, %ymm2
# CHECK-NEXT: 1 3 1.00 vcmpps $0, %xmm0, %xmm1, %xmm2
# CHECK-NEXT: 2 9 1.00 * vcmpps $0, (%rax), %xmm1, %xmm2
# CHECK-NEXT: 1 3 1.00 vcmpps $0, %ymm0, %ymm1, %ymm2
# CHECK-NEXT: 2 10 1.00 * vcmpps $0, (%rax), %ymm1, %ymm2
# CHECK-NEXT: 1 3 1.00 vcmpsd $0, %xmm0, %xmm1, %xmm2
# CHECK-NEXT: 2 9 1.00 * vcmpsd $0, (%rax), %xmm1, %xmm2
# CHECK-NEXT: 1 3 1.00 vcmpss $0, %xmm0, %xmm1, %xmm2
# CHECK-NEXT: 2 9 1.00 * vcmpss $0, (%rax), %xmm1, %xmm2
# CHECK-NEXT: 1 3 1.00 vcmpeqpd %xmm0, %xmm1, %xmm2
# CHECK-NEXT: 2 9 1.00 * vcmpeqpd (%rax), %xmm1, %xmm2
# CHECK-NEXT: 1 3 1.00 vcmpeqpd %ymm0, %ymm1, %ymm2
# CHECK-NEXT: 2 10 1.00 * vcmpeqpd (%rax), %ymm1, %ymm2
# CHECK-NEXT: 1 3 1.00 vcmpeqps %xmm0, %xmm1, %xmm2
# CHECK-NEXT: 2 9 1.00 * vcmpeqps (%rax), %xmm1, %xmm2
# CHECK-NEXT: 1 3 1.00 vcmpeqps %ymm0, %ymm1, %ymm2
# CHECK-NEXT: 2 10 1.00 * vcmpeqps (%rax), %ymm1, %ymm2
# CHECK-NEXT: 1 3 1.00 vcmpeqsd %xmm0, %xmm1, %xmm2
# CHECK-NEXT: 2 9 1.00 * vcmpeqsd (%rax), %xmm1, %xmm2
# CHECK-NEXT: 1 3 1.00 vcmpeqss %xmm0, %xmm1, %xmm2
# CHECK-NEXT: 2 9 1.00 * vcmpeqss (%rax), %xmm1, %xmm2
# CHECK-NEXT: 2 2 1.00 vcomisd %xmm0, %xmm1
# CHECK-NEXT: 3 8 1.00 * vcomisd (%rax), %xmm1
# CHECK-NEXT: 2 2 1.00 vcomiss %xmm0, %xmm1
@ -1806,18 +1806,18 @@ vzeroupper
# CHECK-NEXT: - - - - - - 0.50 0.50 vbroadcastsd (%rax), %ymm2
# CHECK-NEXT: - - - - - - 0.50 0.50 vbroadcastss (%rax), %xmm2
# CHECK-NEXT: - - - - - - 0.50 0.50 vbroadcastss (%rax), %ymm2
# CHECK-NEXT: - - - 1.00 - - - - vcmppd $0, %xmm0, %xmm1, %xmm2
# CHECK-NEXT: - - - 1.00 - - 0.50 0.50 vcmppd $0, (%rax), %xmm1, %xmm2
# CHECK-NEXT: - - - 1.00 - - - - vcmppd $0, %ymm0, %ymm1, %ymm2
# CHECK-NEXT: - - - 1.00 - - 0.50 0.50 vcmppd $0, (%rax), %ymm1, %ymm2
# CHECK-NEXT: - - - 1.00 - - - - vcmpps $0, %xmm0, %xmm1, %xmm2
# CHECK-NEXT: - - - 1.00 - - 0.50 0.50 vcmpps $0, (%rax), %xmm1, %xmm2
# CHECK-NEXT: - - - 1.00 - - - - vcmpps $0, %ymm0, %ymm1, %ymm2
# CHECK-NEXT: - - - 1.00 - - 0.50 0.50 vcmpps $0, (%rax), %ymm1, %ymm2
# CHECK-NEXT: - - - 1.00 - - - - vcmpsd $0, %xmm0, %xmm1, %xmm2
# CHECK-NEXT: - - - 1.00 - - 0.50 0.50 vcmpsd $0, (%rax), %xmm1, %xmm2
# CHECK-NEXT: - - - 1.00 - - - - vcmpss $0, %xmm0, %xmm1, %xmm2
# CHECK-NEXT: - - - 1.00 - - 0.50 0.50 vcmpss $0, (%rax), %xmm1, %xmm2
# CHECK-NEXT: - - - 1.00 - - - - vcmpeqpd %xmm0, %xmm1, %xmm2
# CHECK-NEXT: - - - 1.00 - - 0.50 0.50 vcmpeqpd (%rax), %xmm1, %xmm2
# CHECK-NEXT: - - - 1.00 - - - - vcmpeqpd %ymm0, %ymm1, %ymm2
# CHECK-NEXT: - - - 1.00 - - 0.50 0.50 vcmpeqpd (%rax), %ymm1, %ymm2
# CHECK-NEXT: - - - 1.00 - - - - vcmpeqps %xmm0, %xmm1, %xmm2
# CHECK-NEXT: - - - 1.00 - - 0.50 0.50 vcmpeqps (%rax), %xmm1, %xmm2
# CHECK-NEXT: - - - 1.00 - - - - vcmpeqps %ymm0, %ymm1, %ymm2
# CHECK-NEXT: - - - 1.00 - - 0.50 0.50 vcmpeqps (%rax), %ymm1, %ymm2
# CHECK-NEXT: - - - 1.00 - - - - vcmpeqsd %xmm0, %xmm1, %xmm2
# CHECK-NEXT: - - - 1.00 - - 0.50 0.50 vcmpeqsd (%rax), %xmm1, %xmm2
# CHECK-NEXT: - - - 1.00 - - - - vcmpeqss %xmm0, %xmm1, %xmm2
# CHECK-NEXT: - - - 1.00 - - 0.50 0.50 vcmpeqss (%rax), %xmm1, %xmm2
# CHECK-NEXT: - - 1.00 1.00 - - - - vcomisd %xmm0, %xmm1
# CHECK-NEXT: - - 1.00 1.00 - - 0.50 0.50 vcomisd (%rax), %xmm1
# CHECK-NEXT: - - 1.00 1.00 - - - - vcomiss %xmm0, %xmm1

View File

@ -202,10 +202,10 @@ xorps (%rax), %xmm2
# CHECK-NEXT: 2 7 1.00 * andnps (%rax), %xmm2
# CHECK-NEXT: 1 1 1.00 andps %xmm0, %xmm2
# CHECK-NEXT: 2 7 1.00 * andps (%rax), %xmm2
# CHECK-NEXT: 1 3 1.00 cmpps $0, %xmm0, %xmm2
# CHECK-NEXT: 2 9 1.00 * cmpps $0, (%rax), %xmm2
# CHECK-NEXT: 1 3 1.00 cmpss $0, %xmm0, %xmm2
# CHECK-NEXT: 2 9 1.00 * cmpss $0, (%rax), %xmm2
# CHECK-NEXT: 1 3 1.00 cmpeqps %xmm0, %xmm2
# CHECK-NEXT: 2 9 1.00 * cmpeqps (%rax), %xmm2
# CHECK-NEXT: 1 3 1.00 cmpeqss %xmm0, %xmm2
# CHECK-NEXT: 2 9 1.00 * cmpeqss (%rax), %xmm2
# CHECK-NEXT: 2 2 1.00 comiss %xmm0, %xmm1
# CHECK-NEXT: 3 8 1.00 * comiss (%rax), %xmm1
# CHECK-NEXT: 1 3 1.00 cvtpi2ps %mm0, %xmm2
@ -343,10 +343,10 @@ xorps (%rax), %xmm2
# CHECK-NEXT: - - - - - 1.00 0.50 0.50 andnps (%rax), %xmm2
# CHECK-NEXT: - - - - - 1.00 - - andps %xmm0, %xmm2
# CHECK-NEXT: - - - - - 1.00 0.50 0.50 andps (%rax), %xmm2
# CHECK-NEXT: - - - 1.00 - - - - cmpps $0, %xmm0, %xmm2
# CHECK-NEXT: - - - 1.00 - - 0.50 0.50 cmpps $0, (%rax), %xmm2
# CHECK-NEXT: - - - 1.00 - - - - cmpss $0, %xmm0, %xmm2
# CHECK-NEXT: - - - 1.00 - - 0.50 0.50 cmpss $0, (%rax), %xmm2
# CHECK-NEXT: - - - 1.00 - - - - cmpeqps %xmm0, %xmm2
# CHECK-NEXT: - - - 1.00 - - 0.50 0.50 cmpeqps (%rax), %xmm2
# CHECK-NEXT: - - - 1.00 - - - - cmpeqss %xmm0, %xmm2
# CHECK-NEXT: - - - 1.00 - - 0.50 0.50 cmpeqss (%rax), %xmm2
# CHECK-NEXT: - - 1.00 1.00 - - - - comiss %xmm0, %xmm1
# CHECK-NEXT: - - 1.00 1.00 - - 0.50 0.50 comiss (%rax), %xmm1
# CHECK-NEXT: - - - 1.00 - - - - cvtpi2ps %mm0, %xmm2

View File

@ -416,10 +416,10 @@ xorpd (%rax), %xmm2
# CHECK-NEXT: 1 1 1.00 andpd %xmm0, %xmm2
# CHECK-NEXT: 2 7 1.00 * andpd (%rax), %xmm2
# CHECK-NEXT: 4 5 1.00 * * U clflush (%rax)
# CHECK-NEXT: 1 3 1.00 cmppd $0, %xmm0, %xmm2
# CHECK-NEXT: 2 9 1.00 * cmppd $0, (%rax), %xmm2
# CHECK-NEXT: 1 3 1.00 cmpsd $0, %xmm0, %xmm2
# CHECK-NEXT: 2 9 1.00 * cmpsd $0, (%rax), %xmm2
# CHECK-NEXT: 1 3 1.00 cmpeqpd %xmm0, %xmm2
# CHECK-NEXT: 2 9 1.00 * cmpeqpd (%rax), %xmm2
# CHECK-NEXT: 1 3 1.00 cmpeqsd %xmm0, %xmm2
# CHECK-NEXT: 2 9 1.00 * cmpeqsd (%rax), %xmm2
# CHECK-NEXT: 2 2 1.00 comisd %xmm0, %xmm1
# CHECK-NEXT: 3 8 1.00 * comisd (%rax), %xmm1
# CHECK-NEXT: 2 4 1.00 cvtdq2pd %xmm0, %xmm2
@ -700,10 +700,10 @@ xorpd (%rax), %xmm2
# CHECK-NEXT: - - - - - 1.00 - - andpd %xmm0, %xmm2
# CHECK-NEXT: - - - - - 1.00 0.50 0.50 andpd (%rax), %xmm2
# CHECK-NEXT: - - 0.50 0.50 1.00 1.00 0.50 0.50 clflush (%rax)
# CHECK-NEXT: - - - 1.00 - - - - cmppd $0, %xmm0, %xmm2
# CHECK-NEXT: - - - 1.00 - - 0.50 0.50 cmppd $0, (%rax), %xmm2
# CHECK-NEXT: - - - 1.00 - - - - cmpsd $0, %xmm0, %xmm2
# CHECK-NEXT: - - - 1.00 - - 0.50 0.50 cmpsd $0, (%rax), %xmm2
# CHECK-NEXT: - - - 1.00 - - - - cmpeqpd %xmm0, %xmm2
# CHECK-NEXT: - - - 1.00 - - 0.50 0.50 cmpeqpd (%rax), %xmm2
# CHECK-NEXT: - - - 1.00 - - - - cmpeqsd %xmm0, %xmm2
# CHECK-NEXT: - - - 1.00 - - 0.50 0.50 cmpeqsd (%rax), %xmm2
# CHECK-NEXT: - - 1.00 1.00 - - - - comisd %xmm0, %xmm1
# CHECK-NEXT: - - 1.00 1.00 - - 0.50 0.50 comisd (%rax), %xmm1
# CHECK-NEXT: - - - 1.00 - 1.00 - - cvtdq2pd %xmm0, %xmm2

View File

@ -1098,18 +1098,18 @@ vzeroupper
# CHECK-NEXT: 1 7 0.50 * vbroadcastsd (%rax), %ymm2
# CHECK-NEXT: 1 6 0.50 * vbroadcastss (%rax), %xmm2
# CHECK-NEXT: 1 7 0.50 * vbroadcastss (%rax), %ymm2
# CHECK-NEXT: 1 3 1.00 vcmppd $0, %xmm0, %xmm1, %xmm2
# CHECK-NEXT: 2 9 1.00 * vcmppd $0, (%rax), %xmm1, %xmm2
# CHECK-NEXT: 1 3 1.00 vcmppd $0, %ymm0, %ymm1, %ymm2
# CHECK-NEXT: 2 10 1.00 * vcmppd $0, (%rax), %ymm1, %ymm2
# CHECK-NEXT: 1 3 1.00 vcmpps $0, %xmm0, %xmm1, %xmm2
# CHECK-NEXT: 2 9 1.00 * vcmpps $0, (%rax), %xmm1, %xmm2
# CHECK-NEXT: 1 3 1.00 vcmpps $0, %ymm0, %ymm1, %ymm2
# CHECK-NEXT: 2 10 1.00 * vcmpps $0, (%rax), %ymm1, %ymm2
# CHECK-NEXT: 1 3 1.00 vcmpsd $0, %xmm0, %xmm1, %xmm2
# CHECK-NEXT: 2 8 1.00 * vcmpsd $0, (%rax), %xmm1, %xmm2
# CHECK-NEXT: 1 3 1.00 vcmpss $0, %xmm0, %xmm1, %xmm2
# CHECK-NEXT: 2 8 1.00 * vcmpss $0, (%rax), %xmm1, %xmm2
# CHECK-NEXT: 1 3 1.00 vcmpeqpd %xmm0, %xmm1, %xmm2
# CHECK-NEXT: 2 9 1.00 * vcmpeqpd (%rax), %xmm1, %xmm2
# CHECK-NEXT: 1 3 1.00 vcmpeqpd %ymm0, %ymm1, %ymm2
# CHECK-NEXT: 2 10 1.00 * vcmpeqpd (%rax), %ymm1, %ymm2
# CHECK-NEXT: 1 3 1.00 vcmpeqps %xmm0, %xmm1, %xmm2
# CHECK-NEXT: 2 9 1.00 * vcmpeqps (%rax), %xmm1, %xmm2
# CHECK-NEXT: 1 3 1.00 vcmpeqps %ymm0, %ymm1, %ymm2
# CHECK-NEXT: 2 10 1.00 * vcmpeqps (%rax), %ymm1, %ymm2
# CHECK-NEXT: 1 3 1.00 vcmpeqsd %xmm0, %xmm1, %xmm2
# CHECK-NEXT: 2 8 1.00 * vcmpeqsd (%rax), %xmm1, %xmm2
# CHECK-NEXT: 1 3 1.00 vcmpeqss %xmm0, %xmm1, %xmm2
# CHECK-NEXT: 2 8 1.00 * vcmpeqss (%rax), %xmm1, %xmm2
# CHECK-NEXT: 1 3 1.00 vcomisd %xmm0, %xmm1
# CHECK-NEXT: 2 8 1.00 * vcomisd (%rax), %xmm1
# CHECK-NEXT: 1 3 1.00 vcomiss %xmm0, %xmm1
@ -1808,18 +1808,18 @@ vzeroupper
# CHECK-NEXT: - - - - 0.50 0.50 - - - - vbroadcastsd (%rax), %ymm2
# CHECK-NEXT: - - - - 0.50 0.50 - - - - vbroadcastss (%rax), %xmm2
# CHECK-NEXT: - - - - 0.50 0.50 - - - - vbroadcastss (%rax), %ymm2
# CHECK-NEXT: - - - 1.00 - - - - - - vcmppd $0, %xmm0, %xmm1, %xmm2
# CHECK-NEXT: - - - 1.00 0.50 0.50 - - - - vcmppd $0, (%rax), %xmm1, %xmm2
# CHECK-NEXT: - - - 1.00 - - - - - - vcmppd $0, %ymm0, %ymm1, %ymm2
# CHECK-NEXT: - - - 1.00 0.50 0.50 - - - - vcmppd $0, (%rax), %ymm1, %ymm2
# CHECK-NEXT: - - - 1.00 - - - - - - vcmpps $0, %xmm0, %xmm1, %xmm2
# CHECK-NEXT: - - - 1.00 0.50 0.50 - - - - vcmpps $0, (%rax), %xmm1, %xmm2
# CHECK-NEXT: - - - 1.00 - - - - - - vcmpps $0, %ymm0, %ymm1, %ymm2
# CHECK-NEXT: - - - 1.00 0.50 0.50 - - - - vcmpps $0, (%rax), %ymm1, %ymm2
# CHECK-NEXT: - - - 1.00 - - - - - - vcmpsd $0, %xmm0, %xmm1, %xmm2
# CHECK-NEXT: - - - 1.00 0.50 0.50 - - - - vcmpsd $0, (%rax), %xmm1, %xmm2
# CHECK-NEXT: - - - 1.00 - - - - - - vcmpss $0, %xmm0, %xmm1, %xmm2
# CHECK-NEXT: - - - 1.00 0.50 0.50 - - - - vcmpss $0, (%rax), %xmm1, %xmm2
# CHECK-NEXT: - - - 1.00 - - - - - - vcmpeqpd %xmm0, %xmm1, %xmm2
# CHECK-NEXT: - - - 1.00 0.50 0.50 - - - - vcmpeqpd (%rax), %xmm1, %xmm2
# CHECK-NEXT: - - - 1.00 - - - - - - vcmpeqpd %ymm0, %ymm1, %ymm2
# CHECK-NEXT: - - - 1.00 0.50 0.50 - - - - vcmpeqpd (%rax), %ymm1, %ymm2
# CHECK-NEXT: - - - 1.00 - - - - - - vcmpeqps %xmm0, %xmm1, %xmm2
# CHECK-NEXT: - - - 1.00 0.50 0.50 - - - - vcmpeqps (%rax), %xmm1, %xmm2
# CHECK-NEXT: - - - 1.00 - - - - - - vcmpeqps %ymm0, %ymm1, %ymm2
# CHECK-NEXT: - - - 1.00 0.50 0.50 - - - - vcmpeqps (%rax), %ymm1, %ymm2
# CHECK-NEXT: - - - 1.00 - - - - - - vcmpeqsd %xmm0, %xmm1, %xmm2
# CHECK-NEXT: - - - 1.00 0.50 0.50 - - - - vcmpeqsd (%rax), %xmm1, %xmm2
# CHECK-NEXT: - - - 1.00 - - - - - - vcmpeqss %xmm0, %xmm1, %xmm2
# CHECK-NEXT: - - - 1.00 0.50 0.50 - - - - vcmpeqss (%rax), %xmm1, %xmm2
# CHECK-NEXT: - - - 1.00 - - - - - - vcomisd %xmm0, %xmm1
# CHECK-NEXT: - - - 1.00 0.50 0.50 - - - - vcomisd (%rax), %xmm1
# CHECK-NEXT: - - - 1.00 - - - - - - vcomiss %xmm0, %xmm1

View File

@ -202,10 +202,10 @@ xorps (%rax), %xmm2
# CHECK-NEXT: 2 7 1.00 * andnps (%rax), %xmm2
# CHECK-NEXT: 1 1 1.00 andps %xmm0, %xmm2
# CHECK-NEXT: 2 7 1.00 * andps (%rax), %xmm2
# CHECK-NEXT: 1 3 1.00 cmpps $0, %xmm0, %xmm2
# CHECK-NEXT: 2 9 1.00 * cmpps $0, (%rax), %xmm2
# CHECK-NEXT: 1 3 1.00 cmpss $0, %xmm0, %xmm2
# CHECK-NEXT: 2 8 1.00 * cmpss $0, (%rax), %xmm2
# CHECK-NEXT: 1 3 1.00 cmpeqps %xmm0, %xmm2
# CHECK-NEXT: 2 9 1.00 * cmpeqps (%rax), %xmm2
# CHECK-NEXT: 1 3 1.00 cmpeqss %xmm0, %xmm2
# CHECK-NEXT: 2 8 1.00 * cmpeqss (%rax), %xmm2
# CHECK-NEXT: 1 3 1.00 comiss %xmm0, %xmm1
# CHECK-NEXT: 2 8 1.00 * comiss (%rax), %xmm1
# CHECK-NEXT: 1 3 1.00 cvtpi2ps %mm0, %xmm2
@ -345,10 +345,10 @@ xorps (%rax), %xmm2
# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - andnps (%rax), %xmm2
# CHECK-NEXT: - - - - - - - 1.00 - - andps %xmm0, %xmm2
# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - andps (%rax), %xmm2
# CHECK-NEXT: - - - 1.00 - - - - - - cmpps $0, %xmm0, %xmm2
# CHECK-NEXT: - - - 1.00 0.50 0.50 - - - - cmpps $0, (%rax), %xmm2
# CHECK-NEXT: - - - 1.00 - - - - - - cmpss $0, %xmm0, %xmm2
# CHECK-NEXT: - - - 1.00 0.50 0.50 - - - - cmpss $0, (%rax), %xmm2
# CHECK-NEXT: - - - 1.00 - - - - - - cmpeqps %xmm0, %xmm2
# CHECK-NEXT: - - - 1.00 0.50 0.50 - - - - cmpeqps (%rax), %xmm2
# CHECK-NEXT: - - - 1.00 - - - - - - cmpeqss %xmm0, %xmm2
# CHECK-NEXT: - - - 1.00 0.50 0.50 - - - - cmpeqss (%rax), %xmm2
# CHECK-NEXT: - - - 1.00 - - - - - - comiss %xmm0, %xmm1
# CHECK-NEXT: - - - 1.00 0.50 0.50 - - - - comiss (%rax), %xmm1
# CHECK-NEXT: - - - 1.00 - - - - - - cvtpi2ps %mm0, %xmm2

View File

@ -416,10 +416,10 @@ xorpd (%rax), %xmm2
# CHECK-NEXT: 1 1 1.00 andpd %xmm0, %xmm2
# CHECK-NEXT: 2 7 1.00 * andpd (%rax), %xmm2
# CHECK-NEXT: 2 2 1.00 * * U clflush (%rax)
# CHECK-NEXT: 1 3 1.00 cmppd $0, %xmm0, %xmm2
# CHECK-NEXT: 2 9 1.00 * cmppd $0, (%rax), %xmm2
# CHECK-NEXT: 1 3 1.00 cmpsd $0, %xmm0, %xmm2
# CHECK-NEXT: 2 8 1.00 * cmpsd $0, (%rax), %xmm2
# CHECK-NEXT: 1 3 1.00 cmpeqpd %xmm0, %xmm2
# CHECK-NEXT: 2 9 1.00 * cmpeqpd (%rax), %xmm2
# CHECK-NEXT: 1 3 1.00 cmpeqsd %xmm0, %xmm2
# CHECK-NEXT: 2 8 1.00 * cmpeqsd (%rax), %xmm2
# CHECK-NEXT: 1 3 1.00 comisd %xmm0, %xmm1
# CHECK-NEXT: 2 8 1.00 * comisd (%rax), %xmm1
# CHECK-NEXT: 2 4 1.00 cvtdq2pd %xmm0, %xmm2
@ -702,10 +702,10 @@ xorpd (%rax), %xmm2
# CHECK-NEXT: - - - - - - - 1.00 - - andpd %xmm0, %xmm2
# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - andpd (%rax), %xmm2
# CHECK-NEXT: - - 0.25 0.25 - - - 0.25 1.25 - clflush (%rax)
# CHECK-NEXT: - - - 1.00 - - - - - - cmppd $0, %xmm0, %xmm2
# CHECK-NEXT: - - - 1.00 0.50 0.50 - - - - cmppd $0, (%rax), %xmm2
# CHECK-NEXT: - - - 1.00 - - - - - - cmpsd $0, %xmm0, %xmm2
# CHECK-NEXT: - - - 1.00 0.50 0.50 - - - - cmpsd $0, (%rax), %xmm2
# CHECK-NEXT: - - - 1.00 - - - - - - cmpeqpd %xmm0, %xmm2
# CHECK-NEXT: - - - 1.00 0.50 0.50 - - - - cmpeqpd (%rax), %xmm2
# CHECK-NEXT: - - - 1.00 - - - - - - cmpeqsd %xmm0, %xmm2
# CHECK-NEXT: - - - 1.00 0.50 0.50 - - - - cmpeqsd (%rax), %xmm2
# CHECK-NEXT: - - - 1.00 - - - - - - comisd %xmm0, %xmm1
# CHECK-NEXT: - - - 1.00 0.50 0.50 - - - - comisd (%rax), %xmm1
# CHECK-NEXT: - - - 1.00 - - - 1.00 - - cvtdq2pd %xmm0, %xmm2

View File

@ -202,10 +202,10 @@ xorps (%rax), %xmm2
# CHECK-NEXT: 1 4 1.00 * andnps (%rax), %xmm2
# CHECK-NEXT: 1 1 0.50 andps %xmm0, %xmm2
# CHECK-NEXT: 1 4 1.00 * andps (%rax), %xmm2
# CHECK-NEXT: 1 3 1.00 cmpps $0, %xmm0, %xmm2
# CHECK-NEXT: 1 6 1.00 * cmpps $0, (%rax), %xmm2
# CHECK-NEXT: 1 3 1.00 cmpss $0, %xmm0, %xmm2
# CHECK-NEXT: 1 6 1.00 * cmpss $0, (%rax), %xmm2
# CHECK-NEXT: 1 3 1.00 cmpeqps %xmm0, %xmm2
# CHECK-NEXT: 1 6 1.00 * cmpeqps (%rax), %xmm2
# CHECK-NEXT: 1 3 1.00 cmpeqss %xmm0, %xmm2
# CHECK-NEXT: 1 6 1.00 * cmpeqss (%rax), %xmm2
# CHECK-NEXT: 1 3 1.00 comiss %xmm0, %xmm1
# CHECK-NEXT: 1 6 1.00 * comiss (%rax), %xmm1
# CHECK-NEXT: 1 4 0.50 cvtpi2ps %mm0, %xmm2
@ -343,10 +343,10 @@ xorps (%rax), %xmm2
# CHECK-NEXT: - - - 0.50 0.50 - - 1.00 andnps (%rax), %xmm2
# CHECK-NEXT: - - - 0.50 0.50 - - - andps %xmm0, %xmm2
# CHECK-NEXT: - - - 0.50 0.50 - - 1.00 andps (%rax), %xmm2
# CHECK-NEXT: - - - - 1.00 - - - cmpps $0, %xmm0, %xmm2
# CHECK-NEXT: - - - - 1.00 - - 1.00 cmpps $0, (%rax), %xmm2
# CHECK-NEXT: - - - - 1.00 - - - cmpss $0, %xmm0, %xmm2
# CHECK-NEXT: - - - - 1.00 - - 1.00 cmpss $0, (%rax), %xmm2
# CHECK-NEXT: - - - - 1.00 - - - cmpeqps %xmm0, %xmm2
# CHECK-NEXT: - - - - 1.00 - - 1.00 cmpeqps (%rax), %xmm2
# CHECK-NEXT: - - - - 1.00 - - - cmpeqss %xmm0, %xmm2
# CHECK-NEXT: - - - - 1.00 - - 1.00 cmpeqss (%rax), %xmm2
# CHECK-NEXT: - - - - 1.00 - - - comiss %xmm0, %xmm1
# CHECK-NEXT: - - - - 1.00 - - 1.00 comiss (%rax), %xmm1
# CHECK-NEXT: - - - 0.50 0.50 - - - cvtpi2ps %mm0, %xmm2

View File

@ -416,10 +416,10 @@ xorpd (%rax), %xmm2
# CHECK-NEXT: 1 1 0.50 andpd %xmm0, %xmm2
# CHECK-NEXT: 1 4 1.00 * andpd (%rax), %xmm2
# CHECK-NEXT: 1 3 1.00 * * U clflush (%rax)
# CHECK-NEXT: 1 3 1.00 cmppd $0, %xmm0, %xmm2
# CHECK-NEXT: 1 6 1.00 * cmppd $0, (%rax), %xmm2
# CHECK-NEXT: 1 3 1.00 cmpsd $0, %xmm0, %xmm2
# CHECK-NEXT: 1 6 1.00 * cmpsd $0, (%rax), %xmm2
# CHECK-NEXT: 1 3 1.00 cmpeqpd %xmm0, %xmm2
# CHECK-NEXT: 1 6 1.00 * cmpeqpd (%rax), %xmm2
# CHECK-NEXT: 1 3 1.00 cmpeqsd %xmm0, %xmm2
# CHECK-NEXT: 1 6 1.00 * cmpeqsd (%rax), %xmm2
# CHECK-NEXT: 1 3 1.00 comisd %xmm0, %xmm1
# CHECK-NEXT: 1 6 1.00 * comisd (%rax), %xmm1
# CHECK-NEXT: 1 4 0.50 cvtdq2pd %xmm0, %xmm2
@ -700,10 +700,10 @@ xorpd (%rax), %xmm2
# CHECK-NEXT: - - - 0.50 0.50 - - - andpd %xmm0, %xmm2
# CHECK-NEXT: - - - 0.50 0.50 - - 1.00 andpd (%rax), %xmm2
# CHECK-NEXT: - - - - - - - 1.00 clflush (%rax)
# CHECK-NEXT: - - - - 1.00 - - - cmppd $0, %xmm0, %xmm2
# CHECK-NEXT: - - - - 1.00 - - 1.00 cmppd $0, (%rax), %xmm2
# CHECK-NEXT: - - - - 1.00 - - - cmpsd $0, %xmm0, %xmm2
# CHECK-NEXT: - - - - 1.00 - - 1.00 cmpsd $0, (%rax), %xmm2
# CHECK-NEXT: - - - - 1.00 - - - cmpeqpd %xmm0, %xmm2
# CHECK-NEXT: - - - - 1.00 - - 1.00 cmpeqpd (%rax), %xmm2
# CHECK-NEXT: - - - - 1.00 - - - cmpeqsd %xmm0, %xmm2
# CHECK-NEXT: - - - - 1.00 - - 1.00 cmpeqsd (%rax), %xmm2
# CHECK-NEXT: - - - - 1.00 - - - comisd %xmm0, %xmm1
# CHECK-NEXT: - - - - 1.00 - - 1.00 comisd (%rax), %xmm1
# CHECK-NEXT: - - - 0.50 0.50 - - - cvtdq2pd %xmm0, %xmm2

View File

@ -1098,18 +1098,18 @@ vzeroupper
# CHECK-NEXT: 1 7 0.50 * vbroadcastsd (%rax), %ymm2
# CHECK-NEXT: 1 6 0.50 * vbroadcastss (%rax), %xmm2
# CHECK-NEXT: 1 7 0.50 * vbroadcastss (%rax), %ymm2
# CHECK-NEXT: 1 3 1.00 vcmppd $0, %xmm0, %xmm1, %xmm2
# CHECK-NEXT: 2 9 1.00 * vcmppd $0, (%rax), %xmm1, %xmm2
# CHECK-NEXT: 1 3 1.00 vcmppd $0, %ymm0, %ymm1, %ymm2
# CHECK-NEXT: 2 10 1.00 * vcmppd $0, (%rax), %ymm1, %ymm2
# CHECK-NEXT: 1 3 1.00 vcmpps $0, %xmm0, %xmm1, %xmm2
# CHECK-NEXT: 2 9 1.00 * vcmpps $0, (%rax), %xmm1, %xmm2
# CHECK-NEXT: 1 3 1.00 vcmpps $0, %ymm0, %ymm1, %ymm2
# CHECK-NEXT: 2 10 1.00 * vcmpps $0, (%rax), %ymm1, %ymm2
# CHECK-NEXT: 1 3 1.00 vcmpsd $0, %xmm0, %xmm1, %xmm2
# CHECK-NEXT: 2 9 1.00 * vcmpsd $0, (%rax), %xmm1, %xmm2
# CHECK-NEXT: 1 3 1.00 vcmpss $0, %xmm0, %xmm1, %xmm2
# CHECK-NEXT: 2 9 1.00 * vcmpss $0, (%rax), %xmm1, %xmm2
# CHECK-NEXT: 1 3 1.00 vcmpeqpd %xmm0, %xmm1, %xmm2
# CHECK-NEXT: 2 9 1.00 * vcmpeqpd (%rax), %xmm1, %xmm2
# CHECK-NEXT: 1 3 1.00 vcmpeqpd %ymm0, %ymm1, %ymm2
# CHECK-NEXT: 2 10 1.00 * vcmpeqpd (%rax), %ymm1, %ymm2
# CHECK-NEXT: 1 3 1.00 vcmpeqps %xmm0, %xmm1, %xmm2
# CHECK-NEXT: 2 9 1.00 * vcmpeqps (%rax), %xmm1, %xmm2
# CHECK-NEXT: 1 3 1.00 vcmpeqps %ymm0, %ymm1, %ymm2
# CHECK-NEXT: 2 10 1.00 * vcmpeqps (%rax), %ymm1, %ymm2
# CHECK-NEXT: 1 3 1.00 vcmpeqsd %xmm0, %xmm1, %xmm2
# CHECK-NEXT: 2 9 1.00 * vcmpeqsd (%rax), %xmm1, %xmm2
# CHECK-NEXT: 1 3 1.00 vcmpeqss %xmm0, %xmm1, %xmm2
# CHECK-NEXT: 2 9 1.00 * vcmpeqss (%rax), %xmm1, %xmm2
# CHECK-NEXT: 2 2 1.00 vcomisd %xmm0, %xmm1
# CHECK-NEXT: 3 8 1.00 * vcomisd (%rax), %xmm1
# CHECK-NEXT: 2 2 1.00 vcomiss %xmm0, %xmm1
@ -1806,18 +1806,18 @@ vzeroupper
# CHECK-NEXT: - - - - - - 0.50 0.50 vbroadcastsd (%rax), %ymm2
# CHECK-NEXT: - - - - - - 0.50 0.50 vbroadcastss (%rax), %xmm2
# CHECK-NEXT: - - - - - - 0.50 0.50 vbroadcastss (%rax), %ymm2
# CHECK-NEXT: - - - 1.00 - - - - vcmppd $0, %xmm0, %xmm1, %xmm2
# CHECK-NEXT: - - - 1.00 - - 0.50 0.50 vcmppd $0, (%rax), %xmm1, %xmm2
# CHECK-NEXT: - - - 1.00 - - - - vcmppd $0, %ymm0, %ymm1, %ymm2
# CHECK-NEXT: - - - 1.00 - - 0.50 0.50 vcmppd $0, (%rax), %ymm1, %ymm2
# CHECK-NEXT: - - - 1.00 - - - - vcmpps $0, %xmm0, %xmm1, %xmm2
# CHECK-NEXT: - - - 1.00 - - 0.50 0.50 vcmpps $0, (%rax), %xmm1, %xmm2
# CHECK-NEXT: - - - 1.00 - - - - vcmpps $0, %ymm0, %ymm1, %ymm2
# CHECK-NEXT: - - - 1.00 - - 0.50 0.50 vcmpps $0, (%rax), %ymm1, %ymm2
# CHECK-NEXT: - - - 1.00 - - - - vcmpsd $0, %xmm0, %xmm1, %xmm2
# CHECK-NEXT: - - - 1.00 - - 0.50 0.50 vcmpsd $0, (%rax), %xmm1, %xmm2
# CHECK-NEXT: - - - 1.00 - - - - vcmpss $0, %xmm0, %xmm1, %xmm2
# CHECK-NEXT: - - - 1.00 - - 0.50 0.50 vcmpss $0, (%rax), %xmm1, %xmm2
# CHECK-NEXT: - - - 1.00 - - - - vcmpeqpd %xmm0, %xmm1, %xmm2
# CHECK-NEXT: - - - 1.00 - - 0.50 0.50 vcmpeqpd (%rax), %xmm1, %xmm2
# CHECK-NEXT: - - - 1.00 - - - - vcmpeqpd %ymm0, %ymm1, %ymm2
# CHECK-NEXT: - - - 1.00 - - 0.50 0.50 vcmpeqpd (%rax), %ymm1, %ymm2
# CHECK-NEXT: - - - 1.00 - - - - vcmpeqps %xmm0, %xmm1, %xmm2
# CHECK-NEXT: - - - 1.00 - - 0.50 0.50 vcmpeqps (%rax), %xmm1, %xmm2
# CHECK-NEXT: - - - 1.00 - - - - vcmpeqps %ymm0, %ymm1, %ymm2
# CHECK-NEXT: - - - 1.00 - - 0.50 0.50 vcmpeqps (%rax), %ymm1, %ymm2
# CHECK-NEXT: - - - 1.00 - - - - vcmpeqsd %xmm0, %xmm1, %xmm2
# CHECK-NEXT: - - - 1.00 - - 0.50 0.50 vcmpeqsd (%rax), %xmm1, %xmm2
# CHECK-NEXT: - - - 1.00 - - - - vcmpeqss %xmm0, %xmm1, %xmm2
# CHECK-NEXT: - - - 1.00 - - 0.50 0.50 vcmpeqss (%rax), %xmm1, %xmm2
# CHECK-NEXT: - - 1.00 1.00 - - - - vcomisd %xmm0, %xmm1
# CHECK-NEXT: - - 1.00 1.00 - - 0.50 0.50 vcomisd (%rax), %xmm1
# CHECK-NEXT: - - 1.00 1.00 - - - - vcomiss %xmm0, %xmm1

View File

@ -202,10 +202,10 @@ xorps (%rax), %xmm2
# CHECK-NEXT: 2 7 1.00 * andnps (%rax), %xmm2
# CHECK-NEXT: 1 1 1.00 andps %xmm0, %xmm2
# CHECK-NEXT: 2 7 1.00 * andps (%rax), %xmm2
# CHECK-NEXT: 1 3 1.00 cmpps $0, %xmm0, %xmm2
# CHECK-NEXT: 2 9 1.00 * cmpps $0, (%rax), %xmm2
# CHECK-NEXT: 1 3 1.00 cmpss $0, %xmm0, %xmm2
# CHECK-NEXT: 2 9 1.00 * cmpss $0, (%rax), %xmm2
# CHECK-NEXT: 1 3 1.00 cmpeqps %xmm0, %xmm2
# CHECK-NEXT: 2 9 1.00 * cmpeqps (%rax), %xmm2
# CHECK-NEXT: 1 3 1.00 cmpeqss %xmm0, %xmm2
# CHECK-NEXT: 2 9 1.00 * cmpeqss (%rax), %xmm2
# CHECK-NEXT: 2 2 1.00 comiss %xmm0, %xmm1
# CHECK-NEXT: 3 8 1.00 * comiss (%rax), %xmm1
# CHECK-NEXT: 1 3 1.00 cvtpi2ps %mm0, %xmm2
@ -343,10 +343,10 @@ xorps (%rax), %xmm2
# CHECK-NEXT: - - - - - 1.00 0.50 0.50 andnps (%rax), %xmm2
# CHECK-NEXT: - - - - - 1.00 - - andps %xmm0, %xmm2
# CHECK-NEXT: - - - - - 1.00 0.50 0.50 andps (%rax), %xmm2
# CHECK-NEXT: - - - 1.00 - - - - cmpps $0, %xmm0, %xmm2
# CHECK-NEXT: - - - 1.00 - - 0.50 0.50 cmpps $0, (%rax), %xmm2
# CHECK-NEXT: - - - 1.00 - - - - cmpss $0, %xmm0, %xmm2
# CHECK-NEXT: - - - 1.00 - - 0.50 0.50 cmpss $0, (%rax), %xmm2
# CHECK-NEXT: - - - 1.00 - - - - cmpeqps %xmm0, %xmm2
# CHECK-NEXT: - - - 1.00 - - 0.50 0.50 cmpeqps (%rax), %xmm2
# CHECK-NEXT: - - - 1.00 - - - - cmpeqss %xmm0, %xmm2
# CHECK-NEXT: - - - 1.00 - - 0.50 0.50 cmpeqss (%rax), %xmm2
# CHECK-NEXT: - - 1.00 1.00 - - - - comiss %xmm0, %xmm1
# CHECK-NEXT: - - 1.00 1.00 - - 0.50 0.50 comiss (%rax), %xmm1
# CHECK-NEXT: - - - 1.00 - - - - cvtpi2ps %mm0, %xmm2

View File

@ -416,10 +416,10 @@ xorpd (%rax), %xmm2
# CHECK-NEXT: 1 1 1.00 andpd %xmm0, %xmm2
# CHECK-NEXT: 2 7 1.00 * andpd (%rax), %xmm2
# CHECK-NEXT: 4 5 1.00 * * U clflush (%rax)
# CHECK-NEXT: 1 3 1.00 cmppd $0, %xmm0, %xmm2
# CHECK-NEXT: 2 9 1.00 * cmppd $0, (%rax), %xmm2
# CHECK-NEXT: 1 3 1.00 cmpsd $0, %xmm0, %xmm2
# CHECK-NEXT: 2 9 1.00 * cmpsd $0, (%rax), %xmm2
# CHECK-NEXT: 1 3 1.00 cmpeqpd %xmm0, %xmm2
# CHECK-NEXT: 2 9 1.00 * cmpeqpd (%rax), %xmm2
# CHECK-NEXT: 1 3 1.00 cmpeqsd %xmm0, %xmm2
# CHECK-NEXT: 2 9 1.00 * cmpeqsd (%rax), %xmm2
# CHECK-NEXT: 2 2 1.00 comisd %xmm0, %xmm1
# CHECK-NEXT: 3 8 1.00 * comisd (%rax), %xmm1
# CHECK-NEXT: 2 4 1.00 cvtdq2pd %xmm0, %xmm2
@ -700,10 +700,10 @@ xorpd (%rax), %xmm2
# CHECK-NEXT: - - - - - 1.00 - - andpd %xmm0, %xmm2
# CHECK-NEXT: - - - - - 1.00 0.50 0.50 andpd (%rax), %xmm2
# CHECK-NEXT: - - 0.50 0.50 1.00 1.00 0.50 0.50 clflush (%rax)
# CHECK-NEXT: - - - 1.00 - - - - cmppd $0, %xmm0, %xmm2
# CHECK-NEXT: - - - 1.00 - - 0.50 0.50 cmppd $0, (%rax), %xmm2
# CHECK-NEXT: - - - 1.00 - - - - cmpsd $0, %xmm0, %xmm2
# CHECK-NEXT: - - - 1.00 - - 0.50 0.50 cmpsd $0, (%rax), %xmm2
# CHECK-NEXT: - - - 1.00 - - - - cmpeqpd %xmm0, %xmm2
# CHECK-NEXT: - - - 1.00 - - 0.50 0.50 cmpeqpd (%rax), %xmm2
# CHECK-NEXT: - - - 1.00 - - - - cmpeqsd %xmm0, %xmm2
# CHECK-NEXT: - - - 1.00 - - 0.50 0.50 cmpeqsd (%rax), %xmm2
# CHECK-NEXT: - - 1.00 1.00 - - - - comisd %xmm0, %xmm1
# CHECK-NEXT: - - 1.00 1.00 - - 0.50 0.50 comisd (%rax), %xmm1
# CHECK-NEXT: - - - 1.00 - 1.00 - - cvtdq2pd %xmm0, %xmm2

View File

@ -1098,18 +1098,18 @@ vzeroupper
# CHECK-NEXT: 1 7 0.50 * vbroadcastsd (%rax), %ymm2
# CHECK-NEXT: 1 6 0.50 * vbroadcastss (%rax), %xmm2
# CHECK-NEXT: 1 7 0.50 * vbroadcastss (%rax), %ymm2
# CHECK-NEXT: 1 4 0.50 vcmppd $0, %xmm0, %xmm1, %xmm2
# CHECK-NEXT: 2 10 0.50 * vcmppd $0, (%rax), %xmm1, %xmm2
# CHECK-NEXT: 1 4 0.50 vcmppd $0, %ymm0, %ymm1, %ymm2
# CHECK-NEXT: 2 11 0.50 * vcmppd $0, (%rax), %ymm1, %ymm2
# CHECK-NEXT: 1 4 0.50 vcmpps $0, %xmm0, %xmm1, %xmm2
# CHECK-NEXT: 2 10 0.50 * vcmpps $0, (%rax), %xmm1, %xmm2
# CHECK-NEXT: 1 4 0.50 vcmpps $0, %ymm0, %ymm1, %ymm2
# CHECK-NEXT: 2 11 0.50 * vcmpps $0, (%rax), %ymm1, %ymm2
# CHECK-NEXT: 1 4 0.50 vcmpsd $0, %xmm0, %xmm1, %xmm2
# CHECK-NEXT: 2 9 0.50 * vcmpsd $0, (%rax), %xmm1, %xmm2
# CHECK-NEXT: 1 4 0.50 vcmpss $0, %xmm0, %xmm1, %xmm2
# CHECK-NEXT: 2 9 0.50 * vcmpss $0, (%rax), %xmm1, %xmm2
# CHECK-NEXT: 1 4 0.50 vcmpeqpd %xmm0, %xmm1, %xmm2
# CHECK-NEXT: 2 10 0.50 * vcmpeqpd (%rax), %xmm1, %xmm2
# CHECK-NEXT: 1 4 0.50 vcmpeqpd %ymm0, %ymm1, %ymm2
# CHECK-NEXT: 2 11 0.50 * vcmpeqpd (%rax), %ymm1, %ymm2
# CHECK-NEXT: 1 4 0.50 vcmpeqps %xmm0, %xmm1, %xmm2
# CHECK-NEXT: 2 10 0.50 * vcmpeqps (%rax), %xmm1, %xmm2
# CHECK-NEXT: 1 4 0.50 vcmpeqps %ymm0, %ymm1, %ymm2
# CHECK-NEXT: 2 11 0.50 * vcmpeqps (%rax), %ymm1, %ymm2
# CHECK-NEXT: 1 4 0.50 vcmpeqsd %xmm0, %xmm1, %xmm2
# CHECK-NEXT: 2 9 0.50 * vcmpeqsd (%rax), %xmm1, %xmm2
# CHECK-NEXT: 1 4 0.50 vcmpeqss %xmm0, %xmm1, %xmm2
# CHECK-NEXT: 2 9 0.50 * vcmpeqss (%rax), %xmm1, %xmm2
# CHECK-NEXT: 1 2 1.00 vcomisd %xmm0, %xmm1
# CHECK-NEXT: 2 7 1.00 * vcomisd (%rax), %xmm1
# CHECK-NEXT: 1 2 1.00 vcomiss %xmm0, %xmm1
@ -1808,18 +1808,18 @@ vzeroupper
# CHECK-NEXT: - - - - 0.50 0.50 - - - - vbroadcastsd (%rax), %ymm2
# CHECK-NEXT: - - - - 0.50 0.50 - - - - vbroadcastss (%rax), %xmm2
# CHECK-NEXT: - - - - 0.50 0.50 - - - - vbroadcastss (%rax), %ymm2
# CHECK-NEXT: - - 0.50 0.50 - - - - - - vcmppd $0, %xmm0, %xmm1, %xmm2
# CHECK-NEXT: - - 0.50 0.50 0.50 0.50 - - - - vcmppd $0, (%rax), %xmm1, %xmm2
# CHECK-NEXT: - - 0.50 0.50 - - - - - - vcmppd $0, %ymm0, %ymm1, %ymm2
# CHECK-NEXT: - - 0.50 0.50 0.50 0.50 - - - - vcmppd $0, (%rax), %ymm1, %ymm2
# CHECK-NEXT: - - 0.50 0.50 - - - - - - vcmpps $0, %xmm0, %xmm1, %xmm2
# CHECK-NEXT: - - 0.50 0.50 0.50 0.50 - - - - vcmpps $0, (%rax), %xmm1, %xmm2
# CHECK-NEXT: - - 0.50 0.50 - - - - - - vcmpps $0, %ymm0, %ymm1, %ymm2
# CHECK-NEXT: - - 0.50 0.50 0.50 0.50 - - - - vcmpps $0, (%rax), %ymm1, %ymm2
# CHECK-NEXT: - - 0.50 0.50 - - - - - - vcmpsd $0, %xmm0, %xmm1, %xmm2
# CHECK-NEXT: - - 0.50 0.50 0.50 0.50 - - - - vcmpsd $0, (%rax), %xmm1, %xmm2
# CHECK-NEXT: - - 0.50 0.50 - - - - - - vcmpss $0, %xmm0, %xmm1, %xmm2
# CHECK-NEXT: - - 0.50 0.50 0.50 0.50 - - - - vcmpss $0, (%rax), %xmm1, %xmm2
# CHECK-NEXT: - - 0.50 0.50 - - - - - - vcmpeqpd %xmm0, %xmm1, %xmm2
# CHECK-NEXT: - - 0.50 0.50 0.50 0.50 - - - - vcmpeqpd (%rax), %xmm1, %xmm2
# CHECK-NEXT: - - 0.50 0.50 - - - - - - vcmpeqpd %ymm0, %ymm1, %ymm2
# CHECK-NEXT: - - 0.50 0.50 0.50 0.50 - - - - vcmpeqpd (%rax), %ymm1, %ymm2
# CHECK-NEXT: - - 0.50 0.50 - - - - - - vcmpeqps %xmm0, %xmm1, %xmm2
# CHECK-NEXT: - - 0.50 0.50 0.50 0.50 - - - - vcmpeqps (%rax), %xmm1, %xmm2
# CHECK-NEXT: - - 0.50 0.50 - - - - - - vcmpeqps %ymm0, %ymm1, %ymm2
# CHECK-NEXT: - - 0.50 0.50 0.50 0.50 - - - - vcmpeqps (%rax), %ymm1, %ymm2
# CHECK-NEXT: - - 0.50 0.50 - - - - - - vcmpeqsd %xmm0, %xmm1, %xmm2
# CHECK-NEXT: - - 0.50 0.50 0.50 0.50 - - - - vcmpeqsd (%rax), %xmm1, %xmm2
# CHECK-NEXT: - - 0.50 0.50 - - - - - - vcmpeqss %xmm0, %xmm1, %xmm2
# CHECK-NEXT: - - 0.50 0.50 0.50 0.50 - - - - vcmpeqss (%rax), %xmm1, %xmm2
# CHECK-NEXT: - - 1.00 - - - - - - - vcomisd %xmm0, %xmm1
# CHECK-NEXT: - - 1.00 - 0.50 0.50 - - - - vcomisd (%rax), %xmm1
# CHECK-NEXT: - - 1.00 - - - - - - - vcomiss %xmm0, %xmm1

View File

@ -202,10 +202,10 @@ xorps (%rax), %xmm2
# CHECK-NEXT: 2 7 0.50 * andnps (%rax), %xmm2
# CHECK-NEXT: 1 1 0.33 andps %xmm0, %xmm2
# CHECK-NEXT: 2 7 0.50 * andps (%rax), %xmm2
# CHECK-NEXT: 1 4 0.50 cmpps $0, %xmm0, %xmm2
# CHECK-NEXT: 2 10 0.50 * cmpps $0, (%rax), %xmm2
# CHECK-NEXT: 1 4 0.50 cmpss $0, %xmm0, %xmm2
# CHECK-NEXT: 2 9 0.50 * cmpss $0, (%rax), %xmm2
# CHECK-NEXT: 1 4 0.50 cmpeqps %xmm0, %xmm2
# CHECK-NEXT: 2 10 0.50 * cmpeqps (%rax), %xmm2
# CHECK-NEXT: 1 4 0.50 cmpeqss %xmm0, %xmm2
# CHECK-NEXT: 2 9 0.50 * cmpeqss (%rax), %xmm2
# CHECK-NEXT: 1 2 1.00 comiss %xmm0, %xmm1
# CHECK-NEXT: 2 7 1.00 * comiss (%rax), %xmm1
# CHECK-NEXT: 2 6 2.00 cvtpi2ps %mm0, %xmm2
@ -345,10 +345,10 @@ xorps (%rax), %xmm2
# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - andnps (%rax), %xmm2
# CHECK-NEXT: - - 0.33 0.33 - - - 0.33 - - andps %xmm0, %xmm2
# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - andps (%rax), %xmm2
# CHECK-NEXT: - - 0.50 0.50 - - - - - - cmpps $0, %xmm0, %xmm2
# CHECK-NEXT: - - 0.50 0.50 0.50 0.50 - - - - cmpps $0, (%rax), %xmm2
# CHECK-NEXT: - - 0.50 0.50 - - - - - - cmpss $0, %xmm0, %xmm2
# CHECK-NEXT: - - 0.50 0.50 0.50 0.50 - - - - cmpss $0, (%rax), %xmm2
# CHECK-NEXT: - - 0.50 0.50 - - - - - - cmpeqps %xmm0, %xmm2
# CHECK-NEXT: - - 0.50 0.50 0.50 0.50 - - - - cmpeqps (%rax), %xmm2
# CHECK-NEXT: - - 0.50 0.50 - - - - - - cmpeqss %xmm0, %xmm2
# CHECK-NEXT: - - 0.50 0.50 0.50 0.50 - - - - cmpeqss (%rax), %xmm2
# CHECK-NEXT: - - 1.00 - - - - - - - comiss %xmm0, %xmm1
# CHECK-NEXT: - - 1.00 - 0.50 0.50 - - - - comiss (%rax), %xmm1
# CHECK-NEXT: - - 2.00 - - - - - - - cvtpi2ps %mm0, %xmm2

View File

@ -416,10 +416,10 @@ xorpd (%rax), %xmm2
# CHECK-NEXT: 1 1 0.33 andpd %xmm0, %xmm2
# CHECK-NEXT: 2 7 0.50 * andpd (%rax), %xmm2
# CHECK-NEXT: 2 2 1.00 * * U clflush (%rax)
# CHECK-NEXT: 1 4 0.50 cmppd $0, %xmm0, %xmm2
# CHECK-NEXT: 2 10 0.50 * cmppd $0, (%rax), %xmm2
# CHECK-NEXT: 1 4 0.50 cmpsd $0, %xmm0, %xmm2
# CHECK-NEXT: 2 9 0.50 * cmpsd $0, (%rax), %xmm2
# CHECK-NEXT: 1 4 0.50 cmpeqpd %xmm0, %xmm2
# CHECK-NEXT: 2 10 0.50 * cmpeqpd (%rax), %xmm2
# CHECK-NEXT: 1 4 0.50 cmpeqsd %xmm0, %xmm2
# CHECK-NEXT: 2 9 0.50 * cmpeqsd (%rax), %xmm2
# CHECK-NEXT: 1 2 1.00 comisd %xmm0, %xmm1
# CHECK-NEXT: 2 7 1.00 * comisd (%rax), %xmm1
# CHECK-NEXT: 2 5 1.00 cvtdq2pd %xmm0, %xmm2
@ -702,10 +702,10 @@ xorpd (%rax), %xmm2
# CHECK-NEXT: - - 0.33 0.33 - - - 0.33 - - andpd %xmm0, %xmm2
# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - andpd (%rax), %xmm2
# CHECK-NEXT: - - 0.25 0.25 - - - 0.25 1.25 - clflush (%rax)
# CHECK-NEXT: - - 0.50 0.50 - - - - - - cmppd $0, %xmm0, %xmm2
# CHECK-NEXT: - - 0.50 0.50 0.50 0.50 - - - - cmppd $0, (%rax), %xmm2
# CHECK-NEXT: - - 0.50 0.50 - - - - - - cmpsd $0, %xmm0, %xmm2
# CHECK-NEXT: - - 0.50 0.50 0.50 0.50 - - - - cmpsd $0, (%rax), %xmm2
# CHECK-NEXT: - - 0.50 0.50 - - - - - - cmpeqpd %xmm0, %xmm2
# CHECK-NEXT: - - 0.50 0.50 0.50 0.50 - - - - cmpeqpd (%rax), %xmm2
# CHECK-NEXT: - - 0.50 0.50 - - - - - - cmpeqsd %xmm0, %xmm2
# CHECK-NEXT: - - 0.50 0.50 0.50 0.50 - - - - cmpeqsd (%rax), %xmm2
# CHECK-NEXT: - - 1.00 - - - - - - - comisd %xmm0, %xmm1
# CHECK-NEXT: - - 1.00 - 0.50 0.50 - - - - comisd (%rax), %xmm1
# CHECK-NEXT: - - 1.00 - - - - 1.00 - - cvtdq2pd %xmm0, %xmm2

View File

@ -1098,18 +1098,18 @@ vzeroupper
# CHECK-NEXT: 1 7 0.50 * vbroadcastsd (%rax), %ymm2
# CHECK-NEXT: 1 6 0.50 * vbroadcastss (%rax), %xmm2
# CHECK-NEXT: 1 7 0.50 * vbroadcastss (%rax), %ymm2
# CHECK-NEXT: 1 4 0.50 vcmppd $0, %xmm0, %xmm1, %xmm2
# CHECK-NEXT: 2 10 0.50 * vcmppd $0, (%rax), %xmm1, %xmm2
# CHECK-NEXT: 1 4 0.50 vcmppd $0, %ymm0, %ymm1, %ymm2
# CHECK-NEXT: 2 11 0.50 * vcmppd $0, (%rax), %ymm1, %ymm2
# CHECK-NEXT: 1 4 0.50 vcmpps $0, %xmm0, %xmm1, %xmm2
# CHECK-NEXT: 2 10 0.50 * vcmpps $0, (%rax), %xmm1, %xmm2
# CHECK-NEXT: 1 4 0.50 vcmpps $0, %ymm0, %ymm1, %ymm2
# CHECK-NEXT: 2 11 0.50 * vcmpps $0, (%rax), %ymm1, %ymm2
# CHECK-NEXT: 1 4 0.50 vcmpsd $0, %xmm0, %xmm1, %xmm2
# CHECK-NEXT: 2 9 0.50 * vcmpsd $0, (%rax), %xmm1, %xmm2
# CHECK-NEXT: 1 4 0.50 vcmpss $0, %xmm0, %xmm1, %xmm2
# CHECK-NEXT: 2 9 0.50 * vcmpss $0, (%rax), %xmm1, %xmm2
# CHECK-NEXT: 1 4 0.50 vcmpeqpd %xmm0, %xmm1, %xmm2
# CHECK-NEXT: 2 10 0.50 * vcmpeqpd (%rax), %xmm1, %xmm2
# CHECK-NEXT: 1 4 0.50 vcmpeqpd %ymm0, %ymm1, %ymm2
# CHECK-NEXT: 2 11 0.50 * vcmpeqpd (%rax), %ymm1, %ymm2
# CHECK-NEXT: 1 4 0.50 vcmpeqps %xmm0, %xmm1, %xmm2
# CHECK-NEXT: 2 10 0.50 * vcmpeqps (%rax), %xmm1, %xmm2
# CHECK-NEXT: 1 4 0.50 vcmpeqps %ymm0, %ymm1, %ymm2
# CHECK-NEXT: 2 11 0.50 * vcmpeqps (%rax), %ymm1, %ymm2
# CHECK-NEXT: 1 4 0.50 vcmpeqsd %xmm0, %xmm1, %xmm2
# CHECK-NEXT: 2 9 0.50 * vcmpeqsd (%rax), %xmm1, %xmm2
# CHECK-NEXT: 1 4 0.50 vcmpeqss %xmm0, %xmm1, %xmm2
# CHECK-NEXT: 2 9 0.50 * vcmpeqss (%rax), %xmm1, %xmm2
# CHECK-NEXT: 1 2 1.00 vcomisd %xmm0, %xmm1
# CHECK-NEXT: 2 7 1.00 * vcomisd (%rax), %xmm1
# CHECK-NEXT: 1 2 1.00 vcomiss %xmm0, %xmm1
@ -1808,18 +1808,18 @@ vzeroupper
# CHECK-NEXT: - - - - 0.50 0.50 - - - - vbroadcastsd (%rax), %ymm2
# CHECK-NEXT: - - - - 0.50 0.50 - - - - vbroadcastss (%rax), %xmm2
# CHECK-NEXT: - - - - 0.50 0.50 - - - - vbroadcastss (%rax), %ymm2
# CHECK-NEXT: - - 0.50 0.50 - - - - - - vcmppd $0, %xmm0, %xmm1, %xmm2
# CHECK-NEXT: - - 0.50 0.50 0.50 0.50 - - - - vcmppd $0, (%rax), %xmm1, %xmm2
# CHECK-NEXT: - - 0.50 0.50 - - - - - - vcmppd $0, %ymm0, %ymm1, %ymm2
# CHECK-NEXT: - - 0.50 0.50 0.50 0.50 - - - - vcmppd $0, (%rax), %ymm1, %ymm2
# CHECK-NEXT: - - 0.50 0.50 - - - - - - vcmpps $0, %xmm0, %xmm1, %xmm2
# CHECK-NEXT: - - 0.50 0.50 0.50 0.50 - - - - vcmpps $0, (%rax), %xmm1, %xmm2
# CHECK-NEXT: - - 0.50 0.50 - - - - - - vcmpps $0, %ymm0, %ymm1, %ymm2
# CHECK-NEXT: - - 0.50 0.50 0.50 0.50 - - - - vcmpps $0, (%rax), %ymm1, %ymm2
# CHECK-NEXT: - - 0.50 0.50 - - - - - - vcmpsd $0, %xmm0, %xmm1, %xmm2
# CHECK-NEXT: - - 0.50 0.50 0.50 0.50 - - - - vcmpsd $0, (%rax), %xmm1, %xmm2
# CHECK-NEXT: - - 0.50 0.50 - - - - - - vcmpss $0, %xmm0, %xmm1, %xmm2
# CHECK-NEXT: - - 0.50 0.50 0.50 0.50 - - - - vcmpss $0, (%rax), %xmm1, %xmm2
# CHECK-NEXT: - - 0.50 0.50 - - - - - - vcmpeqpd %xmm0, %xmm1, %xmm2
# CHECK-NEXT: - - 0.50 0.50 0.50 0.50 - - - - vcmpeqpd (%rax), %xmm1, %xmm2
# CHECK-NEXT: - - 0.50 0.50 - - - - - - vcmpeqpd %ymm0, %ymm1, %ymm2
# CHECK-NEXT: - - 0.50 0.50 0.50 0.50 - - - - vcmpeqpd (%rax), %ymm1, %ymm2
# CHECK-NEXT: - - 0.50 0.50 - - - - - - vcmpeqps %xmm0, %xmm1, %xmm2
# CHECK-NEXT: - - 0.50 0.50 0.50 0.50 - - - - vcmpeqps (%rax), %xmm1, %xmm2
# CHECK-NEXT: - - 0.50 0.50 - - - - - - vcmpeqps %ymm0, %ymm1, %ymm2
# CHECK-NEXT: - - 0.50 0.50 0.50 0.50 - - - - vcmpeqps (%rax), %ymm1, %ymm2
# CHECK-NEXT: - - 0.50 0.50 - - - - - - vcmpeqsd %xmm0, %xmm1, %xmm2
# CHECK-NEXT: - - 0.50 0.50 0.50 0.50 - - - - vcmpeqsd (%rax), %xmm1, %xmm2
# CHECK-NEXT: - - 0.50 0.50 - - - - - - vcmpeqss %xmm0, %xmm1, %xmm2
# CHECK-NEXT: - - 0.50 0.50 0.50 0.50 - - - - vcmpeqss (%rax), %xmm1, %xmm2
# CHECK-NEXT: - - 1.00 - - - - - - - vcomisd %xmm0, %xmm1
# CHECK-NEXT: - - 1.00 - 0.50 0.50 - - - - vcomisd (%rax), %xmm1
# CHECK-NEXT: - - 1.00 - - - - - - - vcomiss %xmm0, %xmm1

View File

@ -202,10 +202,10 @@ xorps (%rax), %xmm2
# CHECK-NEXT: 2 7 0.50 * andnps (%rax), %xmm2
# CHECK-NEXT: 1 1 0.33 andps %xmm0, %xmm2
# CHECK-NEXT: 2 7 0.50 * andps (%rax), %xmm2
# CHECK-NEXT: 1 4 0.50 cmpps $0, %xmm0, %xmm2
# CHECK-NEXT: 2 10 0.50 * cmpps $0, (%rax), %xmm2
# CHECK-NEXT: 1 4 0.50 cmpss $0, %xmm0, %xmm2
# CHECK-NEXT: 2 9 0.50 * cmpss $0, (%rax), %xmm2
# CHECK-NEXT: 1 4 0.50 cmpeqps %xmm0, %xmm2
# CHECK-NEXT: 2 10 0.50 * cmpeqps (%rax), %xmm2
# CHECK-NEXT: 1 4 0.50 cmpeqss %xmm0, %xmm2
# CHECK-NEXT: 2 9 0.50 * cmpeqss (%rax), %xmm2
# CHECK-NEXT: 1 2 1.00 comiss %xmm0, %xmm1
# CHECK-NEXT: 2 7 1.00 * comiss (%rax), %xmm1
# CHECK-NEXT: 2 6 2.00 cvtpi2ps %mm0, %xmm2
@ -345,10 +345,10 @@ xorps (%rax), %xmm2
# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - andnps (%rax), %xmm2
# CHECK-NEXT: - - 0.33 0.33 - - - 0.33 - - andps %xmm0, %xmm2
# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - andps (%rax), %xmm2
# CHECK-NEXT: - - 0.50 0.50 - - - - - - cmpps $0, %xmm0, %xmm2
# CHECK-NEXT: - - 0.50 0.50 0.50 0.50 - - - - cmpps $0, (%rax), %xmm2
# CHECK-NEXT: - - 0.50 0.50 - - - - - - cmpss $0, %xmm0, %xmm2
# CHECK-NEXT: - - 0.50 0.50 0.50 0.50 - - - - cmpss $0, (%rax), %xmm2
# CHECK-NEXT: - - 0.50 0.50 - - - - - - cmpeqps %xmm0, %xmm2
# CHECK-NEXT: - - 0.50 0.50 0.50 0.50 - - - - cmpeqps (%rax), %xmm2
# CHECK-NEXT: - - 0.50 0.50 - - - - - - cmpeqss %xmm0, %xmm2
# CHECK-NEXT: - - 0.50 0.50 0.50 0.50 - - - - cmpeqss (%rax), %xmm2
# CHECK-NEXT: - - 1.00 - - - - - - - comiss %xmm0, %xmm1
# CHECK-NEXT: - - 1.00 - 0.50 0.50 - - - - comiss (%rax), %xmm1
# CHECK-NEXT: - - - - - - - 2.00 - - cvtpi2ps %mm0, %xmm2

View File

@ -416,10 +416,10 @@ xorpd (%rax), %xmm2
# CHECK-NEXT: 1 1 0.33 andpd %xmm0, %xmm2
# CHECK-NEXT: 2 7 0.50 * andpd (%rax), %xmm2
# CHECK-NEXT: 2 2 1.00 * * U clflush (%rax)
# CHECK-NEXT: 1 4 0.50 cmppd $0, %xmm0, %xmm2
# CHECK-NEXT: 2 10 0.50 * cmppd $0, (%rax), %xmm2
# CHECK-NEXT: 1 4 0.50 cmpsd $0, %xmm0, %xmm2
# CHECK-NEXT: 2 9 0.50 * cmpsd $0, (%rax), %xmm2
# CHECK-NEXT: 1 4 0.50 cmpeqpd %xmm0, %xmm2
# CHECK-NEXT: 2 10 0.50 * cmpeqpd (%rax), %xmm2
# CHECK-NEXT: 1 4 0.50 cmpeqsd %xmm0, %xmm2
# CHECK-NEXT: 2 9 0.50 * cmpeqsd (%rax), %xmm2
# CHECK-NEXT: 1 2 1.00 comisd %xmm0, %xmm1
# CHECK-NEXT: 2 7 1.00 * comisd (%rax), %xmm1
# CHECK-NEXT: 1 4 0.50 cvtdq2pd %xmm0, %xmm2
@ -702,10 +702,10 @@ xorpd (%rax), %xmm2
# CHECK-NEXT: - - 0.33 0.33 - - - 0.33 - - andpd %xmm0, %xmm2
# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - andpd (%rax), %xmm2
# CHECK-NEXT: - - 0.25 0.25 - - - 0.25 1.25 - clflush (%rax)
# CHECK-NEXT: - - 0.50 0.50 - - - - - - cmppd $0, %xmm0, %xmm2
# CHECK-NEXT: - - 0.50 0.50 0.50 0.50 - - - - cmppd $0, (%rax), %xmm2
# CHECK-NEXT: - - 0.50 0.50 - - - - - - cmpsd $0, %xmm0, %xmm2
# CHECK-NEXT: - - 0.50 0.50 0.50 0.50 - - - - cmpsd $0, (%rax), %xmm2
# CHECK-NEXT: - - 0.50 0.50 - - - - - - cmpeqpd %xmm0, %xmm2
# CHECK-NEXT: - - 0.50 0.50 0.50 0.50 - - - - cmpeqpd (%rax), %xmm2
# CHECK-NEXT: - - 0.50 0.50 - - - - - - cmpeqsd %xmm0, %xmm2
# CHECK-NEXT: - - 0.50 0.50 0.50 0.50 - - - - cmpeqsd (%rax), %xmm2
# CHECK-NEXT: - - 1.00 - - - - - - - comisd %xmm0, %xmm1
# CHECK-NEXT: - - 1.00 - 0.50 0.50 - - - - comisd (%rax), %xmm1
# CHECK-NEXT: - - 0.50 0.50 - - - - - - cvtdq2pd %xmm0, %xmm2

View File

@ -1098,18 +1098,18 @@ vzeroupper
# CHECK-NEXT: 1 8 0.50 * vbroadcastsd (%rax), %ymm2
# CHECK-NEXT: 1 8 0.50 * vbroadcastss (%rax), %xmm2
# CHECK-NEXT: 1 8 0.50 * vbroadcastss (%rax), %ymm2
# CHECK-NEXT: 1 3 1.00 vcmppd $0, %xmm0, %xmm1, %xmm2
# CHECK-NEXT: 1 10 1.00 * vcmppd $0, (%rax), %xmm1, %xmm2
# CHECK-NEXT: 1 3 1.00 vcmppd $0, %ymm0, %ymm1, %ymm2
# CHECK-NEXT: 1 10 1.00 * vcmppd $0, (%rax), %ymm1, %ymm2
# CHECK-NEXT: 1 3 1.00 vcmpps $0, %xmm0, %xmm1, %xmm2
# CHECK-NEXT: 1 10 1.00 * vcmpps $0, (%rax), %xmm1, %xmm2
# CHECK-NEXT: 1 3 1.00 vcmpps $0, %ymm0, %ymm1, %ymm2
# CHECK-NEXT: 1 10 1.00 * vcmpps $0, (%rax), %ymm1, %ymm2
# CHECK-NEXT: 1 3 1.00 vcmpsd $0, %xmm0, %xmm1, %xmm2
# CHECK-NEXT: 1 10 1.00 * vcmpsd $0, (%rax), %xmm1, %xmm2
# CHECK-NEXT: 1 3 1.00 vcmpss $0, %xmm0, %xmm1, %xmm2
# CHECK-NEXT: 1 10 1.00 * vcmpss $0, (%rax), %xmm1, %xmm2
# CHECK-NEXT: 1 3 1.00 vcmpeqpd %xmm0, %xmm1, %xmm2
# CHECK-NEXT: 1 10 1.00 * vcmpeqpd (%rax), %xmm1, %xmm2
# CHECK-NEXT: 1 3 1.00 vcmpeqpd %ymm0, %ymm1, %ymm2
# CHECK-NEXT: 1 10 1.00 * vcmpeqpd (%rax), %ymm1, %ymm2
# CHECK-NEXT: 1 3 1.00 vcmpeqps %xmm0, %xmm1, %xmm2
# CHECK-NEXT: 1 10 1.00 * vcmpeqps (%rax), %xmm1, %xmm2
# CHECK-NEXT: 1 3 1.00 vcmpeqps %ymm0, %ymm1, %ymm2
# CHECK-NEXT: 1 10 1.00 * vcmpeqps (%rax), %ymm1, %ymm2
# CHECK-NEXT: 1 3 1.00 vcmpeqsd %xmm0, %xmm1, %xmm2
# CHECK-NEXT: 1 10 1.00 * vcmpeqsd (%rax), %xmm1, %xmm2
# CHECK-NEXT: 1 3 1.00 vcmpeqss %xmm0, %xmm1, %xmm2
# CHECK-NEXT: 1 10 1.00 * vcmpeqss (%rax), %xmm1, %xmm2
# CHECK-NEXT: 1 3 1.00 vcomisd %xmm0, %xmm1
# CHECK-NEXT: 1 10 1.00 * vcomisd (%rax), %xmm1
# CHECK-NEXT: 1 3 1.00 vcomiss %xmm0, %xmm1
@ -1810,18 +1810,18 @@ vzeroupper
# CHECK-NEXT: 0.50 0.50 - - - - - - 0.50 0.50 - - vbroadcastsd (%rax), %ymm2
# CHECK-NEXT: 0.50 0.50 - - - - - - 0.50 0.50 - - vbroadcastss (%rax), %xmm2
# CHECK-NEXT: 0.50 0.50 - - - - - - 0.50 0.50 - - vbroadcastss (%rax), %ymm2
# CHECK-NEXT: - - - - - - - 1.00 - - - - vcmppd $0, %xmm0, %xmm1, %xmm2
# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - - - - vcmppd $0, (%rax), %xmm1, %xmm2
# CHECK-NEXT: - - - - - - - 1.00 - - - - vcmppd $0, %ymm0, %ymm1, %ymm2
# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - - - - vcmppd $0, (%rax), %ymm1, %ymm2
# CHECK-NEXT: - - - - - - - 1.00 - - - - vcmpps $0, %xmm0, %xmm1, %xmm2
# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - - - - vcmpps $0, (%rax), %xmm1, %xmm2
# CHECK-NEXT: - - - - - - - 1.00 - - - - vcmpps $0, %ymm0, %ymm1, %ymm2
# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - - - - vcmpps $0, (%rax), %ymm1, %ymm2
# CHECK-NEXT: - - - - - - - 1.00 - - - - vcmpsd $0, %xmm0, %xmm1, %xmm2
# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - - - - vcmpsd $0, (%rax), %xmm1, %xmm2
# CHECK-NEXT: - - - - - - - 1.00 - - - - vcmpss $0, %xmm0, %xmm1, %xmm2
# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - - - - vcmpss $0, (%rax), %xmm1, %xmm2
# CHECK-NEXT: - - - - - - - 1.00 - - - - vcmpeqpd %xmm0, %xmm1, %xmm2
# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - - - - vcmpeqpd (%rax), %xmm1, %xmm2
# CHECK-NEXT: - - - - - - - 1.00 - - - - vcmpeqpd %ymm0, %ymm1, %ymm2
# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - - - - vcmpeqpd (%rax), %ymm1, %ymm2
# CHECK-NEXT: - - - - - - - 1.00 - - - - vcmpeqps %xmm0, %xmm1, %xmm2
# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - - - - vcmpeqps (%rax), %xmm1, %xmm2
# CHECK-NEXT: - - - - - - - 1.00 - - - - vcmpeqps %ymm0, %ymm1, %ymm2
# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - - - - vcmpeqps (%rax), %ymm1, %ymm2
# CHECK-NEXT: - - - - - - - 1.00 - - - - vcmpeqsd %xmm0, %xmm1, %xmm2
# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - - - - vcmpeqsd (%rax), %xmm1, %xmm2
# CHECK-NEXT: - - - - - - - 1.00 - - - - vcmpeqss %xmm0, %xmm1, %xmm2
# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - - - - vcmpeqss (%rax), %xmm1, %xmm2
# CHECK-NEXT: - - - - - - - 1.00 - - - - vcomisd %xmm0, %xmm1
# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - - - - vcomisd (%rax), %xmm1
# CHECK-NEXT: - - - - - - - 1.00 - - - - vcomiss %xmm0, %xmm1

View File

@ -202,10 +202,10 @@ xorps (%rax), %xmm2
# CHECK-NEXT: 1 8 0.50 * andnps (%rax), %xmm2
# CHECK-NEXT: 1 1 0.25 andps %xmm0, %xmm2
# CHECK-NEXT: 1 8 0.50 * andps (%rax), %xmm2
# CHECK-NEXT: 1 3 1.00 cmpps $0, %xmm0, %xmm2
# CHECK-NEXT: 1 10 1.00 * cmpps $0, (%rax), %xmm2
# CHECK-NEXT: 1 3 1.00 cmpss $0, %xmm0, %xmm2
# CHECK-NEXT: 1 10 1.00 * cmpss $0, (%rax), %xmm2
# CHECK-NEXT: 1 3 1.00 cmpeqps %xmm0, %xmm2
# CHECK-NEXT: 1 10 1.00 * cmpeqps (%rax), %xmm2
# CHECK-NEXT: 1 3 1.00 cmpeqss %xmm0, %xmm2
# CHECK-NEXT: 1 10 1.00 * cmpeqss (%rax), %xmm2
# CHECK-NEXT: 1 3 1.00 comiss %xmm0, %xmm1
# CHECK-NEXT: 1 10 1.00 * comiss (%rax), %xmm1
# CHECK-NEXT: 1 5 1.00 cvtpi2ps %mm0, %xmm2
@ -347,10 +347,10 @@ xorps (%rax), %xmm2
# CHECK-NEXT: 0.50 0.50 - - - - - 0.25 0.25 0.25 0.25 - andnps (%rax), %xmm2
# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - andps %xmm0, %xmm2
# CHECK-NEXT: 0.50 0.50 - - - - - 0.25 0.25 0.25 0.25 - andps (%rax), %xmm2
# CHECK-NEXT: - - - - - - - 1.00 - - - - cmpps $0, %xmm0, %xmm2
# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - - - - cmpps $0, (%rax), %xmm2
# CHECK-NEXT: - - - - - - - 1.00 - - - - cmpss $0, %xmm0, %xmm2
# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - - - - cmpss $0, (%rax), %xmm2
# CHECK-NEXT: - - - - - - - 1.00 - - - - cmpeqps %xmm0, %xmm2
# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - - - - cmpeqps (%rax), %xmm2
# CHECK-NEXT: - - - - - - - 1.00 - - - - cmpeqss %xmm0, %xmm2
# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - - - - cmpeqss (%rax), %xmm2
# CHECK-NEXT: - - - - - - - 1.00 - - - - comiss %xmm0, %xmm1
# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - - - - comiss (%rax), %xmm1
# CHECK-NEXT: - - - - - - - - - - 1.00 - cvtpi2ps %mm0, %xmm2

View File

@ -416,10 +416,10 @@ xorpd (%rax), %xmm2
# CHECK-NEXT: 1 1 0.25 andpd %xmm0, %xmm2
# CHECK-NEXT: 1 8 0.50 * andpd (%rax), %xmm2
# CHECK-NEXT: 1 8 0.50 * * U clflush (%rax)
# CHECK-NEXT: 1 3 1.00 cmppd $0, %xmm0, %xmm2
# CHECK-NEXT: 1 10 1.00 * cmppd $0, (%rax), %xmm2
# CHECK-NEXT: 1 3 1.00 cmpsd $0, %xmm0, %xmm2
# CHECK-NEXT: 1 10 1.00 * cmpsd $0, (%rax), %xmm2
# CHECK-NEXT: 1 3 1.00 cmpeqpd %xmm0, %xmm2
# CHECK-NEXT: 1 10 1.00 * cmpeqpd (%rax), %xmm2
# CHECK-NEXT: 1 3 1.00 cmpeqsd %xmm0, %xmm2
# CHECK-NEXT: 1 10 1.00 * cmpeqsd (%rax), %xmm2
# CHECK-NEXT: 1 3 1.00 comisd %xmm0, %xmm1
# CHECK-NEXT: 1 10 1.00 * comisd (%rax), %xmm1
# CHECK-NEXT: 1 5 1.00 cvtdq2pd %xmm0, %xmm2
@ -704,10 +704,10 @@ xorpd (%rax), %xmm2
# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - andpd %xmm0, %xmm2
# CHECK-NEXT: 0.50 0.50 - - - - - 0.25 0.25 0.25 0.25 - andpd (%rax), %xmm2
# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - clflush (%rax)
# CHECK-NEXT: - - - - - - - 1.00 - - - - cmppd $0, %xmm0, %xmm2
# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - - - - cmppd $0, (%rax), %xmm2
# CHECK-NEXT: - - - - - - - 1.00 - - - - cmpsd $0, %xmm0, %xmm2
# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - - - - cmpsd $0, (%rax), %xmm2
# CHECK-NEXT: - - - - - - - 1.00 - - - - cmpeqpd %xmm0, %xmm2
# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - - - - cmpeqpd (%rax), %xmm2
# CHECK-NEXT: - - - - - - - 1.00 - - - - cmpeqsd %xmm0, %xmm2
# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - - - - cmpeqsd (%rax), %xmm2
# CHECK-NEXT: - - - - - - - 1.00 - - - - comisd %xmm0, %xmm1
# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - - - - comisd (%rax), %xmm1
# CHECK-NEXT: - - - - - - - - 0.50 0.50 1.00 - cvtdq2pd %xmm0, %xmm2

View File

@ -848,8 +848,6 @@ OperandType RecognizableInstr::typeFromString(const std::string &s,
TYPE("i64i32imm_pcrel", TYPE_REL)
TYPE("i16imm_pcrel", TYPE_REL)
TYPE("i32imm_pcrel", TYPE_REL)
TYPE("SSECC", TYPE_IMM3)
TYPE("AVXCC", TYPE_IMM5)
TYPE("AVX512RC", TYPE_IMM)
TYPE("brtarget32", TYPE_REL)
TYPE("brtarget16", TYPE_REL)
@ -929,8 +927,6 @@ RecognizableInstr::immediateEncodingFromString(const std::string &s,
ENCODING("i16imm", ENCODING_IW)
}
ENCODING("i32i8imm", ENCODING_IB)
ENCODING("SSECC", ENCODING_IB)
ENCODING("AVXCC", ENCODING_IB)
ENCODING("AVX512RC", ENCODING_IRC)
ENCODING("i16imm", ENCODING_Iv)
ENCODING("i16i8imm", ENCODING_IB)