/* Table of opcodes for byte codes defined by the Java(TM) virtual
   machine specification.	
   Copyright (C) 1998-2013 Free Software Foundation, Inc.

This file is part of GCC.

GCC is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 3, or (at your option)
any later version.

GCC is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with GCC; see the file COPYING3.  If not see
<http://www.gnu.org/licenses/>.

Java and all Java-based marks are trademarks or registered trademarks
of Sun Microsystems, Inc. in the United States and other countries.
The Free Software Foundation is independent of Sun Microsystems, Inc.

Written by Per Bothner <bothner@cygnus.com>, February 1996.
*/

/* JAVAOP (OPNAME, OPCODE, OPKIND, OPERAND_TYPE, OPERAND_VALUE), where:
	OPNAME is the name of the opcode.
	OPCODE is the 1-byte opcode value.
	OPKIND is the kind of operation.
	OPERAND_TYPE is the type operands affected.
	OPERAND_VALUE tells where to get the value.  (Its meaning
	  depends on OPKIND.) */

/* Various macro used in OPERAND_VALUE:
IMMEDIATE_s1:  An immediate signed 1-byte value in the byte-code stream.
IMMEDIATE_s2:  An immediate signed 2-byte value in the byte-code stream.
IMMEDIATE_u1:  An immediate unsigned 1-byte value in the byte-code stream.
IMMEDIATE_u2:  An immediate unsigned 2-byte value in the byte-code stream.

CONST_INDEX_1:  An immediate unsigned 1-byte index into the constant pool.
CONST_INDEX_2:  An immediate unsigned 2-byte index into the constant pool.
*/

/* More specifically, this is the meaning of the various OPKINDs:

BINOP:	binary operation
	OPERAND_TYPE is the argument type.
	OPERAND_VALUE is PLUS, MINUS, MULT, TRUNC_DIV, RDIV, REM,
	  LSHIFT, RSHIFT, URSHIFT, BIT_AND, BIT_IOR, BIT_XOR,
	  COMPARE, COMPARE_L, or COMPARE_G.

UNOP:	unary operation
	OPERAND_TYPE is the argument type.
	OPERAND_VALUE is NEG.

INVOKE: invoke operations
	OPERAND_TYPE is VIRTUAL, SPECIAL, STATIC, or INTERFACE.
	OPERAND_VALUE is 1 if interface, 0 otherwise.

OBJECT:	new, checkcast, instanceof
	OPERAND_TYPE is PTR.
	OPERAND_VALUE is NEW, CHECKCAST, or INSTANCEOF.

BRANCH: branch operations
	OPERAND_TYPE is GOTO, CALL, or RETURN.
	OPERAND_VALUE is IMMEDIATE_s2, VAR_INDEX_1, IMMEDIATE_s4,
	  or VAR_INDEX_2.

STACK:  Various stack operations.

PUSHC:  Push a constant onto the operand stack.
	OPERAND_VALUE maybe be the value to push,
	or IMMEDIATE_s1 or IMMEDIATE_s2 if the constant is immediate,
	or CONST_INDEX_1 or CONST_INDEX_2 for a constant pool index.

LOAD: Push a value from a local variable onto the operand stack.
	OPERAND_VALUE is the index of the local variable in the current
	Java frame.  It can be a literal, or IMMEDIATE_i2.

CONVERT: Convert top of stack value from one type to another.
	OPERAND_TYPE is the argument type.
	OPERAND_VALUE is the result type.

TEST: Compares an integer (popped from the stack) against zero.
	If the test (in OPERAND_VALUE) is true, goto a relative
	offset given by the next two bytes.

COND:  Compares two values (popped from the stack) against each other.
	If the test (in OPERAND_VALUE) is true, goto a relative
	offset given by the next two bytes.

SWITCH:
	OPERAND_VALUE is either TABLE or LOOKUP.

ARRAY:
	OPERAND_VALUE is LOAD, STORE, LENGTH, or NEW.

FIELD: Extracts from or stores into a field.
	OPERAND_TYPE is 1 for a static field, 0 for a regular field.
	OPERAND_VALUE is 1 for a put operation, 0 for a get operation.

SPECIAL:
	Random bunch of opcodes.

*/

JAVAOP (nop,             0, STACK,   POP,    0)
JAVAOP (aconst_null,     1, PUSHC,   PTR,    0)
JAVAOP (iconst_m1,       2, PUSHC,   INT,    -1)
JAVAOP (iconst_0,        3, PUSHC,   INT,    0)
JAVAOP (iconst_1,        4, PUSHC,   INT,    1)
JAVAOP (iconst_2,        5, PUSHC,   INT,    2)
JAVAOP (iconst_3,        6, PUSHC,   INT,    3)
JAVAOP (iconst_4,        7, PUSHC,   INT,    4)
JAVAOP (iconst_5,        8, PUSHC,   INT,    5)
JAVAOP (lconst_0,        9, PUSHC,   LONG,   0)
JAVAOP (lconst_1,       10, PUSHC,   LONG,   1)
JAVAOP (fconst_0,       11, PUSHC,   FLOAT,  0)
JAVAOP (fconst_1,       12, PUSHC,   FLOAT,  1)
JAVAOP (fconst_2,       13, PUSHC,   FLOAT,  2)
JAVAOP (dconst_0,       14, PUSHC,   DOUBLE, 0)
JAVAOP (dconst_1,       15, PUSHC,   DOUBLE, 1)
JAVAOP (bipush,         16, PUSHC,   INT,    IMMEDIATE_s1)
JAVAOP (sipush,         17, PUSHC,   INT,    IMMEDIATE_s2)
JAVAOP (ldc,            18, PUSHC,   INT,    CONST_INDEX_1)
JAVAOP (ldc_w,          19, PUSHC,   INT,    CONST_INDEX_2)
JAVAOP (ldc2_w,         20, PUSHC,   LONG,   CONST_INDEX_2)
JAVAOP (iload,          21, LOAD,    INT,    IMMEDIATE_u1)
JAVAOP (lload,          22, LOAD,    LONG,   IMMEDIATE_u1)
JAVAOP (fload,          23, LOAD,    FLOAT,  IMMEDIATE_u1)
JAVAOP (dload,          24, LOAD,    DOUBLE, IMMEDIATE_u1)
JAVAOP (aload,          25, LOAD,    PTR,    IMMEDIATE_u1)
JAVAOP (iload_0,        26, LOAD,    INT,    0)
JAVAOP (iload_1,        27, LOAD,    INT,    1)
JAVAOP (iload_2,        28, LOAD,    INT,    2)
JAVAOP (iload_3,        29, LOAD,    INT,    3)
JAVAOP (lload_0,        30, LOAD,    LONG,   0)
JAVAOP (lload_1,        31, LOAD,    LONG,   1)
JAVAOP (lload_2,        32, LOAD,    LONG,   2)
JAVAOP (lload_3,        33, LOAD,    LONG,   3)
JAVAOP (fload_0,        34, LOAD,    FLOAT,  0)
JAVAOP (fload_1,        35, LOAD,    FLOAT,  1)
JAVAOP (fload_2,        36, LOAD,    FLOAT,  2)
JAVAOP (fload_3,        37, LOAD,    FLOAT,  3)
JAVAOP (dload_0,        38, LOAD,    DOUBLE, 0)
JAVAOP (dload_1,        39, LOAD,    DOUBLE, 1)
JAVAOP (dload_2,        40, LOAD,    DOUBLE, 2)
JAVAOP (dload_3,        41, LOAD,    DOUBLE, 3)
JAVAOP (aload_0,        42, LOAD,    PTR,    0)
JAVAOP (aload_1,        43, LOAD,    PTR,    1)
JAVAOP (aload_2,        44, LOAD,    PTR,    2)
JAVAOP (aload_3,        45, LOAD,    PTR,    3)
JAVAOP (iaload,         46, ARRAY,   INT,    LOAD)
JAVAOP (laload,         47, ARRAY,   LONG,   LOAD)
JAVAOP (faload,         48, ARRAY,   FLOAT,  LOAD)
JAVAOP (daload,         49, ARRAY,   DOUBLE, LOAD)
JAVAOP (aaload,         50, ARRAY,   PTR,    LOAD)
JAVAOP (baload,         51, ARRAY,   BYTE,   LOAD)
JAVAOP (caload,         52, ARRAY,   CHAR,   LOAD)
JAVAOP (saload,         53, ARRAY,   SHORT,  LOAD)
JAVAOP (istore,         54, STORE,   INT,    IMMEDIATE_u1)
JAVAOP (lstore,         55, STORE,   LONG,   IMMEDIATE_u1)
JAVAOP (fstore,         56, STORE,   FLOAT,  IMMEDIATE_u1)
JAVAOP (dstore,         57, STORE,   DOUBLE, IMMEDIATE_u1)
JAVAOP (astore,         58, STORE,   PTR,    IMMEDIATE_u1)
JAVAOP (istore_0,       59, STORE,   INT,    0)
JAVAOP (istore_1,       60, STORE,   INT,    1)
JAVAOP (istore_2,       61, STORE,   INT,    2)
JAVAOP (istore_3,       62, STORE,   INT,    3)
JAVAOP (lstore_0,       63, STORE,   LONG,   0)
JAVAOP (lstore_1,       64, STORE,   LONG,   1)
JAVAOP (lstore_2,       65, STORE,   LONG,   2)
JAVAOP (lstore_3,       66, STORE,   LONG,   3)
JAVAOP (fstore_0,       67, STORE,   FLOAT,  0)
JAVAOP (fstore_1,       68, STORE,   FLOAT,  1)
JAVAOP (fstore_2,       69, STORE,   FLOAT,  2)
JAVAOP (fstore_3,       70, STORE,   FLOAT,  3)
JAVAOP (dstore_0,       71, STORE,   DOUBLE, 0)
JAVAOP (dstore_1,       72, STORE,   DOUBLE, 1)
JAVAOP (dstore_2,       73, STORE,   DOUBLE, 2)
JAVAOP (dstore_3,       74, STORE,   DOUBLE, 3)
JAVAOP (astore_0,       75, STORE,   PTR,    0)
JAVAOP (astore_1,       76, STORE,   PTR,    1)
JAVAOP (astore_2,       77, STORE,   PTR,    2)
JAVAOP (astore_3,       78, STORE,   PTR,    3)
JAVAOP (iastore,        79, ARRAY,   INT,    STORE)
JAVAOP (lastore,        80, ARRAY,   LONG,   STORE)
JAVAOP (fastore,        81, ARRAY,   FLOAT,  STORE)
JAVAOP (dastore,        82, ARRAY,   DOUBLE, STORE)
JAVAOP (aastore,        83, ARRAY,   PTR,    STORE)
JAVAOP (bastore,        84, ARRAY,   BYTE,   STORE)
JAVAOP (castore,        85, ARRAY,   CHAR,   STORE)
JAVAOP (sastore,        86, ARRAY,   SHORT,  STORE)
JAVAOP (pop,            87, STACK,   POP,    1)
JAVAOP (pop2,           88, STACK,   POP,    2)
JAVAOP (dup,            89, STACK,   DUP,    1)
JAVAOP (dup_x1,         90, STACK,   DUPx1,  1)
JAVAOP (dup_x2,         91, STACK,   DUPx2,  1)
JAVAOP (dup2,           92, STACK,   DUP,    2)
JAVAOP (dup2_x1,        93, STACK,   DUPx1,  2)
JAVAOP (dup2_x2,        94, STACK,   DUPx2,  2)
JAVAOP (swap,           95, STACK,   SWAP,   0)
JAVAOP (iadd,           96, BINOP,   INT,    PLUS)
JAVAOP (ladd,           97, BINOP,   LONG,   PLUS)
JAVAOP (fadd,           98, BINOP,   FLOAT,  PLUS)
JAVAOP (dadd,           99, BINOP,   DOUBLE, PLUS)
JAVAOP (isub,          100, BINOP,   INT,    MINUS)
JAVAOP (lsub,          101, BINOP,   LONG,   MINUS)
JAVAOP (fsub,          102, BINOP,   FLOAT,  MINUS)
JAVAOP (dsub,          103, BINOP,   DOUBLE, MINUS)
JAVAOP (imul,          104, BINOP,   INT,    MULT)
JAVAOP (lmul,          105, BINOP,   LONG,   MULT)
JAVAOP (fmul,          106, BINOP,   FLOAT,  MULT)
JAVAOP (dmul,          107, BINOP,   DOUBLE, MULT)
JAVAOP (idiv,          108, BINOP,   INT,    TRUNC_DIV)
JAVAOP (ldiv,          109, BINOP,   LONG,   TRUNC_DIV)
JAVAOP (fdiv,          110, BINOP,   FLOAT,  RDIV)
JAVAOP (ddiv,          111, BINOP,   DOUBLE, RDIV)
JAVAOP (irem,          112, BINOP,   INT,    REM)
JAVAOP (lrem,          113, BINOP,   LONG,   REM)
JAVAOP (frem,          114, BINOP,   FLOAT,  REM)
JAVAOP (drem,          115, BINOP,   DOUBLE, REM)
JAVAOP (ineg,          116, UNOP,    INT,    NEG)
JAVAOP (lneg,          117, UNOP,    LONG,   NEG)
JAVAOP (fneg,          118, UNOP,    FLOAT,  NEG)
JAVAOP (dneg,          119, UNOP,    DOUBLE, NEG)
JAVAOP (ishl,          120, BINOP,   INT,    LSHIFT)
JAVAOP (lshl,          121, BINOP,   LONG,   LSHIFT)
JAVAOP (ishr,          122, BINOP,   INT,    RSHIFT)
JAVAOP (lshr,          123, BINOP,   LONG,   RSHIFT)
JAVAOP (iushr,         124, BINOP,   INT,    URSHIFT)
JAVAOP (lushr,         125, BINOP,   LONG,   URSHIFT)
JAVAOP (iand,          126, BINOP,   INT,    BIT_AND)
JAVAOP (land,          127, BINOP,   LONG,   BIT_AND)
JAVAOP (ior,           128, BINOP,   INT,    BIT_IOR)
JAVAOP (lor,           129, BINOP,   LONG,   BIT_IOR)
JAVAOP (ixor,          130, BINOP,   INT,    BIT_XOR)
JAVAOP (lxor,          131, BINOP,   LONG,   BIT_XOR)
JAVAOP (iinc,          132, SPECIAL, INT,    IINC)
JAVAOP (i2l,           133, CONVERT, INT,    LONG)
JAVAOP (i2f,           134, CONVERT, INT,    FLOAT)
JAVAOP (i2d,           135, CONVERT, INT,    DOUBLE)
JAVAOP (l2i,           136, CONVERT, LONG,   INT)
JAVAOP (l2f,           137, CONVERT, LONG,   FLOAT)
JAVAOP (l2d,           138, CONVERT, LONG,   DOUBLE)
JAVAOP (f2i,           139, CONVERT, FLOAT,  INT)
JAVAOP (f2l,           140, CONVERT, FLOAT,  LONG)
JAVAOP (f2d,           141, CONVERT, FLOAT,  DOUBLE)
JAVAOP (d2i,           142, CONVERT, DOUBLE, INT)
JAVAOP (d2l,           143, CONVERT, DOUBLE, LONG)
JAVAOP (d2f,           144, CONVERT, DOUBLE, FLOAT)
JAVAOP (i2b,	       145, CONVERT2, INT,    BYTE)
JAVAOP (i2c,           146, CONVERT2, INT,    CHAR)
JAVAOP (i2s,           147, CONVERT2, INT,    SHORT)
JAVAOP (lcmp,          148, BINOP,   LONG,   COMPARE)
JAVAOP (fcmpl,         149, BINOP,   FLOAT,  COMPARE_L)
JAVAOP (fcmpg,         150, BINOP,   FLOAT,  COMPARE_G)
JAVAOP (dcmpl,         151, BINOP,   DOUBLE, COMPARE_L)
JAVAOP (dcmpg,         152, BINOP,   DOUBLE, COMPARE_G)
JAVAOP (ifeq,          153, TEST,    INT,    EQ)
JAVAOP (ifne,          154, TEST,    INT,    NE)
JAVAOP (iflt,          155, TEST,    INT,    LT)
JAVAOP (ifge,          156, TEST,    INT,    GE)
JAVAOP (ifgt,          157, TEST,    INT,    GT)
JAVAOP (ifle,          158, TEST,    INT,    LE)
JAVAOP (if_icmpeq,     159, COND,    INT,    EQ)
JAVAOP (if_icmpne,     160, COND,    INT,    NE)
JAVAOP (if_icmplt,     161, COND,    INT,    LT)
JAVAOP (if_icmpge,     162, COND,    INT,    GE)
JAVAOP (if_icmpgt,     163, COND,    INT,    GT)
JAVAOP (if_icmple,     164, COND,    INT,    LE)
JAVAOP (if_acmpeq,     165, COND,    PTR,    EQ)
JAVAOP (if_acmpne,     166, COND,    PTR,    NE)
JAVAOP (goto,          167, BRANCH,  GOTO,   IMMEDIATE_s2)
JAVAOP (jsr,           168, JSR,     CALL,   IMMEDIATE_s2)
JAVAOP (ret,           169, RET,     RETURN, VAR_INDEX_1)
JAVAOP (tableswitch,   170, SWITCH,  INT,    TABLE)
JAVAOP (lookupswitch,  171, SWITCH,  INT,    LOOKUP)
JAVAOP (ireturn,       172, RETURN,  INT,    0)
JAVAOP (lreturn,       173, RETURN,  LONG,   0)
JAVAOP (freturn,       174, RETURN,  FLOAT,  0)
JAVAOP (dreturn,       175, RETURN,  DOUBLE, 0)
JAVAOP (areturn,       176, RETURN,  PTR,    0)
JAVAOP (return,        177, RETURN,  VOID,   0)
JAVAOP (getstatic,     178, FIELD,   1,      0)
JAVAOP (putstatic,     179, FIELD,   1,      1)
JAVAOP (getfield,      180, FIELD,   0,      0)
JAVAOP (putfield,      181, FIELD,   0,      1)
JAVAOP (invokevirtual, 182, INVOKE,  VIRTUAL,0)
JAVAOP (invokespecial, 183, INVOKE,  SPECIAL, 0)
JAVAOP (invokestatic,  184, INVOKE,  STATIC, 0)
JAVAOP (invokeinterface,185, INVOKE, INTERFACE, 1)
JAVAOP (invokedynamic, 186, INVOKE,  DYNAMIC, 1)
JAVAOP (new,           187, OBJECT,  PTR,    NEW)
JAVAOP (newarray,      188, ARRAY,   NUM,    NEW)
JAVAOP (anewarray,     189, ARRAY,   PTR,    NEW)
JAVAOP (arraylength,   190, ARRAY,   INT,    LENGTH)
JAVAOP (athrow,        191, SPECIAL, ANY,    THROW)
JAVAOP (checkcast,     192, OBJECT,  PTR,    CHECKCAST)
JAVAOP (instanceof,    193, OBJECT,  PTR,    INSTANCEOF)
JAVAOP (monitorenter,  194, SPECIAL, MONITOR, ENTER)
JAVAOP (monitorexit,   195, SPECIAL, MONITOR, EXIT)
JAVAOP (wide,          196, SPECIAL, ANY,    WIDE)
JAVAOP (multianewarray,197, ARRAY,   MULTI,  NEW)
JAVAOP (ifnull,        198, TEST,    PTR,    EQ)
JAVAOP (ifnonnull,     199, TEST,    PTR,    NE)
JAVAOP (goto_w,        200, BRANCH,  GOTO,   IMMEDIATE_s4)
JAVAOP (jsr_w,         201, JSR,     CALL,   IMMEDIATE_s4)
JAVAOP (breakpoint,    202, SPECIAL, ANY,    BREAK)
JAVAOP (ret_w,         209, RET,     RETURN, VAR_INDEX_2)
JAVAOP (impdep1,       254, IMPL,    ANY,    1)
JAVAOP (impdep2,       255, IMPL,    ANY,    2)
