Lines Matching defs:MO
198 void PrintSymbolOperand(const MachineOperand &MO, raw_ostream &O) override;
208 const MCExpr *getAdjustedFasterLocalExpr(const MachineOperand &MO,
310 void PPCAsmPrinter::PrintSymbolOperand(const MachineOperand &MO,
313 const GlobalValue *GV = MO.getGlobal();
315 printOffset(MO.getOffset(), O);
321 const MachineOperand &MO = MI->getOperand(OpNo);
323 switch (MO.getType()) {
326 const char *RegName = PPCInstPrinter::getRegisterName(MO.getReg());
334 O << MO.getImm();
338 MO.getMBB()->getSymbol()->print(O, MAI);
342 << MO.getIndex();
345 GetBlockAddressSymbol(MO.getBlockAddress())->print(O, MAI);
348 PrintSymbolOperand(MO, O);
353 O << "<unknown operand type: " << (unsigned)MO.getType() << ">";
481 const MachineOperand &MO) {
486 if (!(MO.getType() == MachineOperand::MO_GlobalAddress))
489 const GlobalValue *GV = MO.getGlobal();
741 const MachineOperand &MO = MI->getOperand(2);
742 const GlobalValue *GValue = MO.getGlobal();
754 static MCSymbol *getMCSymbolForTOCPseudoMO(const MachineOperand &MO,
756 switch (MO.getType()) {
758 return AP.getSymbol(MO.getGlobal());
760 return AP.GetCPISymbol(MO.getIndex());
762 return AP.GetJTISymbol(MO.getIndex());
764 return AP.GetBlockAddressSymbol(MO.getBlockAddress());
771 getTOCEntryTypeForMO(const MachineOperand &MO) {
772 // Use the target flags to determine if this MO is Thread Local.
774 if (PPCInstrInfo::hasTLSFlag(MO.getTargetFlags()))
777 switch (MO.getType()) {
779 const GlobalValue *GlobalV = MO.getGlobal();
816 for (const MachineOperand &MO: MI->operands()) {
817 if (MO.isReg()) {
818 Register Reg = MO.getReg();
869 auto GetVKForMO = [&](const MachineOperand &MO) {
873 unsigned Flag = MO.getTargetFlags();
877 assert(MO.isGlobal() && "Only expecting a global MachineOperand here!\n");
878 TLSModel::Model Model = TM.getTLSModel(MO.getGlobal());
1042 const MachineOperand &MO = MI->getOperand(1);
1043 assert((MO.isGlobal() || MO.isCPI() || MO.isJTI() || MO.isBlockAddress()) &&
1047 const MCSymbol *const MOSymbol = getMCSymbolForTOCPseudoMO(MO, *this);
1060 MCSymbolRefExpr::VariantKind VK = GetVKForMO(MO);
1066 lookUpOrCreateTOCEntry(MOSymbol, getTOCEntryTypeForMO(MO), VK);
1075 getCodeModel(*Subtarget, TM, MO) == CodeModel::Small &&
1080 // Print MO for better readability
1082 OutStreamer->getCommentOS() << MO << '\n';
1107 const MachineOperand &MO = MI->getOperand(2);
1108 assert(MO.isGlobal() && "Invalid operand for ADDItoc[8].");
1111 const MCSymbol *const MOSymbol = getMCSymbolForTOCPseudoMO(MO, *this);
1130 const MachineOperand &MO = MI->getOperand(1);
1131 assert((MO.isGlobal() || MO.isCPI() || MO.isJTI() || MO.isBlockAddress()) &&
1135 const MCSymbol *const MOSymbol = getMCSymbolForTOCPseudoMO(MO, *this);
1137 MCSymbolRefExpr::VariantKind VK = GetVKForMO(MO);
1143 lookUpOrCreateTOCEntry(MOSymbol, getTOCEntryTypeForMO(MO), VK);
1151 // Print MO for better readability
1153 OutStreamer->getCommentOS() << MO << '\n';
1158 const MachineOperand &MO = MI->getOperand(2);
1160 assert((MO.isGlobal() || MO.isCPI() || MO.isJTI() || MO.isBlockAddress()) &&
1163 getCodeModel(*Subtarget, TM, MO) == CodeModel::Large) &&
1174 MCSymbol *MOSymbol = getMCSymbolForTOCPseudoMO(MO, *this);
1176 MCSymbolRefExpr::VariantKind VK = GetVKForMO(MO);
1184 if ( {
1185 if (!MO.isGlobal())
1188 const GlobalVariable *GV = dyn_cast<GlobalVariable>(MO.getGlobal());
1192 }(MO)) {
1193 MOSymbol = lookUpOrCreateTOCEntry(MOSymbol, getTOCEntryTypeForMO(MO), VK);
1203 const MachineOperand &MO = MI->getOperand(1);
1205 assert((MO.isGlobal() || MO.isCPI() || MO.isJTI() || MO.isBlockAddress()) &&
1208 getCodeModel(*Subtarget, TM, MO) == CodeModel::Large &&
1219 MCSymbol *MOSymbol = getMCSymbolForTOCPseudoMO(MO, *this);
1221 MCSymbolRefExpr::VariantKind VK = GetVKForMO(MO);
1228 lookUpOrCreateTOCEntry(MOSymbol, getTOCEntryTypeForMO(MO), VK);
1246 const MachineOperand &MO = MI->getOperand(2);
1247 assert((MO.isGlobal() || MO.isCPI() || MO.isJTI() || MO.isBlockAddress()) &&
1250 const MCSymbol *MOSymbol = getMCSymbolForTOCPseudoMO(MO, *this);
1252 MCSymbolRefExpr::VariantKind VK = GetVKForMO(MO);
1255 MO.isGlobal() && Subtarget->isGVIndirectSymbol(MO.getGlobal());
1258 IsAIX ? getCodeModel(*Subtarget, TM, MO) : TM.getCodeModel();
1260 if (GlobalToc || MO.isJTI() || MO.isBlockAddress() ||
1261 (MO.isCPI() && CM == CodeModel::Large))
1262 MOSymbol = lookUpOrCreateTOCEntry(MOSymbol, getTOCEntryTypeForMO(MO), VK);
1269 if (!MO.isJTI() && MO.getOffset())
1271 MCConstantExpr::create(MO.getOffset(),
1289 const MachineOperand &MO = MI->getOperand(1);
1290 assert((MO.isGlobal() || MO.isCPI() || MO.isJTI() ||
1291 MO.isBlockAddress()) &&
1295 (!MO.isGlobal() || Subtarget->isGVIndirectSymbol(MO.getGlobal())) &&
1299 const MCSymbol *MOSymbol = getMCSymbolForTOCPseudoMO(MO, *this);
1301 MCSymbolRefExpr::VariantKind VK = GetVKForMO(MO);
1303 IsAIX ? getCodeModel(*Subtarget, TM, MO) : TM.getCodeModel();
1304 if (!MO.isCPI() || CM == CodeModel::Large)
1305 MOSymbol = lookUpOrCreateTOCEntry(MOSymbol, getTOCEntryTypeForMO(MO), VK);
1326 const MachineOperand &MO = MI->getOperand(2);
1328 ? (MO.isGlobal() || MO.isCPI())
1329 : MO.isGlobal() && "Invalid operand for ADDItocL8.");
1330 assert(!(MO.isGlobal() && Subtarget->isGVIndirectSymbol(MO.getGlobal())) &&
1334 const MCSymbol *const MOSymbol = getMCSymbolForTOCPseudoMO(MO, *this);
1349 const MachineOperand &MO = MI->getOperand(2);
1350 const GlobalValue *GValue = MO.getGlobal();
1368 const MachineOperand &MO = MI->getOperand(1);
1369 const GlobalValue *GValue = MO.getGlobal();
1428 const MachineOperand &MO = MI->getOperand(2);
1429 const GlobalValue *GValue = MO.getGlobal();
1446 const MachineOperand &MO = MI->getOperand(2);
1447 const GlobalValue *GValue = MO.getGlobal();
1490 const MachineOperand &MO = MI->getOperand(2);
1491 const GlobalValue *GValue = MO.getGlobal();
1508 const MachineOperand &MO = MI->getOperand(2);
1509 const GlobalValue *GValue = MO.getGlobal();
1538 const MachineOperand &MO = MI->getOperand(2);
1539 const GlobalValue *GValue = MO.getGlobal();
1555 const MachineOperand &MO = MI->getOperand(2);
1556 const GlobalValue *GValue = MO.getGlobal();
1573 const MachineOperand &MO = MI->getOperand(2);
1574 const GlobalValue *GValue = MO.getGlobal();
1633 const MachineOperand &MO = MI->getOperand(OpNum);
1634 if (MO.isGlobal()) {
1635 const DataLayout &DL = MO.getGlobal()->getDataLayout();
1636 if (MO.getGlobal()->getPointerAlignment(DL) < 4)
1671 const MachineOperand &MO = MI->getOperand(OpNum);
1672 unsigned Flag = MO.getTargetFlags();
1678 const MCExpr *Expr = getAdjustedFasterLocalExpr(MO, MO.getOffset());
1715 PPCAsmPrinter::getAdjustedFasterLocalExpr(const MachineOperand &MO,
1722 assert(MO.isGlobal() && "Only expecting a global MachineOperand here!");
1723 const GlobalValue *GValue = MO.getGlobal();
1843 for (const auto &MO : llvm::drop_begin(MI->operands())) {
1845 if (LowerPPCMachineOperandToMCOperand(MO, MCOp, *this))
3211 const MachineOperand &MO = MI->getOperand(0);
3212 if (MO.isSymbol()) {
3214 cast<MCSymbolXCOFF>(OutContext.getOrCreateSymbol(MO.getSymbolName()));