ILGPU  0.9.0
ILGPU.Backends.IBackendCodeGenerator< TKernelBuilder > Interface Template Reference

Represents an abstract code generator that works on a given data type. More...

Inheritance diagram for ILGPU.Backends.IBackendCodeGenerator< TKernelBuilder >:

Public Member Functions

void GenerateConstants (TKernelBuilder builder)
 Generates all constant definitions (if any). More...
 
void GenerateHeader (TKernelBuilder builder)
 Generates a header definition (if any). More...
 
void GenerateCode ()
 Generates the actual function code. More...
 
void Merge (TKernelBuilder builder)
 Merges all changes inside the current code generator into the given builder. More...
 
void GenerateCode (MethodCall methodCall)
 Generates code for the given value. More...
 
void GenerateCode (PhiValue phiValue)
 Generates code for the given value. More...
 
void GenerateCode (Parameter parameter)
 Generates code for the given value. More...
 
void GenerateCode (UnaryArithmeticValue value)
 Generates code for the given value. More...
 
void GenerateCode (BinaryArithmeticValue value)
 Generates code for the given value. More...
 
void GenerateCode (TernaryArithmeticValue value)
 Generates code for the given value. More...
 
void GenerateCode (CompareValue value)
 Generates code for the given value. More...
 
void GenerateCode (ConvertValue value)
 Generates code for the given value. More...
 
void GenerateCode (PointerCast value)
 Generates code for the given value. More...
 
void GenerateCode (AddressSpaceCast value)
 Generates code for the given value. More...
 
void GenerateCode (FloatAsIntCast value)
 Generates code for the given value. More...
 
void GenerateCode (IntAsFloatCast value)
 Generates code for the given value. More...
 
void GenerateCode (IfPredicate predicate)
 Generates code for the given value. More...
 
void GenerateCode (SwitchPredicate predicate)
 Generates code for the given value. More...
 
void GenerateCode (GenericAtomic atomic)
 Generates code for the given value. More...
 
void GenerateCode (AtomicCAS atomicCAS)
 Generates code for the given value. More...
 
void GenerateCode (Alloca alloca)
 Generates code for the given value. More...
 
void GenerateCode (MemoryBarrier barrier)
 Generates code for the given value. More...
 
void GenerateCode (Load load)
 Generates code for the given value. More...
 
void GenerateCode (Store store)
 Generates code for the given value. More...
 
void GenerateCode (LoadElementAddress value)
 Generates code for the given value. More...
 
void GenerateCode (LoadFieldAddress value)
 Generates code for the given value. More...
 
void GenerateCode (PrimitiveValue value)
 Generates code for the given value. More...
 
void GenerateCode (StringValue value)
 Generates code for the given value. More...
 
void GenerateCode (NullValue value)
 Generates code for the given value. More...
 
void GenerateCode (StructureValue value)
 Generates code for the given value. More...
 
void GenerateCode (GetField value)
 Generates code for the given value. More...
 
void GenerateCode (SetField value)
 Generates code for the given value. More...
 
void GenerateCode (GridIndexValue value)
 Generates code for the given value. More...
 
void GenerateCode (GroupIndexValue value)
 Generates code for the given value. More...
 
void GenerateCode (GridDimensionValue value)
 Generates code for the given value. More...
 
void GenerateCode (GroupDimensionValue value)
 Generates code for the given value. More...
 
void GenerateCode (WarpSizeValue value)
 Generates code for the given value. More...
 
void GenerateCode (LaneIdxValue value)
 Generates code for the given value. More...
 
void GenerateCode (PredicateBarrier barrier)
 Generates code for the given value. More...
 
void GenerateCode (Barrier barrier)
 Generates code for the given value. More...
 
void GenerateCode (Broadcast broadcast)
 Generates code for the given value. More...
 
void GenerateCode (WarpShuffle shuffle)
 Generates code for the given value. More...
 
void GenerateCode (SubWarpShuffle shuffle)
 Generates code for the given value. More...
 
void GenerateCode (DebugOperation debug)
 Generates code for the given value. More...
 
void GenerateCode (ReturnTerminator returnTerminator)
 Generates code for the given value. More...
 
void GenerateCode (UnconditionalBranch branch)
 Generates code for the given value. More...
 
void GenerateCode (IfBranch branch)
 Generates code for the given value. More...
 
void GenerateCode (SwitchBranch branch)
 Generates code for the given value. More...
 

Detailed Description

Represents an abstract code generator that works on a given data type.

An abstract backend code generator.

Template Parameters
TKernelBuilderThe data type on which this code generator can work.

Member Function Documentation

void ILGPU.Backends.IBackendCodeGenerator< TKernelBuilder >.GenerateCode ( )

Generates the actual function code.

void ILGPU.Backends.IBackendCodeGenerator< TKernelBuilder >.GenerateCode ( MethodCall  methodCall)

Generates code for the given value.

Parameters
methodCallThe node.
void ILGPU.Backends.IBackendCodeGenerator< TKernelBuilder >.GenerateCode ( PhiValue  phiValue)

Generates code for the given value.

Parameters
phiValueThe node.
void ILGPU.Backends.IBackendCodeGenerator< TKernelBuilder >.GenerateCode ( Parameter  parameter)

Generates code for the given value.

Parameters
parameterThe node.
void ILGPU.Backends.IBackendCodeGenerator< TKernelBuilder >.GenerateCode ( UnaryArithmeticValue  value)

Generates code for the given value.

Parameters
valueThe node.
void ILGPU.Backends.IBackendCodeGenerator< TKernelBuilder >.GenerateCode ( BinaryArithmeticValue  value)

Generates code for the given value.

Parameters
valueThe node.
void ILGPU.Backends.IBackendCodeGenerator< TKernelBuilder >.GenerateCode ( TernaryArithmeticValue  value)

Generates code for the given value.

Parameters
valueThe node.
void ILGPU.Backends.IBackendCodeGenerator< TKernelBuilder >.GenerateCode ( CompareValue  value)

Generates code for the given value.

Parameters
valueThe node.
void ILGPU.Backends.IBackendCodeGenerator< TKernelBuilder >.GenerateCode ( ConvertValue  value)

Generates code for the given value.

Parameters
valueThe node.
void ILGPU.Backends.IBackendCodeGenerator< TKernelBuilder >.GenerateCode ( PointerCast  value)

Generates code for the given value.

Parameters
valueThe node.
void ILGPU.Backends.IBackendCodeGenerator< TKernelBuilder >.GenerateCode ( AddressSpaceCast  value)

Generates code for the given value.

Parameters
valueThe node.
void ILGPU.Backends.IBackendCodeGenerator< TKernelBuilder >.GenerateCode ( FloatAsIntCast  value)

Generates code for the given value.

Parameters
valueThe node.
void ILGPU.Backends.IBackendCodeGenerator< TKernelBuilder >.GenerateCode ( IntAsFloatCast  value)

Generates code for the given value.

Parameters
valueThe node.
void ILGPU.Backends.IBackendCodeGenerator< TKernelBuilder >.GenerateCode ( IfPredicate  predicate)

Generates code for the given value.

Parameters
predicateThe node.
void ILGPU.Backends.IBackendCodeGenerator< TKernelBuilder >.GenerateCode ( SwitchPredicate  predicate)

Generates code for the given value.

Parameters
predicateThe node.
void ILGPU.Backends.IBackendCodeGenerator< TKernelBuilder >.GenerateCode ( GenericAtomic  atomic)

Generates code for the given value.

Parameters
atomicThe node.
void ILGPU.Backends.IBackendCodeGenerator< TKernelBuilder >.GenerateCode ( AtomicCAS  atomicCAS)

Generates code for the given value.

Parameters
atomicCASThe node.
void ILGPU.Backends.IBackendCodeGenerator< TKernelBuilder >.GenerateCode ( Alloca  alloca)

Generates code for the given value.

Parameters
allocaThe node.
void ILGPU.Backends.IBackendCodeGenerator< TKernelBuilder >.GenerateCode ( MemoryBarrier  barrier)

Generates code for the given value.

Parameters
barrierThe node.
void ILGPU.Backends.IBackendCodeGenerator< TKernelBuilder >.GenerateCode ( Load  load)

Generates code for the given value.

Parameters
loadThe node.
void ILGPU.Backends.IBackendCodeGenerator< TKernelBuilder >.GenerateCode ( Store  store)

Generates code for the given value.

Parameters
storeThe node.
void ILGPU.Backends.IBackendCodeGenerator< TKernelBuilder >.GenerateCode ( LoadElementAddress  value)

Generates code for the given value.

Parameters
valueThe node.
void ILGPU.Backends.IBackendCodeGenerator< TKernelBuilder >.GenerateCode ( LoadFieldAddress  value)

Generates code for the given value.

Parameters
valueThe node.
void ILGPU.Backends.IBackendCodeGenerator< TKernelBuilder >.GenerateCode ( PrimitiveValue  value)

Generates code for the given value.

Parameters
valueThe node.
void ILGPU.Backends.IBackendCodeGenerator< TKernelBuilder >.GenerateCode ( StringValue  value)

Generates code for the given value.

Parameters
valueThe node.
void ILGPU.Backends.IBackendCodeGenerator< TKernelBuilder >.GenerateCode ( NullValue  value)

Generates code for the given value.

Parameters
valueThe node.
void ILGPU.Backends.IBackendCodeGenerator< TKernelBuilder >.GenerateCode ( StructureValue  value)

Generates code for the given value.

Parameters
valueThe node.
void ILGPU.Backends.IBackendCodeGenerator< TKernelBuilder >.GenerateCode ( GetField  value)

Generates code for the given value.

Parameters
valueThe node.
void ILGPU.Backends.IBackendCodeGenerator< TKernelBuilder >.GenerateCode ( SetField  value)

Generates code for the given value.

Parameters
valueThe node.
void ILGPU.Backends.IBackendCodeGenerator< TKernelBuilder >.GenerateCode ( GridIndexValue  value)

Generates code for the given value.

Parameters
valueThe node.
void ILGPU.Backends.IBackendCodeGenerator< TKernelBuilder >.GenerateCode ( GroupIndexValue  value)

Generates code for the given value.

Parameters
valueThe node.
void ILGPU.Backends.IBackendCodeGenerator< TKernelBuilder >.GenerateCode ( GridDimensionValue  value)

Generates code for the given value.

Parameters
valueThe node.
void ILGPU.Backends.IBackendCodeGenerator< TKernelBuilder >.GenerateCode ( GroupDimensionValue  value)

Generates code for the given value.

Parameters
valueThe node.
void ILGPU.Backends.IBackendCodeGenerator< TKernelBuilder >.GenerateCode ( WarpSizeValue  value)

Generates code for the given value.

Parameters
valueThe node.
void ILGPU.Backends.IBackendCodeGenerator< TKernelBuilder >.GenerateCode ( LaneIdxValue  value)

Generates code for the given value.

Parameters
valueThe node.
void ILGPU.Backends.IBackendCodeGenerator< TKernelBuilder >.GenerateCode ( PredicateBarrier  barrier)

Generates code for the given value.

Parameters
barrierThe node.
void ILGPU.Backends.IBackendCodeGenerator< TKernelBuilder >.GenerateCode ( Barrier  barrier)

Generates code for the given value.

Parameters
barrierThe node.
void ILGPU.Backends.IBackendCodeGenerator< TKernelBuilder >.GenerateCode ( Broadcast  broadcast)

Generates code for the given value.

Parameters
broadcastThe node.
void ILGPU.Backends.IBackendCodeGenerator< TKernelBuilder >.GenerateCode ( WarpShuffle  shuffle)

Generates code for the given value.

Parameters
shuffleThe node.
void ILGPU.Backends.IBackendCodeGenerator< TKernelBuilder >.GenerateCode ( SubWarpShuffle  shuffle)

Generates code for the given value.

Parameters
shuffleThe node.
void ILGPU.Backends.IBackendCodeGenerator< TKernelBuilder >.GenerateCode ( DebugOperation  debug)

Generates code for the given value.

Parameters
debugThe node.
void ILGPU.Backends.IBackendCodeGenerator< TKernelBuilder >.GenerateCode ( ReturnTerminator  returnTerminator)

Generates code for the given value.

Parameters
returnTerminatorThe node.
void ILGPU.Backends.IBackendCodeGenerator< TKernelBuilder >.GenerateCode ( UnconditionalBranch  branch)

Generates code for the given value.

Parameters
branchThe node.
void ILGPU.Backends.IBackendCodeGenerator< TKernelBuilder >.GenerateCode ( IfBranch  branch)

Generates code for the given value.

Parameters
branchThe node.
void ILGPU.Backends.IBackendCodeGenerator< TKernelBuilder >.GenerateCode ( SwitchBranch  branch)

Generates code for the given value.

Parameters
branchThe node.
void ILGPU.Backends.IBackendCodeGenerator< TKernelBuilder >.GenerateConstants ( TKernelBuilder  builder)

Generates all constant definitions (if any).

Parameters
builderThe current builder.
void ILGPU.Backends.IBackendCodeGenerator< TKernelBuilder >.GenerateHeader ( TKernelBuilder  builder)

Generates a header definition (if any).

Parameters
builderThe current builder.
void ILGPU.Backends.IBackendCodeGenerator< TKernelBuilder >.Merge ( TKernelBuilder  builder)

Merges all changes inside the current code generator into the given builder.

Parameters
builderThe builder to merge with.

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