LLVM 20.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 75 of file HexagonSubtarget.cpp.
References llvm::Hexagon_MC::addArchSubtarget(), assert(), llvm::InstrItineraryData::Itineraries, and string.
|
override |
Perform target specific adjustments to the latency of a schedule dependency.
Definition at line 435 of file HexagonSubtarget.cpp.
References llvm::HexagonInstrInfo::canExecuteInBundle(), llvm::SmallSet< T, N, C >::clear(), EnableDotCurSched, getInstrInfo(), llvm::SDep::getLatency(), llvm::MachineInstr::getNumOperands(), llvm::MachineInstr::getOperand(), llvm::HexagonInstrInfo::getOperandLatency(), 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 291 of file HexagonSubtarget.h.
|
override |
Definition at line 528 of file HexagonSubtarget.cpp.
References DisableHexagonMISched.
|
inlineoverride |
True if the subtarget should run a scheduler after register allocation.
Definition at line 298 of file HexagonSubtarget.h.
|
override |
Definition at line 724 of file HexagonSubtarget.cpp.
|
inlineoverride |
Definition at line 295 of file HexagonSubtarget.h.
|
inline |
Definition at line 302 of file HexagonSubtarget.h.
|
inlineoverride |
Definition at line 131 of file HexagonSubtarget.h.
Referenced by llvm::HexagonDAGToDAGISel::emitFunctionEntryCode(), llvm::HexagonTargetLowering::LowerDYNAMIC_STACKALLOC(), llvm::HexagonTargetLowering::LowerFormalArguments(), llvm::HexagonTargetLowering::LowerVASTART(), llvm::HexagonDAGToDAGISel::SelectAddrFI(), and llvm::HexagonDAGToDAGISel::SelectFrameIndex().
|
inline |
Definition at line 304 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 335 of file HexagonSubtarget.h.
References useHVXFloatingPoint(), and useHVXV68Ops().
Referenced by isHVXElementType(), and isHVXVectorType().
|
inlineoverride |
Definition at line 124 of file HexagonSubtarget.h.
Referenced by adjustSchedDependency(), llvm::HexagonSubtarget::CallMutation::apply(), llvm::HexagonRegisterInfo::eliminateFrameIndex(), llvm::HexagonAsmPrinter::emitInstruction(), llvm::HexagonTargetLowering::getPostIndexedAddressParts(), llvm::HexagonDAGToDAGISel::runOnMachineFunction(), and llvm::HexagonConvergingVLIWScheduler::SchedulingCost().
|
inlineoverride |
getInstrItins - Return the instruction itineraries based on subtarget selection.
Definition at line 121 of file HexagonSubtarget.h.
Referenced by llvm::HexagonInstrInfo::getUnits().
Intrinsic::ID HexagonSubtarget::getIntrinsicId | ( | unsigned | Opc | ) | const |
Definition at line 726 of file HexagonSubtarget.cpp.
References A, B, error, getVectorLength(), llvm_unreachable, and llvm::sort().
unsigned HexagonSubtarget::getL1CacheLineSize | ( | ) | const |
Definition at line 716 of file HexagonSubtarget.cpp.
Referenced by llvm::HexagonTTIImpl::getCacheLineSize().
unsigned HexagonSubtarget::getL1PrefetchDistance | ( | ) | const |
Definition at line 720 of file HexagonSubtarget.cpp.
Referenced by llvm::HexagonTTIImpl::getPrefetchDistance().
|
override |
Definition at line 512 of file HexagonSubtarget.cpp.
|
inlineoverride |
Definition at line 125 of file HexagonSubtarget.h.
Referenced by llvm::HexagonInstrInfo::ClobbersPredicate(), llvm::HexagonInstrInfo::copyPhysReg(), llvm::HexagonDAGToDAGISel::emitFunctionEntryCode(), llvm::HexagonInstrInfo::expandPostRAPseudo(), llvm::HexagonInstrInfo::getDuplexCandidateGroup(), llvm::HexagonTargetLowering::GetDynamicTLSAddr(), llvm::HexagonInstrInfo::getMemAccessSize(), llvm::HexagonInstrInfo::getOperandLatency(), llvm::HexagonTargetLowering::HexagonTargetLowering(), llvm::HexagonInstrInfo::isDependent(), llvm::HexagonTargetLowering::LowerCall(), llvm::HexagonTargetLowering::LowerFRAMEADDR(), llvm::HexagonTargetLowering::LowerINLINEASM(), llvm::HexagonTargetLowering::LowerRETURNADDR(), and llvm::HexagonDAGToDAGISel::runOnMachineFunction().
|
inlineoverride |
Definition at line 134 of file HexagonSubtarget.h.
|
override |
Definition at line 519 of file HexagonSubtarget.cpp.
|
inlineoverride |
Definition at line 128 of file HexagonSubtarget.h.
Referenced by isTypeForHVX().
Definition at line 114 of file HexagonSubtarget.h.
Definition at line 348 of file HexagonSubtarget.h.
References llvm::MVT::getSizeInBits(), getVectorLength(), and isHVXVectorType().
Referenced by llvm::HexagonTargetLowering::LowerStore(), and llvm::HexagonTargetLowering::LowerUnalignedLoad().
|
inline |
Definition at line 326 of file HexagonSubtarget.h.
References assert(), llvm_unreachable, useHVX128BOps(), useHVX64BOps(), and useHVXOps().
Referenced by getIntrinsicId(), llvm::HexagonTTIImpl::getMinimumVF(), llvm::HexagonTTIImpl::getMinVectorRegisterBitWidth(), getTypeAlignment(), isHVXVectorType(), llvm::HexagonDAGToDAGISel::SelectQ2V(), llvm::HvxSelector::selectRor(), and llvm::HexagonDAGToDAGISel::SelectV2Q().
|
inline |
Definition at line 279 of file HexagonSubtarget.h.
|
inline |
Definition at line 280 of file HexagonSubtarget.h.
Referenced by llvm::HexagonRegisterInfo::getReservedRegs().
|
inline |
Definition at line 153 of file HexagonSubtarget.h.
References getHexagonArchVersion(), and llvm::Hexagon::V55.
|
inline |
Definition at line 156 of file HexagonSubtarget.h.
References getHexagonArchVersion(), and llvm::Hexagon::V55.
|
inline |
Definition at line 147 of file HexagonSubtarget.h.
References getHexagonArchVersion(), and llvm::Hexagon::V5.
|
inline |
Definition at line 150 of file HexagonSubtarget.h.
References getHexagonArchVersion(), and llvm::Hexagon::V5.
|
inline |
Definition at line 159 of file HexagonSubtarget.h.
References getHexagonArchVersion(), and llvm::Hexagon::V60.
Referenced by llvm::HexagonInstrInfo::getDotOldOp(), llvm::HexagonTargetLowering::getRegForInlineAsmConstraint(), llvm::HexagonTargetLowering::HexagonTargetLowering(), initializeSubtargetDependencies(), llvm::HexagonTargetLowering::LowerCall(), and llvm::HexagonInstrInfo::mayBeCurLoad().
|
inline |
Definition at line 162 of file HexagonSubtarget.h.
References getHexagonArchVersion(), and llvm::Hexagon::V60.
Referenced by cannotCoexistAsymm().
|
inline |
Definition at line 165 of file HexagonSubtarget.h.
References getHexagonArchVersion(), and llvm::Hexagon::V62.
Referenced by llvm::HexagonInstrInfo::isPredicable().
|
inline |
Definition at line 168 of file HexagonSubtarget.h.
References getHexagonArchVersion(), and llvm::Hexagon::V62.
|
inline |
Definition at line 171 of file HexagonSubtarget.h.
References getHexagonArchVersion(), and llvm::Hexagon::V65.
Referenced by llvm::HexagonPacketizerList::isLegalToPacketizeTogether().
|
inline |
Definition at line 174 of file HexagonSubtarget.h.
References getHexagonArchVersion(), and llvm::Hexagon::V65.
|
inline |
Definition at line 177 of file HexagonSubtarget.h.
References getHexagonArchVersion(), and llvm::Hexagon::V66.
Referenced by llvm::HexagonTargetLowering::HexagonTargetLowering().
|
inline |
Definition at line 180 of file HexagonSubtarget.h.
References getHexagonArchVersion(), and llvm::Hexagon::V66.
|
inline |
Definition at line 183 of file HexagonSubtarget.h.
References getHexagonArchVersion(), and llvm::Hexagon::V67.
Referenced by llvm::HexagonTargetLowering::HexagonTargetLowering().
|
inline |
Definition at line 186 of file HexagonSubtarget.h.
References getHexagonArchVersion(), and llvm::Hexagon::V67.
|
inline |
Definition at line 189 of file HexagonSubtarget.h.
References getHexagonArchVersion(), and llvm::Hexagon::V68.
Referenced by initializeSubtargetDependencies().
|
inline |
Definition at line 192 of file HexagonSubtarget.h.
References getHexagonArchVersion(), and llvm::Hexagon::V68.
|
inline |
Definition at line 195 of file HexagonSubtarget.h.
References getHexagonArchVersion(), and llvm::Hexagon::V69.
|
inline |
Definition at line 198 of file HexagonSubtarget.h.
References getHexagonArchVersion(), and llvm::Hexagon::V69.
|
inline |
Definition at line 201 of file HexagonSubtarget.h.
References getHexagonArchVersion(), and llvm::Hexagon::V71.
|
inline |
Definition at line 204 of file HexagonSubtarget.h.
References getHexagonArchVersion(), and llvm::Hexagon::V71.
|
inline |
Definition at line 207 of file HexagonSubtarget.h.
References getHexagonArchVersion(), and llvm::Hexagon::V73.
|
inline |
Definition at line 210 of file HexagonSubtarget.h.
References getHexagonArchVersion(), and llvm::Hexagon::V73.
|
inline |
Definition at line 213 of file HexagonSubtarget.h.
References getHexagonArchVersion(), and llvm::Hexagon::V75.
|
inline |
Definition at line 216 of file HexagonSubtarget.h.
References getHexagonArchVersion(), and llvm::Hexagon::V75.
|
inline |
Definition at line 219 of file HexagonSubtarget.h.
References getHexagonArchVersion(), and llvm::Hexagon::V79.
|
inline |
Definition at line 222 of file HexagonSubtarget.h.
References getHexagonArchVersion(), and llvm::Hexagon::V79.
HexagonSubtarget & HexagonSubtarget::initializeSubtargetDependencies | ( | StringRef | CPU, |
StringRef | FS | ||
) |
Definition at line 90 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().
|
inline |
Definition at line 115 of file HexagonSubtarget.h.
References llvm::Triple::getEnvironment(), and llvm::Triple::Musl.
Referenced by llvm::HexagonTargetLowering::HexagonTargetLowering(), llvm::HexagonTargetLowering::LowerCall(), llvm::HexagonTargetLowering::LowerFormalArguments(), llvm::HexagonTargetLowering::LowerVACOPY(), and llvm::HexagonTargetLowering::LowerVASTART().
Definition at line 171 of file HexagonSubtarget.cpp.
References getHVXElementTypes(), llvm::MVT::getVectorElementType(), llvm::is_contained(), llvm::MVT::isVector(), and useHVXOps().
Definition at line 182 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(), and useHVXOps().
Referenced by llvm::HexagonTargetLowering::allowsMemoryAccess(), llvm::HexagonTargetLowering::allowsMisalignedMemoryAccesses(), llvm::HexagonTargetLowering::getPostIndexedAddressParts(), getTypeAlignment(), isTypeForHVX(), llvm::HexagonTargetLowering::LowerCall(), llvm::HexagonTargetLowering::LowerFormalArguments(), llvm::HexagonTargetLowering::LowerVECTOR_SHUFFLE(), llvm::HexagonDAGToDAGISel::Select(), and llvm::HexagonDAGToDAGISel::SelectVAlign().
|
inline |
Definition at line 238 of file HexagonSubtarget.h.
Referenced by initializeSubtargetDependencies(), and isTinyCoreWithDuplex().
|
inline |
Definition at line 239 of file HexagonSubtarget.h.
References isTinyCore().
Definition at line 210 of file HexagonSubtarget.cpp.
References llvm::EVT::getEVT(), llvm::HexagonTargetLowering::getPreferredVectorAction(), llvm::Type::getScalarType(), llvm::EVT::getSimpleVT(), getTargetLowering(), llvm::EVT::getVectorElementType(), llvm::EVT::getVectorNumElements(), llvm::MVT::getVectorVT(), llvm::Type::isFloatingPointTy(), isHVXVectorType(), llvm::Type::isIntegerTy(), llvm::EVT::isSimple(), llvm::MVT::isValid(), llvm::Type::isVectorTy(), llvm::PowerOf2Ceil(), llvm::TargetLoweringBase::TypeWidenVector, and useHVXFloatingPoint().
Referenced by llvm::HexagonTTIImpl::isLegalMaskedLoad(), and llvm::HexagonTTIImpl::isLegalMaskedStore().
|
inlineoverride |
Definition at line 145 of file HexagonSubtarget.h.
|
inline |
Definition at line 283 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 427 of file HexagonSubtarget.cpp.
References llvm::None, and OptLevel.
|
inline |
Definition at line 226 of file HexagonSubtarget.h.
|
inline |
Definition at line 285 of file HexagonSubtarget.h.
References UseBSBScheduling.
|
inline |
Definition at line 236 of file HexagonSubtarget.h.
|
inline |
Definition at line 227 of file HexagonSubtarget.h.
Referenced by llvm::HexagonDAGToDAGISel::SelectVAlign().
|
inline |
Definition at line 276 of file HexagonSubtarget.h.
References useHVXOps().
Referenced by llvm::HexagonTargetLowering::getRegForInlineAsmConstraint(), and getVectorLength().
|
inline |
Definition at line 277 of file HexagonSubtarget.h.
References useHVXOps().
Referenced by getVectorLength().
|
inline |
Definition at line 245 of file HexagonSubtarget.h.
Referenced by getHVXElementTypes(), and isTypeForHVX().
|
inline |
Definition at line 241 of file HexagonSubtarget.h.
References useHVXOps().
|
inline |
Definition at line 246 of file HexagonSubtarget.h.
References HexagonHVXVersion, and llvm::Hexagon::NoArch.
Referenced by llvm::HexagonTargetLowering::CanLowerReturn(), llvm::HexagonTargetLowering::getConstraintType(), llvm::HexagonTargetLowering::getCustomOperationAction(), llvm::HexagonTargetLowering::getPreferredVectorAction(), getVectorLength(), llvm::HexagonTargetLowering::HexagonTargetLowering(), isHVXElementType(), isHVXVectorType(), llvm::HexagonTargetLowering::LowerCall(), llvm::HexagonTargetLowering::LowerCallResult(), llvm::HexagonTargetLowering::LowerFormalArguments(), llvm::HexagonTargetLowering::LowerReturn(), llvm::HexagonDAGToDAGISel::PreprocessISelDAG(), llvm::HexagonDAGToDAGISel::Select(), llvm::HexagonRegisterInfo::shouldCoalesce(), useHVX128BOps(), useHVX64BOps(), and useHVXIEEEFPOps().
|
inline |
Definition at line 242 of file HexagonSubtarget.h.
References HexagonHVXVersion, and llvm::Hexagon::V68.
|
inline |
Definition at line 249 of file HexagonSubtarget.h.
References HexagonHVXVersion, and llvm::Hexagon::V60.
|
inline |
Definition at line 252 of file HexagonSubtarget.h.
References HexagonHVXVersion, and llvm::Hexagon::V62.
|
inline |
Definition at line 255 of file HexagonSubtarget.h.
References HexagonHVXVersion, and llvm::Hexagon::V65.
|
inline |
Definition at line 258 of file HexagonSubtarget.h.
References HexagonHVXVersion, and llvm::Hexagon::V66.
|
inline |
Definition at line 261 of file HexagonSubtarget.h.
References HexagonHVXVersion, and llvm::Hexagon::V67.
|
inline |
Definition at line 264 of file HexagonSubtarget.h.
References HexagonHVXVersion, and llvm::Hexagon::V68.
Referenced by getHVXElementTypes(), and initializeSubtargetDependencies().
|
inline |
Definition at line 267 of file HexagonSubtarget.h.
References HexagonHVXVersion, and llvm::Hexagon::V69.
|
inline |
Definition at line 270 of file HexagonSubtarget.h.
References HexagonHVXVersion, and llvm::Hexagon::V71.
|
inline |
Definition at line 273 of file HexagonSubtarget.h.
References HexagonHVXVersion, and llvm::Hexagon::V73.
|
inline |
Definition at line 228 of file HexagonSubtarget.h.
|
inline |
Definition at line 229 of file HexagonSubtarget.h.
|
inline |
Definition at line 231 of file HexagonSubtarget.h.
|
inline |
Definition at line 232 of file HexagonSubtarget.h.
Referenced by llvm::HexagonInstrInfo::mayBeNewStore().
|
inline |
Definition at line 230 of file HexagonSubtarget.h.
bool HexagonSubtarget::usePredicatedCalls | ( | ) | const |
Definition at line 534 of file HexagonSubtarget.cpp.
References EnablePredicatedCalls.
Referenced by llvm::HexagonInstrInfo::isPredicable().
|
inline |
Definition at line 233 of file HexagonSubtarget.h.
Referenced by llvm::HexagonTargetLowering::LowerGLOBALADDRESS().
|
inline |
Definition at line 234 of file HexagonSubtarget.h.
|
inline |
Definition at line 235 of file HexagonSubtarget.h.
Hexagon::ArchEnum llvm::HexagonSubtarget::HexagonArchVersion |
Definition at line 71 of file HexagonSubtarget.h.
Referenced by getHexagonArchVersion(), and initializeSubtargetDependencies().
Hexagon::ArchEnum llvm::HexagonSubtarget::HexagonHVXVersion = Hexagon::ArchEnum::NoArch |
Definition at line 72 of file HexagonSubtarget.h.
Referenced by useHVXOps(), useHVXQFloatOps(), useHVXV60Ops(), useHVXV62Ops(), useHVXV65Ops(), useHVXV66Ops(), useHVXV67Ops(), useHVXV68Ops(), useHVXV69Ops(), useHVXV71Ops(), and useHVXV73Ops().
CodeGenOptLevel llvm::HexagonSubtarget::OptLevel |
Definition at line 73 of file HexagonSubtarget.h.
Referenced by useAA().
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().