LLVM  8.0.1
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]
Collaboration diagram for llvm::HexagonSubtarget:
Collaboration 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 InstrItineraryDatagetInstrItineraryData () const override
 getInstrItins - Return the instruction itineraries based on subtarget selection. More...
 
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 FS)
 ParseSubtargetFeatures - Parses features string setting specified subtarget options. More...
 
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 useLongCalls () const
 
bool useMemops () const
 
bool usePackets () const
 
bool useNewValueJumps () const
 
bool useNewValueStores () const
 
bool useSmallData () const
 
bool useZRegOps () const
 
bool useHVXOps () 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
 
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.). More...
 
void adjustSchedDependency (SUnit *def, SUnit *use, SDep &dep) const override
 Perform target specific adjustments to the latency of a schedule dependency. More...
 
unsigned getVectorLength () const
 
ArrayRef< MVTgetHVXElementTypes () const
 
bool isHVXVectorType (MVT VecTy, bool IncludeBool=false) const
 
unsigned getTypeAlignment (MVT Ty) const
 
unsigned getL1CacheLineSize () const
 
unsigned getL1PrefetchDistance () const
 

Public Attributes

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

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 
)

Definition at line 80 of file HexagonSubtarget.cpp.

References assert(), and llvm::InstrItineraryData::Itineraries.

Member Function Documentation

◆ adjustSchedDependency()

void HexagonSubtarget::adjustSchedDependency ( SUnit Src,
SUnit Dst,
SDep Dep 
) const
override

◆ enableMachineSchedDefaultSched()

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

Definition at line 188 of file HexagonSubtarget.h.

◆ enableMachineScheduler()

bool HexagonSubtarget::enableMachineScheduler ( ) const
override

Definition at line 393 of file HexagonSubtarget.cpp.

References DisableHexagonMISched.

Referenced by useBSBScheduling().

◆ enablePostRAScheduler()

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

Definition at line 191 of file HexagonSubtarget.h.

References enableSubRegLiveness().

◆ enableSubRegLiveness()

bool HexagonSubtarget::enableSubRegLiveness ( ) const
override

Definition at line 581 of file HexagonSubtarget.cpp.

References EnableSubregLiveness.

Referenced by enablePostRAScheduler().

◆ getAntiDepBreakMode()

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

Definition at line 190 of file HexagonSubtarget.h.

◆ getCPUString()

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

Definition at line 195 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

◆ 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 101 of file HexagonSubtarget.h.

◆ getL1CacheLineSize()

unsigned HexagonSubtarget::getL1CacheLineSize ( ) const

◆ getL1PrefetchDistance()

unsigned HexagonSubtarget::getL1PrefetchDistance ( ) const

◆ getPostRAMutations()

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

Definition at line 377 of file HexagonSubtarget.cpp.

Referenced by getHexagonArchVersion().

◆ getRegisterInfo()

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

◆ getSelectionDAGInfo()

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

◆ getSMSMutations()

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

Definition at line 384 of file HexagonSubtarget.cpp.

Referenced by getHexagonArchVersion().

◆ getTargetLowering()

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

Definition at line 108 of file HexagonSubtarget.h.

◆ getTypeAlignment()

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

◆ getVectorLength()

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

◆ hasMemNoShuf()

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

Definition at line 176 of file HexagonSubtarget.h.

◆ hasReservedR19()

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

Definition at line 177 of file HexagonSubtarget.h.

References usePredicatedCalls().

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

◆ hasV55Ops()

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

Definition at line 131 of file HexagonSubtarget.h.

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

◆ hasV55OpsOnly()

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

Definition at line 134 of file HexagonSubtarget.h.

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

◆ hasV5Ops()

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

Definition at line 125 of file HexagonSubtarget.h.

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

◆ hasV5OpsOnly()

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

Definition at line 128 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 140 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 146 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 152 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 158 of file HexagonSubtarget.h.

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

◆ initializeSubtargetDependencies()

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

◆ isHVXVectorType()

bool llvm::HexagonSubtarget::isHVXVectorType ( MVT  VecTy,
bool  IncludeBool = false 
) const
inline

◆ noreturnStackElim()

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

Definition at line 180 of file HexagonSubtarget.h.

◆ ParseSubtargetFeatures()

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

ParseSubtargetFeatures - Parses features string setting specified subtarget options.

Definition of function is auto generated by tblgen.

Referenced by getSelectionDAGInfo(), and initializeSubtargetDependencies().

◆ useAA()

bool HexagonSubtarget::useAA ( ) const
override

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

Definition at line 313 of file HexagonSubtarget.cpp.

References llvm::CodeGenOpt::None, and OptLevel.

Referenced by getHexagonArchVersion().

◆ useBSBScheduling()

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

Definition at line 182 of file HexagonSubtarget.h.

References enableMachineScheduler(), and UseBSBScheduling.

Referenced by usePredicatedCalls().

◆ useHVX128BOps()

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

◆ useHVX64BOps()

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

Definition at line 174 of file HexagonSubtarget.h.

References useHVXOps().

Referenced by getVectorLength().

◆ useHVXOps()

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

◆ useLongCalls()

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

Definition at line 162 of file HexagonSubtarget.h.

◆ useMemops()

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

Definition at line 163 of file HexagonSubtarget.h.

◆ useNewValueJumps()

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

Definition at line 165 of file HexagonSubtarget.h.

Referenced by getNewValueJumpOpcode().

◆ useNewValueStores()

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

Definition at line 166 of file HexagonSubtarget.h.

◆ usePackets()

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

Definition at line 164 of file HexagonSubtarget.h.

◆ usePredicatedCalls()

bool HexagonSubtarget::usePredicatedCalls ( ) const

◆ useSmallData()

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

Definition at line 167 of file HexagonSubtarget.h.

◆ useZRegOps()

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

Definition at line 168 of file HexagonSubtarget.h.

Member Data Documentation

◆ HexagonArchVersion

Hexagon::ArchEnum llvm::HexagonSubtarget::HexagonArchVersion

Definition at line 63 of file HexagonSubtarget.h.

Referenced by getHexagonArchVersion(), and initializeSubtargetDependencies().

◆ HexagonHVXVersion

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

Definition at line 64 of file HexagonSubtarget.h.

◆ OptLevel

CodeGenOpt::Level llvm::HexagonSubtarget::OptLevel

Definition at line 65 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 68 of file HexagonSubtarget.h.

Referenced by initializeSubtargetDependencies(), and useBSBScheduling().


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