mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-23 03:02:36 +01:00
[X86] Remove the _alt forms of (V)CMP instructions. Use a combination of custom printing and custom parsing to achieve the same result and more
Similar to previous change done for VPCOM and VPCMP Differential Revision: https://reviews.llvm.org/D59468 llvm-svn: 356384
This commit is contained in:
parent
ffc3aeaa73
commit
b48c0203ee
@ -414,8 +414,6 @@ enum OperandEncoding {
|
||||
ENUM_ENTRY(TYPE_R32, "4-byte") \
|
||||
ENUM_ENTRY(TYPE_R64, "8-byte") \
|
||||
ENUM_ENTRY(TYPE_IMM, "immediate operand") \
|
||||
ENUM_ENTRY(TYPE_IMM3, "1-byte immediate operand between 0 and 7") \
|
||||
ENUM_ENTRY(TYPE_IMM5, "1-byte immediate operand between 0 and 31") \
|
||||
ENUM_ENTRY(TYPE_UIMM8, "1-byte unsigned immediate operand") \
|
||||
ENUM_ENTRY(TYPE_M, "Memory operand") \
|
||||
ENUM_ENTRY(TYPE_MVSIBX, "Memory operand using XMM index") \
|
||||
|
@ -2318,13 +2318,15 @@ bool X86AsmParser::ParseInstruction(ParseInstructionInfo &Info, StringRef Name,
|
||||
PatchedName != "setb" && PatchedName != "setnb")
|
||||
PatchedName = PatchedName.substr(0, Name.size()-1);
|
||||
|
||||
unsigned ComparisonCode = ~0U;
|
||||
|
||||
// FIXME: Hack to recognize cmp<comparison code>{ss,sd,ps,pd}.
|
||||
if ((PatchedName.startswith("cmp") || PatchedName.startswith("vcmp")) &&
|
||||
(PatchedName.endswith("ss") || PatchedName.endswith("sd") ||
|
||||
PatchedName.endswith("ps") || PatchedName.endswith("pd"))) {
|
||||
bool IsVCMP = PatchedName[0] == 'v';
|
||||
unsigned CCIdx = IsVCMP ? 4 : 3;
|
||||
unsigned ComparisonCode = StringSwitch<unsigned>(
|
||||
unsigned CC = StringSwitch<unsigned>(
|
||||
PatchedName.slice(CCIdx, PatchedName.size() - 2))
|
||||
.Case("eq", 0x00)
|
||||
.Case("eq_oq", 0x00)
|
||||
@ -2374,21 +2376,22 @@ bool X86AsmParser::ParseInstruction(ParseInstructionInfo &Info, StringRef Name,
|
||||
.Case("gt_oq", 0x1E)
|
||||
.Case("true_us", 0x1F)
|
||||
.Default(~0U);
|
||||
if (ComparisonCode != ~0U && (IsVCMP || ComparisonCode < 8)) {
|
||||
if (CC != ~0U && (IsVCMP || CC < 8)) {
|
||||
if (PatchedName.endswith("ss"))
|
||||
PatchedName = IsVCMP ? "vcmpss" : "cmpss";
|
||||
else if (PatchedName.endswith("sd"))
|
||||
PatchedName = IsVCMP ? "vcmpsd" : "cmpsd";
|
||||
else if (PatchedName.endswith("ps"))
|
||||
PatchedName = IsVCMP ? "vcmpps" : "cmpps";
|
||||
else if (PatchedName.endswith("pd"))
|
||||
PatchedName = IsVCMP ? "vcmppd" : "cmppd";
|
||||
else
|
||||
llvm_unreachable("Unexpecte suffix!");
|
||||
|
||||
Operands.push_back(X86Operand::CreateToken(PatchedName.slice(0, CCIdx),
|
||||
NameLoc));
|
||||
|
||||
const MCExpr *ImmOp = MCConstantExpr::create(ComparisonCode,
|
||||
getParser().getContext());
|
||||
Operands.push_back(X86Operand::CreateImm(ImmOp, NameLoc, NameLoc));
|
||||
|
||||
PatchedName = PatchedName.substr(PatchedName.size() - 2);
|
||||
ComparisonCode = CC;
|
||||
}
|
||||
}
|
||||
|
||||
unsigned ComparisonCode = ~0U;
|
||||
|
||||
// FIXME: Hack to recognize vpcmp<comparison code>{ub,uw,ud,uq,b,w,d,q}.
|
||||
if (PatchedName.startswith("vpcmp") &&
|
||||
(PatchedName.back() == 'b' || PatchedName.back() == 'w' ||
|
||||
|
@ -445,66 +445,6 @@ static void translateImmediate(MCInst &mcInst, uint64_t immediate,
|
||||
case ENCODING_IO:
|
||||
break;
|
||||
}
|
||||
} else if (type == TYPE_IMM3) {
|
||||
// Check for immediates that printSSECC can't handle.
|
||||
if (immediate >= 8) {
|
||||
unsigned NewOpc;
|
||||
switch (mcInst.getOpcode()) {
|
||||
default: llvm_unreachable("unexpected opcode");
|
||||
case X86::CMPPDrmi: NewOpc = X86::CMPPDrmi_alt; break;
|
||||
case X86::CMPPDrri: NewOpc = X86::CMPPDrri_alt; break;
|
||||
case X86::CMPPSrmi: NewOpc = X86::CMPPSrmi_alt; break;
|
||||
case X86::CMPPSrri: NewOpc = X86::CMPPSrri_alt; break;
|
||||
case X86::CMPSDrm: NewOpc = X86::CMPSDrm_alt; break;
|
||||
case X86::CMPSDrr: NewOpc = X86::CMPSDrr_alt; break;
|
||||
case X86::CMPSSrm: NewOpc = X86::CMPSSrm_alt; break;
|
||||
case X86::CMPSSrr: NewOpc = X86::CMPSSrr_alt; break;
|
||||
}
|
||||
// Switch opcode to the one that doesn't get special printing.
|
||||
mcInst.setOpcode(NewOpc);
|
||||
}
|
||||
} else if (type == TYPE_IMM5) {
|
||||
// Check for immediates that printAVXCC can't handle.
|
||||
if (immediate >= 32) {
|
||||
unsigned NewOpc;
|
||||
switch (mcInst.getOpcode()) {
|
||||
default: llvm_unreachable("unexpected opcode");
|
||||
case X86::VCMPPDrmi: NewOpc = X86::VCMPPDrmi_alt; break;
|
||||
case X86::VCMPPDrri: NewOpc = X86::VCMPPDrri_alt; break;
|
||||
case X86::VCMPPSrmi: NewOpc = X86::VCMPPSrmi_alt; break;
|
||||
case X86::VCMPPSrri: NewOpc = X86::VCMPPSrri_alt; break;
|
||||
case X86::VCMPSDrm: NewOpc = X86::VCMPSDrm_alt; break;
|
||||
case X86::VCMPSDrr: NewOpc = X86::VCMPSDrr_alt; break;
|
||||
case X86::VCMPSSrm: NewOpc = X86::VCMPSSrm_alt; break;
|
||||
case X86::VCMPSSrr: NewOpc = X86::VCMPSSrr_alt; break;
|
||||
case X86::VCMPPDYrmi: NewOpc = X86::VCMPPDYrmi_alt; break;
|
||||
case X86::VCMPPDYrri: NewOpc = X86::VCMPPDYrri_alt; break;
|
||||
case X86::VCMPPSYrmi: NewOpc = X86::VCMPPSYrmi_alt; break;
|
||||
case X86::VCMPPSYrri: NewOpc = X86::VCMPPSYrri_alt; break;
|
||||
case X86::VCMPPDZrmi: NewOpc = X86::VCMPPDZrmi_alt; break;
|
||||
case X86::VCMPPDZrri: NewOpc = X86::VCMPPDZrri_alt; break;
|
||||
case X86::VCMPPDZrrib: NewOpc = X86::VCMPPDZrrib_alt; break;
|
||||
case X86::VCMPPSZrmi: NewOpc = X86::VCMPPSZrmi_alt; break;
|
||||
case X86::VCMPPSZrri: NewOpc = X86::VCMPPSZrri_alt; break;
|
||||
case X86::VCMPPSZrrib: NewOpc = X86::VCMPPSZrrib_alt; break;
|
||||
case X86::VCMPPDZ128rmi: NewOpc = X86::VCMPPDZ128rmi_alt; break;
|
||||
case X86::VCMPPDZ128rri: NewOpc = X86::VCMPPDZ128rri_alt; break;
|
||||
case X86::VCMPPSZ128rmi: NewOpc = X86::VCMPPSZ128rmi_alt; break;
|
||||
case X86::VCMPPSZ128rri: NewOpc = X86::VCMPPSZ128rri_alt; break;
|
||||
case X86::VCMPPDZ256rmi: NewOpc = X86::VCMPPDZ256rmi_alt; break;
|
||||
case X86::VCMPPDZ256rri: NewOpc = X86::VCMPPDZ256rri_alt; break;
|
||||
case X86::VCMPPSZ256rmi: NewOpc = X86::VCMPPSZ256rmi_alt; break;
|
||||
case X86::VCMPPSZ256rri: NewOpc = X86::VCMPPSZ256rri_alt; break;
|
||||
case X86::VCMPSDZrm_Int: NewOpc = X86::VCMPSDZrmi_alt; break;
|
||||
case X86::VCMPSDZrr_Int: NewOpc = X86::VCMPSDZrri_alt; break;
|
||||
case X86::VCMPSDZrrb_Int: NewOpc = X86::VCMPSDZrrb_alt; break;
|
||||
case X86::VCMPSSZrm_Int: NewOpc = X86::VCMPSSZrmi_alt; break;
|
||||
case X86::VCMPSSZrr_Int: NewOpc = X86::VCMPSSZrri_alt; break;
|
||||
case X86::VCMPSSZrrb_Int: NewOpc = X86::VCMPSSZrrb_alt; break;
|
||||
}
|
||||
// Switch opcode to the one that doesn't get special printing.
|
||||
mcInst.setOpcode(NewOpc);
|
||||
}
|
||||
}
|
||||
|
||||
switch (type) {
|
||||
|
@ -88,6 +88,127 @@ bool X86ATTInstPrinter::printVecCompareInstr(const MCInst *MI,
|
||||
// Custom print the vector compare instructions to get the immediate
|
||||
// translated into the mnemonic.
|
||||
switch (MI->getOpcode()) {
|
||||
case X86::CMPPDrmi: case X86::CMPPDrri:
|
||||
case X86::CMPPSrmi: case X86::CMPPSrri:
|
||||
case X86::CMPSDrm: case X86::CMPSDrr:
|
||||
case X86::CMPSDrm_Int: case X86::CMPSDrr_Int:
|
||||
case X86::CMPSSrm: case X86::CMPSSrr:
|
||||
case X86::CMPSSrm_Int: case X86::CMPSSrr_Int:
|
||||
if (Imm >= 0 && Imm <= 7) {
|
||||
OS << '\t';
|
||||
printCMPMnemonic(MI, /*IsVCMP*/false, OS);
|
||||
|
||||
if ((Desc.TSFlags & X86II::FormMask) == X86II::MRMSrcMem) {
|
||||
if ((Desc.TSFlags & X86II::OpPrefixMask) == X86II::XS)
|
||||
printdwordmem(MI, 2, OS);
|
||||
else if ((Desc.TSFlags & X86II::OpPrefixMask) == X86II::XD)
|
||||
printqwordmem(MI, 2, OS);
|
||||
else
|
||||
printxmmwordmem(MI, 2, OS);
|
||||
} else
|
||||
printOperand(MI, 2, OS);
|
||||
|
||||
// Skip operand 1 as its tied to the dest.
|
||||
|
||||
OS << ", ";
|
||||
printOperand(MI, 0, OS);
|
||||
return true;
|
||||
}
|
||||
break;
|
||||
|
||||
case X86::VCMPPDrmi: case X86::VCMPPDrri:
|
||||
case X86::VCMPPDYrmi: case X86::VCMPPDYrri:
|
||||
case X86::VCMPPDZ128rmi: case X86::VCMPPDZ128rri:
|
||||
case X86::VCMPPDZ256rmi: case X86::VCMPPDZ256rri:
|
||||
case X86::VCMPPDZrmi: case X86::VCMPPDZrri:
|
||||
case X86::VCMPPSrmi: case X86::VCMPPSrri:
|
||||
case X86::VCMPPSYrmi: case X86::VCMPPSYrri:
|
||||
case X86::VCMPPSZ128rmi: case X86::VCMPPSZ128rri:
|
||||
case X86::VCMPPSZ256rmi: case X86::VCMPPSZ256rri:
|
||||
case X86::VCMPPSZrmi: case X86::VCMPPSZrri:
|
||||
case X86::VCMPSDrm: case X86::VCMPSDrr:
|
||||
case X86::VCMPSDZrm: case X86::VCMPSDZrr:
|
||||
case X86::VCMPSDrm_Int: case X86::VCMPSDrr_Int:
|
||||
case X86::VCMPSDZrm_Int: case X86::VCMPSDZrr_Int:
|
||||
case X86::VCMPSSrm: case X86::VCMPSSrr:
|
||||
case X86::VCMPSSZrm: case X86::VCMPSSZrr:
|
||||
case X86::VCMPSSrm_Int: case X86::VCMPSSrr_Int:
|
||||
case X86::VCMPSSZrm_Int: case X86::VCMPSSZrr_Int:
|
||||
case X86::VCMPPDZ128rmik: case X86::VCMPPDZ128rrik:
|
||||
case X86::VCMPPDZ256rmik: case X86::VCMPPDZ256rrik:
|
||||
case X86::VCMPPDZrmik: case X86::VCMPPDZrrik:
|
||||
case X86::VCMPPSZ128rmik: case X86::VCMPPSZ128rrik:
|
||||
case X86::VCMPPSZ256rmik: case X86::VCMPPSZ256rrik:
|
||||
case X86::VCMPPSZrmik: case X86::VCMPPSZrrik:
|
||||
case X86::VCMPSDZrm_Intk: case X86::VCMPSDZrr_Intk:
|
||||
case X86::VCMPSSZrm_Intk: case X86::VCMPSSZrr_Intk:
|
||||
case X86::VCMPPDZ128rmbi: case X86::VCMPPDZ128rmbik:
|
||||
case X86::VCMPPDZ256rmbi: case X86::VCMPPDZ256rmbik:
|
||||
case X86::VCMPPDZrmbi: case X86::VCMPPDZrmbik:
|
||||
case X86::VCMPPSZ128rmbi: case X86::VCMPPSZ128rmbik:
|
||||
case X86::VCMPPSZ256rmbi: case X86::VCMPPSZ256rmbik:
|
||||
case X86::VCMPPSZrmbi: case X86::VCMPPSZrmbik:
|
||||
case X86::VCMPPDZrrib: case X86::VCMPPDZrribk:
|
||||
case X86::VCMPPSZrrib: case X86::VCMPPSZrribk:
|
||||
case X86::VCMPSDZrrb_Int: case X86::VCMPSDZrrb_Intk:
|
||||
case X86::VCMPSSZrrb_Int: case X86::VCMPSSZrrb_Intk:
|
||||
if (Imm >= 0 && Imm <= 31) {
|
||||
OS << '\t';
|
||||
printCMPMnemonic(MI, /*IsVCMP*/true, OS);
|
||||
|
||||
unsigned CurOp = (Desc.TSFlags & X86II::EVEX_K) ? 3 : 2;
|
||||
|
||||
if ((Desc.TSFlags & X86II::FormMask) == X86II::MRMSrcMem) {
|
||||
if (Desc.TSFlags & X86II::EVEX_B) {
|
||||
// Broadcast form.
|
||||
// Load size is based on W-bit.
|
||||
if (Desc.TSFlags & X86II::VEX_W)
|
||||
printqwordmem(MI, CurOp--, OS);
|
||||
else
|
||||
printdwordmem(MI, CurOp--, OS);
|
||||
|
||||
// Print the number of elements broadcasted.
|
||||
unsigned NumElts;
|
||||
if (Desc.TSFlags & X86II::EVEX_L2)
|
||||
NumElts = (Desc.TSFlags & X86II::VEX_W) ? 8 : 16;
|
||||
else if (Desc.TSFlags & X86II::VEX_L)
|
||||
NumElts = (Desc.TSFlags & X86II::VEX_W) ? 4 : 8;
|
||||
else
|
||||
NumElts = (Desc.TSFlags & X86II::VEX_W) ? 2 : 4;
|
||||
OS << "{1to" << NumElts << "}";
|
||||
} else {
|
||||
if ((Desc.TSFlags & X86II::OpPrefixMask) == X86II::XS)
|
||||
printdwordmem(MI, CurOp--, OS);
|
||||
else if ((Desc.TSFlags & X86II::OpPrefixMask) == X86II::XD)
|
||||
printqwordmem(MI, CurOp--, OS);
|
||||
else if (Desc.TSFlags & X86II::EVEX_L2)
|
||||
printzmmwordmem(MI, CurOp--, OS);
|
||||
else if (Desc.TSFlags & X86II::VEX_L)
|
||||
printymmwordmem(MI, CurOp--, OS);
|
||||
else
|
||||
printxmmwordmem(MI, CurOp--, OS);
|
||||
}
|
||||
} else {
|
||||
if (Desc.TSFlags & X86II::EVEX_B)
|
||||
OS << "{sae}, ";
|
||||
printOperand(MI, CurOp--, OS);
|
||||
}
|
||||
|
||||
OS << ", ";
|
||||
printOperand(MI, CurOp--, OS);
|
||||
OS << ", ";
|
||||
printOperand(MI, 0, OS);
|
||||
if (CurOp > 0) {
|
||||
// Print mask operand.
|
||||
OS << " {";
|
||||
printOperand(MI, CurOp--, OS);
|
||||
OS << "}";
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
break;
|
||||
|
||||
case X86::VPCOMBmi: case X86::VPCOMBri:
|
||||
case X86::VPCOMDmi: case X86::VPCOMDri:
|
||||
case X86::VPCOMQmi: case X86::VPCOMQri:
|
||||
|
@ -181,6 +181,67 @@ void X86InstPrinterCommon::printVPCMPMnemonic(const MCInst *MI,
|
||||
}
|
||||
}
|
||||
|
||||
void X86InstPrinterCommon::printCMPMnemonic(const MCInst *MI, bool IsVCmp,
|
||||
raw_ostream &OS) {
|
||||
OS << (IsVCmp ? "vcmp" : "cmp");
|
||||
|
||||
printSSEAVXCC(MI, MI->getNumOperands() - 1, OS);
|
||||
|
||||
switch (MI->getOpcode()) {
|
||||
default: llvm_unreachable("Unexpected opcode!");
|
||||
case X86::CMPPDrmi: case X86::CMPPDrri:
|
||||
case X86::VCMPPDrmi: case X86::VCMPPDrri:
|
||||
case X86::VCMPPDYrmi: case X86::VCMPPDYrri:
|
||||
case X86::VCMPPDZ128rmi: case X86::VCMPPDZ128rri:
|
||||
case X86::VCMPPDZ256rmi: case X86::VCMPPDZ256rri:
|
||||
case X86::VCMPPDZrmi: case X86::VCMPPDZrri:
|
||||
case X86::VCMPPDZ128rmik: case X86::VCMPPDZ128rrik:
|
||||
case X86::VCMPPDZ256rmik: case X86::VCMPPDZ256rrik:
|
||||
case X86::VCMPPDZrmik: case X86::VCMPPDZrrik:
|
||||
case X86::VCMPPDZ128rmbi: case X86::VCMPPDZ128rmbik:
|
||||
case X86::VCMPPDZ256rmbi: case X86::VCMPPDZ256rmbik:
|
||||
case X86::VCMPPDZrmbi: case X86::VCMPPDZrmbik:
|
||||
case X86::VCMPPDZrrib: case X86::VCMPPDZrribk:
|
||||
OS << "pd\t";
|
||||
break;
|
||||
case X86::CMPPSrmi: case X86::CMPPSrri:
|
||||
case X86::VCMPPSrmi: case X86::VCMPPSrri:
|
||||
case X86::VCMPPSYrmi: case X86::VCMPPSYrri:
|
||||
case X86::VCMPPSZ128rmi: case X86::VCMPPSZ128rri:
|
||||
case X86::VCMPPSZ256rmi: case X86::VCMPPSZ256rri:
|
||||
case X86::VCMPPSZrmi: case X86::VCMPPSZrri:
|
||||
case X86::VCMPPSZ128rmik: case X86::VCMPPSZ128rrik:
|
||||
case X86::VCMPPSZ256rmik: case X86::VCMPPSZ256rrik:
|
||||
case X86::VCMPPSZrmik: case X86::VCMPPSZrrik:
|
||||
case X86::VCMPPSZ128rmbi: case X86::VCMPPSZ128rmbik:
|
||||
case X86::VCMPPSZ256rmbi: case X86::VCMPPSZ256rmbik:
|
||||
case X86::VCMPPSZrmbi: case X86::VCMPPSZrmbik:
|
||||
case X86::VCMPPSZrrib: case X86::VCMPPSZrribk:
|
||||
OS << "ps\t";
|
||||
break;
|
||||
case X86::CMPSDrm: case X86::CMPSDrr:
|
||||
case X86::CMPSDrm_Int: case X86::CMPSDrr_Int:
|
||||
case X86::VCMPSDrm: case X86::VCMPSDrr:
|
||||
case X86::VCMPSDrm_Int: case X86::VCMPSDrr_Int:
|
||||
case X86::VCMPSDZrm: case X86::VCMPSDZrr:
|
||||
case X86::VCMPSDZrm_Int: case X86::VCMPSDZrr_Int:
|
||||
case X86::VCMPSDZrm_Intk: case X86::VCMPSDZrr_Intk:
|
||||
case X86::VCMPSDZrrb_Int: case X86::VCMPSDZrrb_Intk:
|
||||
OS << "sd\t";
|
||||
break;
|
||||
case X86::CMPSSrm: case X86::CMPSSrr:
|
||||
case X86::CMPSSrm_Int: case X86::CMPSSrr_Int:
|
||||
case X86::VCMPSSrm: case X86::VCMPSSrr:
|
||||
case X86::VCMPSSrm_Int: case X86::VCMPSSrr_Int:
|
||||
case X86::VCMPSSZrm: case X86::VCMPSSZrr:
|
||||
case X86::VCMPSSZrm_Int: case X86::VCMPSSZrr_Int:
|
||||
case X86::VCMPSSZrm_Intk: case X86::VCMPSSZrr_Intk:
|
||||
case X86::VCMPSSZrrb_Int: case X86::VCMPSSZrrb_Intk:
|
||||
OS << "ss\t";
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void X86InstPrinterCommon::printRoundingControl(const MCInst *MI, unsigned Op,
|
||||
raw_ostream &O) {
|
||||
int64_t Imm = MI->getOperand(Op).getImm();
|
||||
|
@ -26,6 +26,7 @@ public:
|
||||
void printSSEAVXCC(const MCInst *MI, unsigned Op, raw_ostream &OS);
|
||||
void printVPCOMMnemonic(const MCInst *MI, raw_ostream &OS);
|
||||
void printVPCMPMnemonic(const MCInst *MI, raw_ostream &OS);
|
||||
void printCMPMnemonic(const MCInst *MI, bool IsVCmp, raw_ostream &OS);
|
||||
void printRoundingControl(const MCInst *MI, unsigned Op, raw_ostream &O);
|
||||
void printPCRelImm(const MCInst *MI, unsigned OpNo, raw_ostream &O);
|
||||
protected:
|
||||
|
@ -69,6 +69,126 @@ bool X86IntelInstPrinter::printVecCompareInstr(const MCInst *MI, raw_ostream &OS
|
||||
// Custom print the vector compare instructions to get the immediate
|
||||
// translated into the mnemonic.
|
||||
switch (MI->getOpcode()) {
|
||||
case X86::CMPPDrmi: case X86::CMPPDrri:
|
||||
case X86::CMPPSrmi: case X86::CMPPSrri:
|
||||
case X86::CMPSDrm: case X86::CMPSDrr:
|
||||
case X86::CMPSDrm_Int: case X86::CMPSDrr_Int:
|
||||
case X86::CMPSSrm: case X86::CMPSSrr:
|
||||
case X86::CMPSSrm_Int: case X86::CMPSSrr_Int:
|
||||
if (Imm >= 0 && Imm <= 7) {
|
||||
OS << '\t';
|
||||
printCMPMnemonic(MI, /*IsVCMP*/false, OS);
|
||||
printOperand(MI, 0, OS);
|
||||
OS << ", ";
|
||||
// Skip operand 1 as its tied to the dest.
|
||||
|
||||
if ((Desc.TSFlags & X86II::FormMask) == X86II::MRMSrcMem) {
|
||||
if ((Desc.TSFlags & X86II::OpPrefixMask) == X86II::XS)
|
||||
printdwordmem(MI, 2, OS);
|
||||
else if ((Desc.TSFlags & X86II::OpPrefixMask) == X86II::XD)
|
||||
printqwordmem(MI, 2, OS);
|
||||
else
|
||||
printxmmwordmem(MI, 2, OS);
|
||||
} else
|
||||
printOperand(MI, 2, OS);
|
||||
|
||||
return true;
|
||||
}
|
||||
break;
|
||||
|
||||
case X86::VCMPPDrmi: case X86::VCMPPDrri:
|
||||
case X86::VCMPPDYrmi: case X86::VCMPPDYrri:
|
||||
case X86::VCMPPDZ128rmi: case X86::VCMPPDZ128rri:
|
||||
case X86::VCMPPDZ256rmi: case X86::VCMPPDZ256rri:
|
||||
case X86::VCMPPDZrmi: case X86::VCMPPDZrri:
|
||||
case X86::VCMPPSrmi: case X86::VCMPPSrri:
|
||||
case X86::VCMPPSYrmi: case X86::VCMPPSYrri:
|
||||
case X86::VCMPPSZ128rmi: case X86::VCMPPSZ128rri:
|
||||
case X86::VCMPPSZ256rmi: case X86::VCMPPSZ256rri:
|
||||
case X86::VCMPPSZrmi: case X86::VCMPPSZrri:
|
||||
case X86::VCMPSDrm: case X86::VCMPSDrr:
|
||||
case X86::VCMPSDZrm: case X86::VCMPSDZrr:
|
||||
case X86::VCMPSDrm_Int: case X86::VCMPSDrr_Int:
|
||||
case X86::VCMPSDZrm_Int: case X86::VCMPSDZrr_Int:
|
||||
case X86::VCMPSSrm: case X86::VCMPSSrr:
|
||||
case X86::VCMPSSZrm: case X86::VCMPSSZrr:
|
||||
case X86::VCMPSSrm_Int: case X86::VCMPSSrr_Int:
|
||||
case X86::VCMPSSZrm_Int: case X86::VCMPSSZrr_Int:
|
||||
case X86::VCMPPDZ128rmik: case X86::VCMPPDZ128rrik:
|
||||
case X86::VCMPPDZ256rmik: case X86::VCMPPDZ256rrik:
|
||||
case X86::VCMPPDZrmik: case X86::VCMPPDZrrik:
|
||||
case X86::VCMPPSZ128rmik: case X86::VCMPPSZ128rrik:
|
||||
case X86::VCMPPSZ256rmik: case X86::VCMPPSZ256rrik:
|
||||
case X86::VCMPPSZrmik: case X86::VCMPPSZrrik:
|
||||
case X86::VCMPSDZrm_Intk: case X86::VCMPSDZrr_Intk:
|
||||
case X86::VCMPSSZrm_Intk: case X86::VCMPSSZrr_Intk:
|
||||
case X86::VCMPPDZ128rmbi: case X86::VCMPPDZ128rmbik:
|
||||
case X86::VCMPPDZ256rmbi: case X86::VCMPPDZ256rmbik:
|
||||
case X86::VCMPPDZrmbi: case X86::VCMPPDZrmbik:
|
||||
case X86::VCMPPSZ128rmbi: case X86::VCMPPSZ128rmbik:
|
||||
case X86::VCMPPSZ256rmbi: case X86::VCMPPSZ256rmbik:
|
||||
case X86::VCMPPSZrmbi: case X86::VCMPPSZrmbik:
|
||||
case X86::VCMPPDZrrib: case X86::VCMPPDZrribk:
|
||||
case X86::VCMPPSZrrib: case X86::VCMPPSZrribk:
|
||||
case X86::VCMPSDZrrb_Int: case X86::VCMPSDZrrb_Intk:
|
||||
case X86::VCMPSSZrrb_Int: case X86::VCMPSSZrrb_Intk:
|
||||
if (Imm >= 0 && Imm <= 31) {
|
||||
OS << '\t';
|
||||
printCMPMnemonic(MI, /*IsVCMP*/true, OS);
|
||||
|
||||
unsigned CurOp = 0;
|
||||
printOperand(MI, CurOp++, OS);
|
||||
|
||||
if (Desc.TSFlags & X86II::EVEX_K) {
|
||||
// Print mask operand.
|
||||
OS << " {";
|
||||
printOperand(MI, CurOp++, OS);
|
||||
OS << "}";
|
||||
}
|
||||
OS << ", ";
|
||||
printOperand(MI, CurOp++, OS);
|
||||
OS << ", ";
|
||||
|
||||
if ((Desc.TSFlags & X86II::FormMask) == X86II::MRMSrcMem) {
|
||||
if (Desc.TSFlags & X86II::EVEX_B) {
|
||||
// Broadcast form.
|
||||
// Load size is based on W-bit.
|
||||
if (Desc.TSFlags & X86II::VEX_W)
|
||||
printqwordmem(MI, CurOp++, OS);
|
||||
else
|
||||
printdwordmem(MI, CurOp++, OS);
|
||||
|
||||
// Print the number of elements broadcasted.
|
||||
unsigned NumElts;
|
||||
if (Desc.TSFlags & X86II::EVEX_L2)
|
||||
NumElts = (Desc.TSFlags & X86II::VEX_W) ? 8 : 16;
|
||||
else if (Desc.TSFlags & X86II::VEX_L)
|
||||
NumElts = (Desc.TSFlags & X86II::VEX_W) ? 4 : 8;
|
||||
else
|
||||
NumElts = (Desc.TSFlags & X86II::VEX_W) ? 2 : 4;
|
||||
OS << "{1to" << NumElts << "}";
|
||||
} else {
|
||||
if ((Desc.TSFlags & X86II::OpPrefixMask) == X86II::XS)
|
||||
printdwordmem(MI, CurOp++, OS);
|
||||
else if ((Desc.TSFlags & X86II::OpPrefixMask) == X86II::XD)
|
||||
printqwordmem(MI, CurOp++, OS);
|
||||
else if (Desc.TSFlags & X86II::EVEX_L2)
|
||||
printzmmwordmem(MI, CurOp++, OS);
|
||||
else if (Desc.TSFlags & X86II::VEX_L)
|
||||
printymmwordmem(MI, CurOp++, OS);
|
||||
else
|
||||
printxmmwordmem(MI, CurOp++, OS);
|
||||
}
|
||||
} else {
|
||||
printOperand(MI, CurOp++, OS);
|
||||
if (Desc.TSFlags & X86II::EVEX_B)
|
||||
OS << ", {sae}";
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
break;
|
||||
|
||||
case X86::VPCOMBmi: case X86::VPCOMBri:
|
||||
case X86::VPCOMDmi: case X86::VPCOMDri:
|
||||
case X86::VPCOMQmi: case X86::VPCOMQri:
|
||||
|
@ -2032,71 +2032,47 @@ multiclass avx512_cmp_scalar<X86VectorVTInfo _, SDNode OpNode, SDNode OpNodeSAE,
|
||||
X86FoldableSchedWrite sched> {
|
||||
defm rr_Int : AVX512_maskable_cmp<0xC2, MRMSrcReg, _,
|
||||
(outs _.KRC:$dst),
|
||||
(ins _.RC:$src1, _.RC:$src2, AVXCC:$cc),
|
||||
"vcmp${cc}"#_.Suffix,
|
||||
"$src2, $src1", "$src1, $src2",
|
||||
(ins _.RC:$src1, _.RC:$src2, u8imm:$cc),
|
||||
"vcmp"#_.Suffix,
|
||||
"$cc, $src2, $src1", "$src1, $src2, $cc",
|
||||
(OpNode (_.VT _.RC:$src1),
|
||||
(_.VT _.RC:$src2),
|
||||
imm:$cc)>, EVEX_4V, Sched<[sched]>;
|
||||
let mayLoad = 1 in
|
||||
defm rm_Int : AVX512_maskable_cmp<0xC2, MRMSrcMem, _,
|
||||
(outs _.KRC:$dst),
|
||||
(ins _.RC:$src1, _.IntScalarMemOp:$src2, AVXCC:$cc),
|
||||
"vcmp${cc}"#_.Suffix,
|
||||
"$src2, $src1", "$src1, $src2",
|
||||
(ins _.RC:$src1, _.IntScalarMemOp:$src2, u8imm:$cc),
|
||||
"vcmp"#_.Suffix,
|
||||
"$cc, $src2, $src1", "$src1, $src2, $cc",
|
||||
(OpNode (_.VT _.RC:$src1), _.ScalarIntMemCPat:$src2,
|
||||
imm:$cc)>, EVEX_4V, EVEX_CD8<_.EltSize, CD8VT1>,
|
||||
Sched<[sched.Folded, sched.ReadAfterFold]>;
|
||||
|
||||
defm rrb_Int : AVX512_maskable_cmp<0xC2, MRMSrcReg, _,
|
||||
(outs _.KRC:$dst),
|
||||
(ins _.RC:$src1, _.RC:$src2, AVXCC:$cc),
|
||||
"vcmp${cc}"#_.Suffix,
|
||||
"{sae}, $src2, $src1", "$src1, $src2, {sae}",
|
||||
(ins _.RC:$src1, _.RC:$src2, u8imm:$cc),
|
||||
"vcmp"#_.Suffix,
|
||||
"$cc, {sae}, $src2, $src1","$src1, $src2, {sae}, $cc",
|
||||
(OpNodeSAE (_.VT _.RC:$src1),
|
||||
(_.VT _.RC:$src2),
|
||||
imm:$cc)>,
|
||||
EVEX_4V, EVEX_B, Sched<[sched]>;
|
||||
// Accept explicit immediate argument form instead of comparison code.
|
||||
let isAsmParserOnly = 1, hasSideEffects = 0 in {
|
||||
defm rri_alt : AVX512_maskable_cmp_alt<0xC2, MRMSrcReg, _,
|
||||
(outs VK1:$dst),
|
||||
(ins _.RC:$src1, _.RC:$src2, u8imm:$cc),
|
||||
"vcmp"#_.Suffix,
|
||||
"$cc, $src2, $src1", "$src1, $src2, $cc">, EVEX_4V,
|
||||
Sched<[sched]>, NotMemoryFoldable;
|
||||
let mayLoad = 1 in
|
||||
defm rmi_alt : AVX512_maskable_cmp_alt<0xC2, MRMSrcMem, _,
|
||||
(outs _.KRC:$dst),
|
||||
(ins _.RC:$src1, _.ScalarMemOp:$src2, u8imm:$cc),
|
||||
"vcmp"#_.Suffix,
|
||||
"$cc, $src2, $src1", "$src1, $src2, $cc">,
|
||||
EVEX_4V, EVEX_CD8<_.EltSize, CD8VT1>,
|
||||
Sched<[sched.Folded, sched.ReadAfterFold]>, NotMemoryFoldable;
|
||||
|
||||
defm rrb_alt : AVX512_maskable_cmp_alt<0xC2, MRMSrcReg, _,
|
||||
(outs _.KRC:$dst),
|
||||
(ins _.RC:$src1, _.RC:$src2, u8imm:$cc),
|
||||
"vcmp"#_.Suffix,
|
||||
"$cc, {sae}, $src2, $src1","$src1, $src2, {sae}, $cc">,
|
||||
EVEX_4V, EVEX_B, Sched<[sched]>, NotMemoryFoldable;
|
||||
}// let isAsmParserOnly = 1, hasSideEffects = 0
|
||||
|
||||
let isCodeGenOnly = 1 in {
|
||||
let isCommutable = 1 in
|
||||
def rr : AVX512Ii8<0xC2, MRMSrcReg,
|
||||
(outs _.KRC:$dst), (ins _.FRC:$src1, _.FRC:$src2, AVXCC:$cc),
|
||||
!strconcat("vcmp${cc}", _.Suffix,
|
||||
"\t{$src2, $src1, $dst|$dst, $src1, $src2}"),
|
||||
(outs _.KRC:$dst), (ins _.FRC:$src1, _.FRC:$src2, u8imm:$cc),
|
||||
!strconcat("vcmp", _.Suffix,
|
||||
"\t{$cc, $src2, $src1, $dst|$dst, $src1, $src2, $cc}"),
|
||||
[(set _.KRC:$dst, (OpNode _.FRC:$src1,
|
||||
_.FRC:$src2,
|
||||
imm:$cc))]>,
|
||||
EVEX_4V, Sched<[sched]>;
|
||||
def rm : AVX512Ii8<0xC2, MRMSrcMem,
|
||||
(outs _.KRC:$dst),
|
||||
(ins _.FRC:$src1, _.ScalarMemOp:$src2, AVXCC:$cc),
|
||||
!strconcat("vcmp${cc}", _.Suffix,
|
||||
"\t{$src2, $src1, $dst|$dst, $src1, $src2}"),
|
||||
(ins _.FRC:$src1, _.ScalarMemOp:$src2, u8imm:$cc),
|
||||
!strconcat("vcmp", _.Suffix,
|
||||
"\t{$cc, $src2, $src1, $dst|$dst, $src1, $src2, $cc}"),
|
||||
[(set _.KRC:$dst, (OpNode _.FRC:$src1,
|
||||
(_.ScalarLdFrag addr:$src2),
|
||||
imm:$cc))]>,
|
||||
@ -2456,18 +2432,18 @@ defm VPCMPUQ : avx512_icmp_cc_rmb_vl<0x1E, "uq", X86pcmpum, X86pcmpum_commute,
|
||||
multiclass avx512_vcmp_common<X86FoldableSchedWrite sched, X86VectorVTInfo _,
|
||||
string Name> {
|
||||
defm rri : AVX512_maskable_cmp<0xC2, MRMSrcReg, _,
|
||||
(outs _.KRC:$dst), (ins _.RC:$src1, _.RC:$src2,AVXCC:$cc),
|
||||
"vcmp${cc}"#_.Suffix,
|
||||
"$src2, $src1", "$src1, $src2",
|
||||
(outs _.KRC:$dst), (ins _.RC:$src1, _.RC:$src2,u8imm:$cc),
|
||||
"vcmp"#_.Suffix,
|
||||
"$cc, $src2, $src1", "$src1, $src2, $cc",
|
||||
(X86cmpm (_.VT _.RC:$src1),
|
||||
(_.VT _.RC:$src2),
|
||||
imm:$cc), 1>,
|
||||
Sched<[sched]>;
|
||||
|
||||
defm rmi : AVX512_maskable_cmp<0xC2, MRMSrcMem, _,
|
||||
(outs _.KRC:$dst),(ins _.RC:$src1, _.MemOp:$src2, AVXCC:$cc),
|
||||
"vcmp${cc}"#_.Suffix,
|
||||
"$src2, $src1", "$src1, $src2",
|
||||
(outs _.KRC:$dst),(ins _.RC:$src1, _.MemOp:$src2, u8imm:$cc),
|
||||
"vcmp"#_.Suffix,
|
||||
"$cc, $src2, $src1", "$src1, $src2, $cc",
|
||||
(X86cmpm (_.VT _.RC:$src1),
|
||||
(_.VT (_.LdFrag addr:$src2)),
|
||||
imm:$cc)>,
|
||||
@ -2475,42 +2451,14 @@ multiclass avx512_vcmp_common<X86FoldableSchedWrite sched, X86VectorVTInfo _,
|
||||
|
||||
defm rmbi : AVX512_maskable_cmp<0xC2, MRMSrcMem, _,
|
||||
(outs _.KRC:$dst),
|
||||
(ins _.RC:$src1, _.ScalarMemOp:$src2, AVXCC:$cc),
|
||||
"vcmp${cc}"#_.Suffix,
|
||||
"${src2}"##_.BroadcastStr##", $src1",
|
||||
"$src1, ${src2}"##_.BroadcastStr,
|
||||
(ins _.RC:$src1, _.ScalarMemOp:$src2, u8imm:$cc),
|
||||
"vcmp"#_.Suffix,
|
||||
"$cc, ${src2}"#_.BroadcastStr#", $src1",
|
||||
"$src1, ${src2}"#_.BroadcastStr#", $cc",
|
||||
(X86cmpm (_.VT _.RC:$src1),
|
||||
(_.VT (X86VBroadcast(_.ScalarLdFrag addr:$src2))),
|
||||
imm:$cc)>,
|
||||
EVEX_B, Sched<[sched.Folded, sched.ReadAfterFold]>;
|
||||
// Accept explicit immediate argument form instead of comparison code.
|
||||
let isAsmParserOnly = 1, hasSideEffects = 0 in {
|
||||
defm rri_alt : AVX512_maskable_cmp_alt<0xC2, MRMSrcReg, _,
|
||||
(outs _.KRC:$dst),
|
||||
(ins _.RC:$src1, _.RC:$src2, u8imm:$cc),
|
||||
"vcmp"#_.Suffix,
|
||||
"$cc, $src2, $src1", "$src1, $src2, $cc">,
|
||||
Sched<[sched]>, NotMemoryFoldable;
|
||||
|
||||
let mayLoad = 1 in {
|
||||
defm rmi_alt : AVX512_maskable_cmp_alt<0xC2, MRMSrcMem, _,
|
||||
(outs _.KRC:$dst),
|
||||
(ins _.RC:$src1, _.MemOp:$src2, u8imm:$cc),
|
||||
"vcmp"#_.Suffix,
|
||||
"$cc, $src2, $src1", "$src1, $src2, $cc">,
|
||||
Sched<[sched.Folded, sched.ReadAfterFold]>,
|
||||
NotMemoryFoldable;
|
||||
|
||||
defm rmbi_alt : AVX512_maskable_cmp_alt<0xC2, MRMSrcMem, _,
|
||||
(outs _.KRC:$dst),
|
||||
(ins _.RC:$src1, _.ScalarMemOp:$src2, u8imm:$cc),
|
||||
"vcmp"#_.Suffix,
|
||||
"$cc, ${src2}"##_.BroadcastStr##", $src1",
|
||||
"$src1, ${src2}"##_.BroadcastStr##", $cc">,
|
||||
EVEX_B, Sched<[sched.Folded, sched.ReadAfterFold]>,
|
||||
NotMemoryFoldable;
|
||||
}
|
||||
}
|
||||
|
||||
// Patterns for selecting with loads in other operand.
|
||||
def : Pat<(X86cmpm (_.LdFrag addr:$src2), (_.VT _.RC:$src1),
|
||||
@ -2542,23 +2490,14 @@ multiclass avx512_vcmp_common<X86FoldableSchedWrite sched, X86VectorVTInfo _,
|
||||
multiclass avx512_vcmp_sae<X86FoldableSchedWrite sched, X86VectorVTInfo _> {
|
||||
// comparison code form (VCMP[EQ/LT/LE/...]
|
||||
defm rrib : AVX512_maskable_cmp<0xC2, MRMSrcReg, _,
|
||||
(outs _.KRC:$dst),(ins _.RC:$src1, _.RC:$src2, AVXCC:$cc),
|
||||
"vcmp${cc}"#_.Suffix,
|
||||
"{sae}, $src2, $src1", "$src1, $src2, {sae}",
|
||||
(outs _.KRC:$dst),(ins _.RC:$src1, _.RC:$src2, u8imm:$cc),
|
||||
"vcmp"#_.Suffix,
|
||||
"$cc, {sae}, $src2, $src1",
|
||||
"$src1, $src2, {sae}, $cc",
|
||||
(X86cmpmSAE (_.VT _.RC:$src1),
|
||||
(_.VT _.RC:$src2),
|
||||
imm:$cc)>,
|
||||
EVEX_B, Sched<[sched]>;
|
||||
|
||||
let isAsmParserOnly = 1, hasSideEffects = 0 in {
|
||||
defm rrib_alt : AVX512_maskable_cmp_alt<0xC2, MRMSrcReg, _,
|
||||
(outs _.KRC:$dst),
|
||||
(ins _.RC:$src1, _.RC:$src2, u8imm:$cc),
|
||||
"vcmp"#_.Suffix,
|
||||
"$cc, {sae}, $src2, $src1",
|
||||
"$src1, $src2, {sae}, $cc">,
|
||||
EVEX_B, Sched<[sched]>, NotMemoryFoldable;
|
||||
}
|
||||
}
|
||||
|
||||
multiclass avx512_vcmp<X86SchedWriteWidths sched, AVX512VLVectorVTInfo _> {
|
||||
|
@ -600,16 +600,6 @@ def offset64_32 : X86MemOffsOperand<i64imm, "printMemOffs32",
|
||||
def offset64_64 : X86MemOffsOperand<i64imm, "printMemOffs64",
|
||||
X86MemOffs64_64AsmOperand>;
|
||||
|
||||
def SSECC : Operand<i8> {
|
||||
let PrintMethod = "printSSEAVXCC";
|
||||
let OperandType = "OPERAND_IMMEDIATE";
|
||||
}
|
||||
|
||||
def AVXCC : Operand<i8> {
|
||||
let PrintMethod = "printSSEAVXCC";
|
||||
let OperandType = "OPERAND_IMMEDIATE";
|
||||
}
|
||||
|
||||
class ImmSExtAsmOperandClass : AsmOperandClass {
|
||||
let SuperClasses = [ImmAsmOperand];
|
||||
let RenderMethod = "addImmOperands";
|
||||
|
@ -1768,68 +1768,53 @@ let Predicates = [HasAVX, NoVLX] in {
|
||||
|
||||
// sse12_cmp_scalar - sse 1 & 2 compare scalar instructions
|
||||
multiclass sse12_cmp_scalar<RegisterClass RC, X86MemOperand x86memop,
|
||||
Operand CC, SDNode OpNode, ValueType VT,
|
||||
PatFrag ld_frag, string asm, string asm_alt,
|
||||
SDNode OpNode, ValueType VT,
|
||||
PatFrag ld_frag, string asm,
|
||||
X86FoldableSchedWrite sched> {
|
||||
let isCommutable = 1 in
|
||||
def rr : SIi8<0xC2, MRMSrcReg,
|
||||
(outs RC:$dst), (ins RC:$src1, RC:$src2, CC:$cc), asm,
|
||||
(outs RC:$dst), (ins RC:$src1, RC:$src2, u8imm:$cc), asm,
|
||||
[(set RC:$dst, (OpNode (VT RC:$src1), RC:$src2, imm:$cc))]>,
|
||||
Sched<[sched]>;
|
||||
def rm : SIi8<0xC2, MRMSrcMem,
|
||||
(outs RC:$dst), (ins RC:$src1, x86memop:$src2, CC:$cc), asm,
|
||||
(outs RC:$dst), (ins RC:$src1, x86memop:$src2, u8imm:$cc), asm,
|
||||
[(set RC:$dst, (OpNode (VT RC:$src1),
|
||||
(ld_frag addr:$src2), imm:$cc))]>,
|
||||
Sched<[sched.Folded, sched.ReadAfterFold]>;
|
||||
|
||||
// Accept explicit immediate argument form instead of comparison code.
|
||||
let isAsmParserOnly = 1, hasSideEffects = 0 in {
|
||||
def rr_alt : SIi8<0xC2, MRMSrcReg, (outs RC:$dst),
|
||||
(ins RC:$src1, RC:$src2, u8imm:$cc), asm_alt, []>,
|
||||
Sched<[sched]>, NotMemoryFoldable;
|
||||
let mayLoad = 1 in
|
||||
def rm_alt : SIi8<0xC2, MRMSrcMem, (outs RC:$dst),
|
||||
(ins RC:$src1, x86memop:$src2, u8imm:$cc), asm_alt, []>,
|
||||
Sched<[sched.Folded, sched.ReadAfterFold]>, NotMemoryFoldable;
|
||||
}
|
||||
}
|
||||
|
||||
let ExeDomain = SSEPackedSingle in
|
||||
defm VCMPSS : sse12_cmp_scalar<FR32, f32mem, AVXCC, X86cmps, f32, loadf32,
|
||||
"cmp${cc}ss\t{$src2, $src1, $dst|$dst, $src1, $src2}",
|
||||
defm VCMPSS : sse12_cmp_scalar<FR32, f32mem, X86cmps, f32, loadf32,
|
||||
"cmpss\t{$cc, $src2, $src1, $dst|$dst, $src1, $src2, $cc}",
|
||||
SchedWriteFCmpSizes.PS.Scl>, XS, VEX_4V, VEX_LIG, VEX_WIG;
|
||||
let ExeDomain = SSEPackedDouble in
|
||||
defm VCMPSD : sse12_cmp_scalar<FR64, f64mem, AVXCC, X86cmps, f64, loadf64,
|
||||
"cmp${cc}sd\t{$src2, $src1, $dst|$dst, $src1, $src2}",
|
||||
defm VCMPSD : sse12_cmp_scalar<FR64, f64mem, X86cmps, f64, loadf64,
|
||||
"cmpsd\t{$cc, $src2, $src1, $dst|$dst, $src1, $src2, $cc}",
|
||||
SchedWriteFCmpSizes.PD.Scl>,
|
||||
XD, VEX_4V, VEX_LIG, VEX_WIG;
|
||||
|
||||
let Constraints = "$src1 = $dst" in {
|
||||
let ExeDomain = SSEPackedSingle in
|
||||
defm CMPSS : sse12_cmp_scalar<FR32, f32mem, SSECC, X86cmps, f32, loadf32,
|
||||
"cmp${cc}ss\t{$src2, $dst|$dst, $src2}",
|
||||
defm CMPSS : sse12_cmp_scalar<FR32, f32mem, X86cmps, f32, loadf32,
|
||||
"cmpss\t{$cc, $src2, $dst|$dst, $src2, $cc}",
|
||||
SchedWriteFCmpSizes.PS.Scl>, XS;
|
||||
let ExeDomain = SSEPackedDouble in
|
||||
defm CMPSD : sse12_cmp_scalar<FR64, f64mem, SSECC, X86cmps, f64, loadf64,
|
||||
"cmp${cc}sd\t{$src2, $dst|$dst, $src2}",
|
||||
defm CMPSD : sse12_cmp_scalar<FR64, f64mem, X86cmps, f64, loadf64,
|
||||
"cmpsd\t{$cc, $src2, $dst|$dst, $src2, $cc}",
|
||||
SchedWriteFCmpSizes.PD.Scl>, XD;
|
||||
}
|
||||
|
||||
multiclass sse12_cmp_scalar_int<Operand memop, Operand CC,
|
||||
multiclass sse12_cmp_scalar_int<Operand memop,
|
||||
Intrinsic Int, string asm, X86FoldableSchedWrite sched,
|
||||
ComplexPattern mem_cpat> {
|
||||
def rr_Int : SIi8<0xC2, MRMSrcReg, (outs VR128:$dst),
|
||||
(ins VR128:$src1, VR128:$src, CC:$cc), asm,
|
||||
(ins VR128:$src1, VR128:$src, u8imm:$cc), asm,
|
||||
[(set VR128:$dst, (Int VR128:$src1,
|
||||
VR128:$src, imm:$cc))]>,
|
||||
Sched<[sched]>;
|
||||
let mayLoad = 1 in
|
||||
def rm_Int : SIi8<0xC2, MRMSrcMem, (outs VR128:$dst),
|
||||
(ins VR128:$src1, memop:$src, CC:$cc), asm,
|
||||
(ins VR128:$src1, memop:$src, u8imm:$cc), asm,
|
||||
[(set VR128:$dst, (Int VR128:$src1,
|
||||
mem_cpat:$src, imm:$cc))]>,
|
||||
Sched<[sched.Folded, sched.ReadAfterFold]>;
|
||||
@ -1838,22 +1823,22 @@ let mayLoad = 1 in
|
||||
let isCodeGenOnly = 1 in {
|
||||
// Aliases to match intrinsics which expect XMM operand(s).
|
||||
let ExeDomain = SSEPackedSingle in
|
||||
defm VCMPSS : sse12_cmp_scalar_int<ssmem, AVXCC, int_x86_sse_cmp_ss,
|
||||
"cmp${cc}ss\t{$src, $src1, $dst|$dst, $src1, $src}",
|
||||
defm VCMPSS : sse12_cmp_scalar_int<ssmem, int_x86_sse_cmp_ss,
|
||||
"cmpss\t{$cc, $src, $src1, $dst|$dst, $src1, $src, $cc}",
|
||||
SchedWriteFCmpSizes.PS.Scl, sse_load_f32>, XS, VEX_4V;
|
||||
let ExeDomain = SSEPackedDouble in
|
||||
defm VCMPSD : sse12_cmp_scalar_int<sdmem, AVXCC, int_x86_sse2_cmp_sd,
|
||||
"cmp${cc}sd\t{$src, $src1, $dst|$dst, $src1, $src}",
|
||||
defm VCMPSD : sse12_cmp_scalar_int<sdmem, int_x86_sse2_cmp_sd,
|
||||
"cmpsd\t{$cc, $src, $src1, $dst|$dst, $src1, $src, $cc}",
|
||||
SchedWriteFCmpSizes.PD.Scl, sse_load_f64>,
|
||||
XD, VEX_4V;
|
||||
let Constraints = "$src1 = $dst" in {
|
||||
let ExeDomain = SSEPackedSingle in
|
||||
defm CMPSS : sse12_cmp_scalar_int<ssmem, SSECC, int_x86_sse_cmp_ss,
|
||||
"cmp${cc}ss\t{$src, $dst|$dst, $src}",
|
||||
defm CMPSS : sse12_cmp_scalar_int<ssmem, int_x86_sse_cmp_ss,
|
||||
"cmpss\t{$cc, $src, $dst|$dst, $src, $cc}",
|
||||
SchedWriteFCmpSizes.PS.Scl, sse_load_f32>, XS;
|
||||
let ExeDomain = SSEPackedDouble in
|
||||
defm CMPSD : sse12_cmp_scalar_int<sdmem, SSECC, int_x86_sse2_cmp_sd,
|
||||
"cmp${cc}sd\t{$src, $dst|$dst, $src}",
|
||||
defm CMPSD : sse12_cmp_scalar_int<sdmem, int_x86_sse2_cmp_sd,
|
||||
"cmpsd\t{$cc, $src, $dst|$dst, $src, $cc}",
|
||||
SchedWriteFCmpSizes.PD.Scl, sse_load_f64>, XD;
|
||||
}
|
||||
}
|
||||
@ -1945,56 +1930,38 @@ let Defs = [EFLAGS] in {
|
||||
|
||||
// sse12_cmp_packed - sse 1 & 2 compare packed instructions
|
||||
multiclass sse12_cmp_packed<RegisterClass RC, X86MemOperand x86memop,
|
||||
Operand CC, ValueType VT, string asm,
|
||||
string asm_alt, X86FoldableSchedWrite sched,
|
||||
ValueType VT, string asm,
|
||||
X86FoldableSchedWrite sched,
|
||||
Domain d, PatFrag ld_frag> {
|
||||
let isCommutable = 1 in
|
||||
def rri : PIi8<0xC2, MRMSrcReg,
|
||||
(outs RC:$dst), (ins RC:$src1, RC:$src2, CC:$cc), asm,
|
||||
(outs RC:$dst), (ins RC:$src1, RC:$src2, u8imm:$cc), asm,
|
||||
[(set RC:$dst, (VT (X86cmpp RC:$src1, RC:$src2, imm:$cc)))], d>,
|
||||
Sched<[sched]>;
|
||||
def rmi : PIi8<0xC2, MRMSrcMem,
|
||||
(outs RC:$dst), (ins RC:$src1, x86memop:$src2, CC:$cc), asm,
|
||||
(outs RC:$dst), (ins RC:$src1, x86memop:$src2, u8imm:$cc), asm,
|
||||
[(set RC:$dst,
|
||||
(VT (X86cmpp RC:$src1, (ld_frag addr:$src2), imm:$cc)))], d>,
|
||||
Sched<[sched.Folded, sched.ReadAfterFold]>;
|
||||
|
||||
// Accept explicit immediate argument form instead of comparison code.
|
||||
let isAsmParserOnly = 1, hasSideEffects = 0 in {
|
||||
def rri_alt : PIi8<0xC2, MRMSrcReg,
|
||||
(outs RC:$dst), (ins RC:$src1, RC:$src2, u8imm:$cc),
|
||||
asm_alt, [], d>, Sched<[sched]>, NotMemoryFoldable;
|
||||
let mayLoad = 1 in
|
||||
def rmi_alt : PIi8<0xC2, MRMSrcMem,
|
||||
(outs RC:$dst), (ins RC:$src1, x86memop:$src2, u8imm:$cc),
|
||||
asm_alt, [], d>, Sched<[sched.Folded, sched.ReadAfterFold]>,
|
||||
NotMemoryFoldable;
|
||||
}
|
||||
}
|
||||
|
||||
defm VCMPPS : sse12_cmp_packed<VR128, f128mem, AVXCC, v4f32,
|
||||
"cmp${cc}ps\t{$src2, $src1, $dst|$dst, $src1, $src2}",
|
||||
defm VCMPPS : sse12_cmp_packed<VR128, f128mem, v4f32,
|
||||
"cmpps\t{$cc, $src2, $src1, $dst|$dst, $src1, $src2, $cc}",
|
||||
SchedWriteFCmpSizes.PS.XMM, SSEPackedSingle, loadv4f32>, PS, VEX_4V, VEX_WIG;
|
||||
defm VCMPPD : sse12_cmp_packed<VR128, f128mem, AVXCC, v2f64,
|
||||
"cmp${cc}pd\t{$src2, $src1, $dst|$dst, $src1, $src2}",
|
||||
defm VCMPPD : sse12_cmp_packed<VR128, f128mem, v2f64,
|
||||
"cmppd\t{$cc, $src2, $src1, $dst|$dst, $src1, $src2, $cc}",
|
||||
SchedWriteFCmpSizes.PD.XMM, SSEPackedDouble, loadv2f64>, PD, VEX_4V, VEX_WIG;
|
||||
defm VCMPPSY : sse12_cmp_packed<VR256, f256mem, AVXCC, v8f32,
|
||||
"cmp${cc}ps\t{$src2, $src1, $dst|$dst, $src1, $src2}",
|
||||
defm VCMPPSY : sse12_cmp_packed<VR256, f256mem, v8f32,
|
||||
"cmpps\t{$cc, $src2, $src1, $dst|$dst, $src1, $src2, $cc}",
|
||||
SchedWriteFCmpSizes.PS.YMM, SSEPackedSingle, loadv8f32>, PS, VEX_4V, VEX_L, VEX_WIG;
|
||||
defm VCMPPDY : sse12_cmp_packed<VR256, f256mem, AVXCC, v4f64,
|
||||
"cmp${cc}pd\t{$src2, $src1, $dst|$dst, $src1, $src2}",
|
||||
defm VCMPPDY : sse12_cmp_packed<VR256, f256mem, v4f64,
|
||||
"cmppd\t{$cc, $src2, $src1, $dst|$dst, $src1, $src2, $cc}",
|
||||
SchedWriteFCmpSizes.PD.YMM, SSEPackedDouble, loadv4f64>, PD, VEX_4V, VEX_L, VEX_WIG;
|
||||
let Constraints = "$src1 = $dst" in {
|
||||
defm CMPPS : sse12_cmp_packed<VR128, f128mem, SSECC, v4f32,
|
||||
"cmp${cc}ps\t{$src2, $dst|$dst, $src2}",
|
||||
defm CMPPS : sse12_cmp_packed<VR128, f128mem, v4f32,
|
||||
"cmpps\t{$cc, $src2, $dst|$dst, $src2, $cc}",
|
||||
SchedWriteFCmpSizes.PS.XMM, SSEPackedSingle, memopv4f32>, PS;
|
||||
defm CMPPD : sse12_cmp_packed<VR128, f128mem, SSECC, v2f64,
|
||||
"cmp${cc}pd\t{$src2, $dst|$dst, $src2}",
|
||||
defm CMPPD : sse12_cmp_packed<VR128, f128mem, v2f64,
|
||||
"cmppd\t{$cc, $src2, $dst|$dst, $src2, $cc}",
|
||||
SchedWriteFCmpSizes.PD.XMM, SSEPackedDouble, memopv2f64>, PD;
|
||||
}
|
||||
|
@ -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
|
||||
|
||||
|
@ -262,28 +262,28 @@ cmovnae %bx,%bx
|
||||
// CHECK: encoding: [0x0f,0x44,0xd0]
|
||||
cmovzl %eax,%edx
|
||||
|
||||
// CHECK: cmpps $0, %xmm0, %xmm1
|
||||
// CHECK: cmpeqps %xmm0, %xmm1
|
||||
// CHECK: encoding: [0x0f,0xc2,0xc8,0x00]
|
||||
cmpps $0, %xmm0, %xmm1
|
||||
// CHECK: cmpps $0, (%eax), %xmm1
|
||||
// CHECK: cmpeqps (%eax), %xmm1
|
||||
// CHECK: encoding: [0x0f,0xc2,0x08,0x00]
|
||||
cmpps $0, 0(%eax), %xmm1
|
||||
// CHECK: cmppd $0, %xmm0, %xmm1
|
||||
// CHECK: cmpeqpd %xmm0, %xmm1
|
||||
// CHECK: encoding: [0x66,0x0f,0xc2,0xc8,0x00]
|
||||
cmppd $0, %xmm0, %xmm1
|
||||
// CHECK: cmppd $0, (%eax), %xmm1
|
||||
// CHECK: cmpeqpd (%eax), %xmm1
|
||||
// CHECK: encoding: [0x66,0x0f,0xc2,0x08,0x00]
|
||||
cmppd $0, 0(%eax), %xmm1
|
||||
// CHECK: cmpss $0, %xmm0, %xmm1
|
||||
// CHECK: cmpeqss %xmm0, %xmm1
|
||||
// CHECK: encoding: [0xf3,0x0f,0xc2,0xc8,0x00]
|
||||
cmpss $0, %xmm0, %xmm1
|
||||
// CHECK: cmpss $0, (%eax), %xmm1
|
||||
// CHECK: cmpeqss (%eax), %xmm1
|
||||
// CHECK: encoding: [0xf3,0x0f,0xc2,0x08,0x00]
|
||||
cmpss $0, 0(%eax), %xmm1
|
||||
// CHECK: cmpsd $0, %xmm0, %xmm1
|
||||
// CHECK: cmpeqsd %xmm0, %xmm1
|
||||
// CHECK: encoding: [0xf2,0x0f,0xc2,0xc8,0x00]
|
||||
cmpsd $0, %xmm0, %xmm1
|
||||
// CHECK: cmpsd $0, (%eax), %xmm1
|
||||
// CHECK: cmpeqsd (%eax), %xmm1
|
||||
// CHECK: encoding: [0xf2,0x0f,0xc2,0x08,0x00]
|
||||
cmpsd $0, 0(%eax), %xmm1
|
||||
|
||||
|
@ -304,27 +304,27 @@ vdivpd -4(%rcx,%rbx,8), %xmm10, %xmm11
|
||||
// CHECK: encoding: [0xc5,0x19,0x14,0x7c,0xcb,0xfc]
|
||||
vunpcklpd -4(%rbx,%rcx,8), %xmm12, %xmm15
|
||||
|
||||
// CHECK: vcmpps $0, %xmm10, %xmm12, %xmm15
|
||||
// CHECK: vcmpeqps %xmm10, %xmm12, %xmm15
|
||||
// CHECK: encoding: [0xc4,0x41,0x18,0xc2,0xfa,0x00]
|
||||
vcmpps $0, %xmm10, %xmm12, %xmm15
|
||||
|
||||
// CHECK: vcmpps $0, (%rax), %xmm12, %xmm15
|
||||
// CHECK: vcmpeqps (%rax), %xmm12, %xmm15
|
||||
// CHECK: encoding: [0xc5,0x18,0xc2,0x38,0x00]
|
||||
vcmpps $0, (%rax), %xmm12, %xmm15
|
||||
|
||||
// CHECK: vcmpps $7, %xmm10, %xmm12, %xmm15
|
||||
// CHECK: vcmpordps %xmm10, %xmm12, %xmm15
|
||||
// CHECK: encoding: [0xc4,0x41,0x18,0xc2,0xfa,0x07]
|
||||
vcmpps $7, %xmm10, %xmm12, %xmm15
|
||||
|
||||
// CHECK: vcmppd $0, %xmm10, %xmm12, %xmm15
|
||||
// CHECK: vcmpeqpd %xmm10, %xmm12, %xmm15
|
||||
// CHECK: encoding: [0xc4,0x41,0x19,0xc2,0xfa,0x00]
|
||||
vcmppd $0, %xmm10, %xmm12, %xmm15
|
||||
|
||||
// CHECK: vcmppd $0, (%rax), %xmm12, %xmm15
|
||||
// CHECK: vcmpeqpd (%rax), %xmm12, %xmm15
|
||||
// CHECK: encoding: [0xc5,0x19,0xc2,0x38,0x00]
|
||||
vcmppd $0, (%rax), %xmm12, %xmm15
|
||||
|
||||
// CHECK: vcmppd $7, %xmm10, %xmm12, %xmm15
|
||||
// CHECK: vcmpordpd %xmm10, %xmm12, %xmm15
|
||||
// CHECK: encoding: [0xc4,0x41,0x19,0xc2,0xfa,0x07]
|
||||
vcmppd $7, %xmm10, %xmm12, %xmm15
|
||||
|
||||
|
@ -202,10 +202,10 @@ xorps (%rax), %xmm2
|
||||
# CHECK-NEXT: 1 1 1.00 * andnps (%rax), %xmm2
|
||||
# CHECK-NEXT: 1 1 0.50 andps %xmm0, %xmm2
|
||||
# CHECK-NEXT: 1 1 1.00 * andps (%rax), %xmm2
|
||||
# CHECK-NEXT: 1 5 5.00 cmpps $0, %xmm0, %xmm2
|
||||
# CHECK-NEXT: 1 5 5.00 * cmpps $0, (%rax), %xmm2
|
||||
# CHECK-NEXT: 1 5 5.00 cmpss $0, %xmm0, %xmm2
|
||||
# CHECK-NEXT: 1 5 5.00 * cmpss $0, (%rax), %xmm2
|
||||
# CHECK-NEXT: 1 5 5.00 cmpeqps %xmm0, %xmm2
|
||||
# CHECK-NEXT: 1 5 5.00 * cmpeqps (%rax), %xmm2
|
||||
# CHECK-NEXT: 1 5 5.00 cmpeqss %xmm0, %xmm2
|
||||
# CHECK-NEXT: 1 5 5.00 * cmpeqss (%rax), %xmm2
|
||||
# CHECK-NEXT: 1 9 4.50 comiss %xmm0, %xmm1
|
||||
# CHECK-NEXT: 1 10 5.00 * comiss (%rax), %xmm1
|
||||
# CHECK-NEXT: 1 5 5.00 cvtpi2ps %mm0, %xmm2
|
||||
@ -337,10 +337,10 @@ xorps (%rax), %xmm2
|
||||
# CHECK-NEXT: 1.00 - andnps (%rax), %xmm2
|
||||
# CHECK-NEXT: 0.50 0.50 andps %xmm0, %xmm2
|
||||
# CHECK-NEXT: 1.00 - andps (%rax), %xmm2
|
||||
# CHECK-NEXT: 5.00 - cmpps $0, %xmm0, %xmm2
|
||||
# CHECK-NEXT: 5.00 - cmpps $0, (%rax), %xmm2
|
||||
# CHECK-NEXT: 5.00 - cmpss $0, %xmm0, %xmm2
|
||||
# CHECK-NEXT: 5.00 - cmpss $0, (%rax), %xmm2
|
||||
# CHECK-NEXT: 5.00 - cmpeqps %xmm0, %xmm2
|
||||
# CHECK-NEXT: 5.00 - cmpeqps (%rax), %xmm2
|
||||
# CHECK-NEXT: 5.00 - cmpeqss %xmm0, %xmm2
|
||||
# CHECK-NEXT: 5.00 - cmpeqss (%rax), %xmm2
|
||||
# CHECK-NEXT: 4.50 4.50 comiss %xmm0, %xmm1
|
||||
# CHECK-NEXT: 5.00 5.00 comiss (%rax), %xmm1
|
||||
# CHECK-NEXT: - 5.00 cvtpi2ps %mm0, %xmm2
|
||||
|
@ -416,10 +416,10 @@ xorpd (%rax), %xmm2
|
||||
# CHECK-NEXT: 1 1 0.50 andpd %xmm0, %xmm2
|
||||
# CHECK-NEXT: 1 1 1.00 * andpd (%rax), %xmm2
|
||||
# CHECK-NEXT: 1 1 1.00 * * U clflush (%rax)
|
||||
# CHECK-NEXT: 1 6 3.00 cmppd $0, %xmm0, %xmm2
|
||||
# CHECK-NEXT: 1 7 3.50 * cmppd $0, (%rax), %xmm2
|
||||
# CHECK-NEXT: 1 5 5.00 cmpsd $0, %xmm0, %xmm2
|
||||
# CHECK-NEXT: 1 5 5.00 * cmpsd $0, (%rax), %xmm2
|
||||
# CHECK-NEXT: 1 6 3.00 cmpeqpd %xmm0, %xmm2
|
||||
# CHECK-NEXT: 1 7 3.50 * cmpeqpd (%rax), %xmm2
|
||||
# CHECK-NEXT: 1 5 5.00 cmpeqsd %xmm0, %xmm2
|
||||
# CHECK-NEXT: 1 5 5.00 * cmpeqsd (%rax), %xmm2
|
||||
# CHECK-NEXT: 1 9 4.50 comisd %xmm0, %xmm1
|
||||
# CHECK-NEXT: 1 10 5.00 * comisd (%rax), %xmm1
|
||||
# CHECK-NEXT: 1 7 3.50 cvtdq2pd %xmm0, %xmm2
|
||||
@ -694,10 +694,10 @@ xorpd (%rax), %xmm2
|
||||
# CHECK-NEXT: 0.50 0.50 andpd %xmm0, %xmm2
|
||||
# CHECK-NEXT: 1.00 - andpd (%rax), %xmm2
|
||||
# CHECK-NEXT: 1.00 - clflush (%rax)
|
||||
# CHECK-NEXT: 3.00 3.00 cmppd $0, %xmm0, %xmm2
|
||||
# CHECK-NEXT: 3.50 3.50 cmppd $0, (%rax), %xmm2
|
||||
# CHECK-NEXT: 5.00 - cmpsd $0, %xmm0, %xmm2
|
||||
# CHECK-NEXT: 5.00 - cmpsd $0, (%rax), %xmm2
|
||||
# CHECK-NEXT: 3.00 3.00 cmpeqpd %xmm0, %xmm2
|
||||
# CHECK-NEXT: 3.50 3.50 cmpeqpd (%rax), %xmm2
|
||||
# CHECK-NEXT: 5.00 - cmpeqsd %xmm0, %xmm2
|
||||
# CHECK-NEXT: 5.00 - cmpeqsd (%rax), %xmm2
|
||||
# CHECK-NEXT: 4.50 4.50 comisd %xmm0, %xmm1
|
||||
# CHECK-NEXT: 5.00 5.00 comisd (%rax), %xmm1
|
||||
# CHECK-NEXT: 3.50 3.50 cvtdq2pd %xmm0, %xmm2
|
||||
|
@ -1098,18 +1098,18 @@ vzeroupper
|
||||
# CHECK-NEXT: 2 6 2.00 * vbroadcastsd (%rax), %ymm2
|
||||
# CHECK-NEXT: 1 7 0.50 * vbroadcastss (%rax), %xmm2
|
||||
# CHECK-NEXT: 2 6 2.00 * vbroadcastss (%rax), %ymm2
|
||||
# CHECK-NEXT: 1 2 1.00 vcmppd $0, %xmm0, %xmm1, %xmm2
|
||||
# CHECK-NEXT: 1 7 1.00 * vcmppd $0, (%rax), %xmm1, %xmm2
|
||||
# CHECK-NEXT: 2 2 2.00 vcmppd $0, %ymm0, %ymm1, %ymm2
|
||||
# CHECK-NEXT: 2 7 2.00 * vcmppd $0, (%rax), %ymm1, %ymm2
|
||||
# CHECK-NEXT: 1 2 1.00 vcmpps $0, %xmm0, %xmm1, %xmm2
|
||||
# CHECK-NEXT: 1 7 1.00 * vcmpps $0, (%rax), %xmm1, %xmm2
|
||||
# CHECK-NEXT: 2 2 2.00 vcmpps $0, %ymm0, %ymm1, %ymm2
|
||||
# CHECK-NEXT: 2 7 2.00 * vcmpps $0, (%rax), %ymm1, %ymm2
|
||||
# CHECK-NEXT: 1 2 1.00 vcmpsd $0, %xmm0, %xmm1, %xmm2
|
||||
# CHECK-NEXT: 1 7 1.00 * vcmpsd $0, (%rax), %xmm1, %xmm2
|
||||
# CHECK-NEXT: 1 2 1.00 vcmpss $0, %xmm0, %xmm1, %xmm2
|
||||
# CHECK-NEXT: 1 7 1.00 * vcmpss $0, (%rax), %xmm1, %xmm2
|
||||
# CHECK-NEXT: 1 2 1.00 vcmpeqpd %xmm0, %xmm1, %xmm2
|
||||
# CHECK-NEXT: 1 7 1.00 * vcmpeqpd (%rax), %xmm1, %xmm2
|
||||
# CHECK-NEXT: 2 2 2.00 vcmpeqpd %ymm0, %ymm1, %ymm2
|
||||
# CHECK-NEXT: 2 7 2.00 * vcmpeqpd (%rax), %ymm1, %ymm2
|
||||
# CHECK-NEXT: 1 2 1.00 vcmpeqps %xmm0, %xmm1, %xmm2
|
||||
# CHECK-NEXT: 1 7 1.00 * vcmpeqps (%rax), %xmm1, %xmm2
|
||||
# CHECK-NEXT: 2 2 2.00 vcmpeqps %ymm0, %ymm1, %ymm2
|
||||
# CHECK-NEXT: 2 7 2.00 * vcmpeqps (%rax), %ymm1, %ymm2
|
||||
# CHECK-NEXT: 1 2 1.00 vcmpeqsd %xmm0, %xmm1, %xmm2
|
||||
# CHECK-NEXT: 1 7 1.00 * vcmpeqsd (%rax), %xmm1, %xmm2
|
||||
# CHECK-NEXT: 1 2 1.00 vcmpeqss %xmm0, %xmm1, %xmm2
|
||||
# CHECK-NEXT: 1 7 1.00 * vcmpeqss (%rax), %xmm1, %xmm2
|
||||
# CHECK-NEXT: 2 1 1.00 vcomisd %xmm0, %xmm1
|
||||
# CHECK-NEXT: 2 6 1.00 * vcomisd (%rax), %xmm1
|
||||
# CHECK-NEXT: 2 1 1.00 vcomiss %xmm0, %xmm1
|
||||
@ -1821,18 +1821,18 @@ vzeroupper
|
||||
# CHECK-NEXT: 0.50 0.50 - - - - - - 2.00 2.00 - - - - 1.00 1.00 - - - 0.50 0.50 - - vbroadcastsd (%rax), %ymm2
|
||||
# CHECK-NEXT: 0.50 0.50 - - - - - - 0.50 0.50 - - - - 0.50 0.50 - - - 0.50 0.50 - - vbroadcastss (%rax), %xmm2
|
||||
# CHECK-NEXT: 0.50 0.50 - - - - - - 2.00 2.00 - - - - 1.00 1.00 - - - 0.50 0.50 - - vbroadcastss (%rax), %ymm2
|
||||
# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 1.00 - - - - - - - - vcmppd $0, %xmm0, %xmm1, %xmm2
|
||||
# CHECK-NEXT: 0.50 0.50 - - - - - - 0.50 0.50 - - - - 1.00 - - - - 0.50 0.50 - - vcmppd $0, (%rax), %xmm1, %xmm2
|
||||
# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 2.00 - - - - - - - - vcmppd $0, %ymm0, %ymm1, %ymm2
|
||||
# CHECK-NEXT: 1.00 1.00 - - - - - - 0.50 0.50 - - - - 2.00 - - - - 1.00 1.00 - - vcmppd $0, (%rax), %ymm1, %ymm2
|
||||
# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 1.00 - - - - - - - - vcmpps $0, %xmm0, %xmm1, %xmm2
|
||||
# CHECK-NEXT: 0.50 0.50 - - - - - - 0.50 0.50 - - - - 1.00 - - - - 0.50 0.50 - - vcmpps $0, (%rax), %xmm1, %xmm2
|
||||
# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 2.00 - - - - - - - - vcmpps $0, %ymm0, %ymm1, %ymm2
|
||||
# CHECK-NEXT: 1.00 1.00 - - - - - - 0.50 0.50 - - - - 2.00 - - - - 1.00 1.00 - - vcmpps $0, (%rax), %ymm1, %ymm2
|
||||
# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 1.00 - - - - - - - - vcmpsd $0, %xmm0, %xmm1, %xmm2
|
||||
# CHECK-NEXT: 0.50 0.50 - - - - - - 0.50 0.50 - - - - 1.00 - - - - 0.50 0.50 - - vcmpsd $0, (%rax), %xmm1, %xmm2
|
||||
# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 1.00 - - - - - - - - vcmpss $0, %xmm0, %xmm1, %xmm2
|
||||
# CHECK-NEXT: 0.50 0.50 - - - - - - 0.50 0.50 - - - - 1.00 - - - - 0.50 0.50 - - vcmpss $0, (%rax), %xmm1, %xmm2
|
||||
# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 1.00 - - - - - - - - vcmpeqpd %xmm0, %xmm1, %xmm2
|
||||
# CHECK-NEXT: 0.50 0.50 - - - - - - 0.50 0.50 - - - - 1.00 - - - - 0.50 0.50 - - vcmpeqpd (%rax), %xmm1, %xmm2
|
||||
# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 2.00 - - - - - - - - vcmpeqpd %ymm0, %ymm1, %ymm2
|
||||
# CHECK-NEXT: 1.00 1.00 - - - - - - 0.50 0.50 - - - - 2.00 - - - - 1.00 1.00 - - vcmpeqpd (%rax), %ymm1, %ymm2
|
||||
# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 1.00 - - - - - - - - vcmpeqps %xmm0, %xmm1, %xmm2
|
||||
# CHECK-NEXT: 0.50 0.50 - - - - - - 0.50 0.50 - - - - 1.00 - - - - 0.50 0.50 - - vcmpeqps (%rax), %xmm1, %xmm2
|
||||
# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 2.00 - - - - - - - - vcmpeqps %ymm0, %ymm1, %ymm2
|
||||
# CHECK-NEXT: 1.00 1.00 - - - - - - 0.50 0.50 - - - - 2.00 - - - - 1.00 1.00 - - vcmpeqps (%rax), %ymm1, %ymm2
|
||||
# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 1.00 - - - - - - - - vcmpeqsd %xmm0, %xmm1, %xmm2
|
||||
# CHECK-NEXT: 0.50 0.50 - - - - - - 0.50 0.50 - - - - 1.00 - - - - 0.50 0.50 - - vcmpeqsd (%rax), %xmm1, %xmm2
|
||||
# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 1.00 - - - - - - - - vcmpeqss %xmm0, %xmm1, %xmm2
|
||||
# CHECK-NEXT: 0.50 0.50 - - - - - - 0.50 0.50 - - - - 1.00 - - - - 0.50 0.50 - - vcmpeqss (%rax), %xmm1, %xmm2
|
||||
# CHECK-NEXT: - - - - - 1.00 - - 0.50 0.50 - - - - 1.00 - - - - - - - - vcomisd %xmm0, %xmm1
|
||||
# CHECK-NEXT: 0.50 0.50 - - - 1.00 - - 0.50 0.50 - - - - 1.00 - - - - 0.50 0.50 - - vcomisd (%rax), %xmm1
|
||||
# CHECK-NEXT: - - - - - 1.00 - - 0.50 0.50 - - - - 1.00 - - - - - - - - vcomiss %xmm0, %xmm1
|
||||
|
@ -202,10 +202,10 @@ xorps (%rax), %xmm2
|
||||
# CHECK-NEXT: 1 7 0.50 * andnps (%rax), %xmm2
|
||||
# CHECK-NEXT: 1 2 0.50 andps %xmm0, %xmm2
|
||||
# CHECK-NEXT: 1 7 0.50 * andps (%rax), %xmm2
|
||||
# CHECK-NEXT: 1 2 1.00 cmpps $0, %xmm0, %xmm2
|
||||
# CHECK-NEXT: 1 7 1.00 * cmpps $0, (%rax), %xmm2
|
||||
# CHECK-NEXT: 1 2 1.00 cmpss $0, %xmm0, %xmm2
|
||||
# CHECK-NEXT: 1 7 1.00 * cmpss $0, (%rax), %xmm2
|
||||
# CHECK-NEXT: 1 2 1.00 cmpeqps %xmm0, %xmm2
|
||||
# CHECK-NEXT: 1 7 1.00 * cmpeqps (%rax), %xmm2
|
||||
# CHECK-NEXT: 1 2 1.00 cmpeqss %xmm0, %xmm2
|
||||
# CHECK-NEXT: 1 7 1.00 * cmpeqss (%rax), %xmm2
|
||||
# CHECK-NEXT: 2 1 1.00 comiss %xmm0, %xmm1
|
||||
# CHECK-NEXT: 2 6 1.00 * comiss (%rax), %xmm1
|
||||
# CHECK-NEXT: 2 4 1.00 cvtpi2ps %mm0, %xmm2
|
||||
@ -358,10 +358,10 @@ xorps (%rax), %xmm2
|
||||
# CHECK-NEXT: 0.50 0.50 - - - - - - 0.50 0.50 - - - - 0.50 0.50 - - - 0.50 0.50 - - andnps (%rax), %xmm2
|
||||
# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 0.50 0.50 - - - - - - - andps %xmm0, %xmm2
|
||||
# CHECK-NEXT: 0.50 0.50 - - - - - - 0.50 0.50 - - - - 0.50 0.50 - - - 0.50 0.50 - - andps (%rax), %xmm2
|
||||
# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 1.00 - - - - - - - - cmpps $0, %xmm0, %xmm2
|
||||
# CHECK-NEXT: 0.50 0.50 - - - - - - 0.50 0.50 - - - - 1.00 - - - - 0.50 0.50 - - cmpps $0, (%rax), %xmm2
|
||||
# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 1.00 - - - - - - - - cmpss $0, %xmm0, %xmm2
|
||||
# CHECK-NEXT: 0.50 0.50 - - - - - - 0.50 0.50 - - - - 1.00 - - - - 0.50 0.50 - - cmpss $0, (%rax), %xmm2
|
||||
# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 1.00 - - - - - - - - cmpeqps %xmm0, %xmm2
|
||||
# CHECK-NEXT: 0.50 0.50 - - - - - - 0.50 0.50 - - - - 1.00 - - - - 0.50 0.50 - - cmpeqps (%rax), %xmm2
|
||||
# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 1.00 - - - - - - - - cmpeqss %xmm0, %xmm2
|
||||
# CHECK-NEXT: 0.50 0.50 - - - - - - 0.50 0.50 - - - - 1.00 - - - - 0.50 0.50 - - cmpeqss (%rax), %xmm2
|
||||
# CHECK-NEXT: - - - - - 1.00 - - 0.50 0.50 - - - - 1.00 - - - - - - - - comiss %xmm0, %xmm1
|
||||
# CHECK-NEXT: 0.50 0.50 - - - 1.00 - - 0.50 0.50 - - - - 1.00 - - - - 0.50 0.50 - - comiss (%rax), %xmm1
|
||||
# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - 1.00 - - - - - - - cvtpi2ps %mm0, %xmm2
|
||||
|
@ -416,10 +416,10 @@ xorpd (%rax), %xmm2
|
||||
# CHECK-NEXT: 1 2 0.50 andpd %xmm0, %xmm2
|
||||
# CHECK-NEXT: 1 7 0.50 * andpd (%rax), %xmm2
|
||||
# CHECK-NEXT: 1 5 0.50 * * U clflush (%rax)
|
||||
# CHECK-NEXT: 1 2 1.00 cmppd $0, %xmm0, %xmm2
|
||||
# CHECK-NEXT: 1 7 1.00 * cmppd $0, (%rax), %xmm2
|
||||
# CHECK-NEXT: 1 2 1.00 cmpsd $0, %xmm0, %xmm2
|
||||
# CHECK-NEXT: 1 7 1.00 * cmpsd $0, (%rax), %xmm2
|
||||
# CHECK-NEXT: 1 2 1.00 cmpeqpd %xmm0, %xmm2
|
||||
# CHECK-NEXT: 1 7 1.00 * cmpeqpd (%rax), %xmm2
|
||||
# CHECK-NEXT: 1 2 1.00 cmpeqsd %xmm0, %xmm2
|
||||
# CHECK-NEXT: 1 7 1.00 * cmpeqsd (%rax), %xmm2
|
||||
# CHECK-NEXT: 2 1 1.00 comisd %xmm0, %xmm1
|
||||
# CHECK-NEXT: 2 6 1.00 * comisd (%rax), %xmm1
|
||||
# CHECK-NEXT: 2 8 1.00 cvtdq2pd %xmm0, %xmm2
|
||||
@ -715,10 +715,10 @@ xorpd (%rax), %xmm2
|
||||
# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 0.50 0.50 - - - - - - - andpd %xmm0, %xmm2
|
||||
# CHECK-NEXT: 0.50 0.50 - - - - - - 0.50 0.50 - - - - 0.50 0.50 - - - 0.50 0.50 - - andpd (%rax), %xmm2
|
||||
# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - - - - - - 0.50 0.50 - - clflush (%rax)
|
||||
# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 1.00 - - - - - - - - cmppd $0, %xmm0, %xmm2
|
||||
# CHECK-NEXT: 0.50 0.50 - - - - - - 0.50 0.50 - - - - 1.00 - - - - 0.50 0.50 - - cmppd $0, (%rax), %xmm2
|
||||
# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 1.00 - - - - - - - - cmpsd $0, %xmm0, %xmm2
|
||||
# CHECK-NEXT: 0.50 0.50 - - - - - - 0.50 0.50 - - - - 1.00 - - - - 0.50 0.50 - - cmpsd $0, (%rax), %xmm2
|
||||
# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 1.00 - - - - - - - - cmpeqpd %xmm0, %xmm2
|
||||
# CHECK-NEXT: 0.50 0.50 - - - - - - 0.50 0.50 - - - - 1.00 - - - - 0.50 0.50 - - cmpeqpd (%rax), %xmm2
|
||||
# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 1.00 - - - - - - - - cmpeqsd %xmm0, %xmm2
|
||||
# CHECK-NEXT: 0.50 0.50 - - - - - - 0.50 0.50 - - - - 1.00 - - - - 0.50 0.50 - - cmpeqsd (%rax), %xmm2
|
||||
# CHECK-NEXT: - - - - - 1.00 - - 0.50 0.50 - - - - 1.00 - - - - - - - - comisd %xmm0, %xmm1
|
||||
# CHECK-NEXT: 0.50 0.50 - - - 1.00 - - 0.50 0.50 - - - - 1.00 - - - - 0.50 0.50 - - comisd (%rax), %xmm1
|
||||
# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - 1.00 - - - - - - - cvtdq2pd %xmm0, %xmm2
|
||||
|
@ -1098,18 +1098,18 @@ vzeroupper
|
||||
# CHECK-NEXT: 1 6 0.50 * vbroadcastsd (%rax), %ymm2
|
||||
# CHECK-NEXT: 1 5 0.50 * vbroadcastss (%rax), %xmm2
|
||||
# CHECK-NEXT: 1 6 0.50 * vbroadcastss (%rax), %ymm2
|
||||
# CHECK-NEXT: 1 3 1.00 vcmppd $0, %xmm0, %xmm1, %xmm2
|
||||
# CHECK-NEXT: 2 8 1.00 * vcmppd $0, (%rax), %xmm1, %xmm2
|
||||
# CHECK-NEXT: 1 3 1.00 vcmppd $0, %ymm0, %ymm1, %ymm2
|
||||
# CHECK-NEXT: 2 9 1.00 * vcmppd $0, (%rax), %ymm1, %ymm2
|
||||
# CHECK-NEXT: 1 3 1.00 vcmpps $0, %xmm0, %xmm1, %xmm2
|
||||
# CHECK-NEXT: 2 8 1.00 * vcmpps $0, (%rax), %xmm1, %xmm2
|
||||
# CHECK-NEXT: 1 3 1.00 vcmpps $0, %ymm0, %ymm1, %ymm2
|
||||
# CHECK-NEXT: 2 9 1.00 * vcmpps $0, (%rax), %ymm1, %ymm2
|
||||
# CHECK-NEXT: 1 3 1.00 vcmpsd $0, %xmm0, %xmm1, %xmm2
|
||||
# CHECK-NEXT: 2 8 1.00 * vcmpsd $0, (%rax), %xmm1, %xmm2
|
||||
# CHECK-NEXT: 1 3 1.00 vcmpss $0, %xmm0, %xmm1, %xmm2
|
||||
# CHECK-NEXT: 2 8 1.00 * vcmpss $0, (%rax), %xmm1, %xmm2
|
||||
# CHECK-NEXT: 1 3 1.00 vcmpeqpd %xmm0, %xmm1, %xmm2
|
||||
# CHECK-NEXT: 2 8 1.00 * vcmpeqpd (%rax), %xmm1, %xmm2
|
||||
# CHECK-NEXT: 1 3 1.00 vcmpeqpd %ymm0, %ymm1, %ymm2
|
||||
# CHECK-NEXT: 2 9 1.00 * vcmpeqpd (%rax), %ymm1, %ymm2
|
||||
# CHECK-NEXT: 1 3 1.00 vcmpeqps %xmm0, %xmm1, %xmm2
|
||||
# CHECK-NEXT: 2 8 1.00 * vcmpeqps (%rax), %xmm1, %xmm2
|
||||
# CHECK-NEXT: 1 3 1.00 vcmpeqps %ymm0, %ymm1, %ymm2
|
||||
# CHECK-NEXT: 2 9 1.00 * vcmpeqps (%rax), %ymm1, %ymm2
|
||||
# CHECK-NEXT: 1 3 1.00 vcmpeqsd %xmm0, %xmm1, %xmm2
|
||||
# CHECK-NEXT: 2 8 1.00 * vcmpeqsd (%rax), %xmm1, %xmm2
|
||||
# CHECK-NEXT: 1 3 1.00 vcmpeqss %xmm0, %xmm1, %xmm2
|
||||
# CHECK-NEXT: 2 8 1.00 * vcmpeqss (%rax), %xmm1, %xmm2
|
||||
# CHECK-NEXT: 1 3 1.00 vcomisd %xmm0, %xmm1
|
||||
# CHECK-NEXT: 2 8 1.00 * vcomisd (%rax), %xmm1
|
||||
# CHECK-NEXT: 1 3 1.00 vcomiss %xmm0, %xmm1
|
||||
@ -1808,18 +1808,18 @@ vzeroupper
|
||||
# CHECK-NEXT: - - - - 0.50 0.50 - - - - vbroadcastsd (%rax), %ymm2
|
||||
# CHECK-NEXT: - - - - 0.50 0.50 - - - - vbroadcastss (%rax), %xmm2
|
||||
# CHECK-NEXT: - - - - 0.50 0.50 - - - - vbroadcastss (%rax), %ymm2
|
||||
# CHECK-NEXT: - - - 1.00 - - - - - - vcmppd $0, %xmm0, %xmm1, %xmm2
|
||||
# CHECK-NEXT: - - - 1.00 0.50 0.50 - - - - vcmppd $0, (%rax), %xmm1, %xmm2
|
||||
# CHECK-NEXT: - - - 1.00 - - - - - - vcmppd $0, %ymm0, %ymm1, %ymm2
|
||||
# CHECK-NEXT: - - - 1.00 0.50 0.50 - - - - vcmppd $0, (%rax), %ymm1, %ymm2
|
||||
# CHECK-NEXT: - - - 1.00 - - - - - - vcmpps $0, %xmm0, %xmm1, %xmm2
|
||||
# CHECK-NEXT: - - - 1.00 0.50 0.50 - - - - vcmpps $0, (%rax), %xmm1, %xmm2
|
||||
# CHECK-NEXT: - - - 1.00 - - - - - - vcmpps $0, %ymm0, %ymm1, %ymm2
|
||||
# CHECK-NEXT: - - - 1.00 0.50 0.50 - - - - vcmpps $0, (%rax), %ymm1, %ymm2
|
||||
# CHECK-NEXT: - - - 1.00 - - - - - - vcmpsd $0, %xmm0, %xmm1, %xmm2
|
||||
# CHECK-NEXT: - - - 1.00 0.50 0.50 - - - - vcmpsd $0, (%rax), %xmm1, %xmm2
|
||||
# CHECK-NEXT: - - - 1.00 - - - - - - vcmpss $0, %xmm0, %xmm1, %xmm2
|
||||
# CHECK-NEXT: - - - 1.00 0.50 0.50 - - - - vcmpss $0, (%rax), %xmm1, %xmm2
|
||||
# CHECK-NEXT: - - - 1.00 - - - - - - vcmpeqpd %xmm0, %xmm1, %xmm2
|
||||
# CHECK-NEXT: - - - 1.00 0.50 0.50 - - - - vcmpeqpd (%rax), %xmm1, %xmm2
|
||||
# CHECK-NEXT: - - - 1.00 - - - - - - vcmpeqpd %ymm0, %ymm1, %ymm2
|
||||
# CHECK-NEXT: - - - 1.00 0.50 0.50 - - - - vcmpeqpd (%rax), %ymm1, %ymm2
|
||||
# CHECK-NEXT: - - - 1.00 - - - - - - vcmpeqps %xmm0, %xmm1, %xmm2
|
||||
# CHECK-NEXT: - - - 1.00 0.50 0.50 - - - - vcmpeqps (%rax), %xmm1, %xmm2
|
||||
# CHECK-NEXT: - - - 1.00 - - - - - - vcmpeqps %ymm0, %ymm1, %ymm2
|
||||
# CHECK-NEXT: - - - 1.00 0.50 0.50 - - - - vcmpeqps (%rax), %ymm1, %ymm2
|
||||
# CHECK-NEXT: - - - 1.00 - - - - - - vcmpeqsd %xmm0, %xmm1, %xmm2
|
||||
# CHECK-NEXT: - - - 1.00 0.50 0.50 - - - - vcmpeqsd (%rax), %xmm1, %xmm2
|
||||
# CHECK-NEXT: - - - 1.00 - - - - - - vcmpeqss %xmm0, %xmm1, %xmm2
|
||||
# CHECK-NEXT: - - - 1.00 0.50 0.50 - - - - vcmpeqss (%rax), %xmm1, %xmm2
|
||||
# CHECK-NEXT: - - - 1.00 - - - - - - vcomisd %xmm0, %xmm1
|
||||
# CHECK-NEXT: - - - 1.00 0.50 0.50 - - - - vcomisd (%rax), %xmm1
|
||||
# CHECK-NEXT: - - - 1.00 - - - - - - vcomiss %xmm0, %xmm1
|
||||
|
@ -202,10 +202,10 @@ xorps (%rax), %xmm2
|
||||
# CHECK-NEXT: 2 6 1.00 * andnps (%rax), %xmm2
|
||||
# CHECK-NEXT: 1 1 1.00 andps %xmm0, %xmm2
|
||||
# CHECK-NEXT: 2 6 1.00 * andps (%rax), %xmm2
|
||||
# CHECK-NEXT: 1 3 1.00 cmpps $0, %xmm0, %xmm2
|
||||
# CHECK-NEXT: 2 8 1.00 * cmpps $0, (%rax), %xmm2
|
||||
# CHECK-NEXT: 1 3 1.00 cmpss $0, %xmm0, %xmm2
|
||||
# CHECK-NEXT: 2 8 1.00 * cmpss $0, (%rax), %xmm2
|
||||
# CHECK-NEXT: 1 3 1.00 cmpeqps %xmm0, %xmm2
|
||||
# CHECK-NEXT: 2 8 1.00 * cmpeqps (%rax), %xmm2
|
||||
# CHECK-NEXT: 1 3 1.00 cmpeqss %xmm0, %xmm2
|
||||
# CHECK-NEXT: 2 8 1.00 * cmpeqss (%rax), %xmm2
|
||||
# CHECK-NEXT: 1 3 1.00 comiss %xmm0, %xmm1
|
||||
# CHECK-NEXT: 2 8 1.00 * comiss (%rax), %xmm1
|
||||
# CHECK-NEXT: 1 3 1.00 cvtpi2ps %mm0, %xmm2
|
||||
@ -345,10 +345,10 @@ xorps (%rax), %xmm2
|
||||
# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - andnps (%rax), %xmm2
|
||||
# CHECK-NEXT: - - - - - - - 1.00 - - andps %xmm0, %xmm2
|
||||
# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - andps (%rax), %xmm2
|
||||
# CHECK-NEXT: - - - 1.00 - - - - - - cmpps $0, %xmm0, %xmm2
|
||||
# CHECK-NEXT: - - - 1.00 0.50 0.50 - - - - cmpps $0, (%rax), %xmm2
|
||||
# CHECK-NEXT: - - - 1.00 - - - - - - cmpss $0, %xmm0, %xmm2
|
||||
# CHECK-NEXT: - - - 1.00 0.50 0.50 - - - - cmpss $0, (%rax), %xmm2
|
||||
# CHECK-NEXT: - - - 1.00 - - - - - - cmpeqps %xmm0, %xmm2
|
||||
# CHECK-NEXT: - - - 1.00 0.50 0.50 - - - - cmpeqps (%rax), %xmm2
|
||||
# CHECK-NEXT: - - - 1.00 - - - - - - cmpeqss %xmm0, %xmm2
|
||||
# CHECK-NEXT: - - - 1.00 0.50 0.50 - - - - cmpeqss (%rax), %xmm2
|
||||
# CHECK-NEXT: - - - 1.00 - - - - - - comiss %xmm0, %xmm1
|
||||
# CHECK-NEXT: - - - 1.00 0.50 0.50 - - - - comiss (%rax), %xmm1
|
||||
# CHECK-NEXT: - - - 1.00 - - - - - - cvtpi2ps %mm0, %xmm2
|
||||
|
@ -416,10 +416,10 @@ xorpd (%rax), %xmm2
|
||||
# CHECK-NEXT: 1 1 1.00 andpd %xmm0, %xmm2
|
||||
# CHECK-NEXT: 2 6 1.00 * andpd (%rax), %xmm2
|
||||
# CHECK-NEXT: 2 2 1.00 * * U clflush (%rax)
|
||||
# CHECK-NEXT: 1 3 1.00 cmppd $0, %xmm0, %xmm2
|
||||
# CHECK-NEXT: 2 8 1.00 * cmppd $0, (%rax), %xmm2
|
||||
# CHECK-NEXT: 1 3 1.00 cmpsd $0, %xmm0, %xmm2
|
||||
# CHECK-NEXT: 2 8 1.00 * cmpsd $0, (%rax), %xmm2
|
||||
# CHECK-NEXT: 1 3 1.00 cmpeqpd %xmm0, %xmm2
|
||||
# CHECK-NEXT: 2 8 1.00 * cmpeqpd (%rax), %xmm2
|
||||
# CHECK-NEXT: 1 3 1.00 cmpeqsd %xmm0, %xmm2
|
||||
# CHECK-NEXT: 2 8 1.00 * cmpeqsd (%rax), %xmm2
|
||||
# CHECK-NEXT: 1 3 1.00 comisd %xmm0, %xmm1
|
||||
# CHECK-NEXT: 2 8 1.00 * comisd (%rax), %xmm1
|
||||
# CHECK-NEXT: 2 4 1.00 cvtdq2pd %xmm0, %xmm2
|
||||
@ -702,10 +702,10 @@ xorpd (%rax), %xmm2
|
||||
# CHECK-NEXT: - - - - - - - 1.00 - - andpd %xmm0, %xmm2
|
||||
# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - andpd (%rax), %xmm2
|
||||
# CHECK-NEXT: - - 0.25 0.25 - - - 0.25 1.25 - clflush (%rax)
|
||||
# CHECK-NEXT: - - - 1.00 - - - - - - cmppd $0, %xmm0, %xmm2
|
||||
# CHECK-NEXT: - - - 1.00 0.50 0.50 - - - - cmppd $0, (%rax), %xmm2
|
||||
# CHECK-NEXT: - - - 1.00 - - - - - - cmpsd $0, %xmm0, %xmm2
|
||||
# CHECK-NEXT: - - - 1.00 0.50 0.50 - - - - cmpsd $0, (%rax), %xmm2
|
||||
# CHECK-NEXT: - - - 1.00 - - - - - - cmpeqpd %xmm0, %xmm2
|
||||
# CHECK-NEXT: - - - 1.00 0.50 0.50 - - - - cmpeqpd (%rax), %xmm2
|
||||
# CHECK-NEXT: - - - 1.00 - - - - - - cmpeqsd %xmm0, %xmm2
|
||||
# CHECK-NEXT: - - - 1.00 0.50 0.50 - - - - cmpeqsd (%rax), %xmm2
|
||||
# CHECK-NEXT: - - - 1.00 - - - - - - comisd %xmm0, %xmm1
|
||||
# CHECK-NEXT: - - - 1.00 0.50 0.50 - - - - comisd (%rax), %xmm1
|
||||
# CHECK-NEXT: - - - 1.00 - - - 1.00 - - cvtdq2pd %xmm0, %xmm2
|
||||
|
@ -1098,18 +1098,18 @@ vzeroupper
|
||||
# CHECK-NEXT: 2 6 2.00 * vbroadcastsd (%rax), %ymm2
|
||||
# CHECK-NEXT: 1 6 1.00 * vbroadcastss (%rax), %xmm2
|
||||
# CHECK-NEXT: 2 6 2.00 * vbroadcastss (%rax), %ymm2
|
||||
# CHECK-NEXT: 1 2 1.00 vcmppd $0, %xmm0, %xmm1, %xmm2
|
||||
# CHECK-NEXT: 1 7 1.00 * vcmppd $0, (%rax), %xmm1, %xmm2
|
||||
# CHECK-NEXT: 2 2 2.00 vcmppd $0, %ymm0, %ymm1, %ymm2
|
||||
# CHECK-NEXT: 2 7 2.00 * vcmppd $0, (%rax), %ymm1, %ymm2
|
||||
# CHECK-NEXT: 1 2 1.00 vcmpps $0, %xmm0, %xmm1, %xmm2
|
||||
# CHECK-NEXT: 1 7 1.00 * vcmpps $0, (%rax), %xmm1, %xmm2
|
||||
# CHECK-NEXT: 2 2 2.00 vcmpps $0, %ymm0, %ymm1, %ymm2
|
||||
# CHECK-NEXT: 2 7 2.00 * vcmpps $0, (%rax), %ymm1, %ymm2
|
||||
# CHECK-NEXT: 1 2 1.00 vcmpsd $0, %xmm0, %xmm1, %xmm2
|
||||
# CHECK-NEXT: 1 7 1.00 * vcmpsd $0, (%rax), %xmm1, %xmm2
|
||||
# CHECK-NEXT: 1 2 1.00 vcmpss $0, %xmm0, %xmm1, %xmm2
|
||||
# CHECK-NEXT: 1 7 1.00 * vcmpss $0, (%rax), %xmm1, %xmm2
|
||||
# CHECK-NEXT: 1 2 1.00 vcmpeqpd %xmm0, %xmm1, %xmm2
|
||||
# CHECK-NEXT: 1 7 1.00 * vcmpeqpd (%rax), %xmm1, %xmm2
|
||||
# CHECK-NEXT: 2 2 2.00 vcmpeqpd %ymm0, %ymm1, %ymm2
|
||||
# CHECK-NEXT: 2 7 2.00 * vcmpeqpd (%rax), %ymm1, %ymm2
|
||||
# CHECK-NEXT: 1 2 1.00 vcmpeqps %xmm0, %xmm1, %xmm2
|
||||
# CHECK-NEXT: 1 7 1.00 * vcmpeqps (%rax), %xmm1, %xmm2
|
||||
# CHECK-NEXT: 2 2 2.00 vcmpeqps %ymm0, %ymm1, %ymm2
|
||||
# CHECK-NEXT: 2 7 2.00 * vcmpeqps (%rax), %ymm1, %ymm2
|
||||
# CHECK-NEXT: 1 2 1.00 vcmpeqsd %xmm0, %xmm1, %xmm2
|
||||
# CHECK-NEXT: 1 7 1.00 * vcmpeqsd (%rax), %xmm1, %xmm2
|
||||
# CHECK-NEXT: 1 2 1.00 vcmpeqss %xmm0, %xmm1, %xmm2
|
||||
# CHECK-NEXT: 1 7 1.00 * vcmpeqss (%rax), %xmm1, %xmm2
|
||||
# CHECK-NEXT: 1 3 1.00 vcomisd %xmm0, %xmm1
|
||||
# CHECK-NEXT: 1 8 1.00 * vcomisd (%rax), %xmm1
|
||||
# CHECK-NEXT: 1 3 1.00 vcomiss %xmm0, %xmm1
|
||||
@ -1812,18 +1812,18 @@ vzeroupper
|
||||
# CHECK-NEXT: - - - 2.00 2.00 1.00 1.00 1.00 - - - - - - vbroadcastsd (%rax), %ymm2
|
||||
# CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 1.00 - - - - - - vbroadcastss (%rax), %xmm2
|
||||
# CHECK-NEXT: - - - 2.00 2.00 1.00 1.00 1.00 - - - - - - vbroadcastss (%rax), %ymm2
|
||||
# CHECK-NEXT: - - - 1.00 - 1.00 - - - - - - - - vcmppd $0, %xmm0, %xmm1, %xmm2
|
||||
# CHECK-NEXT: - - - 1.00 - 1.00 - 1.00 - - - - - - vcmppd $0, (%rax), %xmm1, %xmm2
|
||||
# CHECK-NEXT: - - - 2.00 - 2.00 - - - - - - - - vcmppd $0, %ymm0, %ymm1, %ymm2
|
||||
# CHECK-NEXT: - - - 2.00 - 2.00 - 2.00 - - - - - - vcmppd $0, (%rax), %ymm1, %ymm2
|
||||
# CHECK-NEXT: - - - 1.00 - 1.00 - - - - - - - - vcmpps $0, %xmm0, %xmm1, %xmm2
|
||||
# CHECK-NEXT: - - - 1.00 - 1.00 - 1.00 - - - - - - vcmpps $0, (%rax), %xmm1, %xmm2
|
||||
# CHECK-NEXT: - - - 2.00 - 2.00 - - - - - - - - vcmpps $0, %ymm0, %ymm1, %ymm2
|
||||
# CHECK-NEXT: - - - 2.00 - 2.00 - 2.00 - - - - - - vcmpps $0, (%rax), %ymm1, %ymm2
|
||||
# CHECK-NEXT: - - - 1.00 - 1.00 - - - - - - - - vcmpsd $0, %xmm0, %xmm1, %xmm2
|
||||
# CHECK-NEXT: - - - 1.00 - 1.00 - 1.00 - - - - - - vcmpsd $0, (%rax), %xmm1, %xmm2
|
||||
# CHECK-NEXT: - - - 1.00 - 1.00 - - - - - - - - vcmpss $0, %xmm0, %xmm1, %xmm2
|
||||
# CHECK-NEXT: - - - 1.00 - 1.00 - 1.00 - - - - - - vcmpss $0, (%rax), %xmm1, %xmm2
|
||||
# CHECK-NEXT: - - - 1.00 - 1.00 - - - - - - - - vcmpeqpd %xmm0, %xmm1, %xmm2
|
||||
# CHECK-NEXT: - - - 1.00 - 1.00 - 1.00 - - - - - - vcmpeqpd (%rax), %xmm1, %xmm2
|
||||
# CHECK-NEXT: - - - 2.00 - 2.00 - - - - - - - - vcmpeqpd %ymm0, %ymm1, %ymm2
|
||||
# CHECK-NEXT: - - - 2.00 - 2.00 - 2.00 - - - - - - vcmpeqpd (%rax), %ymm1, %ymm2
|
||||
# CHECK-NEXT: - - - 1.00 - 1.00 - - - - - - - - vcmpeqps %xmm0, %xmm1, %xmm2
|
||||
# CHECK-NEXT: - - - 1.00 - 1.00 - 1.00 - - - - - - vcmpeqps (%rax), %xmm1, %xmm2
|
||||
# CHECK-NEXT: - - - 2.00 - 2.00 - - - - - - - - vcmpeqps %ymm0, %ymm1, %ymm2
|
||||
# CHECK-NEXT: - - - 2.00 - 2.00 - 2.00 - - - - - - vcmpeqps (%rax), %ymm1, %ymm2
|
||||
# CHECK-NEXT: - - - 1.00 - 1.00 - - - - - - - - vcmpeqsd %xmm0, %xmm1, %xmm2
|
||||
# CHECK-NEXT: - - - 1.00 - 1.00 - 1.00 - - - - - - vcmpeqsd (%rax), %xmm1, %xmm2
|
||||
# CHECK-NEXT: - - - 1.00 - 1.00 - - - - - - - - vcmpeqss %xmm0, %xmm1, %xmm2
|
||||
# CHECK-NEXT: - - - 1.00 - 1.00 - 1.00 - - - - - - vcmpeqss (%rax), %xmm1, %xmm2
|
||||
# CHECK-NEXT: 1.00 - - 1.00 - 1.00 - - - - - - - - vcomisd %xmm0, %xmm1
|
||||
# CHECK-NEXT: 1.00 - - 1.00 - 1.00 - 1.00 - - - - - - vcomisd (%rax), %xmm1
|
||||
# CHECK-NEXT: 1.00 - - 1.00 - 1.00 - - - - - - - - vcomiss %xmm0, %xmm1
|
||||
|
@ -202,10 +202,10 @@ xorps (%rax), %xmm2
|
||||
# CHECK-NEXT: 1 6 1.00 * andnps (%rax), %xmm2
|
||||
# CHECK-NEXT: 1 1 0.50 andps %xmm0, %xmm2
|
||||
# CHECK-NEXT: 1 6 1.00 * andps (%rax), %xmm2
|
||||
# CHECK-NEXT: 1 2 1.00 cmpps $0, %xmm0, %xmm2
|
||||
# CHECK-NEXT: 1 7 1.00 * cmpps $0, (%rax), %xmm2
|
||||
# CHECK-NEXT: 1 2 1.00 cmpss $0, %xmm0, %xmm2
|
||||
# CHECK-NEXT: 1 7 1.00 * cmpss $0, (%rax), %xmm2
|
||||
# CHECK-NEXT: 1 2 1.00 cmpeqps %xmm0, %xmm2
|
||||
# CHECK-NEXT: 1 7 1.00 * cmpeqps (%rax), %xmm2
|
||||
# CHECK-NEXT: 1 2 1.00 cmpeqss %xmm0, %xmm2
|
||||
# CHECK-NEXT: 1 7 1.00 * cmpeqss (%rax), %xmm2
|
||||
# CHECK-NEXT: 1 3 1.00 comiss %xmm0, %xmm1
|
||||
# CHECK-NEXT: 1 8 1.00 * comiss (%rax), %xmm1
|
||||
# CHECK-NEXT: 1 3 1.00 cvtpi2ps %mm0, %xmm2
|
||||
@ -349,10 +349,10 @@ xorps (%rax), %xmm2
|
||||
# CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 1.00 - - - - - - andnps (%rax), %xmm2
|
||||
# CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 - - - - - - - andps %xmm0, %xmm2
|
||||
# CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 1.00 - - - - - - andps (%rax), %xmm2
|
||||
# CHECK-NEXT: - - - 1.00 - 1.00 - - - - - - - - cmpps $0, %xmm0, %xmm2
|
||||
# CHECK-NEXT: - - - 1.00 - 1.00 - 1.00 - - - - - - cmpps $0, (%rax), %xmm2
|
||||
# CHECK-NEXT: - - - 1.00 - 1.00 - - - - - - - - cmpss $0, %xmm0, %xmm2
|
||||
# CHECK-NEXT: - - - 1.00 - 1.00 - 1.00 - - - - - - cmpss $0, (%rax), %xmm2
|
||||
# CHECK-NEXT: - - - 1.00 - 1.00 - - - - - - - - cmpeqps %xmm0, %xmm2
|
||||
# CHECK-NEXT: - - - 1.00 - 1.00 - 1.00 - - - - - - cmpeqps (%rax), %xmm2
|
||||
# CHECK-NEXT: - - - 1.00 - 1.00 - - - - - - - - cmpeqss %xmm0, %xmm2
|
||||
# CHECK-NEXT: - - - 1.00 - 1.00 - 1.00 - - - - - - cmpeqss (%rax), %xmm2
|
||||
# CHECK-NEXT: 1.00 - - 1.00 - 1.00 - - - - - - - - comiss %xmm0, %xmm1
|
||||
# CHECK-NEXT: 1.00 - - 1.00 - 1.00 - 1.00 - - - - - - comiss (%rax), %xmm1
|
||||
# CHECK-NEXT: - - - - - - 1.00 - - - 1.00 - - - cvtpi2ps %mm0, %xmm2
|
||||
|
@ -416,10 +416,10 @@ xorpd (%rax), %xmm2
|
||||
# CHECK-NEXT: 1 1 0.50 andpd %xmm0, %xmm2
|
||||
# CHECK-NEXT: 1 6 1.00 * andpd (%rax), %xmm2
|
||||
# CHECK-NEXT: 1 3 1.00 * * U clflush (%rax)
|
||||
# CHECK-NEXT: 1 2 1.00 cmppd $0, %xmm0, %xmm2
|
||||
# CHECK-NEXT: 1 7 1.00 * cmppd $0, (%rax), %xmm2
|
||||
# CHECK-NEXT: 1 2 1.00 cmpsd $0, %xmm0, %xmm2
|
||||
# CHECK-NEXT: 1 7 1.00 * cmpsd $0, (%rax), %xmm2
|
||||
# CHECK-NEXT: 1 2 1.00 cmpeqpd %xmm0, %xmm2
|
||||
# CHECK-NEXT: 1 7 1.00 * cmpeqpd (%rax), %xmm2
|
||||
# CHECK-NEXT: 1 2 1.00 cmpeqsd %xmm0, %xmm2
|
||||
# CHECK-NEXT: 1 7 1.00 * cmpeqsd (%rax), %xmm2
|
||||
# CHECK-NEXT: 1 3 1.00 comisd %xmm0, %xmm1
|
||||
# CHECK-NEXT: 1 8 1.00 * comisd (%rax), %xmm1
|
||||
# CHECK-NEXT: 1 3 1.00 cvtdq2pd %xmm0, %xmm2
|
||||
@ -706,10 +706,10 @@ xorpd (%rax), %xmm2
|
||||
# CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 - - - - - - - andpd %xmm0, %xmm2
|
||||
# CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 1.00 - - - - - - andpd (%rax), %xmm2
|
||||
# CHECK-NEXT: - - - - - - - 1.00 - - - - - - clflush (%rax)
|
||||
# CHECK-NEXT: - - - 1.00 - 1.00 - - - - - - - - cmppd $0, %xmm0, %xmm2
|
||||
# CHECK-NEXT: - - - 1.00 - 1.00 - 1.00 - - - - - - cmppd $0, (%rax), %xmm2
|
||||
# CHECK-NEXT: - - - 1.00 - 1.00 - - - - - - - - cmpsd $0, %xmm0, %xmm2
|
||||
# CHECK-NEXT: - - - 1.00 - 1.00 - 1.00 - - - - - - cmpsd $0, (%rax), %xmm2
|
||||
# CHECK-NEXT: - - - 1.00 - 1.00 - - - - - - - - cmpeqpd %xmm0, %xmm2
|
||||
# CHECK-NEXT: - - - 1.00 - 1.00 - 1.00 - - - - - - cmpeqpd (%rax), %xmm2
|
||||
# CHECK-NEXT: - - - 1.00 - 1.00 - - - - - - - - cmpeqsd %xmm0, %xmm2
|
||||
# CHECK-NEXT: - - - 1.00 - 1.00 - 1.00 - - - - - - cmpeqsd (%rax), %xmm2
|
||||
# CHECK-NEXT: 1.00 - - 1.00 - 1.00 - - - - - - - - comisd %xmm0, %xmm1
|
||||
# CHECK-NEXT: 1.00 - - 1.00 - 1.00 - 1.00 - - - - - - comisd (%rax), %xmm1
|
||||
# CHECK-NEXT: - - - - - - 1.00 - - - 1.00 - - - cvtdq2pd %xmm0, %xmm2
|
||||
|
@ -1098,18 +1098,18 @@ vzeroupper
|
||||
# CHECK-NEXT: 1 7 0.50 * vbroadcastsd (%rax), %ymm2
|
||||
# CHECK-NEXT: 1 6 0.50 * vbroadcastss (%rax), %xmm2
|
||||
# CHECK-NEXT: 1 7 0.50 * vbroadcastss (%rax), %ymm2
|
||||
# CHECK-NEXT: 1 3 1.00 vcmppd $0, %xmm0, %xmm1, %xmm2
|
||||
# CHECK-NEXT: 2 9 1.00 * vcmppd $0, (%rax), %xmm1, %xmm2
|
||||
# CHECK-NEXT: 1 3 1.00 vcmppd $0, %ymm0, %ymm1, %ymm2
|
||||
# CHECK-NEXT: 2 10 1.00 * vcmppd $0, (%rax), %ymm1, %ymm2
|
||||
# CHECK-NEXT: 1 3 1.00 vcmpps $0, %xmm0, %xmm1, %xmm2
|
||||
# CHECK-NEXT: 2 9 1.00 * vcmpps $0, (%rax), %xmm1, %xmm2
|
||||
# CHECK-NEXT: 1 3 1.00 vcmpps $0, %ymm0, %ymm1, %ymm2
|
||||
# CHECK-NEXT: 2 10 1.00 * vcmpps $0, (%rax), %ymm1, %ymm2
|
||||
# CHECK-NEXT: 1 3 1.00 vcmpsd $0, %xmm0, %xmm1, %xmm2
|
||||
# CHECK-NEXT: 2 9 1.00 * vcmpsd $0, (%rax), %xmm1, %xmm2
|
||||
# CHECK-NEXT: 1 3 1.00 vcmpss $0, %xmm0, %xmm1, %xmm2
|
||||
# CHECK-NEXT: 2 9 1.00 * vcmpss $0, (%rax), %xmm1, %xmm2
|
||||
# CHECK-NEXT: 1 3 1.00 vcmpeqpd %xmm0, %xmm1, %xmm2
|
||||
# CHECK-NEXT: 2 9 1.00 * vcmpeqpd (%rax), %xmm1, %xmm2
|
||||
# CHECK-NEXT: 1 3 1.00 vcmpeqpd %ymm0, %ymm1, %ymm2
|
||||
# CHECK-NEXT: 2 10 1.00 * vcmpeqpd (%rax), %ymm1, %ymm2
|
||||
# CHECK-NEXT: 1 3 1.00 vcmpeqps %xmm0, %xmm1, %xmm2
|
||||
# CHECK-NEXT: 2 9 1.00 * vcmpeqps (%rax), %xmm1, %xmm2
|
||||
# CHECK-NEXT: 1 3 1.00 vcmpeqps %ymm0, %ymm1, %ymm2
|
||||
# CHECK-NEXT: 2 10 1.00 * vcmpeqps (%rax), %ymm1, %ymm2
|
||||
# CHECK-NEXT: 1 3 1.00 vcmpeqsd %xmm0, %xmm1, %xmm2
|
||||
# CHECK-NEXT: 2 9 1.00 * vcmpeqsd (%rax), %xmm1, %xmm2
|
||||
# CHECK-NEXT: 1 3 1.00 vcmpeqss %xmm0, %xmm1, %xmm2
|
||||
# CHECK-NEXT: 2 9 1.00 * vcmpeqss (%rax), %xmm1, %xmm2
|
||||
# CHECK-NEXT: 2 2 1.00 vcomisd %xmm0, %xmm1
|
||||
# CHECK-NEXT: 3 8 1.00 * vcomisd (%rax), %xmm1
|
||||
# CHECK-NEXT: 2 2 1.00 vcomiss %xmm0, %xmm1
|
||||
@ -1806,18 +1806,18 @@ vzeroupper
|
||||
# CHECK-NEXT: - - - - - - 0.50 0.50 vbroadcastsd (%rax), %ymm2
|
||||
# CHECK-NEXT: - - - - - - 0.50 0.50 vbroadcastss (%rax), %xmm2
|
||||
# CHECK-NEXT: - - - - - - 0.50 0.50 vbroadcastss (%rax), %ymm2
|
||||
# CHECK-NEXT: - - - 1.00 - - - - vcmppd $0, %xmm0, %xmm1, %xmm2
|
||||
# CHECK-NEXT: - - - 1.00 - - 0.50 0.50 vcmppd $0, (%rax), %xmm1, %xmm2
|
||||
# CHECK-NEXT: - - - 1.00 - - - - vcmppd $0, %ymm0, %ymm1, %ymm2
|
||||
# CHECK-NEXT: - - - 1.00 - - 0.50 0.50 vcmppd $0, (%rax), %ymm1, %ymm2
|
||||
# CHECK-NEXT: - - - 1.00 - - - - vcmpps $0, %xmm0, %xmm1, %xmm2
|
||||
# CHECK-NEXT: - - - 1.00 - - 0.50 0.50 vcmpps $0, (%rax), %xmm1, %xmm2
|
||||
# CHECK-NEXT: - - - 1.00 - - - - vcmpps $0, %ymm0, %ymm1, %ymm2
|
||||
# CHECK-NEXT: - - - 1.00 - - 0.50 0.50 vcmpps $0, (%rax), %ymm1, %ymm2
|
||||
# CHECK-NEXT: - - - 1.00 - - - - vcmpsd $0, %xmm0, %xmm1, %xmm2
|
||||
# CHECK-NEXT: - - - 1.00 - - 0.50 0.50 vcmpsd $0, (%rax), %xmm1, %xmm2
|
||||
# CHECK-NEXT: - - - 1.00 - - - - vcmpss $0, %xmm0, %xmm1, %xmm2
|
||||
# CHECK-NEXT: - - - 1.00 - - 0.50 0.50 vcmpss $0, (%rax), %xmm1, %xmm2
|
||||
# CHECK-NEXT: - - - 1.00 - - - - vcmpeqpd %xmm0, %xmm1, %xmm2
|
||||
# CHECK-NEXT: - - - 1.00 - - 0.50 0.50 vcmpeqpd (%rax), %xmm1, %xmm2
|
||||
# CHECK-NEXT: - - - 1.00 - - - - vcmpeqpd %ymm0, %ymm1, %ymm2
|
||||
# CHECK-NEXT: - - - 1.00 - - 0.50 0.50 vcmpeqpd (%rax), %ymm1, %ymm2
|
||||
# CHECK-NEXT: - - - 1.00 - - - - vcmpeqps %xmm0, %xmm1, %xmm2
|
||||
# CHECK-NEXT: - - - 1.00 - - 0.50 0.50 vcmpeqps (%rax), %xmm1, %xmm2
|
||||
# CHECK-NEXT: - - - 1.00 - - - - vcmpeqps %ymm0, %ymm1, %ymm2
|
||||
# CHECK-NEXT: - - - 1.00 - - 0.50 0.50 vcmpeqps (%rax), %ymm1, %ymm2
|
||||
# CHECK-NEXT: - - - 1.00 - - - - vcmpeqsd %xmm0, %xmm1, %xmm2
|
||||
# CHECK-NEXT: - - - 1.00 - - 0.50 0.50 vcmpeqsd (%rax), %xmm1, %xmm2
|
||||
# CHECK-NEXT: - - - 1.00 - - - - vcmpeqss %xmm0, %xmm1, %xmm2
|
||||
# CHECK-NEXT: - - - 1.00 - - 0.50 0.50 vcmpeqss (%rax), %xmm1, %xmm2
|
||||
# CHECK-NEXT: - - 1.00 1.00 - - - - vcomisd %xmm0, %xmm1
|
||||
# CHECK-NEXT: - - 1.00 1.00 - - 0.50 0.50 vcomisd (%rax), %xmm1
|
||||
# CHECK-NEXT: - - 1.00 1.00 - - - - vcomiss %xmm0, %xmm1
|
||||
|
@ -202,10 +202,10 @@ xorps (%rax), %xmm2
|
||||
# CHECK-NEXT: 2 7 1.00 * andnps (%rax), %xmm2
|
||||
# CHECK-NEXT: 1 1 1.00 andps %xmm0, %xmm2
|
||||
# CHECK-NEXT: 2 7 1.00 * andps (%rax), %xmm2
|
||||
# CHECK-NEXT: 1 3 1.00 cmpps $0, %xmm0, %xmm2
|
||||
# CHECK-NEXT: 2 9 1.00 * cmpps $0, (%rax), %xmm2
|
||||
# CHECK-NEXT: 1 3 1.00 cmpss $0, %xmm0, %xmm2
|
||||
# CHECK-NEXT: 2 9 1.00 * cmpss $0, (%rax), %xmm2
|
||||
# CHECK-NEXT: 1 3 1.00 cmpeqps %xmm0, %xmm2
|
||||
# CHECK-NEXT: 2 9 1.00 * cmpeqps (%rax), %xmm2
|
||||
# CHECK-NEXT: 1 3 1.00 cmpeqss %xmm0, %xmm2
|
||||
# CHECK-NEXT: 2 9 1.00 * cmpeqss (%rax), %xmm2
|
||||
# CHECK-NEXT: 2 2 1.00 comiss %xmm0, %xmm1
|
||||
# CHECK-NEXT: 3 8 1.00 * comiss (%rax), %xmm1
|
||||
# CHECK-NEXT: 1 3 1.00 cvtpi2ps %mm0, %xmm2
|
||||
@ -343,10 +343,10 @@ xorps (%rax), %xmm2
|
||||
# CHECK-NEXT: - - - - - 1.00 0.50 0.50 andnps (%rax), %xmm2
|
||||
# CHECK-NEXT: - - - - - 1.00 - - andps %xmm0, %xmm2
|
||||
# CHECK-NEXT: - - - - - 1.00 0.50 0.50 andps (%rax), %xmm2
|
||||
# CHECK-NEXT: - - - 1.00 - - - - cmpps $0, %xmm0, %xmm2
|
||||
# CHECK-NEXT: - - - 1.00 - - 0.50 0.50 cmpps $0, (%rax), %xmm2
|
||||
# CHECK-NEXT: - - - 1.00 - - - - cmpss $0, %xmm0, %xmm2
|
||||
# CHECK-NEXT: - - - 1.00 - - 0.50 0.50 cmpss $0, (%rax), %xmm2
|
||||
# CHECK-NEXT: - - - 1.00 - - - - cmpeqps %xmm0, %xmm2
|
||||
# CHECK-NEXT: - - - 1.00 - - 0.50 0.50 cmpeqps (%rax), %xmm2
|
||||
# CHECK-NEXT: - - - 1.00 - - - - cmpeqss %xmm0, %xmm2
|
||||
# CHECK-NEXT: - - - 1.00 - - 0.50 0.50 cmpeqss (%rax), %xmm2
|
||||
# CHECK-NEXT: - - 1.00 1.00 - - - - comiss %xmm0, %xmm1
|
||||
# CHECK-NEXT: - - 1.00 1.00 - - 0.50 0.50 comiss (%rax), %xmm1
|
||||
# CHECK-NEXT: - - - 1.00 - - - - cvtpi2ps %mm0, %xmm2
|
||||
|
@ -416,10 +416,10 @@ xorpd (%rax), %xmm2
|
||||
# CHECK-NEXT: 1 1 1.00 andpd %xmm0, %xmm2
|
||||
# CHECK-NEXT: 2 7 1.00 * andpd (%rax), %xmm2
|
||||
# CHECK-NEXT: 4 5 1.00 * * U clflush (%rax)
|
||||
# CHECK-NEXT: 1 3 1.00 cmppd $0, %xmm0, %xmm2
|
||||
# CHECK-NEXT: 2 9 1.00 * cmppd $0, (%rax), %xmm2
|
||||
# CHECK-NEXT: 1 3 1.00 cmpsd $0, %xmm0, %xmm2
|
||||
# CHECK-NEXT: 2 9 1.00 * cmpsd $0, (%rax), %xmm2
|
||||
# CHECK-NEXT: 1 3 1.00 cmpeqpd %xmm0, %xmm2
|
||||
# CHECK-NEXT: 2 9 1.00 * cmpeqpd (%rax), %xmm2
|
||||
# CHECK-NEXT: 1 3 1.00 cmpeqsd %xmm0, %xmm2
|
||||
# CHECK-NEXT: 2 9 1.00 * cmpeqsd (%rax), %xmm2
|
||||
# CHECK-NEXT: 2 2 1.00 comisd %xmm0, %xmm1
|
||||
# CHECK-NEXT: 3 8 1.00 * comisd (%rax), %xmm1
|
||||
# CHECK-NEXT: 2 4 1.00 cvtdq2pd %xmm0, %xmm2
|
||||
@ -700,10 +700,10 @@ xorpd (%rax), %xmm2
|
||||
# CHECK-NEXT: - - - - - 1.00 - - andpd %xmm0, %xmm2
|
||||
# CHECK-NEXT: - - - - - 1.00 0.50 0.50 andpd (%rax), %xmm2
|
||||
# CHECK-NEXT: - - 0.50 0.50 1.00 1.00 0.50 0.50 clflush (%rax)
|
||||
# CHECK-NEXT: - - - 1.00 - - - - cmppd $0, %xmm0, %xmm2
|
||||
# CHECK-NEXT: - - - 1.00 - - 0.50 0.50 cmppd $0, (%rax), %xmm2
|
||||
# CHECK-NEXT: - - - 1.00 - - - - cmpsd $0, %xmm0, %xmm2
|
||||
# CHECK-NEXT: - - - 1.00 - - 0.50 0.50 cmpsd $0, (%rax), %xmm2
|
||||
# CHECK-NEXT: - - - 1.00 - - - - cmpeqpd %xmm0, %xmm2
|
||||
# CHECK-NEXT: - - - 1.00 - - 0.50 0.50 cmpeqpd (%rax), %xmm2
|
||||
# CHECK-NEXT: - - - 1.00 - - - - cmpeqsd %xmm0, %xmm2
|
||||
# CHECK-NEXT: - - - 1.00 - - 0.50 0.50 cmpeqsd (%rax), %xmm2
|
||||
# CHECK-NEXT: - - 1.00 1.00 - - - - comisd %xmm0, %xmm1
|
||||
# CHECK-NEXT: - - 1.00 1.00 - - 0.50 0.50 comisd (%rax), %xmm1
|
||||
# CHECK-NEXT: - - - 1.00 - 1.00 - - cvtdq2pd %xmm0, %xmm2
|
||||
|
@ -1098,18 +1098,18 @@ vzeroupper
|
||||
# CHECK-NEXT: 1 7 0.50 * vbroadcastsd (%rax), %ymm2
|
||||
# CHECK-NEXT: 1 6 0.50 * vbroadcastss (%rax), %xmm2
|
||||
# CHECK-NEXT: 1 7 0.50 * vbroadcastss (%rax), %ymm2
|
||||
# CHECK-NEXT: 1 3 1.00 vcmppd $0, %xmm0, %xmm1, %xmm2
|
||||
# CHECK-NEXT: 2 9 1.00 * vcmppd $0, (%rax), %xmm1, %xmm2
|
||||
# CHECK-NEXT: 1 3 1.00 vcmppd $0, %ymm0, %ymm1, %ymm2
|
||||
# CHECK-NEXT: 2 10 1.00 * vcmppd $0, (%rax), %ymm1, %ymm2
|
||||
# CHECK-NEXT: 1 3 1.00 vcmpps $0, %xmm0, %xmm1, %xmm2
|
||||
# CHECK-NEXT: 2 9 1.00 * vcmpps $0, (%rax), %xmm1, %xmm2
|
||||
# CHECK-NEXT: 1 3 1.00 vcmpps $0, %ymm0, %ymm1, %ymm2
|
||||
# CHECK-NEXT: 2 10 1.00 * vcmpps $0, (%rax), %ymm1, %ymm2
|
||||
# CHECK-NEXT: 1 3 1.00 vcmpsd $0, %xmm0, %xmm1, %xmm2
|
||||
# CHECK-NEXT: 2 8 1.00 * vcmpsd $0, (%rax), %xmm1, %xmm2
|
||||
# CHECK-NEXT: 1 3 1.00 vcmpss $0, %xmm0, %xmm1, %xmm2
|
||||
# CHECK-NEXT: 2 8 1.00 * vcmpss $0, (%rax), %xmm1, %xmm2
|
||||
# CHECK-NEXT: 1 3 1.00 vcmpeqpd %xmm0, %xmm1, %xmm2
|
||||
# CHECK-NEXT: 2 9 1.00 * vcmpeqpd (%rax), %xmm1, %xmm2
|
||||
# CHECK-NEXT: 1 3 1.00 vcmpeqpd %ymm0, %ymm1, %ymm2
|
||||
# CHECK-NEXT: 2 10 1.00 * vcmpeqpd (%rax), %ymm1, %ymm2
|
||||
# CHECK-NEXT: 1 3 1.00 vcmpeqps %xmm0, %xmm1, %xmm2
|
||||
# CHECK-NEXT: 2 9 1.00 * vcmpeqps (%rax), %xmm1, %xmm2
|
||||
# CHECK-NEXT: 1 3 1.00 vcmpeqps %ymm0, %ymm1, %ymm2
|
||||
# CHECK-NEXT: 2 10 1.00 * vcmpeqps (%rax), %ymm1, %ymm2
|
||||
# CHECK-NEXT: 1 3 1.00 vcmpeqsd %xmm0, %xmm1, %xmm2
|
||||
# CHECK-NEXT: 2 8 1.00 * vcmpeqsd (%rax), %xmm1, %xmm2
|
||||
# CHECK-NEXT: 1 3 1.00 vcmpeqss %xmm0, %xmm1, %xmm2
|
||||
# CHECK-NEXT: 2 8 1.00 * vcmpeqss (%rax), %xmm1, %xmm2
|
||||
# CHECK-NEXT: 1 3 1.00 vcomisd %xmm0, %xmm1
|
||||
# CHECK-NEXT: 2 8 1.00 * vcomisd (%rax), %xmm1
|
||||
# CHECK-NEXT: 1 3 1.00 vcomiss %xmm0, %xmm1
|
||||
@ -1808,18 +1808,18 @@ vzeroupper
|
||||
# CHECK-NEXT: - - - - 0.50 0.50 - - - - vbroadcastsd (%rax), %ymm2
|
||||
# CHECK-NEXT: - - - - 0.50 0.50 - - - - vbroadcastss (%rax), %xmm2
|
||||
# CHECK-NEXT: - - - - 0.50 0.50 - - - - vbroadcastss (%rax), %ymm2
|
||||
# CHECK-NEXT: - - - 1.00 - - - - - - vcmppd $0, %xmm0, %xmm1, %xmm2
|
||||
# CHECK-NEXT: - - - 1.00 0.50 0.50 - - - - vcmppd $0, (%rax), %xmm1, %xmm2
|
||||
# CHECK-NEXT: - - - 1.00 - - - - - - vcmppd $0, %ymm0, %ymm1, %ymm2
|
||||
# CHECK-NEXT: - - - 1.00 0.50 0.50 - - - - vcmppd $0, (%rax), %ymm1, %ymm2
|
||||
# CHECK-NEXT: - - - 1.00 - - - - - - vcmpps $0, %xmm0, %xmm1, %xmm2
|
||||
# CHECK-NEXT: - - - 1.00 0.50 0.50 - - - - vcmpps $0, (%rax), %xmm1, %xmm2
|
||||
# CHECK-NEXT: - - - 1.00 - - - - - - vcmpps $0, %ymm0, %ymm1, %ymm2
|
||||
# CHECK-NEXT: - - - 1.00 0.50 0.50 - - - - vcmpps $0, (%rax), %ymm1, %ymm2
|
||||
# CHECK-NEXT: - - - 1.00 - - - - - - vcmpsd $0, %xmm0, %xmm1, %xmm2
|
||||
# CHECK-NEXT: - - - 1.00 0.50 0.50 - - - - vcmpsd $0, (%rax), %xmm1, %xmm2
|
||||
# CHECK-NEXT: - - - 1.00 - - - - - - vcmpss $0, %xmm0, %xmm1, %xmm2
|
||||
# CHECK-NEXT: - - - 1.00 0.50 0.50 - - - - vcmpss $0, (%rax), %xmm1, %xmm2
|
||||
# CHECK-NEXT: - - - 1.00 - - - - - - vcmpeqpd %xmm0, %xmm1, %xmm2
|
||||
# CHECK-NEXT: - - - 1.00 0.50 0.50 - - - - vcmpeqpd (%rax), %xmm1, %xmm2
|
||||
# CHECK-NEXT: - - - 1.00 - - - - - - vcmpeqpd %ymm0, %ymm1, %ymm2
|
||||
# CHECK-NEXT: - - - 1.00 0.50 0.50 - - - - vcmpeqpd (%rax), %ymm1, %ymm2
|
||||
# CHECK-NEXT: - - - 1.00 - - - - - - vcmpeqps %xmm0, %xmm1, %xmm2
|
||||
# CHECK-NEXT: - - - 1.00 0.50 0.50 - - - - vcmpeqps (%rax), %xmm1, %xmm2
|
||||
# CHECK-NEXT: - - - 1.00 - - - - - - vcmpeqps %ymm0, %ymm1, %ymm2
|
||||
# CHECK-NEXT: - - - 1.00 0.50 0.50 - - - - vcmpeqps (%rax), %ymm1, %ymm2
|
||||
# CHECK-NEXT: - - - 1.00 - - - - - - vcmpeqsd %xmm0, %xmm1, %xmm2
|
||||
# CHECK-NEXT: - - - 1.00 0.50 0.50 - - - - vcmpeqsd (%rax), %xmm1, %xmm2
|
||||
# CHECK-NEXT: - - - 1.00 - - - - - - vcmpeqss %xmm0, %xmm1, %xmm2
|
||||
# CHECK-NEXT: - - - 1.00 0.50 0.50 - - - - vcmpeqss (%rax), %xmm1, %xmm2
|
||||
# CHECK-NEXT: - - - 1.00 - - - - - - vcomisd %xmm0, %xmm1
|
||||
# CHECK-NEXT: - - - 1.00 0.50 0.50 - - - - vcomisd (%rax), %xmm1
|
||||
# CHECK-NEXT: - - - 1.00 - - - - - - vcomiss %xmm0, %xmm1
|
||||
|
@ -202,10 +202,10 @@ xorps (%rax), %xmm2
|
||||
# CHECK-NEXT: 2 7 1.00 * andnps (%rax), %xmm2
|
||||
# CHECK-NEXT: 1 1 1.00 andps %xmm0, %xmm2
|
||||
# CHECK-NEXT: 2 7 1.00 * andps (%rax), %xmm2
|
||||
# CHECK-NEXT: 1 3 1.00 cmpps $0, %xmm0, %xmm2
|
||||
# CHECK-NEXT: 2 9 1.00 * cmpps $0, (%rax), %xmm2
|
||||
# CHECK-NEXT: 1 3 1.00 cmpss $0, %xmm0, %xmm2
|
||||
# CHECK-NEXT: 2 8 1.00 * cmpss $0, (%rax), %xmm2
|
||||
# CHECK-NEXT: 1 3 1.00 cmpeqps %xmm0, %xmm2
|
||||
# CHECK-NEXT: 2 9 1.00 * cmpeqps (%rax), %xmm2
|
||||
# CHECK-NEXT: 1 3 1.00 cmpeqss %xmm0, %xmm2
|
||||
# CHECK-NEXT: 2 8 1.00 * cmpeqss (%rax), %xmm2
|
||||
# CHECK-NEXT: 1 3 1.00 comiss %xmm0, %xmm1
|
||||
# CHECK-NEXT: 2 8 1.00 * comiss (%rax), %xmm1
|
||||
# CHECK-NEXT: 1 3 1.00 cvtpi2ps %mm0, %xmm2
|
||||
@ -345,10 +345,10 @@ xorps (%rax), %xmm2
|
||||
# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - andnps (%rax), %xmm2
|
||||
# CHECK-NEXT: - - - - - - - 1.00 - - andps %xmm0, %xmm2
|
||||
# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - andps (%rax), %xmm2
|
||||
# CHECK-NEXT: - - - 1.00 - - - - - - cmpps $0, %xmm0, %xmm2
|
||||
# CHECK-NEXT: - - - 1.00 0.50 0.50 - - - - cmpps $0, (%rax), %xmm2
|
||||
# CHECK-NEXT: - - - 1.00 - - - - - - cmpss $0, %xmm0, %xmm2
|
||||
# CHECK-NEXT: - - - 1.00 0.50 0.50 - - - - cmpss $0, (%rax), %xmm2
|
||||
# CHECK-NEXT: - - - 1.00 - - - - - - cmpeqps %xmm0, %xmm2
|
||||
# CHECK-NEXT: - - - 1.00 0.50 0.50 - - - - cmpeqps (%rax), %xmm2
|
||||
# CHECK-NEXT: - - - 1.00 - - - - - - cmpeqss %xmm0, %xmm2
|
||||
# CHECK-NEXT: - - - 1.00 0.50 0.50 - - - - cmpeqss (%rax), %xmm2
|
||||
# CHECK-NEXT: - - - 1.00 - - - - - - comiss %xmm0, %xmm1
|
||||
# CHECK-NEXT: - - - 1.00 0.50 0.50 - - - - comiss (%rax), %xmm1
|
||||
# CHECK-NEXT: - - - 1.00 - - - - - - cvtpi2ps %mm0, %xmm2
|
||||
|
@ -416,10 +416,10 @@ xorpd (%rax), %xmm2
|
||||
# CHECK-NEXT: 1 1 1.00 andpd %xmm0, %xmm2
|
||||
# CHECK-NEXT: 2 7 1.00 * andpd (%rax), %xmm2
|
||||
# CHECK-NEXT: 2 2 1.00 * * U clflush (%rax)
|
||||
# CHECK-NEXT: 1 3 1.00 cmppd $0, %xmm0, %xmm2
|
||||
# CHECK-NEXT: 2 9 1.00 * cmppd $0, (%rax), %xmm2
|
||||
# CHECK-NEXT: 1 3 1.00 cmpsd $0, %xmm0, %xmm2
|
||||
# CHECK-NEXT: 2 8 1.00 * cmpsd $0, (%rax), %xmm2
|
||||
# CHECK-NEXT: 1 3 1.00 cmpeqpd %xmm0, %xmm2
|
||||
# CHECK-NEXT: 2 9 1.00 * cmpeqpd (%rax), %xmm2
|
||||
# CHECK-NEXT: 1 3 1.00 cmpeqsd %xmm0, %xmm2
|
||||
# CHECK-NEXT: 2 8 1.00 * cmpeqsd (%rax), %xmm2
|
||||
# CHECK-NEXT: 1 3 1.00 comisd %xmm0, %xmm1
|
||||
# CHECK-NEXT: 2 8 1.00 * comisd (%rax), %xmm1
|
||||
# CHECK-NEXT: 2 4 1.00 cvtdq2pd %xmm0, %xmm2
|
||||
@ -702,10 +702,10 @@ xorpd (%rax), %xmm2
|
||||
# CHECK-NEXT: - - - - - - - 1.00 - - andpd %xmm0, %xmm2
|
||||
# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - andpd (%rax), %xmm2
|
||||
# CHECK-NEXT: - - 0.25 0.25 - - - 0.25 1.25 - clflush (%rax)
|
||||
# CHECK-NEXT: - - - 1.00 - - - - - - cmppd $0, %xmm0, %xmm2
|
||||
# CHECK-NEXT: - - - 1.00 0.50 0.50 - - - - cmppd $0, (%rax), %xmm2
|
||||
# CHECK-NEXT: - - - 1.00 - - - - - - cmpsd $0, %xmm0, %xmm2
|
||||
# CHECK-NEXT: - - - 1.00 0.50 0.50 - - - - cmpsd $0, (%rax), %xmm2
|
||||
# CHECK-NEXT: - - - 1.00 - - - - - - cmpeqpd %xmm0, %xmm2
|
||||
# CHECK-NEXT: - - - 1.00 0.50 0.50 - - - - cmpeqpd (%rax), %xmm2
|
||||
# CHECK-NEXT: - - - 1.00 - - - - - - cmpeqsd %xmm0, %xmm2
|
||||
# CHECK-NEXT: - - - 1.00 0.50 0.50 - - - - cmpeqsd (%rax), %xmm2
|
||||
# CHECK-NEXT: - - - 1.00 - - - - - - comisd %xmm0, %xmm1
|
||||
# CHECK-NEXT: - - - 1.00 0.50 0.50 - - - - comisd (%rax), %xmm1
|
||||
# CHECK-NEXT: - - - 1.00 - - - 1.00 - - cvtdq2pd %xmm0, %xmm2
|
||||
|
@ -202,10 +202,10 @@ xorps (%rax), %xmm2
|
||||
# CHECK-NEXT: 1 4 1.00 * andnps (%rax), %xmm2
|
||||
# CHECK-NEXT: 1 1 0.50 andps %xmm0, %xmm2
|
||||
# CHECK-NEXT: 1 4 1.00 * andps (%rax), %xmm2
|
||||
# CHECK-NEXT: 1 3 1.00 cmpps $0, %xmm0, %xmm2
|
||||
# CHECK-NEXT: 1 6 1.00 * cmpps $0, (%rax), %xmm2
|
||||
# CHECK-NEXT: 1 3 1.00 cmpss $0, %xmm0, %xmm2
|
||||
# CHECK-NEXT: 1 6 1.00 * cmpss $0, (%rax), %xmm2
|
||||
# CHECK-NEXT: 1 3 1.00 cmpeqps %xmm0, %xmm2
|
||||
# CHECK-NEXT: 1 6 1.00 * cmpeqps (%rax), %xmm2
|
||||
# CHECK-NEXT: 1 3 1.00 cmpeqss %xmm0, %xmm2
|
||||
# CHECK-NEXT: 1 6 1.00 * cmpeqss (%rax), %xmm2
|
||||
# CHECK-NEXT: 1 3 1.00 comiss %xmm0, %xmm1
|
||||
# CHECK-NEXT: 1 6 1.00 * comiss (%rax), %xmm1
|
||||
# CHECK-NEXT: 1 4 0.50 cvtpi2ps %mm0, %xmm2
|
||||
@ -343,10 +343,10 @@ xorps (%rax), %xmm2
|
||||
# CHECK-NEXT: - - - 0.50 0.50 - - 1.00 andnps (%rax), %xmm2
|
||||
# CHECK-NEXT: - - - 0.50 0.50 - - - andps %xmm0, %xmm2
|
||||
# CHECK-NEXT: - - - 0.50 0.50 - - 1.00 andps (%rax), %xmm2
|
||||
# CHECK-NEXT: - - - - 1.00 - - - cmpps $0, %xmm0, %xmm2
|
||||
# CHECK-NEXT: - - - - 1.00 - - 1.00 cmpps $0, (%rax), %xmm2
|
||||
# CHECK-NEXT: - - - - 1.00 - - - cmpss $0, %xmm0, %xmm2
|
||||
# CHECK-NEXT: - - - - 1.00 - - 1.00 cmpss $0, (%rax), %xmm2
|
||||
# CHECK-NEXT: - - - - 1.00 - - - cmpeqps %xmm0, %xmm2
|
||||
# CHECK-NEXT: - - - - 1.00 - - 1.00 cmpeqps (%rax), %xmm2
|
||||
# CHECK-NEXT: - - - - 1.00 - - - cmpeqss %xmm0, %xmm2
|
||||
# CHECK-NEXT: - - - - 1.00 - - 1.00 cmpeqss (%rax), %xmm2
|
||||
# CHECK-NEXT: - - - - 1.00 - - - comiss %xmm0, %xmm1
|
||||
# CHECK-NEXT: - - - - 1.00 - - 1.00 comiss (%rax), %xmm1
|
||||
# CHECK-NEXT: - - - 0.50 0.50 - - - cvtpi2ps %mm0, %xmm2
|
||||
|
@ -416,10 +416,10 @@ xorpd (%rax), %xmm2
|
||||
# CHECK-NEXT: 1 1 0.50 andpd %xmm0, %xmm2
|
||||
# CHECK-NEXT: 1 4 1.00 * andpd (%rax), %xmm2
|
||||
# CHECK-NEXT: 1 3 1.00 * * U clflush (%rax)
|
||||
# CHECK-NEXT: 1 3 1.00 cmppd $0, %xmm0, %xmm2
|
||||
# CHECK-NEXT: 1 6 1.00 * cmppd $0, (%rax), %xmm2
|
||||
# CHECK-NEXT: 1 3 1.00 cmpsd $0, %xmm0, %xmm2
|
||||
# CHECK-NEXT: 1 6 1.00 * cmpsd $0, (%rax), %xmm2
|
||||
# CHECK-NEXT: 1 3 1.00 cmpeqpd %xmm0, %xmm2
|
||||
# CHECK-NEXT: 1 6 1.00 * cmpeqpd (%rax), %xmm2
|
||||
# CHECK-NEXT: 1 3 1.00 cmpeqsd %xmm0, %xmm2
|
||||
# CHECK-NEXT: 1 6 1.00 * cmpeqsd (%rax), %xmm2
|
||||
# CHECK-NEXT: 1 3 1.00 comisd %xmm0, %xmm1
|
||||
# CHECK-NEXT: 1 6 1.00 * comisd (%rax), %xmm1
|
||||
# CHECK-NEXT: 1 4 0.50 cvtdq2pd %xmm0, %xmm2
|
||||
@ -700,10 +700,10 @@ xorpd (%rax), %xmm2
|
||||
# CHECK-NEXT: - - - 0.50 0.50 - - - andpd %xmm0, %xmm2
|
||||
# CHECK-NEXT: - - - 0.50 0.50 - - 1.00 andpd (%rax), %xmm2
|
||||
# CHECK-NEXT: - - - - - - - 1.00 clflush (%rax)
|
||||
# CHECK-NEXT: - - - - 1.00 - - - cmppd $0, %xmm0, %xmm2
|
||||
# CHECK-NEXT: - - - - 1.00 - - 1.00 cmppd $0, (%rax), %xmm2
|
||||
# CHECK-NEXT: - - - - 1.00 - - - cmpsd $0, %xmm0, %xmm2
|
||||
# CHECK-NEXT: - - - - 1.00 - - 1.00 cmpsd $0, (%rax), %xmm2
|
||||
# CHECK-NEXT: - - - - 1.00 - - - cmpeqpd %xmm0, %xmm2
|
||||
# CHECK-NEXT: - - - - 1.00 - - 1.00 cmpeqpd (%rax), %xmm2
|
||||
# CHECK-NEXT: - - - - 1.00 - - - cmpeqsd %xmm0, %xmm2
|
||||
# CHECK-NEXT: - - - - 1.00 - - 1.00 cmpeqsd (%rax), %xmm2
|
||||
# CHECK-NEXT: - - - - 1.00 - - - comisd %xmm0, %xmm1
|
||||
# CHECK-NEXT: - - - - 1.00 - - 1.00 comisd (%rax), %xmm1
|
||||
# CHECK-NEXT: - - - 0.50 0.50 - - - cvtdq2pd %xmm0, %xmm2
|
||||
|
@ -1098,18 +1098,18 @@ vzeroupper
|
||||
# CHECK-NEXT: 1 7 0.50 * vbroadcastsd (%rax), %ymm2
|
||||
# CHECK-NEXT: 1 6 0.50 * vbroadcastss (%rax), %xmm2
|
||||
# CHECK-NEXT: 1 7 0.50 * vbroadcastss (%rax), %ymm2
|
||||
# CHECK-NEXT: 1 3 1.00 vcmppd $0, %xmm0, %xmm1, %xmm2
|
||||
# CHECK-NEXT: 2 9 1.00 * vcmppd $0, (%rax), %xmm1, %xmm2
|
||||
# CHECK-NEXT: 1 3 1.00 vcmppd $0, %ymm0, %ymm1, %ymm2
|
||||
# CHECK-NEXT: 2 10 1.00 * vcmppd $0, (%rax), %ymm1, %ymm2
|
||||
# CHECK-NEXT: 1 3 1.00 vcmpps $0, %xmm0, %xmm1, %xmm2
|
||||
# CHECK-NEXT: 2 9 1.00 * vcmpps $0, (%rax), %xmm1, %xmm2
|
||||
# CHECK-NEXT: 1 3 1.00 vcmpps $0, %ymm0, %ymm1, %ymm2
|
||||
# CHECK-NEXT: 2 10 1.00 * vcmpps $0, (%rax), %ymm1, %ymm2
|
||||
# CHECK-NEXT: 1 3 1.00 vcmpsd $0, %xmm0, %xmm1, %xmm2
|
||||
# CHECK-NEXT: 2 9 1.00 * vcmpsd $0, (%rax), %xmm1, %xmm2
|
||||
# CHECK-NEXT: 1 3 1.00 vcmpss $0, %xmm0, %xmm1, %xmm2
|
||||
# CHECK-NEXT: 2 9 1.00 * vcmpss $0, (%rax), %xmm1, %xmm2
|
||||
# CHECK-NEXT: 1 3 1.00 vcmpeqpd %xmm0, %xmm1, %xmm2
|
||||
# CHECK-NEXT: 2 9 1.00 * vcmpeqpd (%rax), %xmm1, %xmm2
|
||||
# CHECK-NEXT: 1 3 1.00 vcmpeqpd %ymm0, %ymm1, %ymm2
|
||||
# CHECK-NEXT: 2 10 1.00 * vcmpeqpd (%rax), %ymm1, %ymm2
|
||||
# CHECK-NEXT: 1 3 1.00 vcmpeqps %xmm0, %xmm1, %xmm2
|
||||
# CHECK-NEXT: 2 9 1.00 * vcmpeqps (%rax), %xmm1, %xmm2
|
||||
# CHECK-NEXT: 1 3 1.00 vcmpeqps %ymm0, %ymm1, %ymm2
|
||||
# CHECK-NEXT: 2 10 1.00 * vcmpeqps (%rax), %ymm1, %ymm2
|
||||
# CHECK-NEXT: 1 3 1.00 vcmpeqsd %xmm0, %xmm1, %xmm2
|
||||
# CHECK-NEXT: 2 9 1.00 * vcmpeqsd (%rax), %xmm1, %xmm2
|
||||
# CHECK-NEXT: 1 3 1.00 vcmpeqss %xmm0, %xmm1, %xmm2
|
||||
# CHECK-NEXT: 2 9 1.00 * vcmpeqss (%rax), %xmm1, %xmm2
|
||||
# CHECK-NEXT: 2 2 1.00 vcomisd %xmm0, %xmm1
|
||||
# CHECK-NEXT: 3 8 1.00 * vcomisd (%rax), %xmm1
|
||||
# CHECK-NEXT: 2 2 1.00 vcomiss %xmm0, %xmm1
|
||||
@ -1806,18 +1806,18 @@ vzeroupper
|
||||
# CHECK-NEXT: - - - - - - 0.50 0.50 vbroadcastsd (%rax), %ymm2
|
||||
# CHECK-NEXT: - - - - - - 0.50 0.50 vbroadcastss (%rax), %xmm2
|
||||
# CHECK-NEXT: - - - - - - 0.50 0.50 vbroadcastss (%rax), %ymm2
|
||||
# CHECK-NEXT: - - - 1.00 - - - - vcmppd $0, %xmm0, %xmm1, %xmm2
|
||||
# CHECK-NEXT: - - - 1.00 - - 0.50 0.50 vcmppd $0, (%rax), %xmm1, %xmm2
|
||||
# CHECK-NEXT: - - - 1.00 - - - - vcmppd $0, %ymm0, %ymm1, %ymm2
|
||||
# CHECK-NEXT: - - - 1.00 - - 0.50 0.50 vcmppd $0, (%rax), %ymm1, %ymm2
|
||||
# CHECK-NEXT: - - - 1.00 - - - - vcmpps $0, %xmm0, %xmm1, %xmm2
|
||||
# CHECK-NEXT: - - - 1.00 - - 0.50 0.50 vcmpps $0, (%rax), %xmm1, %xmm2
|
||||
# CHECK-NEXT: - - - 1.00 - - - - vcmpps $0, %ymm0, %ymm1, %ymm2
|
||||
# CHECK-NEXT: - - - 1.00 - - 0.50 0.50 vcmpps $0, (%rax), %ymm1, %ymm2
|
||||
# CHECK-NEXT: - - - 1.00 - - - - vcmpsd $0, %xmm0, %xmm1, %xmm2
|
||||
# CHECK-NEXT: - - - 1.00 - - 0.50 0.50 vcmpsd $0, (%rax), %xmm1, %xmm2
|
||||
# CHECK-NEXT: - - - 1.00 - - - - vcmpss $0, %xmm0, %xmm1, %xmm2
|
||||
# CHECK-NEXT: - - - 1.00 - - 0.50 0.50 vcmpss $0, (%rax), %xmm1, %xmm2
|
||||
# CHECK-NEXT: - - - 1.00 - - - - vcmpeqpd %xmm0, %xmm1, %xmm2
|
||||
# CHECK-NEXT: - - - 1.00 - - 0.50 0.50 vcmpeqpd (%rax), %xmm1, %xmm2
|
||||
# CHECK-NEXT: - - - 1.00 - - - - vcmpeqpd %ymm0, %ymm1, %ymm2
|
||||
# CHECK-NEXT: - - - 1.00 - - 0.50 0.50 vcmpeqpd (%rax), %ymm1, %ymm2
|
||||
# CHECK-NEXT: - - - 1.00 - - - - vcmpeqps %xmm0, %xmm1, %xmm2
|
||||
# CHECK-NEXT: - - - 1.00 - - 0.50 0.50 vcmpeqps (%rax), %xmm1, %xmm2
|
||||
# CHECK-NEXT: - - - 1.00 - - - - vcmpeqps %ymm0, %ymm1, %ymm2
|
||||
# CHECK-NEXT: - - - 1.00 - - 0.50 0.50 vcmpeqps (%rax), %ymm1, %ymm2
|
||||
# CHECK-NEXT: - - - 1.00 - - - - vcmpeqsd %xmm0, %xmm1, %xmm2
|
||||
# CHECK-NEXT: - - - 1.00 - - 0.50 0.50 vcmpeqsd (%rax), %xmm1, %xmm2
|
||||
# CHECK-NEXT: - - - 1.00 - - - - vcmpeqss %xmm0, %xmm1, %xmm2
|
||||
# CHECK-NEXT: - - - 1.00 - - 0.50 0.50 vcmpeqss (%rax), %xmm1, %xmm2
|
||||
# CHECK-NEXT: - - 1.00 1.00 - - - - vcomisd %xmm0, %xmm1
|
||||
# CHECK-NEXT: - - 1.00 1.00 - - 0.50 0.50 vcomisd (%rax), %xmm1
|
||||
# CHECK-NEXT: - - 1.00 1.00 - - - - vcomiss %xmm0, %xmm1
|
||||
|
@ -202,10 +202,10 @@ xorps (%rax), %xmm2
|
||||
# CHECK-NEXT: 2 7 1.00 * andnps (%rax), %xmm2
|
||||
# CHECK-NEXT: 1 1 1.00 andps %xmm0, %xmm2
|
||||
# CHECK-NEXT: 2 7 1.00 * andps (%rax), %xmm2
|
||||
# CHECK-NEXT: 1 3 1.00 cmpps $0, %xmm0, %xmm2
|
||||
# CHECK-NEXT: 2 9 1.00 * cmpps $0, (%rax), %xmm2
|
||||
# CHECK-NEXT: 1 3 1.00 cmpss $0, %xmm0, %xmm2
|
||||
# CHECK-NEXT: 2 9 1.00 * cmpss $0, (%rax), %xmm2
|
||||
# CHECK-NEXT: 1 3 1.00 cmpeqps %xmm0, %xmm2
|
||||
# CHECK-NEXT: 2 9 1.00 * cmpeqps (%rax), %xmm2
|
||||
# CHECK-NEXT: 1 3 1.00 cmpeqss %xmm0, %xmm2
|
||||
# CHECK-NEXT: 2 9 1.00 * cmpeqss (%rax), %xmm2
|
||||
# CHECK-NEXT: 2 2 1.00 comiss %xmm0, %xmm1
|
||||
# CHECK-NEXT: 3 8 1.00 * comiss (%rax), %xmm1
|
||||
# CHECK-NEXT: 1 3 1.00 cvtpi2ps %mm0, %xmm2
|
||||
@ -343,10 +343,10 @@ xorps (%rax), %xmm2
|
||||
# CHECK-NEXT: - - - - - 1.00 0.50 0.50 andnps (%rax), %xmm2
|
||||
# CHECK-NEXT: - - - - - 1.00 - - andps %xmm0, %xmm2
|
||||
# CHECK-NEXT: - - - - - 1.00 0.50 0.50 andps (%rax), %xmm2
|
||||
# CHECK-NEXT: - - - 1.00 - - - - cmpps $0, %xmm0, %xmm2
|
||||
# CHECK-NEXT: - - - 1.00 - - 0.50 0.50 cmpps $0, (%rax), %xmm2
|
||||
# CHECK-NEXT: - - - 1.00 - - - - cmpss $0, %xmm0, %xmm2
|
||||
# CHECK-NEXT: - - - 1.00 - - 0.50 0.50 cmpss $0, (%rax), %xmm2
|
||||
# CHECK-NEXT: - - - 1.00 - - - - cmpeqps %xmm0, %xmm2
|
||||
# CHECK-NEXT: - - - 1.00 - - 0.50 0.50 cmpeqps (%rax), %xmm2
|
||||
# CHECK-NEXT: - - - 1.00 - - - - cmpeqss %xmm0, %xmm2
|
||||
# CHECK-NEXT: - - - 1.00 - - 0.50 0.50 cmpeqss (%rax), %xmm2
|
||||
# CHECK-NEXT: - - 1.00 1.00 - - - - comiss %xmm0, %xmm1
|
||||
# CHECK-NEXT: - - 1.00 1.00 - - 0.50 0.50 comiss (%rax), %xmm1
|
||||
# CHECK-NEXT: - - - 1.00 - - - - cvtpi2ps %mm0, %xmm2
|
||||
|
@ -416,10 +416,10 @@ xorpd (%rax), %xmm2
|
||||
# CHECK-NEXT: 1 1 1.00 andpd %xmm0, %xmm2
|
||||
# CHECK-NEXT: 2 7 1.00 * andpd (%rax), %xmm2
|
||||
# CHECK-NEXT: 4 5 1.00 * * U clflush (%rax)
|
||||
# CHECK-NEXT: 1 3 1.00 cmppd $0, %xmm0, %xmm2
|
||||
# CHECK-NEXT: 2 9 1.00 * cmppd $0, (%rax), %xmm2
|
||||
# CHECK-NEXT: 1 3 1.00 cmpsd $0, %xmm0, %xmm2
|
||||
# CHECK-NEXT: 2 9 1.00 * cmpsd $0, (%rax), %xmm2
|
||||
# CHECK-NEXT: 1 3 1.00 cmpeqpd %xmm0, %xmm2
|
||||
# CHECK-NEXT: 2 9 1.00 * cmpeqpd (%rax), %xmm2
|
||||
# CHECK-NEXT: 1 3 1.00 cmpeqsd %xmm0, %xmm2
|
||||
# CHECK-NEXT: 2 9 1.00 * cmpeqsd (%rax), %xmm2
|
||||
# CHECK-NEXT: 2 2 1.00 comisd %xmm0, %xmm1
|
||||
# CHECK-NEXT: 3 8 1.00 * comisd (%rax), %xmm1
|
||||
# CHECK-NEXT: 2 4 1.00 cvtdq2pd %xmm0, %xmm2
|
||||
@ -700,10 +700,10 @@ xorpd (%rax), %xmm2
|
||||
# CHECK-NEXT: - - - - - 1.00 - - andpd %xmm0, %xmm2
|
||||
# CHECK-NEXT: - - - - - 1.00 0.50 0.50 andpd (%rax), %xmm2
|
||||
# CHECK-NEXT: - - 0.50 0.50 1.00 1.00 0.50 0.50 clflush (%rax)
|
||||
# CHECK-NEXT: - - - 1.00 - - - - cmppd $0, %xmm0, %xmm2
|
||||
# CHECK-NEXT: - - - 1.00 - - 0.50 0.50 cmppd $0, (%rax), %xmm2
|
||||
# CHECK-NEXT: - - - 1.00 - - - - cmpsd $0, %xmm0, %xmm2
|
||||
# CHECK-NEXT: - - - 1.00 - - 0.50 0.50 cmpsd $0, (%rax), %xmm2
|
||||
# CHECK-NEXT: - - - 1.00 - - - - cmpeqpd %xmm0, %xmm2
|
||||
# CHECK-NEXT: - - - 1.00 - - 0.50 0.50 cmpeqpd (%rax), %xmm2
|
||||
# CHECK-NEXT: - - - 1.00 - - - - cmpeqsd %xmm0, %xmm2
|
||||
# CHECK-NEXT: - - - 1.00 - - 0.50 0.50 cmpeqsd (%rax), %xmm2
|
||||
# CHECK-NEXT: - - 1.00 1.00 - - - - comisd %xmm0, %xmm1
|
||||
# CHECK-NEXT: - - 1.00 1.00 - - 0.50 0.50 comisd (%rax), %xmm1
|
||||
# CHECK-NEXT: - - - 1.00 - 1.00 - - cvtdq2pd %xmm0, %xmm2
|
||||
|
@ -1098,18 +1098,18 @@ vzeroupper
|
||||
# CHECK-NEXT: 1 7 0.50 * vbroadcastsd (%rax), %ymm2
|
||||
# CHECK-NEXT: 1 6 0.50 * vbroadcastss (%rax), %xmm2
|
||||
# CHECK-NEXT: 1 7 0.50 * vbroadcastss (%rax), %ymm2
|
||||
# CHECK-NEXT: 1 4 0.50 vcmppd $0, %xmm0, %xmm1, %xmm2
|
||||
# CHECK-NEXT: 2 10 0.50 * vcmppd $0, (%rax), %xmm1, %xmm2
|
||||
# CHECK-NEXT: 1 4 0.50 vcmppd $0, %ymm0, %ymm1, %ymm2
|
||||
# CHECK-NEXT: 2 11 0.50 * vcmppd $0, (%rax), %ymm1, %ymm2
|
||||
# CHECK-NEXT: 1 4 0.50 vcmpps $0, %xmm0, %xmm1, %xmm2
|
||||
# CHECK-NEXT: 2 10 0.50 * vcmpps $0, (%rax), %xmm1, %xmm2
|
||||
# CHECK-NEXT: 1 4 0.50 vcmpps $0, %ymm0, %ymm1, %ymm2
|
||||
# CHECK-NEXT: 2 11 0.50 * vcmpps $0, (%rax), %ymm1, %ymm2
|
||||
# CHECK-NEXT: 1 4 0.50 vcmpsd $0, %xmm0, %xmm1, %xmm2
|
||||
# CHECK-NEXT: 2 9 0.50 * vcmpsd $0, (%rax), %xmm1, %xmm2
|
||||
# CHECK-NEXT: 1 4 0.50 vcmpss $0, %xmm0, %xmm1, %xmm2
|
||||
# CHECK-NEXT: 2 9 0.50 * vcmpss $0, (%rax), %xmm1, %xmm2
|
||||
# CHECK-NEXT: 1 4 0.50 vcmpeqpd %xmm0, %xmm1, %xmm2
|
||||
# CHECK-NEXT: 2 10 0.50 * vcmpeqpd (%rax), %xmm1, %xmm2
|
||||
# CHECK-NEXT: 1 4 0.50 vcmpeqpd %ymm0, %ymm1, %ymm2
|
||||
# CHECK-NEXT: 2 11 0.50 * vcmpeqpd (%rax), %ymm1, %ymm2
|
||||
# CHECK-NEXT: 1 4 0.50 vcmpeqps %xmm0, %xmm1, %xmm2
|
||||
# CHECK-NEXT: 2 10 0.50 * vcmpeqps (%rax), %xmm1, %xmm2
|
||||
# CHECK-NEXT: 1 4 0.50 vcmpeqps %ymm0, %ymm1, %ymm2
|
||||
# CHECK-NEXT: 2 11 0.50 * vcmpeqps (%rax), %ymm1, %ymm2
|
||||
# CHECK-NEXT: 1 4 0.50 vcmpeqsd %xmm0, %xmm1, %xmm2
|
||||
# CHECK-NEXT: 2 9 0.50 * vcmpeqsd (%rax), %xmm1, %xmm2
|
||||
# CHECK-NEXT: 1 4 0.50 vcmpeqss %xmm0, %xmm1, %xmm2
|
||||
# CHECK-NEXT: 2 9 0.50 * vcmpeqss (%rax), %xmm1, %xmm2
|
||||
# CHECK-NEXT: 1 2 1.00 vcomisd %xmm0, %xmm1
|
||||
# CHECK-NEXT: 2 7 1.00 * vcomisd (%rax), %xmm1
|
||||
# CHECK-NEXT: 1 2 1.00 vcomiss %xmm0, %xmm1
|
||||
@ -1808,18 +1808,18 @@ vzeroupper
|
||||
# CHECK-NEXT: - - - - 0.50 0.50 - - - - vbroadcastsd (%rax), %ymm2
|
||||
# CHECK-NEXT: - - - - 0.50 0.50 - - - - vbroadcastss (%rax), %xmm2
|
||||
# CHECK-NEXT: - - - - 0.50 0.50 - - - - vbroadcastss (%rax), %ymm2
|
||||
# CHECK-NEXT: - - 0.50 0.50 - - - - - - vcmppd $0, %xmm0, %xmm1, %xmm2
|
||||
# CHECK-NEXT: - - 0.50 0.50 0.50 0.50 - - - - vcmppd $0, (%rax), %xmm1, %xmm2
|
||||
# CHECK-NEXT: - - 0.50 0.50 - - - - - - vcmppd $0, %ymm0, %ymm1, %ymm2
|
||||
# CHECK-NEXT: - - 0.50 0.50 0.50 0.50 - - - - vcmppd $0, (%rax), %ymm1, %ymm2
|
||||
# CHECK-NEXT: - - 0.50 0.50 - - - - - - vcmpps $0, %xmm0, %xmm1, %xmm2
|
||||
# CHECK-NEXT: - - 0.50 0.50 0.50 0.50 - - - - vcmpps $0, (%rax), %xmm1, %xmm2
|
||||
# CHECK-NEXT: - - 0.50 0.50 - - - - - - vcmpps $0, %ymm0, %ymm1, %ymm2
|
||||
# CHECK-NEXT: - - 0.50 0.50 0.50 0.50 - - - - vcmpps $0, (%rax), %ymm1, %ymm2
|
||||
# CHECK-NEXT: - - 0.50 0.50 - - - - - - vcmpsd $0, %xmm0, %xmm1, %xmm2
|
||||
# CHECK-NEXT: - - 0.50 0.50 0.50 0.50 - - - - vcmpsd $0, (%rax), %xmm1, %xmm2
|
||||
# CHECK-NEXT: - - 0.50 0.50 - - - - - - vcmpss $0, %xmm0, %xmm1, %xmm2
|
||||
# CHECK-NEXT: - - 0.50 0.50 0.50 0.50 - - - - vcmpss $0, (%rax), %xmm1, %xmm2
|
||||
# CHECK-NEXT: - - 0.50 0.50 - - - - - - vcmpeqpd %xmm0, %xmm1, %xmm2
|
||||
# CHECK-NEXT: - - 0.50 0.50 0.50 0.50 - - - - vcmpeqpd (%rax), %xmm1, %xmm2
|
||||
# CHECK-NEXT: - - 0.50 0.50 - - - - - - vcmpeqpd %ymm0, %ymm1, %ymm2
|
||||
# CHECK-NEXT: - - 0.50 0.50 0.50 0.50 - - - - vcmpeqpd (%rax), %ymm1, %ymm2
|
||||
# CHECK-NEXT: - - 0.50 0.50 - - - - - - vcmpeqps %xmm0, %xmm1, %xmm2
|
||||
# CHECK-NEXT: - - 0.50 0.50 0.50 0.50 - - - - vcmpeqps (%rax), %xmm1, %xmm2
|
||||
# CHECK-NEXT: - - 0.50 0.50 - - - - - - vcmpeqps %ymm0, %ymm1, %ymm2
|
||||
# CHECK-NEXT: - - 0.50 0.50 0.50 0.50 - - - - vcmpeqps (%rax), %ymm1, %ymm2
|
||||
# CHECK-NEXT: - - 0.50 0.50 - - - - - - vcmpeqsd %xmm0, %xmm1, %xmm2
|
||||
# CHECK-NEXT: - - 0.50 0.50 0.50 0.50 - - - - vcmpeqsd (%rax), %xmm1, %xmm2
|
||||
# CHECK-NEXT: - - 0.50 0.50 - - - - - - vcmpeqss %xmm0, %xmm1, %xmm2
|
||||
# CHECK-NEXT: - - 0.50 0.50 0.50 0.50 - - - - vcmpeqss (%rax), %xmm1, %xmm2
|
||||
# CHECK-NEXT: - - 1.00 - - - - - - - vcomisd %xmm0, %xmm1
|
||||
# CHECK-NEXT: - - 1.00 - 0.50 0.50 - - - - vcomisd (%rax), %xmm1
|
||||
# CHECK-NEXT: - - 1.00 - - - - - - - vcomiss %xmm0, %xmm1
|
||||
|
@ -202,10 +202,10 @@ xorps (%rax), %xmm2
|
||||
# CHECK-NEXT: 2 7 0.50 * andnps (%rax), %xmm2
|
||||
# CHECK-NEXT: 1 1 0.33 andps %xmm0, %xmm2
|
||||
# CHECK-NEXT: 2 7 0.50 * andps (%rax), %xmm2
|
||||
# CHECK-NEXT: 1 4 0.50 cmpps $0, %xmm0, %xmm2
|
||||
# CHECK-NEXT: 2 10 0.50 * cmpps $0, (%rax), %xmm2
|
||||
# CHECK-NEXT: 1 4 0.50 cmpss $0, %xmm0, %xmm2
|
||||
# CHECK-NEXT: 2 9 0.50 * cmpss $0, (%rax), %xmm2
|
||||
# CHECK-NEXT: 1 4 0.50 cmpeqps %xmm0, %xmm2
|
||||
# CHECK-NEXT: 2 10 0.50 * cmpeqps (%rax), %xmm2
|
||||
# CHECK-NEXT: 1 4 0.50 cmpeqss %xmm0, %xmm2
|
||||
# CHECK-NEXT: 2 9 0.50 * cmpeqss (%rax), %xmm2
|
||||
# CHECK-NEXT: 1 2 1.00 comiss %xmm0, %xmm1
|
||||
# CHECK-NEXT: 2 7 1.00 * comiss (%rax), %xmm1
|
||||
# CHECK-NEXT: 2 6 2.00 cvtpi2ps %mm0, %xmm2
|
||||
@ -345,10 +345,10 @@ xorps (%rax), %xmm2
|
||||
# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - andnps (%rax), %xmm2
|
||||
# CHECK-NEXT: - - 0.33 0.33 - - - 0.33 - - andps %xmm0, %xmm2
|
||||
# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - andps (%rax), %xmm2
|
||||
# CHECK-NEXT: - - 0.50 0.50 - - - - - - cmpps $0, %xmm0, %xmm2
|
||||
# CHECK-NEXT: - - 0.50 0.50 0.50 0.50 - - - - cmpps $0, (%rax), %xmm2
|
||||
# CHECK-NEXT: - - 0.50 0.50 - - - - - - cmpss $0, %xmm0, %xmm2
|
||||
# CHECK-NEXT: - - 0.50 0.50 0.50 0.50 - - - - cmpss $0, (%rax), %xmm2
|
||||
# CHECK-NEXT: - - 0.50 0.50 - - - - - - cmpeqps %xmm0, %xmm2
|
||||
# CHECK-NEXT: - - 0.50 0.50 0.50 0.50 - - - - cmpeqps (%rax), %xmm2
|
||||
# CHECK-NEXT: - - 0.50 0.50 - - - - - - cmpeqss %xmm0, %xmm2
|
||||
# CHECK-NEXT: - - 0.50 0.50 0.50 0.50 - - - - cmpeqss (%rax), %xmm2
|
||||
# CHECK-NEXT: - - 1.00 - - - - - - - comiss %xmm0, %xmm1
|
||||
# CHECK-NEXT: - - 1.00 - 0.50 0.50 - - - - comiss (%rax), %xmm1
|
||||
# CHECK-NEXT: - - 2.00 - - - - - - - cvtpi2ps %mm0, %xmm2
|
||||
|
@ -416,10 +416,10 @@ xorpd (%rax), %xmm2
|
||||
# CHECK-NEXT: 1 1 0.33 andpd %xmm0, %xmm2
|
||||
# CHECK-NEXT: 2 7 0.50 * andpd (%rax), %xmm2
|
||||
# CHECK-NEXT: 2 2 1.00 * * U clflush (%rax)
|
||||
# CHECK-NEXT: 1 4 0.50 cmppd $0, %xmm0, %xmm2
|
||||
# CHECK-NEXT: 2 10 0.50 * cmppd $0, (%rax), %xmm2
|
||||
# CHECK-NEXT: 1 4 0.50 cmpsd $0, %xmm0, %xmm2
|
||||
# CHECK-NEXT: 2 9 0.50 * cmpsd $0, (%rax), %xmm2
|
||||
# CHECK-NEXT: 1 4 0.50 cmpeqpd %xmm0, %xmm2
|
||||
# CHECK-NEXT: 2 10 0.50 * cmpeqpd (%rax), %xmm2
|
||||
# CHECK-NEXT: 1 4 0.50 cmpeqsd %xmm0, %xmm2
|
||||
# CHECK-NEXT: 2 9 0.50 * cmpeqsd (%rax), %xmm2
|
||||
# CHECK-NEXT: 1 2 1.00 comisd %xmm0, %xmm1
|
||||
# CHECK-NEXT: 2 7 1.00 * comisd (%rax), %xmm1
|
||||
# CHECK-NEXT: 2 5 1.00 cvtdq2pd %xmm0, %xmm2
|
||||
@ -702,10 +702,10 @@ xorpd (%rax), %xmm2
|
||||
# CHECK-NEXT: - - 0.33 0.33 - - - 0.33 - - andpd %xmm0, %xmm2
|
||||
# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - andpd (%rax), %xmm2
|
||||
# CHECK-NEXT: - - 0.25 0.25 - - - 0.25 1.25 - clflush (%rax)
|
||||
# CHECK-NEXT: - - 0.50 0.50 - - - - - - cmppd $0, %xmm0, %xmm2
|
||||
# CHECK-NEXT: - - 0.50 0.50 0.50 0.50 - - - - cmppd $0, (%rax), %xmm2
|
||||
# CHECK-NEXT: - - 0.50 0.50 - - - - - - cmpsd $0, %xmm0, %xmm2
|
||||
# CHECK-NEXT: - - 0.50 0.50 0.50 0.50 - - - - cmpsd $0, (%rax), %xmm2
|
||||
# CHECK-NEXT: - - 0.50 0.50 - - - - - - cmpeqpd %xmm0, %xmm2
|
||||
# CHECK-NEXT: - - 0.50 0.50 0.50 0.50 - - - - cmpeqpd (%rax), %xmm2
|
||||
# CHECK-NEXT: - - 0.50 0.50 - - - - - - cmpeqsd %xmm0, %xmm2
|
||||
# CHECK-NEXT: - - 0.50 0.50 0.50 0.50 - - - - cmpeqsd (%rax), %xmm2
|
||||
# CHECK-NEXT: - - 1.00 - - - - - - - comisd %xmm0, %xmm1
|
||||
# CHECK-NEXT: - - 1.00 - 0.50 0.50 - - - - comisd (%rax), %xmm1
|
||||
# CHECK-NEXT: - - 1.00 - - - - 1.00 - - cvtdq2pd %xmm0, %xmm2
|
||||
|
@ -1098,18 +1098,18 @@ vzeroupper
|
||||
# CHECK-NEXT: 1 7 0.50 * vbroadcastsd (%rax), %ymm2
|
||||
# CHECK-NEXT: 1 6 0.50 * vbroadcastss (%rax), %xmm2
|
||||
# CHECK-NEXT: 1 7 0.50 * vbroadcastss (%rax), %ymm2
|
||||
# CHECK-NEXT: 1 4 0.50 vcmppd $0, %xmm0, %xmm1, %xmm2
|
||||
# CHECK-NEXT: 2 10 0.50 * vcmppd $0, (%rax), %xmm1, %xmm2
|
||||
# CHECK-NEXT: 1 4 0.50 vcmppd $0, %ymm0, %ymm1, %ymm2
|
||||
# CHECK-NEXT: 2 11 0.50 * vcmppd $0, (%rax), %ymm1, %ymm2
|
||||
# CHECK-NEXT: 1 4 0.50 vcmpps $0, %xmm0, %xmm1, %xmm2
|
||||
# CHECK-NEXT: 2 10 0.50 * vcmpps $0, (%rax), %xmm1, %xmm2
|
||||
# CHECK-NEXT: 1 4 0.50 vcmpps $0, %ymm0, %ymm1, %ymm2
|
||||
# CHECK-NEXT: 2 11 0.50 * vcmpps $0, (%rax), %ymm1, %ymm2
|
||||
# CHECK-NEXT: 1 4 0.50 vcmpsd $0, %xmm0, %xmm1, %xmm2
|
||||
# CHECK-NEXT: 2 9 0.50 * vcmpsd $0, (%rax), %xmm1, %xmm2
|
||||
# CHECK-NEXT: 1 4 0.50 vcmpss $0, %xmm0, %xmm1, %xmm2
|
||||
# CHECK-NEXT: 2 9 0.50 * vcmpss $0, (%rax), %xmm1, %xmm2
|
||||
# CHECK-NEXT: 1 4 0.50 vcmpeqpd %xmm0, %xmm1, %xmm2
|
||||
# CHECK-NEXT: 2 10 0.50 * vcmpeqpd (%rax), %xmm1, %xmm2
|
||||
# CHECK-NEXT: 1 4 0.50 vcmpeqpd %ymm0, %ymm1, %ymm2
|
||||
# CHECK-NEXT: 2 11 0.50 * vcmpeqpd (%rax), %ymm1, %ymm2
|
||||
# CHECK-NEXT: 1 4 0.50 vcmpeqps %xmm0, %xmm1, %xmm2
|
||||
# CHECK-NEXT: 2 10 0.50 * vcmpeqps (%rax), %xmm1, %xmm2
|
||||
# CHECK-NEXT: 1 4 0.50 vcmpeqps %ymm0, %ymm1, %ymm2
|
||||
# CHECK-NEXT: 2 11 0.50 * vcmpeqps (%rax), %ymm1, %ymm2
|
||||
# CHECK-NEXT: 1 4 0.50 vcmpeqsd %xmm0, %xmm1, %xmm2
|
||||
# CHECK-NEXT: 2 9 0.50 * vcmpeqsd (%rax), %xmm1, %xmm2
|
||||
# CHECK-NEXT: 1 4 0.50 vcmpeqss %xmm0, %xmm1, %xmm2
|
||||
# CHECK-NEXT: 2 9 0.50 * vcmpeqss (%rax), %xmm1, %xmm2
|
||||
# CHECK-NEXT: 1 2 1.00 vcomisd %xmm0, %xmm1
|
||||
# CHECK-NEXT: 2 7 1.00 * vcomisd (%rax), %xmm1
|
||||
# CHECK-NEXT: 1 2 1.00 vcomiss %xmm0, %xmm1
|
||||
@ -1808,18 +1808,18 @@ vzeroupper
|
||||
# CHECK-NEXT: - - - - 0.50 0.50 - - - - vbroadcastsd (%rax), %ymm2
|
||||
# CHECK-NEXT: - - - - 0.50 0.50 - - - - vbroadcastss (%rax), %xmm2
|
||||
# CHECK-NEXT: - - - - 0.50 0.50 - - - - vbroadcastss (%rax), %ymm2
|
||||
# CHECK-NEXT: - - 0.50 0.50 - - - - - - vcmppd $0, %xmm0, %xmm1, %xmm2
|
||||
# CHECK-NEXT: - - 0.50 0.50 0.50 0.50 - - - - vcmppd $0, (%rax), %xmm1, %xmm2
|
||||
# CHECK-NEXT: - - 0.50 0.50 - - - - - - vcmppd $0, %ymm0, %ymm1, %ymm2
|
||||
# CHECK-NEXT: - - 0.50 0.50 0.50 0.50 - - - - vcmppd $0, (%rax), %ymm1, %ymm2
|
||||
# CHECK-NEXT: - - 0.50 0.50 - - - - - - vcmpps $0, %xmm0, %xmm1, %xmm2
|
||||
# CHECK-NEXT: - - 0.50 0.50 0.50 0.50 - - - - vcmpps $0, (%rax), %xmm1, %xmm2
|
||||
# CHECK-NEXT: - - 0.50 0.50 - - - - - - vcmpps $0, %ymm0, %ymm1, %ymm2
|
||||
# CHECK-NEXT: - - 0.50 0.50 0.50 0.50 - - - - vcmpps $0, (%rax), %ymm1, %ymm2
|
||||
# CHECK-NEXT: - - 0.50 0.50 - - - - - - vcmpsd $0, %xmm0, %xmm1, %xmm2
|
||||
# CHECK-NEXT: - - 0.50 0.50 0.50 0.50 - - - - vcmpsd $0, (%rax), %xmm1, %xmm2
|
||||
# CHECK-NEXT: - - 0.50 0.50 - - - - - - vcmpss $0, %xmm0, %xmm1, %xmm2
|
||||
# CHECK-NEXT: - - 0.50 0.50 0.50 0.50 - - - - vcmpss $0, (%rax), %xmm1, %xmm2
|
||||
# CHECK-NEXT: - - 0.50 0.50 - - - - - - vcmpeqpd %xmm0, %xmm1, %xmm2
|
||||
# CHECK-NEXT: - - 0.50 0.50 0.50 0.50 - - - - vcmpeqpd (%rax), %xmm1, %xmm2
|
||||
# CHECK-NEXT: - - 0.50 0.50 - - - - - - vcmpeqpd %ymm0, %ymm1, %ymm2
|
||||
# CHECK-NEXT: - - 0.50 0.50 0.50 0.50 - - - - vcmpeqpd (%rax), %ymm1, %ymm2
|
||||
# CHECK-NEXT: - - 0.50 0.50 - - - - - - vcmpeqps %xmm0, %xmm1, %xmm2
|
||||
# CHECK-NEXT: - - 0.50 0.50 0.50 0.50 - - - - vcmpeqps (%rax), %xmm1, %xmm2
|
||||
# CHECK-NEXT: - - 0.50 0.50 - - - - - - vcmpeqps %ymm0, %ymm1, %ymm2
|
||||
# CHECK-NEXT: - - 0.50 0.50 0.50 0.50 - - - - vcmpeqps (%rax), %ymm1, %ymm2
|
||||
# CHECK-NEXT: - - 0.50 0.50 - - - - - - vcmpeqsd %xmm0, %xmm1, %xmm2
|
||||
# CHECK-NEXT: - - 0.50 0.50 0.50 0.50 - - - - vcmpeqsd (%rax), %xmm1, %xmm2
|
||||
# CHECK-NEXT: - - 0.50 0.50 - - - - - - vcmpeqss %xmm0, %xmm1, %xmm2
|
||||
# CHECK-NEXT: - - 0.50 0.50 0.50 0.50 - - - - vcmpeqss (%rax), %xmm1, %xmm2
|
||||
# CHECK-NEXT: - - 1.00 - - - - - - - vcomisd %xmm0, %xmm1
|
||||
# CHECK-NEXT: - - 1.00 - 0.50 0.50 - - - - vcomisd (%rax), %xmm1
|
||||
# CHECK-NEXT: - - 1.00 - - - - - - - vcomiss %xmm0, %xmm1
|
||||
|
@ -202,10 +202,10 @@ xorps (%rax), %xmm2
|
||||
# CHECK-NEXT: 2 7 0.50 * andnps (%rax), %xmm2
|
||||
# CHECK-NEXT: 1 1 0.33 andps %xmm0, %xmm2
|
||||
# CHECK-NEXT: 2 7 0.50 * andps (%rax), %xmm2
|
||||
# CHECK-NEXT: 1 4 0.50 cmpps $0, %xmm0, %xmm2
|
||||
# CHECK-NEXT: 2 10 0.50 * cmpps $0, (%rax), %xmm2
|
||||
# CHECK-NEXT: 1 4 0.50 cmpss $0, %xmm0, %xmm2
|
||||
# CHECK-NEXT: 2 9 0.50 * cmpss $0, (%rax), %xmm2
|
||||
# CHECK-NEXT: 1 4 0.50 cmpeqps %xmm0, %xmm2
|
||||
# CHECK-NEXT: 2 10 0.50 * cmpeqps (%rax), %xmm2
|
||||
# CHECK-NEXT: 1 4 0.50 cmpeqss %xmm0, %xmm2
|
||||
# CHECK-NEXT: 2 9 0.50 * cmpeqss (%rax), %xmm2
|
||||
# CHECK-NEXT: 1 2 1.00 comiss %xmm0, %xmm1
|
||||
# CHECK-NEXT: 2 7 1.00 * comiss (%rax), %xmm1
|
||||
# CHECK-NEXT: 2 6 2.00 cvtpi2ps %mm0, %xmm2
|
||||
@ -345,10 +345,10 @@ xorps (%rax), %xmm2
|
||||
# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - andnps (%rax), %xmm2
|
||||
# CHECK-NEXT: - - 0.33 0.33 - - - 0.33 - - andps %xmm0, %xmm2
|
||||
# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - andps (%rax), %xmm2
|
||||
# CHECK-NEXT: - - 0.50 0.50 - - - - - - cmpps $0, %xmm0, %xmm2
|
||||
# CHECK-NEXT: - - 0.50 0.50 0.50 0.50 - - - - cmpps $0, (%rax), %xmm2
|
||||
# CHECK-NEXT: - - 0.50 0.50 - - - - - - cmpss $0, %xmm0, %xmm2
|
||||
# CHECK-NEXT: - - 0.50 0.50 0.50 0.50 - - - - cmpss $0, (%rax), %xmm2
|
||||
# CHECK-NEXT: - - 0.50 0.50 - - - - - - cmpeqps %xmm0, %xmm2
|
||||
# CHECK-NEXT: - - 0.50 0.50 0.50 0.50 - - - - cmpeqps (%rax), %xmm2
|
||||
# CHECK-NEXT: - - 0.50 0.50 - - - - - - cmpeqss %xmm0, %xmm2
|
||||
# CHECK-NEXT: - - 0.50 0.50 0.50 0.50 - - - - cmpeqss (%rax), %xmm2
|
||||
# CHECK-NEXT: - - 1.00 - - - - - - - comiss %xmm0, %xmm1
|
||||
# CHECK-NEXT: - - 1.00 - 0.50 0.50 - - - - comiss (%rax), %xmm1
|
||||
# CHECK-NEXT: - - - - - - - 2.00 - - cvtpi2ps %mm0, %xmm2
|
||||
|
@ -416,10 +416,10 @@ xorpd (%rax), %xmm2
|
||||
# CHECK-NEXT: 1 1 0.33 andpd %xmm0, %xmm2
|
||||
# CHECK-NEXT: 2 7 0.50 * andpd (%rax), %xmm2
|
||||
# CHECK-NEXT: 2 2 1.00 * * U clflush (%rax)
|
||||
# CHECK-NEXT: 1 4 0.50 cmppd $0, %xmm0, %xmm2
|
||||
# CHECK-NEXT: 2 10 0.50 * cmppd $0, (%rax), %xmm2
|
||||
# CHECK-NEXT: 1 4 0.50 cmpsd $0, %xmm0, %xmm2
|
||||
# CHECK-NEXT: 2 9 0.50 * cmpsd $0, (%rax), %xmm2
|
||||
# CHECK-NEXT: 1 4 0.50 cmpeqpd %xmm0, %xmm2
|
||||
# CHECK-NEXT: 2 10 0.50 * cmpeqpd (%rax), %xmm2
|
||||
# CHECK-NEXT: 1 4 0.50 cmpeqsd %xmm0, %xmm2
|
||||
# CHECK-NEXT: 2 9 0.50 * cmpeqsd (%rax), %xmm2
|
||||
# CHECK-NEXT: 1 2 1.00 comisd %xmm0, %xmm1
|
||||
# CHECK-NEXT: 2 7 1.00 * comisd (%rax), %xmm1
|
||||
# CHECK-NEXT: 1 4 0.50 cvtdq2pd %xmm0, %xmm2
|
||||
@ -702,10 +702,10 @@ xorpd (%rax), %xmm2
|
||||
# CHECK-NEXT: - - 0.33 0.33 - - - 0.33 - - andpd %xmm0, %xmm2
|
||||
# CHECK-NEXT: - - 0.33 0.33 0.50 0.50 - 0.33 - - andpd (%rax), %xmm2
|
||||
# CHECK-NEXT: - - 0.25 0.25 - - - 0.25 1.25 - clflush (%rax)
|
||||
# CHECK-NEXT: - - 0.50 0.50 - - - - - - cmppd $0, %xmm0, %xmm2
|
||||
# CHECK-NEXT: - - 0.50 0.50 0.50 0.50 - - - - cmppd $0, (%rax), %xmm2
|
||||
# CHECK-NEXT: - - 0.50 0.50 - - - - - - cmpsd $0, %xmm0, %xmm2
|
||||
# CHECK-NEXT: - - 0.50 0.50 0.50 0.50 - - - - cmpsd $0, (%rax), %xmm2
|
||||
# CHECK-NEXT: - - 0.50 0.50 - - - - - - cmpeqpd %xmm0, %xmm2
|
||||
# CHECK-NEXT: - - 0.50 0.50 0.50 0.50 - - - - cmpeqpd (%rax), %xmm2
|
||||
# CHECK-NEXT: - - 0.50 0.50 - - - - - - cmpeqsd %xmm0, %xmm2
|
||||
# CHECK-NEXT: - - 0.50 0.50 0.50 0.50 - - - - cmpeqsd (%rax), %xmm2
|
||||
# CHECK-NEXT: - - 1.00 - - - - - - - comisd %xmm0, %xmm1
|
||||
# CHECK-NEXT: - - 1.00 - 0.50 0.50 - - - - comisd (%rax), %xmm1
|
||||
# CHECK-NEXT: - - 0.50 0.50 - - - - - - cvtdq2pd %xmm0, %xmm2
|
||||
|
@ -1098,18 +1098,18 @@ vzeroupper
|
||||
# CHECK-NEXT: 1 8 0.50 * vbroadcastsd (%rax), %ymm2
|
||||
# CHECK-NEXT: 1 8 0.50 * vbroadcastss (%rax), %xmm2
|
||||
# CHECK-NEXT: 1 8 0.50 * vbroadcastss (%rax), %ymm2
|
||||
# CHECK-NEXT: 1 3 1.00 vcmppd $0, %xmm0, %xmm1, %xmm2
|
||||
# CHECK-NEXT: 1 10 1.00 * vcmppd $0, (%rax), %xmm1, %xmm2
|
||||
# CHECK-NEXT: 1 3 1.00 vcmppd $0, %ymm0, %ymm1, %ymm2
|
||||
# CHECK-NEXT: 1 10 1.00 * vcmppd $0, (%rax), %ymm1, %ymm2
|
||||
# CHECK-NEXT: 1 3 1.00 vcmpps $0, %xmm0, %xmm1, %xmm2
|
||||
# CHECK-NEXT: 1 10 1.00 * vcmpps $0, (%rax), %xmm1, %xmm2
|
||||
# CHECK-NEXT: 1 3 1.00 vcmpps $0, %ymm0, %ymm1, %ymm2
|
||||
# CHECK-NEXT: 1 10 1.00 * vcmpps $0, (%rax), %ymm1, %ymm2
|
||||
# CHECK-NEXT: 1 3 1.00 vcmpsd $0, %xmm0, %xmm1, %xmm2
|
||||
# CHECK-NEXT: 1 10 1.00 * vcmpsd $0, (%rax), %xmm1, %xmm2
|
||||
# CHECK-NEXT: 1 3 1.00 vcmpss $0, %xmm0, %xmm1, %xmm2
|
||||
# CHECK-NEXT: 1 10 1.00 * vcmpss $0, (%rax), %xmm1, %xmm2
|
||||
# CHECK-NEXT: 1 3 1.00 vcmpeqpd %xmm0, %xmm1, %xmm2
|
||||
# CHECK-NEXT: 1 10 1.00 * vcmpeqpd (%rax), %xmm1, %xmm2
|
||||
# CHECK-NEXT: 1 3 1.00 vcmpeqpd %ymm0, %ymm1, %ymm2
|
||||
# CHECK-NEXT: 1 10 1.00 * vcmpeqpd (%rax), %ymm1, %ymm2
|
||||
# CHECK-NEXT: 1 3 1.00 vcmpeqps %xmm0, %xmm1, %xmm2
|
||||
# CHECK-NEXT: 1 10 1.00 * vcmpeqps (%rax), %xmm1, %xmm2
|
||||
# CHECK-NEXT: 1 3 1.00 vcmpeqps %ymm0, %ymm1, %ymm2
|
||||
# CHECK-NEXT: 1 10 1.00 * vcmpeqps (%rax), %ymm1, %ymm2
|
||||
# CHECK-NEXT: 1 3 1.00 vcmpeqsd %xmm0, %xmm1, %xmm2
|
||||
# CHECK-NEXT: 1 10 1.00 * vcmpeqsd (%rax), %xmm1, %xmm2
|
||||
# CHECK-NEXT: 1 3 1.00 vcmpeqss %xmm0, %xmm1, %xmm2
|
||||
# CHECK-NEXT: 1 10 1.00 * vcmpeqss (%rax), %xmm1, %xmm2
|
||||
# CHECK-NEXT: 1 3 1.00 vcomisd %xmm0, %xmm1
|
||||
# CHECK-NEXT: 1 10 1.00 * vcomisd (%rax), %xmm1
|
||||
# CHECK-NEXT: 1 3 1.00 vcomiss %xmm0, %xmm1
|
||||
@ -1810,18 +1810,18 @@ vzeroupper
|
||||
# CHECK-NEXT: 0.50 0.50 - - - - - - 0.50 0.50 - - vbroadcastsd (%rax), %ymm2
|
||||
# CHECK-NEXT: 0.50 0.50 - - - - - - 0.50 0.50 - - vbroadcastss (%rax), %xmm2
|
||||
# CHECK-NEXT: 0.50 0.50 - - - - - - 0.50 0.50 - - vbroadcastss (%rax), %ymm2
|
||||
# CHECK-NEXT: - - - - - - - 1.00 - - - - vcmppd $0, %xmm0, %xmm1, %xmm2
|
||||
# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - - - - vcmppd $0, (%rax), %xmm1, %xmm2
|
||||
# CHECK-NEXT: - - - - - - - 1.00 - - - - vcmppd $0, %ymm0, %ymm1, %ymm2
|
||||
# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - - - - vcmppd $0, (%rax), %ymm1, %ymm2
|
||||
# CHECK-NEXT: - - - - - - - 1.00 - - - - vcmpps $0, %xmm0, %xmm1, %xmm2
|
||||
# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - - - - vcmpps $0, (%rax), %xmm1, %xmm2
|
||||
# CHECK-NEXT: - - - - - - - 1.00 - - - - vcmpps $0, %ymm0, %ymm1, %ymm2
|
||||
# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - - - - vcmpps $0, (%rax), %ymm1, %ymm2
|
||||
# CHECK-NEXT: - - - - - - - 1.00 - - - - vcmpsd $0, %xmm0, %xmm1, %xmm2
|
||||
# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - - - - vcmpsd $0, (%rax), %xmm1, %xmm2
|
||||
# CHECK-NEXT: - - - - - - - 1.00 - - - - vcmpss $0, %xmm0, %xmm1, %xmm2
|
||||
# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - - - - vcmpss $0, (%rax), %xmm1, %xmm2
|
||||
# CHECK-NEXT: - - - - - - - 1.00 - - - - vcmpeqpd %xmm0, %xmm1, %xmm2
|
||||
# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - - - - vcmpeqpd (%rax), %xmm1, %xmm2
|
||||
# CHECK-NEXT: - - - - - - - 1.00 - - - - vcmpeqpd %ymm0, %ymm1, %ymm2
|
||||
# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - - - - vcmpeqpd (%rax), %ymm1, %ymm2
|
||||
# CHECK-NEXT: - - - - - - - 1.00 - - - - vcmpeqps %xmm0, %xmm1, %xmm2
|
||||
# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - - - - vcmpeqps (%rax), %xmm1, %xmm2
|
||||
# CHECK-NEXT: - - - - - - - 1.00 - - - - vcmpeqps %ymm0, %ymm1, %ymm2
|
||||
# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - - - - vcmpeqps (%rax), %ymm1, %ymm2
|
||||
# CHECK-NEXT: - - - - - - - 1.00 - - - - vcmpeqsd %xmm0, %xmm1, %xmm2
|
||||
# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - - - - vcmpeqsd (%rax), %xmm1, %xmm2
|
||||
# CHECK-NEXT: - - - - - - - 1.00 - - - - vcmpeqss %xmm0, %xmm1, %xmm2
|
||||
# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - - - - vcmpeqss (%rax), %xmm1, %xmm2
|
||||
# CHECK-NEXT: - - - - - - - 1.00 - - - - vcomisd %xmm0, %xmm1
|
||||
# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - - - - vcomisd (%rax), %xmm1
|
||||
# CHECK-NEXT: - - - - - - - 1.00 - - - - vcomiss %xmm0, %xmm1
|
||||
|
@ -202,10 +202,10 @@ xorps (%rax), %xmm2
|
||||
# CHECK-NEXT: 1 8 0.50 * andnps (%rax), %xmm2
|
||||
# CHECK-NEXT: 1 1 0.25 andps %xmm0, %xmm2
|
||||
# CHECK-NEXT: 1 8 0.50 * andps (%rax), %xmm2
|
||||
# CHECK-NEXT: 1 3 1.00 cmpps $0, %xmm0, %xmm2
|
||||
# CHECK-NEXT: 1 10 1.00 * cmpps $0, (%rax), %xmm2
|
||||
# CHECK-NEXT: 1 3 1.00 cmpss $0, %xmm0, %xmm2
|
||||
# CHECK-NEXT: 1 10 1.00 * cmpss $0, (%rax), %xmm2
|
||||
# CHECK-NEXT: 1 3 1.00 cmpeqps %xmm0, %xmm2
|
||||
# CHECK-NEXT: 1 10 1.00 * cmpeqps (%rax), %xmm2
|
||||
# CHECK-NEXT: 1 3 1.00 cmpeqss %xmm0, %xmm2
|
||||
# CHECK-NEXT: 1 10 1.00 * cmpeqss (%rax), %xmm2
|
||||
# CHECK-NEXT: 1 3 1.00 comiss %xmm0, %xmm1
|
||||
# CHECK-NEXT: 1 10 1.00 * comiss (%rax), %xmm1
|
||||
# CHECK-NEXT: 1 5 1.00 cvtpi2ps %mm0, %xmm2
|
||||
@ -347,10 +347,10 @@ xorps (%rax), %xmm2
|
||||
# CHECK-NEXT: 0.50 0.50 - - - - - 0.25 0.25 0.25 0.25 - andnps (%rax), %xmm2
|
||||
# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - andps %xmm0, %xmm2
|
||||
# CHECK-NEXT: 0.50 0.50 - - - - - 0.25 0.25 0.25 0.25 - andps (%rax), %xmm2
|
||||
# CHECK-NEXT: - - - - - - - 1.00 - - - - cmpps $0, %xmm0, %xmm2
|
||||
# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - - - - cmpps $0, (%rax), %xmm2
|
||||
# CHECK-NEXT: - - - - - - - 1.00 - - - - cmpss $0, %xmm0, %xmm2
|
||||
# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - - - - cmpss $0, (%rax), %xmm2
|
||||
# CHECK-NEXT: - - - - - - - 1.00 - - - - cmpeqps %xmm0, %xmm2
|
||||
# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - - - - cmpeqps (%rax), %xmm2
|
||||
# CHECK-NEXT: - - - - - - - 1.00 - - - - cmpeqss %xmm0, %xmm2
|
||||
# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - - - - cmpeqss (%rax), %xmm2
|
||||
# CHECK-NEXT: - - - - - - - 1.00 - - - - comiss %xmm0, %xmm1
|
||||
# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - - - - comiss (%rax), %xmm1
|
||||
# CHECK-NEXT: - - - - - - - - - - 1.00 - cvtpi2ps %mm0, %xmm2
|
||||
|
@ -416,10 +416,10 @@ xorpd (%rax), %xmm2
|
||||
# CHECK-NEXT: 1 1 0.25 andpd %xmm0, %xmm2
|
||||
# CHECK-NEXT: 1 8 0.50 * andpd (%rax), %xmm2
|
||||
# CHECK-NEXT: 1 8 0.50 * * U clflush (%rax)
|
||||
# CHECK-NEXT: 1 3 1.00 cmppd $0, %xmm0, %xmm2
|
||||
# CHECK-NEXT: 1 10 1.00 * cmppd $0, (%rax), %xmm2
|
||||
# CHECK-NEXT: 1 3 1.00 cmpsd $0, %xmm0, %xmm2
|
||||
# CHECK-NEXT: 1 10 1.00 * cmpsd $0, (%rax), %xmm2
|
||||
# CHECK-NEXT: 1 3 1.00 cmpeqpd %xmm0, %xmm2
|
||||
# CHECK-NEXT: 1 10 1.00 * cmpeqpd (%rax), %xmm2
|
||||
# CHECK-NEXT: 1 3 1.00 cmpeqsd %xmm0, %xmm2
|
||||
# CHECK-NEXT: 1 10 1.00 * cmpeqsd (%rax), %xmm2
|
||||
# CHECK-NEXT: 1 3 1.00 comisd %xmm0, %xmm1
|
||||
# CHECK-NEXT: 1 10 1.00 * comisd (%rax), %xmm1
|
||||
# CHECK-NEXT: 1 5 1.00 cvtdq2pd %xmm0, %xmm2
|
||||
@ -704,10 +704,10 @@ xorpd (%rax), %xmm2
|
||||
# CHECK-NEXT: - - - - - - - 0.25 0.25 0.25 0.25 - andpd %xmm0, %xmm2
|
||||
# CHECK-NEXT: 0.50 0.50 - - - - - 0.25 0.25 0.25 0.25 - andpd (%rax), %xmm2
|
||||
# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - clflush (%rax)
|
||||
# CHECK-NEXT: - - - - - - - 1.00 - - - - cmppd $0, %xmm0, %xmm2
|
||||
# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - - - - cmppd $0, (%rax), %xmm2
|
||||
# CHECK-NEXT: - - - - - - - 1.00 - - - - cmpsd $0, %xmm0, %xmm2
|
||||
# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - - - - cmpsd $0, (%rax), %xmm2
|
||||
# CHECK-NEXT: - - - - - - - 1.00 - - - - cmpeqpd %xmm0, %xmm2
|
||||
# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - - - - cmpeqpd (%rax), %xmm2
|
||||
# CHECK-NEXT: - - - - - - - 1.00 - - - - cmpeqsd %xmm0, %xmm2
|
||||
# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - - - - cmpeqsd (%rax), %xmm2
|
||||
# CHECK-NEXT: - - - - - - - 1.00 - - - - comisd %xmm0, %xmm1
|
||||
# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - - - - comisd (%rax), %xmm1
|
||||
# CHECK-NEXT: - - - - - - - - 0.50 0.50 1.00 - cvtdq2pd %xmm0, %xmm2
|
||||
|
@ -848,8 +848,6 @@ OperandType RecognizableInstr::typeFromString(const std::string &s,
|
||||
TYPE("i64i32imm_pcrel", TYPE_REL)
|
||||
TYPE("i16imm_pcrel", TYPE_REL)
|
||||
TYPE("i32imm_pcrel", TYPE_REL)
|
||||
TYPE("SSECC", TYPE_IMM3)
|
||||
TYPE("AVXCC", TYPE_IMM5)
|
||||
TYPE("AVX512RC", TYPE_IMM)
|
||||
TYPE("brtarget32", TYPE_REL)
|
||||
TYPE("brtarget16", TYPE_REL)
|
||||
@ -929,8 +927,6 @@ RecognizableInstr::immediateEncodingFromString(const std::string &s,
|
||||
ENCODING("i16imm", ENCODING_IW)
|
||||
}
|
||||
ENCODING("i32i8imm", ENCODING_IB)
|
||||
ENCODING("SSECC", ENCODING_IB)
|
||||
ENCODING("AVXCC", ENCODING_IB)
|
||||
ENCODING("AVX512RC", ENCODING_IRC)
|
||||
ENCODING("i16imm", ENCODING_Iv)
|
||||
ENCODING("i16i8imm", ENCODING_IB)
|
||||
|
Loading…
Reference in New Issue
Block a user