Lines Matching refs:Token
399 MIToken Token; member in __anond099e40f0111::MIParser
580 CurrentSource.slice(SkipChar, StringRef::npos), Token, in lex()
584 bool MIParser::error(const Twine &Msg) { return error(Token.location(), Msg); } in error()
631 if (Token.isNot(TokenKind)) in expectAndConsume()
638 if (Token.isNot(TokenKind)) in consumeIfPresent()
646 assert(Token.is(MIToken::kw_bbsections)); in parseSectionID()
648 if (Token.is(MIToken::IntegerLiteral)) { in parseSectionID()
654 const StringRef &S = Token.stringValue(); in parseSectionID()
668 assert(Token.is(MIToken::MachineBasicBlockLabel)); in parseBasicBlockDefinition()
672 auto Loc = Token.location(); in parseBasicBlockDefinition()
673 auto Name = Token.stringValue(); in parseBasicBlockDefinition()
684 switch (Token.kind()) { in parseBasicBlockDefinition()
752 while (Token.is(MIToken::Newline)) in parseBasicBlockDefinitions()
754 if (Token.isErrorOrEOF()) in parseBasicBlockDefinitions()
755 return Token.isError(); in parseBasicBlockDefinitions()
756 if (Token.isNot(MIToken::MachineBasicBlockLabel)) in parseBasicBlockDefinitions()
765 if ((Token.is(MIToken::MachineBasicBlockLabel) && IsAfterNewline) || in parseBasicBlockDefinitions()
766 Token.isErrorOrEOF()) in parseBasicBlockDefinitions()
768 else if (Token.is(MIToken::MachineBasicBlockLabel)) in parseBasicBlockDefinitions()
776 if (Token.is(MIToken::lbrace)) in parseBasicBlockDefinitions()
778 if (Token.is(MIToken::rbrace)) { in parseBasicBlockDefinitions()
786 if (!Token.isError() && BraceDepth) in parseBasicBlockDefinitions()
788 } while (!Token.isErrorOrEOF()); in parseBasicBlockDefinitions()
789 return Token.isError(); in parseBasicBlockDefinitions()
793 assert(Token.is(MIToken::kw_liveins)); in parseBasicBlockLiveins()
797 if (Token.isNewlineOrEOF()) // Allow an empty list of liveins. in parseBasicBlockLiveins()
800 if (Token.isNot(MIToken::NamedRegister)) in parseBasicBlockLiveins()
809 if (Token.isNot(MIToken::IntegerLiteral) && in parseBasicBlockLiveins()
810 Token.isNot(MIToken::HexLiteral)) in parseBasicBlockLiveins()
826 assert(Token.is(MIToken::kw_successors)); in parseBasicBlockSuccessors()
830 if (Token.isNewlineOrEOF()) // Allow an empty list of successors. in parseBasicBlockSuccessors()
833 if (Token.isNot(MIToken::MachineBasicBlock)) in parseBasicBlockSuccessors()
841 if (Token.isNot(MIToken::IntegerLiteral) && in parseBasicBlockSuccessors()
842 Token.isNot(MIToken::HexLiteral)) in parseBasicBlockSuccessors()
859 assert(Token.is(MIToken::MachineBasicBlockLabel)); in parseBasicBlock()
862 while (Token.isNot(MIToken::rparen) && !Token.isErrorOrEOF()) in parseBasicBlock()
879 if (Token.is(MIToken::kw_successors)) { in parseBasicBlock()
883 } else if (Token.is(MIToken::kw_liveins)) { in parseBasicBlock()
890 if (!Token.isNewlineOrEOF()) in parseBasicBlock()
898 while (!Token.is(MIToken::MachineBasicBlockLabel) && in parseBasicBlock()
899 !Token.is(MIToken::Eof)) { in parseBasicBlock()
918 if (Token.is(MIToken::lbrace)) { in parseBasicBlock()
925 if (!Token.is(MIToken::Newline)) in parseBasicBlock()
929 assert(Token.isNewlineOrEOF() && "MI is not fully parsed"); in parseBasicBlock()
954 while (Token.is(MIToken::Newline)) in parseBasicBlocks()
956 if (Token.isErrorOrEOF()) in parseBasicBlocks()
957 return Token.isError(); in parseBasicBlocks()
960 assert(Token.is(MIToken::MachineBasicBlockLabel)); in parseBasicBlocks()
976 assert(Token.is(MIToken::MachineBasicBlockLabel) || Token.is(MIToken::Eof)); in parseBasicBlocks()
977 } while (Token.isNot(MIToken::Eof)); in parseBasicBlocks()
985 while (Token.isRegister() || Token.isRegisterFlag()) { in parse()
986 auto Loc = Token.location(); in parse()
991 ParsedMachineOperand(MO, Loc, Token.location(), TiedDefIdx)); in parse()
992 if (Token.isNot(MIToken::comma)) in parse()
1000 if (Token.isError() || parseInstruction(OpCode, Flags)) in parse()
1004 while (!Token.isNewlineOrEOF() && Token.isNot(MIToken::kw_pre_instr_symbol) && in parse()
1005 Token.isNot(MIToken::kw_post_instr_symbol) && in parse()
1006 Token.isNot(MIToken::kw_heap_alloc_marker) && in parse()
1007 Token.isNot(MIToken::kw_debug_location) && in parse()
1008 Token.isNot(MIToken::kw_debug_instr_number) && in parse()
1009 Token.isNot(MIToken::coloncolon) && Token.isNot(MIToken::lbrace)) { in parse()
1010 auto Loc = Token.location(); in parse()
1019 ParsedMachineOperand(MO, Loc, Token.location(), TiedDefIdx)); in parse()
1020 if (Token.isNewlineOrEOF() || Token.is(MIToken::coloncolon) || in parse()
1021 Token.is(MIToken::lbrace)) in parse()
1023 if (Token.isNot(MIToken::comma)) in parse()
1029 if (Token.is(MIToken::kw_pre_instr_symbol)) in parse()
1033 if (Token.is(MIToken::kw_post_instr_symbol)) in parse()
1037 if (Token.is(MIToken::kw_heap_alloc_marker)) in parse()
1042 if (Token.is(MIToken::kw_debug_instr_number)) { in parse()
1044 if (Token.isNot(MIToken::IntegerLiteral)) in parse()
1050 if (Token.is(MIToken::comma)) in parse()
1055 if (Token.is(MIToken::kw_debug_location)) { in parse()
1058 if (Token.is(MIToken::exclaim)) { in parse()
1061 } else if (Token.is(MIToken::md_dilocation)) { in parse()
1073 if (Token.is(MIToken::coloncolon)) { in parse()
1075 while (!Token.isNewlineOrEOF()) { in parse()
1080 if (Token.isNewlineOrEOF()) in parse()
1082 if (Token.isNot(MIToken::comma)) in parse()
1117 if (Token.isNot(MIToken::MachineBasicBlock)) in parseStandaloneMBB()
1122 if (Token.isNot(MIToken::Eof)) in parseStandaloneMBB()
1130 if (Token.isNot(MIToken::NamedRegister)) in parseStandaloneNamedRegister()
1135 if (Token.isNot(MIToken::Eof)) in parseStandaloneNamedRegister()
1142 if (Token.isNot(MIToken::VirtualRegister)) in parseStandaloneVirtualRegister()
1147 if (Token.isNot(MIToken::Eof)) in parseStandaloneVirtualRegister()
1154 if (Token.isNot(MIToken::NamedRegister) && in parseStandaloneRegister()
1155 Token.isNot(MIToken::VirtualRegister)) in parseStandaloneRegister()
1163 if (Token.isNot(MIToken::Eof)) in parseStandaloneRegister()
1170 if (Token.isNot(MIToken::StackObject)) in parseStandaloneStackObject()
1174 if (Token.isNot(MIToken::Eof)) in parseStandaloneStackObject()
1181 if (Token.is(MIToken::exclaim)) { in parseStandaloneMDNode()
1184 } else if (Token.is(MIToken::md_diexpr)) { in parseStandaloneMDNode()
1187 } else if (Token.is(MIToken::md_dilocation)) { in parseStandaloneMDNode()
1192 if (Token.isNot(MIToken::Eof)) in parseStandaloneMDNode()
1199 if (Token.isNot(MIToken::exclaim)) in parseMachineMetadata()
1203 if (Token.isNot(MIToken::IntegerLiteral) || Token.integerValue().isSigned()) in parseMachineMetadata()
1211 bool IsDistinct = Token.is(MIToken::kw_distinct); in parseMachineMetadata()
1214 if (Token.isNot(MIToken::exclaim)) in parseMachineMetadata()
1247 if (Token.isNot(MIToken::lbrace)) in parseMDNodeVector()
1251 if (Token.is(MIToken::rbrace)) { in parseMDNodeVector()
1263 if (Token.isNot(MIToken::comma)) in parseMDNodeVector()
1268 if (Token.isNot(MIToken::rbrace)) in parseMDNodeVector()
1278 if (Token.isNot(MIToken::exclaim)) in parseMetadata()
1282 if (Token.is(MIToken::StringConstant)) { in parseMetadata()
1290 if (Token.isNot(MIToken::IntegerLiteral) || Token.integerValue().isSigned()) in parseMetadata()
1293 SMLoc Loc = mapSMLoc(Token.location()); in parseMetadata()
1365 return error(Operands.empty() ? Token.location() : Operands.back().End, in verifyImplicitOperands()
1375 while (Token.is(MIToken::kw_frame_setup) || in parseInstruction()
1376 Token.is(MIToken::kw_frame_destroy) || in parseInstruction()
1377 Token.is(MIToken::kw_nnan) || in parseInstruction()
1378 Token.is(MIToken::kw_ninf) || in parseInstruction()
1379 Token.is(MIToken::kw_nsz) || in parseInstruction()
1380 Token.is(MIToken::kw_arcp) || in parseInstruction()
1381 Token.is(MIToken::kw_contract) || in parseInstruction()
1382 Token.is(MIToken::kw_afn) || in parseInstruction()
1383 Token.is(MIToken::kw_reassoc) || in parseInstruction()
1384 Token.is(MIToken::kw_nuw) || in parseInstruction()
1385 Token.is(MIToken::kw_nsw) || in parseInstruction()
1386 Token.is(MIToken::kw_exact) || in parseInstruction()
1387 Token.is(MIToken::kw_nofpexcept)) { in parseInstruction()
1389 if (Token.is(MIToken::kw_frame_setup)) in parseInstruction()
1391 if (Token.is(MIToken::kw_frame_destroy)) in parseInstruction()
1393 if (Token.is(MIToken::kw_nnan)) in parseInstruction()
1395 if (Token.is(MIToken::kw_ninf)) in parseInstruction()
1397 if (Token.is(MIToken::kw_nsz)) in parseInstruction()
1399 if (Token.is(MIToken::kw_arcp)) in parseInstruction()
1401 if (Token.is(MIToken::kw_contract)) in parseInstruction()
1403 if (Token.is(MIToken::kw_afn)) in parseInstruction()
1405 if (Token.is(MIToken::kw_reassoc)) in parseInstruction()
1407 if (Token.is(MIToken::kw_nuw)) in parseInstruction()
1409 if (Token.is(MIToken::kw_nsw)) in parseInstruction()
1411 if (Token.is(MIToken::kw_exact)) in parseInstruction()
1413 if (Token.is(MIToken::kw_nofpexcept)) in parseInstruction()
1418 if (Token.isNot(MIToken::Identifier)) in parseInstruction()
1420 StringRef InstrName = Token.stringValue(); in parseInstruction()
1428 assert(Token.is(MIToken::NamedRegister) && "Needs NamedRegister token"); in parseNamedRegister()
1429 StringRef Name = Token.stringValue(); in parseNamedRegister()
1436 assert(Token.is(MIToken::NamedVirtualRegister) && "Expected NamedVReg token"); in parseNamedVirtualRegister()
1437 StringRef Name = Token.stringValue(); in parseNamedVirtualRegister()
1445 if (Token.is(MIToken::NamedVirtualRegister)) in parseVirtualRegister()
1447 assert(Token.is(MIToken::VirtualRegister) && "Needs VirtualRegister token"); in parseVirtualRegister()
1456 switch (Token.kind()) { in parseRegister()
1475 if (Token.isNot(MIToken::Identifier) && Token.isNot(MIToken::underscore)) in parseRegisterClassOrBank()
1477 StringRef::iterator Loc = Token.location(); in parseRegisterClassOrBank()
1478 StringRef Name = Token.stringValue(); in parseRegisterClassOrBank()
1534 switch (Token.kind()) { in parseRegisterFlag()
1571 return error("duplicate '" + Token.stringValue() + "' register flag"); in parseRegisterFlag()
1577 assert(Token.is(MIToken::dot)); in parseSubRegisterIndex()
1579 if (Token.isNot(MIToken::Identifier)) in parseSubRegisterIndex()
1581 auto Name = Token.stringValue(); in parseSubRegisterIndex()
1592 if (Token.isNot(MIToken::IntegerLiteral)) in parseRegisterTiedDefIndex()
1643 while (Token.isRegisterFlag()) { in parseRegisterOperand()
1647 if (!Token.isRegister()) in parseRegisterOperand()
1655 if (Token.is(MIToken::dot)) { in parseRegisterOperand()
1661 if (Token.is(MIToken::colon)) { in parseRegisterOperand()
1677 if (parseLowLevelType(Token.location(), Ty)) in parseRegisterOperand()
1696 if (parseLowLevelType(Token.location(), Ty)) in parseRegisterOperand()
1725 assert(Token.is(MIToken::IntegerLiteral)); in parseImmediateOperand()
1726 const APSInt &Int = Token.integerValue(); in parseImmediateOperand()
1738 assert(Token.is(MIToken::dot)); in parseTargetImmMnemonic()
1739 auto Loc = Token.location(); // record start position in parseTargetImmMnemonic()
1744 if (Token.is(MIToken::IntegerLiteral)) { in parseTargetImmMnemonic()
1745 Len += Token.range().size(); in parseTargetImmMnemonic()
1750 if (Token.is(MIToken::comma)) in parseTargetImmMnemonic()
1753 assert(Token.is(MIToken::Identifier)); in parseTargetImmMnemonic()
1754 Src = StringRef(Loc, Len + Token.stringValue().size()); in parseTargetImmMnemonic()
1763 if (!Token.is(MIToken::comma)) in parseTargetImmMnemonic()
1790 if (parseIRConstant(Loc, StringRef(Loc, Token.range().end() - Loc), C)) in parseIRConstant()
1810 if (Token.range().front() == 's' || Token.range().front() == 'p') { in parseLowLevelType()
1811 StringRef SizeStr = Token.range().drop_front(); in parseLowLevelType()
1816 if (Token.range().front() == 's') { in parseLowLevelType()
1817 auto ScalarSize = APSInt(Token.range().drop_front()).getZExtValue(); in parseLowLevelType()
1824 } else if (Token.range().front() == 'p') { in parseLowLevelType()
1826 uint64_t AS = APSInt(Token.range().drop_front()).getZExtValue(); in parseLowLevelType()
1836 if (Token.isNot(MIToken::less)) in parseLowLevelType()
1841 if (Token.isNot(MIToken::IntegerLiteral)) in parseLowLevelType()
1843 uint64_t NumElements = Token.integerValue().getZExtValue(); in parseLowLevelType()
1849 if (Token.isNot(MIToken::Identifier) || Token.stringValue() != "x") in parseLowLevelType()
1853 if (Token.range().front() != 's' && Token.range().front() != 'p') in parseLowLevelType()
1855 StringRef SizeStr = Token.range().drop_front(); in parseLowLevelType()
1859 if (Token.range().front() == 's') { in parseLowLevelType()
1860 auto ScalarSize = APSInt(Token.range().drop_front()).getZExtValue(); in parseLowLevelType()
1864 } else if (Token.range().front() == 'p') { in parseLowLevelType()
1866 uint64_t AS = APSInt(Token.range().drop_front()).getZExtValue(); in parseLowLevelType()
1875 if (Token.isNot(MIToken::greater)) in parseLowLevelType()
1884 assert(Token.is(MIToken::Identifier)); in parseTypedImmediateOperand()
1885 StringRef TypeStr = Token.range(); in parseTypedImmediateOperand()
1890 StringRef SizeStr = Token.range().drop_front(); in parseTypedImmediateOperand()
1894 auto Loc = Token.location(); in parseTypedImmediateOperand()
1896 if (Token.isNot(MIToken::IntegerLiteral)) { in parseTypedImmediateOperand()
1897 if (Token.isNot(MIToken::Identifier) || in parseTypedImmediateOperand()
1898 !(Token.range() == "true" || Token.range() == "false")) in parseTypedImmediateOperand()
1909 auto Loc = Token.location(); in parseFPImmediateOperand()
1911 if (Token.isNot(MIToken::FloatingPointLiteral) && in parseFPImmediateOperand()
1912 Token.isNot(MIToken::HexLiteral)) in parseFPImmediateOperand()
1921 static bool getHexUint(const MIToken &Token, APInt &Result) { in getHexUint() argument
1922 assert(Token.is(MIToken::HexLiteral)); in getHexUint()
1923 StringRef S = Token.range(); in getHexUint()
1938 static bool getUnsigned(const MIToken &Token, unsigned &Result, in getUnsigned() argument
1940 if (Token.hasIntegerValue()) { in getUnsigned()
1942 uint64_t Val64 = Token.integerValue().getLimitedValue(Limit); in getUnsigned()
1944 return ErrCB(Token.location(), "expected 32-bit integer (too large)"); in getUnsigned()
1948 if (Token.is(MIToken::HexLiteral)) { in getUnsigned()
1950 if (getHexUint(Token, A)) in getUnsigned()
1953 return ErrCB(Token.location(), "expected 32-bit integer (too large)"); in getUnsigned()
1962 Token, Result, [this](StringRef::iterator Loc, const Twine &Msg) -> bool { in getUnsigned()
1968 assert(Token.is(MIToken::MachineBasicBlock) || in parseMBBReference()
1969 Token.is(MIToken::MachineBasicBlockLabel)); in parseMBBReference()
1980 if (!Token.stringValue().empty() && Token.stringValue() != MBB->getName()) in parseMBBReference()
1982 " isn't '" + Token.stringValue() + "'"); in parseMBBReference()
1996 assert(Token.is(MIToken::StackObject)); in parseStackFrameIndex()
2008 if (!Token.stringValue().empty() && Token.stringValue() != Name) in parseStackFrameIndex()
2010 "' isn't '" + Token.stringValue() + "'"); in parseStackFrameIndex()
2025 assert(Token.is(MIToken::FixedStackObject)); in parseFixedStackFrameIndex()
2046 static bool parseGlobalValue(const MIToken &Token, in parseGlobalValue() argument
2049 switch (Token.kind()) { in parseGlobalValue()
2052 GV = M->getNamedValue(Token.stringValue()); in parseGlobalValue()
2054 return ErrCB(Token.location(), Twine("use of undefined global value '") + in parseGlobalValue()
2055 Token.range() + "'"); in parseGlobalValue()
2060 if (getUnsigned(Token, GVIdx, ErrCB)) in parseGlobalValue()
2063 return ErrCB(Token.location(), Twine("use of undefined global value '@") + in parseGlobalValue()
2076 Token, PFS, GV, in parseGlobalValue()
2094 assert(Token.is(MIToken::ConstantPoolItem)); in parseConstantPoolIndexOperand()
2109 assert(Token.is(MIToken::JumpTableIndex)); in parseJumpTableIndexOperand()
2122 assert(Token.is(MIToken::ExternalSymbol)); in parseExternalSymbolOperand()
2123 const char *Symbol = MF.createExternalSymbolName(Token.stringValue()); in parseExternalSymbolOperand()
2132 assert(Token.is(MIToken::MCSymbol)); in parseMCSymbolOperand()
2133 MCSymbol *Symbol = getOrCreateMCSymbol(Token.stringValue()); in parseMCSymbolOperand()
2142 assert(Token.is(MIToken::SubRegisterIndex)); in parseSubRegisterIndexOperand()
2143 StringRef Name = Token.stringValue(); in parseSubRegisterIndexOperand()
2144 unsigned SubRegIndex = PFS.Target.getSubRegIndex(Token.stringValue()); in parseSubRegisterIndexOperand()
2153 assert(Token.is(MIToken::exclaim)); in parseMDNode()
2155 auto Loc = Token.location(); in parseMDNode()
2157 if (Token.isNot(MIToken::IntegerLiteral) || Token.integerValue().isSigned()) in parseMDNode()
2174 assert(Token.is(MIToken::md_diexpr)); in parseDIExpression()
2183 if (Token.isNot(MIToken::rparen)) { in parseDIExpression()
2185 if (Token.is(MIToken::Identifier)) { in parseDIExpression()
2186 if (unsigned Op = dwarf::getOperationEncoding(Token.stringValue())) { in parseDIExpression()
2191 if (unsigned Enc = dwarf::getAttributeEncoding(Token.stringValue())) { in parseDIExpression()
2196 return error(Twine("invalid DWARF op '") + Token.stringValue() + "'"); in parseDIExpression()
2199 if (Token.isNot(MIToken::IntegerLiteral) || in parseDIExpression()
2200 Token.integerValue().isSigned()) in parseDIExpression()
2203 auto &U = Token.integerValue(); in parseDIExpression()
2220 assert(Token.is(MIToken::md_dilocation)); in parseDILocation()
2233 if (Token.isNot(MIToken::rparen)) { in parseDILocation()
2235 if (Token.is(MIToken::Identifier)) { in parseDILocation()
2236 if (Token.stringValue() == "line") { in parseDILocation()
2240 if (Token.isNot(MIToken::IntegerLiteral) || in parseDILocation()
2241 Token.integerValue().isSigned()) in parseDILocation()
2243 Line = Token.integerValue().getZExtValue(); in parseDILocation()
2248 if (Token.stringValue() == "column") { in parseDILocation()
2252 if (Token.isNot(MIToken::IntegerLiteral) || in parseDILocation()
2253 Token.integerValue().isSigned()) in parseDILocation()
2255 Column = Token.integerValue().getZExtValue(); in parseDILocation()
2259 if (Token.stringValue() == "scope") { in parseDILocation()
2269 if (Token.stringValue() == "inlinedAt") { in parseDILocation()
2273 if (Token.is(MIToken::exclaim)) { in parseDILocation()
2276 } else if (Token.is(MIToken::md_dilocation)) { in parseDILocation()
2285 if (Token.stringValue() == "isImplicitCode") { in parseDILocation()
2289 if (!Token.is(MIToken::Identifier)) in parseDILocation()
2294 if (Token.stringValue() == "true") in parseDILocation()
2296 else if (Token.stringValue() == "false") in parseDILocation()
2305 Token.stringValue() + "'"); in parseDILocation()
2324 if (Token.is(MIToken::exclaim)) { in parseMetadataOperand()
2327 } else if (Token.is(MIToken::md_diexpr)) { in parseMetadataOperand()
2336 if (Token.isNot(MIToken::IntegerLiteral)) in parseCFIOffset()
2338 if (Token.integerValue().getMinSignedBits() > 32) in parseCFIOffset()
2340 Offset = (int)Token.integerValue().getExtValue(); in parseCFIOffset()
2346 if (Token.isNot(MIToken::NamedRegister)) in parseCFIRegister()
2362 if (Token.isNot(MIToken::IntegerLiteral)) in parseCFIAddressSpace()
2364 if (Token.integerValue().isSigned()) in parseCFIAddressSpace()
2366 AddressSpace = Token.integerValue().getZExtValue(); in parseCFIAddressSpace()
2373 if (Token.isNot(MIToken::HexLiteral)) in parseCFIEscapeValues()
2387 auto Kind = Token.kind(); in parseCFIOperand()
2494 switch (Token.kind()) { in parseIRBlock()
2497 F.getValueSymbolTable()->lookup(Token.stringValue())); in parseIRBlock()
2499 return error(Twine("use of undefined IR block '") + Token.range() + "'"); in parseIRBlock()
2519 assert(Token.is(MIToken::kw_blockaddress)); in parseBlockAddressOperand()
2523 if (Token.isNot(MIToken::GlobalValue) && in parseBlockAddressOperand()
2524 Token.isNot(MIToken::NamedGlobalValue)) in parseBlockAddressOperand()
2536 if (Token.isNot(MIToken::IRBlock) && Token.isNot(MIToken::NamedIRBlock)) in parseBlockAddressOperand()
2550 assert(Token.is(MIToken::kw_intrinsic)); in parseIntrinsicOperand()
2555 if (Token.isNot(MIToken::NamedGlobalValue)) in parseIntrinsicOperand()
2558 std::string Name = std::string(Token.stringValue()); in parseIntrinsicOperand()
2579 assert(Token.is(MIToken::kw_intpred) || Token.is(MIToken::kw_floatpred)); in parsePredicateOperand()
2580 bool IsFloat = Token.is(MIToken::kw_floatpred); in parsePredicateOperand()
2586 if (Token.isNot(MIToken::Identifier)) in parsePredicateOperand()
2591 Pred = StringSwitch<CmpInst::Predicate>(Token.stringValue()) in parsePredicateOperand()
2612 Pred = StringSwitch<CmpInst::Predicate>(Token.stringValue()) in parsePredicateOperand()
2637 assert(Token.is(MIToken::kw_shufflemask)); in parseShuffleMaskOperand()
2645 if (Token.is(MIToken::kw_undef)) { in parseShuffleMaskOperand()
2647 } else if (Token.is(MIToken::IntegerLiteral)) { in parseShuffleMaskOperand()
2648 const APSInt &Int = Token.integerValue(); in parseShuffleMaskOperand()
2665 assert(Token.is(MIToken::kw_target_index)); in parseTargetIndexOperand()
2669 if (Token.isNot(MIToken::Identifier)) in parseTargetIndexOperand()
2672 if (PFS.Target.getTargetIndex(Token.stringValue(), Index)) in parseTargetIndexOperand()
2673 return error("use of undefined target index '" + Token.stringValue() + "'"); in parseTargetIndexOperand()
2684 assert(Token.stringValue() == "CustomRegMask" && "Expected a custom RegMask"); in parseCustomRegisterMaskOperand()
2691 if (Token.isNot(MIToken::NamedRegister)) in parseCustomRegisterMaskOperand()
2699 if (Token.isNot(MIToken::comma)) in parseCustomRegisterMaskOperand()
2711 assert(Token.is(MIToken::kw_liveout)); in parseLiveoutRegisterMaskOperand()
2717 if (Token.isNot(MIToken::NamedRegister)) in parseLiveoutRegisterMaskOperand()
2725 if (Token.isNot(MIToken::comma)) in parseLiveoutRegisterMaskOperand()
2738 switch (Token.kind()) { in parseMachineOperand()
2818 if (const auto *RegMask = PFS.Target.getRegMask(Token.stringValue())) { in parseMachineOperand()
2822 } else if (Token.stringValue() == "CustomRegMask") { in parseMachineOperand()
2845 if (Token.is(MIToken::kw_target_flags)) { in parseMachineOperandAndTargetFlags()
2850 if (Token.isNot(MIToken::Identifier)) in parseMachineOperandAndTargetFlags()
2852 if (PFS.Target.getDirectTargetFlag(Token.stringValue(), TF)) { in parseMachineOperandAndTargetFlags()
2853 if (PFS.Target.getBitmaskTargetFlag(Token.stringValue(), TF)) in parseMachineOperandAndTargetFlags()
2854 return error("use of undefined target flag '" + Token.stringValue() + in parseMachineOperandAndTargetFlags()
2858 while (Token.is(MIToken::comma)) { in parseMachineOperandAndTargetFlags()
2860 if (Token.isNot(MIToken::Identifier)) in parseMachineOperandAndTargetFlags()
2863 if (PFS.Target.getBitmaskTargetFlag(Token.stringValue(), BitFlag)) in parseMachineOperandAndTargetFlags()
2864 return error("use of undefined target flag '" + Token.stringValue() + in parseMachineOperandAndTargetFlags()
2873 auto Loc = Token.location(); in parseMachineOperandAndTargetFlags()
2885 if (Token.isNot(MIToken::plus) && Token.isNot(MIToken::minus)) in parseOffset()
2887 StringRef Sign = Token.range(); in parseOffset()
2888 bool IsNegative = Token.is(MIToken::minus); in parseOffset()
2890 if (Token.isNot(MIToken::IntegerLiteral)) in parseOffset()
2892 if (Token.integerValue().getMinSignedBits() > 64) in parseOffset()
2894 Offset = Token.integerValue().getExtValue(); in parseOffset()
2902 assert(Token.is(MIToken::kw_align) || Token.is(MIToken::kw_basealign)); in parseAlignment()
2904 if (Token.isNot(MIToken::IntegerLiteral) || Token.integerValue().isSigned()) in parseAlignment()
2917 assert(Token.is(MIToken::kw_addrspace)); in parseAddrspace()
2919 if (Token.isNot(MIToken::IntegerLiteral) || Token.integerValue().isSigned()) in parseAddrspace()
2935 static bool parseIRValue(const MIToken &Token, PerFunctionMIParsingState &PFS, in parseIRValue() argument
2937 switch (Token.kind()) { in parseIRValue()
2939 V = PFS.MF.getFunction().getValueSymbolTable()->lookup(Token.stringValue()); in parseIRValue()
2944 if (getUnsigned(Token, SlotNumber, ErrCB)) in parseIRValue()
2952 if (parseGlobalValue(Token, PFS, GV, ErrCB)) in parseIRValue()
2959 if (parseIRConstant(Token.location(), Token.stringValue(), PFS, C, ErrCB)) in parseIRValue()
2971 return ErrCB(Token.location(), Twine("use of undefined IR value '") + Token.range() + "'"); in parseIRValue()
2977 Token, PFS, V, [this](StringRef::iterator Loc, const Twine &Msg) -> bool { in parseIRValue()
2983 if (Token.hasIntegerValue()) { in getUint64()
2984 if (Token.integerValue().getActiveBits() > 64) in getUint64()
2986 Result = Token.integerValue().getZExtValue(); in getUint64()
2989 if (Token.is(MIToken::HexLiteral)) { in getUint64()
3002 return ::getHexUint(Token, Result); in getHexUint()
3007 switch (Token.kind()) { in parseMemoryOperandFlag()
3022 if (PFS.Target.getMMOTargetFlag(Token.stringValue(), TF)) in parseMemoryOperandFlag()
3023 return error("use of undefined target MMO flag '" + Token.stringValue() + in parseMemoryOperandFlag()
3034 return error("duplicate '" + Token.stringValue() + "' memory operand flag"); in parseMemoryOperandFlag()
3040 switch (Token.kind()) { in parseMemoryPseudoSourceValue()
3071 switch (Token.kind()) { in parseMemoryPseudoSourceValue()
3082 MF.createExternalSymbolName(Token.stringValue())); in parseMemoryPseudoSourceValue()
3094 Token.stringValue(), MF, PFS, PSV, in parseMemoryPseudoSourceValue()
3111 if (Token.is(MIToken::kw_constant_pool) || Token.is(MIToken::kw_stack) || in parseMachinePointerInfo()
3112 Token.is(MIToken::kw_got) || Token.is(MIToken::kw_jump_table) || in parseMachinePointerInfo()
3113 Token.is(MIToken::FixedStackObject) || Token.is(MIToken::StackObject) || in parseMachinePointerInfo()
3114 Token.is(MIToken::kw_call_entry) || Token.is(MIToken::kw_custom)) { in parseMachinePointerInfo()
3124 if (Token.isNot(MIToken::NamedIRValue) && Token.isNot(MIToken::IRValue) && in parseMachinePointerInfo()
3125 Token.isNot(MIToken::GlobalValue) && in parseMachinePointerInfo()
3126 Token.isNot(MIToken::NamedGlobalValue) && in parseMachinePointerInfo()
3127 Token.isNot(MIToken::QuotedIRValue) && in parseMachinePointerInfo()
3128 Token.isNot(MIToken::kw_unknown_address)) in parseMachinePointerInfo()
3146 if (Token.is(MIToken::Identifier) && Token.stringValue() == "syncscope") { in parseOptionalScope()
3165 if (Token.isNot(MIToken::Identifier)) in parseOptionalAtomicOrdering()
3168 Order = StringSwitch<AtomicOrdering>(Token.stringValue()) in parseOptionalAtomicOrdering()
3189 while (Token.isMemoryOperandFlag()) { in parseMachineMemoryOperand()
3193 if (Token.isNot(MIToken::Identifier) || in parseMachineMemoryOperand()
3194 (Token.stringValue() != "load" && Token.stringValue() != "store")) in parseMachineMemoryOperand()
3196 if (Token.stringValue() == "load") in parseMachineMemoryOperand()
3203 if (Token.is(MIToken::Identifier) && Token.stringValue() == "store") { in parseMachineMemoryOperand()
3222 if (Token.isNot(MIToken::IntegerLiteral) && in parseMachineMemoryOperand()
3223 Token.isNot(MIToken::kw_unknown_size) && in parseMachineMemoryOperand()
3224 Token.isNot(MIToken::lparen)) in parseMachineMemoryOperand()
3229 if (Token.is(MIToken::IntegerLiteral)) { in parseMachineMemoryOperand()
3236 } else if (Token.is(MIToken::kw_unknown_size)) { in parseMachineMemoryOperand()
3242 if (parseLowLevelType(Token.location(), MemoryType)) in parseMachineMemoryOperand()
3251 if (Token.is(MIToken::Identifier)) { in parseMachineMemoryOperand()
3257 if (Token.stringValue() != Word) in parseMachineMemoryOperand()
3269 switch (Token.kind()) { in parseMachineMemoryOperand()
3318 assert((Token.is(MIToken::kw_pre_instr_symbol) || in parsePreOrPostInstrSymbol()
3319 Token.is(MIToken::kw_post_instr_symbol)) && in parsePreOrPostInstrSymbol()
3322 if (Token.isNot(MIToken::MCSymbol)) in parsePreOrPostInstrSymbol()
3324 Symbol = getOrCreateMCSymbol(Token.stringValue()); in parsePreOrPostInstrSymbol()
3326 if (Token.isNewlineOrEOF() || Token.is(MIToken::coloncolon) || in parsePreOrPostInstrSymbol()
3327 Token.is(MIToken::lbrace)) in parsePreOrPostInstrSymbol()
3329 if (Token.isNot(MIToken::comma)) in parsePreOrPostInstrSymbol()
3336 assert(Token.is(MIToken::kw_heap_alloc_marker) && in parseHeapAllocMarker()
3342 if (Token.isNewlineOrEOF() || Token.is(MIToken::coloncolon) || in parseHeapAllocMarker()
3343 Token.is(MIToken::lbrace)) in parseHeapAllocMarker()
3345 if (Token.isNot(MIToken::comma)) in parseHeapAllocMarker()
3396 if (Token.isNot(MIToken::StringConstant)) in parseStringConstant()
3398 Result = std::string(Token.stringValue()); in parseStringConstant()
3457 MIToken Token; in parseIRValue() local
3458 Src = lexMIToken(Src, Token, [&](StringRef::iterator Loc, const Twine &Msg) { in parseIRValue()
3463 return ::parseIRValue(Token, PFS, V, ErrorCallback); in parseIRValue()