Lines Matching defs:Mnemonic

202   bool parseOperand(OperandVector &, StringRef Mnemonic);
238 StringRef splitMnemonic(StringRef Mnemonic, unsigned &PredicationCode,
241 void getMnemonicAcceptInfo(StringRef Mnemonic, StringRef FullInst,
245 void tryConvertingToTwoOperandForm(StringRef Mnemonic, bool CarrySetting,
337 bool shouldOmitCCOutOperand(StringRef Mnemonic, OperandVector &Operands);
338 bool shouldOmitPredicateOperand(StringRef Mnemonic, OperandVector &Operands);
4977 ARMOperand &Mnemonic = static_cast<ARMOperand &>(*Operands[0]);
4978 bool isFconst = Mnemonic.isToken() && (Mnemonic.getToken() == "fconstd" ||
4979 Mnemonic.getToken() == "fconsts");
5028 bool ARMAsmParser::parseOperand(OperandVector &Operands, StringRef Mnemonic) {
5034 OperandMatchResultTy ResTy = MatchOperandParserImpl(Operands, Mnemonic);
5051 bool ExpectLabel = Mnemonic == "b" || Mnemonic == "bl";
5061 if (Mnemonic == "vmrs" &&
5145 if (Mnemonic != "ldr") // only parse for ldr pseudo (e.g. ldr r0, =val)
5243 StringRef ARMAsmParser::splitMnemonic(StringRef Mnemonic,
5255 if ((Mnemonic == "movs" && isThumb()) ||
5256 Mnemonic == "teq" || Mnemonic == "vceq" || Mnemonic == "svc" ||
5257 Mnemonic == "mls" || Mnemonic == "smmls" || Mnemonic == "vcls" ||
5258 Mnemonic == "vmls" || Mnemonic == "vnmls" || Mnemonic == "vacge" ||
5259 Mnemonic == "vcge" || Mnemonic == "vclt" || Mnemonic == "vacgt" ||
5260 Mnemonic == "vaclt" || Mnemonic == "vacle" || Mnemonic == "hlt" ||
5261 Mnemonic == "vcgt" || Mnemonic == "vcle" || Mnemonic == "smlal" ||
5262 Mnemonic == "umaal" || Mnemonic == "umlal" || Mnemonic == "vabal" ||
5263 Mnemonic == "vmlal" || Mnemonic == "vpadal" || Mnemonic == "vqdmlal" ||
5264 Mnemonic == "fmuls" || Mnemonic == "vmaxnm" || Mnemonic == "vminnm" ||
5265 Mnemonic == "vcvta" || Mnemonic == "vcvtn" || Mnemonic == "vcvtp" ||
5266 Mnemonic == "vcvtm" || Mnemonic == "vrinta" || Mnemonic == "vrintn" ||
5267 Mnemonic == "vrintp" || Mnemonic == "vrintm" || Mnemonic == "hvc" ||
5268 Mnemonic.startswith("vsel"))
5269 return Mnemonic;
5273 if (Mnemonic != "adcs" && Mnemonic != "bics" && Mnemonic != "movs" &&
5274 Mnemonic != "muls" && Mnemonic != "smlals" && Mnemonic != "smulls" &&
5275 Mnemonic != "umlals" && Mnemonic != "umulls" && Mnemonic != "lsls" &&
5276 Mnemonic != "sbcs" && Mnemonic != "rscs") {
5277 unsigned CC = StringSwitch<unsigned>(Mnemonic.substr(Mnemonic.size()-2))
5297 Mnemonic = Mnemonic.slice(0, Mnemonic.size() - 2);
5304 if (Mnemonic.endswith("s") &&
5305 !(Mnemonic == "cps" || Mnemonic == "mls" ||
5306 Mnemonic == "mrs" || Mnemonic == "smmls" || Mnemonic == "vabs" ||
5307 Mnemonic == "vcls" || Mnemonic == "vmls" || Mnemonic == "vmrs" ||
5308 Mnemonic == "vnmls" || Mnemonic == "vqabs" || Mnemonic == "vrecps" ||
5309 Mnemonic == "vrsqrts" || Mnemonic == "srs" || Mnemonic == "flds" ||
5310 Mnemonic == "fmrs" || Mnemonic == "fsqrts" || Mnemonic == "fsubs" ||
5311 Mnemonic == "fsts" || Mnemonic == "fcpys" || Mnemonic == "fdivs" ||
5312 Mnemonic == "fmuls" || Mnemonic == "fcmps" || Mnemonic == "fcmpzs" ||
5313 Mnemonic == "vfms" || Mnemonic == "vfnms" || Mnemonic == "fconsts" ||
5314 (Mnemonic == "movs" && isThumb()))) {
5315 Mnemonic = Mnemonic.slice(0, Mnemonic.size() - 1);
5321 if (Mnemonic.startswith("cps")) {
5324 StringSwitch<unsigned>(Mnemonic.substr(Mnemonic.size()-2, 2))
5329 Mnemonic = Mnemonic.slice(0, Mnemonic.size()-2);
5335 if (Mnemonic.startswith("it")) {
5336 ITMask = Mnemonic.slice(2, Mnemonic.size());
5337 Mnemonic = Mnemonic.slice(0, 2);
5340 return Mnemonic;
5347 void ARMAsmParser::getMnemonicAcceptInfo(StringRef Mnemonic, StringRef FullInst,
5351 Mnemonic == "and" || Mnemonic == "lsl" || Mnemonic == "lsr" ||
5352 Mnemonic == "rrx" || Mnemonic == "ror" || Mnemonic == "sub" ||
5353 Mnemonic == "add" || Mnemonic == "adc" || Mnemonic == "mul" ||
5354 Mnemonic == "bic" || Mnemonic == "asr" || Mnemonic == "orr" ||
5355 Mnemonic == "mvn" || Mnemonic == "rsb" || Mnemonic == "rsc" ||
5356 Mnemonic == "orn" || Mnemonic == "sbc" || Mnemonic == "eor" ||
5357 Mnemonic == "neg" || Mnemonic == "vfm" || Mnemonic == "vfnm" ||
5359 (Mnemonic == "smull" || Mnemonic == "mov" || Mnemonic == "mla" ||
5360 Mnemonic == "smlal" || Mnemonic == "umlal" || Mnemonic == "umull"));
5362 if (Mnemonic == "bkpt" || Mnemonic == "cbnz" || Mnemonic == "setend" ||
5363 Mnemonic == "cps" || Mnemonic == "it" || Mnemonic == "cbz" ||
5364 Mnemonic == "trap" || Mnemonic == "hlt" || Mnemonic == "udf" ||
5365 Mnemonic.startswith("crc32") || Mnemonic.startswith("cps") ||
5366 Mnemonic.startswith("vsel") || Mnemonic == "vmaxnm" ||
5367 Mnemonic == "vminnm" || Mnemonic == "vcvta" || Mnemonic == "vcvtn" ||
5368 Mnemonic == "vcvtp" || Mnemonic == "vcvtm" || Mnemonic == "vrinta" ||
5369 Mnemonic == "vrintn" || Mnemonic == "vrintp" || Mnemonic == "vrintm" ||
5370 Mnemonic.startswith("aes") || Mnemonic == "hvc" || Mnemonic == "setpan" ||
5371 Mnemonic.startswith("sha1") || Mnemonic.startswith("sha256") ||
5378 Mnemonic != "cdp2" && Mnemonic != "clrex" && Mnemonic != "mcr2" &&
5379 Mnemonic != "mcrr2" && Mnemonic != "mrc2" && Mnemonic != "mrrc2" &&
5380 Mnemonic != "dmb" && Mnemonic != "dsb" && Mnemonic != "isb" &&
5381 Mnemonic != "pld" && Mnemonic != "pli" && Mnemonic != "pldw" &&
5382 Mnemonic != "ldc2" && Mnemonic != "ldc2l" && Mnemonic != "stc2" &&
5383 Mnemonic != "stc2l" && !Mnemonic.startswith("rfe") &&
5384 !Mnemonic.startswith("srs");
5387 CanAcceptPredicationCode = Mnemonic != "movs";
5389 CanAcceptPredicationCode = Mnemonic != "nop" && Mnemonic != "movs";
5398 void ARMAsmParser::tryConvertingToTwoOperandForm(StringRef Mnemonic,
5418 if (Mnemonic != "add")
5433 if (!(Mnemonic == "add" || Mnemonic == "sub" || Mnemonic == "and" ||
5434 Mnemonic == "eor" || Mnemonic == "lsl" || Mnemonic == "lsr" ||
5435 Mnemonic == "asr" || Mnemonic == "adc" || Mnemonic == "sbc" ||
5436 Mnemonic == "ror" || Mnemonic == "orr" || Mnemonic == "bic"))
5450 ((Mnemonic == "add" && Op4Reg != ARM::SP) ||
5451 Mnemonic == "and" || Mnemonic == "eor" ||
5452 Mnemonic == "adc" || Mnemonic == "orr")) {
5463 if (((Mnemonic == "add" && CarrySetting) || Mnemonic == "sub") &&
5469 if ((Mnemonic == "add" || Mnemonic == "sub") && LastOp->isImm0_7())
5480 bool ARMAsmParser::shouldOmitCCOutOperand(StringRef Mnemonic,
5493 if (Mnemonic == "mov" && Operands.size() > 4 && !isThumb() &&
5501 if (isThumb() && Mnemonic == "add" && Operands.size() == 5 &&
5510 if (((isThumb() && Mnemonic == "add") ||
5511 (isThumbTwo() && Mnemonic == "sub")) &&
5516 ((Mnemonic == "add" && static_cast<ARMOperand &>(*Operands[5]).isReg()) ||
5524 if (isThumbTwo() && (Mnemonic == "add" || Mnemonic == "sub") &&
5551 if (isThumbTwo() && Mnemonic == "mul" && Operands.size() == 6 &&
5571 if (isThumbTwo() && Mnemonic == "mul" && Operands.size() == 5 &&
5590 if (isThumb() && (Mnemonic == "add" || Mnemonic == "sub") &&
5603 bool ARMAsmParser::shouldOmitPredicateOperand(StringRef Mnemonic,
5607 if ((Mnemonic == "vrintz" || Mnemonic == "vrintx" || Mnemonic == "vrintr") &&
5637 static bool doesIgnoreDataTypeSuffix(StringRef Mnemonic, StringRef DT) {
5638 return Mnemonic.startswith("vldm") || Mnemonic.startswith("vstm");
5640 static void applyMnemonicAliases(StringRef &Mnemonic, uint64_t Features,
5694 StringRef Mnemonic = Name.slice(Start, Next);
5701 Mnemonic = splitMnemonic(Mnemonic, PredicationCode, CarrySetting,
5705 if (isThumbOne() && PredicationCode != ARMCC::AL && Mnemonic != "b") {
5710 Operands.push_back(ARMOperand::CreateToken(Mnemonic, NameLoc));
5717 if (Mnemonic == "it") {
5748 getMnemonicAcceptInfo(Mnemonic, Name, CanAcceptCarrySet, CanAcceptPredicationCode);
5754 return Error(NameLoc, "instruction '" + Mnemonic +
5761 return Error(NameLoc, "instruction '" + Mnemonic +
5767 SMLoc Loc = SMLoc::getFromPointer(NameLoc.getPointer() + Mnemonic.size());
5774 SMLoc Loc = SMLoc::getFromPointer(NameLoc.getPointer() + Mnemonic.size() +
5785 } else if (Mnemonic == "cps" && isMClass()) {
5798 doesIgnoreDataTypeSuffix(Mnemonic, ExtraToken))
5821 if (parseOperand(Operands, Mnemonic)) {
5830 if (parseOperand(Operands, Mnemonic)) {
5855 tryConvertingToTwoOperandForm(Mnemonic, CarrySetting, Operands);
5864 if (!CarrySetting && shouldOmitCCOutOperand(Mnemonic, Operands))
5870 if (shouldOmitPredicateOperand(Mnemonic, Operands))
5875 // on the Mnemonic based checking to correctly figure out when to put
5878 if (!isThumb() && Mnemonic == "blx" && Operands.size() == 3 &&
5889 (Mnemonic == "ldrexd" || Mnemonic == "strexd" || Mnemonic == "ldaexd" ||
5890 Mnemonic == "stlexd")) {
5891 bool isLoad = (Mnemonic == "ldrexd" || Mnemonic == "ldaexd");
5921 if ((Mnemonic == "ldrd" || Mnemonic == "strd")) {
5943 // so the Mnemonic is the original name "subs" and delete the predicate
5945 if (isThumbTwo() && Mnemonic == "sub" && Operands.size() == 6 &&