|
LLVM 24.0.0git
|
#include "Target/Hexagon/HexagonSubtarget.h"
Classes | |
| struct | BankConflictMutation |
| struct | CallMutation |
| struct | HLXPseudoMutation |
| 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(), and llvm::HexagonSubtarget::HLXPseudoMutation::apply().
|
override |
Perform target specific adjustments to the latency of a schedule dependency.
Definition at line 576 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 348 of file HexagonSubtarget.h.
|
override |
Definition at line 670 of file HexagonSubtarget.cpp.
References DisableHexagonMISched.
|
inlineoverride |
True if the subtarget should run a scheduler after register allocation.
Definition at line 355 of file HexagonSubtarget.h.
|
override |
Definition at line 866 of file HexagonSubtarget.cpp.
|
inlineoverride |
Definition at line 352 of file HexagonSubtarget.h.
|
inline |
Definition at line 359 of file HexagonSubtarget.h.
|
inlineoverride |
Definition at line 141 of file HexagonSubtarget.h.
Referenced by llvm::HexagonDAGToDAGISel::emitFunctionEntryCode(), and emitSCSEpilogue().
|
inline |
Definition at line 361 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 416 of file HexagonSubtarget.h.
References llvm::ArrayRef().
Referenced by isHLXElementType(), and isHLXVectorType().
|
inline |
Definition at line 409 of file HexagonSubtarget.h.
References assert(), llvm_unreachable, useHLX2048BOps(), and useHLXOps().
Referenced by isHLXVectorType().
Definition at line 392 of file HexagonSubtarget.h.
References llvm::ArrayRef(), useHVXFloatingPoint(), useHVXV68Ops(), and useHVXV81Ops().
Referenced by isHVXElementType(), and isHVXVectorType().
|
inlineoverride |
Definition at line 134 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 131 of file HexagonSubtarget.h.
| Intrinsic::ID HexagonSubtarget::getIntrinsicId | ( | unsigned | Opc | ) | const |
Definition at line 868 of file HexagonSubtarget.cpp.
References A(), B(), error, getVectorLength(), llvm_unreachable, Opc, Scalar, and llvm::sort().
Referenced by get_i32_Mask().
| unsigned HexagonSubtarget::getL1CacheLineSize | ( | ) | const |
Definition at line 858 of file HexagonSubtarget.cpp.
| unsigned HexagonSubtarget::getL1PrefetchDistance | ( | ) | const |
Definition at line 862 of file HexagonSubtarget.cpp.
|
override |
Definition at line 653 of file HexagonSubtarget.cpp.
|
inlineoverride |
Definition at line 135 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 336 of file HexagonSubtarget.h.
|
inlineoverride |
Definition at line 144 of file HexagonSubtarget.h.
|
override |
Definition at line 661 of file HexagonSubtarget.cpp.
|
inlineoverride |
Definition at line 138 of file HexagonSubtarget.h.
Referenced by isTypeForHVX().
Definition at line 124 of file HexagonSubtarget.h.
Definition at line 426 of file HexagonSubtarget.h.
References getVectorLength(), and isHVXVectorType().
|
inline |
Definition at line 383 of file HexagonSubtarget.h.
References assert(), llvm_unreachable, useHVX128BOps(), useHVX64BOps(), and useHVXOps().
Referenced by getIntrinsicId(), getTypeAlignment(), and isHVXVectorType().
|
inline |
Definition at line 328 of file HexagonSubtarget.h.
|
inline |
Definition at line 165 of file HexagonSubtarget.h.
References getHexagonArchVersion(), and llvm::Hexagon::V55.
|
inline |
Definition at line 168 of file HexagonSubtarget.h.
References getHexagonArchVersion(), and llvm::Hexagon::V55.
|
inline |
Definition at line 159 of file HexagonSubtarget.h.
References getHexagonArchVersion(), and llvm::Hexagon::V5.
|
inline |
Definition at line 162 of file HexagonSubtarget.h.
References getHexagonArchVersion(), and llvm::Hexagon::V5.
|
inline |
Definition at line 171 of file HexagonSubtarget.h.
References getHexagonArchVersion(), and llvm::Hexagon::V60.
Referenced by initializeSubtargetDependencies().
|
inline |
Definition at line 174 of file HexagonSubtarget.h.
References getHexagonArchVersion(), and llvm::Hexagon::V60.
Referenced by cannotCoexistAsymm().
|
inline |
Definition at line 177 of file HexagonSubtarget.h.
References getHexagonArchVersion(), and llvm::Hexagon::V62.
|
inline |
Definition at line 180 of file HexagonSubtarget.h.
References getHexagonArchVersion(), and llvm::Hexagon::V62.
|
inline |
Definition at line 183 of file HexagonSubtarget.h.
References getHexagonArchVersion(), and llvm::Hexagon::V65.
Referenced by llvm::HexagonPacketizerList::isLegalToPacketizeTogether().
|
inline |
Definition at line 186 of file HexagonSubtarget.h.
References getHexagonArchVersion(), and llvm::Hexagon::V65.
|
inline |
Definition at line 189 of file HexagonSubtarget.h.
References getHexagonArchVersion(), and llvm::Hexagon::V66.
|
inline |
Definition at line 192 of file HexagonSubtarget.h.
References getHexagonArchVersion(), and llvm::Hexagon::V66.
|
inline |
Definition at line 195 of file HexagonSubtarget.h.
References getHexagonArchVersion(), and llvm::Hexagon::V67.
|
inline |
Definition at line 198 of file HexagonSubtarget.h.
References getHexagonArchVersion(), and llvm::Hexagon::V67.
|
inline |
Definition at line 201 of file HexagonSubtarget.h.
References getHexagonArchVersion(), and llvm::Hexagon::V68.
Referenced by initializeSubtargetDependencies().
|
inline |
Definition at line 204 of file HexagonSubtarget.h.
References getHexagonArchVersion(), and llvm::Hexagon::V68.
|
inline |
Definition at line 207 of file HexagonSubtarget.h.
References getHexagonArchVersion(), and llvm::Hexagon::V69.
|
inline |
Definition at line 210 of file HexagonSubtarget.h.
References getHexagonArchVersion(), and llvm::Hexagon::V69.
|
inline |
Definition at line 213 of file HexagonSubtarget.h.
References getHexagonArchVersion(), and llvm::Hexagon::V71.
|
inline |
Definition at line 216 of file HexagonSubtarget.h.
References getHexagonArchVersion(), and llvm::Hexagon::V71.
|
inline |
Definition at line 219 of file HexagonSubtarget.h.
References getHexagonArchVersion(), and llvm::Hexagon::V73.
|
inline |
Definition at line 222 of file HexagonSubtarget.h.
References getHexagonArchVersion(), and llvm::Hexagon::V73.
|
inline |
Definition at line 225 of file HexagonSubtarget.h.
References getHexagonArchVersion(), and llvm::Hexagon::V75.
|
inline |
Definition at line 228 of file HexagonSubtarget.h.
References getHexagonArchVersion(), and llvm::Hexagon::V75.
|
inline |
Definition at line 231 of file HexagonSubtarget.h.
References getHexagonArchVersion(), and llvm::Hexagon::V79.
|
inline |
Definition at line 234 of file HexagonSubtarget.h.
References getHexagonArchVersion(), and llvm::Hexagon::V79.
|
inline |
Definition at line 243 of file HexagonSubtarget.h.
References getHexagonArchVersion(), and llvm::Hexagon::V81.
|
inline |
Definition at line 246 of file HexagonSubtarget.h.
References getHexagonArchVersion(), and llvm::Hexagon::V81.
|
inline |
Definition at line 252 of file HexagonSubtarget.h.
References getHexagonArchVersion(), and llvm::Hexagon::V83.
|
inline |
Definition at line 255 of file HexagonSubtarget.h.
References getHexagonArchVersion(), and llvm::Hexagon::V83.
|
inline |
Definition at line 261 of file HexagonSubtarget.h.
References getHexagonArchVersion(), and llvm::Hexagon::V85.
|
inline |
Definition at line 264 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 125 of file HexagonSubtarget.h.
References llvm::Triple::Musl.
Definition at line 293 of file HexagonSubtarget.cpp.
References getHLXElementTypes(), llvm::is_contained(), and useHLXOps().
Definition at line 302 of file HexagonSubtarget.cpp.
References getHLXElementTypes(), getHLXVectorLength(), llvm::EVT::getSimpleVT(), llvm::EVT::getSizeInBits(), llvm::MVT::getVectorElementType(), llvm::is_contained(), llvm::EVT::isScalableVector(), llvm::EVT::isSimple(), llvm::EVT::isVector(), and useHLXOps().
Referenced by isTypeForHLX().
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 329 of file HexagonSubtarget.h.
References assert(), and llvm::Register::id().
|
inline |
Definition at line 287 of file HexagonSubtarget.h.
Referenced by initializeSubtargetDependencies(), and isTinyCoreWithDuplex().
|
inline |
Definition at line 288 of file HexagonSubtarget.h.
References isTinyCore().
Definition at line 318 of file HexagonSubtarget.cpp.
References llvm::EVT::getEVT(), llvm::Type::getScalarType(), llvm::MVT::getVectorVT(), llvm::isa(), llvm::Type::isFloatingPointTy(), isHLXVectorType(), llvm::Type::isIntegerTy(), llvm::MVT::isValid(), llvm::Type::isVectorTy(), and llvm::PowerOf2Ceil().
Referenced by containsHLXObject(), and isTypeForHVX().
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(), isTypeForHLX(), llvm::MVT::isValid(), llvm::Type::isVectorTy(), llvm::PowerOf2Ceil(), llvm::TargetLoweringBase::TypeWidenVector, useHLXOps(), and useHVXFloatingPoint().
|
inlineoverride |
Definition at line 157 of file HexagonSubtarget.h.
|
inline |
Definition at line 340 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 568 of file HexagonSubtarget.cpp.
References llvm::None, and OptLevel.
|
inline |
Definition at line 271 of file HexagonSubtarget.h.
|
inline |
Definition at line 342 of file HexagonSubtarget.h.
References UseBSBScheduling.
|
inline |
Definition at line 285 of file HexagonSubtarget.h.
|
inline |
Definition at line 272 of file HexagonSubtarget.h.
|
inline |
Definition at line 282 of file HexagonSubtarget.h.
Referenced by getHLXVectorLength().
|
inline |
Definition at line 281 of file HexagonSubtarget.h.
Referenced by getHLXVectorLength(), isHLXElementType(), isHLXVectorType(), and isTypeForHVX().
|
inline |
Definition at line 280 of file HexagonSubtarget.h.
|
inline |
Definition at line 325 of file HexagonSubtarget.h.
References useHVXOps().
Referenced by getVectorLength().
|
inline |
Definition at line 326 of file HexagonSubtarget.h.
References useHVXOps().
Referenced by getVectorLength().
|
inline |
Definition at line 294 of file HexagonSubtarget.h.
Referenced by getHVXElementTypes(), and isTypeForHVX().
|
inline |
Definition at line 290 of file HexagonSubtarget.h.
References useHVXOps().
|
inline |
Definition at line 295 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 291 of file HexagonSubtarget.h.
References HexagonHVXVersion, and llvm::Hexagon::V68.
|
inline |
Definition at line 298 of file HexagonSubtarget.h.
References HexagonHVXVersion, and llvm::Hexagon::V60.
|
inline |
Definition at line 301 of file HexagonSubtarget.h.
References HexagonHVXVersion, and llvm::Hexagon::V62.
|
inline |
Definition at line 304 of file HexagonSubtarget.h.
References HexagonHVXVersion, and llvm::Hexagon::V65.
|
inline |
Definition at line 307 of file HexagonSubtarget.h.
References HexagonHVXVersion, and llvm::Hexagon::V66.
|
inline |
Definition at line 310 of file HexagonSubtarget.h.
References HexagonHVXVersion, and llvm::Hexagon::V67.
|
inline |
Definition at line 313 of file HexagonSubtarget.h.
References HexagonHVXVersion, and llvm::Hexagon::V68.
Referenced by getHVXElementTypes(), and initializeSubtargetDependencies().
|
inline |
Definition at line 316 of file HexagonSubtarget.h.
References HexagonHVXVersion, and llvm::Hexagon::V69.
|
inline |
Definition at line 319 of file HexagonSubtarget.h.
References HexagonHVXVersion, and llvm::Hexagon::V71.
|
inline |
Definition at line 322 of file HexagonSubtarget.h.
References HexagonHVXVersion, and llvm::Hexagon::V73.
|
inline |
Definition at line 237 of file HexagonSubtarget.h.
References HexagonHVXVersion, and llvm::Hexagon::V79.
|
inline |
Definition at line 240 of file HexagonSubtarget.h.
References HexagonHVXVersion, and llvm::Hexagon::V79.
|
inline |
Definition at line 249 of file HexagonSubtarget.h.
References HexagonHVXVersion, and llvm::Hexagon::V81.
Referenced by getHVXElementTypes().
|
inline |
Definition at line 258 of file HexagonSubtarget.h.
References HexagonHVXVersion, and llvm::Hexagon::V83.
|
inline |
Definition at line 267 of file HexagonSubtarget.h.
References HexagonHVXVersion, and llvm::Hexagon::V85.
|
inline |
Definition at line 273 of file HexagonSubtarget.h.
|
inline |
Definition at line 274 of file HexagonSubtarget.h.
|
inline |
Definition at line 276 of file HexagonSubtarget.h.
|
inline |
Definition at line 277 of file HexagonSubtarget.h.
|
inline |
Definition at line 275 of file HexagonSubtarget.h.
| bool HexagonSubtarget::usePredicatedCalls | ( | ) | const |
Definition at line 676 of file HexagonSubtarget.cpp.
References EnablePredicatedCalls.
|
inline |
Definition at line 278 of file HexagonSubtarget.h.
|
inline |
Definition at line 279 of file HexagonSubtarget.h.
| Hexagon::ArchEnum llvm::HexagonSubtarget::HexagonArchVersion |
Definition at line 79 of file HexagonSubtarget.h.
Referenced by getHexagonArchVersion(), and initializeSubtargetDependencies().
| Hexagon::ArchEnum llvm::HexagonSubtarget::HexagonHVXVersion = Hexagon::ArchEnum::NoArch |
Definition at line 80 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 81 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 84 of file HexagonSubtarget.h.
Referenced by initializeSubtargetDependencies(), and useBSBScheduling().