Lines Matching refs:MO
35 AArch64MCInstLower::GetGlobalAddressSymbol(const MachineOperand &MO) const { in GetGlobalAddressSymbol()
36 return Printer.getSymbol(MO.getGlobal()); in GetGlobalAddressSymbol()
40 AArch64MCInstLower::GetExternalSymbolSymbol(const MachineOperand &MO) const { in GetExternalSymbolSymbol()
41 return Printer.GetExternalSymbolSymbol(MO.getSymbolName()); in GetExternalSymbolSymbol()
44 MCOperand AArch64MCInstLower::lowerSymbolOperandDarwin(const MachineOperand &MO, in lowerSymbolOperandDarwin() argument
49 if ((MO.getTargetFlags() & AArch64II::MO_GOT) != 0) { in lowerSymbolOperandDarwin()
50 if ((MO.getTargetFlags() & AArch64II::MO_FRAGMENT) == AArch64II::MO_PAGE) in lowerSymbolOperandDarwin()
52 else if ((MO.getTargetFlags() & AArch64II::MO_FRAGMENT) == in lowerSymbolOperandDarwin()
57 } else if ((MO.getTargetFlags() & AArch64II::MO_TLS) != 0) { in lowerSymbolOperandDarwin()
58 if ((MO.getTargetFlags() & AArch64II::MO_FRAGMENT) == AArch64II::MO_PAGE) in lowerSymbolOperandDarwin()
60 else if ((MO.getTargetFlags() & AArch64II::MO_FRAGMENT) == in lowerSymbolOperandDarwin()
66 if ((MO.getTargetFlags() & AArch64II::MO_FRAGMENT) == AArch64II::MO_PAGE) in lowerSymbolOperandDarwin()
68 else if ((MO.getTargetFlags() & AArch64II::MO_FRAGMENT) == in lowerSymbolOperandDarwin()
73 if (!MO.isJTI() && MO.getOffset()) in lowerSymbolOperandDarwin()
75 Expr, MCConstantExpr::create(MO.getOffset(), Ctx), Ctx); in lowerSymbolOperandDarwin()
79 MCOperand AArch64MCInstLower::lowerSymbolOperandELF(const MachineOperand &MO, in lowerSymbolOperandELF() argument
83 if (MO.getTargetFlags() & AArch64II::MO_GOT) in lowerSymbolOperandELF()
85 else if (MO.getTargetFlags() & AArch64II::MO_TLS) { in lowerSymbolOperandELF()
87 if (MO.isGlobal()) { in lowerSymbolOperandELF()
88 const GlobalValue *GV = MO.getGlobal(); in lowerSymbolOperandELF()
95 assert(MO.isSymbol() && in lowerSymbolOperandELF()
96 StringRef(MO.getSymbolName()) == "_TLS_MODULE_BASE_" && in lowerSymbolOperandELF()
122 if ((MO.getTargetFlags() & AArch64II::MO_FRAGMENT) == AArch64II::MO_PAGE) in lowerSymbolOperandELF()
124 else if ((MO.getTargetFlags() & AArch64II::MO_FRAGMENT) == in lowerSymbolOperandELF()
127 else if ((MO.getTargetFlags() & AArch64II::MO_FRAGMENT) == AArch64II::MO_G3) in lowerSymbolOperandELF()
129 else if ((MO.getTargetFlags() & AArch64II::MO_FRAGMENT) == AArch64II::MO_G2) in lowerSymbolOperandELF()
131 else if ((MO.getTargetFlags() & AArch64II::MO_FRAGMENT) == AArch64II::MO_G1) in lowerSymbolOperandELF()
133 else if ((MO.getTargetFlags() & AArch64II::MO_FRAGMENT) == AArch64II::MO_G0) in lowerSymbolOperandELF()
135 else if ((MO.getTargetFlags() & AArch64II::MO_FRAGMENT) == AArch64II::MO_HI12) in lowerSymbolOperandELF()
138 if (MO.getTargetFlags() & AArch64II::MO_NC) in lowerSymbolOperandELF()
143 if (!MO.isJTI() && MO.getOffset()) in lowerSymbolOperandELF()
145 Expr, MCConstantExpr::create(MO.getOffset(), Ctx), Ctx); in lowerSymbolOperandELF()
154 MCOperand AArch64MCInstLower::LowerSymbolOperand(const MachineOperand &MO, in LowerSymbolOperand() argument
157 return lowerSymbolOperandDarwin(MO, Sym); in LowerSymbolOperand()
160 return lowerSymbolOperandELF(MO, Sym); in LowerSymbolOperand()
163 bool AArch64MCInstLower::lowerOperand(const MachineOperand &MO, in lowerOperand() argument
165 switch (MO.getType()) { in lowerOperand()
170 if (MO.isImplicit()) in lowerOperand()
172 MCOp = MCOperand::createReg(MO.getReg()); in lowerOperand()
178 MCOp = MCOperand::createImm(MO.getImm()); in lowerOperand()
182 MCSymbolRefExpr::create(MO.getMBB()->getSymbol(), Ctx)); in lowerOperand()
185 MCOp = LowerSymbolOperand(MO, GetGlobalAddressSymbol(MO)); in lowerOperand()
188 MCOp = LowerSymbolOperand(MO, GetExternalSymbolSymbol(MO)); in lowerOperand()
191 MCOp = LowerSymbolOperand(MO, MO.getMCSymbol()); in lowerOperand()
194 MCOp = LowerSymbolOperand(MO, Printer.GetJTISymbol(MO.getIndex())); in lowerOperand()
197 MCOp = LowerSymbolOperand(MO, Printer.GetCPISymbol(MO.getIndex())); in lowerOperand()
201 MO, Printer.GetBlockAddressSymbol(MO.getBlockAddress())); in lowerOperand()
210 for (const MachineOperand &MO : MI->operands()) { in Lower() local
212 if (lowerOperand(MO, MCOp)) in Lower()