Lines Matching +full:mc +full:- +full:sid

1 //===- MIParser.cpp - Machine instructions parser implementation ----------===//
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
7 //===----------------------------------------------------------------------===//
11 //===----------------------------------------------------------------------===//
59 #include "llvm/MC/LaneBitmask.h"
60 #include "llvm/MC/MCContext.h"
61 #include "llvm/MC/MCDwarf.h"
62 #include "llvm/MC/MCInstrDesc.h"
111 for (unsigned I = 0, E = TRI->getNumRegs(); I < E; ++I) { in initNames2Regs()
113 Names2Regs.insert(std::make_pair(StringRef(TRI->getName(I)).lower(), I)) in initNames2Regs()
116 assert(WasInserted && "Expected registers to be unique case-insensitively"); in initNames2Regs()
126 Reg = RegInfo->getValue(); in getRegisterByName()
135 for (unsigned I = 0, E = TII->getNumOpcodes(); I < E; ++I) in initNames2InstrOpCodes()
136 Names2InstrOpCodes.insert(std::make_pair(StringRef(TII->getName(I)), I)); in initNames2InstrOpCodes()
145 OpCode = InstrInfo->getValue(); in parseInstrName()
154 ArrayRef<const uint32_t *> RegMasks = TRI->getRegMasks(); in initNames2RegMasks()
155 ArrayRef<const char *> RegMaskNames = TRI->getRegMaskNames(); in initNames2RegMasks()
167 return RegMaskInfo->getValue(); in getRegMask()
174 for (unsigned I = 1, E = TRI->getNumSubRegIndices(); I < E; ++I) in initNames2SubRegIndices()
176 std::make_pair(TRI->getSubRegIndexName(I), I)); in initNames2SubRegIndices()
184 return SubRegInfo->getValue(); in getSubRegIndex()
192 auto Indices = TII->getSerializableTargetIndices(); in initNames2TargetIndices()
202 Index = IndexInfo->second; in getTargetIndex()
212 auto Flags = TII->getSerializableDirectMachineOperandTargetFlags(); in initNames2DirectTargetFlags()
224 Flag = FlagInfo->second; in getDirectTargetFlag()
234 auto Flags = TII->getSerializableBitmaskMachineOperandTargetFlags(); in initNames2BitmaskTargetFlags()
246 Flag = FlagInfo->second; in getBitmaskTargetFlag()
256 auto Flags = TII->getSerializableMachineMemOperandTargetFlags(); in initNames2MMOTargetFlags()
267 Flag = FlagInfo->second; in getMMOTargetFlag()
276 for (unsigned I = 0, E = TRI->getNumRegClasses(); I < E; ++I) { in initNames2RegClasses()
277 const auto *RC = TRI->getRegClass(I); in initNames2RegClasses()
279 std::make_pair(StringRef(TRI->getRegClassName(RC)).lower(), RC)); in initNames2RegClasses()
293 for (unsigned I = 0, E = RBI->getNumRegBanks(); I < E; ++I) { in initNames2RegBanks()
294 const auto &RegBank = RBI->getRegBank(I); in initNames2RegBanks()
305 return RegClassInfo->getValue(); in getRegClass()
312 return RegBankInfo->getValue(); in getRegBank()
325 Info->VReg = MRI.createIncompleteVirtualRegister(); in getVRegInfo()
326 I.first->second = Info; in getVRegInfo()
328 return *I.first->second; in getVRegInfo()
337 Info->VReg = MF.getRegInfo().createIncompleteVirtualRegister(RegName); in getVRegInfoNamed()
338 I.first->second = Info; in getVRegInfoNamed()
340 return *I.first->second; in getVRegInfoNamed()
346 if (Slot == -1) in mapValueToSlot()
503 bool parseSectionID(std::optional<MBBSectionID> &SID);
601 Loc - Source.data(), SourceMgr::DK_Error, Msg.str(), in error()
610 (Loc - Source.data())); in mapSMLoc()
648 bool MIParser::parseSectionID(std::optional<MBBSectionID> &SID) { in parseSectionID() argument
655 SID = MBBSectionID{Value}; in parseSectionID()
659 SID = MBBSectionID::ExceptionSectionID; in parseSectionID()
661 SID = MBBSectionID::ColdSectionID; in parseSectionID()
777 MF.getFunction().getValueSymbolTable()->lookup(Name)); in parseBasicBlockDefinition()
790 MBB->setAlignment(Align(Alignment)); in parseBasicBlockDefinition()
792 MBB->setMachineBlockAddressTaken(); in parseBasicBlockDefinition()
794 MBB->setAddressTakenIRBlock(AddressTakenIRBlock); in parseBasicBlockDefinition()
795 MBB->setIsEHPad(IsLandingPad); in parseBasicBlockDefinition()
796 MBB->setIsInlineAsmBrIndirectTarget(IsInlineAsmBrIndirectTarget); in parseBasicBlockDefinition()
797 MBB->setIsEHFuncletEntry(IsEHFuncletEntry); in parseBasicBlockDefinition()
799 MBB->setSectionID(*SectionID); in parseBasicBlockDefinition()
807 MBB->setBBID(BBID.value()); in parseBasicBlockDefinition()
809 MBB->setCallFrameSize(CallFrameSize); in parseBasicBlockDefinition()
846 --BraceDepth; in parseBasicBlockDefinitions()
878 "Use correct get-function for lane mask"); in parseBasicBlockLiveins()
979 PrevMI->setFlag(MachineInstr::BundledSucc); in parseBasicBlock()
980 MI->setFlag(MachineInstr::BundledPred); in parseBasicBlock()
988 MI->setFlag(MachineInstr::BundledSucc); in parseBasicBlock()
1032 if (!AddFalthroughFrom->isSuccessor(MBB)) in parseBasicBlocks()
1033 AddFalthroughFrom->addSuccessor(MBB); in parseBasicBlocks()
1034 AddFalthroughFrom->normalizeSuccProbs(); in parseBasicBlocks()
1112 return error("expected an integer literal after 'cfi-type'"); in parse()
1113 // getUnsigned is sufficient for 32-bit integers. in parse()
1126 return error("expected an integer literal after 'debug-instr-number'"); in parse()
1146 return error("expected a metadata node after 'debug-location'"); in parse()
1169 const auto &MCID = MF.getSubtarget().getInstrInfo()->get(OpCode); in parse()
1177 MI->setFlags(Flags); in parse()
1182 MI->addOperand(MF, Operand.Operand); in parse()
1187 MI->setPreInstrSymbol(MF, PreInstrSymbol); in parse()
1189 MI->setPostInstrSymbol(MF, PostInstrSymbol); in parse()
1191 MI->setHeapAllocMarker(MF, HeapAllocMarker); in parse()
1193 MI->setPCSections(MF, PCSections); in parse()
1195 MI->setCFIType(MF, CFIType); in parse()
1197 MI->setMemRefs(MF, MemOperands); in parse()
1199 MI->setDebugInstrNum(InstrNum); in parse()
1312 FI->second.first->replaceAllUsesWith(MD); in parseMachineMetadata()
1390 MD = NodeInfo->second.get(); in parseMetadata()
1396 MD = NodeInfo->second.get(); in parseMetadata()
1411 return MO.isDef() ? "implicit-def" : "implicit"; in printImplicitRegisterFlag()
1417 return StringRef(TRI->getName(Reg)).lower(); in getRegisterName()
1459 // clang-format off in parseInstruction()
1477 // clang-format on in parseInstruction()
1564 Reg = Info->VReg; in parseRegister()
1691 return error("expected an integer literal after 'tied-def'"); in parseRegisterTiedDefIndex()
1707 // to check the tied-def operand. in assignRegisterTies()
1711 Twine("use of invalid tied-def operand index '" + in assignRegisterTies()
1718 Twine("use of invalid tied-def operand index '") + in assignRegisterTies()
1721 // Check that the tied-def operand wasn't tied elsewhere. in assignRegisterTies()
1725 Twine("the tied-def operand #") + Twine(DefIdx) + in assignRegisterTies()
1773 // Try a redundant low-level type. in parseRegisterOperand()
1776 return error("expected tied-def or low-level type after '('"); in parseRegisterOperand()
1809 if (RegInfo->Kind == VRegInfo::GENERIC || in parseRegisterOperand()
1810 RegInfo->Kind == VRegInfo::REGBANK) in parseRegisterOperand()
1869 -> bool { return error(Loc, Msg); })) in parseTargetImmMnemonic()
1894 [this](StringRef::iterator Loc, const Twine &Msg) -> bool { in parseIRConstant()
1900 if (parseIRConstant(Loc, StringRef(Loc, Token.range().end() - Loc), C)) in parseIRConstant()
2075 return ErrCB(Token.location(), "expected 32-bit integer (too large)"); in getUnsigned()
2084 return ErrCB(Token.location(), "expected 32-bit integer (too large)"); in getUnsigned()
2093 Token, Result, [this](StringRef::iterator Loc, const Twine &Msg) -> bool { in getUnsigned()
2108 MBB = MBBInfo->second; in parseMBBReference()
2111 if (!Token.stringValue().empty() && Token.stringValue() != MBB->getName()) in parseMBBReference()
2137 MF.getFrameInfo().getObjectAllocation(ObjectInfo->second)) in parseStackFrameIndex()
2138 Name = Alloca->getName(); in parseStackFrameIndex()
2143 FI = ObjectInfo->second; in parseStackFrameIndex()
2162 return error(Twine("use of undefined fixed stack object '%fixed-stack.") + in parseFixedStackFrameIndex()
2165 FI = ObjectInfo->second; in parseFixedStackFrameIndex()
2183 GV = M->getNamedValue(Token.stringValue()); in parseGlobalValue()
2208 [this](StringRef::iterator Loc, const Twine &Msg) -> bool { in parseGlobalValue()
2246 return error("use of undefined jump table '%jump-table." + Twine(ID) + "'"); in parseJumpTableIndexOperand()
2248 Dest = MachineOperand::CreateJTI(JumpTableEntryInfo->second); in parseJumpTableIndexOperand()
2300 Node = NodeInfo->second.get(); in parseMDNode()
2389 // true/false in MIR yet. Do it ad-hoc until there's something else in parseDILocation()
2450 int DwarfReg = TRI->getDwarfRegNum(LLVMReg, true); in parseCFIRegister()
2476 return error("expected a 8-bit integer (too large)"); in parseCFIEscapeValues()
2594 F.getValueSymbolTable()->lookup(Token.stringValue())); in parseIRBlock()
2605 return error(Twine("use of undefined IR block '%ir-block.") + in parseIRBlock()
2666 ID = static_cast<Intrinsic::ID>(TII->lookupName(Name)); in parseIntrinsicOperand()
2707 return error("invalid floating-point predicate"); in parsePredicateOperand()
2743 ShufMask.push_back(-1); in parseShuffleMaskOperand()
2766 return error("expected syntax dbg-instr-ref(<unsigned>, <unsigned>)"); in parseDbgInstrRefOperand()
2776 return error("expected syntax dbg-instr-ref(<unsigned>, <unsigned>)"); in parseDbgInstrRefOperand()
2786 return error("expected syntax dbg-instr-ref(<unsigned>, <unsigned>)"); in parseDbgInstrRefOperand()
2959 if (const auto *Formatter = TII->getMIRFormatter()) { in parseMachineOperand()
3024 return error("expected 64-bit integer (too large)"); in parseOffset()
3027 Offset = -Offset; in parseOffset()
3055 return error("expected a power-of-2 literal after 'align'"); in parseAlignment()
3083 V = PFS.MF.getFunction().getValueSymbolTable()->lookup(Token.stringValue()); in parseIRValue()
3121 Token, PFS, V, [this](StringRef::iterator Loc, const Twine &Msg) -> bool { in parseIRValue()
3129 return error("expected 64-bit integer (too large)"); in getUint64()
3138 return error("expected 64-bit integer (too large)"); in getUint64()
3230 "expected a global value or an external symbol after 'call-entry'"); in parseMemoryPseudoSourceValue()
3236 if (const auto *Formatter = TII->getMIRFormatter()) { in parseMemoryPseudoSourceValue()
3237 if (Formatter->parseCustomPseudoSourceValue( in parseMemoryPseudoSourceValue()
3239 [this](StringRef::iterator Loc, const Twine &Msg) -> bool { in parseMemoryPseudoSourceValue()
3277 if (V && !V->getType()->isPointerTy()) in parseMachinePointerInfo()
3369 return error("expected memory LLT, the size integer literal or 'unknown-size' after " in parseMachineMemoryOperand()
3419 if (Ptr.Offset & (Alignment - 1)) { in parseMachineMemoryOperand()
3421 // alignment of offset, so this just guards against hand-written MIR in parseMachineMemoryOperand()
3474 "Invalid token for a pre- post-instruction symbol!"); in parsePreOrPostInstrSymbol()
3477 return error("expected a symbol after 'pre-instr-symbol'"); in parsePreOrPostInstrSymbol()
3496 return error("expected a MDNode after 'heap-alloc-marker'"); in parseHeapAllocMarker()
3532 if (Slot == -1) in initSlots2BasicBlocks()