LLVM 22.0.0git
|
#include "Target/Hexagon/HexagonSubtarget.h"
Classes | |
struct | BankConflictMutation |
struct | CallMutation |
struct | HVXMemLatencyMutation |
struct | UsrOverflowMutation |
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. |
Definition at line 43 of file HexagonSubtarget.h.
HexagonSubtarget::HexagonSubtarget | ( | const Triple & | TT, |
StringRef | CPU, | ||
StringRef | FS, | ||
const TargetMachine & | TM ) |
Definition at line 74 of file HexagonSubtarget.cpp.
References llvm::Hexagon_MC::addArchSubtarget(), assert(), initializeSubtargetDependencies(), and OptLevel.
Referenced by llvm::HexagonSubtarget::CallMutation::apply().
|
override |
Perform target specific adjustments to the latency of a schedule dependency.
Definition at line 436 of file HexagonSubtarget.cpp.
References llvm::HexagonInstrInfo::canExecuteInBundle(), llvm::SmallPtrSetImplBase::clear(), EnableDotCurSched, getInstrInfo(), llvm::SDep::getLatency(), llvm::MachineInstr::getNumOperands(), llvm::MachineInstr::getOperand(), llvm::MachineOperand::getReg(), llvm::SDep::isArtificial(), llvm::MachineInstr::isCopy(), llvm::MachineOperand::isReg(), llvm::MachineInstr::isRegSequence(), llvm::HexagonInstrInfo::isToBeScheduledASAP(), llvm::MachineOperand::isUse(), llvm::Latency, and llvm::SDep::setLatency().
|
inlineoverride |
Definition at line 292 of file HexagonSubtarget.h.
|
override |
Definition at line 529 of file HexagonSubtarget.cpp.
References DisableHexagonMISched.
|
inlineoverride |
True if the subtarget should run a scheduler after register allocation.
Definition at line 299 of file HexagonSubtarget.h.
|
override |
Definition at line 725 of file HexagonSubtarget.cpp.
|
inlineoverride |
Definition at line 296 of file HexagonSubtarget.h.
|
inline |
Definition at line 303 of file HexagonSubtarget.h.
|
inlineoverride |
Definition at line 130 of file HexagonSubtarget.h.
Referenced by llvm::HexagonDAGToDAGISel::emitFunctionEntryCode().
|
inline |
Definition at line 305 of file HexagonSubtarget.h.
References HexagonArchVersion.
Referenced by hasV55Ops(), hasV55OpsOnly(), hasV5Ops(), hasV5OpsOnly(), hasV60Ops(), hasV60OpsOnly(), hasV62Ops(), hasV62OpsOnly(), hasV65Ops(), hasV65OpsOnly(), hasV66Ops(), hasV66OpsOnly(), hasV67Ops(), hasV67OpsOnly(), hasV68Ops(), hasV68OpsOnly(), hasV69Ops(), hasV69OpsOnly(), hasV71Ops(), hasV71OpsOnly(), hasV73Ops(), hasV73OpsOnly(), hasV75Ops(), hasV75OpsOnly(), hasV79Ops(), and hasV79OpsOnly().
Definition at line 336 of file HexagonSubtarget.h.
References llvm::ArrayRef(), useHVXFloatingPoint(), and useHVXV68Ops().
Referenced by isHVXElementType(), and isHVXVectorType().
|
inlineoverride |
Definition at line 123 of file HexagonSubtarget.h.
Referenced by adjustSchedDependency(), llvm::HexagonSubtarget::CallMutation::apply(), llvm::HexagonRegisterInfo::eliminateFrameIndex(), llvm::HexagonPacketizerList::HexagonPacketizerList(), INITIALIZE_PASS(), llvm::HexagonDAGToDAGISel::runOnMachineFunction(), and llvm::HexagonConvergingVLIWScheduler::SchedulingCost().
|
inlineoverride |
getInstrItins - Return the instruction itineraries based on subtarget selection.
Definition at line 120 of file HexagonSubtarget.h.
Intrinsic::ID HexagonSubtarget::getIntrinsicId | ( | unsigned | Opc | ) | const |
Definition at line 727 of file HexagonSubtarget.cpp.
References A(), B(), error, getVectorLength(), llvm_unreachable, Opc, and llvm::sort().
unsigned HexagonSubtarget::getL1CacheLineSize | ( | ) | const |
Definition at line 717 of file HexagonSubtarget.cpp.
unsigned HexagonSubtarget::getL1PrefetchDistance | ( | ) | const |
Definition at line 721 of file HexagonSubtarget.cpp.
|
override |
Definition at line 513 of file HexagonSubtarget.cpp.
|
inlineoverride |
Definition at line 124 of file HexagonSubtarget.h.
Referenced by llvm::HexagonPacketizerList::HexagonPacketizerList(), and INITIALIZE_PASS().
|
inlineoverride |
Definition at line 133 of file HexagonSubtarget.h.
|
override |
Definition at line 520 of file HexagonSubtarget.cpp.
|
inlineoverride |
Definition at line 127 of file HexagonSubtarget.h.
Referenced by isTypeForHVX().
Definition at line 113 of file HexagonSubtarget.h.
Definition at line 349 of file HexagonSubtarget.h.
References getVectorLength(), and isHVXVectorType().
|
inline |
Definition at line 327 of file HexagonSubtarget.h.
References assert(), llvm_unreachable, useHVX128BOps(), useHVX64BOps(), and useHVXOps().
Referenced by getIntrinsicId(), getTypeAlignment(), and isHVXVectorType().
|
inline |
Definition at line 280 of file HexagonSubtarget.h.
|
inline |
Definition at line 281 of file HexagonSubtarget.h.
Referenced by llvm::HexagonRegisterInfo::getReservedRegs().
|
inline |
Definition at line 152 of file HexagonSubtarget.h.
References getHexagonArchVersion(), and llvm::Hexagon::V55.
|
inline |
Definition at line 155 of file HexagonSubtarget.h.
References getHexagonArchVersion(), and llvm::Hexagon::V55.
|
inline |
Definition at line 146 of file HexagonSubtarget.h.
References getHexagonArchVersion(), and llvm::Hexagon::V5.
|
inline |
Definition at line 149 of file HexagonSubtarget.h.
References getHexagonArchVersion(), and llvm::Hexagon::V5.
|
inline |
Definition at line 158 of file HexagonSubtarget.h.
References getHexagonArchVersion(), and llvm::Hexagon::V60.
Referenced by initializeSubtargetDependencies().
|
inline |
Definition at line 161 of file HexagonSubtarget.h.
References getHexagonArchVersion(), and llvm::Hexagon::V60.
Referenced by cannotCoexistAsymm().
|
inline |
Definition at line 164 of file HexagonSubtarget.h.
References getHexagonArchVersion(), and llvm::Hexagon::V62.
|
inline |
Definition at line 167 of file HexagonSubtarget.h.
References getHexagonArchVersion(), and llvm::Hexagon::V62.
|
inline |
Definition at line 170 of file HexagonSubtarget.h.
References getHexagonArchVersion(), and llvm::Hexagon::V65.
Referenced by llvm::HexagonPacketizerList::isLegalToPacketizeTogether().
|
inline |
Definition at line 173 of file HexagonSubtarget.h.
References getHexagonArchVersion(), and llvm::Hexagon::V65.
|
inline |
Definition at line 176 of file HexagonSubtarget.h.
References getHexagonArchVersion(), and llvm::Hexagon::V66.
|
inline |
Definition at line 179 of file HexagonSubtarget.h.
References getHexagonArchVersion(), and llvm::Hexagon::V66.
|
inline |
Definition at line 182 of file HexagonSubtarget.h.
References getHexagonArchVersion(), and llvm::Hexagon::V67.
|
inline |
Definition at line 185 of file HexagonSubtarget.h.
References getHexagonArchVersion(), and llvm::Hexagon::V67.
|
inline |
Definition at line 188 of file HexagonSubtarget.h.
References getHexagonArchVersion(), and llvm::Hexagon::V68.
Referenced by initializeSubtargetDependencies().
|
inline |
Definition at line 191 of file HexagonSubtarget.h.
References getHexagonArchVersion(), and llvm::Hexagon::V68.
|
inline |
Definition at line 194 of file HexagonSubtarget.h.
References getHexagonArchVersion(), and llvm::Hexagon::V69.
|
inline |
Definition at line 197 of file HexagonSubtarget.h.
References getHexagonArchVersion(), and llvm::Hexagon::V69.
|
inline |
Definition at line 200 of file HexagonSubtarget.h.
References getHexagonArchVersion(), and llvm::Hexagon::V71.
|
inline |
Definition at line 203 of file HexagonSubtarget.h.
References getHexagonArchVersion(), and llvm::Hexagon::V71.
|
inline |
Definition at line 206 of file HexagonSubtarget.h.
References getHexagonArchVersion(), and llvm::Hexagon::V73.
|
inline |
Definition at line 209 of file HexagonSubtarget.h.
References getHexagonArchVersion(), and llvm::Hexagon::V73.
|
inline |
Definition at line 212 of file HexagonSubtarget.h.
References getHexagonArchVersion(), and llvm::Hexagon::V75.
|
inline |
Definition at line 215 of file HexagonSubtarget.h.
References getHexagonArchVersion(), and llvm::Hexagon::V75.
|
inline |
Definition at line 218 of file HexagonSubtarget.h.
References getHexagonArchVersion(), and llvm::Hexagon::V79.
|
inline |
Definition at line 221 of file HexagonSubtarget.h.
References getHexagonArchVersion(), and llvm::Hexagon::V79.
HexagonSubtarget & HexagonSubtarget::initializeSubtargetDependencies | ( | StringRef | CPU, |
StringRef | FS ) |
Definition at line 89 of file HexagonSubtarget.cpp.
References llvm::SubtargetFeatures::AddFeature(), llvm::Hexagon_MC::completeHVXFeatures(), llvm::StringRef::consumeInteger(), llvm::count_if(), llvm::dbgs(), llvm::StringRef::drop_front(), EnableBSBSched, F, llvm::Hexagon::getCpu(), llvm::SubtargetFeatures::getFeatures(), llvm::SubtargetFeatures::getString(), hasV60Ops(), hasV68Ops(), HexagonArchVersion, llvm::HexagonDisableDuplex, isTinyCore(), LLVM_DEBUG, llvm_unreachable, OverrideLongCalls, ParseSubtargetFeatures(), llvm::FeatureBitset::reset(), llvm::reverse(), llvm::StringRef::starts_with(), UseBSBScheduling, and useHVXV68Ops().
Referenced by HexagonSubtarget().
|
inline |
Definition at line 114 of file HexagonSubtarget.h.
References llvm::Triple::Musl.
Definition at line 170 of file HexagonSubtarget.cpp.
References getHVXElementTypes(), llvm::is_contained(), and useHVXOps().
Definition at line 181 of file HexagonSubtarget.cpp.
References getHVXElementTypes(), llvm::EVT::getSimpleVT(), llvm::EVT::getSizeInBits(), llvm::MVT::getVectorElementType(), getVectorLength(), llvm::EVT::getVectorNumElements(), llvm::is_contained(), llvm::EVT::isScalableVector(), llvm::EVT::isSimple(), llvm::EVT::isVector(), T, and useHVXOps().
Referenced by getTypeAlignment(), and isTypeForHVX().
|
inline |
Definition at line 239 of file HexagonSubtarget.h.
Referenced by initializeSubtargetDependencies(), and isTinyCoreWithDuplex().
|
inline |
Definition at line 240 of file HexagonSubtarget.h.
References isTinyCore().
Definition at line 209 of file HexagonSubtarget.cpp.
References llvm::EVT::getEVT(), llvm::HexagonTargetLowering::getPreferredVectorAction(), llvm::Type::getScalarType(), getTargetLowering(), llvm::MVT::getVectorElementType(), llvm::MVT::getVectorVT(), llvm::isa(), llvm::Type::isFloatingPointTy(), isHVXVectorType(), llvm::Type::isIntegerTy(), llvm::MVT::isValid(), llvm::Type::isVectorTy(), llvm::PowerOf2Ceil(), llvm::TargetLoweringBase::TypeWidenVector, and useHVXFloatingPoint().
|
inlineoverride |
Definition at line 144 of file HexagonSubtarget.h.
|
inline |
Definition at line 284 of file HexagonSubtarget.h.
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().
|
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.
|
inline |
Definition at line 228 of file HexagonSubtarget.h.
|
inline |
Definition at line 286 of file HexagonSubtarget.h.
References UseBSBScheduling.
|
inline |
Definition at line 237 of file HexagonSubtarget.h.
|
inline |
Definition at line 229 of file HexagonSubtarget.h.
|
inline |
Definition at line 277 of file HexagonSubtarget.h.
References useHVXOps().
Referenced by getVectorLength().
|
inline |
Definition at line 278 of file HexagonSubtarget.h.
References useHVXOps().
Referenced by getVectorLength().
|
inline |
Definition at line 246 of file HexagonSubtarget.h.
Referenced by getHVXElementTypes(), and isTypeForHVX().
|
inline |
Definition at line 242 of file HexagonSubtarget.h.
References useHVXOps().
|
inline |
Definition at line 247 of file HexagonSubtarget.h.
References HexagonHVXVersion, and llvm::Hexagon::NoArch.
Referenced by llvm::HexagonTargetLowering::CanLowerReturn(), getVectorLength(), isHVXElementType(), isHVXVectorType(), llvm::HexagonRegisterInfo::shouldCoalesce(), useHVX128BOps(), useHVX64BOps(), and useHVXIEEEFPOps().
|
inline |
Definition at line 243 of file HexagonSubtarget.h.
References HexagonHVXVersion, and llvm::Hexagon::V68.
|
inline |
Definition at line 250 of file HexagonSubtarget.h.
References HexagonHVXVersion, and llvm::Hexagon::V60.
|
inline |
Definition at line 253 of file HexagonSubtarget.h.
References HexagonHVXVersion, and llvm::Hexagon::V62.
|
inline |
Definition at line 256 of file HexagonSubtarget.h.
References HexagonHVXVersion, and llvm::Hexagon::V65.
|
inline |
Definition at line 259 of file HexagonSubtarget.h.
References HexagonHVXVersion, and llvm::Hexagon::V66.
|
inline |
Definition at line 262 of file HexagonSubtarget.h.
References HexagonHVXVersion, and llvm::Hexagon::V67.
|
inline |
Definition at line 265 of file HexagonSubtarget.h.
References HexagonHVXVersion, and llvm::Hexagon::V68.
Referenced by getHVXElementTypes(), and initializeSubtargetDependencies().
|
inline |
Definition at line 268 of file HexagonSubtarget.h.
References HexagonHVXVersion, and llvm::Hexagon::V69.
|
inline |
Definition at line 271 of file HexagonSubtarget.h.
References HexagonHVXVersion, and llvm::Hexagon::V71.
|
inline |
Definition at line 274 of file HexagonSubtarget.h.
References HexagonHVXVersion, and llvm::Hexagon::V73.
|
inline |
Definition at line 224 of file HexagonSubtarget.h.
References HexagonHVXVersion, and llvm::Hexagon::V79.
|
inline |
Definition at line 230 of file HexagonSubtarget.h.
|
inline |
Definition at line 231 of file HexagonSubtarget.h.
|
inline |
Definition at line 233 of file HexagonSubtarget.h.
|
inline |
Definition at line 234 of file HexagonSubtarget.h.
|
inline |
Definition at line 232 of file HexagonSubtarget.h.
bool HexagonSubtarget::usePredicatedCalls | ( | ) | const |
Definition at line 535 of file HexagonSubtarget.cpp.
References EnablePredicatedCalls.
|
inline |
Definition at line 235 of file HexagonSubtarget.h.
|
inline |
Definition at line 236 of file HexagonSubtarget.h.
Hexagon::ArchEnum llvm::HexagonSubtarget::HexagonArchVersion |
Definition at line 70 of file HexagonSubtarget.h.
Referenced by getHexagonArchVersion(), and initializeSubtargetDependencies().
Hexagon::ArchEnum llvm::HexagonSubtarget::HexagonHVXVersion = Hexagon::ArchEnum::NoArch |
Definition at line 71 of file HexagonSubtarget.h.
Referenced by useHVXOps(), useHVXQFloatOps(), useHVXV60Ops(), useHVXV62Ops(), useHVXV65Ops(), useHVXV66Ops(), useHVXV67Ops(), useHVXV68Ops(), useHVXV69Ops(), useHVXV71Ops(), useHVXV73Ops(), and useHVXV79Ops().
CodeGenOptLevel llvm::HexagonSubtarget::OptLevel |
Definition at line 72 of file HexagonSubtarget.h.
Referenced by HexagonSubtarget(), and useAA().
bool llvm::HexagonSubtarget::UseBSBScheduling |
True if the target should use Back-Skip-Back scheduling.
This is the default for V60.
Definition at line 75 of file HexagonSubtarget.h.
Referenced by initializeSubtargetDependencies(), and useBSBScheduling().