/* Table of opcodes for byte codes defined by the Java(TM) virtual
   machine specification.	
   Copyright (C) 1998, 2003, 2007 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 (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)
