/* Table of opcodes for byte codes defined by the Java(TM) virtual
   machine specification.	
   Copyright (C) 1998, 2003 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 2, 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 COPYING.  If not, write to
the Free Software Foundation, 51 Franklin Street, Fifth Floor,
Boston, MA 02110-1301, USA.

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) againt 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)
