LLVM: lib/CodeGen/TargetInstrInfo.cpp File Reference (original) (raw)

Go to the source code of this file.

Functions
static bool isAsmComment (const char *Str, const MCAsmInfo &MAI)
static const TargetRegisterClass * canFoldCopy (const MachineInstr &MI, const TargetInstrInfo &TII, unsigned FoldIdx)
static MachineInstr * foldPatchpoint (MachineFunction &MF, MachineInstr &MI, ArrayRef< unsigned > Ops, int FrameIndex, const TargetInstrInfo &TII)
static void foldInlineAsmMemOperand (MachineInstr *MI, unsigned OpNo, int FI, const TargetInstrInfo &TII)
static MachineInstr * foldInlineAsmMemOperand (MachineInstr &MI, ArrayRef< unsigned > Ops, int FI, const TargetInstrInfo &TII)
static void transferImplicitOperands (MachineInstr *MI, const TargetRegisterInfo *TRI)
transferImplicitOperands - MI is a pseudo-instruction, and the lowered replacement instructions immediately precede it.
static bool canCombine (MachineBasicBlock &MBB, MachineOperand &MO, unsigned CombineOpc=0)
static std::pair< bool, bool > mustSwapOperands (unsigned Pattern)
Variables
static cl::opt< bool > DisableHazardRecognizer ("disable-sched-hazard", cl::Hidden, cl::init(false), cl::desc("Disable hazard detection during preRA scheduling"))
static cl::opt< bool > EnableAccReassociation ("acc-reassoc", cl::Hidden, cl::init(true), cl::desc("Enable reassociation of accumulation chains"))
static cl::opt< unsigned int > MinAccumulatorDepth ("acc-min-depth", cl::Hidden, cl::init(8), cl::desc("Minimum length of accumulator chains " "required for the optimization to kick in"))
static cl::opt< unsigned int > MaxAccumulatorWidth ("acc-max-width", cl::Hidden, cl::init(3), cl::desc("Maximum number of branches in the accumulator tree"))

canCombine()

Definition at line 979 of file TargetInstrInfo.cpp.

References llvm::MachineOperand::getReg(), llvm::MachineOperand::isReg(), llvm::Register::isVirtual(), MBB, MI, and MRI.

Referenced by canCombineShiftIntoShXAdd(), canCombineWithFMUL(), canCombineWithMUL(), llvm::TargetInstrInfo::getAccumulatorChain(), getMaddPatterns(), getMiscPatterns(), and getSHXADDPatterns().

canFoldCopy()

foldInlineAsmMemOperand() [1/2]

Definition at line 662 of file TargetInstrInfo.cpp.

References AbstractManglingParser< Derived, Alloc >::Ops, llvm::MachineInstr::addMemOperand(), llvm::AnalyzeVirtRegInBundle(), assert(), llvm::InlineAsm::Extra_MayLoad, llvm::InlineAsm::Extra_MayStore, foldInlineAsmMemOperand(), llvm::MachinePointerInfo::getFixedStack(), llvm::MachineFunction::getFrameInfo(), llvm::MachineOperand::getImm(), llvm::MachineFunction::getMachineMemOperand(), llvm::MachineInstr::getMF(), llvm::MachineFrameInfo::getObjectAlign(), llvm::MachineFrameInfo::getObjectSize(), llvm::MachineInstr::getOperand(), MI, llvm::InlineAsm::MIOp_ExtraInfo, llvm::MachineMemOperand::MOLoad, llvm::MachineMemOperand::MONone, llvm::MachineMemOperand::MOStore, llvm::VirtRegInfo::Reads, llvm::MachineOperand::setImm(), TII, and llvm::VirtRegInfo::Writes.

foldInlineAsmMemOperand() [2/2]

Definition at line 636 of file TargetInstrInfo.cpp.

References assert(), llvm::SmallVectorTemplateCommon< T, typename >::empty(), F, foldInlineAsmMemOperand(), llvm::InlineAsm::m, llvm::InlineAsm::Mem, MI, llvm::MachineOperand::setImm(), llvm::SmallVectorTemplateCommon< T, typename >::size(), and TII.

Referenced by foldInlineAsmMemOperand(), foldInlineAsmMemOperand(), llvm::TargetInstrInfo::foldMemoryOperand(), and llvm::TargetInstrInfo::foldMemoryOperand().

foldPatchpoint()

Definition at line 571 of file TargetInstrInfo.cpp.

References AbstractManglingParser< Derived, Alloc >::Ops, llvm::MachineInstrBuilder::add(), llvm::MachineInstrBuilder::addFrameIndex(), llvm::MachineInstrBuilder::addImm(), assert(), llvm::MachineInstr::getNumOperands(), llvm::MachineOperand::getReg(), llvm::MachineRegisterInfo::getRegClass(), llvm::MachineFunction::getRegInfo(), llvm::MachineOperand::getSubReg(), llvm::is_contained(), MI, llvm::report_fatal_error(), llvm::MachineInstr::tieOperands(), and TII.

Referenced by llvm::TargetInstrInfo::foldMemoryOperand(), and llvm::TargetInstrInfo::foldMemoryOperand().

isAsmComment()

mustSwapOperands()

transferImplicitOperands()

transferImplicitOperands - MI is a pseudo-instruction, and the lowered replacement instructions immediately precede it.

Copy any implicit operands from MI to the replacement instruction.

Definition at line 855 of file TargetInstrInfo.cpp.

References MI, and TRI.

Referenced by llvm::TargetInstrInfo::lowerCopy().

DisableHazardRecognizer

cl::opt< bool > DisableHazardRecognizer("disable-sched-hazard", cl::Hidden, cl::init(false), cl::desc("Disable hazard detection during preRA scheduling")) ( "disable-sched-hazard" , cl::Hidden , cl::init(false) , cl::desc("Disable hazard detection during preRA scheduling") ) static

EnableAccReassociation

MaxAccumulatorWidth

MinAccumulatorDepth

cl::opt< unsigned int > MinAccumulatorDepth("acc-min-depth", cl::Hidden, cl::init(8), cl::desc("Minimum length of accumulator chains " "required for the optimization to kick in")) ( "acc-min-depth" , cl::Hidden , cl::init(8) , cl::desc("Minimum length of accumulator chains " "required for the optimization to kick in") ) static