MLIR  15.0.0git
mlir::Value Class Reference

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"

Inheritance diagram for mlir::Value:
Collaboration diagram for mlir::Value:

## 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)

template<typename U >
bool isa () const

template<typename First , typename Second , typename... Rest>
bool isa () const

template<typename U >
dyn_cast () const

template<typename U >
dyn_cast_or_null () const

template<typename U >
cast () const

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...

MLIRContextgetContext () 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...

OperationgetDefiningOp () const
If this value is the result of an operation, return the operation that defines it. More...

template<typename OpTy >
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)

RegiongetParentRegion ()
Return the Region in which this Value is defined. More...

BlockgetParentBlock ()
Return the Block in which this Value is defined. More...

void dropAllUses () const
Drop all uses of this object from their respective owners. More...

void replaceAllUsesWith (Value newValue) const
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) const
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) const
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)
Returns true if the value is used outside of the given block. 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...

bool hasOneUse () const
Returns true if this value has exactly one use. 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)

void print (raw_ostream &os, const OpPrintingFlags &flags)

void print (raw_ostream &os, AsmState &state)

void dump ()

void printAsOperand (raw_ostream &os, AsmState &state)
Print this value as if it were an operand. More...

voidgetAsOpaquePointer () const
Methods for supporting PointerLikeTypeTraits. More...

detail::ValueImplgetImpl () const

## Static Public Member Functions

static Value getFromOpaquePointer (const void *pointer)

## Protected Attributes

detail::ValueImplimpl
A pointer to the internal implementation of the value. More...

## Friends

::llvm::hash_code hash_value (Value arg)
Make Value hashable. More...

## Detailed Description

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).

Definition at line 85 of file Value.h.

## ◆ use_iterator

This class implements an iterator over the uses of a value.

Definition at line 190 of file Value.h.

## ◆ use_range

 using mlir::Value::use_range = iterator_range

Definition at line 191 of file Value.h.

## ◆ user_iterator

Definition at line 208 of file Value.h.

## ◆ user_range

Definition at line 209 of file Value.h.

## ◆ Value()

 constexpr mlir::Value::Value ( detail::ValueImpl * impl = nullptr )
inline

Definition at line 87 of file Value.h.

## ◆ dropAllUses()

 void mlir::Value::dropAllUses ( ) const
inline

Drop all uses of this object from their respective owners.

Definition at line 157 of file Value.h.

Referenced by buildUnresolvedTargetMaterialization().

## ◆ dump()

 void Value::dump ( )

Definition at line 3097 of file AsmPrinter.cpp.

References print().

## ◆ dyn_cast_or_null()

template<typename U >
 U mlir::Value::dyn_cast_or_null ( ) const
inline

Definition at line 104 of file Value.h.

## ◆ getAsOpaquePointer()

 void* mlir::Value::getAsOpaquePointer ( ) const
inline

Methods for supporting PointerLikeTypeTraits.

Definition at line 227 of file Value.h.

## ◆ getContext()

 MLIRContext* mlir::Value::getContext ( ) const
inline

Utility to get the associated MLIRContext that this value is defined in.

Definition at line 121 of file Value.h.

References mlir::Type::getContext(), and mlir::detail::ValueImpl::getType().

## ◆ getDefiningOp() [2/2]

template<typename OpTy >
 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 138 of file Value.h.

## ◆ getFromOpaquePointer()

 static Value mlir::Value::getFromOpaquePointer ( const void * pointer )
inlinestatic

Definition at line 228 of file Value.h.

## ◆ getImpl()

 detail::ValueImpl* mlir::Value::getImpl ( ) const
inline

Definition at line 231 of file Value.h.

References mlir::hash_value().

## ◆ getParentBlock()

 Block * Value::getParentBlock ( )

Return the Block in which this Value is defined.

Definition at line 48 of file Value.cpp.

## ◆ getParentRegion()

 Region * Value::getParentRegion ( )

Return the Region in which this Value is defined.

Definition at line 41 of file Value.cpp.

References mlir::Region::getParentRegion().

## ◆ getUsers()

 user_range mlir::Value::getUsers ( ) const
inline

## ◆ 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 197 of file Value.h.

## ◆ hasOneUse()

 bool mlir::Value::hasOneUse ( ) const
inline

Returns true if this value has exactly one use.

Definition at line 200 of file Value.h.

## ◆ isa() [1/2]

template<typename U >
 bool mlir::Value::isa ( ) const
inline

## ◆ isa() [2/2]

template<typename First , typename Second , typename... Rest>
 bool mlir::Value::isa ( ) const
inline

Definition at line 96 of file Value.h.

## ◆ isUsedOutsideOfBlock()

 bool Value::isUsedOutsideOfBlock ( Block * block )

Returns true if the value is used outside of the given block.

Definition at line 90 of file Value.cpp.

References mlir::Operation::getBlock().

Referenced by mlir::Operation::isUsedOutsideOfBlock().

## ◆ operator bool()

 mlir::Value::operator bool ( ) const
inlineexplicit

Definition at line 113 of file Value.h.

## ◆ operator!=()

 bool mlir::Value::operator!= ( const Value & other ) const
inline

Definition at line 115 of file Value.h.

## ◆ operator==()

 bool mlir::Value::operator== ( const Value & other ) const
inline

Definition at line 114 of file Value.h.

References impl.

## ◆ print() [1/3]

 void Value::print ( raw_ostream & os )

Definition at line 3068 of file AsmPrinter.cpp.

References print().

Referenced by isOpLoopInvariant(), mlir::Diagnostic::operator<<(), and mlir::operator<<().

## ◆ print() [2/3]

 void Value::print ( raw_ostream & os, const OpPrintingFlags & flags )

## ◆ print() [3/3]

 void Value::print ( raw_ostream & os, AsmState & state )

## ◆ printAsOperand()

 void Value::printAsOperand ( raw_ostream & os, AsmState & state )

Print this value as if it were an operand.

Definition at line 3102 of file AsmPrinter.cpp.

## ◆ replaceAllUsesExcept() [1/2]

 void Value::replaceAllUsesExcept ( Value newValue, const SmallPtrSetImpl< Operation *> & exceptions ) const

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 61 of file Value.cpp.

## ◆ replaceAllUsesExcept() [2/2]

 void Value::replaceAllUsesExcept ( Value newValue, Operation * exceptedUser ) const

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 72 of file Value.cpp.

## ◆ replaceAllUsesWith()

 void mlir::Value::replaceAllUsesWith ( Value newValue ) const
inline

Replace all uses of 'this' value with the new value, updating anything in the IR that uses 'this' to use the other value instead.

When this returns there are zero uses of 'this'.

Definition at line 162 of file Value.h.

## ◆ replaceUsesWithIf()

 void Value::replaceUsesWithIf ( Value newValue, function_ref< bool(OpOperand &)> shouldReplace )

Replace all uses of 'this' value with 'newValue' if the given callback returns true.

Definition at line 82 of file Value.cpp.

Referenced by mlir::outlineSingleBlockRegion().

## ◆ setLoc()

 void Value::setLoc ( Location loc )

Definition at line 33 of file Value.cpp.

## ◆ setType()

 void mlir::Value::setType ( Type newType )
inline

Mutate the type of this Value to be of the specified type.

Note that this is an extremely dangerous operation which can create completely invalid IR very easily. It is strongly recommended that you recreate IR objects with the right types instead of mutating them in place.

Definition at line 129 of file Value.h.

## ◆ use_begin()

 use_iterator mlir::Value::use_begin ( ) const
inline

Definition at line 193 of file Value.h.

## ◆ use_empty()

 bool mlir::Value::use_empty ( ) const
inline

## ◆ use_end()

 use_iterator mlir::Value::use_end ( ) const
inline

Definition at line 194 of file Value.h.

## ◆ user_begin()

 user_iterator mlir::Value::user_begin ( ) const
inline

Definition at line 211 of file Value.h.

Referenced by executeGetOperandsResults(), and findMatchingStartFinishInsts().

## ◆ user_end()

 user_iterator mlir::Value::user_end ( ) const
inline

Definition at line 212 of file Value.h.

## ◆ hash_value

 ::llvm::hash_code hash_value ( Value arg )
friend

Make Value hashable.

Definition at line 458 of file Value.h.

## ◆ impl

 detail::ValueImpl* mlir::Value::impl
protected

A pointer to the internal implementation of the value.

Definition at line 237 of file Value.h.

Referenced by operator==().

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