LLVM 20.0.0git
Public Types | Public Member Functions | Static Public Member Functions | Protected Member Functions | Protected Attributes | Friends | List of all members
llvm::details::FixedOrScalableQuantity< LeafTy, ValueTy > Class Template Reference

#include "llvm/Support/TypeSize.h"

Inheritance diagram for llvm::details::FixedOrScalableQuantity< LeafTy, ValueTy >:
Inheritance graph
[legend]

Public Types

using ScalarTy = ValueTy
 

Public Member Functions

constexpr bool operator== (const FixedOrScalableQuantity &RHS) const
 
constexpr bool operator!= (const FixedOrScalableQuantity &RHS) const
 
constexpr bool isZero () const
 
constexpr bool isNonZero () const
 
 operator bool () const
 
constexpr LeafTy getWithIncrement (ScalarTy RHS) const
 Add RHS to the underlying quantity.
 
constexpr ScalarTy getKnownMinValue () const
 Returns the minimum value this quantity can represent.
 
constexpr bool isScalable () const
 Returns whether the quantity is scaled by a runtime quantity (vscale).
 
constexpr bool isFixed () const
 Returns true if the quantity is not scaled by vscale.
 
constexpr bool isKnownEven () const
 A return value of true indicates we know at compile time that the number of elements (vscale * Min) is definitely even.
 
constexpr bool isKnownMultipleOf (ScalarTy RHS) const
 This function tells the caller whether the element count is known at compile time to be a multiple of the scalar value RHS.
 
constexpr bool isKnownMultipleOf (const FixedOrScalableQuantity &RHS) const
 Returns whether or not the callee is known to be a multiple of RHS.
 
constexpr ScalarTy getFixedValue () const
 
constexpr LeafTy divideCoefficientBy (ScalarTy RHS) const
 We do not provide the '/' operator here because division for polynomial types does not work in the same way as for normal integer types.
 
constexpr LeafTy multiplyCoefficientBy (ScalarTy RHS) const
 
constexpr LeafTy coefficientNextPowerOf2 () const
 
constexpr bool hasKnownScalarFactor (const FixedOrScalableQuantity &RHS) const
 Returns true if there exists a value X where RHS.multiplyCoefficientBy(X) will result in a value whose quantity matches our own.
 
constexpr ScalarTy getKnownScalarFactor (const FixedOrScalableQuantity &RHS) const
 Returns a value X where RHS.multiplyCoefficientBy(X) will result in a value whose quantity matches our own.
 
void print (raw_ostream &OS) const
 Printing function.
 

Static Public Member Functions

static constexpr bool isKnownLT (const FixedOrScalableQuantity &LHS, const FixedOrScalableQuantity &RHS)
 
static constexpr bool isKnownGT (const FixedOrScalableQuantity &LHS, const FixedOrScalableQuantity &RHS)
 
static constexpr bool isKnownLE (const FixedOrScalableQuantity &LHS, const FixedOrScalableQuantity &RHS)
 
static constexpr bool isKnownGE (const FixedOrScalableQuantity &LHS, const FixedOrScalableQuantity &RHS)
 

Protected Member Functions

constexpr FixedOrScalableQuantity ()=default
 
constexpr FixedOrScalableQuantity (ScalarTy Quantity, bool Scalable)
 

Protected Attributes

ScalarTy Quantity = 0
 
bool Scalable = false
 

Friends

constexpr LeafTy & operator+= (LeafTy &LHS, const LeafTy &RHS)
 
constexpr LeafTy & operator-= (LeafTy &LHS, const LeafTy &RHS)
 
constexpr LeafTy & operator*= (LeafTy &LHS, ScalarTy RHS)
 
constexpr LeafTy operator+ (const LeafTy &LHS, const LeafTy &RHS)
 
constexpr LeafTy operator- (const LeafTy &LHS, const LeafTy &RHS)
 
constexpr LeafTy operator* (const LeafTy &LHS, ScalarTy RHS)
 
template<typename U = ScalarTy>
constexpr std::enable_if_t< std::is_signed_v< U >, LeafTy > operator- (const LeafTy &LHS)
 

Detailed Description

template<typename LeafTy, typename ValueTy>
class llvm::details::FixedOrScalableQuantity< LeafTy, ValueTy >

Definition at line 88 of file TypeSize.h.

Member Typedef Documentation

◆ ScalarTy

template<typename LeafTy , typename ValueTy >
using llvm::details::FixedOrScalableQuantity< LeafTy, ValueTy >::ScalarTy = ValueTy

Definition at line 90 of file TypeSize.h.

Constructor & Destructor Documentation

◆ FixedOrScalableQuantity() [1/2]

template<typename LeafTy , typename ValueTy >
constexpr llvm::details::FixedOrScalableQuantity< LeafTy, ValueTy >::FixedOrScalableQuantity ( )
constexprprotecteddefault

◆ FixedOrScalableQuantity() [2/2]

template<typename LeafTy , typename ValueTy >
constexpr llvm::details::FixedOrScalableQuantity< LeafTy, ValueTy >::FixedOrScalableQuantity ( ScalarTy  Quantity,
bool  Scalable 
)
inlineconstexprprotected

Definition at line 97 of file TypeSize.h.

Member Function Documentation

◆ coefficientNextPowerOf2()

template<typename LeafTy , typename ValueTy >
constexpr LeafTy llvm::details::FixedOrScalableQuantity< LeafTy, ValueTy >::coefficientNextPowerOf2 ( ) const
inlineconstexpr

◆ divideCoefficientBy()

template<typename LeafTy , typename ValueTy >
constexpr LeafTy llvm::details::FixedOrScalableQuantity< LeafTy, ValueTy >::divideCoefficientBy ( ScalarTy  RHS) const
inlineconstexpr

We do not provide the '/' operator here because division for polynomial types does not work in the same way as for normal integer types.

We can only divide the minimum value (or coefficient) by RHS, which is not the same as (Min * Vscale) / RHS The caller is recommended to use this function in combination with isKnownMultipleOf(RHS), which lets the caller know if it's possible to perform a lossless divide by RHS.

Definition at line 254 of file TypeSize.h.

References llvm::details::FixedOrScalableQuantity< LeafTy, ValueTy >::getKnownMinValue(), llvm::details::FixedOrScalableQuantity< LeafTy, ValueTy >::isScalable(), and RHS.

Referenced by llvm::AArch64LegalizerInfo::AArch64LegalizerInfo(), getHalfSizedType(), llvm::TargetLoweringBase::getTypeConversion(), llvm::TargetLoweringBase::getVectorTypeBreakdown(), llvm::AArch64TargetLowering::lowerDeinterleaveIntrinsicToLoad(), llvm::LegalizerHelper::lowerEXT(), llvm::AArch64TargetLowering::lowerInterleaveIntrinsicToStore(), and llvm::LegalizerHelper::lowerTRUNC().

◆ getFixedValue()

template<typename LeafTy , typename ValueTy >
constexpr ScalarTy llvm::details::FixedOrScalableQuantity< LeafTy, ValueTy >::getFixedValue ( ) const
inlineconstexpr

Definition at line 202 of file TypeSize.h.

References assert(), llvm::details::FixedOrScalableQuantity< LeafTy, ValueTy >::getKnownMinValue(), llvm::details::FixedOrScalableQuantity< LeafTy, ValueTy >::isScalable(), and llvm::details::FixedOrScalableQuantity< LeafTy, ValueTy >::isZero().

Referenced by areExtractShuffleVectors(), llvm::slpvectorizer::BoUpSLP::BoUpSLP(), buildCopyFromRegs(), buildFrameDebugInfo(), llvm::ARMTargetLowering::canCombineStoreAndExtract(), llvm::BaseIndexOffset::computeAliasing(), llvm::LoopVectorizationCostModel::computeMaxVF(), convertCalleeSaveRestoreToSPPrePostIncDec(), doInstrumentAddress(), llvm::SelectionDAG::FoldConstantArithmetic(), llvm::InstCombinerImpl::foldGEPICmp(), getAvailableLoadStore(), getBufferRsrcRegisterType(), llvm::TargetTransformInfoImplBase::getCastInstrCost(), getFauxShuffleMask(), llvm::EVT::getFixedSizeInBits(), llvm::MVT::getFixedSizeInBits(), llvm::getGCDType(), llvm::LoopVectorizationCostModel::getInstructionCost(), llvm::ARMTTIImpl::getInterleavedMemoryOpCost(), llvm::getLCMType(), llvm::X86TTIImpl::getLoadStoreVecRegBitWidth(), llvm::RISCVTTIImpl::getMaximumVF(), llvm::AArch64TTIImpl::getMaxNumElements(), llvm::HexagonTTIImpl::getMemoryOpCost(), llvm::getPtrStride(), llvm::EVT::getScalarSizeInBits(), llvm::MVT::getScalarSizeInBits(), llvm::EVT::getScalarStoreSize(), llvm::MVT::getScalarStoreSize(), llvm::DataLayout::getTypeSizeInBits(), getUniformBase(), llvm::SystemZTTIImpl::getVectorTruncCost(), llvm::AArch64TargetLowering::hasAndNot(), llvm::InlineFunction(), isFPIntrinsic(), isKnownNonZeroFromOperator(), llvm::AArch64TTIImpl::isLegalBroadcastLoad(), llvm::X86TTIImpl::isLegalBroadcastLoad(), isLoadInvariantInLoop(), isObjectSizeLessThanOrEq(), llvm::isSafeToLoadUnconditionally(), llvm::SystemZTargetLowering::isTruncateFree(), llvm::AArch64TargetLowering::isTruncateFree(), llvm::MSP430TargetLowering::isTruncateFree(), llvm::LoopAccessInfo::LoopAccessInfo(), lowerShuffleViaVRegSplitting(), MatchingStackOffset(), llvm::AArch64TargetLowering::ReconstructShuffle(), llvm::SCEVExpander::replaceCongruentIVs(), llvm::TargetLowering::SimplifyDemandedBits(), llvm::TargetLowering::SimplifyDemandedVectorElts(), TypeSizeToSizeIndex(), upgradeMaskedLoad(), upgradeX86IntrinsicCall(), llvm::LLT::vector(), llvm::InstCombinerImpl::visitGetElementPtrInst(), and widenSubVector().

◆ getKnownMinValue()

template<typename LeafTy , typename ValueTy >
constexpr ScalarTy llvm::details::FixedOrScalableQuantity< LeafTy, ValueTy >::getKnownMinValue ( ) const
inlineconstexpr

Returns the minimum value this quantity can represent.

Definition at line 168 of file TypeSize.h.

References llvm::details::FixedOrScalableQuantity< LeafTy, ValueTy >::Quantity.

Referenced by llvm::AArch64InstrInfo::areMemAccessesTriviallyDisjoint(), areRuntimeChecksProfitable(), canCreateUndefOrPoison(), canSkipClobberingStore(), clampDynamicVectorIndex(), llvm::details::FixedOrScalableQuantity< LeafTy, ValueTy >::coefficientNextPowerOf2(), computeKnownBitsFromOperator(), llvm::LoopVectorizationCostModel::computeMaxVF(), llvm::TargetLoweringBase::computeRegisterProperties(), llvm::RISCVTargetLowering::computeVLMAXBounds(), llvm::AArch64TargetLowering::createComplexDeinterleavingIR(), llvm::SelectionDAG::CreateStackTemporary(), llvm::RISCVTargetLowering::decomposeSubvectorInsertExtractToSubRegs(), llvm::details::FixedOrScalableQuantity< LeafTy, ValueTy >::divideCoefficientBy(), llvm::InnerLoopVectorizer::emitIterationCountCheck(), llvm::EpilogueVectorizerEpilogueLoop::emitMinimumVectorEpilogueIterCountCheck(), llvm::VFRange::end(), llvm::VPInstruction::execute(), llvm::VPInterleaveRecipe::execute(), llvm::VPReplicateRecipe::execute(), llvm::VPScalarIVStepsRecipe::execute(), llvm::VPRegionBlock::execute(), llvm::LoopVectorizationPlanner::executePlan(), llvm::TargetLowering::expandVectorSplice(), findMemType(), llvm::InnerLoopVectorizer::fixVectorizedLoop(), llvm::AArch64TargetLowering::functionArgumentNeedsConsecutiveRegisters(), llvm::VPTransformState::get(), getAddressForMemoryInput(), llvm::VPLane::getAsRuntimeExpr(), getCopyFromPartsVector(), llvm::getCoverTy(), llvm::SelectionDAG::GetDependentSplitDestVTs(), llvm::LoopVectorizationCostModel::getDivRemSpeculationCost(), llvm::details::FixedOrScalableQuantity< LeafTy, ValueTy >::getFixedValue(), llvm::getGCDType(), llvm::DenseMapInfo< ElementCount, void >::getHashValue(), llvm::AArch64RegisterBankInfo::getInstrMapping(), llvm::RISCVRegisterBankInfo::getInstrMapping(), llvm::LoopVectorizationCostModel::getInstructionCost(), llvm::details::FixedOrScalableQuantity< LeafTy, ValueTy >::getKnownScalarFactor(), llvm::VPLane::getLaneFromEnd(), llvm::getLCMType(), llvm::RISCVTargetLowering::getLMUL(), llvm::AArch64TTIImpl::getMaxNumElements(), llvm::AArch64InstrInfo::getMemOperandWithOffsetWidth(), getMinimalExtentFrom(), llvm::VPLane::getNumCachedLanes(), llvm::LLT::getNumElements(), llvm::AArch64TargetLowering::getNumInterleavedAccesses(), llvm::InnerLoopVectorizer::getOrCreateVectorTripCount(), llvm::MVT::getPow2VectorType(), llvm::EVT::getPow2VectorType(), llvm::AArch64TTIImpl::getShuffleCost(), llvm::X86TTIImpl::getShuffleCost(), llvm::LLT::getSizeInBytes(), llvm::EVT::getStoreSize(), llvm::MVT::getStoreSize(), llvm::DataLayout::getTypeStoreSize(), llvm::EVT::getVectorMinNumElements(), llvm::TargetLoweringBase::getVectorTypeBreakdown(), HasAddressTaken(), llvm::details::FixedOrScalableQuantity< LeafTy, ValueTy >::hasKnownScalarFactor(), llvm::BasicTTIImplBase< T >::improveShuffleKindFromMask(), llvm::TargetLowering::IncrementMemoryAddress(), llvm::GISelAddressing::instMayAlias(), llvm::CastInst::isBitCastable(), llvm::VFRange::isEmpty(), llvm::LoopVectorizationCostModel::isEpilogueVectorizationProfitable(), isIndvarOverflowCheckKnownFalse(), llvm::details::FixedOrScalableQuantity< LeafTy, ValueTy >::isKnownEven(), llvm::details::FixedOrScalableQuantity< LeafTy, ValueTy >::isKnownMultipleOf(), isPackedVectorType(), llvm::LoopVectorizationLegality::isUniform(), isUnpackedVectorVT(), isValidEGW(), llvm::LocationSize::isZero(), llvm::RISCVTargetLowering::joinRegisterPartsIntoValue(), lowerBUILD_VECTOR(), llvm::AArch64TargetLowering::lowerDeinterleaveIntrinsicToLoad(), llvm::AArch64TargetLowering::lowerInterleaveIntrinsicToStore(), LowerSVEIntrinsicEXT(), llvm::VPLane::mapToCacheIndex(), MemOperandsHaveAlias(), llvm::LegalityPredicates::memSizeNotByteSizePow2(), llvm::details::FixedOrScalableQuantity< LeafTy, ValueTy >::multiplyCoefficientBy(), performGatherLoadCombine(), performLastTrueTestVectorCombine(), performLD1Combine(), performScatterStoreCombine(), llvm::LoopVectorizationPlanner::plan(), llvm::LoopVectorizationPlanner::planInVPlanNativePath(), llvm::details::FixedOrScalableQuantity< LeafTy, ValueTy >::print(), llvm::LoopVectorizationPlanner::selectEpilogueVectorizationFactor(), llvm::LoopVectorizationCostModel::selectInterleaveCount(), llvm::FunctionLoweringInfo::set(), llvm::LoopVectorizationCostModel::setCostBasedWideningDecision(), llvm::VPTransformState::setDebugLocFrom(), llvm::LoopVectorizationCostModel::setVectorizedCallDecision(), simplifyShuffleVectorInst(), llvm::RISCVTargetLowering::splitValueIntoRegisterParts(), llvm::VFRange::VFRange(), llvm::InstCombinerImpl::visitAllocaInst(), llvm::ObjectSizeOffsetVisitor::visitAllocaInst(), and willGenerateVectors().

◆ getKnownScalarFactor()

template<typename LeafTy , typename ValueTy >
constexpr ScalarTy llvm::details::FixedOrScalableQuantity< LeafTy, ValueTy >::getKnownScalarFactor ( const FixedOrScalableQuantity< LeafTy, ValueTy > &  RHS) const
inlineconstexpr

Returns a value X where RHS.multiplyCoefficientBy(X) will result in a value whose quantity matches our own.

Definition at line 279 of file TypeSize.h.

References assert(), llvm::details::FixedOrScalableQuantity< LeafTy, ValueTy >::getKnownMinValue(), llvm::details::FixedOrScalableQuantity< LeafTy, ValueTy >::hasKnownScalarFactor(), and RHS.

◆ getWithIncrement()

template<typename LeafTy , typename ValueTy >
constexpr LeafTy llvm::details::FixedOrScalableQuantity< LeafTy, ValueTy >::getWithIncrement ( ScalarTy  RHS) const
inlineconstexpr

◆ hasKnownScalarFactor()

template<typename LeafTy , typename ValueTy >
constexpr bool llvm::details::FixedOrScalableQuantity< LeafTy, ValueTy >::hasKnownScalarFactor ( const FixedOrScalableQuantity< LeafTy, ValueTy > &  RHS) const
inlineconstexpr

Returns true if there exists a value X where RHS.multiplyCoefficientBy(X) will result in a value whose quantity matches our own.

Definition at line 271 of file TypeSize.h.

References llvm::details::FixedOrScalableQuantity< LeafTy, ValueTy >::getKnownMinValue(), llvm::details::FixedOrScalableQuantity< LeafTy, ValueTy >::isScalable(), and RHS.

Referenced by llvm::details::FixedOrScalableQuantity< LeafTy, ValueTy >::getKnownScalarFactor().

◆ isFixed()

template<typename LeafTy , typename ValueTy >
constexpr bool llvm::details::FixedOrScalableQuantity< LeafTy, ValueTy >::isFixed ( ) const
inlineconstexpr

Returns true if the quantity is not scaled by vscale.

Definition at line 174 of file TypeSize.h.

References llvm::details::FixedOrScalableQuantity< LeafTy, ValueTy >::Scalable.

◆ isKnownEven()

template<typename LeafTy , typename ValueTy >
constexpr bool llvm::details::FixedOrScalableQuantity< LeafTy, ValueTy >::isKnownEven ( ) const
inlineconstexpr

A return value of true indicates we know at compile time that the number of elements (vscale * Min) is definitely even.

However, returning false does not guarantee that the total number of elements is odd.

Definition at line 179 of file TypeSize.h.

References llvm::details::FixedOrScalableQuantity< LeafTy, ValueTy >::getKnownMinValue().

Referenced by llvm::SelectionDAG::SplitEVL().

◆ isKnownGE()

template<typename LeafTy , typename ValueTy >
static constexpr bool llvm::details::FixedOrScalableQuantity< LeafTy, ValueTy >::isKnownGE ( const FixedOrScalableQuantity< LeafTy, ValueTy > &  LHS,
const FixedOrScalableQuantity< LeafTy, ValueTy > &  RHS 
)
inlinestaticconstexpr

Definition at line 239 of file TypeSize.h.

References LHS, and RHS.

◆ isKnownGT()

template<typename LeafTy , typename ValueTy >
static constexpr bool llvm::details::FixedOrScalableQuantity< LeafTy, ValueTy >::isKnownGT ( const FixedOrScalableQuantity< LeafTy, ValueTy > &  LHS,
const FixedOrScalableQuantity< LeafTy, ValueTy > &  RHS 
)
inlinestaticconstexpr

Definition at line 225 of file TypeSize.h.

References LHS, and RHS.

◆ isKnownLE()

template<typename LeafTy , typename ValueTy >
static constexpr bool llvm::details::FixedOrScalableQuantity< LeafTy, ValueTy >::isKnownLE ( const FixedOrScalableQuantity< LeafTy, ValueTy > &  LHS,
const FixedOrScalableQuantity< LeafTy, ValueTy > &  RHS 
)
inlinestaticconstexpr

Definition at line 232 of file TypeSize.h.

References LHS, and RHS.

◆ isKnownLT()

template<typename LeafTy , typename ValueTy >
static constexpr bool llvm::details::FixedOrScalableQuantity< LeafTy, ValueTy >::isKnownLT ( const FixedOrScalableQuantity< LeafTy, ValueTy > &  LHS,
const FixedOrScalableQuantity< LeafTy, ValueTy > &  RHS 
)
inlinestaticconstexpr

Definition at line 218 of file TypeSize.h.

References LHS, and RHS.

◆ isKnownMultipleOf() [1/2]

template<typename LeafTy , typename ValueTy >
constexpr bool llvm::details::FixedOrScalableQuantity< LeafTy, ValueTy >::isKnownMultipleOf ( const FixedOrScalableQuantity< LeafTy, ValueTy > &  RHS) const
inlineconstexpr

Returns whether or not the callee is known to be a multiple of RHS.

Definition at line 188 of file TypeSize.h.

References llvm::details::FixedOrScalableQuantity< LeafTy, ValueTy >::getKnownMinValue(), llvm::details::FixedOrScalableQuantity< LeafTy, ValueTy >::isScalable(), and RHS.

◆ isKnownMultipleOf() [2/2]

template<typename LeafTy , typename ValueTy >
constexpr bool llvm::details::FixedOrScalableQuantity< LeafTy, ValueTy >::isKnownMultipleOf ( ScalarTy  RHS) const
inlineconstexpr

This function tells the caller whether the element count is known at compile time to be a multiple of the scalar value RHS.

Definition at line 183 of file TypeSize.h.

References llvm::details::FixedOrScalableQuantity< LeafTy, ValueTy >::getKnownMinValue(), and RHS.

Referenced by getHalfSizedType(), llvm::EVT::isByteSized(), llvm::LLT::isByteSized(), llvm::MVT::isByteSized(), isSupportedAccessType(), and promoteAllocaUserToVector().

◆ isNonZero()

template<typename LeafTy , typename ValueTy >
constexpr bool llvm::details::FixedOrScalableQuantity< LeafTy, ValueTy >::isNonZero ( ) const
inlineconstexpr

◆ isScalable()

template<typename LeafTy , typename ValueTy >
constexpr bool llvm::details::FixedOrScalableQuantity< LeafTy, ValueTy >::isScalable ( ) const
inlineconstexpr

Returns whether the quantity is scaled by a runtime quantity (vscale).

Definition at line 171 of file TypeSize.h.

References llvm::details::FixedOrScalableQuantity< LeafTy, ValueTy >::Scalable.

Referenced by llvm::AArch64InstrInfo::areMemAccessesTriviallyDisjoint(), areRuntimeChecksProfitable(), clampDynamicVectorIndex(), llvm::details::FixedOrScalableQuantity< LeafTy, ValueTy >::coefficientNextPowerOf2(), llvm::LoopVectorizationCostModel::collectInstsToScalarize(), computeKnownBitsFromOperator(), llvm::LoopVectorizationCostModel::computeMaxVF(), llvm::ComputeValueVTs(), llvm::VPRegionBlock::cost(), llvm::SelectionDAG::CreateStackTemporary(), llvm::details::FixedOrScalableQuantity< LeafTy, ValueTy >::divideCoefficientBy(), doInstrumentAddress(), llvm::InnerLoopVectorizer::emitIterationCountCheck(), llvm::VPVectorPointerRecipe::execute(), llvm::VPWidenPointerInductionRecipe::execute(), llvm::VPInterleaveRecipe::execute(), llvm::VPReplicateRecipe::execute(), llvm::VPScalarIVStepsRecipe::execute(), llvm::VPlan::execute(), llvm::VPRegionBlock::execute(), llvm::FixedScalableVFPair::FixedScalableVFPair(), llvm::SelectionDAG::FoldConstantArithmetic(), llvm::AArch64TargetLowering::functionArgumentNeedsConsecutiveRegisters(), llvm::VPTransformState::get(), getAddressForMemoryInput(), getAssignmentInfoImpl(), getAvailableLoadStore(), llvm::TargetTransformInfoImplBase::getCastInstrCost(), getCopyFromPartsVector(), llvm::SelectionDAG::GetDependentSplitDestVTs(), llvm::LoopVectorizationCostModel::getDivRemSpeculationCost(), llvm::StructLayout::getElementContainingOffset(), getElementIndex(), llvm::details::FixedOrScalableQuantity< LeafTy, ValueTy >::getFixedValue(), llvm::DenseMapInfo< ElementCount, void >::getHashValue(), llvm::LoopVectorizationCostModel::getInstructionCost(), llvm::BasicTTIImplBase< T >::getIntrinsicInstrCost(), llvm::VPLane::getLaneFromEnd(), llvm::getLCMType(), llvm::RISCVTTIImpl::getMaxInterleaveFactor(), llvm::AArch64TTIImpl::getMaxNumElements(), llvm::AArch64InstrInfo::getMemOperandWithOffsetWidth(), getMinClassForRegBank(), llvm::VPLane::getNumCachedLanes(), llvm::ScalarEvolution::getOffsetOfExpr(), llvm::MVT::getPow2VectorType(), llvm::EVT::getPow2VectorType(), llvm::LLT::getSizeInBytes(), llvm::EVT::getStoreSize(), llvm::MVT::getStoreSize(), llvm::TargetLoweringBase::getTypeConversion(), getTypePartition(), llvm::DataLayout::getTypeStoreSize(), getUniformBase(), llvm::TargetLoweringBase::getVectorTypeBreakdown(), llvm::AArch64TargetLowering::hasAndNot(), llvm::details::FixedOrScalableQuantity< LeafTy, ValueTy >::hasKnownScalarFactor(), llvm::VPlan::hasScalableVF(), llvm::InlineFunction(), llvm::LoopVectorizationCostModel::isEpilogueVectorizationProfitable(), isIndvarOverflowCheckKnownFalse(), llvm::details::FixedOrScalableQuantity< LeafTy, ValueTy >::isKnownMultipleOf(), llvm::AArch64TTIImpl::isLegalBroadcastLoad(), llvm::X86TTIImpl::isLegalBroadcastLoad(), llvm::AArch64TTIImpl::isLegalToVectorizeReduction(), llvm::RISCVTTIImpl::isLegalToVectorizeReduction(), isLoadInvariantInLoop(), isObjectSizeLessThanOrEq(), llvm::isSafeToLoadUnconditionally(), llvm::LoopVectorizationLegality::isUniform(), llvm::VPLane::mapToCacheIndex(), llvm::details::FixedOrScalableQuantity< LeafTy, ValueTy >::multiplyCoefficientBy(), llvm::LoopVectorizationPlanner::plan(), llvm::LoopVectorizationPlanner::planInVPlanNativePath(), llvm::details::FixedOrScalableQuantity< LeafTy, ValueTy >::print(), llvm::LoopVectorizationPlanner::selectEpilogueVectorizationFactor(), llvm::LoopVectorizationCostModel::selectInterleaveCount(), llvm::LoopVectorizationCostModel::setCostBasedWideningDecision(), llvm::TargetLowering::SimplifyDemandedBits(), llvm::TargetLowering::SimplifyDemandedVectorElts(), simplifyShuffleVectorInst(), TypeSizeToSizeIndex(), llvm::RegisterBankInfo::ValueMapping::verify(), llvm::VFRange::VFRange(), llvm::ObjectSizeOffsetVisitor::visitAllocaInst(), widenVectorToPartType(), and willGenerateVectors().

◆ isZero()

template<typename LeafTy , typename ValueTy >
constexpr bool llvm::details::FixedOrScalableQuantity< LeafTy, ValueTy >::isZero ( ) const
inlineconstexpr

◆ multiplyCoefficientBy()

template<typename LeafTy , typename ValueTy >
constexpr LeafTy llvm::details::FixedOrScalableQuantity< LeafTy, ValueTy >::multiplyCoefficientBy ( ScalarTy  RHS) const
inlineconstexpr

◆ operator bool()

template<typename LeafTy , typename ValueTy >
llvm::details::FixedOrScalableQuantity< LeafTy, ValueTy >::operator bool ( ) const
inlineexplicit

◆ operator!=()

template<typename LeafTy , typename ValueTy >
constexpr bool llvm::details::FixedOrScalableQuantity< LeafTy, ValueTy >::operator!= ( const FixedOrScalableQuantity< LeafTy, ValueTy > &  RHS) const
inlineconstexpr

◆ operator==()

template<typename LeafTy , typename ValueTy >
constexpr bool llvm::details::FixedOrScalableQuantity< LeafTy, ValueTy >::operator== ( const FixedOrScalableQuantity< LeafTy, ValueTy > &  RHS) const
inlineconstexpr

◆ print()

template<typename LeafTy , typename ValueTy >
void llvm::details::FixedOrScalableQuantity< LeafTy, ValueTy >::print ( raw_ostream OS) const
inline

Friends And Related Function Documentation

◆ operator*

template<typename LeafTy , typename ValueTy >
constexpr LeafTy operator* ( const LeafTy &  LHS,
ScalarTy  RHS 
)
friend

Definition at line 135 of file TypeSize.h.

◆ operator*=

template<typename LeafTy , typename ValueTy >
constexpr LeafTy & operator*= ( LeafTy &  LHS,
ScalarTy  RHS 
)
friend

Definition at line 120 of file TypeSize.h.

◆ operator+

template<typename LeafTy , typename ValueTy >
constexpr LeafTy operator+ ( const LeafTy &  LHS,
const LeafTy &  RHS 
)
friend

Definition at line 125 of file TypeSize.h.

◆ operator+=

template<typename LeafTy , typename ValueTy >
constexpr LeafTy & operator+= ( LeafTy &  LHS,
const LeafTy &  RHS 
)
friend

Definition at line 100 of file TypeSize.h.

◆ operator- [1/2]

template<typename LeafTy , typename ValueTy >
template<typename U = ScalarTy>
constexpr std::enable_if_t< std::is_signed_v< U >, LeafTy > operator- ( const LeafTy &  LHS)
friend

Definition at line 142 of file TypeSize.h.

◆ operator- [2/2]

template<typename LeafTy , typename ValueTy >
constexpr LeafTy operator- ( const LeafTy &  LHS,
const LeafTy &  RHS 
)
friend

Definition at line 130 of file TypeSize.h.

◆ operator-=

template<typename LeafTy , typename ValueTy >
constexpr LeafTy & operator-= ( LeafTy &  LHS,
const LeafTy &  RHS 
)
friend

Definition at line 110 of file TypeSize.h.

Member Data Documentation

◆ Quantity

template<typename LeafTy , typename ValueTy >
ScalarTy llvm::details::FixedOrScalableQuantity< LeafTy, ValueTy >::Quantity = 0
protected

◆ Scalable

template<typename LeafTy , typename ValueTy >
bool llvm::details::FixedOrScalableQuantity< LeafTy, ValueTy >::Scalable = false
protected

The documentation for this class was generated from the following file: