Lines Matching refs:Token
396 MIToken Token; member in __anon2336dc8b0111::MIParser
577 CurrentSource.slice(SkipChar, StringRef::npos), Token, in lex()
581 bool MIParser::error(const Twine &Msg) { return error(Token.location(), Msg); } in error()
628 if (Token.isNot(TokenKind)) in expectAndConsume()
635 if (Token.isNot(TokenKind)) in consumeIfPresent()
643 assert(Token.is(MIToken::kw_bbsections)); in parseSectionID()
645 if (Token.is(MIToken::IntegerLiteral)) { in parseSectionID()
651 const StringRef &S = Token.stringValue(); in parseSectionID()
665 assert(Token.is(MIToken::MachineBasicBlockLabel)); in parseBasicBlockDefinition()
669 auto Loc = Token.location(); in parseBasicBlockDefinition()
670 auto Name = Token.stringValue(); in parseBasicBlockDefinition()
682 switch (Token.kind()) { in parseBasicBlockDefinition()
755 while (Token.is(MIToken::Newline)) in parseBasicBlockDefinitions()
757 if (Token.isErrorOrEOF()) in parseBasicBlockDefinitions()
758 return Token.isError(); in parseBasicBlockDefinitions()
759 if (Token.isNot(MIToken::MachineBasicBlockLabel)) in parseBasicBlockDefinitions()
768 if ((Token.is(MIToken::MachineBasicBlockLabel) && IsAfterNewline) || in parseBasicBlockDefinitions()
769 Token.isErrorOrEOF()) in parseBasicBlockDefinitions()
771 else if (Token.is(MIToken::MachineBasicBlockLabel)) in parseBasicBlockDefinitions()
779 if (Token.is(MIToken::lbrace)) in parseBasicBlockDefinitions()
781 if (Token.is(MIToken::rbrace)) { in parseBasicBlockDefinitions()
789 if (!Token.isError() && BraceDepth) in parseBasicBlockDefinitions()
791 } while (!Token.isErrorOrEOF()); in parseBasicBlockDefinitions()
792 return Token.isError(); in parseBasicBlockDefinitions()
796 assert(Token.is(MIToken::kw_liveins)); in parseBasicBlockLiveins()
800 if (Token.isNewlineOrEOF()) // Allow an empty list of liveins. in parseBasicBlockLiveins()
803 if (Token.isNot(MIToken::NamedRegister)) in parseBasicBlockLiveins()
812 if (Token.isNot(MIToken::IntegerLiteral) && in parseBasicBlockLiveins()
813 Token.isNot(MIToken::HexLiteral)) in parseBasicBlockLiveins()
829 assert(Token.is(MIToken::kw_successors)); in parseBasicBlockSuccessors()
833 if (Token.isNewlineOrEOF()) // Allow an empty list of successors. in parseBasicBlockSuccessors()
836 if (Token.isNot(MIToken::MachineBasicBlock)) in parseBasicBlockSuccessors()
844 if (Token.isNot(MIToken::IntegerLiteral) && in parseBasicBlockSuccessors()
845 Token.isNot(MIToken::HexLiteral)) in parseBasicBlockSuccessors()
862 assert(Token.is(MIToken::MachineBasicBlockLabel)); in parseBasicBlock()
865 while (Token.isNot(MIToken::rparen) && !Token.isErrorOrEOF()) in parseBasicBlock()
882 if (Token.is(MIToken::kw_successors)) { in parseBasicBlock()
886 } else if (Token.is(MIToken::kw_liveins)) { in parseBasicBlock()
893 if (!Token.isNewlineOrEOF()) in parseBasicBlock()
901 while (!Token.is(MIToken::MachineBasicBlockLabel) && in parseBasicBlock()
902 !Token.is(MIToken::Eof)) { in parseBasicBlock()
921 if (Token.is(MIToken::lbrace)) { in parseBasicBlock()
928 if (!Token.is(MIToken::Newline)) in parseBasicBlock()
932 assert(Token.isNewlineOrEOF() && "MI is not fully parsed"); in parseBasicBlock()
957 while (Token.is(MIToken::Newline)) in parseBasicBlocks()
959 if (Token.isErrorOrEOF()) in parseBasicBlocks()
960 return Token.isError(); in parseBasicBlocks()
963 assert(Token.is(MIToken::MachineBasicBlockLabel)); in parseBasicBlocks()
979 assert(Token.is(MIToken::MachineBasicBlockLabel) || Token.is(MIToken::Eof)); in parseBasicBlocks()
980 } while (Token.isNot(MIToken::Eof)); in parseBasicBlocks()
988 while (Token.isRegister() || Token.isRegisterFlag()) { in parse()
989 auto Loc = Token.location(); in parse()
994 ParsedMachineOperand(MO, Loc, Token.location(), TiedDefIdx)); in parse()
995 if (Token.isNot(MIToken::comma)) in parse()
1003 if (Token.isError() || parseInstruction(OpCode, Flags)) in parse()
1007 while (!Token.isNewlineOrEOF() && Token.isNot(MIToken::kw_pre_instr_symbol) && in parse()
1008 Token.isNot(MIToken::kw_post_instr_symbol) && in parse()
1009 Token.isNot(MIToken::kw_heap_alloc_marker) && in parse()
1010 Token.isNot(MIToken::kw_debug_location) && in parse()
1011 Token.isNot(MIToken::kw_debug_instr_number) && in parse()
1012 Token.isNot(MIToken::coloncolon) && Token.isNot(MIToken::lbrace)) { in parse()
1013 auto Loc = Token.location(); in parse()
1018 ParsedMachineOperand(MO, Loc, Token.location(), TiedDefIdx)); in parse()
1019 if (Token.isNewlineOrEOF() || Token.is(MIToken::coloncolon) || in parse()
1020 Token.is(MIToken::lbrace)) in parse()
1022 if (Token.isNot(MIToken::comma)) in parse()
1028 if (Token.is(MIToken::kw_pre_instr_symbol)) in parse()
1032 if (Token.is(MIToken::kw_post_instr_symbol)) in parse()
1036 if (Token.is(MIToken::kw_heap_alloc_marker)) in parse()
1041 if (Token.is(MIToken::kw_debug_instr_number)) { in parse()
1043 if (Token.isNot(MIToken::IntegerLiteral)) in parse()
1049 if (Token.is(MIToken::comma)) in parse()
1054 if (Token.is(MIToken::kw_debug_location)) { in parse()
1057 if (Token.is(MIToken::exclaim)) { in parse()
1060 } else if (Token.is(MIToken::md_dilocation)) { in parse()
1072 if (Token.is(MIToken::coloncolon)) { in parse()
1074 while (!Token.isNewlineOrEOF()) { in parse()
1079 if (Token.isNewlineOrEOF()) in parse()
1081 if (Token.isNot(MIToken::comma)) in parse()
1128 if (Token.isNot(MIToken::MachineBasicBlock)) in parseStandaloneMBB()
1133 if (Token.isNot(MIToken::Eof)) in parseStandaloneMBB()
1141 if (Token.isNot(MIToken::NamedRegister)) in parseStandaloneNamedRegister()
1146 if (Token.isNot(MIToken::Eof)) in parseStandaloneNamedRegister()
1153 if (Token.isNot(MIToken::VirtualRegister)) in parseStandaloneVirtualRegister()
1158 if (Token.isNot(MIToken::Eof)) in parseStandaloneVirtualRegister()
1165 if (Token.isNot(MIToken::NamedRegister) && in parseStandaloneRegister()
1166 Token.isNot(MIToken::VirtualRegister)) in parseStandaloneRegister()
1174 if (Token.isNot(MIToken::Eof)) in parseStandaloneRegister()
1181 if (Token.isNot(MIToken::StackObject)) in parseStandaloneStackObject()
1185 if (Token.isNot(MIToken::Eof)) in parseStandaloneStackObject()
1192 if (Token.is(MIToken::exclaim)) { in parseStandaloneMDNode()
1195 } else if (Token.is(MIToken::md_diexpr)) { in parseStandaloneMDNode()
1198 } else if (Token.is(MIToken::md_dilocation)) { in parseStandaloneMDNode()
1203 if (Token.isNot(MIToken::Eof)) in parseStandaloneMDNode()
1210 if (Token.isNot(MIToken::exclaim)) in parseMachineMetadata()
1214 if (Token.isNot(MIToken::IntegerLiteral) || Token.integerValue().isSigned()) in parseMachineMetadata()
1222 bool IsDistinct = Token.is(MIToken::kw_distinct); in parseMachineMetadata()
1225 if (Token.isNot(MIToken::exclaim)) in parseMachineMetadata()
1258 if (Token.isNot(MIToken::lbrace)) in parseMDNodeVector()
1262 if (Token.is(MIToken::rbrace)) { in parseMDNodeVector()
1274 if (Token.isNot(MIToken::comma)) in parseMDNodeVector()
1279 if (Token.isNot(MIToken::rbrace)) in parseMDNodeVector()
1289 if (Token.isNot(MIToken::exclaim)) in parseMetadata()
1293 if (Token.is(MIToken::StringConstant)) { in parseMetadata()
1301 if (Token.isNot(MIToken::IntegerLiteral) || Token.integerValue().isSigned()) in parseMetadata()
1304 SMLoc Loc = mapSMLoc(Token.location()); in parseMetadata()
1376 return error(Operands.empty() ? Token.location() : Operands.back().End, in verifyImplicitOperands()
1386 while (Token.is(MIToken::kw_frame_setup) || in parseInstruction()
1387 Token.is(MIToken::kw_frame_destroy) || in parseInstruction()
1388 Token.is(MIToken::kw_nnan) || in parseInstruction()
1389 Token.is(MIToken::kw_ninf) || in parseInstruction()
1390 Token.is(MIToken::kw_nsz) || in parseInstruction()
1391 Token.is(MIToken::kw_arcp) || in parseInstruction()
1392 Token.is(MIToken::kw_contract) || in parseInstruction()
1393 Token.is(MIToken::kw_afn) || in parseInstruction()
1394 Token.is(MIToken::kw_reassoc) || in parseInstruction()
1395 Token.is(MIToken::kw_nuw) || in parseInstruction()
1396 Token.is(MIToken::kw_nsw) || in parseInstruction()
1397 Token.is(MIToken::kw_exact) || in parseInstruction()
1398 Token.is(MIToken::kw_nofpexcept)) { in parseInstruction()
1400 if (Token.is(MIToken::kw_frame_setup)) in parseInstruction()
1402 if (Token.is(MIToken::kw_frame_destroy)) in parseInstruction()
1404 if (Token.is(MIToken::kw_nnan)) in parseInstruction()
1406 if (Token.is(MIToken::kw_ninf)) in parseInstruction()
1408 if (Token.is(MIToken::kw_nsz)) in parseInstruction()
1410 if (Token.is(MIToken::kw_arcp)) in parseInstruction()
1412 if (Token.is(MIToken::kw_contract)) in parseInstruction()
1414 if (Token.is(MIToken::kw_afn)) in parseInstruction()
1416 if (Token.is(MIToken::kw_reassoc)) in parseInstruction()
1418 if (Token.is(MIToken::kw_nuw)) in parseInstruction()
1420 if (Token.is(MIToken::kw_nsw)) in parseInstruction()
1422 if (Token.is(MIToken::kw_exact)) in parseInstruction()
1424 if (Token.is(MIToken::kw_nofpexcept)) in parseInstruction()
1429 if (Token.isNot(MIToken::Identifier)) in parseInstruction()
1431 StringRef InstrName = Token.stringValue(); in parseInstruction()
1439 assert(Token.is(MIToken::NamedRegister) && "Needs NamedRegister token"); in parseNamedRegister()
1440 StringRef Name = Token.stringValue(); in parseNamedRegister()
1447 assert(Token.is(MIToken::NamedVirtualRegister) && "Expected NamedVReg token"); in parseNamedVirtualRegister()
1448 StringRef Name = Token.stringValue(); in parseNamedVirtualRegister()
1456 if (Token.is(MIToken::NamedVirtualRegister)) in parseVirtualRegister()
1458 assert(Token.is(MIToken::VirtualRegister) && "Needs VirtualRegister token"); in parseVirtualRegister()
1467 switch (Token.kind()) { in parseRegister()
1486 if (Token.isNot(MIToken::Identifier) && Token.isNot(MIToken::underscore)) in parseRegisterClassOrBank()
1488 StringRef::iterator Loc = Token.location(); in parseRegisterClassOrBank()
1489 StringRef Name = Token.stringValue(); in parseRegisterClassOrBank()
1545 switch (Token.kind()) { in parseRegisterFlag()
1582 return error("duplicate '" + Token.stringValue() + "' register flag"); in parseRegisterFlag()
1588 assert(Token.is(MIToken::dot)); in parseSubRegisterIndex()
1590 if (Token.isNot(MIToken::Identifier)) in parseSubRegisterIndex()
1592 auto Name = Token.stringValue(); in parseSubRegisterIndex()
1603 if (Token.isNot(MIToken::IntegerLiteral)) in parseRegisterTiedDefIndex()
1654 while (Token.isRegisterFlag()) { in parseRegisterOperand()
1658 if (!Token.isRegister()) in parseRegisterOperand()
1666 if (Token.is(MIToken::dot)) { in parseRegisterOperand()
1672 if (Token.is(MIToken::colon)) { in parseRegisterOperand()
1688 if (parseLowLevelType(Token.location(), Ty)) in parseRegisterOperand()
1707 if (parseLowLevelType(Token.location(), Ty)) in parseRegisterOperand()
1745 assert(Token.is(MIToken::IntegerLiteral)); in parseImmediateOperand()
1746 const APSInt &Int = Token.integerValue(); in parseImmediateOperand()
1758 assert(Token.is(MIToken::dot)); in parseTargetImmMnemonic()
1759 auto Loc = Token.location(); // record start position in parseTargetImmMnemonic()
1764 if (Token.is(MIToken::IntegerLiteral)) { in parseTargetImmMnemonic()
1765 Len += Token.range().size(); in parseTargetImmMnemonic()
1770 if (Token.is(MIToken::comma)) in parseTargetImmMnemonic()
1773 assert(Token.is(MIToken::Identifier)); in parseTargetImmMnemonic()
1774 Src = StringRef(Loc, Len + Token.stringValue().size()); in parseTargetImmMnemonic()
1783 if (!Token.is(MIToken::comma)) in parseTargetImmMnemonic()
1810 if (parseIRConstant(Loc, StringRef(Loc, Token.range().end() - Loc), C)) in parseIRConstant()
1830 if (Token.range().front() == 's' || Token.range().front() == 'p') { in parseLowLevelType()
1831 StringRef SizeStr = Token.range().drop_front(); in parseLowLevelType()
1836 if (Token.range().front() == 's') { in parseLowLevelType()
1837 auto ScalarSize = APSInt(Token.range().drop_front()).getZExtValue(); in parseLowLevelType()
1844 } else if (Token.range().front() == 'p') { in parseLowLevelType()
1846 uint64_t AS = APSInt(Token.range().drop_front()).getZExtValue(); in parseLowLevelType()
1856 if (Token.isNot(MIToken::less)) in parseLowLevelType()
1861 if (Token.isNot(MIToken::IntegerLiteral)) in parseLowLevelType()
1863 uint64_t NumElements = Token.integerValue().getZExtValue(); in parseLowLevelType()
1869 if (Token.isNot(MIToken::Identifier) || Token.stringValue() != "x") in parseLowLevelType()
1873 if (Token.range().front() != 's' && Token.range().front() != 'p') in parseLowLevelType()
1875 StringRef SizeStr = Token.range().drop_front(); in parseLowLevelType()
1879 if (Token.range().front() == 's') { in parseLowLevelType()
1880 auto ScalarSize = APSInt(Token.range().drop_front()).getZExtValue(); in parseLowLevelType()
1884 } else if (Token.range().front() == 'p') { in parseLowLevelType()
1886 uint64_t AS = APSInt(Token.range().drop_front()).getZExtValue(); in parseLowLevelType()
1895 if (Token.isNot(MIToken::greater)) in parseLowLevelType()
1904 assert(Token.is(MIToken::Identifier)); in parseTypedImmediateOperand()
1905 StringRef TypeStr = Token.range(); in parseTypedImmediateOperand()
1910 StringRef SizeStr = Token.range().drop_front(); in parseTypedImmediateOperand()
1914 auto Loc = Token.location(); in parseTypedImmediateOperand()
1916 if (Token.isNot(MIToken::IntegerLiteral)) { in parseTypedImmediateOperand()
1917 if (Token.isNot(MIToken::Identifier) || in parseTypedImmediateOperand()
1918 !(Token.range() == "true" || Token.range() == "false")) in parseTypedImmediateOperand()
1929 auto Loc = Token.location(); in parseFPImmediateOperand()
1931 if (Token.isNot(MIToken::FloatingPointLiteral) && in parseFPImmediateOperand()
1932 Token.isNot(MIToken::HexLiteral)) in parseFPImmediateOperand()
1941 static bool getHexUint(const MIToken &Token, APInt &Result) { in getHexUint() argument
1942 assert(Token.is(MIToken::HexLiteral)); in getHexUint()
1943 StringRef S = Token.range(); in getHexUint()
1958 static bool getUnsigned(const MIToken &Token, unsigned &Result, in getUnsigned() argument
1960 if (Token.hasIntegerValue()) { in getUnsigned()
1962 uint64_t Val64 = Token.integerValue().getLimitedValue(Limit); in getUnsigned()
1964 return ErrCB(Token.location(), "expected 32-bit integer (too large)"); in getUnsigned()
1968 if (Token.is(MIToken::HexLiteral)) { in getUnsigned()
1970 if (getHexUint(Token, A)) in getUnsigned()
1973 return ErrCB(Token.location(), "expected 32-bit integer (too large)"); in getUnsigned()
1982 Token, Result, [this](StringRef::iterator Loc, const Twine &Msg) -> bool { in getUnsigned()
1988 assert(Token.is(MIToken::MachineBasicBlock) || in parseMBBReference()
1989 Token.is(MIToken::MachineBasicBlockLabel)); in parseMBBReference()
2000 if (!Token.stringValue().empty() && Token.stringValue() != MBB->getName()) in parseMBBReference()
2002 " isn't '" + Token.stringValue() + "'"); in parseMBBReference()
2016 assert(Token.is(MIToken::StackObject)); in parseStackFrameIndex()
2028 if (!Token.stringValue().empty() && Token.stringValue() != Name) in parseStackFrameIndex()
2030 "' isn't '" + Token.stringValue() + "'"); in parseStackFrameIndex()
2045 assert(Token.is(MIToken::FixedStackObject)); in parseFixedStackFrameIndex()
2066 static bool parseGlobalValue(const MIToken &Token, in parseGlobalValue() argument
2069 switch (Token.kind()) { in parseGlobalValue()
2072 GV = M->getNamedValue(Token.stringValue()); in parseGlobalValue()
2074 return ErrCB(Token.location(), Twine("use of undefined global value '") + in parseGlobalValue()
2075 Token.range() + "'"); in parseGlobalValue()
2080 if (getUnsigned(Token, GVIdx, ErrCB)) in parseGlobalValue()
2083 return ErrCB(Token.location(), Twine("use of undefined global value '@") + in parseGlobalValue()
2096 Token, PFS, GV, in parseGlobalValue()
2114 assert(Token.is(MIToken::ConstantPoolItem)); in parseConstantPoolIndexOperand()
2129 assert(Token.is(MIToken::JumpTableIndex)); in parseJumpTableIndexOperand()
2142 assert(Token.is(MIToken::ExternalSymbol)); in parseExternalSymbolOperand()
2143 const char *Symbol = MF.createExternalSymbolName(Token.stringValue()); in parseExternalSymbolOperand()
2152 assert(Token.is(MIToken::MCSymbol)); in parseMCSymbolOperand()
2153 MCSymbol *Symbol = getOrCreateMCSymbol(Token.stringValue()); in parseMCSymbolOperand()
2162 assert(Token.is(MIToken::SubRegisterIndex)); in parseSubRegisterIndexOperand()
2163 StringRef Name = Token.stringValue(); in parseSubRegisterIndexOperand()
2164 unsigned SubRegIndex = PFS.Target.getSubRegIndex(Token.stringValue()); in parseSubRegisterIndexOperand()
2173 assert(Token.is(MIToken::exclaim)); in parseMDNode()
2175 auto Loc = Token.location(); in parseMDNode()
2177 if (Token.isNot(MIToken::IntegerLiteral) || Token.integerValue().isSigned()) in parseMDNode()
2194 assert(Token.is(MIToken::md_diexpr)); in parseDIExpression()
2203 if (Token.isNot(MIToken::rparen)) { in parseDIExpression()
2205 if (Token.is(MIToken::Identifier)) { in parseDIExpression()
2206 if (unsigned Op = dwarf::getOperationEncoding(Token.stringValue())) { in parseDIExpression()
2211 if (unsigned Enc = dwarf::getAttributeEncoding(Token.stringValue())) { in parseDIExpression()
2216 return error(Twine("invalid DWARF op '") + Token.stringValue() + "'"); in parseDIExpression()
2219 if (Token.isNot(MIToken::IntegerLiteral) || in parseDIExpression()
2220 Token.integerValue().isSigned()) in parseDIExpression()
2223 auto &U = Token.integerValue(); in parseDIExpression()
2240 assert(Token.is(MIToken::md_dilocation)); in parseDILocation()
2253 if (Token.isNot(MIToken::rparen)) { in parseDILocation()
2255 if (Token.is(MIToken::Identifier)) { in parseDILocation()
2256 if (Token.stringValue() == "line") { in parseDILocation()
2260 if (Token.isNot(MIToken::IntegerLiteral) || in parseDILocation()
2261 Token.integerValue().isSigned()) in parseDILocation()
2263 Line = Token.integerValue().getZExtValue(); in parseDILocation()
2268 if (Token.stringValue() == "column") { in parseDILocation()
2272 if (Token.isNot(MIToken::IntegerLiteral) || in parseDILocation()
2273 Token.integerValue().isSigned()) in parseDILocation()
2275 Column = Token.integerValue().getZExtValue(); in parseDILocation()
2279 if (Token.stringValue() == "scope") { in parseDILocation()
2289 if (Token.stringValue() == "inlinedAt") { in parseDILocation()
2293 if (Token.is(MIToken::exclaim)) { in parseDILocation()
2296 } else if (Token.is(MIToken::md_dilocation)) { in parseDILocation()
2305 if (Token.stringValue() == "isImplicitCode") { in parseDILocation()
2309 if (!Token.is(MIToken::Identifier)) in parseDILocation()
2314 if (Token.stringValue() == "true") in parseDILocation()
2316 else if (Token.stringValue() == "false") in parseDILocation()
2325 Token.stringValue() + "'"); in parseDILocation()
2344 if (Token.is(MIToken::exclaim)) { in parseMetadataOperand()
2347 } else if (Token.is(MIToken::md_diexpr)) { in parseMetadataOperand()
2356 if (Token.isNot(MIToken::IntegerLiteral)) in parseCFIOffset()
2358 if (Token.integerValue().getMinSignedBits() > 32) in parseCFIOffset()
2360 Offset = (int)Token.integerValue().getExtValue(); in parseCFIOffset()
2366 if (Token.isNot(MIToken::NamedRegister)) in parseCFIRegister()
2382 if (Token.isNot(MIToken::IntegerLiteral)) in parseCFIAddressSpace()
2384 if (Token.integerValue().isSigned()) in parseCFIAddressSpace()
2386 AddressSpace = Token.integerValue().getZExtValue(); in parseCFIAddressSpace()
2393 if (Token.isNot(MIToken::HexLiteral)) in parseCFIEscapeValues()
2407 auto Kind = Token.kind(); in parseCFIOperand()
2514 switch (Token.kind()) { in parseIRBlock()
2517 F.getValueSymbolTable()->lookup(Token.stringValue())); in parseIRBlock()
2519 return error(Twine("use of undefined IR block '") + Token.range() + "'"); in parseIRBlock()
2539 assert(Token.is(MIToken::kw_blockaddress)); in parseBlockAddressOperand()
2543 if (Token.isNot(MIToken::GlobalValue) && in parseBlockAddressOperand()
2544 Token.isNot(MIToken::NamedGlobalValue)) in parseBlockAddressOperand()
2556 if (Token.isNot(MIToken::IRBlock) && Token.isNot(MIToken::NamedIRBlock)) in parseBlockAddressOperand()
2570 assert(Token.is(MIToken::kw_intrinsic)); in parseIntrinsicOperand()
2575 if (Token.isNot(MIToken::NamedGlobalValue)) in parseIntrinsicOperand()
2578 std::string Name = std::string(Token.stringValue()); in parseIntrinsicOperand()
2599 assert(Token.is(MIToken::kw_intpred) || Token.is(MIToken::kw_floatpred)); in parsePredicateOperand()
2600 bool IsFloat = Token.is(MIToken::kw_floatpred); in parsePredicateOperand()
2606 if (Token.isNot(MIToken::Identifier)) in parsePredicateOperand()
2611 Pred = StringSwitch<CmpInst::Predicate>(Token.stringValue()) in parsePredicateOperand()
2632 Pred = StringSwitch<CmpInst::Predicate>(Token.stringValue()) in parsePredicateOperand()
2657 assert(Token.is(MIToken::kw_shufflemask)); in parseShuffleMaskOperand()
2665 if (Token.is(MIToken::kw_undef)) { in parseShuffleMaskOperand()
2667 } else if (Token.is(MIToken::IntegerLiteral)) { in parseShuffleMaskOperand()
2668 const APSInt &Int = Token.integerValue(); in parseShuffleMaskOperand()
2685 assert(Token.is(MIToken::kw_target_index)); in parseTargetIndexOperand()
2689 if (Token.isNot(MIToken::Identifier)) in parseTargetIndexOperand()
2692 if (PFS.Target.getTargetIndex(Token.stringValue(), Index)) in parseTargetIndexOperand()
2693 return error("use of undefined target index '" + Token.stringValue() + "'"); in parseTargetIndexOperand()
2704 assert(Token.stringValue() == "CustomRegMask" && "Expected a custom RegMask"); in parseCustomRegisterMaskOperand()
2711 if (Token.isNot(MIToken::rparen)) { in parseCustomRegisterMaskOperand()
2712 if (Token.isNot(MIToken::NamedRegister)) in parseCustomRegisterMaskOperand()
2731 assert(Token.is(MIToken::kw_liveout)); in parseLiveoutRegisterMaskOperand()
2737 if (Token.isNot(MIToken::NamedRegister)) in parseLiveoutRegisterMaskOperand()
2745 if (Token.isNot(MIToken::comma)) in parseLiveoutRegisterMaskOperand()
2758 switch (Token.kind()) { in parseMachineOperand()
2838 if (const auto *RegMask = PFS.Target.getRegMask(Token.stringValue())) { in parseMachineOperand()
2842 } else if (Token.stringValue() == "CustomRegMask") { in parseMachineOperand()
2865 if (Token.is(MIToken::kw_target_flags)) { in parseMachineOperandAndTargetFlags()
2870 if (Token.isNot(MIToken::Identifier)) in parseMachineOperandAndTargetFlags()
2872 if (PFS.Target.getDirectTargetFlag(Token.stringValue(), TF)) { in parseMachineOperandAndTargetFlags()
2873 if (PFS.Target.getBitmaskTargetFlag(Token.stringValue(), TF)) in parseMachineOperandAndTargetFlags()
2874 return error("use of undefined target flag '" + Token.stringValue() + in parseMachineOperandAndTargetFlags()
2878 while (Token.is(MIToken::comma)) { in parseMachineOperandAndTargetFlags()
2880 if (Token.isNot(MIToken::Identifier)) in parseMachineOperandAndTargetFlags()
2883 if (PFS.Target.getBitmaskTargetFlag(Token.stringValue(), BitFlag)) in parseMachineOperandAndTargetFlags()
2884 return error("use of undefined target flag '" + Token.stringValue() + in parseMachineOperandAndTargetFlags()
2893 auto Loc = Token.location(); in parseMachineOperandAndTargetFlags()
2905 if (Token.isNot(MIToken::plus) && Token.isNot(MIToken::minus)) in parseOffset()
2907 StringRef Sign = Token.range(); in parseOffset()
2908 bool IsNegative = Token.is(MIToken::minus); in parseOffset()
2910 if (Token.isNot(MIToken::IntegerLiteral)) in parseOffset()
2912 if (Token.integerValue().getMinSignedBits() > 64) in parseOffset()
2914 Offset = Token.integerValue().getExtValue(); in parseOffset()
2922 assert(Token.is(MIToken::kw_align) || Token.is(MIToken::kw_basealign)); in parseAlignment()
2924 if (Token.isNot(MIToken::IntegerLiteral) || Token.integerValue().isSigned()) in parseAlignment()
2937 assert(Token.is(MIToken::kw_addrspace)); in parseAddrspace()
2939 if (Token.isNot(MIToken::IntegerLiteral) || Token.integerValue().isSigned()) in parseAddrspace()
2955 static bool parseIRValue(const MIToken &Token, PerFunctionMIParsingState &PFS, in parseIRValue() argument
2957 switch (Token.kind()) { in parseIRValue()
2959 V = PFS.MF.getFunction().getValueSymbolTable()->lookup(Token.stringValue()); in parseIRValue()
2964 if (getUnsigned(Token, SlotNumber, ErrCB)) in parseIRValue()
2972 if (parseGlobalValue(Token, PFS, GV, ErrCB)) in parseIRValue()
2979 if (parseIRConstant(Token.location(), Token.stringValue(), PFS, C, ErrCB)) in parseIRValue()
2991 return ErrCB(Token.location(), Twine("use of undefined IR value '") + Token.range() + "'"); in parseIRValue()
2997 Token, PFS, V, [this](StringRef::iterator Loc, const Twine &Msg) -> bool { in parseIRValue()
3003 if (Token.hasIntegerValue()) { in getUint64()
3004 if (Token.integerValue().getActiveBits() > 64) in getUint64()
3006 Result = Token.integerValue().getZExtValue(); in getUint64()
3009 if (Token.is(MIToken::HexLiteral)) { in getUint64()
3022 return ::getHexUint(Token, Result); in getHexUint()
3027 switch (Token.kind()) { in parseMemoryOperandFlag()
3042 if (PFS.Target.getMMOTargetFlag(Token.stringValue(), TF)) in parseMemoryOperandFlag()
3043 return error("use of undefined target MMO flag '" + Token.stringValue() + in parseMemoryOperandFlag()
3054 return error("duplicate '" + Token.stringValue() + "' memory operand flag"); in parseMemoryOperandFlag()
3060 switch (Token.kind()) { in parseMemoryPseudoSourceValue()
3091 switch (Token.kind()) { in parseMemoryPseudoSourceValue()
3102 MF.createExternalSymbolName(Token.stringValue())); in parseMemoryPseudoSourceValue()
3114 Token.stringValue(), MF, PFS, PSV, in parseMemoryPseudoSourceValue()
3131 if (Token.is(MIToken::kw_constant_pool) || Token.is(MIToken::kw_stack) || in parseMachinePointerInfo()
3132 Token.is(MIToken::kw_got) || Token.is(MIToken::kw_jump_table) || in parseMachinePointerInfo()
3133 Token.is(MIToken::FixedStackObject) || Token.is(MIToken::StackObject) || in parseMachinePointerInfo()
3134 Token.is(MIToken::kw_call_entry) || Token.is(MIToken::kw_custom)) { in parseMachinePointerInfo()
3144 if (Token.isNot(MIToken::NamedIRValue) && Token.isNot(MIToken::IRValue) && in parseMachinePointerInfo()
3145 Token.isNot(MIToken::GlobalValue) && in parseMachinePointerInfo()
3146 Token.isNot(MIToken::NamedGlobalValue) && in parseMachinePointerInfo()
3147 Token.isNot(MIToken::QuotedIRValue) && in parseMachinePointerInfo()
3148 Token.isNot(MIToken::kw_unknown_address)) in parseMachinePointerInfo()
3166 if (Token.is(MIToken::Identifier) && Token.stringValue() == "syncscope") { in parseOptionalScope()
3185 if (Token.isNot(MIToken::Identifier)) in parseOptionalAtomicOrdering()
3188 Order = StringSwitch<AtomicOrdering>(Token.stringValue()) in parseOptionalAtomicOrdering()
3209 while (Token.isMemoryOperandFlag()) { in parseMachineMemoryOperand()
3213 if (Token.isNot(MIToken::Identifier) || in parseMachineMemoryOperand()
3214 (Token.stringValue() != "load" && Token.stringValue() != "store")) in parseMachineMemoryOperand()
3216 if (Token.stringValue() == "load") in parseMachineMemoryOperand()
3223 if (Token.is(MIToken::Identifier) && Token.stringValue() == "store") { in parseMachineMemoryOperand()
3242 if (Token.isNot(MIToken::IntegerLiteral) && in parseMachineMemoryOperand()
3243 Token.isNot(MIToken::kw_unknown_size) && in parseMachineMemoryOperand()
3244 Token.isNot(MIToken::lparen)) in parseMachineMemoryOperand()
3249 if (Token.is(MIToken::IntegerLiteral)) { in parseMachineMemoryOperand()
3256 } else if (Token.is(MIToken::kw_unknown_size)) { in parseMachineMemoryOperand()
3262 if (parseLowLevelType(Token.location(), MemoryType)) in parseMachineMemoryOperand()
3271 if (Token.is(MIToken::Identifier)) { in parseMachineMemoryOperand()
3277 if (Token.stringValue() != Word) in parseMachineMemoryOperand()
3289 switch (Token.kind()) { in parseMachineMemoryOperand()
3348 assert((Token.is(MIToken::kw_pre_instr_symbol) || in parsePreOrPostInstrSymbol()
3349 Token.is(MIToken::kw_post_instr_symbol)) && in parsePreOrPostInstrSymbol()
3352 if (Token.isNot(MIToken::MCSymbol)) in parsePreOrPostInstrSymbol()
3354 Symbol = getOrCreateMCSymbol(Token.stringValue()); in parsePreOrPostInstrSymbol()
3356 if (Token.isNewlineOrEOF() || Token.is(MIToken::coloncolon) || in parsePreOrPostInstrSymbol()
3357 Token.is(MIToken::lbrace)) in parsePreOrPostInstrSymbol()
3359 if (Token.isNot(MIToken::comma)) in parsePreOrPostInstrSymbol()
3366 assert(Token.is(MIToken::kw_heap_alloc_marker) && in parseHeapAllocMarker()
3372 if (Token.isNewlineOrEOF() || Token.is(MIToken::coloncolon) || in parseHeapAllocMarker()
3373 Token.is(MIToken::lbrace)) in parseHeapAllocMarker()
3375 if (Token.isNot(MIToken::comma)) in parseHeapAllocMarker()
3426 if (Token.isNot(MIToken::StringConstant)) in parseStringConstant()
3428 Result = std::string(Token.stringValue()); in parseStringConstant()
3487 MIToken Token; in parseIRValue() local
3488 Src = lexMIToken(Src, Token, [&](StringRef::iterator Loc, const Twine &Msg) { in parseIRValue()
3493 return ::parseIRValue(Token, PFS, V, ErrorCallback); in parseIRValue()