| // Copyright (c) 2022, the R8 project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| package com.android.tools.r8.lightir; |
| |
| /** |
| * Constants related to LIR. |
| * |
| * <p>The constants generally follow the bytecode values as defined by the classfile format. |
| */ |
| public interface LIROpcodes { |
| |
| static boolean isOneByteInstruction(int opcode) { |
| assert opcode >= NOP; |
| return opcode <= DCONST_1; |
| } |
| |
| // Instructions maintaining the same opcode as defined in CF. |
| int NOP = 0; |
| int ACONST_NULL = 1; |
| int ICONST_M1 = 2; |
| int ICONST_0 = 3; |
| int ICONST_1 = 4; |
| int ICONST_2 = 5; |
| int ICONST_3 = 6; |
| int ICONST_4 = 7; |
| int ICONST_5 = 8; |
| int LCONST_0 = 9; |
| int LCONST_1 = 10; |
| int FCONST_0 = 11; |
| int FCONST_1 = 12; |
| int FCONST_2 = 13; |
| int DCONST_0 = 14; |
| int DCONST_1 = 15; |
| // int BIPUSH = 16; |
| // int SIPUSH = 17; |
| int LDC = 18; |
| // int ILOAD = 21; |
| // int LLOAD = 22; |
| // int FLOAD = 23; |
| // int DLOAD = 24; |
| // int ALOAD = 25; |
| int IALOAD = 46; |
| int LALOAD = 47; |
| int FALOAD = 48; |
| int DALOAD = 49; |
| int AALOAD = 50; |
| int BALOAD = 51; |
| int CALOAD = 52; |
| int SALOAD = 53; |
| // int ISTORE = 54; |
| // int LSTORE = 55; |
| // int FSTORE = 56; |
| // int DSTORE = 57; |
| // int ASTORE = 58; |
| int IASTORE = 79; |
| int LASTORE = 80; |
| int FASTORE = 81; |
| int DASTORE = 82; |
| int AASTORE = 83; |
| int BASTORE = 84; |
| int CASTORE = 85; |
| int SASTORE = 86; |
| // int POP = 87; |
| // int POP2 = 88; |
| // int DUP = 89; |
| // int DUP_X1 = 90; |
| // int DUP_X2 = 91; |
| // int DUP2 = 92; |
| // int DUP2_X1 = 93; |
| // int DUP2_X2 = 94; |
| // int SWAP = 95; |
| int IADD = 96; |
| int LADD = 97; |
| int FADD = 98; |
| int DADD = 99; |
| int ISUB = 100; |
| int LSUB = 101; |
| int FSUB = 102; |
| int DSUB = 103; |
| int IMUL = 104; |
| int LMUL = 105; |
| int FMUL = 106; |
| int DMUL = 107; |
| int IDIV = 108; |
| int LDIV = 109; |
| int FDIV = 110; |
| int DDIV = 111; |
| int IREM = 112; |
| int LREM = 113; |
| int FREM = 114; |
| int DREM = 115; |
| int INEG = 116; |
| int LNEG = 117; |
| int FNEG = 118; |
| int DNEG = 119; |
| int ISHL = 120; |
| int LSHL = 121; |
| int ISHR = 122; |
| int LSHR = 123; |
| int IUSHR = 124; |
| int LUSHR = 125; |
| int IAND = 126; |
| int LAND = 127; |
| int IOR = 128; |
| int LOR = 129; |
| int IXOR = 130; |
| int LXOR = 131; |
| // int IINC = 132; |
| int I2L = 133; |
| int I2F = 134; |
| int I2D = 135; |
| int L2I = 136; |
| int L2F = 137; |
| int L2D = 138; |
| int F2I = 139; |
| int F2L = 140; |
| int F2D = 141; |
| int D2I = 142; |
| int D2L = 143; |
| int D2F = 144; |
| int I2B = 145; |
| int I2C = 146; |
| int I2S = 147; |
| int LCMP = 148; |
| int FCMPL = 149; |
| int FCMPG = 150; |
| int DCMPL = 151; |
| int DCMPG = 152; |
| int IFEQ = 153; |
| int IFNE = 154; |
| int IFLT = 155; |
| int IFGE = 156; |
| int IFGT = 157; |
| int IFLE = 158; |
| int IF_ICMPEQ = 159; |
| int IF_ICMPNE = 160; |
| int IF_ICMPLT = 161; |
| int IF_ICMPGE = 162; |
| int IF_ICMPGT = 163; |
| int IF_ICMPLE = 164; |
| int IF_ACMPEQ = 165; |
| int IF_ACMPNE = 166; |
| int GOTO = 167; |
| // int JSR = 168; |
| // int RET = 169; |
| int TABLESWITCH = 170; |
| int LOOKUPSWITCH = 171; |
| int IRETURN = 172; |
| int LRETURN = 173; |
| int FRETURN = 174; |
| int DRETURN = 175; |
| int ARETURN = 176; |
| int RETURN = 177; |
| int GETSTATIC = 178; |
| int PUTSTATIC = 179; |
| int GETFIELD = 180; |
| int PUTFIELD = 181; |
| int INVOKEVIRTUAL = 182; |
| int INVOKESPECIAL = 183; |
| int INVOKESTATIC = 184; |
| int INVOKEINTERFACE = 185; |
| int INVOKEDYNAMIC = 186; |
| int NEW = 187; |
| int NEWARRAY = 188; |
| int ANEWARRAY = 189; |
| int ARRAYLENGTH = 190; |
| int ATHROW = 191; |
| int CHECKCAST = 192; |
| int INSTANCEOF = 193; |
| int MONITORENTER = 194; |
| int MONITOREXIT = 195; |
| int MULTIANEWARRAY = 197; |
| int IFNULL = 198; |
| int IFNONNULL = 199; |
| |
| // Non-CF instructions. |
| int ICONST = 200; |
| int LCONST = 201; |
| int FCONST = 202; |
| int DCONST = 203; |
| } |