Lines Matching defs:MO

34 static MCSymbol *GetSymbolFromOperand(const MachineOperand &MO,
36 if (MO.isGlobal()) {
39 const GlobalValue *GV = MO.getGlobal();
43 assert(MO.isSymbol() && "Isn't a symbol reference");
47 Mangler::getNameWithPrefix(Name, MO.getSymbolName(), DL);
54 static MCOperand GetSymbolRef(const MachineOperand &MO, const MCSymbol *Symbol,
59 unsigned access = MO.getTargetFlags();
86 const MachineInstr *MI = MO.getParent();
89 if (MO.getTargetFlags() == PPCII::MO_PLT)
91 else if (MO.getTargetFlags() == PPCII::MO_PCREL_FLAG)
93 else if (MO.getTargetFlags() == PPCII::MO_GOT_PCREL_FLAG)
95 else if (MO.getTargetFlags() == PPCII::MO_TPREL_PCREL_FLAG)
97 else if (MO.getTargetFlags() == PPCII::MO_GOT_TLSGD_PCREL_FLAG)
99 else if (MO.getTargetFlags() == PPCII::MO_GOT_TLSLD_PCREL_FLAG)
101 else if (MO.getTargetFlags() == PPCII::MO_GOT_TPREL_PCREL_FLAG)
103 else if (MO.getTargetFlags() == PPCII::MO_TPREL_FLAG ||
104 MO.getTargetFlags() == PPCII::MO_TLSLD_FLAG) {
105 assert(MO.isGlobal() && "Only expecting a global MachineOperand here!");
106 TLSModel::Model Model = TM.getTLSModel(MO.getGlobal());
135 if (MO.getTargetFlags() == PPCII::MO_PCREL_OPT_FLAG)
143 MO.getTargetFlags() == PPCII::MO_PLT)
147 if (!MO.isJTI() && MO.getOffset())
149 MCConstantExpr::create(MO.getOffset(), Ctx),
153 if (MO.getTargetFlags() == PPCII::MO_PIC_FLAG ||
154 MO.getTargetFlags() == PPCII::MO_PIC_HA_FLAG ||
155 MO.getTargetFlags() == PPCII::MO_PIC_LO_FLAG) {
156 const MachineFunction *MF = MO.getParent()->getParent()->getParent();
181 for (const MachineOperand &MO : MI->operands()) {
183 if (LowerPPCMachineOperandToMCOperand(MO, MCOp, AP))
188 bool llvm::LowerPPCMachineOperandToMCOperand(const MachineOperand &MO,
190 switch (MO.getType()) {
194 assert(!MO.getSubReg() && "Subregs should be eliminated!");
195 assert(MO.getReg() > PPC::NoRegister &&
196 MO.getReg() < PPC::NUM_TARGET_REGS &&
199 if (MO.isImplicit())
201 OutMO = MCOperand::createReg(MO.getReg());
204 OutMO = MCOperand::createImm(MO.getImm());
208 MCSymbolRefExpr::create(MO.getMBB()->getSymbol(), AP.OutContext));
212 OutMO = GetSymbolRef(MO, GetSymbolFromOperand(MO, AP), AP);
215 OutMO = GetSymbolRef(MO, AP.GetJTISymbol(MO.getIndex()), AP);
218 OutMO = GetSymbolRef(MO, AP.GetCPISymbol(MO.getIndex()), AP);
222 GetSymbolRef(MO, AP.GetBlockAddressSymbol(MO.getBlockAddress()), AP);
225 OutMO = GetSymbolRef(MO, MO.getMCSymbol(), AP);