Home | History | Annotate | Download | only in AsmParser

Lines Matching refs:Operands

31   // Parse operands
42 OperandVector *Operands);
49 SMLoc NameLoc, OperandVector &Operands) override;
54 OperandVector &Operands, MCStreamer &Out,
62 OperandMatchResultTy parseOperand(OperandVector *Operands,
65 OperandMatchResultTy parseMemoryOperand(OperandVector &Operands);
386 assert(N == 1 && "Invalid number of operands!");
391 assert(N == 1 && "Invalid number of operands!");
396 assert(N == 1 && "Invalid number of operands!");
401 assert(N == 1 && "Invalid number of operands!");
406 assert(N == 1 && "Invalid number of operands!");
411 assert(N == 1 && "Invalid number of operands!");
417 assert(N == 3 && "Invalid number of operands!");
425 assert(N == 3 && "Invalid number of operands!");
440 assert(N == 1 && "Invalid number of operands!");
445 assert(N == 1 && "Invalid number of operands!");
450 assert(N == 1 && "Invalid number of operands!");
473 assert(N == 1 && "Invalid number of operands!");
481 assert(N == 1 && "Invalid number of operands!");
503 assert(N == 1 && "Invalid number of operands!");
511 assert(N == 1 && "Invalid number of operands!");
633 OperandVector &Operands,
640 switch (MatchInstructionImpl(Operands, Inst, ErrorInfo, MatchingInlineAsm)) {
651 if (ErrorInfo >= Operands.size())
652 return Error(IdLoc, "Too few operands for instruction");
654 ErrorLoc = ((LanaiOperand &)*Operands[ErrorInfo]).getStartLoc();
844 LanaiAsmParser::parseMemoryOperand(OperandVector &Operands) {
846 // The memory operands are of the form:
857 if (Operands[0]->isToken())
858 Type = static_cast<LanaiOperand *>(Operands[0].get())->getToken();
879 Operands.push_back(std::move(Op));
900 Operands.push_back(LanaiOperand::MorphToMemImm(std::move(Op)));
908 Operands.push_back(LanaiOperand::MorphToMemRegImm(
966 Operands.push_back(
975 // information, adding to operands.
978 LanaiAsmParser::parseOperand(OperandVector *Operands, StringRef Mnemonic) {
981 OperandMatchResultTy Result = MatchOperandParserImpl(*Operands, Mnemonic);
1004 // Push back parsed operand into list of operands
1005 Operands->push_back(std::move(Op));
1013 OperandVector *Operands) {
1029 // converted into two operands 'b' and 'ne'.
1034 Operands->push_back(LanaiOperand::CreateToken(Mnemonic, NameLoc));
1035 Operands->push_back(LanaiOperand::createImm(
1038 Operands->push_back(LanaiOperand::CreateToken(".r", NameLoc));
1063 Operands->push_back(LanaiOperand::CreateToken(Mnemonic, NameLoc));
1064 Operands->push_back(LanaiOperand::createImm(
1070 Operands->push_back(LanaiOperand::CreateToken(Mnemonic, NameLoc));
1072 Operands->push_back(LanaiOperand::CreateToken(".r", NameLoc));
1078 bool IsMemoryAssignmentError(const OperandVector &Operands) {
1080 // Memory operations are detected by matching the types of operands.
1088 if (Operands.size() < 5)
1090 else if (Operands[0]->isToken() && Operands[1]->isReg() &&
1091 Operands[2]->isImm() && Operands[3]->isImm() && Operands[4]->isReg())
1093 else if (Operands[0]->isToken() && Operands[1]->isToken() &&
1094 Operands[2]->isReg() && Operands[3]->isImm() &&
1095 Operands[4]->isImm() && Operands[5]->isReg())
1104 static_cast<LanaiOperand *>(Operands[PossibleAluOpIdx].get()))
1109 return Modifies && Operands[PossibleBaseIdx]->isReg() &&
1110 Operands[PossibleDestIdx]->isReg() &&
1111 Operands[PossibleBaseIdx]->getReg() ==
1112 Operands[PossibleDestIdx]->getReg();
1119 static bool MaybePredicatedInst(const OperandVector &Operands) {
1120 if (Operands.size() < 4 || !IsRegister(*Operands[1]) ||
1121 !IsRegister(*Operands[2]))
1124 static_cast<const LanaiOperand &>(*Operands[0]).getToken())
1138 OperandVector &Operands) {
1140 StringRef Mnemonic = splitMnemonic(Name, NameLoc, &Operands);
1142 // If there are no more operands, then finish
1147 if (parseOperand(&Operands, Mnemonic) != MatchOperand_Success)
1153 Operands.size() == 2) {
1154 Operands.erase(Operands.begin(), Operands.begin() + 1);
1155 Operands.insert(Operands.begin(), LanaiOperand::CreateToken("s", NameLoc));
1156 Operands.insert(Operands.begin() + 1,
1164 // operands need to be merged.
1166 Operands.size() == 3) {
1167 Operands.erase(Operands.begin(), Operands.begin() + 2);
1168 Operands.insert(Operands.begin(), LanaiOperand::CreateToken("bt", NameLoc));
1171 // Parse until end of statement, consuming commas between operands
1177 if (parseOperand(&Operands, Mnemonic) != MatchOperand_Success)
1181 if (IsMemoryAssignmentError(Operands)) {
1190 if (MaybePredicatedInst(Operands)) {
1191 Operands.insert(Operands.begin() + 1,