|
LLVM 24.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 45 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 482 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 338 of file HexagonSubtarget.h.
|
override |
Definition at line 575 of file HexagonSubtarget.cpp.
References DisableHexagonMISched.
|
inlineoverride |
True if the subtarget should run a scheduler after register allocation.
Definition at line 345 of file HexagonSubtarget.h.
|
override |
Definition at line 771 of file HexagonSubtarget.cpp.
|
inlineoverride |
Definition at line 342 of file HexagonSubtarget.h.
|
inline |
Definition at line 349 of file HexagonSubtarget.h.
|
inlineoverride |
Definition at line 136 of file HexagonSubtarget.h.
Referenced by llvm::HexagonDAGToDAGISel::emitFunctionEntryCode(), and emitSCSEpilogue().
|
inline |
Definition at line 351 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(), hasV79OpsOnly(), hasV81Ops(), hasV81OpsOnly(), hasV83Ops(), hasV83OpsOnly(), hasV85Ops(), and hasV85OpsOnly().
Definition at line 382 of file HexagonSubtarget.h.
References llvm::ArrayRef(), useHVXFloatingPoint(), useHVXV68Ops(), and useHVXV81Ops().
Referenced by isHVXElementType(), and isHVXVectorType().
|
inlineoverride |
Definition at line 129 of file HexagonSubtarget.h.
Referenced by adjustSchedDependency(), llvm::HexagonSubtarget::CallMutation::apply(), llvm::HexagonRegisterInfo::eliminateFrameIndex(), llvm::HexagonPacketizerList::HexagonPacketizerList(), INITIALIZE_PASS(), llvm::HexagonFrameLowering::inlineStackProbe(), llvm::HexagonDAGToDAGISel::runOnMachineFunction(), and llvm::HexagonConvergingVLIWScheduler::SchedulingCost().
|
inlineoverride |
getInstrItins - Return the instruction itineraries based on subtarget selection.
Definition at line 126 of file HexagonSubtarget.h.
| Intrinsic::ID HexagonSubtarget::getIntrinsicId | ( | unsigned | Opc | ) | const |
Definition at line 773 of file HexagonSubtarget.cpp.
References A(), B(), error, getVectorLength(), llvm_unreachable, Opc, and llvm::sort().
Referenced by get_i32_Mask().
| unsigned HexagonSubtarget::getL1CacheLineSize | ( | ) | const |
Definition at line 763 of file HexagonSubtarget.cpp.
| unsigned HexagonSubtarget::getL1PrefetchDistance | ( | ) | const |
Definition at line 767 of file HexagonSubtarget.cpp.
|
override |
Definition at line 559 of file HexagonSubtarget.cpp.
|
inlineoverride |
Definition at line 130 of file HexagonSubtarget.h.
Referenced by llvm::HexagonPacketizerList::HexagonPacketizerList().
|
inline |
Returns the register that holds the shadow call stack pointer.
Defaults to R18, overridable with the "scs-reg-rN" subtarget features.
Definition at line 326 of file HexagonSubtarget.h.
|
inlineoverride |
Definition at line 139 of file HexagonSubtarget.h.
|
override |
Definition at line 566 of file HexagonSubtarget.cpp.
|
inlineoverride |
Definition at line 133 of file HexagonSubtarget.h.
Referenced by isTypeForHVX().
Definition at line 119 of file HexagonSubtarget.h.
Definition at line 399 of file HexagonSubtarget.h.
References getVectorLength(), and isHVXVectorType().
|
inline |
Definition at line 373 of file HexagonSubtarget.h.
References assert(), llvm_unreachable, useHVX128BOps(), useHVX64BOps(), and useHVXOps().
Referenced by getIntrinsicId(), getTypeAlignment(), and isHVXVectorType().
|
inline |
Definition at line 318 of file HexagonSubtarget.h.
|
inline |
Definition at line 160 of file HexagonSubtarget.h.
References getHexagonArchVersion(), and llvm::Hexagon::V55.
|
inline |
Definition at line 163 of file HexagonSubtarget.h.
References getHexagonArchVersion(), and llvm::Hexagon::V55.
|
inline |
Definition at line 154 of file HexagonSubtarget.h.
References getHexagonArchVersion(), and llvm::Hexagon::V5.
|
inline |
Definition at line 157 of file HexagonSubtarget.h.
References getHexagonArchVersion(), and llvm::Hexagon::V5.
|
inline |
Definition at line 166 of file HexagonSubtarget.h.
References getHexagonArchVersion(), and llvm::Hexagon::V60.
Referenced by initializeSubtargetDependencies().
|
inline |
Definition at line 169 of file HexagonSubtarget.h.
References getHexagonArchVersion(), and llvm::Hexagon::V60.
Referenced by cannotCoexistAsymm().
|
inline |
Definition at line 172 of file HexagonSubtarget.h.
References getHexagonArchVersion(), and llvm::Hexagon::V62.
|
inline |
Definition at line 175 of file HexagonSubtarget.h.
References getHexagonArchVersion(), and llvm::Hexagon::V62.
|
inline |
Definition at line 178 of file HexagonSubtarget.h.
References getHexagonArchVersion(), and llvm::Hexagon::V65.
Referenced by llvm::HexagonPacketizerList::isLegalToPacketizeTogether().
|
inline |
Definition at line 181 of file HexagonSubtarget.h.
References getHexagonArchVersion(), and llvm::Hexagon::V65.
|
inline |
Definition at line 184 of file HexagonSubtarget.h.
References getHexagonArchVersion(), and llvm::Hexagon::V66.
|
inline |
Definition at line 187 of file HexagonSubtarget.h.
References getHexagonArchVersion(), and llvm::Hexagon::V66.
|
inline |
Definition at line 190 of file HexagonSubtarget.h.
References getHexagonArchVersion(), and llvm::Hexagon::V67.
|
inline |
Definition at line 193 of file HexagonSubtarget.h.
References getHexagonArchVersion(), and llvm::Hexagon::V67.
|
inline |
Definition at line 196 of file HexagonSubtarget.h.
References getHexagonArchVersion(), and llvm::Hexagon::V68.
Referenced by initializeSubtargetDependencies().
|
inline |
Definition at line 199 of file HexagonSubtarget.h.
References getHexagonArchVersion(), and llvm::Hexagon::V68.
|
inline |
Definition at line 202 of file HexagonSubtarget.h.
References getHexagonArchVersion(), and llvm::Hexagon::V69.
|
inline |
Definition at line 205 of file HexagonSubtarget.h.
References getHexagonArchVersion(), and llvm::Hexagon::V69.
|
inline |
Definition at line 208 of file HexagonSubtarget.h.
References getHexagonArchVersion(), and llvm::Hexagon::V71.
|
inline |
Definition at line 211 of file HexagonSubtarget.h.
References getHexagonArchVersion(), and llvm::Hexagon::V71.
|
inline |
Definition at line 214 of file HexagonSubtarget.h.
References getHexagonArchVersion(), and llvm::Hexagon::V73.
|
inline |
Definition at line 217 of file HexagonSubtarget.h.
References getHexagonArchVersion(), and llvm::Hexagon::V73.
|
inline |
Definition at line 220 of file HexagonSubtarget.h.
References getHexagonArchVersion(), and llvm::Hexagon::V75.
|
inline |
Definition at line 223 of file HexagonSubtarget.h.
References getHexagonArchVersion(), and llvm::Hexagon::V75.
|
inline |
Definition at line 226 of file HexagonSubtarget.h.
References getHexagonArchVersion(), and llvm::Hexagon::V79.
|
inline |
Definition at line 229 of file HexagonSubtarget.h.
References getHexagonArchVersion(), and llvm::Hexagon::V79.
|
inline |
Definition at line 238 of file HexagonSubtarget.h.
References getHexagonArchVersion(), and llvm::Hexagon::V81.
|
inline |
Definition at line 241 of file HexagonSubtarget.h.
References getHexagonArchVersion(), and llvm::Hexagon::V81.
|
inline |
Definition at line 247 of file HexagonSubtarget.h.
References getHexagonArchVersion(), and llvm::Hexagon::V83.
|
inline |
Definition at line 250 of file HexagonSubtarget.h.
References getHexagonArchVersion(), and llvm::Hexagon::V83.
|
inline |
Definition at line 256 of file HexagonSubtarget.h.
References getHexagonArchVersion(), and llvm::Hexagon::V85.
|
inline |
Definition at line 259 of file HexagonSubtarget.h.
References getHexagonArchVersion(), and llvm::Hexagon::V85.
| HexagonSubtarget & HexagonSubtarget::initializeSubtargetDependencies | ( | StringRef | CPU, |
| StringRef | FS ) |
Definition at line 88 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::report_fatal_error(), llvm::FeatureBitset::reset(), llvm::reverse(), llvm::StringRef::starts_with(), UseBSBScheduling, and useHVXV68Ops().
Referenced by HexagonSubtarget().
|
override |
Definition at line 188 of file HexagonSubtarget.cpp.
|
inline |
Definition at line 120 of file HexagonSubtarget.h.
References llvm::Triple::Musl.
Definition at line 216 of file HexagonSubtarget.cpp.
References getHVXElementTypes(), llvm::is_contained(), and useHVXOps().
Definition at line 227 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().
Definition at line 319 of file HexagonSubtarget.h.
References assert(), and llvm::Register::id().
|
inline |
Definition at line 277 of file HexagonSubtarget.h.
Referenced by initializeSubtargetDependencies(), and isTinyCoreWithDuplex().
|
inline |
Definition at line 278 of file HexagonSubtarget.h.
References isTinyCore().
Definition at line 255 of file HexagonSubtarget.cpp.
References llvm::EVT::getEVT(), llvm::HexagonTargetLowering::getPreferredVectorAction(), llvm::Type::getScalarType(), getTargetLowering(), 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 152 of file HexagonSubtarget.h.
|
inline |
Definition at line 330 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 474 of file HexagonSubtarget.cpp.
References llvm::None, and OptLevel.
|
inline |
Definition at line 266 of file HexagonSubtarget.h.
|
inline |
Definition at line 332 of file HexagonSubtarget.h.
References UseBSBScheduling.
|
inline |
Definition at line 275 of file HexagonSubtarget.h.
|
inline |
Definition at line 267 of file HexagonSubtarget.h.
|
inline |
Definition at line 315 of file HexagonSubtarget.h.
References useHVXOps().
Referenced by getVectorLength().
|
inline |
Definition at line 316 of file HexagonSubtarget.h.
References useHVXOps().
Referenced by getVectorLength().
|
inline |
Definition at line 284 of file HexagonSubtarget.h.
Referenced by getHVXElementTypes(), and isTypeForHVX().
|
inline |
Definition at line 280 of file HexagonSubtarget.h.
References useHVXOps().
|
inline |
Definition at line 285 of file HexagonSubtarget.h.
References HexagonHVXVersion, and llvm::Hexagon::NoArch.
Referenced by getVectorLength(), isHVXElementType(), isHVXVectorType(), llvm::HexagonRegisterInfo::shouldCoalesce(), useHVX128BOps(), useHVX64BOps(), and useHVXIEEEFPOps().
|
inline |
Definition at line 281 of file HexagonSubtarget.h.
References HexagonHVXVersion, and llvm::Hexagon::V68.
|
inline |
Definition at line 288 of file HexagonSubtarget.h.
References HexagonHVXVersion, and llvm::Hexagon::V60.
|
inline |
Definition at line 291 of file HexagonSubtarget.h.
References HexagonHVXVersion, and llvm::Hexagon::V62.
|
inline |
Definition at line 294 of file HexagonSubtarget.h.
References HexagonHVXVersion, and llvm::Hexagon::V65.
|
inline |
Definition at line 297 of file HexagonSubtarget.h.
References HexagonHVXVersion, and llvm::Hexagon::V66.
|
inline |
Definition at line 300 of file HexagonSubtarget.h.
References HexagonHVXVersion, and llvm::Hexagon::V67.
|
inline |
Definition at line 303 of file HexagonSubtarget.h.
References HexagonHVXVersion, and llvm::Hexagon::V68.
Referenced by getHVXElementTypes(), and initializeSubtargetDependencies().
|
inline |
Definition at line 306 of file HexagonSubtarget.h.
References HexagonHVXVersion, and llvm::Hexagon::V69.
|
inline |
Definition at line 309 of file HexagonSubtarget.h.
References HexagonHVXVersion, and llvm::Hexagon::V71.
|
inline |
Definition at line 312 of file HexagonSubtarget.h.
References HexagonHVXVersion, and llvm::Hexagon::V73.
|
inline |
Definition at line 232 of file HexagonSubtarget.h.
References HexagonHVXVersion, and llvm::Hexagon::V79.
|
inline |
Definition at line 235 of file HexagonSubtarget.h.
References HexagonHVXVersion, and llvm::Hexagon::V79.
|
inline |
Definition at line 244 of file HexagonSubtarget.h.
References HexagonHVXVersion, and llvm::Hexagon::V81.
Referenced by getHVXElementTypes().
|
inline |
Definition at line 253 of file HexagonSubtarget.h.
References HexagonHVXVersion, and llvm::Hexagon::V83.
|
inline |
Definition at line 262 of file HexagonSubtarget.h.
References HexagonHVXVersion, and llvm::Hexagon::V85.
|
inline |
Definition at line 268 of file HexagonSubtarget.h.
|
inline |
Definition at line 269 of file HexagonSubtarget.h.
|
inline |
Definition at line 271 of file HexagonSubtarget.h.
|
inline |
Definition at line 272 of file HexagonSubtarget.h.
|
inline |
Definition at line 270 of file HexagonSubtarget.h.
| bool HexagonSubtarget::usePredicatedCalls | ( | ) | const |
Definition at line 581 of file HexagonSubtarget.cpp.
References EnablePredicatedCalls.
|
inline |
Definition at line 273 of file HexagonSubtarget.h.
|
inline |
Definition at line 274 of file HexagonSubtarget.h.
| Hexagon::ArchEnum llvm::HexagonSubtarget::HexagonArchVersion |
Definition at line 77 of file HexagonSubtarget.h.
Referenced by getHexagonArchVersion(), and initializeSubtargetDependencies().
| Hexagon::ArchEnum llvm::HexagonSubtarget::HexagonHVXVersion = Hexagon::ArchEnum::NoArch |
Definition at line 78 of file HexagonSubtarget.h.
Referenced by useHVXOps(), useHVXQFloatOps(), useHVXV60Ops(), useHVXV62Ops(), useHVXV65Ops(), useHVXV66Ops(), useHVXV67Ops(), useHVXV68Ops(), useHVXV69Ops(), useHVXV71Ops(), useHVXV73Ops(), useHVXV79Ops(), useHVXV79OpsOnly(), useHVXV81Ops(), useHVXV83Ops(), and useHVXV85Ops().
| CodeGenOptLevel llvm::HexagonSubtarget::OptLevel |
Definition at line 79 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 82 of file HexagonSubtarget.h.
Referenced by initializeSubtargetDependencies(), and useBSBScheduling().