LLVM 19.0.0git
Namespaces | Functions | Variables
ThumbRegisterInfo.cpp File Reference
#include "ThumbRegisterInfo.h"
#include "ARMBaseInstrInfo.h"
#include "ARMMachineFunctionInfo.h"
#include "ARMSubtarget.h"
#include "MCTargetDesc/ARMAddressingModes.h"
#include "llvm/CodeGen/MachineConstantPool.h"
#include "llvm/CodeGen/MachineFrameInfo.h"
#include "llvm/CodeGen/MachineFunction.h"
#include "llvm/CodeGen/MachineInstrBuilder.h"
#include "llvm/CodeGen/MachineRegisterInfo.h"
#include "llvm/CodeGen/RegisterScavenging.h"
#include "llvm/IR/Constants.h"
#include "llvm/IR/DerivedTypes.h"
#include "llvm/IR/Function.h"
#include "llvm/IR/LLVMContext.h"
#include "llvm/Support/CommandLine.h"
#include "llvm/Support/ErrorHandling.h"
#include "llvm/CodeGen/TargetFrameLowering.h"
#include "llvm/Target/TargetMachine.h"

Go to the source code of this file.

Namespaces

namespace  llvm
 This is an optimization pass for GlobalISel generic memory operations.
 

Functions

static void emitThumb1LoadConstPool (MachineBasicBlock &MBB, MachineBasicBlock::iterator &MBBI, const DebugLoc &dl, unsigned DestReg, unsigned SubIdx, int Val, ARMCC::CondCodes Pred, unsigned PredReg, unsigned MIFlags)
 
static void emitThumb2LoadConstPool (MachineBasicBlock &MBB, MachineBasicBlock::iterator &MBBI, const DebugLoc &dl, unsigned DestReg, unsigned SubIdx, int Val, ARMCC::CondCodes Pred, unsigned PredReg, unsigned MIFlags)
 
static void emitThumbRegPlusImmInReg (MachineBasicBlock &MBB, MachineBasicBlock::iterator &MBBI, const DebugLoc &dl, Register DestReg, Register BaseReg, int NumBytes, bool CanChangeCC, const TargetInstrInfo &TII, const ARMBaseRegisterInfo &MRI, unsigned MIFlags=MachineInstr::NoFlags)
 emitThumbRegPlusImmInReg - Emits a series of instructions to materialize a destreg = basereg + immediate in Thumb code.
 
static void removeOperands (MachineInstr &MI, unsigned i)
 
static unsigned convertToNonSPOpcode (unsigned Opcode)
 convertToNonSPOpcode - Change the opcode to the non-SP version, because we're replacing the frame index with a non-SP register.
 

Variables

cl::opt< boolllvm::ReuseFrameIndexVals
 

Function Documentation

◆ convertToNonSPOpcode()

static unsigned convertToNonSPOpcode ( unsigned  Opcode)
static

convertToNonSPOpcode - Change the opcode to the non-SP version, because we're replacing the frame index with a non-SP register.

Definition at line 412 of file ThumbRegisterInfo.cpp.

Referenced by llvm::ThumbRegisterInfo::rewriteFrameIndex().

◆ emitThumb1LoadConstPool()

static void emitThumb1LoadConstPool ( MachineBasicBlock MBB,
MachineBasicBlock::iterator MBBI,
const DebugLoc dl,
unsigned  DestReg,
unsigned  SubIdx,
int  Val,
ARMCC::CondCodes  Pred,
unsigned  PredReg,
unsigned  MIFlags 
)
static

◆ emitThumb2LoadConstPool()

static void emitThumb2LoadConstPool ( MachineBasicBlock MBB,
MachineBasicBlock::iterator MBBI,
const DebugLoc dl,
unsigned  DestReg,
unsigned  SubIdx,
int  Val,
ARMCC::CondCodes  Pred,
unsigned  PredReg,
unsigned  MIFlags 
)
static

◆ emitThumbRegPlusImmInReg()

static void emitThumbRegPlusImmInReg ( MachineBasicBlock MBB,
MachineBasicBlock::iterator MBBI,
const DebugLoc dl,
Register  DestReg,
Register  BaseReg,
int  NumBytes,
bool  CanChangeCC,
const TargetInstrInfo TII,
const ARMBaseRegisterInfo MRI,
unsigned  MIFlags = MachineInstr::NoFlags 
)
static

◆ removeOperands()

static void removeOperands ( MachineInstr MI,
unsigned  i 
)
static

Definition at line 404 of file ThumbRegisterInfo.cpp.

References MI.

Referenced by llvm::ThumbRegisterInfo::eliminateFrameIndex().