LLVM API Documentation
#include <AArch64InstrInfo.h>
Definition at line 27 of file AArch64InstrInfo.h.
|
explicit |
Definition at line 37 of file AArch64InstrInfo.cpp.
bool AArch64InstrInfo::AnalyzeBranch | ( | MachineBasicBlock & | MBB, |
MachineBasicBlock *& | TBB, | ||
MachineBasicBlock *& | FBB, | ||
SmallVectorImpl< MachineOperand > & | Cond, | ||
bool | AllowModify = false |
||
) | const |
Definition at line 192 of file AArch64InstrInfo.cpp.
References llvm::MachineBasicBlock::begin(), classifyCondBranch(), llvm::MachineOperand::CreateImm(), llvm::MachineBasicBlock::end(), llvm::MachineInstr::eraseFromParent(), llvm::MachineOperand::getMBB(), llvm::MachineInstr::getOpcode(), llvm::MachineInstr::getOperand(), I, isCondBranch(), and llvm::SmallVectorTemplateBase< T, isPodLike< T >::value >::push_back().
void AArch64InstrInfo::copyPhysReg | ( | MachineBasicBlock & | MBB, |
MachineBasicBlock::iterator | I, | ||
DebugLoc | DL, | ||
unsigned | DestReg, | ||
unsigned | SrcReg, | ||
bool | KillSrc | ||
) | const |
Definition at line 41 of file AArch64InstrInfo.cpp.
References llvm::MachineInstrBuilder::addImm(), llvm::MachineInstrBuilder::addReg(), llvm::BuildMI(), llvm::RegState::Define, getSubTarget(), llvm_unreachable, and llvm::A64SysReg::NZCV.
unsigned AArch64InstrInfo::estimateRSStackLimit | ( | MachineFunction & | MF | ) | const |
Look through the instructions in this function and work out the largest the stack frame can be while maintaining the ability to address local slots with no complexities.
Definition at line 486 of file AArch64InstrInfo.cpp.
References llvm::MachineFunction::begin(), llvm::MachineFunction::end(), getAddressConstraints(), I, and MaxOffset.
Referenced by llvm::AArch64FrameLowering::processFunctionBeforeCalleeSavedScan().
bool AArch64InstrInfo::expandPostRAPseudo | ( | MachineBasicBlock::iterator | MI | ) | const |
Definition at line 373 of file AArch64InstrInfo.cpp.
References llvm::MachineInstrBuilder::addOperand(), llvm::BuildMI(), llvm::finalizeBundle(), llvm::MachineInstr::getDebugLoc(), llvm::MachineInstr::getOpcode(), llvm::MachineInstr::getOperand(), llvm::MachineInstr::getParent(), llvm::A64CC::MI, llvm::MachineInstr::setDesc(), and llvm::AArch64ISD::TLSDESCCALL.
void AArch64InstrInfo::getAddressConstraints | ( | const MachineInstr & | MI, |
int & | AccessScale, | ||
int & | MinOffset, | ||
int & | MaxOffset | ||
) | const |
getAddressConstraints - For loads and stores (and PRFMs) taking an immediate offset, this function determines the constraints required for the immediate. It must satisfy:
Definition at line 512 of file AArch64InstrInfo.cpp.
References llvm::TargetOpcode::DBG_VALUE, llvm::MachineInstr::getOpcode(), and llvm_unreachable.
Referenced by llvm::AArch64RegisterInfo::eliminateFrameIndex(), and estimateRSStackLimit().
unsigned AArch64InstrInfo::getInstBundleLength | ( | const MachineInstr & | MI | ) | const |
Definition at line 609 of file AArch64InstrInfo.cpp.
References getInstSizeInBytes(), llvm::MachineInstr::getParent(), I, llvm::MachineBasicBlock::instr_end(), and llvm::A64CC::MI.
Referenced by getInstSizeInBytes().
unsigned AArch64InstrInfo::getInstSizeInBytes | ( | const MachineInstr & | MI | ) | const |
Definition at line 578 of file AArch64InstrInfo.cpp.
References llvm::TargetOpcode::BUNDLE, llvm::TargetOpcode::DBG_VALUE, llvm::TargetOpcode::EH_LABEL, llvm::MachineInstr::getDesc(), getInstBundleLength(), llvm::TargetMachine::getMCAsmInfo(), llvm::MachineInstr::getOpcode(), llvm::MachineInstr::getOperand(), llvm::MachineInstr::getParent(), llvm::MachineBasicBlock::getParent(), llvm::MCInstrDesc::getSize(), llvm::MachineOperand::getSymbolName(), llvm::MachineFunction::getTarget(), llvm::TargetOpcode::IMPLICIT_DEF, llvm::ISD::INLINEASM, llvm::MachineInstr::isLabel(), llvm::TargetOpcode::KILL, llvm_unreachable, llvm::TargetOpcode::PROLOG_LABEL, and llvm::AArch64ISD::TLSDESCCALL.
Referenced by getInstBundleLength().
|
inline |
getRegisterInfo - TargetInstrInfo is a superset of MRegister info. As such, whenever a client has an instance of instruction info, it should always be able to get register info as well (through this method).
Definition at line 37 of file AArch64InstrInfo.h.
Referenced by llvm::AArch64TargetMachine::getRegisterInfo().
|
inline |
Definition at line 39 of file AArch64InstrInfo.h.
Referenced by copyPhysReg().
unsigned AArch64InstrInfo::InsertBranch | ( | MachineBasicBlock & | MBB, |
MachineBasicBlock * | TBB, | ||
MachineBasicBlock * | FBB, | ||
const SmallVectorImpl< MachineOperand > & | Cond, | ||
DebugLoc | DL | ||
) | const |
Definition at line 321 of file AArch64InstrInfo.cpp.
References llvm::MachineInstrBuilder::addMBB(), llvm::MachineInstrBuilder::addOperand(), llvm::BuildMI(), llvm::SmallVectorBase::empty(), and llvm::SmallVectorTemplateCommon< T >::size().
void AArch64InstrInfo::loadRegFromStackSlot | ( | MachineBasicBlock & | MBB, |
MachineBasicBlock::iterator | MBBI, | ||
unsigned | DestReg, | ||
int | FrameIdx, | ||
const TargetRegisterClass * | RC, | ||
const TargetRegisterInfo * | TRI | ||
) | const |
Definition at line 443 of file AArch64InstrInfo.cpp.
References llvm::MachineInstrBuilder::addFrameIndex(), llvm::MachineInstrBuilder::addImm(), llvm::MachineInstrBuilder::addMemOperand(), Align(), llvm::BuildMI(), llvm::MVT::f128, llvm::MVT::f32, llvm::MVT::f64, llvm::MachineBasicBlock::findDebugLoc(), llvm::MachinePointerInfo::getFixedStack(), llvm::MachineFunction::getFrameInfo(), llvm::MachineFunction::getMachineMemOperand(), llvm::MachineFrameInfo::getObjectAlignment(), llvm::MachineFrameInfo::getObjectSize(), llvm::MachineBasicBlock::getParent(), llvm::TargetRegisterClass::getSize(), llvm::TargetRegisterClass::hasType(), llvm::MVT::i32, llvm::MVT::i64, llvm_unreachable, and llvm::MachineMemOperand::MOLoad.
unsigned AArch64InstrInfo::RemoveBranch | ( | MachineBasicBlock & | MBB | ) | const |
Definition at line 345 of file AArch64InstrInfo.cpp.
References llvm::MachineBasicBlock::begin(), llvm::MachineBasicBlock::end(), I, and isCondBranch().
bool AArch64InstrInfo::ReverseBranchCondition | ( | SmallVectorImpl< MachineOperand > & | Cond | ) | const |
Definition at line 281 of file AArch64InstrInfo.cpp.
References llvm::A64InvertCondCode(), and llvm_unreachable.
void AArch64InstrInfo::storeRegToStackSlot | ( | MachineBasicBlock & | MBB, |
MachineBasicBlock::iterator | MI, | ||
unsigned | SrcReg, | ||
bool | isKill, | ||
int | FrameIndex, | ||
const TargetRegisterClass * | RC, | ||
const TargetRegisterInfo * | TRI | ||
) | const |
Definition at line 396 of file AArch64InstrInfo.cpp.
References llvm::MachineInstrBuilder::addFrameIndex(), llvm::MachineInstrBuilder::addImm(), llvm::MachineInstrBuilder::addMemOperand(), llvm::MachineInstrBuilder::addReg(), Align(), llvm::BuildMI(), llvm::MVT::f128, llvm::MVT::f32, llvm::MVT::f64, llvm::MachineBasicBlock::findDebugLoc(), llvm::MachinePointerInfo::getFixedStack(), llvm::MachineFunction::getFrameInfo(), llvm::getKillRegState(), llvm::MachineFunction::getMachineMemOperand(), llvm::MachineFrameInfo::getObjectAlignment(), llvm::MachineFrameInfo::getObjectSize(), llvm::MachineBasicBlock::getParent(), llvm::TargetRegisterClass::getSize(), llvm::TargetRegisterClass::hasType(), llvm::MVT::i32, llvm::MVT::i64, llvm_unreachable, and llvm::MachineMemOperand::MOStore.