LLVM 20.0.0git
Classes | Public Member Functions | Public Attributes | List of all members
llvm::HexagonSubtarget Class Reference

#include "Target/Hexagon/HexagonSubtarget.h"

Inheritance diagram for llvm::HexagonSubtarget:
Inheritance graph
[legend]

Classes

struct  BankConflictMutation
 
struct  CallMutation
 
struct  HVXMemLatencyMutation
 
struct  UsrOverflowMutation
 

Public Member Functions

 HexagonSubtarget (const Triple &TT, StringRef CPU, StringRef FS, const TargetMachine &TM)
 
const TriplegetTargetTriple () const
 
bool isEnvironmentMusl () const
 
const InstrItineraryDatagetInstrItineraryData () const override
 getInstrItins - Return the instruction itineraries based on subtarget selection.
 
const HexagonInstrInfogetInstrInfo () const override
 
const HexagonRegisterInfogetRegisterInfo () const override
 
const HexagonTargetLoweringgetTargetLowering () const override
 
const HexagonFrameLoweringgetFrameLowering () const override
 
const HexagonSelectionDAGInfogetSelectionDAGInfo () const override
 
HexagonSubtargetinitializeSubtargetDependencies (StringRef CPU, StringRef FS)
 
void ParseSubtargetFeatures (StringRef CPU, StringRef TuneCPU, StringRef FS)
 ParseSubtargetFeatures - Parses features string setting specified subtarget options.
 
bool isXRaySupported () const override
 
bool hasV5Ops () const
 
bool hasV5OpsOnly () const
 
bool hasV55Ops () const
 
bool hasV55OpsOnly () const
 
bool hasV60Ops () const
 
bool hasV60OpsOnly () const
 
bool hasV62Ops () const
 
bool hasV62OpsOnly () const
 
bool hasV65Ops () const
 
bool hasV65OpsOnly () const
 
bool hasV66Ops () const
 
bool hasV66OpsOnly () const
 
bool hasV67Ops () const
 
bool hasV67OpsOnly () const
 
bool hasV68Ops () const
 
bool hasV68OpsOnly () const
 
bool hasV69Ops () const
 
bool hasV69OpsOnly () const
 
bool hasV71Ops () const
 
bool hasV71OpsOnly () const
 
bool hasV73Ops () const
 
bool hasV73OpsOnly () const
 
bool useAudioOps () const
 
bool useCompound () const
 
bool useLongCalls () const
 
bool useMemops () const
 
bool usePackets () const
 
bool useNewValueJumps () const
 
bool useNewValueStores () const
 
bool useSmallData () const
 
bool useUnsafeMath () const
 
bool useZRegOps () const
 
bool useCabac () const
 
bool isTinyCore () const
 
bool isTinyCoreWithDuplex () const
 
bool useHVXIEEEFPOps () const
 
bool useHVXQFloatOps () const
 
bool useHVXFloatingPoint () const
 
bool useHVXOps () const
 
bool useHVXV60Ops () const
 
bool useHVXV62Ops () const
 
bool useHVXV65Ops () const
 
bool useHVXV66Ops () const
 
bool useHVXV67Ops () const
 
bool useHVXV68Ops () const
 
bool useHVXV69Ops () const
 
bool useHVXV71Ops () const
 
bool useHVXV73Ops () const
 
bool useHVX128BOps () const
 
bool useHVX64BOps () const
 
bool hasMemNoShuf () const
 
bool hasReservedR19 () const
 
bool usePredicatedCalls () const
 
bool noreturnStackElim () const
 
bool useBSBScheduling () const
 
bool enableMachineScheduler () const override
 
bool enableMachineSchedDefaultSched () const override
 
AntiDepBreakMode getAntiDepBreakMode () const override
 
bool enablePostRAScheduler () const override
 True if the subtarget should run a scheduler after register allocation.
 
bool enableSubRegLiveness () const override
 
const std::string & getCPUString () const
 
const Hexagon::ArchEnumgetHexagonArchVersion () const
 
void getPostRAMutations (std::vector< std::unique_ptr< ScheduleDAGMutation > > &Mutations) const override
 
void getSMSMutations (std::vector< std::unique_ptr< ScheduleDAGMutation > > &Mutations) const override
 
bool useAA () const override
 Enable use of alias analysis during code generation (during MI scheduling, DAGCombine, etc.).
 
void adjustSchedDependency (SUnit *Def, int DefOpIdx, SUnit *Use, int UseOpIdx, SDep &Dep, const TargetSchedModel *SchedModel) const override
 Perform target specific adjustments to the latency of a schedule dependency.
 
unsigned getVectorLength () const
 
ArrayRef< MVTgetHVXElementTypes () const
 
bool isHVXElementType (MVT Ty, bool IncludeBool=false) const
 
bool isHVXVectorType (EVT VecTy, bool IncludeBool=false) const
 
bool isTypeForHVX (Type *VecTy, bool IncludeBool=false) const
 
Align getTypeAlignment (MVT Ty) const
 
unsigned getL1CacheLineSize () const
 
unsigned getL1PrefetchDistance () const
 
Intrinsic::ID getIntrinsicId (unsigned Opc) const
 

Public Attributes

Hexagon::ArchEnum HexagonArchVersion
 
Hexagon::ArchEnum HexagonHVXVersion = Hexagon::ArchEnum::NoArch
 
CodeGenOptLevel OptLevel
 
bool UseBSBScheduling
 True if the target should use Back-Skip-Back scheduling.
 

Detailed Description

Definition at line 43 of file HexagonSubtarget.h.

Constructor & Destructor Documentation

◆ HexagonSubtarget()

HexagonSubtarget::HexagonSubtarget ( const Triple TT,
StringRef  CPU,
StringRef  FS,
const TargetMachine TM 
)

Member Function Documentation

◆ adjustSchedDependency()

void HexagonSubtarget::adjustSchedDependency ( SUnit Def,
int  DefOpIdx,
SUnit Use,
int  UseOpIdx,
SDep Dep,
const TargetSchedModel SchedModel 
) const
override

◆ enableMachineSchedDefaultSched()

bool llvm::HexagonSubtarget::enableMachineSchedDefaultSched ( ) const
inlineoverride

Definition at line 279 of file HexagonSubtarget.h.

◆ enableMachineScheduler()

bool HexagonSubtarget::enableMachineScheduler ( ) const
override

Definition at line 529 of file HexagonSubtarget.cpp.

References DisableHexagonMISched.

◆ enablePostRAScheduler()

bool llvm::HexagonSubtarget::enablePostRAScheduler ( ) const
inlineoverride

True if the subtarget should run a scheduler after register allocation.

Definition at line 286 of file HexagonSubtarget.h.

◆ enableSubRegLiveness()

bool HexagonSubtarget::enableSubRegLiveness ( ) const
override

Definition at line 725 of file HexagonSubtarget.cpp.

◆ getAntiDepBreakMode()

AntiDepBreakMode llvm::HexagonSubtarget::getAntiDepBreakMode ( ) const
inlineoverride

Definition at line 283 of file HexagonSubtarget.h.

◆ getCPUString()

const std::string & llvm::HexagonSubtarget::getCPUString ( ) const
inline

Definition at line 290 of file HexagonSubtarget.h.

◆ getFrameLowering()

const HexagonFrameLowering * llvm::HexagonSubtarget::getFrameLowering ( ) const
inlineoverride

◆ getHexagonArchVersion()

const Hexagon::ArchEnum & llvm::HexagonSubtarget::getHexagonArchVersion ( ) const
inline

◆ getHVXElementTypes()

ArrayRef< MVT > llvm::HexagonSubtarget::getHVXElementTypes ( ) const
inline

Definition at line 323 of file HexagonSubtarget.h.

References useHVXFloatingPoint(), and useHVXV68Ops().

Referenced by isHVXElementType(), and isHVXVectorType().

◆ getInstrInfo()

const HexagonInstrInfo * llvm::HexagonSubtarget::getInstrInfo ( ) const
inlineoverride

◆ getInstrItineraryData()

const InstrItineraryData * llvm::HexagonSubtarget::getInstrItineraryData ( ) const
inlineoverride

getInstrItins - Return the instruction itineraries based on subtarget selection.

Definition at line 121 of file HexagonSubtarget.h.

Referenced by llvm::HexagonInstrInfo::getUnits().

◆ getIntrinsicId()

Intrinsic::ID HexagonSubtarget::getIntrinsicId ( unsigned  Opc) const

Definition at line 727 of file HexagonSubtarget.cpp.

References A, B, error, getVectorLength(), llvm_unreachable, and llvm::sort().

◆ getL1CacheLineSize()

unsigned HexagonSubtarget::getL1CacheLineSize ( ) const

Definition at line 717 of file HexagonSubtarget.cpp.

Referenced by llvm::HexagonTTIImpl::getCacheLineSize().

◆ getL1PrefetchDistance()

unsigned HexagonSubtarget::getL1PrefetchDistance ( ) const

Definition at line 721 of file HexagonSubtarget.cpp.

Referenced by llvm::HexagonTTIImpl::getPrefetchDistance().

◆ getPostRAMutations()

void HexagonSubtarget::getPostRAMutations ( std::vector< std::unique_ptr< ScheduleDAGMutation > > &  Mutations) const
override

Definition at line 513 of file HexagonSubtarget.cpp.

◆ getRegisterInfo()

const HexagonRegisterInfo * llvm::HexagonSubtarget::getRegisterInfo ( ) const
inlineoverride

◆ getSelectionDAGInfo()

const HexagonSelectionDAGInfo * llvm::HexagonSubtarget::getSelectionDAGInfo ( ) const
inlineoverride

Definition at line 134 of file HexagonSubtarget.h.

◆ getSMSMutations()

void HexagonSubtarget::getSMSMutations ( std::vector< std::unique_ptr< ScheduleDAGMutation > > &  Mutations) const
override

Definition at line 520 of file HexagonSubtarget.cpp.

◆ getTargetLowering()

const HexagonTargetLowering * llvm::HexagonSubtarget::getTargetLowering ( ) const
inlineoverride

Definition at line 128 of file HexagonSubtarget.h.

Referenced by isTypeForHVX().

◆ getTargetTriple()

const Triple & llvm::HexagonSubtarget::getTargetTriple ( ) const
inline

Definition at line 114 of file HexagonSubtarget.h.

◆ getTypeAlignment()

Align llvm::HexagonSubtarget::getTypeAlignment ( MVT  Ty) const
inline

◆ getVectorLength()

unsigned llvm::HexagonSubtarget::getVectorLength ( ) const
inline

◆ hasMemNoShuf()

bool llvm::HexagonSubtarget::hasMemNoShuf ( ) const
inline

Definition at line 267 of file HexagonSubtarget.h.

◆ hasReservedR19()

bool llvm::HexagonSubtarget::hasReservedR19 ( ) const
inline

Definition at line 268 of file HexagonSubtarget.h.

Referenced by llvm::HexagonRegisterInfo::getReservedRegs().

◆ hasV55Ops()

bool llvm::HexagonSubtarget::hasV55Ops ( ) const
inline

Definition at line 153 of file HexagonSubtarget.h.

References getHexagonArchVersion(), and llvm::Hexagon::V55.

◆ hasV55OpsOnly()

bool llvm::HexagonSubtarget::hasV55OpsOnly ( ) const
inline

Definition at line 156 of file HexagonSubtarget.h.

References getHexagonArchVersion(), and llvm::Hexagon::V55.

◆ hasV5Ops()

bool llvm::HexagonSubtarget::hasV5Ops ( ) const
inline

Definition at line 147 of file HexagonSubtarget.h.

References getHexagonArchVersion(), and llvm::Hexagon::V5.

◆ hasV5OpsOnly()

bool llvm::HexagonSubtarget::hasV5OpsOnly ( ) const
inline

Definition at line 150 of file HexagonSubtarget.h.

References getHexagonArchVersion(), and llvm::Hexagon::V5.

◆ hasV60Ops()

bool llvm::HexagonSubtarget::hasV60Ops ( ) const
inline

◆ hasV60OpsOnly()

bool llvm::HexagonSubtarget::hasV60OpsOnly ( ) const
inline

Definition at line 162 of file HexagonSubtarget.h.

References getHexagonArchVersion(), and llvm::Hexagon::V60.

Referenced by cannotCoexistAsymm().

◆ hasV62Ops()

bool llvm::HexagonSubtarget::hasV62Ops ( ) const
inline

◆ hasV62OpsOnly()

bool llvm::HexagonSubtarget::hasV62OpsOnly ( ) const
inline

Definition at line 168 of file HexagonSubtarget.h.

References getHexagonArchVersion(), and llvm::Hexagon::V62.

◆ hasV65Ops()

bool llvm::HexagonSubtarget::hasV65Ops ( ) const
inline

◆ hasV65OpsOnly()

bool llvm::HexagonSubtarget::hasV65OpsOnly ( ) const
inline

Definition at line 174 of file HexagonSubtarget.h.

References getHexagonArchVersion(), and llvm::Hexagon::V65.

◆ hasV66Ops()

bool llvm::HexagonSubtarget::hasV66Ops ( ) const
inline

◆ hasV66OpsOnly()

bool llvm::HexagonSubtarget::hasV66OpsOnly ( ) const
inline

Definition at line 180 of file HexagonSubtarget.h.

References getHexagonArchVersion(), and llvm::Hexagon::V66.

◆ hasV67Ops()

bool llvm::HexagonSubtarget::hasV67Ops ( ) const
inline

◆ hasV67OpsOnly()

bool llvm::HexagonSubtarget::hasV67OpsOnly ( ) const
inline

Definition at line 186 of file HexagonSubtarget.h.

References getHexagonArchVersion(), and llvm::Hexagon::V67.

◆ hasV68Ops()

bool llvm::HexagonSubtarget::hasV68Ops ( ) const
inline

Definition at line 189 of file HexagonSubtarget.h.

References getHexagonArchVersion(), and llvm::Hexagon::V68.

Referenced by initializeSubtargetDependencies().

◆ hasV68OpsOnly()

bool llvm::HexagonSubtarget::hasV68OpsOnly ( ) const
inline

Definition at line 192 of file HexagonSubtarget.h.

References getHexagonArchVersion(), and llvm::Hexagon::V68.

◆ hasV69Ops()

bool llvm::HexagonSubtarget::hasV69Ops ( ) const
inline

Definition at line 195 of file HexagonSubtarget.h.

References getHexagonArchVersion(), and llvm::Hexagon::V69.

◆ hasV69OpsOnly()

bool llvm::HexagonSubtarget::hasV69OpsOnly ( ) const
inline

Definition at line 198 of file HexagonSubtarget.h.

References getHexagonArchVersion(), and llvm::Hexagon::V69.

◆ hasV71Ops()

bool llvm::HexagonSubtarget::hasV71Ops ( ) const
inline

Definition at line 201 of file HexagonSubtarget.h.

References getHexagonArchVersion(), and llvm::Hexagon::V71.

◆ hasV71OpsOnly()

bool llvm::HexagonSubtarget::hasV71OpsOnly ( ) const
inline

Definition at line 204 of file HexagonSubtarget.h.

References getHexagonArchVersion(), and llvm::Hexagon::V71.

◆ hasV73Ops()

bool llvm::HexagonSubtarget::hasV73Ops ( ) const
inline

Definition at line 207 of file HexagonSubtarget.h.

References getHexagonArchVersion(), and llvm::Hexagon::V73.

◆ hasV73OpsOnly()

bool llvm::HexagonSubtarget::hasV73OpsOnly ( ) const
inline

Definition at line 210 of file HexagonSubtarget.h.

References getHexagonArchVersion(), and llvm::Hexagon::V73.

◆ initializeSubtargetDependencies()

HexagonSubtarget & HexagonSubtarget::initializeSubtargetDependencies ( StringRef  CPU,
StringRef  FS 
)

◆ isEnvironmentMusl()

bool llvm::HexagonSubtarget::isEnvironmentMusl ( ) const
inline

◆ isHVXElementType()

bool HexagonSubtarget::isHVXElementType ( MVT  Ty,
bool  IncludeBool = false 
) const

◆ isHVXVectorType()

bool HexagonSubtarget::isHVXVectorType ( EVT  VecTy,
bool  IncludeBool = false 
) const

◆ isTinyCore()

bool llvm::HexagonSubtarget::isTinyCore ( ) const
inline

Definition at line 226 of file HexagonSubtarget.h.

Referenced by initializeSubtargetDependencies(), and isTinyCoreWithDuplex().

◆ isTinyCoreWithDuplex()

bool llvm::HexagonSubtarget::isTinyCoreWithDuplex ( ) const
inline

Definition at line 227 of file HexagonSubtarget.h.

References isTinyCore().

◆ isTypeForHVX()

bool HexagonSubtarget::isTypeForHVX ( Type VecTy,
bool  IncludeBool = false 
) const

◆ isXRaySupported()

bool llvm::HexagonSubtarget::isXRaySupported ( ) const
inlineoverride

Definition at line 145 of file HexagonSubtarget.h.

◆ noreturnStackElim()

bool llvm::HexagonSubtarget::noreturnStackElim ( ) const
inline

Definition at line 271 of file HexagonSubtarget.h.

◆ ParseSubtargetFeatures()

void llvm::HexagonSubtarget::ParseSubtargetFeatures ( StringRef  CPU,
StringRef  TuneCPU,
StringRef  FS 
)

ParseSubtargetFeatures - Parses features string setting specified subtarget options.

Definition of function is auto generated by tblgen.

Referenced by initializeSubtargetDependencies().

◆ useAA()

bool HexagonSubtarget::useAA ( ) const
override

Enable use of alias analysis during code generation (during MI scheduling, DAGCombine, etc.).

Definition at line 428 of file HexagonSubtarget.cpp.

References llvm::None, and OptLevel.

◆ useAudioOps()

bool llvm::HexagonSubtarget::useAudioOps ( ) const
inline

Definition at line 214 of file HexagonSubtarget.h.

◆ useBSBScheduling()

bool llvm::HexagonSubtarget::useBSBScheduling ( ) const
inline

Definition at line 273 of file HexagonSubtarget.h.

References UseBSBScheduling.

◆ useCabac()

bool llvm::HexagonSubtarget::useCabac ( ) const
inline

Definition at line 224 of file HexagonSubtarget.h.

◆ useCompound()

bool llvm::HexagonSubtarget::useCompound ( ) const
inline

Definition at line 215 of file HexagonSubtarget.h.

Referenced by llvm::HexagonDAGToDAGISel::SelectVAlign().

◆ useHVX128BOps()

bool llvm::HexagonSubtarget::useHVX128BOps ( ) const
inline

◆ useHVX64BOps()

bool llvm::HexagonSubtarget::useHVX64BOps ( ) const
inline

Definition at line 265 of file HexagonSubtarget.h.

References useHVXOps().

Referenced by getVectorLength().

◆ useHVXFloatingPoint()

bool llvm::HexagonSubtarget::useHVXFloatingPoint ( ) const
inline

Definition at line 233 of file HexagonSubtarget.h.

Referenced by getHVXElementTypes(), and isTypeForHVX().

◆ useHVXIEEEFPOps()

bool llvm::HexagonSubtarget::useHVXIEEEFPOps ( ) const
inline

Definition at line 229 of file HexagonSubtarget.h.

References useHVXOps().

◆ useHVXOps()

bool llvm::HexagonSubtarget::useHVXOps ( ) const
inline

◆ useHVXQFloatOps()

bool llvm::HexagonSubtarget::useHVXQFloatOps ( ) const
inline

Definition at line 230 of file HexagonSubtarget.h.

References HexagonHVXVersion, and llvm::Hexagon::V68.

◆ useHVXV60Ops()

bool llvm::HexagonSubtarget::useHVXV60Ops ( ) const
inline

Definition at line 237 of file HexagonSubtarget.h.

References HexagonHVXVersion, and llvm::Hexagon::V60.

◆ useHVXV62Ops()

bool llvm::HexagonSubtarget::useHVXV62Ops ( ) const
inline

Definition at line 240 of file HexagonSubtarget.h.

References HexagonHVXVersion, and llvm::Hexagon::V62.

◆ useHVXV65Ops()

bool llvm::HexagonSubtarget::useHVXV65Ops ( ) const
inline

Definition at line 243 of file HexagonSubtarget.h.

References HexagonHVXVersion, and llvm::Hexagon::V65.

◆ useHVXV66Ops()

bool llvm::HexagonSubtarget::useHVXV66Ops ( ) const
inline

Definition at line 246 of file HexagonSubtarget.h.

References HexagonHVXVersion, and llvm::Hexagon::V66.

◆ useHVXV67Ops()

bool llvm::HexagonSubtarget::useHVXV67Ops ( ) const
inline

Definition at line 249 of file HexagonSubtarget.h.

References HexagonHVXVersion, and llvm::Hexagon::V67.

◆ useHVXV68Ops()

bool llvm::HexagonSubtarget::useHVXV68Ops ( ) const
inline

◆ useHVXV69Ops()

bool llvm::HexagonSubtarget::useHVXV69Ops ( ) const
inline

Definition at line 255 of file HexagonSubtarget.h.

References HexagonHVXVersion, and llvm::Hexagon::V69.

◆ useHVXV71Ops()

bool llvm::HexagonSubtarget::useHVXV71Ops ( ) const
inline

Definition at line 258 of file HexagonSubtarget.h.

References HexagonHVXVersion, and llvm::Hexagon::V71.

◆ useHVXV73Ops()

bool llvm::HexagonSubtarget::useHVXV73Ops ( ) const
inline

Definition at line 261 of file HexagonSubtarget.h.

References HexagonHVXVersion, and llvm::Hexagon::V73.

◆ useLongCalls()

bool llvm::HexagonSubtarget::useLongCalls ( ) const
inline

Definition at line 216 of file HexagonSubtarget.h.

◆ useMemops()

bool llvm::HexagonSubtarget::useMemops ( ) const
inline

Definition at line 217 of file HexagonSubtarget.h.

◆ useNewValueJumps()

bool llvm::HexagonSubtarget::useNewValueJumps ( ) const
inline

Definition at line 219 of file HexagonSubtarget.h.

◆ useNewValueStores()

bool llvm::HexagonSubtarget::useNewValueStores ( ) const
inline

Definition at line 220 of file HexagonSubtarget.h.

Referenced by llvm::HexagonInstrInfo::mayBeNewStore().

◆ usePackets()

bool llvm::HexagonSubtarget::usePackets ( ) const
inline

Definition at line 218 of file HexagonSubtarget.h.

◆ usePredicatedCalls()

bool HexagonSubtarget::usePredicatedCalls ( ) const

Definition at line 535 of file HexagonSubtarget.cpp.

References EnablePredicatedCalls.

Referenced by llvm::HexagonInstrInfo::isPredicable().

◆ useSmallData()

bool llvm::HexagonSubtarget::useSmallData ( ) const
inline

Definition at line 221 of file HexagonSubtarget.h.

Referenced by llvm::HexagonTargetLowering::LowerGLOBALADDRESS().

◆ useUnsafeMath()

bool llvm::HexagonSubtarget::useUnsafeMath ( ) const
inline

Definition at line 222 of file HexagonSubtarget.h.

◆ useZRegOps()

bool llvm::HexagonSubtarget::useZRegOps ( ) const
inline

Definition at line 223 of file HexagonSubtarget.h.

Member Data Documentation

◆ HexagonArchVersion

Hexagon::ArchEnum llvm::HexagonSubtarget::HexagonArchVersion

Definition at line 71 of file HexagonSubtarget.h.

Referenced by getHexagonArchVersion(), and initializeSubtargetDependencies().

◆ HexagonHVXVersion

Hexagon::ArchEnum llvm::HexagonSubtarget::HexagonHVXVersion = Hexagon::ArchEnum::NoArch

◆ OptLevel

CodeGenOptLevel llvm::HexagonSubtarget::OptLevel

Definition at line 73 of file HexagonSubtarget.h.

Referenced by useAA().

◆ UseBSBScheduling

bool llvm::HexagonSubtarget::UseBSBScheduling

True if the target should use Back-Skip-Back scheduling.

This is the default for V60.

Definition at line 76 of file HexagonSubtarget.h.

Referenced by initializeSubtargetDependencies(), and useBSBScheduling().


The documentation for this class was generated from the following files: