LLVM 22.0.0git
|
#include "HexagonTargetMachine.h"
#include "Hexagon.h"
#include "HexagonISelLowering.h"
#include "HexagonLoopIdiomRecognition.h"
#include "HexagonMachineFunctionInfo.h"
#include "HexagonMachineScheduler.h"
#include "HexagonTargetObjectFile.h"
#include "HexagonTargetTransformInfo.h"
#include "HexagonVectorLoopCarriedReuse.h"
#include "TargetInfo/HexagonTargetInfo.h"
#include "llvm/CodeGen/Passes.h"
#include "llvm/CodeGen/TargetPassConfig.h"
#include "llvm/CodeGen/VLIWMachineScheduler.h"
#include "llvm/MC/TargetRegistry.h"
#include "llvm/Passes/PassBuilder.h"
#include "llvm/Support/CommandLine.h"
#include "llvm/Support/Compiler.h"
#include "llvm/Transforms/Scalar.h"
#include <optional>
#include "llvm/Passes/TargetPassRegistry.inc"
Go to the source code of this file.
Macros | |
#define | GET_PASS_REGISTRY "HexagonPassRegistry.def" |
Functions | |
static ScheduleDAGInstrs * | createVLIWMachineSched (MachineSchedContext *C) |
static Reloc::Model | getEffectiveRelocModel (std::optional< Reloc::Model > RM) |
LLVM_ABI LLVM_EXTERNAL_VISIBILITY void | LLVMInitializeHexagonTarget () |
Variables | |
static cl::opt< bool > | EnableCExtOpt ("hexagon-cext", cl::Hidden, cl::init(true), cl::desc("Enable Hexagon constant-extender optimization")) |
static cl::opt< bool > | EnableRDFOpt ("rdf-opt", cl::Hidden, cl::init(true), cl::desc("Enable RDF-based optimizations")) |
cl::opt< unsigned > | RDFFuncBlockLimit ("rdf-bb-limit", cl::Hidden, cl::init(1000), cl::desc("Basic block limit for a function for RDF optimizations")) |
static cl::opt< bool > | DisableHardwareLoops ("disable-hexagon-hwloops", cl::Hidden, cl::desc("Disable Hardware Loops for Hexagon target")) |
static cl::opt< bool > | DisableAModeOpt ("disable-hexagon-amodeopt", cl::Hidden, cl::desc("Disable Hexagon Addressing Mode Optimization")) |
static cl::opt< bool > | DisableHexagonCFGOpt ("disable-hexagon-cfgopt", cl::Hidden, cl::desc("Disable Hexagon CFG Optimization")) |
static cl::opt< bool > | DisableHCP ("disable-hcp", cl::Hidden, cl::desc("Disable Hexagon constant propagation")) |
static cl::opt< bool > | DisableHexagonMask ("disable-mask", cl::Hidden, cl::desc("Disable Hexagon specific Mask generation pass")) |
static cl::opt< bool > | DisableStoreWidening ("disable-store-widen", cl::Hidden, cl::init(false), cl::desc("Disable store widening")) |
static cl::opt< bool > | DisableLoadWidening ("disable-load-widen", cl::Hidden, cl::desc("Disable load widening")) |
static cl::opt< bool > | EnableExpandCondsets ("hexagon-expand-condsets", cl::init(true), cl::Hidden, cl::desc("Early expansion of MUX")) |
static cl::opt< bool > | EnableTfrCleanup ("hexagon-tfr-cleanup", cl::init(true), cl::Hidden, cl::desc("Cleanup of TFRs/COPYs")) |
static cl::opt< bool > | EnableEarlyIf ("hexagon-eif", cl::init(true), cl::Hidden, cl::desc("Enable early if-conversion")) |
static cl::opt< bool > | EnableCopyHoist ("hexagon-copy-hoist", cl::init(true), cl::Hidden, cl::ZeroOrMore, cl::desc("Enable Hexagon copy hoisting")) |
static cl::opt< bool > | EnableGenInsert ("hexagon-insert", cl::init(true), cl::Hidden, cl::desc("Generate \"insert\" instructions")) |
static cl::opt< bool > | EnableCommGEP ("hexagon-commgep", cl::init(true), cl::Hidden, cl::desc("Enable commoning of GEP instructions")) |
static cl::opt< bool > | EnableGenExtract ("hexagon-extract", cl::init(true), cl::Hidden, cl::desc("Generate \"extract\" instructions")) |
static cl::opt< bool > | EnableGenMux ("hexagon-mux", cl::init(true), cl::Hidden, cl::desc("Enable converting conditional transfers into MUX instructions")) |
static cl::opt< bool > | EnableGenPred ("hexagon-gen-pred", cl::init(true), cl::Hidden, cl::desc("Enable conversion of arithmetic operations to " "predicate instructions")) |
static cl::opt< bool > | EnableLoopPrefetch ("hexagon-loop-prefetch", cl::Hidden, cl::desc("Enable loop data prefetch on Hexagon")) |
static cl::opt< bool > | DisableHSDR ("disable-hsdr", cl::init(false), cl::Hidden, cl::desc("Disable splitting double registers")) |
static cl::opt< bool > | EnableGenMemAbs ("hexagon-mem-abs", cl::init(true), cl::Hidden, cl::desc("Generate absolute set instructions")) |
static cl::opt< bool > | EnableBitSimplify ("hexagon-bit", cl::init(true), cl::Hidden, cl::desc("Bit simplification")) |
static cl::opt< bool > | EnableLoopResched ("hexagon-loop-resched", cl::init(true), cl::Hidden, cl::desc("Loop rescheduling")) |
static cl::opt< bool > | HexagonNoOpt ("hexagon-noopt", cl::init(false), cl::Hidden, cl::desc("Disable backend optimizations")) |
static cl::opt< bool > | EnableVectorPrint ("enable-hexagon-vector-print", cl::Hidden, cl::desc("Enable Hexagon Vector print instr pass")) |
static cl::opt< bool > | EnableVExtractOpt ("hexagon-opt-vextract", cl::Hidden, cl::init(true), cl::desc("Enable vextract optimization")) |
static cl::opt< bool > | EnableVectorCombine ("hexagon-vector-combine", cl::Hidden, cl::init(true), cl::desc("Enable HVX vector combining")) |
static cl::opt< bool > | EnableInitialCFGCleanup ("hexagon-initial-cfg-cleanup", cl::Hidden, cl::init(true), cl::desc("Simplify the CFG after atomic expansion pass")) |
static cl::opt< bool > | EnableInstSimplify ("hexagon-instsimplify", cl::Hidden, cl::init(true), cl::desc("Enable instsimplify")) |
int | HexagonTargetMachineModule = 0 |
HexagonTargetMachineModule - Note that this is used on hosts that cannot link in a library unless there are references into the library. | |
static MachineSchedRegistry | SchedCustomRegistry ("hexagon", "Run Hexagon's custom scheduler", createVLIWMachineSched) |
#define GET_PASS_REGISTRY "HexagonPassRegistry.def" |
|
static |
Definition at line 160 of file HexagonTargetMachine.cpp.
References llvm::ScheduleDAGMI::addMutation(), llvm::CallingConv::C, llvm::createCopyConstrainDAGMutation(), llvm::ScheduleDAG::TII, and llvm::ScheduleDAG::TRI.
Referenced by llvm::HexagonTargetMachine::createMachineScheduler().
|
static |
Definition at line 174 of file HexagonTargetMachine.cpp.
References llvm::Reloc::Static.
LLVM_ABI LLVM_EXTERNAL_VISIBILITY void LLVMInitializeHexagonTarget | ( | ) |
Definition at line 179 of file HexagonTargetMachine.cpp.
References llvm::PassRegistry::getPassRegistry(), llvm::getTheHexagonTarget(), llvm::initializeHexagonAsmPrinterPass(), llvm::initializeHexagonBitSimplifyPass(), llvm::initializeHexagonBranchRelaxationPass(), llvm::initializeHexagonCallFrameInformationPass(), llvm::initializeHexagonCFGOptimizerPass(), llvm::initializeHexagonCommonGEPPass(), llvm::initializeHexagonConstExtendersPass(), llvm::initializeHexagonConstPropagationPass(), llvm::initializeHexagonCopyHoistingPass(), llvm::initializeHexagonCopyToCombinePass(), llvm::initializeHexagonDAGToDAGISelLegacyPass(), llvm::initializeHexagonEarlyIfConversionPass(), llvm::initializeHexagonExpandCondsetsPass(), llvm::initializeHexagonFixupHwLoopsPass(), llvm::initializeHexagonGenExtractPass(), llvm::initializeHexagonGenInsertPass(), llvm::initializeHexagonGenMemAbsolutePass(), llvm::initializeHexagonGenMuxPass(), llvm::initializeHexagonGenPredicatePass(), llvm::initializeHexagonHardwareLoopsPass(), llvm::initializeHexagonLoadWideningPass(), llvm::initializeHexagonLoopAlignPass(), llvm::initializeHexagonLoopIdiomRecognizeLegacyPassPass(), llvm::initializeHexagonLoopReschedulingPass(), llvm::initializeHexagonMaskPass(), llvm::initializeHexagonNewValueJumpPass(), llvm::initializeHexagonOptAddrModePass(), llvm::initializeHexagonOptimizeSZextendsPass(), llvm::initializeHexagonPacketizerPass(), llvm::initializeHexagonPeepholePass(), llvm::initializeHexagonRDFOptPass(), llvm::initializeHexagonSplitConst32AndConst64Pass(), llvm::initializeHexagonSplitDoubleRegsPass(), llvm::initializeHexagonStoreWideningPass(), llvm::initializeHexagonTfrCleanupPass(), llvm::initializeHexagonVectorCombineLegacyPass(), llvm::initializeHexagonVectorLoopCarriedReuseLegacyPassPass(), llvm::initializeHexagonVectorPrintPass(), llvm::initializeHexagonVExtractPass(), and X.
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
int HexagonTargetMachineModule = 0 |
HexagonTargetMachineModule - Note that this is used on hosts that cannot link in a library unless there are references into the library.
In particular, it seems that it is not possible to get things to work on Win32 without this. Though it is unused, do not remove it.
Definition at line 157 of file HexagonTargetMachine.cpp.
cl::opt< unsigned > RDFFuncBlockLimit("rdf-bb-limit", cl::Hidden, cl::init(1000), cl::desc("Basic block limit for a function for RDF optimizations")) | ( | "rdf-bb-limit" | , |
cl::Hidden | , | ||
cl::init(1000) | , | ||
cl::desc("Basic block limit for a function for RDF optimizations") | |||
) |
|
static |