ILGPU  0.9.0
ILGPU.IR.Values.PhiValue Class Reference

Represents a single control-flow dependent phi node. More...

Inheritance diagram for ILGPU.IR.Values.PhiValue:
ILGPU.IR.Value ILGPU.IR.Node ILGPU.IR.IValue ILGPU.IR.INode ILGPU.IR.INode ILGPU.IR.ILocation ILGPU.IR.IDumpable ILGPU.IR.ILocation ILGPU.IR.IDumpable

Classes

struct  BlockRemapper
 A simple remapper that allows to map an old block to a new block. More...
 
class  Builder
 A phi builder. More...
 
interface  IArgumentRemapper
 Remaps phi argument blocks. More...
 

Public Member Functions

PhiValue RemapArguments< TArgumentRemaper > (BasicBlock.Builder blockBuilder, TArgumentRemaper remapper)
 Remaps the current phi arguments. More...
 
override void Accept< T > (T visitor)
 
Value TryRemoveTrivialPhi (Method.Builder methodBuilder)
 Tries to remove a trivial phi value. More...
 
- Public Member Functions inherited from ILGPU.IR.Value
Use GetFirstUse ()
 Resolves the first use. More...
 
Value GetFirstUseNode ()
 Resolves the first use as value. More...
 
void Replace (Value other)
 Replaces this value with the given value. More...
 
Value Resolve ()
 Resolves the actual value with respect to replacement information. More...
 
ResolveAs< T > ()
 Resolves the actual value with respect to replacement information. More...
 
bool Equals (Value other)
 Returns true if the given value is the same value. More...
 
ReadOnlySpan< ValueReference >.Enumerator GetEnumerator ()
 Returns an enumerator to enumerate all child values. More...
 
sealed override string ToString ()
 Returns the string representation of this node. More...
 
override bool Equals (object obj)
 Returns true if the given object is equal to the current value. More...
 
override int GetHashCode ()
 Returns the hash code of this value. More...
 
- Public Member Functions inherited from ILGPU.IR.Node
virtual string FormatErrorMessage (string message)
 Formats an error message to include specific exception information. More...
 
virtual void Dump (TextWriter textWriter)
 Dumps this method to the given text writer. More...
 
string ToReferenceString ()
 Returns the string representation of this node as reference. More...
 
override string ToString ()
 Returns the string representation of this node. More...
 

Static Public Member Functions

static Value TryRemoveTrivialPhi (Method.Builder methodBuilder, PhiValue phiValue)
 Tries to remove a trivial phi value. More...
 

Public Attributes

override ValueKind ValueKind => ValueKind.Phi
 
ReadOnlySpan< BasicBlockSources => sourceBlocks
 Returns all associated blocks from which the values have to be resolved from. More...
 
- Public Attributes inherited from ILGPU.IR.Value
const ValueFlags DefaultFlags = ValueFlags.None
 The default value flags. More...
 
Method Method
 Returns the parent method. More...
 
BasicValueType BasicValueType
 Returns the associated basic value type. More...
 
bool CanBeReplaced
 Returns true if the current value can be replaced. More...
 
bool CanHaveUses
 Returns true if the current value can have uses. More...
 
bool HasStaticType
 Returns true if the current value has a static type. More...
 
bool IsSealed
 Returns true if the current value has been sealed. More...
 
bool IsReplaced => CanBeReplaced & Replacement != this
 Returns true if the current value has been replaced. More...
 
ReadOnlySpan< ValueReferenceNodes => values
 Returns all child values. More...
 
int Count => values.Count
 Returns the number of child values. More...
 
int AllNumUses => uses.Count
 Returns the total number of all associated uses. More...
 
UseCollection Uses => new UseCollection(this, uses)
 Returns all current uses (to non-replaced values). More...
 
ValueReference this[int index] => Nodes[index]
 Accesses the child value with the given index. More...
 

Protected Member Functions

override TypeNode ComputeType (in ValueInitializer initializer)
 
override string ToPrefixString ()
 
override string ToArgString ()
 
- Protected Member Functions inherited from ILGPU.IR.Value
 Value (in ValueInitializer initializer)
 Constructs a new value that is marked as replaceable. More...
 
 Value (in ValueInitializer initializer, TypeNode staticType)
 Constructs a new value that is marked as replaceable. More...
 
 Value (in ValueInitializer initializer, ValueFlags valueFlags)
 Constructs a new value that is marked as replaceable. More...
 
 Value (in ValueInitializer initializer, ValueFlags valueFlags, TypeNode staticType)
 Constructs a new value that is marked as replaceable. More...
 
void InvalidateType ()
 Invalidates the current type and enforces a re-computation of the current type. More...
 
void VerifyNotSealed ()
 Verifies that the this value is not sealed. More...
 
void Seal ()
 Seals this value. More...
 
void Seal (ValueReference value1)
 Seals this value. More...
 
void Seal (ValueReference value1, ValueReference value2)
 Seals this value. More...
 
void Seal (ValueReference value1, ValueReference value2, ValueReference value3)
 Seals this value. More...
 
void Seal (ref ValueList valueList)
 Seals this value. More...
 
- Protected Member Functions inherited from ILGPU.IR.Node
 Node (Location location)
 Constructs a new node that is marked as replaceable. More...
 
void InferLocation< T > (ReadOnlySpan< T > elements)
 Infers the location (if required) of the current node. More...
 

Properties

TypeNode PhiType [get]
 Returns the basic phi type. More...
 
- Properties inherited from ILGPU.IR.Value
abstract ValueKind ValueKind [get]
 Returns the current value kind. More...
 
BasicBlock BasicBlock [get, set]
 Returns the parent basic block. More...
 
TypeNode Type [get]
 Returns the associated type. More...
 
ValueFlags ValueFlags [get]
 Returns the associated value flags. More...
 
Value Replacement [get]
 Returns the replacement of this value (if any). More...
 
- Properties inherited from ILGPU.IR.Node
Location Location [get]
 Returns the associated location. More...
 
NodeId Id [get]
 Returns the unique node id. More...
 
- Properties inherited from ILGPU.IR.INode
NodeId Id [get]
 Returns the unique node id. More...
 
Location Location [get]
 Returns the associated location. More...
 
- Properties inherited from ILGPU.IR.IValue
ValueKind ValueKind [get]
 Returns the current value kind. More...
 
TypeNode Type [get]
 Returns the associated type information. More...
 
BasicBlock BasicBlock [get]
 Returns the parent basic block. More...
 
BasicValueType BasicValueType [get]
 Returns the associated basic value type. More...
 
ReadOnlySpan< ValueReferenceNodes [get]
 Returns all associated nodes. More...
 
UseCollection Uses [get]
 Returns all associated uses. More...
 

Detailed Description

Represents a single control-flow dependent phi node.

Member Function Documentation

override void ILGPU.IR.Values.PhiValue.Accept< T > ( visitor)
virtual

Implements ILGPU.IR.Value.

override TypeNode ILGPU.IR.Values.PhiValue.ComputeType ( in ValueInitializer  initializer)
protectedvirtual

Reimplemented from ILGPU.IR.Value.

PhiValue ILGPU.IR.Values.PhiValue.RemapArguments< TArgumentRemaper > ( BasicBlock.Builder  blockBuilder,
TArgumentRemaper  remapper 
)

Remaps the current phi arguments.

Template Parameters
TArgumentRemaperThe argument remapper type.
Parameters
blockBuilderThe current block builder.
remapperThe remapper instance.
Returns
The remapped phi value.
Type Constraints
TArgumentRemaper :IArgumentRemapper 
override string ILGPU.IR.Values.PhiValue.ToArgString ( )
protectedvirtual

Reimplemented from ILGPU.IR.Value.

override string ILGPU.IR.Values.PhiValue.ToPrefixString ( )
protectedvirtual

Implements ILGPU.IR.Node.

static Value ILGPU.IR.Values.PhiValue.TryRemoveTrivialPhi ( Method.Builder  methodBuilder,
PhiValue  phiValue 
)
static

Tries to remove a trivial phi value.

Parameters
methodBuilderThe current method builder.
phiValueThe phi value to check.
Returns
The resolved value.
Value ILGPU.IR.Values.PhiValue.TryRemoveTrivialPhi ( Method.Builder  methodBuilder)

Tries to remove a trivial phi value.

Parameters
methodBuilderThe current method builder.
Returns
The resolved value.

Member Data Documentation

ReadOnlySpan<BasicBlock> ILGPU.IR.Values.PhiValue.Sources => sourceBlocks

Returns all associated blocks from which the values have to be resolved from.

override ValueKind ILGPU.IR.Values.PhiValue.ValueKind => ValueKind.Phi

Property Documentation

TypeNode ILGPU.IR.Values.PhiValue.PhiType
get

Returns the basic phi type.


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