ILGPU  0.9.0
ILGPU.Frontend Namespace Reference

Namespaces

namespace  DebugInformation
 
namespace  Intrinsic
 

Classes

class  Block
 A simple basic block in the scope of an IR code-generation process. More...
 
class  CodeGenerationPhase
 A single code generation phase. Note that only a single phase instance can be created at a time. More...
 
class  CodeGenerationResult
 Represents a code-generation future. More...
 
class  CodeGenerator
 Represents an IR code generator for .Net methods. More...
 
class  DisassembledMethod
 Represents a disassembled method. More...
 
class  Disassembler
 Represents a disassembler for .Net methods. More...
 
class  ExternalAttribute
 Marks external methods that are opaque in the scope of the ILGPU IR. More...
 
interface  IILInstructionOffsetOperation
 An abstract operation that can be invoked for any instruction offset. More...
 
class  ILFrontend
 The ILGPU MSIL frontend. More...
 
class  ILInstruction
 Represents a single IL instruction. More...
 
class  ILInstructionBranchTargets
 Represents a collection of branch targets. More...
 
struct  ILInstructionFlagsContext
 Represents a context of instruction flags. More...
 
class  ILInstructionFlagsExtensions
 Contains extension methods for instruction flags.
 
struct  InvocationContext
 Represents an invocation context for compiler-known methods that are supported in the scope of ILGPU programs. More...
 
struct  VariableRef
 Represents a single variable. More...
 

Enumerations

enum  ILInstructionType {
  ILInstructionType.Nop, ILInstructionType.Break, ILInstructionType.Ldarg, ILInstructionType.Ldarga,
  ILInstructionType.Starg, ILInstructionType.Ldloc, ILInstructionType.Ldloca, ILInstructionType.Stloc,
  ILInstructionType.Ldnull, ILInstructionType.LdI4, ILInstructionType.LdI8, ILInstructionType.LdR4,
  ILInstructionType.LdR8, ILInstructionType.Ldstr, ILInstructionType.Dup, ILInstructionType.Pop,
  ILInstructionType.Jmp, ILInstructionType.Call, ILInstructionType.Calli, ILInstructionType.Callvirt,
  ILInstructionType.Ret, ILInstructionType.Br, ILInstructionType.Brfalse, ILInstructionType.Brtrue,
  ILInstructionType.Beq, ILInstructionType.Bne, ILInstructionType.Bge, ILInstructionType.Bgt,
  ILInstructionType.Ble, ILInstructionType.Blt, ILInstructionType.Switch, ILInstructionType.Add,
  ILInstructionType.Sub, ILInstructionType.Mul, ILInstructionType.Div, ILInstructionType.Rem,
  ILInstructionType.And, ILInstructionType.Or, ILInstructionType.Xor, ILInstructionType.Shl,
  ILInstructionType.Shr, ILInstructionType.Neg, ILInstructionType.Not, ILInstructionType.Conv,
  ILInstructionType.Initobj, ILInstructionType.Newobj, ILInstructionType.Newarr, ILInstructionType.Castclass,
  ILInstructionType.Isinst, ILInstructionType.Box, ILInstructionType.Unbox, ILInstructionType.Ldfld,
  ILInstructionType.Ldflda, ILInstructionType.Stfld, ILInstructionType.Ldsfld, ILInstructionType.Ldsflda,
  ILInstructionType.Stsfld, ILInstructionType.Ldobj, ILInstructionType.Stobj, ILInstructionType.Cpobj,
  ILInstructionType.Ldlen, ILInstructionType.Ldelem, ILInstructionType.Ldelema, ILInstructionType.Stelem,
  ILInstructionType.Ceq, ILInstructionType.Cgt, ILInstructionType.Clt, ILInstructionType.Ldind,
  ILInstructionType.Stind, ILInstructionType.Localloc, ILInstructionType.Cpblk, ILInstructionType.Initblk,
  ILInstructionType.SizeOf, ILInstructionType.LdToken
}
 Represents an instruction type of a single IL instruction. More...
 
enum  ILInstructionFlags : int {
  ILInstructionFlags.None = 0, ILInstructionFlags.Unsigned = 1 << 0, ILInstructionFlags.Overflow = 1 << 1, ILInstructionFlags.Unchecked = 1 << 2,
  ILInstructionFlags.Unaligned = 1 << 3, ILInstructionFlags.Volatile = 1 << 4, ILInstructionFlags.ReadOnly = 1 << 5, ILInstructionFlags.Tail = 1 << 6,
  ILInstructionFlags.Constrained = 1 << 7
}
 Represent flags of an IL instruction. More...
 
enum  ILOpCode {
  ILOpCode.Nop = 0, ILOpCode.Break = 1, ILOpCode.Ldarg_0 = 2, ILOpCode.Ldarg_1 = 3,
  ILOpCode.Ldarg_2 = 4, ILOpCode.Ldarg_3 = 5, ILOpCode.Ldloc_0 = 6, ILOpCode.Ldloc_1 = 7,
  ILOpCode.Ldloc_2 = 8, ILOpCode.Ldloc_3 = 9, ILOpCode.Stloc_0 = 10, ILOpCode.Stloc_1 = 11,
  ILOpCode.Stloc_2 = 12, ILOpCode.Stloc_3 = 13, ILOpCode.Ldarg_S = 14, ILOpCode.Ldarga_S = 15,
  ILOpCode.Starg_S = 16, ILOpCode.Ldloc_S = 17, ILOpCode.Ldloca_S = 18, ILOpCode.Stloc_S = 19,
  ILOpCode.Ldnull = 20, ILOpCode.Ldc_I4_M1 = 21, ILOpCode.Ldc_I4_0 = 22, ILOpCode.Ldc_I4_1 = 23,
  ILOpCode.Ldc_I4_2 = 24, ILOpCode.Ldc_I4_3 = 25, ILOpCode.Ldc_I4_4 = 26, ILOpCode.Ldc_I4_5 = 27,
  ILOpCode.Ldc_I4_6 = 28, ILOpCode.Ldc_I4_7 = 29, ILOpCode.Ldc_I4_8 = 30, ILOpCode.Ldc_I4_S = 31,
  ILOpCode.Ldc_I4 = 32, ILOpCode.Ldc_I8 = 33, ILOpCode.Ldc_R4 = 34, ILOpCode.Ldc_R8 = 35,
  ILOpCode.Dup = 37, ILOpCode.Pop = 38, ILOpCode.Jmp = 39, ILOpCode.Call = 40,
  ILOpCode.Calli = 41, ILOpCode.Ret = 42, ILOpCode.Br_S = 43, ILOpCode.Brfalse_S = 44,
  ILOpCode.Brtrue_S = 45, ILOpCode.Beq_S = 46, ILOpCode.Bge_S = 47, ILOpCode.Bgt_S = 48,
  ILOpCode.Ble_S = 49, ILOpCode.Blt_S = 50, ILOpCode.Bne_Un_S = 51, ILOpCode.Bge_Un_S = 52,
  ILOpCode.Bgt_Un_S = 53, ILOpCode.Ble_Un_S = 54, ILOpCode.Blt_Un_S = 55, ILOpCode.Br = 56,
  ILOpCode.Brfalse = 57, ILOpCode.Brtrue = 58, ILOpCode.Beq = 59, ILOpCode.Bge = 60,
  ILOpCode.Bgt = 61, ILOpCode.Ble = 62, ILOpCode.Blt = 63, ILOpCode.Bne_Un = 64,
  ILOpCode.Bge_Un = 65, ILOpCode.Bgt_Un = 66, ILOpCode.Ble_Un = 67, ILOpCode.Blt_Un = 68,
  ILOpCode.Switch = 69, ILOpCode.Ldind_I1 = 70, ILOpCode.Ldind_U1 = 71, ILOpCode.Ldind_I2 = 72,
  ILOpCode.Ldind_U2 = 73, ILOpCode.Ldind_I4 = 74, ILOpCode.Ldind_U4 = 75, ILOpCode.Ldind_I8 = 76,
  ILOpCode.Ldind_I = 77, ILOpCode.Ldind_R4 = 78, ILOpCode.Ldind_R8 = 79, ILOpCode.Ldind_Ref = 80,
  ILOpCode.Stind_Ref = 81, ILOpCode.Stind_I1 = 82, ILOpCode.Stind_I2 = 83, ILOpCode.Stind_I4 = 84,
  ILOpCode.Stind_I8 = 85, ILOpCode.Stind_R4 = 86, ILOpCode.Stind_R8 = 87, ILOpCode.Add = 88,
  ILOpCode.Sub = 89, ILOpCode.Mul = 90, ILOpCode.Div = 91, ILOpCode.Div_Un = 92,
  ILOpCode.Rem = 93, ILOpCode.Rem_Un = 94, ILOpCode.And = 95, ILOpCode.Or = 96,
  ILOpCode.Xor = 97, ILOpCode.Shl = 98, ILOpCode.Shr = 99, ILOpCode.Shr_Un = 100,
  ILOpCode.Neg = 101, ILOpCode.Not = 102, ILOpCode.Conv_I1 = 103, ILOpCode.Conv_I2 = 104,
  ILOpCode.Conv_I4 = 105, ILOpCode.Conv_I8 = 106, ILOpCode.Conv_R4 = 107, ILOpCode.Conv_R8 = 108,
  ILOpCode.Conv_U4 = 109, ILOpCode.Conv_U8 = 110, ILOpCode.Callvirt = 111, ILOpCode.Cpobj = 112,
  ILOpCode.Ldobj = 113, ILOpCode.Ldstr = 114, ILOpCode.Newobj = 115, ILOpCode.Castclass = 116,
  ILOpCode.Isinst = 117, ILOpCode.Conv_R_Un = 118, ILOpCode.Unbox = 121, ILOpCode.Throw = 122,
  ILOpCode.Ldfld = 123, ILOpCode.Ldflda = 124, ILOpCode.Stfld = 125, ILOpCode.Ldsfld = 126,
  ILOpCode.Ldsflda = 127, ILOpCode.Stsfld = 128, ILOpCode.Stobj = 129, ILOpCode.Conv_Ovf_I1_Un = 130,
  ILOpCode.Conv_Ovf_I2_Un = 131, ILOpCode.Conv_Ovf_I4_Un = 132, ILOpCode.Conv_Ovf_I8_Un = 133, ILOpCode.Conv_Ovf_U1_Un = 134,
  ILOpCode.Conv_Ovf_U2_Un = 135, ILOpCode.Conv_Ovf_U4_Un = 136, ILOpCode.Conv_Ovf_U8_Un = 137, ILOpCode.Conv_Ovf_I_Un = 138,
  ILOpCode.Conv_Ovf_U_Un = 139, ILOpCode.Box = 140, ILOpCode.Newarr = 141, ILOpCode.Ldlen = 142,
  ILOpCode.Ldelema = 143, ILOpCode.Ldelem_I1 = 144, ILOpCode.Ldelem_U1 = 145, ILOpCode.Ldelem_I2 = 146,
  ILOpCode.Ldelem_U2 = 147, ILOpCode.Ldelem_I4 = 148, ILOpCode.Ldelem_U4 = 149, ILOpCode.Ldelem_I8 = 150,
  ILOpCode.Ldelem_I = 151, ILOpCode.Ldelem_R4 = 152, ILOpCode.Ldelem_R8 = 153, ILOpCode.Ldelem_Ref = 154,
  ILOpCode.Stelem_I = 155, ILOpCode.Stelem_I1 = 156, ILOpCode.Stelem_I2 = 157, ILOpCode.Stelem_I4 = 158,
  ILOpCode.Stelem_I8 = 159, ILOpCode.Stelem_R4 = 160, ILOpCode.Stelem_R8 = 161, ILOpCode.Stelem_Ref = 162,
  ILOpCode.Ldelem = 163, ILOpCode.Stelem = 164, ILOpCode.Unbox_Any = 165, ILOpCode.Conv_Ovf_I1 = 179,
  ILOpCode.Conv_Ovf_U1 = 180, ILOpCode.Conv_Ovf_I2 = 181, ILOpCode.Conv_Ovf_U2 = 182, ILOpCode.Conv_Ovf_I4 = 183,
  ILOpCode.Conv_Ovf_U4 = 184, ILOpCode.Conv_Ovf_I8 = 185, ILOpCode.Conv_Ovf_U8 = 186, ILOpCode.Refanyval = 194,
  ILOpCode.Ckfinite = 195, ILOpCode.Mkrefany = 198, ILOpCode.Ldtoken = 208, ILOpCode.Conv_U2 = 209,
  ILOpCode.Conv_U1 = 210, ILOpCode.Conv_I = 211, ILOpCode.Conv_Ovf_I = 212, ILOpCode.Conv_Ovf_U = 213,
  ILOpCode.Add_Ovf = 214, ILOpCode.Add_Ovf_Un = 215, ILOpCode.Mul_Ovf = 216, ILOpCode.Mul_Ovf_Un = 217,
  ILOpCode.Sub_Ovf = 218, ILOpCode.Sub_Ovf_Un = 219, ILOpCode.Endfinally = 220, ILOpCode.Leave = 221,
  ILOpCode.Leave_S = 222, ILOpCode.Stind_I = 223, ILOpCode.Conv_U = 224, ILOpCode.Prefix7 = 248,
  ILOpCode.Prefix6 = 249, ILOpCode.Prefix5 = 250, ILOpCode.Prefix4 = 251, ILOpCode.Prefix3 = 252,
  ILOpCode.Prefix2 = 253, ILOpCode.Prefix1 = 254, ILOpCode.Prefixref = 255, ILOpCode.Arglist = 65024,
  ILOpCode.Ceq = 65025, ILOpCode.Cgt = 65026, ILOpCode.Cgt_Un = 65027, ILOpCode.Clt = 65028,
  ILOpCode.Clt_Un = 65029, ILOpCode.Ldftn = 65030, ILOpCode.Ldvirtftn = 65031, ILOpCode.Ldarg = 65033,
  ILOpCode.Ldarga = 65034, ILOpCode.Starg = 65035, ILOpCode.Ldloc = 65036, ILOpCode.Ldloca = 65037,
  ILOpCode.Stloc = 65038, ILOpCode.Localloc = 65039, ILOpCode.Endfilter = 65041, ILOpCode.Unaligned = 65042,
  ILOpCode.Volatile = 65043, ILOpCode.Tail = 65044, ILOpCode.Initobj = 65045, ILOpCode.Constrained = 65046,
  ILOpCode.Cpblk = 65047, ILOpCode.Initblk = 65048, ILOpCode.No = 65049, ILOpCode.Rethrow = 65050,
  ILOpCode.Sizeof = 65052, ILOpCode.Refanytype = 65053, ILOpCode.Readonly = 65054
}
 
enum  VariableRefType { VariableRefType.Argument, VariableRefType.Local, VariableRefType.Stack, VariableRefType.Memory }
 The type of a single variable reference. More...
 

Enumeration Type Documentation

Represent flags of an IL instruction.

Enumerator
None 

None.

Unsigned 

Unsigned operation.

Overflow 

Overflow check requested.

Unchecked 

Unchecked operation.

Unaligned 

Unaligned operation.

Volatile 

Volatile access.

ReadOnly 

ReadOnly access.

Tail 

Tail call.

Constrained 

Constraint virtual-function access.

Represents an instruction type of a single IL instruction.

Enumerator
Nop 

Nop

Break 

Break

Ldarg 

Ldarg

Ldarga 

Ldarga

Starg 

Starg

Ldloc 

Ldloc

Ldloca 

Ldloca

Stloc 

Stloc

Ldnull 

Ldnull

LdI4 

LdI4

LdI8 

LdI8

LdR4 

LdR4

LdR8 

LdR8

Ldstr 

Ldstr

Dup 

Dup

Pop 

Pop

Jmp 

Jmp

Call 

Call

Calli 

Calli

Callvirt 

Callvirt

Ret 

Ret

Br 

Br

Brfalse 

Brfalse

Brtrue 

Brtrue

Beq 
Bne 

Bne

Bge 

Bge

Bgt 

Bgt

Ble 

Ble

Blt 

Blt

Switch 

Switch

Add 

Add

Sub 

Sub

Mul 

Mul

Div 

Div

Rem 

Rem

And 

And

Or 

Or

Xor 

Xor

Shl 

Shl

Shr 

Shr

Neg 

Neg

Not 

Not

Conv 

Conv

Initobj 

Initobj

Newobj 

Newobj

Newarr 

Newarr

Castclass 

Castclass

Isinst 

Isinst

Box 

Box

Unbox 

Unbox

Ldfld 

Ldfld

Ldflda 

Ldflda

Stfld 

Stfld

Ldsfld 

Ldsfld

Ldsflda 

Ldsflda

Stsfld 

Stsfld

Ldobj 

Ldobj

Stobj 

Stobj

Cpobj 

Cpobj

Ldlen 

Ldlen

Ldelem 

Ldelem

Ldelema 

Ldelema

Stelem 

Stelem

Ceq 

Ceq

Cgt 

Cgt

Clt 

Clt

Ldind 

Ldind

Stind 

Stind

Localloc 

Localloc

Cpblk 

Cpblk

Initblk 

Initblk

SizeOf 

SizeOf

LdToken 

LoadToken

Enumerator
Nop 
Break 
Ldarg_0 
Ldarg_1 
Ldarg_2 
Ldarg_3 
Ldloc_0 
Ldloc_1 
Ldloc_2 
Ldloc_3 
Stloc_0 
Stloc_1 
Stloc_2 
Stloc_3 
Ldarg_S 
Ldarga_S 
Starg_S 
Ldloc_S 
Ldloca_S 
Stloc_S 
Ldnull 
Ldc_I4_M1 
Ldc_I4_0 
Ldc_I4_1 
Ldc_I4_2 
Ldc_I4_3 
Ldc_I4_4 
Ldc_I4_5 
Ldc_I4_6 
Ldc_I4_7 
Ldc_I4_8 
Ldc_I4_S 
Ldc_I4 
Ldc_I8 
Ldc_R4 
Ldc_R8 
Dup 
Pop 
Jmp 
Call 
Calli 
Ret 
Br_S 
Brfalse_S 
Brtrue_S 
Beq_S 
Bge_S 
Bgt_S 
Ble_S 
Blt_S 
Bne_Un_S 
Bge_Un_S 
Bgt_Un_S 
Ble_Un_S 
Blt_Un_S 
Br 
Brfalse 
Brtrue 
Beq 
Bge 
Bgt 
Ble 
Blt 
Bne_Un 
Bge_Un 
Bgt_Un 
Ble_Un 
Blt_Un 
Switch 
Ldind_I1 
Ldind_U1 
Ldind_I2 
Ldind_U2 
Ldind_I4 
Ldind_U4 
Ldind_I8 
Ldind_I 
Ldind_R4 
Ldind_R8 
Ldind_Ref 
Stind_Ref 
Stind_I1 
Stind_I2 
Stind_I4 
Stind_I8 
Stind_R4 
Stind_R8 
Add 
Sub 
Mul 
Div 
Div_Un 
Rem 
Rem_Un 
And 
Or 
Xor 
Shl 
Shr 
Shr_Un 
Neg 
Not 
Conv_I1 
Conv_I2 
Conv_I4 
Conv_I8 
Conv_R4 
Conv_R8 
Conv_U4 
Conv_U8 
Callvirt 
Cpobj 
Ldobj 
Ldstr 
Newobj 
Castclass 
Isinst 
Conv_R_Un 
Unbox 
Throw 
Ldfld 
Ldflda 
Stfld 
Ldsfld 
Ldsflda 
Stsfld 
Stobj 
Conv_Ovf_I1_Un 
Conv_Ovf_I2_Un 
Conv_Ovf_I4_Un 
Conv_Ovf_I8_Un 
Conv_Ovf_U1_Un 
Conv_Ovf_U2_Un 
Conv_Ovf_U4_Un 
Conv_Ovf_U8_Un 
Conv_Ovf_I_Un 
Conv_Ovf_U_Un 
Box 
Newarr 
Ldlen 
Ldelema 
Ldelem_I1 
Ldelem_U1 
Ldelem_I2 
Ldelem_U2 
Ldelem_I4 
Ldelem_U4 
Ldelem_I8 
Ldelem_I 
Ldelem_R4 
Ldelem_R8 
Ldelem_Ref 
Stelem_I 
Stelem_I1 
Stelem_I2 
Stelem_I4 
Stelem_I8 
Stelem_R4 
Stelem_R8 
Stelem_Ref 
Ldelem 
Stelem 
Unbox_Any 
Conv_Ovf_I1 
Conv_Ovf_U1 
Conv_Ovf_I2 
Conv_Ovf_U2 
Conv_Ovf_I4 
Conv_Ovf_U4 
Conv_Ovf_I8 
Conv_Ovf_U8 
Refanyval 
Ckfinite 
Mkrefany 
Ldtoken 
Conv_U2 
Conv_U1 
Conv_I 
Conv_Ovf_I 
Conv_Ovf_U 
Add_Ovf 
Add_Ovf_Un 
Mul_Ovf 
Mul_Ovf_Un 
Sub_Ovf 
Sub_Ovf_Un 
Endfinally 
Leave 
Leave_S 
Stind_I 
Conv_U 
Prefix7 
Prefix6 
Prefix5 
Prefix4 
Prefix3 
Prefix2 
Prefix1 
Prefixref 
Arglist 
Ceq 
Cgt 
Cgt_Un 
Clt 
Clt_Un 
Ldftn 
Ldvirtftn 
Ldarg 
Ldarga 
Starg 
Ldloc 
Ldloca 
Stloc 
Localloc 
Endfilter 
Unaligned 
Volatile 
Tail 
Initobj 
Constrained 
Cpblk 
Initblk 
No 
Rethrow 
Sizeof 
Refanytype 
Readonly 

The type of a single variable reference.

Enumerator
Argument 

Represents a reference to a function argument.

Local 

Represents a reference to a local variable.

Stack 

Represents a reference to a stack slot.

Memory 

Represents an abstract memory monad.