Lines Matching defs:Operands

160   bool parseSysAlias(StringRef Name, SMLoc NameLoc, OperandVector &Operands);
161 bool parseSyspAlias(StringRef Name, SMLoc NameLoc, OperandVector &Operands);
162 void createSysAlias(uint16_t Encoding, OperandVector &Operands, SMLoc S);
165 bool parseCondCode(OperandVector &Operands, bool invertCondCode);
167 bool parseRegister(OperandVector &Operands);
169 bool parseNeonVectorList(OperandVector &Operands);
170 bool parseOptionalMulOperand(OperandVector &Operands);
171 bool parseOptionalVGOperand(OperandVector &Operands, StringRef &VecGroup);
172 bool parseKeywordOperand(OperandVector &Operands);
173 bool parseOperand(OperandVector &Operands, bool isCondCode,
181 OperandVector &Operands);
235 OperandVector &Operands, MCStreamer &Out,
249 ParseStatus tryParseMatrixRegister(OperandVector &Operands);
250 ParseStatus tryParseSVCR(OperandVector &Operands);
251 ParseStatus tryParseOptionalShiftExtend(OperandVector &Operands);
252 ParseStatus tryParseBarrierOperand(OperandVector &Operands);
253 ParseStatus tryParseBarriernXSOperand(OperandVector &Operands);
254 ParseStatus tryParseSysReg(OperandVector &Operands);
255 ParseStatus tryParseSysCROperand(OperandVector &Operands);
257 ParseStatus tryParsePrefetch(OperandVector &Operands);
258 ParseStatus tryParseRPRFMOperand(OperandVector &Operands);
259 ParseStatus tryParsePSBHint(OperandVector &Operands);
260 ParseStatus tryParseBTIHint(OperandVector &Operands);
261 ParseStatus tryParseAdrpLabel(OperandVector &Operands);
262 ParseStatus tryParseAdrLabel(OperandVector &Operands);
264 ParseStatus tryParseFPImm(OperandVector &Operands);
265 ParseStatus tryParseImmWithOptionalShift(OperandVector &Operands);
266 ParseStatus tryParseGPR64sp0Operand(OperandVector &Operands);
267 bool tryParseNeonVectorRegister(OperandVector &Operands);
268 ParseStatus tryParseVectorIndex(OperandVector &Operands);
269 ParseStatus tryParseGPRSeqPair(OperandVector &Operands);
270 ParseStatus tryParseSyspXzrPair(OperandVector &Operands);
273 ParseStatus tryParseGPROperand(OperandVector &Operands);
274 ParseStatus tryParseZTOperand(OperandVector &Operands);
276 ParseStatus tryParseSVEDataVector(OperandVector &Operands);
278 ParseStatus tryParseSVEPredicateVector(OperandVector &Operands);
280 tryParseSVEPredicateOrPredicateAsCounterVector(OperandVector &Operands);
282 ParseStatus tryParseVectorList(OperandVector &Operands,
284 ParseStatus tryParseMatrixTileList(OperandVector &Operands);
285 ParseStatus tryParseSVEPattern(OperandVector &Operands);
286 ParseStatus tryParseSVEVecLenSpecifier(OperandVector &Operands);
287 ParseStatus tryParseGPR64x8(OperandVector &Operands);
288 ParseStatus tryParseImmRange(OperandVector &Operands);
325 SMLoc NameLoc, OperandVector &Operands) override;
520 // the add<>Operands() calls.
3032 ParseStatus AArch64AsmParser::tryParseSysCROperand(OperandVector &Operands) {
3048 Operands.push_back(
3054 ParseStatus AArch64AsmParser::tryParseRPRFMOperand(OperandVector &Operands) {
3076 Operands.push_back(AArch64Operand::CreatePrefetch(
3088 Operands.push_back(AArch64Operand::CreatePrefetch(
3096 ParseStatus AArch64AsmParser::tryParsePrefetch(OperandVector &Operands) {
3136 Operands.push_back(AArch64Operand::CreatePrefetch(prfop, PRFM.value_or(""),
3148 Operands.push_back(AArch64Operand::CreatePrefetch(
3155 ParseStatus AArch64AsmParser::tryParsePSBHint(OperandVector &Operands) {
3165 Operands.push_back(AArch64Operand::CreatePSBHint(
3171 ParseStatus AArch64AsmParser::tryParseSyspXzrPair(OperandVector &Operands) {
3198 Operands.push_back(AArch64Operand::CreateReg(
3205 ParseStatus AArch64AsmParser::tryParseBTIHint(OperandVector &Operands) {
3215 Operands.push_back(AArch64Operand::CreateBTIHint(
3223 ParseStatus AArch64AsmParser::tryParseAdrpLabel(OperandVector &Operands) {
3265 Operands.push_back(AArch64Operand::CreateImm(Expr, S, E, getContext()));
3272 ParseStatus AArch64AsmParser::tryParseAdrLabel(OperandVector &Operands) {
3301 Operands.push_back(AArch64Operand::CreateImm(Expr, S, E, getContext()));
3307 ParseStatus AArch64AsmParser::tryParseFPImm(OperandVector &Operands) {
3328 Operands.push_back(
3342 Operands.push_back(AArch64Operand::CreateToken("#0", S, getContext()));
3343 Operands.push_back(AArch64Operand::CreateToken(".0", S, getContext()));
3345 Operands.push_back(AArch64Operand::CreateFPImm(
3357 AArch64AsmParser::tryParseImmWithOptionalShift(OperandVector &Operands) {
3368 return tryParseImmRange(Operands);
3374 Operands.push_back(
3382 if (!parseOptionalVGOperand(Operands, VecGroup)) {
3383 Operands.push_back(
3385 Operands.push_back(
3411 Operands.push_back(
3416 Operands.push_back(AArch64Operand::CreateShiftedImm(Imm, ShiftAmount, S,
3467 bool AArch64AsmParser::parseCondCode(OperandVector &Operands,
3490 Operands.push_back(
3495 ParseStatus AArch64AsmParser::tryParseSVCR(OperandVector &Operands) {
3509 Operands.push_back(
3515 ParseStatus AArch64AsmParser::tryParseMatrixRegister(OperandVector &Operands) {
3533 Operands.push_back(AArch64Operand::CreateMatrixRegister(
3539 if (parseOperand(Operands, false, false))
3571 Operands.push_back(AArch64Operand::CreateMatrixRegister(
3577 if (parseOperand(Operands, false, false))
3586 AArch64AsmParser::tryParseOptionalShiftExtend(OperandVector &Operands) {
3624 Operands.push_back(
3645 Operands.push_back(AArch64Operand::CreateShiftExtend(
3786 void AArch64AsmParser::createSysAlias(uint16_t Encoding, OperandVector &Operands,
3795 Operands.push_back(
3797 Operands.push_back(
3799 Operands.push_back(
3802 Operands.push_back(
3809 OperandVector &Operands) {
3814 Operands.push_back(AArch64Operand::CreateToken("sys", NameLoc, getContext()));
3829 createSysAlias(IC->Encoding, Operands, S);
3839 createSysAlias(DC->Encoding, Operands, S);
3849 createSysAlias(AT->Encoding, Operands, S);
3859 createSysAlias(TLBI->Encoding, Operands, S);
3884 createSysAlias(Encoding, Operands, S);
3894 if (Tok.isNot(AsmToken::Identifier) || parseRegister(Operands))
3913 OperandVector &Operands) {
3918 Operands.push_back(
3946 createSysAlias(TLBI.Encoding, Operands, S);
3956 auto Result = tryParseSyspXzrPair(Operands);
3958 Result = tryParseGPRSeqPair(Operands);
3969 ParseStatus AArch64AsmParser::tryParseBarrierOperand(OperandVector &Operands) {
3996 Operands.push_back(AArch64Operand::CreateBarrier(Value, DB ? DB->Name : "",
4023 Operands.push_back(AArch64Operand::CreateBarrier(
4032 AArch64AsmParser::tryParseBarriernXSOperand(OperandVector &Operands) {
4054 Operands.push_back(AArch64Operand::CreateBarrier(DB->Encoding, DB->Name,
4069 Operands.push_back(
4077 ParseStatus AArch64AsmParser::tryParseSysReg(OperandVector &Operands) {
4104 Operands.push_back(
4113 bool AArch64AsmParser::tryParseNeonVectorRegister(OperandVector &Operands) {
4130 Operands.push_back(
4137 Operands.push_back(AArch64Operand::CreateToken(Kind, S, getContext()));
4139 return tryParseVectorIndex(Operands).isFailure();
4142 ParseStatus AArch64AsmParser::tryParseVectorIndex(OperandVector &Operands) {
4157 Operands.push_back(AArch64Operand::CreateVectorIndex(MCE->getValue(), SIdx,
4199 OperandVector &Operands) {
4201 tryParseSVEPredicateVector<RegKind::SVEPredicateAsCounter>(Operands);
4203 Status = tryParseSVEPredicateVector<RegKind::SVEPredicateVector>(Operands);
4210 AArch64AsmParser::tryParseSVEPredicateVector(OperandVector &Operands) {
4224 Operands.push_back(AArch64Operand::CreateVectorReg(
4230 ParseStatus ResIndex = tryParseVectorIndex(Operands);
4236 if (parseOperand(Operands, false, false))
4250 Operands.push_back(AArch64Operand::CreateToken("/", getLoc(), getContext()));
4264 Operands.push_back(AArch64Operand::CreateToken(ZM, getLoc(), getContext()));
4271 bool AArch64AsmParser::parseRegister(OperandVector &Operands) {
4273 if (!tryParseNeonVectorRegister(Operands))
4276 if (tryParseZTOperand(Operands).isSuccess())
4280 if (tryParseGPROperand<false>(Operands).isSuccess())
4364 ParseStatus AArch64AsmParser::tryParseMatrixTileList(OperandVector &Operands) {
4397 Operands.push_back(AArch64Operand::CreateMatrixTileList(
4409 Operands.push_back(AArch64Operand::CreateMatrixTileList(
4464 Operands.push_back(
4471 ParseStatus AArch64AsmParser::tryParseVectorList(OperandVector &Operands,
4587 Operands.push_back(AArch64Operand::CreateVectorList(
4595 bool AArch64AsmParser::parseNeonVectorList(OperandVector &Operands) {
4596 auto ParseRes = tryParseVectorList<RegKind::NeonVector>(Operands, true);
4600 return tryParseVectorIndex(Operands).isFailure();
4603 ParseStatus AArch64AsmParser::tryParseGPR64sp0Operand(OperandVector &Operands) {
4612 Operands.push_back(AArch64Operand::CreateReg(
4627 Operands.push_back(AArch64Operand::CreateReg(
4632 ParseStatus AArch64AsmParser::tryParseZTOperand(OperandVector &Operands) {
4642 Operands.push_back(AArch64Operand::CreateReg(
4648 Operands.push_back(
4656 Operands.push_back(AArch64Operand::CreateImm(
4660 if (parseOptionalMulOperand(Operands))
4664 Operands.push_back(
4671 ParseStatus AArch64AsmParser::tryParseGPROperand(OperandVector &Operands) {
4681 Operands.push_back(AArch64Operand::CreateReg(
4696 Operands.push_back(AArch64Operand::CreateReg(
4704 bool AArch64AsmParser::parseOptionalMulOperand(OperandVector &Operands) {
4717 Operands.push_back(
4722 Operands.push_back(
4736 Operands.push_back(AArch64Operand::CreateImm(
4746 bool AArch64AsmParser::parseOptionalVGOperand(OperandVector &Operands,
4766 bool AArch64AsmParser::parseKeywordOperand(OperandVector &Operands) {
4776 Operands.push_back(
4785 bool AArch64AsmParser::parseOperand(OperandVector &Operands, bool isCondCode,
4790 MatchOperandParserImpl(Operands, Mnemonic, /*ParseForAllFeatures=*/true);
4806 ParseStatus Res = tryParseOptionalShiftExtend(Operands);
4821 Operands.push_back(AArch64Operand::CreateImm(Expr, S, E, getContext()));
4825 Operands.push_back(
4831 return parseOperand(Operands, false, false);
4834 if (!parseNeonVectorList(Operands))
4837 Operands.push_back(
4843 return parseOperand(Operands, false, false);
4848 if (!parseOptionalVGOperand(Operands, VecGroup)) {
4849 Operands.push_back(
4855 return parseCondCode(Operands, invertCondCode);
4858 if (!parseRegister(Operands)) {
4865 ParseStatus Res = MatchOperandParserImpl(Operands, Mnemonic,
4869 Res = tryParseOptionalShiftExtend(Operands);
4879 if (!parseOptionalMulOperand(Operands))
4886 return parseKeywordOperand(Operands);
4895 Operands.push_back(AArch64Operand::CreateImm(IdVal, S, E, getContext()));
4931 Operands.push_back(AArch64Operand::CreateToken("#0", S, getContext()));
4932 Operands.push_back(AArch64Operand::CreateToken(".0", S, getContext()));
4941 Operands.push_back(AArch64Operand::CreateImm(ImmVal, S, E, getContext()));
4955 if (Operands.size() < 2 ||
4956 !static_cast<AArch64Operand &>(*Operands[1]).isScalarReg())
4961 Operands[1]->getReg());
4974 Operands[0] = AArch64Operand::CreateToken("movz", Loc, Ctx);
4975 Operands.push_back(AArch64Operand::CreateImm(
4978 Operands.push_back(AArch64Operand::CreateShiftExtend(AArch64_AM::LSL,
4990 Operands.push_back(AArch64Operand::CreateImm(CPLoc, S, E, Ctx));
5092 OperandVector &Operands) {
5131 return parseSysAlias(Head, NameLoc, Operands);
5135 return parseSyspAlias(Head, NameLoc, Operands);
5137 Operands.push_back(AArch64Operand::CreateToken(Head, NameLoc, getContext()));
5156 Operands.push_back(AArch64Operand::CreateToken(".", SuffixLoc, getContext(),
5158 Operands.push_back(
5169 Operands.push_back(AArch64Operand::CreateToken(
5196 if (parseOperand(Operands, (N == 4 && condCodeFourthOperand) ||
5218 Operands.push_back(
5221 Operands.push_back(
5224 Operands.push_back(
5745 OperandVector &Operands) {
5748 auto &Op = static_cast<const AArch64Operand &>(*Operands[ErrorInfo]);
5994 ((AArch64Operand &)*Operands[0]).getToken(),
6208 OperandVector &Operands,
6212 assert(!Operands.empty() && "Unexpect empty operand list!");
6213 AArch64Operand &Op = static_cast<AArch64Operand &>(*Operands[0]);
6217 unsigned NumOperands = Operands.size();
6220 AArch64Operand &Op2 = static_cast<AArch64Operand &>(*Operands[2]);
6221 AArch64Operand &Op3 = static_cast<AArch64Operand &>(*Operands[3]);
6240 Operands[0] =
6242 Operands.push_back(AArch64Operand::CreateImm(
6244 Operands[3] = AArch64Operand::CreateImm(NewOp3, Op3.getStartLoc(),
6250 AArch64Operand &Op1 = static_cast<AArch64Operand &>(*Operands[1]);
6251 AArch64Operand LSBOp = static_cast<AArch64Operand &>(*Operands[2]);
6252 AArch64Operand WidthOp = static_cast<AArch64Operand &>(*Operands[3]);
6290 Operands[0] =
6292 Operands[2] = AArch64Operand::CreateReg(
6295 Operands[3] = AArch64Operand::CreateImm(
6297 Operands.emplace_back(
6306 AArch64Operand &Op1 = static_cast<AArch64Operand &>(*Operands[1]);
6307 AArch64Operand &Op3 = static_cast<AArch64Operand &>(*Operands[3]);
6308 AArch64Operand &Op4 = static_cast<AArch64Operand &>(*Operands[4]);
6348 Operands[3] = AArch64Operand::CreateImm(
6350 Operands[4] = AArch64Operand::CreateImm(
6353 Operands[0] = AArch64Operand::CreateToken("bfm", Op.getStartLoc(),
6356 Operands[0] = AArch64Operand::CreateToken("sbfm", Op.getStartLoc(),
6359 Operands[0] = AArch64Operand::CreateToken("ubfm", Op.getStartLoc(),
6370 AArch64Operand &Op1 = static_cast<AArch64Operand &>(*Operands[1]);
6371 AArch64Operand &Op3 = static_cast<AArch64Operand &>(*Operands[3]);
6372 AArch64Operand &Op4 = static_cast<AArch64Operand &>(*Operands[4]);
6404 Operands[4] = AArch64Operand::CreateImm(
6407 Operands[0] = AArch64Operand::CreateToken("bfm", Op.getStartLoc(),
6410 Operands[0] = AArch64Operand::CreateToken("sbfm", Op.getStartLoc(),
6413 Operands[0] = AArch64Operand::CreateToken("ubfm", Op.getStartLoc(),
6428 AArch64Operand &Op1 = static_cast<AArch64Operand &>(*Operands[1]);
6429 AArch64Operand &Op2 = static_cast<AArch64Operand &>(*Operands[2]);
6430 AArch64Operand &Op3 = static_cast<AArch64Operand &>(*Operands[3]);
6440 Operands[Idx] =
6452 AArch64Operand &Op = static_cast<AArch64Operand &>(*Operands[2]);
6455 Operands[2] = AArch64Operand::CreateReg(Reg, RegKind::Scalar,
6462 AArch64Operand &Op = static_cast<AArch64Operand &>(*Operands[1]);
6468 AArch64Operand &Op = static_cast<AArch64Operand &>(*Operands[2]);
6471 Operands[2] = AArch64Operand::CreateReg(Reg, RegKind::Scalar,
6479 AArch64Operand &Op = static_cast<AArch64Operand &>(*Operands[1]);
6485 AArch64Operand &Op = static_cast<AArch64Operand &>(*Operands[1]);
6488 Operands[1] = AArch64Operand::CreateReg(Reg, RegKind::Scalar,
6500 MatchInstructionImpl(Operands, Inst, ErrorInfo, MissingFeatures,
6513 MatchInstructionImpl(Operands, Inst, ErrorInfo, MissingFeatures,
6520 Operands.size() > 1 && ((AArch64Operand &)*Operands[1]).isToken() &&
6521 ((AArch64Operand &)*Operands[1]).isTokenSuffix()) {
6532 NumOperands = Operands.size();
6534 OperandLocs.push_back(Operands[i]->getStartLoc());
6556 return showMatchError(IDLoc, MatchResult, ErrorInfo, Operands);
6561 if (ErrorInfo >= Operands.size())
6565 ErrorLoc = ((AArch64Operand &)*Operands[ErrorInfo]).getStartLoc();
6571 if (((AArch64Operand &)*Operands[ErrorInfo]).isToken() &&
6572 ((AArch64Operand &)*Operands[ErrorInfo]).isTokenSuffix())
6575 return showMatchError(ErrorLoc, MatchResult, ErrorInfo, Operands);
6786 if (ErrorInfo >= Operands.size())
6787 return Error(IDLoc, "too few operands for instruction", SMRange(IDLoc, (*Operands.back()).getEndLoc()));
6790 SMLoc ErrorLoc = ((AArch64Operand &)*Operands[ErrorInfo]).getStartLoc();
6793 return showMatchError(ErrorLoc, MatchResult, ErrorInfo, Operands);
7871 ParseStatus AArch64AsmParser::tryParseGPRSeqPair(OperandVector &Operands) {
7929 Operands.push_back(AArch64Operand::CreateReg(Pair, RegKind::Scalar, S,
7936 ParseStatus AArch64AsmParser::tryParseSVEDataVector(OperandVector &Operands) {
7959 Operands.push_back(AArch64Operand::CreateVectorReg(
7962 ParseStatus Res = tryParseVectorIndex(Operands);
7978 Operands.push_back(AArch64Operand::CreateVectorReg(
7986 ParseStatus AArch64AsmParser::tryParseSVEPattern(OperandVector &Operands) {
8022 Operands.push_back(
8030 AArch64AsmParser::tryParseSVEVecLenSpecifier(OperandVector &Operands) {
8044 Operands.push_back(
8051 ParseStatus AArch64AsmParser::tryParseGPR64x8(OperandVector &Operands) {
8067 Operands.push_back(
8072 ParseStatus AArch64AsmParser::tryParseImmRange(OperandVector &Operands) {
8100 Operands.push_back(