// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
namespace Internal.IL
{
/// <summary>
/// An enumeration of all of the operation codes that are used in the CLI Common Intermediate Language.
/// </summary>
public enum ILOpcode
{
nop = 0x00,
break_ = 0x01,
ldarg_0 = 0x02,
ldarg_1 = 0x03,
ldarg_2 = 0x04,
ldarg_3 = 0x05,
ldloc_0 = 0x06,
ldloc_1 = 0x07,
ldloc_2 = 0x08,
ldloc_3 = 0x09,
stloc_0 = 0x0a,
stloc_1 = 0x0b,
stloc_2 = 0x0c,
stloc_3 = 0x0d,
ldarg_s = 0x0e,
ldarga_s = 0x0f,
starg_s = 0x10,
ldloc_s = 0x11,
ldloca_s = 0x12,
stloc_s = 0x13,
ldnull = 0x14,
ldc_i4_m1 = 0x15,
ldc_i4_0 = 0x16,
ldc_i4_1 = 0x17,
ldc_i4_2 = 0x18,
ldc_i4_3 = 0x19,
ldc_i4_4 = 0x1a,
ldc_i4_5 = 0x1b,
ldc_i4_6 = 0x1c,
ldc_i4_7 = 0x1d,
ldc_i4_8 = 0x1e,
ldc_i4_s = 0x1f,
ldc_i4 = 0x20,
ldc_i8 = 0x21,
ldc_r4 = 0x22,
ldc_r8 = 0x23,
dup = 0x25,
pop = 0x26,
jmp = 0x27,
call = 0x28,
calli = 0x29,
ret = 0x2a,
br_s = 0x2b,
brfalse_s = 0x2c,
brtrue_s = 0x2d,
beq_s = 0x2e,
bge_s = 0x2f,
bgt_s = 0x30,
ble_s = 0x31,
blt_s = 0x32,
bne_un_s = 0x33,
bge_un_s = 0x34,
bgt_un_s = 0x35,
ble_un_s = 0x36,
blt_un_s = 0x37,
br = 0x38,
brfalse = 0x39,
brtrue = 0x3a,
beq = 0x3b,
bge = 0x3c,
bgt = 0x3d,
ble = 0x3e,
blt = 0x3f,
bne_un = 0x40,
bge_un = 0x41,
bgt_un = 0x42,
ble_un = 0x43,
blt_un = 0x44,
switch_ = 0x45,
ldind_i1 = 0x46,
ldind_u1 = 0x47,
ldind_i2 = 0x48,
ldind_u2 = 0x49,
ldind_i4 = 0x4a,
ldind_u4 = 0x4b,
ldind_i8 = 0x4c,
ldind_i = 0x4d,
ldind_r4 = 0x4e,
ldind_r8 = 0x4f,
ldind_ref = 0x50,
stind_ref = 0x51,
stind_i1 = 0x52,
stind_i2 = 0x53,
stind_i4 = 0x54,
stind_i8 = 0x55,
stind_r4 = 0x56,
stind_r8 = 0x57,
add = 0x58,
sub = 0x59,
mul = 0x5a,
div = 0x5b,
div_un = 0x5c,
rem = 0x5d,
rem_un = 0x5e,
and = 0x5f,
or = 0x60,
xor = 0x61,
shl = 0x62,
shr = 0x63,
shr_un = 0x64,
neg = 0x65,
not = 0x66,
conv_i1 = 0x67,
conv_i2 = 0x68,
conv_i4 = 0x69,
conv_i8 = 0x6a,
conv_r4 = 0x6b,
conv_r8 = 0x6c,
conv_u4 = 0x6d,
conv_u8 = 0x6e,
callvirt = 0x6f,
cpobj = 0x70,
ldobj = 0x71,
ldstr = 0x72,
newobj = 0x73,
castclass = 0x74,
isinst = 0x75,
conv_r_un = 0x76,
unbox = 0x79,
throw_ = 0x7a,
ldfld = 0x7b,
ldflda = 0x7c,
stfld = 0x7d,
ldsfld = 0x7e,
ldsflda = 0x7f,
stsfld = 0x80,
stobj = 0x81,
conv_ovf_i1_un = 0x82,
conv_ovf_i2_un = 0x83,
conv_ovf_i4_un = 0x84,
conv_ovf_i8_un = 0x85,
conv_ovf_u1_un = 0x86,
conv_ovf_u2_un = 0x87,
conv_ovf_u4_un = 0x88,
conv_ovf_u8_un = 0x89,
conv_ovf_i_un = 0x8a,
conv_ovf_u_un = 0x8b,
box = 0x8c,
newarr = 0x8d,
ldlen = 0x8e,
ldelema = 0x8f,
ldelem_i1 = 0x90,
ldelem_u1 = 0x91,
ldelem_i2 = 0x92,
ldelem_u2 = 0x93,
ldelem_i4 = 0x94,
ldelem_u4 = 0x95,
ldelem_i8 = 0x96,
ldelem_i = 0x97,
ldelem_r4 = 0x98,
ldelem_r8 = 0x99,
ldelem_ref = 0x9a,
stelem_i = 0x9b,
stelem_i1 = 0x9c,
stelem_i2 = 0x9d,
stelem_i4 = 0x9e,
stelem_i8 = 0x9f,
stelem_r4 = 0xa0,
stelem_r8 = 0xa1,
stelem_ref = 0xa2,
ldelem = 0xa3,
stelem = 0xa4,
unbox_any = 0xa5,
conv_ovf_i1 = 0xb3,
conv_ovf_u1 = 0xb4,
conv_ovf_i2 = 0xb5,
conv_ovf_u2 = 0xb6,
conv_ovf_i4 = 0xb7,
conv_ovf_u4 = 0xb8,
conv_ovf_i8 = 0xb9,
conv_ovf_u8 = 0xba,
refanyval = 0xc2,
ckfinite = 0xc3,
mkrefany = 0xc6,
ldtoken = 0xd0,
conv_u2 = 0xd1,
conv_u1 = 0xd2,
conv_i = 0xd3,
conv_ovf_i = 0xd4,
conv_ovf_u = 0xd5,
add_ovf = 0xd6,
add_ovf_un = 0xd7,
mul_ovf = 0xd8,
mul_ovf_un = 0xd9,
sub_ovf = 0xda,
sub_ovf_un = 0xdb,
endfinally = 0xdc,
leave = 0xdd,
leave_s = 0xde,
stind_i = 0xdf,
conv_u = 0xe0,
prefix1 = 0xfe,
arglist = 0x100,
ceq = 0x101,
cgt = 0x102,
cgt_un = 0x103,
clt = 0x104,
clt_un = 0x105,
ldftn = 0x106,
ldvirtftn = 0x107,
ldarg = 0x109,
ldarga = 0x10a,
starg = 0x10b,
ldloc = 0x10c,
ldloca = 0x10d,
stloc = 0x10e,
localloc = 0x10f,
endfilter = 0x111,
unaligned = 0x112,
volatile_ = 0x113,
tail = 0x114,
initobj = 0x115,
constrained = 0x116,
cpblk = 0x117,
initblk = 0x118,
no = 0x119,
rethrow = 0x11a,
sizeof_ = 0x11c,
refanytype = 0x11d,
readonly_ = 0x11e,
}
}