LLVM 22.0.0git
|
#include "PPCTargetMachine.h"
#include "MCTargetDesc/PPCMCTargetDesc.h"
#include "PPC.h"
#include "PPCMachineFunctionInfo.h"
#include "PPCMachineScheduler.h"
#include "PPCMacroFusion.h"
#include "PPCSubtarget.h"
#include "PPCTargetObjectFile.h"
#include "PPCTargetTransformInfo.h"
#include "TargetInfo/PowerPCTargetInfo.h"
#include "llvm/ADT/StringRef.h"
#include "llvm/Analysis/TargetTransformInfo.h"
#include "llvm/CodeGen/GlobalISel/IRTranslator.h"
#include "llvm/CodeGen/GlobalISel/InstructionSelect.h"
#include "llvm/CodeGen/GlobalISel/Legalizer.h"
#include "llvm/CodeGen/GlobalISel/Localizer.h"
#include "llvm/CodeGen/GlobalISel/RegBankSelect.h"
#include "llvm/CodeGen/MachineScheduler.h"
#include "llvm/CodeGen/Passes.h"
#include "llvm/CodeGen/TargetPassConfig.h"
#include "llvm/IR/Attributes.h"
#include "llvm/IR/DataLayout.h"
#include "llvm/IR/Function.h"
#include "llvm/InitializePasses.h"
#include "llvm/MC/TargetRegistry.h"
#include "llvm/Pass.h"
#include "llvm/Support/CodeGen.h"
#include "llvm/Support/CommandLine.h"
#include "llvm/Support/Compiler.h"
#include "llvm/Target/TargetLoweringObjectFile.h"
#include "llvm/Target/TargetOptions.h"
#include "llvm/TargetParser/Triple.h"
#include "llvm/Transforms/Scalar.h"
#include <cassert>
#include <memory>
#include <optional>
#include <string>
Go to the source code of this file.
Functions | |
LLVM_ABI LLVM_EXTERNAL_VISIBILITY void | LLVMInitializePowerPCTarget () |
static std::string | computeFSAdditions (StringRef FS, CodeGenOptLevel OL, const Triple &TT) |
static std::unique_ptr< TargetLoweringObjectFile > | createTLOF (const Triple &TT) |
static PPCTargetMachine::PPCABI | computeTargetABI (const Triple &TT, const TargetOptions &Options) |
static Reloc::Model | getEffectiveRelocModel (const Triple &TT, std::optional< Reloc::Model > RM) |
static CodeModel::Model | getEffectivePPCCodeModel (const Triple &TT, std::optional< CodeModel::Model > CM, bool JIT) |
static ScheduleDAGInstrs * | createPPCMachineScheduler (MachineSchedContext *C) |
static ScheduleDAGInstrs * | createPPCPostMachineScheduler (MachineSchedContext *C) |
Variables | |
static cl::opt< bool > | EnableBranchCoalescing ("enable-ppc-branch-coalesce", cl::Hidden, cl::desc("enable coalescing of duplicate branches for PPC")) |
static cl::opt< bool > | DisableCTRLoops ("disable-ppc-ctrloops", cl::Hidden, cl::desc("Disable CTR loops for PPC")) |
static cl::opt< bool > | DisableInstrFormPrep ("disable-ppc-instr-form-prep", cl::Hidden, cl::desc("Disable PPC loop instr form prep")) |
static cl::opt< bool > | VSXFMAMutateEarly ("schedule-ppc-vsx-fma-mutation-early", cl::Hidden, cl::desc("Schedule VSX FMA instruction mutation early")) |
static cl::opt< bool > | DisableVSXSwapRemoval ("disable-ppc-vsx-swap-removal", cl::Hidden, cl::desc("Disable VSX Swap Removal for PPC")) |
static cl::opt< bool > | DisableMIPeephole ("disable-ppc-peephole", cl::Hidden, cl::desc("Disable machine peepholes for PPC")) |
static cl::opt< bool > | EnableGEPOpt ("ppc-gep-opt", cl::Hidden, cl::desc("Enable optimizations on complex GEPs"), cl::init(true)) |
static cl::opt< bool > | EnablePrefetch ("enable-ppc-prefetching", cl::desc("enable software prefetching on PPC"), cl::init(false), cl::Hidden) |
static cl::opt< bool > | EnableExtraTOCRegDeps ("enable-ppc-extra-toc-reg-deps", cl::desc("Add extra TOC register dependencies"), cl::init(true), cl::Hidden) |
static cl::opt< bool > | EnableMachineCombinerPass ("ppc-machine-combiner", cl::desc("Enable the machine combiner pass"), cl::init(true), cl::Hidden) |
static cl::opt< bool > | ReduceCRLogical ("ppc-reduce-cr-logicals", cl::desc("Expand eligible cr-logical binary ops to branches"), cl::init(true), cl::Hidden) |
static cl::opt< bool > | EnablePPCGenScalarMASSEntries ("enable-ppc-gen-scalar-mass", cl::init(false), cl::desc("Enable lowering math functions to their corresponding MASS " "(scalar) entries"), cl::Hidden) |
static cl::opt< bool > | EnableGlobalMerge ("ppc-global-merge", cl::Hidden, cl::init(false), cl::desc("Enable the global merge pass")) |
static cl::opt< unsigned > | GlobalMergeMaxOffset ("ppc-global-merge-max-offset", cl::Hidden, cl::init(0x7fff), cl::desc("Maximum global merge offset")) |
static MachineSchedRegistry | PPCPreRASchedRegistry ("ppc-prera", "Run PowerPC PreRA specific scheduler", createPPCMachineScheduler) |
static MachineSchedRegistry | PPCPostRASchedRegistry ("ppc-postra", "Run PowerPC PostRA specific scheduler", createPPCPostMachineScheduler) |
|
static |
Definition at line 152 of file PPCTargetMachine.cpp.
References llvm::Default, llvm::None, llvm::Triple::ppc64, and llvm::Triple::ppc64le.
Referenced by llvm::PPCTargetMachine::getSubtargetImpl(), and llvm::PPCTargetMachine::PPCTargetMachine().
|
static |
Definition at line 195 of file PPCTargetMachine.cpp.
References assert(), Options, llvm::Triple::ppc64, llvm::Triple::ppc64le, llvm::PPCTargetMachine::PPC_ABI_ELFv1, llvm::PPCTargetMachine::PPC_ABI_ELFv2, and llvm::PPCTargetMachine::PPC_ABI_UNKNOWN.
Referenced by llvm::ARMBaseTargetMachine::ARMBaseTargetMachine(), llvm::MipsTargetMachine::MipsTargetMachine(), and llvm::PPCTargetMachine::PPCTargetMachine().
|
static |
Definition at line 261 of file PPCTargetMachine.cpp.
References llvm::CallingConv::C, llvm::createPowerPCMacroFusionDAGMutation(), llvm::createSchedLive(), and llvm::createStoreClusterDAGMutation().
Referenced by llvm::PPCTargetMachine::createMachineScheduler().
|
static |
Definition at line 276 of file PPCTargetMachine.cpp.
References llvm::CallingConv::C, llvm::createPowerPCMacroFusionDAGMutation(), llvm::createSchedPostRA(), and llvm::createStoreClusterDAGMutation().
Referenced by llvm::PPCTargetMachine::createPostMachineScheduler().
|
static |
Definition at line 188 of file PPCTargetMachine.cpp.
|
static |
Definition at line 236 of file PPCTargetMachine.cpp.
References assert(), llvm::CodeModel::Kernel, llvm::CodeModel::Medium, llvm::report_fatal_error(), llvm::CodeModel::Small, and llvm::CodeModel::Tiny.
Referenced by llvm::PPCTargetMachine::PPCTargetMachine().
|
static |
Definition at line 218 of file PPCTargetMachine.cpp.
References llvm::Reloc::PIC_, llvm::Triple::ppc64, llvm::report_fatal_error(), and llvm::Reloc::Static.
LLVM_ABI LLVM_EXTERNAL_VISIBILITY void LLVMInitializePowerPCTarget | ( | ) |
Definition at line 118 of file PPCTargetMachine.cpp.
References A(), B(), llvm::CallingConv::C, D(), llvm::PassRegistry::getPassRegistry(), llvm::getThePPC32LETarget(), llvm::getThePPC32Target(), llvm::getThePPC64LETarget(), llvm::getThePPC64Target(), llvm::initializeGlobalISel(), llvm::initializePPCAIXAsmPrinterPass(), llvm::initializePPCBoolRetToIntPass(), llvm::initializePPCBranchCoalescingPass(), llvm::initializePPCBSelPass(), llvm::initializePPCCTRLoopsPass(), llvm::initializePPCCTRLoopsVerifyPass(), llvm::initializePPCDAGToDAGISelLegacyPass(), llvm::initializePPCEarlyReturnPass(), llvm::initializePPCExpandAtomicPseudoPass(), llvm::initializePPCGenScalarMASSEntriesPass(), llvm::initializePPCLinuxAsmPrinterPass(), llvm::initializePPCLoopInstrFormPrepPass(), llvm::initializePPCLowerMASSVEntriesPass(), llvm::initializePPCMIPeepholePass(), llvm::initializePPCPreEmitPeepholePass(), llvm::initializePPCReduceCRLogicalsPass(), llvm::initializePPCTLSDynamicCallPass(), llvm::initializePPCTOCRegDepsPass(), llvm::initializePPCVSXFMAMutatePass(), llvm::initializePPCVSXSwapRemovalPass(), and llvm::initializePPCVSXWACCCopyPass().
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |