LLVM 22.0.0git
|
#include "llvm/CodeGen/TargetInstrInfo.h"
#include "llvm/ADT/SmallSet.h"
#include "llvm/ADT/StringExtras.h"
#include "llvm/BinaryFormat/Dwarf.h"
#include "llvm/CodeGen/MachineCombinerPattern.h"
#include "llvm/CodeGen/MachineFrameInfo.h"
#include "llvm/CodeGen/MachineInstrBuilder.h"
#include "llvm/CodeGen/MachineMemOperand.h"
#include "llvm/CodeGen/MachineRegisterInfo.h"
#include "llvm/CodeGen/MachineScheduler.h"
#include "llvm/CodeGen/MachineTraceMetrics.h"
#include "llvm/CodeGen/PseudoSourceValue.h"
#include "llvm/CodeGen/ScoreboardHazardRecognizer.h"
#include "llvm/CodeGen/StackMaps.h"
#include "llvm/CodeGen/TargetFrameLowering.h"
#include "llvm/CodeGen/TargetLowering.h"
#include "llvm/CodeGen/TargetRegisterInfo.h"
#include "llvm/CodeGen/TargetSchedule.h"
#include "llvm/IR/DataLayout.h"
#include "llvm/IR/DebugInfoMetadata.h"
#include "llvm/MC/MCAsmInfo.h"
#include "llvm/MC/MCInstrItineraries.h"
#include "llvm/Support/CommandLine.h"
#include "llvm/Support/ErrorHandling.h"
#include "llvm/Support/raw_ostream.h"
#include "llvm/Target/TargetMachine.h"
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")) |
|
static |
Definition at line 989 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().
|
static |
Definition at line 487 of file TargetInstrInfo.cpp.
References assert(), llvm::TargetRegisterClass::contains(), llvm::MachineOperand::getReg(), llvm::MachineOperand::getSubReg(), llvm::TargetRegisterClass::hasSubClassEq(), llvm::Register::isPhysical(), llvm::Register::isVirtual(), MI, MRI, and TII.
Referenced by llvm::TargetInstrInfo::foldMemoryOperand().
|
static |
Definition at line 671 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.
|
static |
Definition at line 645 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().
|
static |
Definition at line 580 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().
Definition at line 98 of file TargetInstrInfo.cpp.
References llvm::StringRef::data(), llvm::MCAsmInfo::getCommentString(), and llvm::StringRef::size().
Referenced by llvm::TargetInstrInfo::getInlineAsmLength().
Definition at line 1283 of file TargetInstrInfo.cpp.
References llvm_unreachable, llvm::REASSOC_AX_BY, llvm::REASSOC_AX_YB, llvm::REASSOC_XA_BY, and llvm::REASSOC_XA_YB.
Referenced by llvm::TargetInstrInfo::reassociateOps().
|
static |
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 865 of file TargetInstrInfo.cpp.
Referenced by llvm::TargetInstrInfo::lowerCopy().
|
static |
Referenced by llvm::TargetInstrInfo::usePreRAHazardRecognizer().
|
static |
Referenced by llvm::TargetInstrInfo::getAccumulatorReassociationPatterns().
|
static |
Referenced by llvm::TargetInstrInfo::genAlternativeCodeSequence().
|
static |
Referenced by llvm::TargetInstrInfo::getAccumulatorReassociationPatterns().