|
LLVM 23.0.0git
|
Classes | |
| struct | CPUInfo |
| struct | CPUModel |
| struct | DemandedFields |
| Which subfields of VL or VTYPE have values we need to preserve? More... | |
| struct | NDSVLNPseudo |
| struct | ParserError |
| Fatal errors encountered during parsing. More... | |
| struct | ParserWarning |
| Warnings encountered during parsing. More... | |
| struct | RISCVMaskedPseudoInfo |
| class | RISCVVSETVLIInfoAnalysis |
| struct | VLEPseudo |
| struct | VLSEGPseudo |
| struct | VLX_VSXPseudo |
| struct | VLXSEGPseudo |
| struct | VSEPseudo |
| class | VSETVLIInfo |
| Defines the abstract state with which the forward dataflow models the values of the VL and VTYPE registers after insertion. More... | |
| struct | VSSEGPseudo |
| struct | VSXSEGPseudo |
| struct | VXMemOpInfo |
Typedefs | |
| using | Specifier = uint16_t |
Variables | |
| static constexpr unsigned | RVVBitsPerBlock = 64 |
| static constexpr unsigned | RVVBytesPerBlock = RVVBitsPerBlock / 8 |
| const RegisterBankInfo::PartialMapping | PartMappings [] |
| const RegisterBankInfo::ValueMapping | ValueMappings [] |
| static constexpr int64_t | VLMaxSentinel = -1LL |
| static constexpr unsigned | FPMASK_Negative_Infinity = 0x001 |
| static constexpr unsigned | FPMASK_Negative_Normal = 0x002 |
| static constexpr unsigned | FPMASK_Negative_Subnormal = 0x004 |
| static constexpr unsigned | FPMASK_Negative_Zero = 0x008 |
| static constexpr unsigned | FPMASK_Positive_Zero = 0x010 |
| static constexpr unsigned | FPMASK_Positive_Subnormal = 0x020 |
| static constexpr unsigned | FPMASK_Positive_Normal = 0x040 |
| static constexpr unsigned | FPMASK_Positive_Infinity = 0x080 |
| static constexpr unsigned | FPMASK_Signaling_NaN = 0x100 |
| static constexpr unsigned | FPMASK_Quiet_NaN = 0x200 |
| constexpr CPUInfo | RISCVCPUInfo [] |
| using llvm::RISCV::Specifier = uint16_t |
Definition at line 36 of file RISCVMCAsmInfo.h.
| anonymous enum |
| Enumerator | |
|---|---|
| S_None | |
| S_LO | |
| S_PCREL_LO | |
| S_PCREL_HI | |
| S_TPREL_LO | |
| S_CALL_PLT | |
| S_GOT_HI | |
| S_QC_ABS20 | |
Definition at line 39 of file RISCVMCAsmInfo.h.
| enum llvm::RISCV::CPUKind : unsigned |
Definition at line 29 of file RISCVTargetParser.cpp.
| enum llvm::RISCV::Fixups |
Definition at line 18 of file RISCVFixupKinds.h.
| Enumerator | |
|---|---|
| PMI_GPRB32 | |
| PMI_GPRB64 | |
| PMI_FPRB16 | |
| PMI_FPRB32 | |
| PMI_FPRB64 | |
| PMI_VRB64 | |
| PMI_VRB128 | |
| PMI_VRB256 | |
| PMI_VRB512 | |
Definition at line 43 of file RISCVRegisterBankInfo.cpp.
| Enumerator | |
|---|---|
| InvalidIdx | |
| GPRB32Idx | |
| GPRB64Idx | |
| FPRB16Idx | |
| FPRB32Idx | |
| FPRB64Idx | |
| VRB64Idx | |
| VRB128Idx | |
| VRB256Idx | |
| VRB512Idx | |
Definition at line 96 of file RISCVRegisterBankInfo.cpp.
| bool llvm::RISCV::areCompatibleVTYPEs | ( | uint64_t | CurVType, |
| uint64_t | NewVType, | ||
| const DemandedFields & | Used ) |
Return true if moving from CurVType to NewVType is indistinguishable from the perspective of an instruction (or set of instructions) which use only the Used subfields and properties.
Definition at line 114 of file RISCVVSETVLIInfoAnalysis.cpp.
References llvm::RISCVVType::getSEW(), llvm::RISCVVType::getSEWLMULRatio(), llvm::RISCVVType::getVLMUL(), llvm::RISCVVType::getXSfmmWiden(), llvm::RISCVVType::hasXSfmmWiden(), llvm::RISCVVType::isAltFmt(), isLMUL1OrSmaller(), llvm::RISCVVType::isMaskAgnostic(), llvm::RISCVVType::isTailAgnostic(), llvm::RISCV::DemandedFields::LMULEqual, llvm::RISCV::DemandedFields::LMULLessThanOrEqualToM1, llvm::RISCV::DemandedFields::LMULNone, llvm::RISCV::DemandedFields::SEWEqual, llvm::RISCV::DemandedFields::SEWGreaterThanOrEqual, llvm::RISCV::DemandedFields::SEWGreaterThanOrEqualAndLessThan64, and llvm::RISCV::DemandedFields::SEWNone.
Referenced by llvm::RISCV::VSETVLIInfo::hasCompatibleVTYPE().
|
static |
Definition at line 395 of file RISCVVSETVLIInfoAnalysis.cpp.
References llvm::RISCVVType::decodeVLMUL().
Referenced by llvm::RISCV::RISCVVSETVLIInfoAnalysis::computeInfoForInstr().
| void llvm::RISCV::fillValidCPUArchList | ( | SmallVectorImpl< StringRef > & | Values, |
| bool | IsRV64 ) |
Definition at line 115 of file RISCVTargetParser.cpp.
References llvm::CallingConv::C, llvm::SmallVectorImpl< T >::emplace_back(), and RISCVCPUInfo.
| void llvm::RISCV::fillValidTuneCPUArchList | ( | SmallVectorImpl< StringRef > & | Values, |
| bool | IsRV64 ) |
Definition at line 122 of file RISCVTargetParser.cpp.
References llvm::CallingConv::C, llvm::SmallVectorImpl< T >::emplace_back(), and RISCVCPUInfo.
| void llvm::RISCV::getAllTuneFeatures | ( | SmallVectorImpl< StringRef > & | TuneFeatures | ) |
Definition at line 249 of file RISCVTargetParser.cpp.
| ArrayRef< MCPhysReg > llvm::RISCV::getArgGPRs | ( | const RISCVABI::ABI | ABI | ) |
Definition at line 127 of file RISCVCallingConv.cpp.
References llvm::RISCVABI::ABI_ILP32E, llvm::RISCVABI::ABI_LP64E, and llvm::ArrayRef().
Referenced by llvm::CC_RISCV(), CC_RISCVAssign2XLen(), and llvm::RISCVTargetLowering::LowerFormalArguments().
| void llvm::RISCV::getCPUConfigurableTuneFeatures | ( | StringRef | CPU, |
| SmallVectorImpl< StringRef > & | Directives ) |
Definition at line 347 of file RISCVTargetParser.cpp.
References llvm::SmallVectorImpl< T >::assign(), llvm::SmallSet< T, N, C >::begin(), and llvm::SmallSet< T, N, C >::end().
Definition at line 50 of file RISCVTargetParser.cpp.
References llvm::CallingConv::C, and RISCVCPUInfo.
Referenced by getCPUModel(), getMArchFromMcpu(), hasFastScalarUnalignedAccess(), hasFastVectorUnalignedAccess(), and parseCPU().
Definition at line 69 of file RISCVTargetParser.cpp.
References getCPUInfoByName().
Referenced by hasValidCPUModel().
Definition at line 76 of file RISCVTargetParser.cpp.
References llvm::CallingConv::C, and RISCVCPUInfo.
| DemandedFields llvm::RISCV::getDemanded | ( | const MachineInstr & | MI, |
| const RISCVSubtarget * | ST ) |
Return the fields and properties demanded by the provided instruction.
Definition at line 175 of file RISCVVSETVLIInfoAnalysis.cpp.
References llvm::RISCV::DemandedFields::AltFmt, assert(), llvm::RISCV::DemandedFields::demandVL(), llvm::RISCV::DemandedFields::demandVTYPE(), llvm::RISCVII::DontCare, llvm::RISCVII::getAltFmtType(), getEEWForLoadStore(), llvm::MachineOperand::getImm(), getVLOp(), llvm::RISCVII::hasSEWOp(), llvm::RISCVII::hasTWidenOp(), hasUndefinedPassthru(), llvm::RISCVII::hasVLOp(), llvm::MachineOperand::isImm(), isMaskRegOp(), llvm::MachineOperand::isReg(), isVectorCopy(), llvm::RISCV::DemandedFields::LMUL, llvm::RISCV::DemandedFields::LMULLessThanOrEqualToM1, llvm::RISCV::DemandedFields::LMULNone, llvm::RISCV::DemandedFields::MaskPolicy, MI, llvm::RISCV::DemandedFields::SEW, llvm::RISCV::DemandedFields::SEWGreaterThanOrEqual, llvm::RISCV::DemandedFields::SEWGreaterThanOrEqualAndLessThan64, llvm::RISCV::DemandedFields::SEWLMULRatio, llvm::RISCV::DemandedFields::SEWNone, llvm::RISCV::DemandedFields::TailPolicy, llvm::RISCV::DemandedFields::TWiden, llvm::RISCVII::usesMaskPolicy(), llvm::RISCV::DemandedFields::VLAny, and llvm::RISCV::DemandedFields::VLZeroness.
| unsigned llvm::RISCV::getDestLog2EEW | ( | const MCInstrDesc & | Desc, |
| unsigned | Log2SEW ) |
Definition at line 5130 of file RISCVInstrInfo.cpp.
References assert(), llvm::RISCVII::DestEEWMask, llvm::RISCVII::DestEEWShift, and Scaled.
Referenced by INITIALIZE_PASS().
|
static |
Get the EEW for a load or store instruction.
Return std::nullopt if MI is not a load or store which ignores SEW.
Definition at line 52 of file RISCVVSETVLIInfoAnalysis.cpp.
References getRVVMCOpcode(), and MI.
Referenced by llvm::RISCV::RISCVVSETVLIInfoAnalysis::computeInfoForInstr(), and getDemanded().
| void llvm::RISCV::getFeaturesForCPU | ( | StringRef | CPU, |
| SmallVectorImpl< std::string > & | EnabledFeatures, | ||
| bool | NeedPlus = false ) |
Definition at line 132 of file RISCVTargetParser.cpp.
References llvm::SmallVectorImpl< T >::clear(), llvm::errorToBool(), F, getMArchFromMcpu(), llvm::RISCVISAInfo::parseArchString(), and llvm::SmallVectorTemplateBase< T, bool >::push_back().
Definition at line 108 of file RISCVTargetParser.cpp.
References getCPUInfoByName().
Referenced by getFeaturesForCPU().
Definition at line 5122 of file RISCVInstrInfo.cpp.
References llvm::RVV.
Referenced by llvm::RISCVInstrInfo::copyPhysRegVector(), getEEWForLoadStore(), getFoldedOpcode(), getMinimumVLForVSLIDEDOWN_VX(), llvm::RISCVInstrInfo::getReassociateOperandIndices(), INITIALIZE_PASS(), llvm::RISCVInstrInfo::isHighLatencyDef(), llvm::RISCVInstrInfo::isReMaterializableImpl(), isSegmentedStoreInstr(), vectorPseudoHasAllNBitUsers(), and vectorPseudoHasAllNBitUsers().
|
static |
Definition at line 38 of file RISCVVSETVLIInfoAnalysis.cpp.
References llvm::RISCVII::getSEWOpNum(), and MI.
Referenced by llvm::RISCV::RISCVVSETVLIInfoAnalysis::computeInfoForInstr(), and isMaskRegOp().
Definition at line 46 of file RISCVMCExpr.cpp.
References llvm_unreachable, S_CALL_PLT, S_GOT_HI, S_LO, S_None, S_PCREL_HI, S_PCREL_LO, S_QC_ABS20, and S_TPREL_LO.
Referenced by llvm::RISCVMCAsmInfo::printSpecifierExpr(), and llvm::RISCVMCAsmInfoDarwin::printSpecifierExpr().
|
static |
Definition at line 46 of file RISCVVSETVLIInfoAnalysis.cpp.
References llvm::RISCVII::getTWidenOpNum(), and MI.
Referenced by llvm::RISCV::RISCVVSETVLIInfoAnalysis::computeInfoForInstr().
|
static |
Definition at line 42 of file RISCVVSETVLIInfoAnalysis.cpp.
References llvm::RISCVII::getVecPolicyOpNum(), and MI.
Referenced by llvm::RISCV::RISCVVSETVLIInfoAnalysis::computeInfoForInstr().
| std::optional< unsigned > llvm::RISCV::getVectorLowDemandedScalarBits | ( | unsigned | Opcode, |
| unsigned | Log2SEW ) |
Definition at line 5005 of file RISCVInstrInfo.cpp.
Referenced by vectorPseudoHasAllNBitUsers(), and vectorPseudoHasAllNBitUsers().
|
static |
Definition at line 34 of file RISCVVSETVLIInfoAnalysis.cpp.
References llvm::RISCVII::getVLOpNum(), and MI.
Referenced by llvm::RISCV::RISCVVSETVLIInfoAnalysis::computeInfoForInstr(), and getDemanded().
|
static |
Given a virtual register Reg, return the corresponding VNInfo for it.
This will return nullptr if the virtual register is an implicit_def or if LiveIntervals is not available.
Definition at line 24 of file RISCVVSETVLIInfoAnalysis.cpp.
References assert(), llvm::SlotIndexes::getInstructionIndex(), llvm::LiveIntervals::getInterval(), llvm::LiveIntervals::getSlotIndexes(), MI, and Reg.
Referenced by llvm::RISCV::RISCVVSETVLIInfoAnalysis::computeInfoForInstr(), and llvm::RISCV::RISCVVSETVLIInfoAnalysis::getInfoForVSETVLI().
| bool llvm::RISCV::hasEqualFRM | ( | const MachineInstr & | MI1, |
| const MachineInstr & | MI2 ) |
Definition at line 4992 of file RISCVInstrInfo.cpp.
References llvm::MachineOperand::getImm(), llvm::MachineInstr::getOpcode(), and llvm::MachineInstr::getOperand().
Referenced by canCombineFPFusedMultiply(), and llvm::RISCVInstrInfo::hasReassociableSibling().
Definition at line 57 of file RISCVTargetParser.cpp.
References getCPUInfoByName().
Definition at line 62 of file RISCVTargetParser.cpp.
References getCPUInfoByName().
|
static |
Return true if the inactive elements in the result are entirely undefined.
Note that this is different from "agnostic" as defined by the vector specification. Agnostic requires each lane to either be undisturbed, or take the value -1; no other value is allowed.
Definition at line 93 of file RISCVVSETVLIInfoAnalysis.cpp.
References llvm::MachineOperand::getReg(), llvm::MachineOperand::isUndef(), llvm::Register::isValid(), and MI.
Referenced by llvm::RISCV::RISCVVSETVLIInfoAnalysis::computeInfoForInstr(), and getDemanded().
Definition at line 67 of file RISCVTargetParser.cpp.
References getCPUModel(), and llvm::RISCV::CPUModel::isValid().
|
static |
Definition at line 106 of file RISCVVSETVLIInfoAnalysis.cpp.
References llvm::RISCVVType::decodeVLMUL().
Referenced by areCompatibleVTYPEs().
|
static |
Return true if this is an operation on mask registers.
Note that this includes both arithmetic/logical ops and load/store (vlm/vsm).
Definition at line 81 of file RISCVVSETVLIInfoAnalysis.cpp.
References llvm::MachineOperand::getImm(), getSEWOp(), llvm::RISCVII::hasSEWOp(), and MI.
Referenced by getDemanded().
| bool llvm::RISCV::isRVVSpill | ( | const MachineInstr & | MI | ) |
Definition at line 4933 of file RISCVInstrInfo.cpp.
References getLMULForRVVWholeLoadStore(), isRVVSpillForZvlsseg(), and MI.
Referenced by llvm::RISCVRegisterInfo::eliminateFrameIndex(), and getScavSlotsNumForRVV().
| std::optional< std::pair< unsigned, unsigned > > llvm::RISCV::isRVVSpillForZvlsseg | ( | unsigned | Opcode | ) |
Definition at line 4952 of file RISCVInstrInfo.cpp.
Referenced by isRVVSpill(), and llvm::RISCVRegisterInfo::lowerSegmentSpillReload().
| bool llvm::RISCV::isVectorCopy | ( | const TargetRegisterInfo * | TRI, |
| const MachineInstr & | MI ) |
Return true if MI is a copy that will be lowered to one or more vmvNr.vs.
Definition at line 4944 of file RISCVInstrInfo.cpp.
References llvm::RISCVRegisterInfo::isRVVRegClass(), MI, and TRI.
Referenced by getDemanded().
| bool llvm::RISCV::isVLKnownLE | ( | const MachineOperand & | LHS, |
| const MachineOperand & | RHS ) |
Given two VL operands, do we know that LHS <= RHS?
Given two VL operands, do we know that LHS <= RHS? Must be used in SSA form.
Definition at line 5155 of file RISCVInstrInfo.cpp.
References assert(), getEffectiveImm(), and VLMaxSentinel.
|
inline |
Definition at line 157 of file RISCVVSETVLIInfoAnalysis.h.
References DF.
|
inline |
Definition at line 565 of file RISCVVSETVLIInfoAnalysis.h.
Definition at line 86 of file RISCVTargetParser.cpp.
References getCPUInfoByName().
Referenced by parseTuneCPU().
| RISCV::Specifier llvm::RISCV::parseSpecifierName | ( | StringRef | name | ) |
Definition at line 23 of file RISCVMCExpr.cpp.
References llvm::StringSwitch< T, R >::Case(), llvm::StringSwitch< T, R >::Default(), name, S_GOT_HI, S_LO, S_PCREL_HI, S_PCREL_LO, S_QC_ABS20, and S_TPREL_LO.
Definition at line 94 of file RISCVTargetParser.cpp.
References llvm::StringSwitch< T, R >::Case(), llvm::StringSwitch< T, R >::Default(), ENUM, parseCPU(), and TUNE_PROC.
| Error llvm::RISCV::parseTuneFeatureString | ( | StringRef | ProcName, |
| StringRef | TFString, | ||
| SmallVectorImpl< std::string > & | TuneFeatures ) |
Parse the tune feature string with the respective processor.
If ProcName is empty, directives are not filtered by processor.
Definition at line 253 of file RISCVTargetParser.cpp.
References llvm::SmallVectorImpl< T >::emplace_back(), llvm::StringRef::empty(), llvm::join(), llvm::make_error(), llvm::set_intersection(), llvm::StringRef::split(), llvm::Error::success(), and llvm::StringRef::trim().
| void llvm::RISCV::updateCZceFeatureImplications | ( | MCSubtargetInfo & | STI | ) |
Definition at line 87 of file RISCVMCTargetDesc.cpp.
References llvm::MCSubtargetInfo::hasFeature(), and llvm::MCSubtargetInfo::ToggleFeature().
Referenced by createRISCVMCSubtargetInfo().
|
staticconstexpr |
Definition at line 405 of file RISCVInstrInfo.h.
|
staticconstexpr |
Definition at line 406 of file RISCVInstrInfo.h.
|
staticconstexpr |
Definition at line 407 of file RISCVInstrInfo.h.
|
staticconstexpr |
Definition at line 408 of file RISCVInstrInfo.h.
|
staticconstexpr |
Definition at line 412 of file RISCVInstrInfo.h.
|
staticconstexpr |
Definition at line 411 of file RISCVInstrInfo.h.
|
staticconstexpr |
Definition at line 410 of file RISCVInstrInfo.h.
|
staticconstexpr |
Definition at line 409 of file RISCVInstrInfo.h.
|
staticconstexpr |
Definition at line 414 of file RISCVInstrInfo.h.
|
staticconstexpr |
Definition at line 413 of file RISCVInstrInfo.h.
| const RegisterBankInfo::PartialMapping llvm::RISCV::PartMappings[] |
Definition at line 29 of file RISCVRegisterBankInfo.cpp.
|
constexpr |
Definition at line 37 of file RISCVTargetParser.cpp.
Referenced by fillValidCPUArchList(), fillValidTuneCPUArchList(), getCPUInfoByName(), and getCPUNameFromCPUModel().
|
staticconstexpr |
Definition at line 68 of file RISCVTargetParser.h.
Referenced by computeKnownBitsFromOperator(), llvm::RISCVTargetLowering::computeVLMAX(), llvm::RISCVSubtarget::expandVScale(), getContainerForFixedLengthVector(), getLMUL1Ty(), llvm::RISCVTargetLowering::getM1VT(), llvm::RISCVTTIImpl::getMaxVScale(), llvm::RISCVTargetLowering::getRegClassIDForVecVT(), llvm::RISCVTTIImpl::getRegisterBitWidth(), llvm::RISCVTTIImpl::getRegUsageForType(), llvm::RISCVTargetMachine::getSubtargetImpl(), llvm::RISCVTTIImpl::getVScaleForTuning(), isTupleInsertInstr(), isValidEGW(), llvm::RISCVInstrInfo::loadRegFromStackSlot(), lowerGetVectorLength(), llvm::RISCVTargetLowering::LowerOperation(), llvm::RISCVTargetLowering::RISCVTargetLowering(), llvm::RISCVDAGToDAGISel::Select(), llvm::RISCVDAGToDAGISel::selectVLXSEG(), llvm::RISCVDAGToDAGISel::selectVSXSEG(), llvm::RISCVTargetLowering::splitValueIntoRegisterParts(), llvm::RISCVInstrInfo::storeRegToStackSlot(), and llvm::RISCVSubtarget::useRVVForFixedLengthVectors().
|
staticconstexpr |
Definition at line 69 of file RISCVTargetParser.h.
Referenced by llvm::RISCVRegisterInfo::adjustReg(), llvm::RISCVTargetLowering::getOptimalMemOpType(), llvm::RISCVInstrInfo::isLoadFromStackSlot(), and llvm::RISCVInstrInfo::isStoreToStackSlot().
| const RegisterBankInfo::ValueMapping llvm::RISCV::ValueMappings[] |
Definition at line 55 of file RISCVRegisterBankInfo.cpp.
Referenced by getFPValueMapping(), llvm::RISCVRegisterBankInfo::getInstrMapping(), and getVRBValueMapping().
|
staticconstexpr |
Definition at line 399 of file RISCVInstrInfo.h.
Referenced by llvm::RISCV::RISCVVSETVLIInfoAnalysis::computeInfoForInstr(), isVLKnownLE(), and llvm::RISCVDAGToDAGISel::selectVLOp().