Index: llvm/trunk/include/llvm/Support/X86DisassemblerDecoderCommon.h =================================================================== --- llvm/trunk/include/llvm/Support/X86DisassemblerDecoderCommon.h +++ llvm/trunk/include/llvm/Support/X86DisassemblerDecoderCommon.h @@ -414,8 +414,6 @@ 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") \ Index: llvm/trunk/lib/Target/X86/AsmParser/X86AsmParser.cpp =================================================================== --- llvm/trunk/lib/Target/X86/AsmParser/X86AsmParser.cpp +++ llvm/trunk/lib/Target/X86/AsmParser/X86AsmParser.cpp @@ -2318,13 +2318,15 @@ PatchedName != "setb" && PatchedName != "setnb") PatchedName = PatchedName.substr(0, Name.size()-1); + unsigned ComparisonCode = ~0U; + // FIXME: Hack to recognize cmp{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 CC = StringSwitch( PatchedName.slice(CCIdx, PatchedName.size() - 2)) .Case("eq", 0x00) .Case("eq_oq", 0x00) @@ -2374,21 +2376,22 @@ .Case("gt_oq", 0x1E) .Case("true_us", 0x1F) .Default(~0U); - if (ComparisonCode != ~0U && (IsVCMP || ComparisonCode < 8)) { - - 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)); + 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!"); - PatchedName = PatchedName.substr(PatchedName.size() - 2); + ComparisonCode = CC; } } - unsigned ComparisonCode = ~0U; - // FIXME: Hack to recognize vpcmp{ub,uw,ud,uq,b,w,d,q}. if (PatchedName.startswith("vpcmp") && (PatchedName.back() == 'b' || PatchedName.back() == 'w' || Index: llvm/trunk/lib/Target/X86/Disassembler/X86Disassembler.cpp =================================================================== --- llvm/trunk/lib/Target/X86/Disassembler/X86Disassembler.cpp +++ llvm/trunk/lib/Target/X86/Disassembler/X86Disassembler.cpp @@ -445,66 +445,6 @@ 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) { Index: llvm/trunk/lib/Target/X86/InstPrinter/X86ATTInstPrinter.cpp =================================================================== --- llvm/trunk/lib/Target/X86/InstPrinter/X86ATTInstPrinter.cpp +++ llvm/trunk/lib/Target/X86/InstPrinter/X86ATTInstPrinter.cpp @@ -88,6 +88,127 @@ // 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: Index: llvm/trunk/lib/Target/X86/InstPrinter/X86InstPrinterCommon.h =================================================================== --- llvm/trunk/lib/Target/X86/InstPrinter/X86InstPrinterCommon.h +++ llvm/trunk/lib/Target/X86/InstPrinter/X86InstPrinterCommon.h @@ -26,6 +26,7 @@ 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: Index: llvm/trunk/lib/Target/X86/InstPrinter/X86InstPrinterCommon.cpp =================================================================== --- llvm/trunk/lib/Target/X86/InstPrinter/X86InstPrinterCommon.cpp +++ llvm/trunk/lib/Target/X86/InstPrinter/X86InstPrinterCommon.cpp @@ -181,6 +181,67 @@ } } +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(); Index: llvm/trunk/lib/Target/X86/InstPrinter/X86IntelInstPrinter.cpp =================================================================== --- llvm/trunk/lib/Target/X86/InstPrinter/X86IntelInstPrinter.cpp +++ llvm/trunk/lib/Target/X86/InstPrinter/X86IntelInstPrinter.cpp @@ -69,6 +69,126 @@ // 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: Index: llvm/trunk/lib/Target/X86/X86InstrAVX512.td =================================================================== --- llvm/trunk/lib/Target/X86/X86InstrAVX512.td +++ llvm/trunk/lib/Target/X86/X86InstrAVX512.td @@ -2032,71 +2032,47 @@ 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 @@ multiclass avx512_vcmp_common { 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 @@ 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_sae { // 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 { Index: llvm/trunk/lib/Target/X86/X86InstrInfo.td =================================================================== --- llvm/trunk/lib/Target/X86/X86InstrInfo.td +++ llvm/trunk/lib/Target/X86/X86InstrInfo.td @@ -600,16 +600,6 @@ def offset64_64 : X86MemOffsOperand; -def SSECC : Operand { - let PrintMethod = "printSSEAVXCC"; - let OperandType = "OPERAND_IMMEDIATE"; -} - -def AVXCC : Operand { - let PrintMethod = "printSSEAVXCC"; - let OperandType = "OPERAND_IMMEDIATE"; -} - class ImmSExtAsmOperandClass : AsmOperandClass { let SuperClasses = [ImmAsmOperand]; let RenderMethod = "addImmOperands"; Index: llvm/trunk/lib/Target/X86/X86InstrSSE.td =================================================================== --- llvm/trunk/lib/Target/X86/X86InstrSSE.td +++ llvm/trunk/lib/Target/X86/X86InstrSSE.td @@ -1768,68 +1768,53 @@ // sse12_cmp_scalar - sse 1 & 2 compare scalar instructions multiclass sse12_cmp_scalar { 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, XS, VEX_4V, VEX_LIG, VEX_WIG; let ExeDomain = SSEPackedDouble in -defm VCMPSD : sse12_cmp_scalar, XD, VEX_4V, VEX_LIG, VEX_WIG; let Constraints = "$src1 = $dst" in { let ExeDomain = SSEPackedSingle in - defm CMPSS : sse12_cmp_scalar, XS; let ExeDomain = SSEPackedDouble in - defm CMPSD : sse12_cmp_scalar, XD; } -multiclass sse12_cmp_scalar_int { 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 isCodeGenOnly = 1 in { // Aliases to match intrinsics which expect XMM operand(s). let ExeDomain = SSEPackedSingle in - defm VCMPSS : sse12_cmp_scalar_int, XS, VEX_4V; let ExeDomain = SSEPackedDouble in - defm VCMPSD : sse12_cmp_scalar_int, XD, VEX_4V; let Constraints = "$src1 = $dst" in { let ExeDomain = SSEPackedSingle in - defm CMPSS : sse12_cmp_scalar_int, XS; let ExeDomain = SSEPackedDouble in - defm CMPSD : sse12_cmp_scalar_int, XD; } } @@ -1945,56 +1930,38 @@ // sse12_cmp_packed - sse 1 & 2 compare packed instructions multiclass sse12_cmp_packed { 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, PS, VEX_4V, VEX_WIG; -defm VCMPPD : sse12_cmp_packed, PD, VEX_4V, VEX_WIG; -defm VCMPPSY : sse12_cmp_packed, PS, VEX_4V, VEX_L, VEX_WIG; -defm VCMPPDY : sse12_cmp_packed, PD, VEX_4V, VEX_L, VEX_WIG; let Constraints = "$src1 = $dst" in { - defm CMPPS : sse12_cmp_packed, PS; - defm CMPPD : sse12_cmp_packed, PD; } Index: llvm/trunk/test/MC/X86/x86-32-avx.s =================================================================== --- llvm/trunk/test/MC/X86/x86-32-avx.s +++ llvm/trunk/test/MC/X86/x86-32-avx.s @@ -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 Index: llvm/trunk/test/MC/X86/x86-32.s =================================================================== --- llvm/trunk/test/MC/X86/x86-32.s +++ llvm/trunk/test/MC/X86/x86-32.s @@ -262,28 +262,28 @@ // 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 Index: llvm/trunk/test/MC/X86/x86_64-avx-encoding.s =================================================================== --- llvm/trunk/test/MC/X86/x86_64-avx-encoding.s +++ llvm/trunk/test/MC/X86/x86_64-avx-encoding.s @@ -304,27 +304,27 @@ // 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 Index: llvm/trunk/test/tools/llvm-mca/X86/Atom/resources-sse1.s =================================================================== --- llvm/trunk/test/tools/llvm-mca/X86/Atom/resources-sse1.s +++ llvm/trunk/test/tools/llvm-mca/X86/Atom/resources-sse1.s @@ -202,10 +202,10 @@ # 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 @@ # 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 Index: llvm/trunk/test/tools/llvm-mca/X86/Atom/resources-sse2.s =================================================================== --- llvm/trunk/test/tools/llvm-mca/X86/Atom/resources-sse2.s +++ llvm/trunk/test/tools/llvm-mca/X86/Atom/resources-sse2.s @@ -416,10 +416,10 @@ # 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 @@ # 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 Index: llvm/trunk/test/tools/llvm-mca/X86/BdVer2/resources-avx1.s =================================================================== --- llvm/trunk/test/tools/llvm-mca/X86/BdVer2/resources-avx1.s +++ llvm/trunk/test/tools/llvm-mca/X86/BdVer2/resources-avx1.s @@ -1098,18 +1098,18 @@ # 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 @@ # 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 Index: llvm/trunk/test/tools/llvm-mca/X86/BdVer2/resources-sse1.s =================================================================== --- llvm/trunk/test/tools/llvm-mca/X86/BdVer2/resources-sse1.s +++ llvm/trunk/test/tools/llvm-mca/X86/BdVer2/resources-sse1.s @@ -202,10 +202,10 @@ # 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 @@ # 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 Index: llvm/trunk/test/tools/llvm-mca/X86/BdVer2/resources-sse2.s =================================================================== --- llvm/trunk/test/tools/llvm-mca/X86/BdVer2/resources-sse2.s +++ llvm/trunk/test/tools/llvm-mca/X86/BdVer2/resources-sse2.s @@ -416,10 +416,10 @@ # 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 @@ # 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 Index: llvm/trunk/test/tools/llvm-mca/X86/Broadwell/resources-avx1.s =================================================================== --- llvm/trunk/test/tools/llvm-mca/X86/Broadwell/resources-avx1.s +++ llvm/trunk/test/tools/llvm-mca/X86/Broadwell/resources-avx1.s @@ -1098,18 +1098,18 @@ # 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 @@ # 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 Index: llvm/trunk/test/tools/llvm-mca/X86/Broadwell/resources-sse1.s =================================================================== --- llvm/trunk/test/tools/llvm-mca/X86/Broadwell/resources-sse1.s +++ llvm/trunk/test/tools/llvm-mca/X86/Broadwell/resources-sse1.s @@ -202,10 +202,10 @@ # 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 @@ # 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 Index: llvm/trunk/test/tools/llvm-mca/X86/Broadwell/resources-sse2.s =================================================================== --- llvm/trunk/test/tools/llvm-mca/X86/Broadwell/resources-sse2.s +++ llvm/trunk/test/tools/llvm-mca/X86/Broadwell/resources-sse2.s @@ -416,10 +416,10 @@ # 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 @@ # 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 Index: llvm/trunk/test/tools/llvm-mca/X86/BtVer2/resources-avx1.s =================================================================== --- llvm/trunk/test/tools/llvm-mca/X86/BtVer2/resources-avx1.s +++ llvm/trunk/test/tools/llvm-mca/X86/BtVer2/resources-avx1.s @@ -1098,18 +1098,18 @@ # 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 @@ # 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 Index: llvm/trunk/test/tools/llvm-mca/X86/BtVer2/resources-sse1.s =================================================================== --- llvm/trunk/test/tools/llvm-mca/X86/BtVer2/resources-sse1.s +++ llvm/trunk/test/tools/llvm-mca/X86/BtVer2/resources-sse1.s @@ -202,10 +202,10 @@ # 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 @@ # 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 Index: llvm/trunk/test/tools/llvm-mca/X86/BtVer2/resources-sse2.s =================================================================== --- llvm/trunk/test/tools/llvm-mca/X86/BtVer2/resources-sse2.s +++ llvm/trunk/test/tools/llvm-mca/X86/BtVer2/resources-sse2.s @@ -416,10 +416,10 @@ # 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 @@ # 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 Index: llvm/trunk/test/tools/llvm-mca/X86/Generic/resources-avx1.s =================================================================== --- llvm/trunk/test/tools/llvm-mca/X86/Generic/resources-avx1.s +++ llvm/trunk/test/tools/llvm-mca/X86/Generic/resources-avx1.s @@ -1098,18 +1098,18 @@ # 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 @@ # 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 Index: llvm/trunk/test/tools/llvm-mca/X86/Generic/resources-sse1.s =================================================================== --- llvm/trunk/test/tools/llvm-mca/X86/Generic/resources-sse1.s +++ llvm/trunk/test/tools/llvm-mca/X86/Generic/resources-sse1.s @@ -202,10 +202,10 @@ # 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 @@ # 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 Index: llvm/trunk/test/tools/llvm-mca/X86/Generic/resources-sse2.s =================================================================== --- llvm/trunk/test/tools/llvm-mca/X86/Generic/resources-sse2.s +++ llvm/trunk/test/tools/llvm-mca/X86/Generic/resources-sse2.s @@ -416,10 +416,10 @@ # 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 @@ # 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 Index: llvm/trunk/test/tools/llvm-mca/X86/Haswell/resources-avx1.s =================================================================== --- llvm/trunk/test/tools/llvm-mca/X86/Haswell/resources-avx1.s +++ llvm/trunk/test/tools/llvm-mca/X86/Haswell/resources-avx1.s @@ -1098,18 +1098,18 @@ # 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 @@ # 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 Index: llvm/trunk/test/tools/llvm-mca/X86/Haswell/resources-sse1.s =================================================================== --- llvm/trunk/test/tools/llvm-mca/X86/Haswell/resources-sse1.s +++ llvm/trunk/test/tools/llvm-mca/X86/Haswell/resources-sse1.s @@ -202,10 +202,10 @@ # 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 @@ # 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 Index: llvm/trunk/test/tools/llvm-mca/X86/Haswell/resources-sse2.s =================================================================== --- llvm/trunk/test/tools/llvm-mca/X86/Haswell/resources-sse2.s +++ llvm/trunk/test/tools/llvm-mca/X86/Haswell/resources-sse2.s @@ -416,10 +416,10 @@ # 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 @@ # 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 Index: llvm/trunk/test/tools/llvm-mca/X86/SLM/resources-sse1.s =================================================================== --- llvm/trunk/test/tools/llvm-mca/X86/SLM/resources-sse1.s +++ llvm/trunk/test/tools/llvm-mca/X86/SLM/resources-sse1.s @@ -202,10 +202,10 @@ # 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 @@ # 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 Index: llvm/trunk/test/tools/llvm-mca/X86/SLM/resources-sse2.s =================================================================== --- llvm/trunk/test/tools/llvm-mca/X86/SLM/resources-sse2.s +++ llvm/trunk/test/tools/llvm-mca/X86/SLM/resources-sse2.s @@ -416,10 +416,10 @@ # 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 @@ # 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 Index: llvm/trunk/test/tools/llvm-mca/X86/SandyBridge/resources-avx1.s =================================================================== --- llvm/trunk/test/tools/llvm-mca/X86/SandyBridge/resources-avx1.s +++ llvm/trunk/test/tools/llvm-mca/X86/SandyBridge/resources-avx1.s @@ -1098,18 +1098,18 @@ # 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 @@ # 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 Index: llvm/trunk/test/tools/llvm-mca/X86/SandyBridge/resources-sse1.s =================================================================== --- llvm/trunk/test/tools/llvm-mca/X86/SandyBridge/resources-sse1.s +++ llvm/trunk/test/tools/llvm-mca/X86/SandyBridge/resources-sse1.s @@ -202,10 +202,10 @@ # 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 @@ # 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 Index: llvm/trunk/test/tools/llvm-mca/X86/SandyBridge/resources-sse2.s =================================================================== --- llvm/trunk/test/tools/llvm-mca/X86/SandyBridge/resources-sse2.s +++ llvm/trunk/test/tools/llvm-mca/X86/SandyBridge/resources-sse2.s @@ -416,10 +416,10 @@ # 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 @@ # 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 Index: llvm/trunk/test/tools/llvm-mca/X86/SkylakeClient/resources-avx1.s =================================================================== --- llvm/trunk/test/tools/llvm-mca/X86/SkylakeClient/resources-avx1.s +++ llvm/trunk/test/tools/llvm-mca/X86/SkylakeClient/resources-avx1.s @@ -1098,18 +1098,18 @@ # 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 @@ # 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 Index: llvm/trunk/test/tools/llvm-mca/X86/SkylakeClient/resources-sse1.s =================================================================== --- llvm/trunk/test/tools/llvm-mca/X86/SkylakeClient/resources-sse1.s +++ llvm/trunk/test/tools/llvm-mca/X86/SkylakeClient/resources-sse1.s @@ -202,10 +202,10 @@ # 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 @@ # 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 Index: llvm/trunk/test/tools/llvm-mca/X86/SkylakeClient/resources-sse2.s =================================================================== --- llvm/trunk/test/tools/llvm-mca/X86/SkylakeClient/resources-sse2.s +++ llvm/trunk/test/tools/llvm-mca/X86/SkylakeClient/resources-sse2.s @@ -416,10 +416,10 @@ # 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 @@ # 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 Index: llvm/trunk/test/tools/llvm-mca/X86/SkylakeServer/resources-avx1.s =================================================================== --- llvm/trunk/test/tools/llvm-mca/X86/SkylakeServer/resources-avx1.s +++ llvm/trunk/test/tools/llvm-mca/X86/SkylakeServer/resources-avx1.s @@ -1098,18 +1098,18 @@ # 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 @@ # 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 Index: llvm/trunk/test/tools/llvm-mca/X86/SkylakeServer/resources-sse1.s =================================================================== --- llvm/trunk/test/tools/llvm-mca/X86/SkylakeServer/resources-sse1.s +++ llvm/trunk/test/tools/llvm-mca/X86/SkylakeServer/resources-sse1.s @@ -202,10 +202,10 @@ # 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 @@ # 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 Index: llvm/trunk/test/tools/llvm-mca/X86/SkylakeServer/resources-sse2.s =================================================================== --- llvm/trunk/test/tools/llvm-mca/X86/SkylakeServer/resources-sse2.s +++ llvm/trunk/test/tools/llvm-mca/X86/SkylakeServer/resources-sse2.s @@ -416,10 +416,10 @@ # 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 @@ # 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 Index: llvm/trunk/test/tools/llvm-mca/X86/Znver1/resources-avx1.s =================================================================== --- llvm/trunk/test/tools/llvm-mca/X86/Znver1/resources-avx1.s +++ llvm/trunk/test/tools/llvm-mca/X86/Znver1/resources-avx1.s @@ -1098,18 +1098,18 @@ # 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 @@ # 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 Index: llvm/trunk/test/tools/llvm-mca/X86/Znver1/resources-sse1.s =================================================================== --- llvm/trunk/test/tools/llvm-mca/X86/Znver1/resources-sse1.s +++ llvm/trunk/test/tools/llvm-mca/X86/Znver1/resources-sse1.s @@ -202,10 +202,10 @@ # 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 @@ # 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 Index: llvm/trunk/test/tools/llvm-mca/X86/Znver1/resources-sse2.s =================================================================== --- llvm/trunk/test/tools/llvm-mca/X86/Znver1/resources-sse2.s +++ llvm/trunk/test/tools/llvm-mca/X86/Znver1/resources-sse2.s @@ -416,10 +416,10 @@ # 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 @@ # 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 Index: llvm/trunk/utils/TableGen/X86RecognizableInstr.cpp =================================================================== --- llvm/trunk/utils/TableGen/X86RecognizableInstr.cpp +++ llvm/trunk/utils/TableGen/X86RecognizableInstr.cpp @@ -848,8 +848,6 @@ 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 @@ 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)