56 case ARM::LDR_PRE_IMM:
57 case ARM::LDR_PRE_REG:
58 case ARM::LDR_POST_IMM:
59 case ARM::LDR_POST_REG:
64 case ARM::LDRB_PRE_IMM:
65 case ARM::LDRB_PRE_REG:
66 case ARM::LDRB_POST_IMM:
67 case ARM::LDRB_POST_REG:
75 case ARM::STR_PRE_IMM:
76 case ARM::STR_PRE_REG:
77 case ARM::STR_POST_IMM:
78 case ARM::STR_POST_REG:
83 case ARM::STRB_PRE_IMM:
84 case ARM::STRB_PRE_REG:
85 case ARM::STRB_POST_IMM:
86 case ARM::STRB_POST_REG:
114 *Context,
"_GLOBAL_OFFSET_TABLE_", ARMPCLabelIndex, PCAdj);
126 ARM::t2LDRpci : ARM::LDRcp;
129 TII.
get(Opc), TempReg)
130 .addConstantPoolIndex(Idx);
131 if (Opc == ARM::LDRcp)
142 if (Opc == ARM::PICADD)
149 virtual const char *getPassName()
const {
150 return "ARM PIC Global Base Reg Initialization";
LLVMContext & getContext() const
Reloc::Model getRelocationModel() const
static MCOperand CreateReg(unsigned Reg)
FunctionPass * createARMGlobalBaseRegPass()
unsigned createVirtualRegister(const TargetRegisterClass *RegClass)
unsigned getPrefTypeAlignment(Type *Ty) const
static PointerType * getInt32PtrTy(LLVMContext &C, unsigned AS=0)
const Function * getFunction() const
unsigned createPICLabelUId()
ARMInstrInfo(const ARMSubtarget &STI)
static const MachineInstrBuilder & AddDefaultPred(const MachineInstrBuilder &MIB)
unsigned getUnindexedOpcode(unsigned Opc) const
const HexagonInstrInfo * TII
ID
LLVM Calling Convention Representation.
const MachineInstrBuilder & addImm(int64_t Val) const
const MachineBasicBlock & front() const
bundle_iterator< MachineInstr, instr_iterator > iterator
unsigned getGlobalBaseReg() const
virtual const ARMInstrInfo * getInstrInfo() const
MachineConstantPool * getConstantPool()
MachineInstrBuilder BuildMI(MachineFunction &MF, DebugLoc DL, const MCInstrDesc &MCID)
const MCInstrDesc & get(unsigned Opcode) const
DebugLoc findDebugLoc(instr_iterator MBBI)
void setOpcode(unsigned Op)
const STC & getSubtarget() const
static ARMConstantPoolSymbol * Create(LLVMContext &C, const char *s, unsigned ID, unsigned char PCAdj)
static cl::opt< AlignMode > Align(cl::desc("Load/store alignment support"), cl::Hidden, cl::init(DefaultAlign), cl::values(clEnumValN(DefaultAlign,"arm-default-align","Generate unaligned accesses only on hardware/OS ""combinations that are known to support them"), clEnumValN(StrictAlign,"arm-strict-align","Disallow all unaligned memory accesses"), clEnumValN(NoStrictAlign,"arm-no-strict-align","Allow unaligned memory accesses"), clEnumValEnd))
MachineRegisterInfo & getRegInfo()
virtual const DataLayout * getDataLayout() const
static MCOperand CreateImm(int64_t Val)
virtual void getAnalysisUsage(AnalysisUsage &AU) const
const TargetMachine & getTarget() const
void addOperand(const MCOperand &Op)
void getNoopForMachoTarget(MCInst &NopInst) const
getNoopForMachoTarget - Return the noop instruction to use for a noop.
unsigned getConstantPoolIndex(const Constant *C, unsigned Alignment)