|
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 | 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_TPREL_LO | |
| S_QC_ABS20 | |
Definition at line 39 of file RISCVMCAsmInfo.h.
| enum llvm::RISCV::CPUKind : unsigned |
Definition at line 22 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 110 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 391 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 108 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 115 of file RISCVTargetParser.cpp.
References llvm::CallingConv::C, llvm::SmallVectorImpl< T >::emplace_back(), and RISCVCPUInfo.
| 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().
Definition at line 43 of file RISCVTargetParser.cpp.
References llvm::CallingConv::C, and RISCVCPUInfo.
Referenced by getCPUModel(), getMArchFromMcpu(), hasFastScalarUnalignedAccess(), hasFastVectorUnalignedAccess(), and parseCPU().
Definition at line 62 of file RISCVTargetParser.cpp.
References getCPUInfoByName(), and Info.
Referenced by hasValidCPUModel().
Definition at line 69 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 171 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(), getVLOpNum(), llvm::RISCVII::hasSEWOp(), llvm::RISCVII::hasTWidenOp(), hasUndefinedPassthru(), llvm::RISCVII::hasVLOp(), llvm::MachineOperand::isImm(), isMaskRegOp(), 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 5119 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 48 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 125 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 101 of file RISCVTargetParser.cpp.
References getCPUInfoByName(), and Info.
Referenced by getFeaturesForCPU().
Definition at line 5111 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_LO, S_None, S_PCREL_LO, S_QC_ABS20, and S_TPREL_LO.
Referenced by llvm::RISCVMCAsmInfo::printSpecifierExpr().
|
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 4994 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 4981 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 50 of file RISCVTargetParser.cpp.
References getCPUInfoByName(), and Info.
Definition at line 55 of file RISCVTargetParser.cpp.
References getCPUInfoByName(), and Info.
|
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 89 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 60 of file RISCVTargetParser.cpp.
References getCPUModel(), and llvm::RISCV::CPUModel::isValid().
|
static |
Definition at line 102 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 77 of file RISCVVSETVLIInfoAnalysis.cpp.
References getSEWOpNum(), llvm::RISCVII::hasSEWOp(), and MI.
Referenced by getDemanded().
| bool llvm::RISCV::isRVVSpill | ( | const MachineInstr & | MI | ) |
Definition at line 4922 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 4941 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 4933 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 5144 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 79 of file RISCVTargetParser.cpp.
References getCPUInfoByName(), and Info.
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_LO, S_PCREL_LO, S_QC_ABS20, and S_TPREL_LO.
Definition at line 87 of file RISCVTargetParser.cpp.
References llvm::StringSwitch< T, R >::Case(), llvm::StringSwitch< T, R >::Default(), ENUM, parseCPU(), and TUNE_PROC.
|
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 409 of file RISCVInstrInfo.h.
|
staticconstexpr |
Definition at line 413 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 415 of file RISCVInstrInfo.h.
|
staticconstexpr |
Definition at line 414 of file RISCVInstrInfo.h.
| const RegisterBankInfo::PartialMapping llvm::RISCV::PartMappings[] |
Definition at line 29 of file RISCVRegisterBankInfo.cpp.
|
constexpr |
Definition at line 30 of file RISCVTargetParser.cpp.
Referenced by fillValidCPUArchList(), fillValidTuneCPUArchList(), getCPUInfoByName(), and getCPUNameFromCPUModel().
|
staticconstexpr |
Definition at line 51 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::RISCVTargetLowering::isVScaleKnownToBeAPowerOfTwo(), 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 52 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 400 of file RISCVInstrInfo.h.
Referenced by llvm::RISCV::RISCVVSETVLIInfoAnalysis::computeInfoForInstr(), isVLKnownLE(), and llvm::RISCVDAGToDAGISel::selectVLOp().