/*
** $Id: lopcodes.c,v 1.19 2002/05/13 13:09:00 roberto Exp roberto $
** extracted automatically from lopcodes.h by mkprint.lua
** DO NOT EDIT
** See Copyright Notice in lua.h
*/


#include "lua.h"

#include "lobject.h"
#include "lopcodes.h"


#ifdef LUA_OPNAMES

const char *const luaP_opnames[] = {
  "MOVE",
  "LOADK",
  "LOADBOOL",
  "LOADNIL",
  "GETUPVAL",
  "GETGLOBAL",
  "GETTABLE",
  "SETGLOBAL",
  "SETUPVAL",
  "SETTABLE",
  "NEWTABLE",
  "SELF",
  "ADD",
  "SUB",
  "MUL",
  "DIV",
  "POW",
  "UNM",
  "NOT",
  "CONCAT",
  "JMP",
  "EQ",
  "LT",
  "LE",
  "GT",
  "GE",
  "TEST",
  "CALL",
  "TAILCALL",
  "RETURN",
  "FORLOOP",
  "TFORLOOP",
  "TFORPREP",
  "SETLIST",
  "SETLISTO",
  "CLOSE",
  "CLOSURE"
};

#endif

#define opmode(t,x,b,c,sa,k,m) (((t)<<OpModeT) | \
   ((b)<<OpModeBreg) | ((c)<<OpModeCreg) | \
   ((sa)<<OpModesetA) | ((k)<<OpModeK) | (m))


const lu_byte luaP_opmodes[NUM_OPCODES] = {
/*       T _ B C sA K mode		   opcode    */
  opmode(0,0,1,0, 1,0,iABC)		/* OP_MOVE */
 ,opmode(0,0,0,0, 1,1,iABx)		/* OP_LOADK */
 ,opmode(0,0,0,0, 1,0,iABC)		/* OP_LOADBOOL */
 ,opmode(0,0,1,0, 1,0,iABC)		/* OP_LOADNIL */
 ,opmode(0,0,0,0, 1,0,iABC)		/* OP_GETUPVAL */
 ,opmode(0,0,0,0, 1,1,iABx)		/* OP_GETGLOBAL */
 ,opmode(0,0,1,1, 1,0,iABC)		/* OP_GETTABLE */
 ,opmode(0,0,0,0, 0,1,iABx)		/* OP_SETGLOBAL */
 ,opmode(0,0,0,0, 0,0,iABC)		/* OP_SETUPVAL */
 ,opmode(0,0,1,1, 0,0,iABC)		/* OP_SETTABLE */
 ,opmode(0,0,0,0, 1,0,iABC)		/* OP_NEWTABLE */
 ,opmode(0,0,1,1, 1,0,iABC)		/* OP_SELF */
 ,opmode(0,0,1,1, 1,0,iABC)		/* OP_ADD */
 ,opmode(0,0,1,1, 1,0,iABC)		/* OP_SUB */
 ,opmode(0,0,1,1, 1,0,iABC)		/* OP_MUL */
 ,opmode(0,0,1,1, 1,0,iABC)		/* OP_DIV */
 ,opmode(0,0,1,1, 1,0,iABC)		/* OP_POW */
 ,opmode(0,0,1,0, 1,0,iABC)		/* OP_UNM */
 ,opmode(0,0,1,0, 1,0,iABC)		/* OP_NOT */
 ,opmode(0,0,1,1, 1,0,iABC)		/* OP_CONCAT */
 ,opmode(0,0,0,0, 0,0,iAsBx)		/* OP_JMP */
 ,opmode(1,0,0,1, 0,0,iABC)		/* OP_EQ */
 ,opmode(1,0,0,1, 0,0,iABC)		/* OP_LT */
 ,opmode(1,0,0,1, 0,0,iABC)		/* OP_LE */
 ,opmode(1,0,0,1, 0,0,iABC)		/* OP_GT */
 ,opmode(1,0,0,1, 0,0,iABC)		/* OP_GE */
 ,opmode(1,0,0,1, 1,0,iABC)		/* OP_TEST */
 ,opmode(0,0,0,0, 0,0,iABC)		/* OP_CALL */
 ,opmode(0,0,0,0, 0,0,iABC)		/* OP_TAILCALL */
 ,opmode(0,0,0,0, 0,0,iABC)		/* OP_RETURN */
 ,opmode(0,0,0,0, 0,0,iAsBx)		/* OP_FORLOOP */
 ,opmode(1,0,0,0, 0,0,iABC)		/* OP_TFORLOOP */
 ,opmode(0,0,0,0, 0,0,iAsBx)		/* OP_TFORPREP */
 ,opmode(0,0,0,0, 0,0,iABx)		/* OP_SETLIST */
 ,opmode(0,0,0,0, 0,0,iABx)		/* OP_SETLISTO */
 ,opmode(0,0,0,0, 0,0,iABC)		/* OP_CLOSE */
 ,opmode(0,0,0,0, 1,0,iABx)		/* OP_CLOSURE */
};

