Lines Matching defs:MO
41 AArch64MCInstLower::GetGlobalAddressSymbol(const MachineOperand &MO) const {
42 return GetGlobalValueSymbol(MO.getGlobal(), MO.getTargetFlags());
145 AArch64MCInstLower::GetExternalSymbolSymbol(const MachineOperand &MO) const {
146 return Printer.GetExternalSymbolSymbol(MO.getSymbolName());
149 MCOperand AArch64MCInstLower::lowerSymbolOperandMachO(const MachineOperand &MO,
154 if ((MO.getTargetFlags() & AArch64II::MO_GOT) != 0) {
155 if ((MO.getTargetFlags() & AArch64II::MO_FRAGMENT) == AArch64II::MO_PAGE)
157 else if ((MO.getTargetFlags() & AArch64II::MO_FRAGMENT) ==
162 } else if ((MO.getTargetFlags() & AArch64II::MO_TLS) != 0) {
163 if ((MO.getTargetFlags() & AArch64II::MO_FRAGMENT) == AArch64II::MO_PAGE)
165 else if ((MO.getTargetFlags() & AArch64II::MO_FRAGMENT) ==
171 if ((MO.getTargetFlags() & AArch64II::MO_FRAGMENT) == AArch64II::MO_PAGE)
173 else if ((MO.getTargetFlags() & AArch64II::MO_FRAGMENT) ==
178 if (!MO.isJTI() && MO.getOffset())
180 Expr, MCConstantExpr::create(MO.getOffset(), Ctx), Ctx);
184 MCOperand AArch64MCInstLower::lowerSymbolOperandELF(const MachineOperand &MO,
188 if (MO.getTargetFlags() & AArch64II::MO_GOT)
190 else if (MO.getTargetFlags() & AArch64II::MO_TLS) {
192 if (MO.isGlobal()) {
193 const GlobalValue *GV = MO.getGlobal();
200 assert(MO.isSymbol() &&
201 StringRef(MO.getSymbolName()) == "_TLS_MODULE_BASE_" &&
221 } else if (MO.getTargetFlags() & AArch64II::MO_PREL) {
229 if ((MO.getTargetFlags() & AArch64II::MO_FRAGMENT) == AArch64II::MO_PAGE)
231 else if ((MO.getTargetFlags() & AArch64II::MO_FRAGMENT) ==
234 else if ((MO.getTargetFlags() & AArch64II::MO_FRAGMENT) == AArch64II::MO_G3)
236 else if ((MO.getTargetFlags() & AArch64II::MO_FRAGMENT) == AArch64II::MO_G2)
238 else if ((MO.getTargetFlags() & AArch64II::MO_FRAGMENT) == AArch64II::MO_G1)
240 else if ((MO.getTargetFlags() & AArch64II::MO_FRAGMENT) == AArch64II::MO_G0)
242 else if ((MO.getTargetFlags() & AArch64II::MO_FRAGMENT) == AArch64II::MO_HI12)
245 if (MO.getTargetFlags() & AArch64II::MO_NC)
250 if (!MO.isJTI() && MO.getOffset())
252 Expr, MCConstantExpr::create(MO.getOffset(), Ctx), Ctx);
261 MCOperand AArch64MCInstLower::lowerSymbolOperandCOFF(const MachineOperand &MO,
265 if (MO.getTargetFlags() & AArch64II::MO_TLS) {
266 if ((MO.getTargetFlags() & AArch64II::MO_FRAGMENT) == AArch64II::MO_PAGEOFF)
268 else if ((MO.getTargetFlags() & AArch64II::MO_FRAGMENT) ==
272 } else if (MO.getTargetFlags() & AArch64II::MO_S) {
277 if ((MO.getTargetFlags() & AArch64II::MO_FRAGMENT) == AArch64II::MO_PAGE)
279 else if ((MO.getTargetFlags() & AArch64II::MO_FRAGMENT) ==
284 if ((MO.getTargetFlags() & AArch64II::MO_FRAGMENT) == AArch64II::MO_G3)
286 else if ((MO.getTargetFlags() & AArch64II::MO_FRAGMENT) == AArch64II::MO_G2)
288 else if ((MO.getTargetFlags() & AArch64II::MO_FRAGMENT) == AArch64II::MO_G1)
290 else if ((MO.getTargetFlags() & AArch64II::MO_FRAGMENT) == AArch64II::MO_G0)
296 if (MO.getTargetFlags() & AArch64II::MO_NC) {
297 auto MOFrag = (MO.getTargetFlags() & AArch64II::MO_FRAGMENT);
305 if (!MO.isJTI() && MO.getOffset())
307 Expr, MCConstantExpr::create(MO.getOffset(), Ctx), Ctx);
317 MCOperand AArch64MCInstLower::LowerSymbolOperand(const MachineOperand &MO,
320 return lowerSymbolOperandMachO(MO, Sym);
322 return lowerSymbolOperandCOFF(MO, Sym);
325 return lowerSymbolOperandELF(MO, Sym);
328 bool AArch64MCInstLower::lowerOperand(const MachineOperand &MO,
330 switch (MO.getType()) {
335 if (MO.isImplicit())
337 MCOp = MCOperand::createReg(MO.getReg());
343 MCOp = MCOperand::createImm(MO.getImm());
347 MCSymbolRefExpr::create(MO.getMBB()->getSymbol(), Ctx));
350 MCOp = LowerSymbolOperand(MO, GetGlobalAddressSymbol(MO));
353 MCOp = LowerSymbolOperand(MO, GetExternalSymbolSymbol(MO));
356 MCOp = LowerSymbolOperand(MO, MO.getMCSymbol());
359 MCOp = LowerSymbolOperand(MO, Printer.GetJTISymbol(MO.getIndex()));
362 MCOp = LowerSymbolOperand(MO, Printer.GetCPISymbol(MO.getIndex()));
366 MO, Printer.GetBlockAddressSymbol(MO.getBlockAddress()));
375 for (const MachineOperand &MO : MI->operands()) {
377 if (lowerOperand(MO, MCOp))