MLIR: mlir::Value Class Reference (original) (raw)
This class represents an instance of an SSA value in the MLIR system, representing a computable value that has a type and a set of users. More...
#include "[mlir/IR/Value.h](Value%5F8h%5Fsource.html)"
Public Types | |
---|---|
using | use_iterator = ValueUseIterator< OpOperand > |
This class implements an iterator over the uses of a value. More... | |
using | use_range = iterator_range< use_iterator > |
using | user_iterator = ValueUserIterator< use_iterator, OpOperand > |
using | user_range = iterator_range< user_iterator > |
Public Member Functions | |
---|---|
constexpr | Value (detail::ValueImpl *impl=nullptr) |
operator bool () const | |
bool | operator== (const Value &other) const |
bool | operator!= (const Value &other) const |
Type | getType () const |
Return the type of this value. More... | |
MLIRContext * | getContext () const |
Utility to get the associated MLIRContext that this value is defined in. More... | |
void | setType (Type newType) |
Mutate the type of this Value to be of the specified type. More... | |
Operation * | getDefiningOp () const |
If this value is the result of an operation, return the operation that defines it. More... | |
template | |
OpTy | getDefiningOp () const |
If this value is the result of an operation of type OpTy, return the operation that defines it. More... | |
Location | getLoc () const |
Return the location of this value. More... | |
void | setLoc (Location loc) |
Region * | getParentRegion () |
Return the Region in which this Value is defined. More... | |
Block * | getParentBlock () |
Return the Block in which this Value is defined. More... | |
void | dropAllUses () |
Drop all uses of this object from their respective owners. More... | |
void | replaceAllUsesWith (Value newValue) |
Replace all uses of 'this' value with the new value, updating anything in the IR that uses 'this' to use the other value instead. More... | |
void | replaceAllUsesExcept (Value newValue, const SmallPtrSetImpl< Operation * > &exceptions) |
Replace all uses of 'this' value with 'newValue', updating anything in the IR that uses 'this' to use the other value instead except if the user is listed in 'exceptions' . More... | |
void | replaceAllUsesExcept (Value newValue, Operation *exceptedUser) |
Replace all uses of 'this' value with 'newValue', updating anything in the IR that uses 'this' to use the other value instead except if the user is 'exceptedUser'. More... | |
void | replaceUsesWithIf (Value newValue, function_ref< bool(OpOperand &)> shouldReplace) |
Replace all uses of 'this' value with 'newValue' if the given callback returns true. More... | |
bool | isUsedOutsideOfBlock (Block *block) const |
Returns true if the value is used outside of the given block. More... | |
void | shuffleUseList (ArrayRef< unsigned > indices) |
Shuffle the use list order according to the provided indices. More... | |
use_iterator | use_begin () const |
use_iterator | use_end () const |
use_range | getUses () const |
Returns a range of all uses, which is useful for iterating over all uses. More... | |
unsigned | getNumUses () const |
This method computes the number of uses of this Value. More... | |
bool | hasOneUse () const |
Returns true if this value has exactly one use. More... | |
bool | hasNUses (unsigned n) const |
Return true if this Value has exactly n uses. More... | |
bool | hasNUsesOrMore (unsigned n) const |
Return true if this value has n uses or more. More... | |
bool | use_empty () const |
Returns true if this value has no uses. More... | |
user_iterator | user_begin () const |
user_iterator | user_end () const |
user_range | getUsers () const |
void | print (raw_ostream &os) const |
void | print (raw_ostream &os, const OpPrintingFlags &flags) const |
void | print (raw_ostream &os, AsmState &state) const |
void | dump () const |
void | printAsOperand (raw_ostream &os, AsmState &state) const |
Print this value as if it were an operand. More... | |
void | printAsOperand (raw_ostream &os, const OpPrintingFlags &flags) const |
void * | getAsOpaquePointer () const |
Methods for supporting PointerLikeTypeTraits. More... | |
detail::ValueImpl * | getImpl () const |
This class represents an instance of an SSA value in the MLIR system, representing a computable value that has a type and a set of users.
An SSA value is either a BlockArgument or the result of an operation. Note: This class has value-type semantics and is just a simple wrapper around a ValueImpl that is either owner by a block(in the case of a BlockArgument) or an Operation(in the case of an OpResult). As most IR constructs, this isn't const-correct, but we keep method consistent and as such method that immediately modify this Value aren't marked const
(include modifying the Value use-list).
Definition at line 96 of file Value.h.
◆ use_iterator
This class implements an iterator over the uses of a value.
Definition at line 181 of file Value.h.
◆ use_range
◆ user_iterator
◆ user_range
◆ dropAllUses()
void mlir::Value::dropAllUses ( ) | inline |
---|
Drop all uses of this object from their respective owners.
Definition at line 144 of file Value.h.
◆ dump()
void Value::dump | ( | ) | const |
---|
◆ getAsOpaquePointer()
void* mlir::Value::getAsOpaquePointer ( ) const | inline |
---|
◆ getContext()
Utility to get the associated MLIRContext that this value is defined in.
Definition at line 108 of file Value.h.
References mlir::Type::getContext(), and getType().
Referenced by mlir::scf::addLoopRangeConstraints(), annotateNonWritableTensor(), areAllIndicesI32(), calculateMemoryRequirements(), mlir::ValueBoundsConstraintSet::computeConstantDelta(), mlir::vector::ScalableValueBoundsConstraintSet::computeScalableBound(), dropRefIfNoUses(), mlir::affine::fullyComposeAndComputeConstantDelta(), getSharding(), inferCastResultType(), isAccessIndexInvariant(), and maybeConstantDimsAttr().
◆ getDefiningOp() [1/2]
If this value is the result of an operation, return the operation that defines it.
If this value is the result of an Operation, return the operation that defines it.
Definition at line 20 of file Value.cpp.
Referenced by mlir::affine::FlatAffineValueConstraints::addInductionVarOrTerminalSymbol(), mlir::affine::affineParallelize(), mlir::transform::TransformState::applyTransform(), mlir::linalg::areElementwiseOpsFusable(), mlir::linalg::bufferizeToAllocation(), canonicalizeAssociativeCommutativeBinaryOp(), checkAssumptionForFusingConsumer(), composeSetAndOperands(), mlir::ValueBoundsConstraintSet::computeIndependentBound(), convertOmpTarget(), convertOmpThreadprivate(), mlir::nvgpu::createAsyncGroups(), createInlinedCompareImplementation(), defaultDeallocBufferCallBack(), mlir::detail::defaultIsEquivalentSubset(), defaultIsSmallAlloc(), mlir::denormalizeInductionVariable(), deriveStaticUpperBound(), diagnoseInvalidOperandDominance(), distinctAllocAndBlockArgument(), mlir::DominanceInfo::dominates(), mlir::bufferization::dropEquivalentBufferResults(), dropRefIfNoUses(), extractConstInteger(), mlir::bufferization::AnalysisState::findValueInReverseUseDefChain(), foldDivMul(), foldExtractAfterInsert(), foldExtractAfterInsertSlice(), mlir::OpTrait::impl::foldIdempotent(), foldInsertAfterExtractSlice(), mlir::OpTrait::impl::foldInvolution(), foldScalarExtractFromFromElements(), mlir::affine::fullyComposeAffineMapAndOperands(), mlir::linalg::fuseProducerOfTensor(), generateFusedElementwiseOpRegion(), get2To4PruneFlag(), mlir::vector::getAsIntegers(), mlir::getBackwardSlice(), getBase(), getCompressedMaskOp(), mlir::vector::getConstantVscaleMultiplier(), getDefiningOp(), getMaskFormat(), mlir::mesh::getMeshSharding(), mlir::mesh::getOperandShardings(), getOperandTreePredicates(), mlir::tensor::getOrCreateDestination(), getOwnerOfValue(), getProducerOfTensor(), getRangeFromOperandShape(), getRefPtrIfDeclareTarget(), getRegisterType(), mlir::shape::getShapeVec(), getSourceSkipUnary(), mlir::LivenessBlockInfo::getStartOperation(), getTreePredicates(), getUnderlyingObjectSet(), getViewBase(), mlir::gpu::WarpDistributionPattern::getWarpResult(), hasAllocateSideEffect(), PadOpVectorizationWithTransferWritePattern::hasSameTensorSize(), haveNoReadsAfterWriteExceptSameIndex(), mlir::linalg::hoistPaddingOnTensors(), mlir::sparse_tensor::LoopEmitter::initializeLoopEmit(), mlir::inlineCall(), mlir::linalg::insertSlicesBack(), is2To4Sparsity(), mlir::sparse_tensor::isAdmissibleBranchExp(), mlir::sparse_tensor::isCertainZero(), isContiguousLoadIdx(), mlir::linalg::detail::isContractionBody(), isDeclareTargetLink(), isDefinedAsZero(), isDefinedByCallTo(), isEscapingMemref(), isLocallyDefined(), isLoopInvariantIdx(), isMaterializing(), isMulChain(), isOpLoopInvariant(), mlir::affine::isTopLevelValue(), mlir::affine::isValidDim(), mlir::affine::isValidSymbol(), mlir::affine::loopUnrollJamByFactor(), mlir::linalg::makeComposedPadHighOp(), mlir::makeRegionIsolatedFromAbove(), CanonicalizeContractAdd< AddOpType >::matchAndRewrite(), FoldAddIntoDest::matchAndRewrite(), SwapTransposeWithBroadcast::matchAndRewrite(), MergeAffineMinMaxOp< T >::matchAndRewrite(), ClampClampOptimization::matchAndRewrite(), ConcatSliceOptimization::matchAndRewrite(), PadSliceOptimization::matchAndRewrite(), mlir::linalg::LinalgCopyVTRForwardingPattern::matchAndRewrite(), mlir::linalg::LinalgCopyVTWForwardingPattern::matchAndRewrite(), mlir::detail::matchOperandOrValueAtIndex(), mlir::matchPattern(), mayAlias(), mlir::mesh::maybeInsertSourceShardingAnnotation(), mlir::dataflow::maybeReplaceWithConstant(), mlir::mesh::MeshSharding::MeshSharding(), movePaddingToFillOrGenericOp(), mlir::moveValueDefinitions(), noAliasingUseInLoop(), mlir::linalg::offsetIndices(), mlir::bufferization::ValueComparator::operator()(), mlir::outlineSingleBlockRegion(), mlir::linalg::padAndHoistLinalgOp(), padThroughLoopIterArg(), CommutativeOperand::popFrontAndPushAdjacentUnvisitedAncestors(), printOperation(), mlir::spirv::Serializer::printValueIDMap(), processParallelLoop(), mlir::ValueBoundsConstraintSet::processWorklist(), mlir::DominanceInfo::properlyDominates(), reifyOrComputeDynamicSizes(), relinkBranch(), remainsLegalAfterInline(), replaceDimOrSym(), mlir::Liveness::resolveLiveness(), mlir::linalg::rewriteInDestinationPassingStyle(), setInsertionPointAfter(), mlir::OpBuilder::setInsertionPointAfterValue(), setInsertionPointToStart(), mlir::linalg::splitReduction(), mlir::linalg::splitReductionByScaling(), tracesBackToExpectedValue(), tryFoldTensors(), tryToEnforceAlignment(), unpackCast(), mlir::spirv::verifyGroupNonUniformArithmeticOp(), and visitUpward().
◆ getDefiningOp() [2/2]
template
OpTy mlir::Value::getDefiningOp ( ) const | inline |
---|
If this value is the result of an operation of type OpTy, return the operation that defines it.
Definition at line 125 of file Value.h.
References getDefiningOp().
◆ getFromOpaquePointer()
static Value mlir::Value::getFromOpaquePointer ( const void * pointer) | inlinestatic |
---|
◆ getImpl()
◆ getLoc()
Return the location of this value.
Definition at line 26 of file Value.cpp.
Referenced by addAtomicRMW(), mlir::transform::gpu::alterGpuLaunch(), mlir::transform::TransformState::applyTransform(), buildLoopIterationCount(), buildPredicateList(), mlir::bufferization::castOrReallocMemRefValue(), castToCompatibleMemRefType(), mlir::linalg::copyToGPUPrivateMemory(), mlir::linalg::copyToWorkgroupMemory(), createDecl(), createSwitchOp(), mlir::tosa::createZPsAsConst(), dispatchMappedValues(), dropRefIfNoUses(), mlir::detail::ConversionPatternRewriterImpl::findOrBuildReplacementValue(), genDemap(), genRemap(), mlir::bufferization::DeallocationState::getMemrefWithUniqueOwnership(), mlir::vector::getVectorReductionOp(), handleByValArgument(), mlir::OperationEquivalence::isRegionEquivalentTo(), mlir::OpToFuncCallLowering< SourceOp >::maybeCast(), mlir::mesh::maybeInsertSourceShardingAnnotation(), mlir::mesh::maybeInsertTargetShardingAnnotation(), mlir::dataflow::maybeReplaceWithConstant(), mlirAsmStateCreateForValue(), movePaddingToFillOrGenericOp(), mlir::transform::ErrorCheckingTrackingListener::notifyPayloadReplacementNotFound(), padThroughLoopIterArg(), reifyOrComputeDynamicSizes(), mlir::detail::ConversionPatternRewriterImpl::remapValues(), mlir::bufferization::replaceOpWithBufferizedValues(), mlir::linalg::rewriteInIm2Col(), verifyAllToAllOperandAndResultShape(), verifyGatherOperandAndResultShape(), and verifyScatterOrSliceOperandAndResultShape().
◆ getNumUses()
unsigned Value::getNumUses | ( | ) | const |
---|
This method computes the number of uses of this Value.
This is a linear time operation. Use hasOneUse, hasNUses, or hasNUsesOrMore to check for specific values.
Definition at line 54 of file Value.cpp.
◆ getParentBlock()
Block * Value::getParentBlock | ( | ) |
---|
Return the Block in which this Value is defined.
Definition at line 48 of file Value.cpp.
Referenced by mlir::LocalAliasAnalysis::aliasImpl(), computeInsertPoint(), destructureSlot(), dropRefIfNoUses(), mlir::bufferization::findCommonDominator(), mlir::linalg::fuseProducerOfTensor(), genExp(), mlir::bufferization::DeallocationState::getMemrefWithUniqueOwnership(), setInsertionPointToStart(), tryToEnforceAlignment(), and mlir::bufferization::DeallocationState::updateOwnership().
◆ getParentRegion()
Region * Value::getParentRegion | ( | ) |
---|
◆ getType()
Type mlir::Value::getType ( ) const | inline |
---|
Return the type of this value.
Definition at line 105 of file Value.h.
Referenced by mlir::ArithBuilder::add(), addBodyWithPayloadOp(), mlir::affine::MemRefDependenceGraph::addEdge(), addExecuteResults(), adjustAccessChainForBitwidth(), mlir::allOperandsHaveSameCoopMatrixType(), appendX1Dim(), applyPad(), mlir::detail::ConversionPatternRewriterImpl::applySignatureConversion(), applyToIntegerAttrs(), mlir::transform::TransformState::applyTransform(), areAllLLVMTypes(), mlir::linalg::areElementwiseOpsFusable(), assertValidValueDim(), bitAndAddrspaceCast(), bitcastSubByteVectorToI8(), broadcast(), broadcastDynamicDimension(), broadcastDynamicDimensions(), broadcastIfNeeded(), mlir::MemRefDescriptor::bufferPtr(), buildAvgPool2dOpWithQuantInfo(), mlir::tosa::buildConvOpResultTypeInfo(), buildDivOp(), mlir::sparse_tensor::Merger::buildExp(), mlir::tosa::buildMatMulOpQuantizationAttr(), buildMatMulOpWithQuantInfo(), MmaSyncBuilder::buildMmaSync(), buildNegateOpWithQuantInfo(), mlir::tosa::buildPadOpQuantizationAttr(), mlir::sparse_tensor::buildRelu(), buildSubAndExpOp(), mlir::tosa::buildUnaryOpQuantizationAttr(), calculateMemoryRequirements(), castBoolToIntN(), castIntNToBool(), castIntValueToSameSizedType(), castMFMAScaleOperand(), mlir::bufferization::castOrReallocMemRefValue(), castSameSizedTypes(), castToCompatibleMemRefType(), castToF32(), castToSameSizedInt(), ceilDivPositive(), checkLayout(), checkSymOperandList(), clampInput(), mlir::detail::TypedValue< Ty >::classof(), collapseInnerDims(), collapseOperandsAndResults(), mlir::linalg::collapseOpIterationDims(), collapseValue(), mlir::LLVM::composeValue(), mlir::ValueBoundsConstraintSet::computeBound(), mlir::linalg::computeSliceParameters(), computeTargetSize(), convertAcoshOp(), convertAsinhOp(), convertAtanhOp(), convertCeilOp(), convertCoshOp(), mlir::complex::convertDivToLLVMUsingRangeReduction(), mlir::complex::convertDivToStandardUsingRangeReduction(), convertExp2fOp(), convertFPowIOp(), convertIntrinsicResult(), convertMFMAVectorOperand(), convertPowfOp(), convertRoundOp(), convertScalarToComplexDtype(), mlir::convertScalarToDtype(), convertScalarToFpDtype(), convertScalarToIntDtype(), convertSinhOp(), convertTanOp(), convertToLaunchFuncOp(), convertUnsignedToI32(), copyIntegerRange(), create4x128BitSuffle(), mlir::linalg::createAdd(), mlir::nvgpu::createAsyncGroups(), createBinarySearchFunc(), mlir::tensor::createCanonicalRankReducingExtractSliceOp(), mlir::tensor::createCanonicalRankReducingInsertSliceOp(), mlir::memref::createCanonicalRankReducingSubViewOp(), createContractArithOp(), createDecl(), mlir::linalg::createDestinationPassingStyleInitOperand(), mlir::tensor::createDynamicDimValues(), mlir::emitc::createExpression(), createExtractAndCast(), mlir::linalg::createFoldedDimOp(), createFullPartialVectorTransferRead(), createGroupReduceOp(), createGroupReduceOpImpl(), createInsertAndCast(), mlir::LLVM::detail::createIntrinsicCall(), createLinalgBodyCalculationForElementwiseOp(), mlir::arm_sme::createLoopOverTileSlices(), createMemcpy(), mlir::vector::createOrFoldDimOp(), mlir::linalg::createOrFoldDimOp(), mlir::sparse_tensor::createOrFoldSliceOffsetOp(), mlir::sparse_tensor::createOrFoldSliceStrideOp(), createPartitionFunc(), createQuickSort(), createQuickSortFunc(), mlir::vector::createReadOrMaskedRead(), createScanLoop(), createSortStableFunc(), createSubViewIntersection(), createTruncatedFPValue(), mlir::tosa::createZPsAsConst(), declareReduction(), mlir::LLVM::decomposeValue(), mlir::bufferization::detail::defaultGetBufferType(), defaultIsSmallAlloc(), definitelyWritesOnlyWithinSlot(), delinearizeInductionVariable(), dispatchMappedValues(), mlir::xegpu::doSCFStructuralTypeConversionWithTensorType(), doubleBuffer(), downcastSelectAndUpcast(), mlir::bufferization::dropEquivalentBufferResults(), mlir::tensor::dropGivenUnitDims(), dropTrailingX1Dim(), dynamicallyExtractSubVector(), dynamicallyInsertSubVector(), emitElementwiseComputation(), ensureToBufferOpIsValid(), mlir::tosa::EqualizeRanks(), expandValue(), extendMaskRank(), extendVectorRank(), extractLastDimSlice(), extractNBitsPerByteAndExtendToI8(), extractNBitsPerByteAndSignExtendToI8(), mlir::xegpu::extractVectorsWithShapeFromValue(), findAssociatedValue(), mlir::detail::ConversionPatternRewriterImpl::findOrBuildReplacementValue(), mlir::bufferization::AnalysisState::findValueInReverseUseDefChain(), flattenVecToBits(), foldExtractFromBroadcast(), foreachIndividualVectorElement(), forwardStoreToLoad(), mlir::affine::fullyComposeAndComputeConstantDelta(), mlir::linalg::fuseProducerOfTensor(), genBuffers(), mlir::sparse_tensor::genCast(), genCompressed(), genConditionalInsert(), genConstantDenseAddressFromLevel(), generatePointWiseCopy(), genExp(), genExpand(), genIf(), mlir::sparse_tensor::genIndexLoad(), genInsertionLoad(), mlir::sparse_tensor::genIsNonzero(), genResult(), genSliceOffset(), genSliceStride(), genSliceToSize(), genStore(), genTensorLoad(), genTensorStore(), mlir::sparse_tensor::genToMemref(), getBroadcastingMap(), mlir::getBufferizationOptionsForSparsification(), getCollapsedOpOperand(), getConstantUint32(), getContext(), getConvOrPoolOutputDim(), getConvZeroPoints(), getDimValue(), getEffectedValues(), mlir::MemRefDescriptor::getElementPtrType(), mlir::getElementTypeOrSelf(), mlir::ValueBoundsConstraintSet::getExpr(), getFlatOffsetAndStrides(), getFlattenMemrefAndOffset(), getFullMemRefAsRegion(), getGenericEffectsImpl(), mlir::mesh::ElementwiseShardingInterface< ElemwiseOp >::getIndexingMaps(), mlir::spirv::getIntegerDotProductCapabilities(), mlir::xegpu::getLayoutAttr(), mlir::mesh::ElementwiseShardingInterface< ElemwiseOp >::getLoopIteratorTypes(), mlir::IntegerValueRange::getMaxRange(), mlir::bufferization::getMemRefType(), mlir::memref::getMixedSize(), mlir::tensor::getMixedSize(), mlir::memref::getMixedSizes(), mlir::tensor::getMixedSizes(), getMultiLevelStrides(), mlir::arith::getNeutralElement(), getNumNonTrivialIdxExpOnSparseLvls(), getOffsetForBitwidth(), mlir::spirv::getOpenCLElementPtr(), getOperandTreePredicates(), mlir::tensor::getOrCreateDestination(), getOrFoldTensorDim(), getProducerOfTensor(), mlir::xegpu::getRankOf(), getRegisterType(), getReturnTypes(), getScalarOrElementWidth(), mlir::ValueShapeRange::getShape(), getSharding(), getSlice(), mlir::sparse_tensor::getSparseTensorType(), getStorageElementTypeOrSelf(), getTreePredicates(), mlir::detail::TypedValue< Ty >::getType(), mlir::OpTrait::detail::MultiResultTraitBase< ConcreteType, TraitType >::getType(), getUnusedOutOperand(), mlir::getValueOrCreateCastToIndexLike(), mlir::nvgpu::getWarpMatrixInfo(), handleArgumentImpl(), handleByValArgumentInit(), mlir::LLVM::detail::handleMultidimensionalVectors(), handleResultImpl(), PadOpVectorizationWithTransferWritePattern::hasSameTensorSize(), inferCastResultType(), inferDynamicDimsForConv(), mlir::sparse_tensor::LoopEmitter::initialize(), mlir::sparse_tensor::LoopEmitter::initializeLoopEmit(), mlir::inlineCall(), inlineOmpRegionCleanup(), insertCopies(), insertCopyLoops(), insertLastDimSlice(), mlir::NVVM::PtxBuilder::insertValue(), mlir::LLVM::detail::intrinsicRewrite(), isAccessIndexInvariant(), isDefinedByCallTo(), mlir::OperationEquivalence::isEquivalentTo(), isGpuAsyncTokenType(), isMemref(), mlir::OperationEquivalence::isRegionEquivalentTo(), mlir::BufferOriginAnalysis::isSameAllocation(), isSparseTensor(), isUniformDefinition(), mlir::affine::isValidDim(), mlir::affine::isValidSymbol(), isValueCompatibleWithFullReplicationSharding(), mlir::bufferization::AnalysisState::isValueRead(), legalizeBlockArguments(), linalgBroadcastAndMaybeExt(), linalgIntBroadcastExtSIAdd(), mlir::sparse_tensor::loadAll(), mlir::loopUnrollByFactor(), mlir::linalg::makeMemRefCopyOp(), mlir::ValueTypeIterator< ValueIteratorT >::mapElement(), mlir::OperandElementTypeIterator::mapElement(), mlir::ResultElementTypeIterator::mapElement(), mlir::detail::constant_float_value_binder::match(), mlir::detail::constant_int_value_binder::match(), matchAndReplaceDepthwiseConv(), CmpFIntToFPConst::matchAndRewrite(), FoldTensorCastProducerOp::matchAndRewrite(), mlir::GPUPrintfOpToHIPLowering::matchAndRewrite(), ConvertSameRankInsertStridedSliceIntoShuffle::matchAndRewrite(), SwapTransposeWithBroadcast::matchAndRewrite(), MulExtendedFold< MulOp, IsSigned >::matchAndRewrite(), mlir::linalg::FoldTensorCastPackOp::matchAndRewrite(), ConvertAccessChain::matchAndRewrite(), IAddCarryFold::matchAndRewrite(), UMulExtendedOpXOne::matchAndRewrite(), ClampClampOptimization::matchAndRewrite(), MaxPool2dIsNoOp::matchAndRewrite(), mlir::linalg::FoldTensorCastUnPackOp::matchAndRewrite(), mlir::linalg::RegionMatcher::matchAsScalarBinaryOp(), mlir::affine::materializeComputedBound(), mlir::linalg::materializeTiledShape(), mlir::OpToFuncCallLowering< SourceOp >::maybeCast(), mlir::mesh::maybeInsertSourceShardingAnnotation(), mlir::dataflow::maybeReplaceWithConstant(), mlir::BufferViewFlowAnalysis::mayBeTerminalBuffer(), mlir::MemRefDescriptor::MemRefDescriptor(), mlir::x86vector::avx2::inline_asm::mm256BlendPsAsm(), movePaddingToFillOrGenericOp(), mlir::ArithBuilder::mul(), needFlatten(), needFlattening(), mlir::affine::normalizeMemRef(), mlir::OperationFolder::notifyRemoval(), SliceCanonicalizer::operator()(), mlir::nvgpu::optimizeSharedMemoryReadsAndWrites(), optionallyTruncateOrExtend(), outlineExecuteOp(), mlir::linalg::pack(), padOperandToSmallestStaticBoundingBox(), mlir::bufferization::populateDynamicDimSizes(), printAccVar(), printAttributions(), mlir::OpAsmPrinter::printFunctionalType(), printFunctionArgs(), printLoopControl(), printOneResultOp(), printOperation(), printScheduleClause(), printVar(), mlir::ValueBoundsConstraintSet::processWorklist(), mlir::scf::promote(), mlir::LLVMTypeConverter::promoteOneMemRefDescriptor(), rankReducingSubviewDroppingUnitDims(), reduce(), reduceIfNeeded(), reifyOrComputeDynamicSizes(), mlir::arith::reifyValueBound(), mlir::detail::ConversionPatternRewriterImpl::remapValues(), mlir::affine::MemRefDependenceGraph::removeEdge(), mlir::affine::replaceAllMemRefUsesWith(), mlir::scf::replaceAndCastForOpIterArg(), mlir::bufferization::replaceOpWithBufferizedValues(), replaceUsesAndPropagateType(), replaceWithConstant(), mlir::linalg::DownscaleSizeOneWindowed2DConvolution< Conv2DOp, Conv1DOp >::returningMatchAndRewrite(), mlir::linalg::DownscaleConv2DOp::returningMatchAndRewrite(), mlir::linalg::DownscaleDepthwiseConv2DNhwcHwcOp::returningMatchAndRewrite(), mlir::linalg::rewriteAsPaddedOp(), rewriteI2ToI8Ext(), rewriteI4ToI8Ext(), rewriteI8ToI4Trunc(), mlir::linalg::rewriteInIm2Col(), setInPlaceOpOperand(), mlir::sparse_tensor::SparseTensorSpecifier::setSpecifierField(), mlir::ArithBuilder::sgt(), shiftValue(), mlir::ArithBuilder::slt(), mlir::sparse_tensor::IterationGraphSorter::sort(), mlir::vector::splitFullAndPartialTransfer(), mlir::linalg::splitReduction(), mlir::linalg::splitReductionByScaling(), staticallyExtractSubvector(), staticallyInsertSubvector(), mlir::sparse_tensor::storeAll(), mlir::ArithBuilder::sub(), mlir::linalg::transposeBatchMatmul(), mlir::linalg::transposeMatmul(), transposeOneLinalgOperandAndReplace(), truncOrExtToLLVMType(), truncToI32(), mlir::sparse_tensor::tryGetSparseTensorType(), unpackOperandVector(), updateCalls(), mlir::ValueBoundsConstraintSet::Variable::Variable(), vectorizeDynamicConvOpPrecondition(), vectorShape(), verifyAllToAllOperandAndResultShape(), mlir::spirv::verifyAtomicUpdateOp(), verifyBlockReadWritePtrAndValTypes(), mlir::detail::verifyBranchSuccessorOperands(), mlir::spirv::verifyCastOp(), mlir::LLVM::detail::verifyDereferenceableOpInterface(), mlir::detail::verifyDestinationStyleOpInterface(), verifyGatherOperandAndResultShape(), verifyInitializationAttribute(), verifyInitLikeSingleArgRegion(), mlir::spirv::verifyIntegerDotProduct(), mlir::spirv::verifyLoadStorePtrAndValTypes(), verifyNumBlockArgs(), mlir::transform::detail::verifyPossibleTopLevelTransformOpTrait(), verifyReductionVarList(), verifyRescaleValueAndZpTypes(), mlir::OpTrait::impl::verifySameOperandsAndResultType(), mlir::OpTrait::impl::verifySameTypeOperands(), verifyScatterOrSliceOperandAndResultShape(), mlir::detail::verifyShapedDimOpInterface(), verifyShiftOp(), mlir::linalg::detail::verifyStructuredOpInterface(), mlir::transform::AtMostOneOpMatcherOpTrait< OpTy >::verifyTrait(), mlir::transform::SingleValueMatcherOpTrait< OpTy >::verifyTrait(), verifyYield(), visitUpward(), wmmaPushInputOperand(), wmmaPushOutputOperand(), and wrapExternalFunction().
◆ getUsers()
Definition at line 218 of file Value.h.
References user_begin(), and user_end().
Referenced by mlir::memref::findDealloc(), mlir::detail::ConversionPatternRewriterImpl::findOrBuildReplacementValue(), mlir::LivenessBlockInfo::getEndOperation(), mlir::getForwardSlice(), mlir::mesh::getMeshSharding(), mlir::mesh::getResultShardings(), isEscapingMemref(), isLoadFromGlobalStoredToShared(), isOpLoopInvariant(), mlir::affine::isOpwiseShiftValid(), isSpMMCusparseLtOp(), TransposeIsReshape::matchAndRewrite(), mlir::matchReduction(), maybeCaptured(), noAliasingUseInLoop(), mlir::affine::normalizeMemRef(), mlir::affine::replaceAllMemRefUsesWith(), replaceForAllWithNewSignature(), shouldBeInlined(), tileAndFuseFirstExtractUseThroughContainingOpBlockArgument(), mlir::dataflow::IntegerRangeAnalysis::visitNonControlFlowArguments(), and mlir::dataflow::IntegerRangeAnalysis::visitOperation().
◆ getUses()
use_range mlir::Value::getUses ( ) const | inline |
---|
Returns a range of all uses, which is useful for iterating over all uses.
Definition at line 188 of file Value.h.
References use_begin(), and use_end().
Referenced by checkAssumptionForFusingConsumer(), checkDoubleConsume(), computeDestructuringInfo(), mlir::xegpu::doSCFStructuralTypeConversionWithTensorType(), dropRefIfNoUses(), getConsumerFromLoopUses(), getSingleTerminatorUse(), getSubViewUseIfUnique(), getUntiledConsumerFromSlice(), mlir::bufferization::AnalysisState::isValueRead(), mlir::bufferization::OneShotAnalysisState::isValueWritten(), mlir::linalg::LinalgCopyVTRForwardingPattern::matchAndRewrite(), mlir::mesh::maybeInsertTargetShardingAnnotation(), processValue(), mlir::replaceAllUsesInRegionWith(), mlir::RewriterBase::replaceAllUsesWith(), mlir::RewriterBase::replaceUsesWithIf(), and mlir::Liveness::resolveLiveness().
◆ hasNUses()
bool Value::hasNUses | ( | unsigned | n | ) | const |
---|
Return true if this Value has exactly n uses.
Definition at line 58 of file Value.cpp.
◆ hasNUsesOrMore()
bool Value::hasNUsesOrMore | ( | unsigned | n | ) | const |
---|
Return true if this value has n uses or more.
This is logically equivalent to getNumUses() >= N.
Definition at line 62 of file Value.cpp.
◆ hasOneUse()
bool mlir::Value::hasOneUse ( ) const | inline |
---|
◆ isUsedOutsideOfBlock()
bool Value::isUsedOutsideOfBlock | ( | Block * | block | ) | const |
---|
◆ operator bool()
mlir::Value::operator bool ( ) const | inlineexplicit |
---|
◆ operator!=()
bool mlir::Value::operator!= ( const Value & other) const | inline |
---|
◆ operator==()
bool mlir::Value::operator== ( const Value & other) const | inline |
---|
◆ print() [1/3]
void Value::print | ( | raw_ostream & | os | ) | const |
---|
◆ print() [2/3]
void Value::print | ( | raw_ostream & | os, |
---|---|---|---|
AsmState & | state | ||
) | const |
◆ print() [3/3]
void Value::print | ( | raw_ostream & | os, |
---|---|---|---|
const OpPrintingFlags & | flags | ||
) | const |
◆ printAsOperand() [1/2]
void Value::printAsOperand | ( | raw_ostream & | os, |
---|---|---|---|
AsmState & | state | ||
) | const |
Print this value as if it were an operand.
Definition at line 4053 of file AsmPrinter.cpp.
◆ printAsOperand() [2/2]
void Value::printAsOperand | ( | raw_ostream & | os, |
---|---|---|---|
const OpPrintingFlags & | flags | ||
) | const |
◆ replaceAllUsesExcept() [1/2]
Replace all uses of 'this' value with 'newValue', updating anything in the IR that uses 'this' to use the other value instead except if the user is listed in 'exceptions' .
Replace all uses of 'this' value with the new value, updating anything in the IR that uses 'this' to use the other value instead except if the user is listed in 'exceptions' .
Definition at line 73 of file Value.cpp.
Referenced by mlirValueReplaceAllUsesExcept(), and mlir::affine::normalizeAffineParallel().
◆ replaceAllUsesExcept() [2/2]
void Value::replaceAllUsesExcept | ( | Value | newValue, |
---|---|---|---|
Operation * | exceptedUser | ||
) |
Replace all uses of 'this' value with 'newValue', updating anything in the IR that uses 'this' to use the other value instead except if the user is 'exceptedUser'.
Definition at line 84 of file Value.cpp.
◆ replaceAllUsesWith()
void mlir::Value::replaceAllUsesWith ( Value newValue) | inline |
---|
◆ replaceUsesWithIf()
◆ setLoc()
◆ setType()
void mlir::Value::setType ( Type newType) | inline |
---|
◆ shuffleUseList()
void Value::shuffleUseList | ( | ArrayRef< unsigned > | indices | ) |
---|
Shuffle the use list order according to the provided indices.
Shuffles the use-list order according to the provided indices.
It is responsibility of the caller to make sure that the indices map the current use-list chain to another valid use-list chain.
Definition at line 108 of file Value.cpp.
◆ use_begin()
◆ use_empty()
bool mlir::Value::use_empty ( ) const | inline |
---|
◆ use_end()
◆ user_begin()
◆ user_end()
◆ hash_value
::llvm::hash_code hash_value ( Value arg) | friend |
---|
◆ impl
The documentation for this class was generated from the following files:
- include/mlir/IR/Value.h
- lib/IR/AsmPrinter.cpp
- lib/IR/Value.cpp