LLVM 24.0.0git
PPCTargetMachine.cpp File Reference

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 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 ("ppc-branch-coalesce", cl::Hidden, cl::desc("enable coalescing of duplicate branches for PPC"))
static cl::opt< bool > EnableCTRLoops ("ppc-ctr-loops", cl::desc("Enable CTR loops for PPC"), cl::init(true), cl::Hidden)
static cl::opt< bool > EnableInstrFormPrep ("ppc-instr-form-prep", cl::desc("Enable PPC loop instr form prep"), cl::init(true), cl::Hidden)
static cl::opt< bool > VSXFMAMutateEarly ("ppc-schedule-vsx-fma-mutation-early", cl::Hidden, cl::desc("Schedule VSX FMA instruction mutation early"))
static cl::opt< bool > EnableVSXSwapRemoval ("ppc-vsx-swap-removal", cl::desc("Enable VSX Swap Removal for PPC"), cl::init(true), cl::Hidden)
static cl::opt< bool > EnableMIPeephole ("ppc-peephole", cl::desc("Enable machine peepholes for PPC"), cl::init(true), cl::Hidden)
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 ("ppc-prefetching", cl::desc("enable software prefetching on PPC"), cl::init(false), cl::Hidden)
static cl::opt< bool > EnableExtraTOCRegDeps ("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)
cl::opt< bool > EnablePPCGenScalarMASSEntries ("ppc-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)

Function Documentation

◆ computeFSAdditions()

std::string computeFSAdditions ( StringRef FS,
CodeGenOptLevel OL,
const Triple & TT )
static

◆ createPPCMachineScheduler()

◆ createPPCPostMachineScheduler()

◆ createTLOF()

std::unique_ptr< TargetLoweringObjectFile > createTLOF ( const Triple & TT)
static

Definition at line 190 of file PPCTargetMachine.cpp.

◆ getEffectivePPCCodeModel()

◆ getEffectiveRelocModel()

Reloc::Model getEffectiveRelocModel ( const Triple & TT,
std::optional< Reloc::Model > RM )
static

◆ LLVMInitializePowerPCTarget()

Variable Documentation

◆ EnableBranchCoalescing

cl::opt< bool > EnableBranchCoalescing("ppc-branch-coalesce", cl::Hidden, cl::desc("enable coalescing of duplicate branches for PPC")) ( "ppc-branch-coalesce" ,
cl::Hidden ,
cl::desc("enable coalescing of duplicate branches for PPC")  )
static

◆ EnableCTRLoops

cl::opt< bool > EnableCTRLoops("ppc-ctr-loops", cl::desc("Enable CTR loops for PPC"), cl::init(true), cl::Hidden) ( "ppc-ctr-loops" ,
cl::desc("Enable CTR loops for PPC") ,
cl::init(true) ,
cl::Hidden  )
static

◆ EnableExtraTOCRegDeps

cl::opt< bool > EnableExtraTOCRegDeps("ppc-extra-toc-reg-deps", cl::desc("Add extra TOC register dependencies"), cl::init(true), cl::Hidden) ( "ppc-extra-toc-reg-deps" ,
cl::desc("Add extra TOC register dependencies") ,
cl::init(true) ,
cl::Hidden  )
static

◆ EnableGEPOpt

cl::opt< bool > EnableGEPOpt("ppc-gep-opt", cl::Hidden, cl::desc("Enable optimizations on complex GEPs"), cl::init(true)) ( "ppc-gep-opt" ,
cl::Hidden ,
cl::desc("Enable optimizations on complex GEPs") ,
cl::init(true)  )
static

◆ EnableGlobalMerge

cl::opt< bool > EnableGlobalMerge("ppc-global-merge", cl::Hidden, cl::init(false), cl::desc("Enable the global merge pass")) ( "ppc-global-merge" ,
cl::Hidden ,
cl::init(false) ,
cl::desc("Enable the global merge pass")  )
static

◆ EnableInstrFormPrep

cl::opt< bool > EnableInstrFormPrep("ppc-instr-form-prep", cl::desc("Enable PPC loop instr form prep"), cl::init(true), cl::Hidden) ( "ppc-instr-form-prep" ,
cl::desc("Enable PPC loop instr form prep") ,
cl::init(true) ,
cl::Hidden  )
static

◆ EnableMachineCombinerPass

cl::opt< bool > EnableMachineCombinerPass("ppc-machine-combiner", cl::desc("Enable the machine combiner pass"), cl::init(true), cl::Hidden) ( "ppc-machine-combiner" ,
cl::desc("Enable the machine combiner pass") ,
cl::init(true) ,
cl::Hidden  )
static

◆ EnableMIPeephole

cl::opt< bool > EnableMIPeephole("ppc-peephole", cl::desc("Enable machine peepholes for PPC"), cl::init(true), cl::Hidden) ( "ppc-peephole" ,
cl::desc("Enable machine peepholes for PPC") ,
cl::init(true) ,
cl::Hidden  )
static

◆ EnablePPCGenScalarMASSEntries

cl::opt< bool > EnablePPCGenScalarMASSEntries("ppc-scalar-mass", cl::init(false), cl::desc("Enable lowering math functions to their corresponding MASS " "(scalar) entries"), cl::Hidden) ( "ppc-scalar-mass" ,
cl::init(false) ,
cl::desc("Enable lowering math functions to their corresponding MASS " "(scalar) entries") ,
cl::Hidden  )

◆ EnablePrefetch

cl::opt< bool > EnablePrefetch("ppc-prefetching", cl::desc("enable software prefetching on PPC"), cl::init(false), cl::Hidden) ( "ppc-prefetching" ,
cl::desc("enable software prefetching on PPC") ,
cl::init(false) ,
cl::Hidden  )
static

◆ EnableVSXSwapRemoval

cl::opt< bool > EnableVSXSwapRemoval("ppc-vsx-swap-removal", cl::desc("Enable VSX Swap Removal for PPC"), cl::init(true), cl::Hidden) ( "ppc-vsx-swap-removal" ,
cl::desc("Enable VSX Swap Removal for PPC") ,
cl::init(true) ,
cl::Hidden  )
static

◆ GlobalMergeMaxOffset

cl::opt< unsigned > GlobalMergeMaxOffset("ppc-global-merge-max-offset", cl::Hidden, cl::init(0x7fff), cl::desc("Maximum global merge offset")) ( "ppc-global-merge-max-offset" ,
cl::Hidden ,
cl::init(0x7fff) ,
cl::desc("Maximum global merge offset")  )
static

◆ PPCPostRASchedRegistry

MachineSchedRegistry PPCPostRASchedRegistry("ppc-postra", "Run PowerPC PostRA specific scheduler", createPPCPostMachineScheduler) ( "ppc-postra" ,
"Run PowerPC PostRA specific scheduler" ,
createPPCPostMachineScheduler  )
static

◆ PPCPreRASchedRegistry

MachineSchedRegistry PPCPreRASchedRegistry("ppc-prera", "Run PowerPC PreRA specific scheduler", createPPCMachineScheduler) ( "ppc-prera" ,
"Run PowerPC PreRA specific scheduler" ,
createPPCMachineScheduler  )
static

◆ ReduceCRLogical

cl::opt< bool > ReduceCRLogical("ppc-reduce-cr-logicals", cl::desc("Expand eligible cr-logical binary ops to branches"), cl::init(true), cl::Hidden) ( "ppc-reduce-cr-logicals" ,
cl::desc("Expand eligible cr-logical binary ops to branches") ,
cl::init(true) ,
cl::Hidden  )
static

◆ VSXFMAMutateEarly

cl::opt< bool > VSXFMAMutateEarly("ppc-schedule-vsx-fma-mutation-early", cl::Hidden, cl::desc("Schedule VSX FMA instruction mutation early")) ( "ppc-schedule-vsx-fma-mutation-early" ,
cl::Hidden ,
cl::desc("Schedule VSX FMA instruction mutation early")  )
static