Lines Matching refs:Operands
11 // assembly operands in the MCInst structures. It also emits a matcher for
14 // Converting assembly operands into MCInst structures
18 // operands. The target specific parser should generally eliminate any syntax
22 // operands.
59 // arbitrary operands, we expect the user to define the classes and their
63 // By partitioning the operands in this way, we guarantee that for any
65 // of the sets of operands which could classify to that tuple.
78 // Some targets need a custom way to parse operands, some specific instructions
146 /// class of operands which can be matched.
169 /// sake user operands only record their immediate super class, while register
170 /// operands include all superclasses.
234 // Otherwise we have two users operands; they are related if they are in the
354 /// MINumOperands - The number of MCInst operands populated by this
419 /// AsmOperands - The textual operands that this instruction matches,
429 /// convertToMCInst to convert parsed operands into an MCInst for this
517 /// ambiguously match the same set of operands as \p RHS (without being a
524 // The number of operands is unambiguous.
541 // Otherwise, this operand could commute if all operands are equivalent, or
542 // there is a pair of operands that compare less than and a pair that
616 /// Info for custom matching operands by user defined methods.
720 // Figure out which operands are aliased and mark them as tied.
724 // Find the AsmOperands that refer to the operands we're aliasing.
754 // Nothing to do for operands that don't reference AsmOperands.
909 // handle, the target should be refactored to use operands instead of
1257 CI->RenderMethod = "add" + CI->ClassName + "Operands";
1286 /// Map containing a mask with all operands indices that can be found for
1297 // Keep track of all operands of this instructions which belong to the
1506 const CGIOperandList &Operands = CGI.Operands;
1511 if (!Operands.hasOperandNamed(OperandName, Idx))
1518 if (Op->SubOpIdx == -1 && Operands[Idx].MINumOperands > 1) {
1519 Record *Rec = Operands[Idx].Rec;
1525 for (unsigned SI = 1, SE = Operands[Idx].MINumOperands; SI != SE; ++SI) {
1537 Op->Class = getOperandClass(Operands[Idx], Op->SubOpIdx);
1548 if (Operands[Idx].MINumOperands == 1)
1549 OITied = Operands[Idx].getTiedRegister();
1553 std::pair<unsigned, unsigned> Idx = Operands.getSubOperandNumber(OITied);
1554 OperandName = Operands[Idx.first].Name;
1574 // validates that all operands with the same name have the same record.
1592 // Loop over all operands of the result instruction, determining how to
1594 for (unsigned i = 0, e = ResultInst->Operands.size(); i != e; ++i) {
1595 const CGIOperandList::OperandInfo &OpInfo = ResultInst->Operands[i];
1609 // This may happen for operands that are tied to a suboperand of a
1613 // tied operands at all.
1639 // Loop over all operands of the result instruction, determining how to
1643 for (unsigned i = 0, e = ResultInst->Operands.size(); i != e; ++i) {
1644 const CGIOperandList::OperandInfo *OpInfo = &ResultInst->Operands[i];
1726 << " &Operands) {\n"
1735 << "&>(*Operands[*(p + 1)]).addRegOperands(Inst, 1);\n"
1747 OpOS << "const OperandVector &Operands) {\n"
1755 << " Operands[*(p + 1)]->setMCOperandNum(NumMCOperands);\n"
1756 << " Operands[*(p + 1)]->setConstraint(\"r\");\n"
1798 << " " << AsmMatchConverter << "(Inst, Operands);\n"
1852 << "&>(*Operands[*(p + 1)])." << Op.Class->RenderMethod
1858 << " Operands[*(p + 1)]->setMCOperandNum(NumMCOperands);\n";
1861 OpOS << " Operands[*(p + 1)]->setConstraint(\"r\");\n";
1863 OpOS << " Operands[*(p + 1)]->setConstraint(\"m\");\n";
1900 << " Operands[*(p + 1)]->setMCOperandNum(NumMCOperands);\n"
1901 << " Operands[*(p + 1)]->setConstraint(\"\");\n"
1931 << " Operands[*(p + 1)]->setMCOperandNum(NumMCOperands);\n"
1932 << " Operands[*(p + 1)]->setConstraint(\"m\");\n"
1939 // If there were no operands, add to the signature to that effect
2047 // Check for Token operands first.
2073 // Check for register operands, including sub-classes.
2089 // Generic fallthrough match failure case for operands that don't have
2564 << " &Operands,\n unsigned MCK) {\n\n"
2573 << " return " << CI->ParserMethod << "(Operands);\n";
2588 << " &Operands,\n StringRef Mnemonic) {\n";
2595 OS << " unsigned NextOpNum = Operands.size()-1;\n";
2629 OS << "tryCustomParseOperand(Operands, it->Class);\n";
2698 << "&Operands);\n";
2700 OS << " const OperandVector &Operands) override;\n";
2704 OS << "const OperandVector &Operands,\n"
2717 OS << " OperandVector &Operands,\n";
2721 OS << " OperandVector &Operands,\n";
2761 // Generate the convertToMCInst function to convert operands into an MCInst.
2913 << " &Operands,\n";
2918 OS << " if (Operands.size() > " << (MaxNumOperands+1) << ") {\n";
2929 << "Operand&)*Operands[0]).getToken();\n\n";
2976 OS << " if (i + 1 >= Operands.size()) {\n";
2981 OS << " unsigned Diag = validateOperandClass(*Operands[i+1],\n";
2989 OS << " Diag = validateTargetOperandClass(*Operands[i+1],\n";
3027 OS << " convertToMapAndConstraints(it->ConvertFn, Operands);\n";
3031 << " // operands into the appropriate MCInst.\n";
3032 Operands);\n";
3057 << "Operand&)*Operands[0]).getStartLoc();\n";