LLVM 20.0.0git
|
#include "Target/ARM/ARMTargetMachine.h"
Public Types | |
enum | ARMABI { ARM_ABI_UNKNOWN , ARM_ABI_APCS , ARM_ABI_AAPCS , ARM_ABI_AAPCS16 } |
Public Member Functions | |
ARMBaseTargetMachine (const Target &T, const Triple &TT, StringRef CPU, StringRef FS, const TargetOptions &Options, std::optional< Reloc::Model > RM, std::optional< CodeModel::Model > CM, CodeGenOptLevel OL, bool isLittle) | |
Create an ARM architecture model. | |
~ARMBaseTargetMachine () override | |
const ARMSubtarget * | getSubtargetImpl (const Function &F) const override |
Virtual method implemented by subclasses that returns a reference to that target's TargetSubtargetInfo-derived member variable. | |
const ARMSubtarget * | getSubtargetImpl () const =delete |
bool | isLittleEndian () const |
TargetTransformInfo | getTargetTransformInfo (const Function &F) const override |
Get a TargetTransformInfo implementation for the target. | |
TargetPassConfig * | createPassConfig (PassManagerBase &PM) override |
Create a pass configuration object to be used by addPassToEmitX methods for generating a pipeline of CodeGen passes. | |
TargetLoweringObjectFile * | getObjFileLowering () const override |
bool | isTargetHardFloat () const |
bool | targetSchedulesPostRAScheduling () const override |
True if subtarget inserts the final scheduling pass on its own. | |
MachineFunctionInfo * | createMachineFunctionInfo (BumpPtrAllocator &Allocator, const Function &F, const TargetSubtargetInfo *STI) const override |
Create the target's instance of MachineFunctionInfo. | |
bool | isNoopAddrSpaceCast (unsigned SrcAS, unsigned DestAS) const override |
Returns true if a cast between SrcAS and DestAS is a noop. | |
yaml::MachineFunctionInfo * | createDefaultFuncInfoYAML () const override |
Allocate and return a default initialized instance of the YAML representation for the MachineFunctionInfo. | |
yaml::MachineFunctionInfo * | convertFuncInfoToYAML (const MachineFunction &MF) const override |
Allocate and initialize an instance of the YAML representation of the MachineFunctionInfo. | |
bool | parseMachineFunctionInfo (const yaml::MachineFunctionInfo &, PerFunctionMIParsingState &PFS, SMDiagnostic &Error, SMRange &SourceRange) const override |
Parse out the target's MachineFunctionInfo from the YAML reprsentation. | |
Public Member Functions inherited from llvm::CodeGenTargetMachineImpl | |
TargetTransformInfo | getTargetTransformInfo (const Function &F) const override |
Get a TargetTransformInfo implementation for the target. | |
virtual TargetPassConfig * | createPassConfig (PassManagerBase &PM) override |
Create a pass configuration object to be used by addPassToEmitX methods for generating a pipeline of CodeGen passes. | |
bool | addPassesToEmitFile (PassManagerBase &PM, raw_pwrite_stream &Out, raw_pwrite_stream *DwoOut, CodeGenFileType FileType, bool DisableVerify=true, MachineModuleInfoWrapperPass *MMIWP=nullptr) override |
Add passes to the specified pass manager to get the specified file emitted. | |
bool | addPassesToEmitMC (PassManagerBase &PM, MCContext *&Ctx, raw_pwrite_stream &Out, bool DisableVerify=true) override |
Add passes to the specified pass manager to get machine code emitted with the MCJIT. | |
bool | addAsmPrinter (PassManagerBase &PM, raw_pwrite_stream &Out, raw_pwrite_stream *DwoOut, CodeGenFileType FileType, MCContext &Context) override |
Adds an AsmPrinter pass to the pipeline that prints assembly or machine code from the MI representation. | |
Expected< std::unique_ptr< MCStreamer > > | createMCStreamer (raw_pwrite_stream &Out, raw_pwrite_stream *DwoOut, CodeGenFileType FileType, MCContext &Ctx) override |
Public Member Functions inherited from llvm::TargetMachine | |
TargetMachine (const TargetMachine &)=delete | |
void | operator= (const TargetMachine &)=delete |
virtual | ~TargetMachine () |
const Target & | getTarget () const |
const Triple & | getTargetTriple () const |
StringRef | getTargetCPU () const |
StringRef | getTargetFeatureString () const |
void | setTargetFeatureString (StringRef FS) |
virtual const TargetSubtargetInfo * | getSubtargetImpl (const Function &) const |
Virtual method implemented by subclasses that returns a reference to that target's TargetSubtargetInfo-derived member variable. | |
virtual TargetLoweringObjectFile * | getObjFileLowering () const |
virtual MachineFunctionInfo * | createMachineFunctionInfo (BumpPtrAllocator &Allocator, const Function &F, const TargetSubtargetInfo *STI) const |
Create the target's instance of MachineFunctionInfo. | |
virtual yaml::MachineFunctionInfo * | createDefaultFuncInfoYAML () const |
Allocate and return a default initialized instance of the YAML representation for the MachineFunctionInfo. | |
virtual yaml::MachineFunctionInfo * | convertFuncInfoToYAML (const MachineFunction &MF) const |
Allocate and initialize an instance of the YAML representation of the MachineFunctionInfo. | |
virtual bool | parseMachineFunctionInfo (const yaml::MachineFunctionInfo &, PerFunctionMIParsingState &PFS, SMDiagnostic &Error, SMRange &SourceRange) const |
Parse out the target's MachineFunctionInfo from the YAML reprsentation. | |
template<typename STC > | |
const STC & | getSubtarget (const Function &F) const |
This method returns a pointer to the specified type of TargetSubtargetInfo. | |
const DataLayout | createDataLayout () const |
Create a DataLayout. | |
bool | isCompatibleDataLayout (const DataLayout &Candidate) const |
Test if a DataLayout if compatible with the CodeGen for this target. | |
unsigned | getPointerSize (unsigned AS) const |
Get the pointer size for this target. | |
unsigned | getPointerSizeInBits (unsigned AS) const |
unsigned | getProgramPointerSize () const |
unsigned | getAllocaPointerSize () const |
void | resetTargetOptions (const Function &F) const |
Reset the target options based on the function's attributes. | |
const MCAsmInfo * | getMCAsmInfo () const |
Return target specific asm information. | |
const MCRegisterInfo * | getMCRegisterInfo () const |
const MCInstrInfo * | getMCInstrInfo () const |
const MCSubtargetInfo * | getMCSubtargetInfo () const |
virtual const TargetIntrinsicInfo * | getIntrinsicInfo () const |
If intrinsic information is available, return it. If not, return null. | |
bool | requiresStructuredCFG () const |
void | setRequiresStructuredCFG (bool Value) |
Reloc::Model | getRelocationModel () const |
Returns the code generation relocation model. | |
CodeModel::Model | getCodeModel () const |
Returns the code model. | |
uint64_t | getMaxCodeSize () const |
Returns the maximum code size possible under the code model. | |
void | setCodeModel (CodeModel::Model CM) |
Set the code model. | |
void | setLargeDataThreshold (uint64_t LDT) |
bool | isLargeGlobalValue (const GlobalValue *GV) const |
bool | isPositionIndependent () const |
bool | shouldAssumeDSOLocal (const GlobalValue *GV) const |
bool | useEmulatedTLS () const |
Returns true if this target uses emulated TLS. | |
bool | useTLSDESC () const |
Returns true if this target uses TLS Descriptors. | |
TLSModel::Model | getTLSModel (const GlobalValue *GV) const |
Returns the TLS model which should be used for the given global variable. | |
CodeGenOptLevel | getOptLevel () const |
Returns the optimization level: None, Less, Default, or Aggressive. | |
void | setOptLevel (CodeGenOptLevel Level) |
Overrides the optimization level. | |
void | setFastISel (bool Enable) |
bool | getO0WantsFastISel () |
void | setO0WantsFastISel (bool Enable) |
void | setGlobalISel (bool Enable) |
void | setGlobalISelAbort (GlobalISelAbortMode Mode) |
void | setMachineOutliner (bool Enable) |
void | setSupportsDefaultOutlining (bool Enable) |
void | setSupportsDebugEntryValues (bool Enable) |
void | setCFIFixup (bool Enable) |
bool | getAIXExtendedAltivecABI () const |
bool | getUniqueSectionNames () const |
bool | getUniqueBasicBlockSectionNames () const |
Return true if unique basic block section names must be generated. | |
bool | getSeparateNamedSections () const |
bool | getDataSections () const |
Return true if data objects should be emitted into their own section, corresponds to -fdata-sections. | |
bool | getFunctionSections () const |
Return true if functions should be emitted into their own section, corresponding to -ffunction-sections. | |
bool | getIgnoreXCOFFVisibility () const |
Return true if visibility attribute should not be emitted in XCOFF, corresponding to -mignore-xcoff-visibility. | |
bool | getXCOFFTracebackTable () const |
Return true if XCOFF traceback table should be emitted, corresponding to -xcoff-traceback-table. | |
llvm::BasicBlockSection | getBBSectionsType () const |
If basic blocks should be emitted into their own section, corresponding to -fbasic-block-sections. | |
const MemoryBuffer * | getBBSectionsFuncListBuf () const |
Get the list of functions and basic block ids that need unique sections. | |
virtual bool | isNoopAddrSpaceCast (unsigned SrcAS, unsigned DestAS) const |
Returns true if a cast between SrcAS and DestAS is a noop. | |
void | setPGOOption (std::optional< PGOOptions > PGOOpt) |
const std::optional< PGOOptions > & | getPGOOption () const |
virtual unsigned | getAssumedAddrSpace (const Value *V) const |
If the specified generic pointer could be assumed as a pointer to a specific address space, return that address space. | |
virtual std::pair< const Value *, unsigned > | getPredicatedAddrSpace (const Value *V) const |
If the specified predicate checks whether a generic pointer falls within a specified address space, return that generic pointer and the address space being queried. | |
TargetIRAnalysis | getTargetIRAnalysis () const |
Get a TargetIRAnalysis appropriate for the target. | |
virtual TargetTransformInfo | getTargetTransformInfo (const Function &F) const |
Return a TargetTransformInfo for a given function. | |
virtual void | registerPassBuilderCallbacks (PassBuilder &) |
Allow the target to modify the pass pipeline. | |
virtual void | registerDefaultAliasAnalyses (AAManager &) |
Allow the target to register alias analyses with the AAManager for use with the new pass manager. | |
virtual bool | addPassesToEmitFile (PassManagerBase &, raw_pwrite_stream &, raw_pwrite_stream *, CodeGenFileType, bool=true, MachineModuleInfoWrapperPass *MMIWP=nullptr) |
Add passes to the specified pass manager to get the specified file emitted. | |
virtual bool | addPassesToEmitMC (PassManagerBase &, MCContext *&, raw_pwrite_stream &, bool=true) |
Add passes to the specified pass manager to get machine code emitted with the MCJIT. | |
virtual bool | targetSchedulesPostRAScheduling () const |
True if subtarget inserts the final scheduling pass on its own. | |
void | getNameWithPrefix (SmallVectorImpl< char > &Name, const GlobalValue *GV, Mangler &Mang, bool MayAlwaysUsePrivate=false) const |
MCSymbol * | getSymbol (const GlobalValue *GV) const |
virtual unsigned | getSjLjDataSize () const |
virtual unsigned | getAddressSpaceForPseudoSourceKind (unsigned Kind) const |
getAddressSpaceForPseudoSourceKind - Given the kind of memory (e.g. | |
virtual bool | splitModule (Module &M, unsigned NumParts, function_ref< void(std::unique_ptr< Module > MPart)> ModuleCallback) |
Entry point for module splitting. | |
virtual TargetPassConfig * | createPassConfig (PassManagerBase &PM) |
Create a pass configuration object to be used by addPassToEmitX methods for generating a pipeline of CodeGen passes. | |
virtual Error | buildCodeGenPipeline (ModulePassManager &, raw_pwrite_stream &, raw_pwrite_stream *, CodeGenFileType, const CGPassBuilderOption &, PassInstrumentationCallbacks *) |
virtual bool | isMachineVerifierClean () const |
Returns true if the target is expected to pass all machine verifier checks. | |
virtual bool | addAsmPrinter (PassManagerBase &PM, raw_pwrite_stream &Out, raw_pwrite_stream *DwoOut, CodeGenFileType FileType, MCContext &Context) |
Adds an AsmPrinter pass to the pipeline that prints assembly or machine code from the MI representation. | |
virtual Expected< std::unique_ptr< MCStreamer > > | createMCStreamer (raw_pwrite_stream &Out, raw_pwrite_stream *DwoOut, CodeGenFileType FileType, MCContext &Ctx) |
virtual bool | usesPhysRegsForValues () const |
True if the target uses physical regs (as nearly all targets do). | |
virtual bool | useIPRA () const |
True if the target wants to use interprocedural register allocation by default. | |
virtual int | unqualifiedInlineAsmVariant () const |
The default variant to use in unqualified asm instructions. | |
virtual void | registerMachineRegisterInfoCallback (MachineFunction &MF) const |
Public Attributes | |
enum llvm::ARMBaseTargetMachine::ARMABI | TargetABI |
Public Attributes inherited from llvm::TargetMachine | |
TargetOptions | Options |
Protected Member Functions | |
void | reset () override |
Reset internal state. | |
Protected Member Functions inherited from llvm::CodeGenTargetMachineImpl | |
CodeGenTargetMachineImpl (const Target &T, StringRef DataLayoutString, const Triple &TT, StringRef CPU, StringRef FS, const TargetOptions &Options, Reloc::Model RM, CodeModel::Model CM, CodeGenOptLevel OL) | |
void | initAsmInfo () |
virtual void | reset () |
Reset internal state. | |
Protected Member Functions inherited from llvm::TargetMachine | |
TargetMachine (const Target &T, StringRef DataLayoutString, const Triple &TargetTriple, StringRef CPU, StringRef FS, const TargetOptions &Options) | |
Protected Attributes | |
std::unique_ptr< TargetLoweringObjectFile > | TLOF |
bool | isLittle |
StringMap< std::unique_ptr< ARMSubtarget > > | SubtargetMap |
Protected Attributes inherited from llvm::TargetMachine | |
const Target & | TheTarget |
The Target that this machine was created for. | |
const DataLayout | DL |
DataLayout for the target: keep ABI type size and alignment. | |
Triple | TargetTriple |
Triple string, CPU name, and target feature strings the TargetMachine instance is created with. | |
std::string | TargetCPU |
std::string | TargetFS |
Reloc::Model | RM = Reloc::Static |
CodeModel::Model | CMModel = CodeModel::Small |
uint64_t | LargeDataThreshold = 0 |
CodeGenOptLevel | OptLevel = CodeGenOptLevel::Default |
std::unique_ptr< const MCAsmInfo > | AsmInfo |
Contains target specific asm information. | |
std::unique_ptr< const MCRegisterInfo > | MRI |
std::unique_ptr< const MCInstrInfo > | MII |
std::unique_ptr< const MCSubtargetInfo > | STI |
unsigned | RequireStructuredCFG: 1 |
unsigned | O0WantsFastISel: 1 |
std::optional< PGOOptions > | PGOOption |
Additional Inherited Members | |
Static Public Member Functions inherited from llvm::TargetMachine | |
static std::pair< int, int > | parseBinutilsVersion (StringRef Version) |
Static Public Attributes inherited from llvm::TargetMachine | |
static constexpr unsigned | DefaultSjLjDataSize = 32 |
The integer bit size to use for SjLj based exception handling. | |
Definition at line 28 of file ARMTargetMachine.h.
Enumerator | |
---|---|
ARM_ABI_UNKNOWN | |
ARM_ABI_APCS | |
ARM_ABI_AAPCS | |
ARM_ABI_AAPCS16 |
Definition at line 30 of file ARMTargetMachine.h.
ARMBaseTargetMachine::ARMBaseTargetMachine | ( | const Target & | T, |
const Triple & | TT, | ||
StringRef | CPU, | ||
StringRef | FS, | ||
const TargetOptions & | Options, | ||
std::optional< Reloc::Model > | RM, | ||
std::optional< CodeModel::Model > | CM, | ||
CodeGenOptLevel | OL, | ||
bool | isLittle | ||
) |
Create an ARM architecture model.
Definition at line 217 of file ARMTargetMachine.cpp.
References llvm::FloatABI::Default, llvm::Default, llvm::EABI5, llvm::TargetOptions::EABIVersion, llvm::TargetOptions::FloatABIType, llvm::Triple::getEnvironment(), llvm::GNU, llvm::Triple::GNUEABI, llvm::Triple::GNUEABIHF, llvm::Triple::GNUEABIHFT64, llvm::Triple::GNUEABIT64, llvm::FloatABI::Hard, llvm::CodeGenTargetMachineImpl::initAsmInfo(), llvm::Triple::isOSDarwin(), llvm::Triple::isOSWindows(), isTargetHardFloat(), llvm::Triple::MuslEABI, llvm::Triple::MuslEABIHF, llvm::TargetOptions::NoTrapAfterNoreturn, llvm::Triple::OpenHOS, llvm::TargetMachine::Options, llvm::TargetMachine::setMachineOutliner(), llvm::TargetMachine::setSupportsDebugEntryValues(), llvm::TargetMachine::setSupportsDefaultOutlining(), llvm::FloatABI::Soft, llvm::TargetMachine::TargetTriple, llvm::TargetOptions::TrapUnreachable, and llvm::Unknown.
|
overridedefault |
|
overridevirtual |
Allocate and initialize an instance of the YAML representation of the MachineFunctionInfo.
Reimplemented from llvm::TargetMachine.
Definition at line 633 of file ARMTargetMachine.cpp.
References llvm::MachineFunction::getInfo().
|
overridevirtual |
Allocate and return a default initialized instance of the YAML representation for the MachineFunctionInfo.
Reimplemented from llvm::TargetMachine.
Definition at line 628 of file ARMTargetMachine.cpp.
|
overridevirtual |
Create the target's instance of MachineFunctionInfo.
Reimplemented from llvm::TargetMachine.
Definition at line 272 of file ARMTargetMachine.cpp.
References Allocator, F, and llvm::TargetMachine::STI.
|
overridevirtual |
Create a pass configuration object to be used by addPassToEmitX methods for generating a pipeline of CodeGen passes.
createPassConfig - Create a pass configuration object to be used by addPassToEmitX methods for generating a pipeline of CodeGen passes.
Targets may override this to extend TargetPassConfig.
Reimplemented from llvm::CodeGenTargetMachineImpl.
Definition at line 412 of file ARMTargetMachine.cpp.
|
inlineoverridevirtual |
Reimplemented from llvm::TargetMachine.
Definition at line 65 of file ARMTargetMachine.h.
References TLOF.
|
delete |
|
overridevirtual |
Virtual method implemented by subclasses that returns a reference to that target's TargetSubtargetInfo-derived member variable.
Reimplemented from llvm::TargetMachine.
Definition at line 280 of file ARMTargetMachine.cpp.
References F, llvm::Attribute::getValueAsString(), I, isLittle, llvm::Attribute::isValid(), llvm::TargetMachine::resetTargetOptions(), llvm::StringRef::str(), SubtargetMap, llvm::TargetMachine::TargetCPU, llvm::TargetMachine::TargetFS, and llvm::TargetMachine::TargetTriple.
|
overridevirtual |
Get a TargetTransformInfo implementation for the target.
The TTI returned uses the common code generator to answer queries about the IR.
Reimplemented from llvm::CodeGenTargetMachineImpl.
Definition at line 324 of file ARMTargetMachine.cpp.
References F.
|
inline |
Definition at line 58 of file ARMTargetMachine.h.
References isLittle.
Referenced by llvm::ARMAsmPrinter::PrintAsmOperand().
|
inlineoverridevirtual |
Returns true if a cast between SrcAS and DestAS is a noop.
Reimplemented from llvm::TargetMachine.
Definition at line 87 of file ARMTargetMachine.h.
|
inline |
Definition at line 69 of file ARMTargetMachine.h.
References ARM_ABI_AAPCS16, llvm::Triple::ARMSubArch_v7em, llvm::Triple::EABIHF, llvm::Triple::getEnvironment(), llvm::Triple::getSubArch(), llvm::Triple::GNUEABIHF, llvm::Triple::GNUEABIHFT64, llvm::Triple::isOSBinFormatMachO(), llvm::Triple::isOSWindows(), llvm::Triple::MuslEABIHF, TargetABI, and llvm::TargetMachine::TargetTriple.
Referenced by ARMBaseTargetMachine(), and llvm::ARMSubtarget::isTargetHardFloat().
|
overridevirtual |
Parse out the target's MachineFunctionInfo from the YAML reprsentation.
Reimplemented from llvm::TargetMachine.
Definition at line 638 of file ARMTargetMachine.cpp.
References llvm::MachineFunction::getInfo(), and llvm::PerFunctionMIParsingState::MF.
|
overrideprotectedvirtual |
Reset internal state.
Reimplemented from llvm::CodeGenTargetMachineImpl.
Definition at line 647 of file ARMTargetMachine.cpp.
References SubtargetMap.
|
inlineoverridevirtual |
True if subtarget inserts the final scheduling pass on its own.
Branch relaxation, which must happen after block placement, can on some targets (e.g. SystemZ) expose additional post-RA scheduling opportunities.
Reimplemented from llvm::TargetMachine.
Definition at line 80 of file ARMTargetMachine.h.
|
protected |
Definition at line 39 of file ARMTargetMachine.h.
Referenced by getSubtargetImpl(), and isLittleEndian().
|
mutableprotected |
Definition at line 40 of file ARMTargetMachine.h.
Referenced by getSubtargetImpl(), and reset().
enum llvm::ARMBaseTargetMachine::ARMABI llvm::ARMBaseTargetMachine::TargetABI |
|
protected |
Definition at line 38 of file ARMTargetMachine.h.
Referenced by getObjFileLowering().