/*
Copyright (C) 2006 - 2009 Evan Teran
                   eteran@alum.rit.edu

This program 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 of the License, or
(at your option) any later version.

This program 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 this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
*/

#ifndef OPTABLE_FPU_20080314_TCC_
#define OPTABLE_FPU_20080314_TCC_

// this table is for x87 opcodes with a mod < 0xc0
template <int N>
const typename Instruction<N>::OpcodeEntry Instruction<N>::m_OpcodesX87Lo[64] = {

	/* 0xd8 0x00 - 0xd8 0xbf */
	{ "fadd", &Instruction::decode_SingleReal, OP_FADD },
	{ "fmul", &Instruction::decode_SingleReal, OP_FMUL },
	{ "fcom", &Instruction::decode_SingleReal, OP_FCOM },
	{ "fcomp", &Instruction::decode_SingleReal, OP_FCOMP },
	{ "fsub", &Instruction::decode_SingleReal, OP_FSUB },
	{ "fsubr", &Instruction::decode_SingleReal, OP_FSUBR },
	{ "fdiv", &Instruction::decode_SingleReal, OP_FDIV },
	{ "fdivr", &Instruction::decode_SingleReal, OP_FDIVR },
	
	/* 0xd9 0x00 - 0xd9 0xbf */
	{ "fld", &Instruction::decode_SingleReal, OP_FLD },
	{ "invalid", &Instruction::decode_invalid, OP_INVALID },
	{ "fst", &Instruction::decode_SingleReal, OP_FST },
	{ "fstp", &Instruction::decode_SingleReal, OP_FSTP },
	{ "fldenv", &Instruction::decode_M28, OP_FLDENV },	
	{ "fldcw", &Instruction::decode_Mw, OP_FLDCW },
	{ "fstenv", &Instruction::decode_M28, OP_FSTENV },
	{ "fstcw", &Instruction::decode_Mw, OP_FSTCW },
	
	/* 0xda 0x00 - 0xda 0xbf */
	{ "fiadd", &Instruction::decode_ShortInteger, OP_FIADD },
	{ "fimul", &Instruction::decode_ShortInteger, OP_FIMUL },
	{ "ficom", &Instruction::decode_ShortInteger, OP_FICOM },
	{ "ficomp", &Instruction::decode_ShortInteger, OP_FICOMP },
	{ "fisub", &Instruction::decode_ShortInteger, OP_FISUB },
	{ "fisubr", &Instruction::decode_ShortInteger, OP_FISUBR },
	{ "fidiv", &Instruction::decode_ShortInteger, OP_FIDIV },
	{ "fidivr", &Instruction::decode_ShortInteger, OP_FIDIVR },
	
	/* 0xdb 0x00 - 0xdb 0xbf */
	{ "fild", &Instruction::decode_ShortInteger, OP_FILD },
	{ "fisttp", &Instruction::decode_ShortInteger, OP_FISTTP },
	{ "fist", &Instruction::decode_ShortInteger, OP_FIST },
	{ "fistp", &Instruction::decode_ShortInteger, OP_FISTP },
	{ "invalid", &Instruction::decode_invalid, OP_INVALID },
	{ "fld", &Instruction::decode_ExtendedReal, OP_FLD },
	{ "invalid", &Instruction::decode_invalid, OP_INVALID },
	{ "fstp", &Instruction::decode_ExtendedReal, OP_FSTP },
	
	/* 0xdc 0x00 - 0xdc 0xbf */
	{ "fadd", &Instruction::decode_DoubleReal, OP_FADD },
	{ "fmul", &Instruction::decode_DoubleReal, OP_FMUL },
	{ "fcom", &Instruction::decode_DoubleReal, OP_FCOM },
	{ "fcomp", &Instruction::decode_DoubleReal, OP_FCOMP },
	{ "fsub", &Instruction::decode_DoubleReal, OP_FSUB },
	{ "fsubr", &Instruction::decode_DoubleReal, OP_FSUBR },
	{ "fdiv", &Instruction::decode_DoubleReal, OP_FDIV },
	{ "fdivr", &Instruction::decode_DoubleReal, OP_FDIVR },
	
	/* 0xdd 0x00 - 0xdd 0xbf */
	{ "fld", &Instruction::decode_DoubleReal, OP_FLD },
	{ "fisttp", &Instruction::decode_LongInteger, OP_FISTTP },
	{ "fst", &Instruction::decode_DoubleReal, OP_FST },
	{ "fstp", &Instruction::decode_DoubleReal, OP_FSTP },
	{ "frstor", &Instruction::decode_M108, OP_FRSTOR },
	{ "invalid", &Instruction::decode_invalid, OP_INVALID },
	{ "fsave", &Instruction::decode_M108, OP_FSAVE },
	{ "fstsw", &Instruction::decode_Mw, OP_FSTSW },
	
	/* 0xde 0x00 - 0xde 0xbf */
	{ "fiadd", &Instruction::decode_WordInteger, OP_FIADD },
	{ "fimul", &Instruction::decode_WordInteger, OP_FIMUL },
	{ "ficom", &Instruction::decode_WordInteger, OP_FICOM },
	{ "ficomp", &Instruction::decode_WordInteger, OP_FICOMP },
	{ "fisub", &Instruction::decode_WordInteger, OP_FISUB },
	{ "fisubr", &Instruction::decode_WordInteger, OP_FISUBR },
	{ "fidiv", &Instruction::decode_WordInteger, OP_FIDIV },
	{ "fidivr", &Instruction::decode_WordInteger, OP_FIDIVR },
	
	/* 0xdf 0x00 - 0xdf 0xbf */
	{ "fild", &Instruction::decode_WordInteger, OP_FILD },
	{ "fisttp", &Instruction::decode_WordInteger, OP_FISTTP },
	{ "fist", &Instruction::decode_WordInteger, OP_FIST },
	{ "fistp", &Instruction::decode_WordInteger, OP_FISTP },
	{ "fbld", &Instruction::decode_PackedBCD, OP_FBLD },
	{ "fild", &Instruction::decode_LongInteger, OP_FILD },
	{ "fbstp", &Instruction::decode_PackedBCD, OP_FBSTP },
	{ "fistp", &Instruction::decode_LongInteger, OP_FISTP }
};

// this table is for x87 opcodes with a mod >= 0xc0
template <int N>
const typename Instruction<N>::OpcodeEntry Instruction<N>::m_OpcodesX87Hi[0x200] = {

	/* 0xd8 0xc0 - 0xd8 0xff */
	{ "fadd", &Instruction::template decode_ST_STi<0>, OP_FADD },
	{ "fadd", &Instruction::template decode_ST_STi<1>, OP_FADD },
	{ "fadd", &Instruction::template decode_ST_STi<2>, OP_FADD },
	{ "fadd", &Instruction::template decode_ST_STi<3>, OP_FADD },
	{ "fadd", &Instruction::template decode_ST_STi<4>, OP_FADD },
	{ "fadd", &Instruction::template decode_ST_STi<5>, OP_FADD },
	{ "fadd", &Instruction::template decode_ST_STi<6>, OP_FADD },
	{ "fadd", &Instruction::template decode_ST_STi<7>, OP_FADD },
	{ "fmul", &Instruction::template decode_ST_STi<0>, OP_FMUL },
	{ "fmul", &Instruction::template decode_ST_STi<1>, OP_FMUL },
	{ "fmul", &Instruction::template decode_ST_STi<2>, OP_FMUL },
	{ "fmul", &Instruction::template decode_ST_STi<3>, OP_FMUL },
	{ "fmul", &Instruction::template decode_ST_STi<4>, OP_FMUL },
	{ "fmul", &Instruction::template decode_ST_STi<5>, OP_FMUL },
	{ "fmul", &Instruction::template decode_ST_STi<6>, OP_FMUL },
	{ "fmul", &Instruction::template decode_ST_STi<7>, OP_FMUL },
	{ "fcom", &Instruction::template decode_STi<0>, OP_FCOM },
	{ "fcom", &Instruction::template decode_STi<1>, OP_FCOM },
	{ "fcom", &Instruction::template decode_STi<2>, OP_FCOM },
	{ "fcom", &Instruction::template decode_STi<3>, OP_FCOM },
	{ "fcom", &Instruction::template decode_STi<4>, OP_FCOM },
	{ "fcom", &Instruction::template decode_STi<5>, OP_FCOM },
	{ "fcom", &Instruction::template decode_STi<6>, OP_FCOM },
	{ "fcom", &Instruction::template decode_STi<7>, OP_FCOM },
	{ "fcomp", &Instruction::template decode_STi<0>, OP_FCOMP },
	{ "fcomp", &Instruction::template decode_STi<1>, OP_FCOMP },
	{ "fcomp", &Instruction::template decode_STi<2>, OP_FCOMP },
	{ "fcomp", &Instruction::template decode_STi<3>, OP_FCOMP },
	{ "fcomp", &Instruction::template decode_STi<4>, OP_FCOMP },
	{ "fcomp", &Instruction::template decode_STi<5>, OP_FCOMP },
	{ "fcomp", &Instruction::template decode_STi<6>, OP_FCOMP },
	{ "fcomp", &Instruction::template decode_STi<7>, OP_FCOMP },
	{ "fsub", &Instruction::template decode_ST_STi<0>, OP_FSUB },
	{ "fsub", &Instruction::template decode_ST_STi<1>, OP_FSUB },
	{ "fsub", &Instruction::template decode_ST_STi<2>, OP_FSUB },
	{ "fsub", &Instruction::template decode_ST_STi<3>, OP_FSUB },
	{ "fsub", &Instruction::template decode_ST_STi<4>, OP_FSUB },
	{ "fsub", &Instruction::template decode_ST_STi<5>, OP_FSUB },
	{ "fsub", &Instruction::template decode_ST_STi<6>, OP_FSUB },
	{ "fsub", &Instruction::template decode_ST_STi<7>, OP_FSUB },
	{ "fsubr", &Instruction::template decode_ST_STi<0>, OP_FSUBR },
	{ "fsubr", &Instruction::template decode_ST_STi<1>, OP_FSUBR },
	{ "fsubr", &Instruction::template decode_ST_STi<2>, OP_FSUBR },
	{ "fsubr", &Instruction::template decode_ST_STi<3>, OP_FSUBR },
	{ "fsubr", &Instruction::template decode_ST_STi<4>, OP_FSUBR },
	{ "fsubr", &Instruction::template decode_ST_STi<5>, OP_FSUBR },
	{ "fsubr", &Instruction::template decode_ST_STi<6>, OP_FSUBR },
	{ "fsubr", &Instruction::template decode_ST_STi<7>, OP_FSUBR },
	{ "fdiv", &Instruction::template decode_ST_STi<0>, OP_FDIV },
	{ "fdiv", &Instruction::template decode_ST_STi<1>, OP_FDIV },
	{ "fdiv", &Instruction::template decode_ST_STi<2>, OP_FDIV },
	{ "fdiv", &Instruction::template decode_ST_STi<3>, OP_FDIV },
	{ "fdiv", &Instruction::template decode_ST_STi<4>, OP_FDIV },
	{ "fdiv", &Instruction::template decode_ST_STi<5>, OP_FDIV },
	{ "fdiv", &Instruction::template decode_ST_STi<6>, OP_FDIV },
	{ "fdiv", &Instruction::template decode_ST_STi<7>, OP_FDIV },
	{ "fdivr", &Instruction::template decode_ST_STi<0>, OP_FDIVR },
	{ "fdivr", &Instruction::template decode_ST_STi<1>, OP_FDIVR },
	{ "fdivr", &Instruction::template decode_ST_STi<2>, OP_FDIVR },
	{ "fdivr", &Instruction::template decode_ST_STi<3>, OP_FDIVR },
	{ "fdivr", &Instruction::template decode_ST_STi<4>, OP_FDIVR },
	{ "fdivr", &Instruction::template decode_ST_STi<5>, OP_FDIVR },
	{ "fdivr", &Instruction::template decode_ST_STi<6>, OP_FDIVR },
	{ "fdivr", &Instruction::template decode_ST_STi<7>, OP_FDIVR },
	
	/* 0xd9 0xc0 - 0xd9 0xff */
	{ "fld", &Instruction::template decode_STi<0>, OP_FLD },
	{ "fld", &Instruction::template decode_STi<1>, OP_FLD },
	{ "fld", &Instruction::template decode_STi<2>, OP_FLD },
	{ "fld", &Instruction::template decode_STi<3>, OP_FLD },
	{ "fld", &Instruction::template decode_STi<4>, OP_FLD },
	{ "fld", &Instruction::template decode_STi<5>, OP_FLD },
	{ "fld", &Instruction::template decode_STi<6>, OP_FLD },
	{ "fld", &Instruction::template decode_STi<7>, OP_FLD },	
	{ "fxch", &Instruction::template decode_STi<0>, OP_FXCH },
	{ "fxch", &Instruction::template decode_STi<1>, OP_FXCH },
	{ "fxch", &Instruction::template decode_STi<2>, OP_FXCH },
	{ "fxch", &Instruction::template decode_STi<3>, OP_FXCH },
	{ "fxch", &Instruction::template decode_STi<4>, OP_FXCH },
	{ "fxch", &Instruction::template decode_STi<5>, OP_FXCH },
	{ "fxch", &Instruction::template decode_STi<6>, OP_FXCH },
	{ "fxch", &Instruction::template decode_STi<7>, OP_FXCH },
	{ "fnop", &Instruction::decode0, OP_FNOP },
	{ "invalid", &Instruction::decode_invalid, OP_INVALID },
	{ "invalid", &Instruction::decode_invalid, OP_INVALID },
	{ "invalid", &Instruction::decode_invalid, OP_INVALID },
	{ "invalid", &Instruction::decode_invalid, OP_INVALID },
	{ "invalid", &Instruction::decode_invalid, OP_INVALID },
	{ "invalid", &Instruction::decode_invalid, OP_INVALID },
	{ "invalid", &Instruction::decode_invalid, OP_INVALID },
	{ "invalid", &Instruction::decode_invalid, OP_INVALID },
	{ "invalid", &Instruction::decode_invalid, OP_INVALID },
	{ "invalid", &Instruction::decode_invalid, OP_INVALID },
	{ "invalid", &Instruction::decode_invalid, OP_INVALID },
	{ "invalid", &Instruction::decode_invalid, OP_INVALID },
	{ "invalid", &Instruction::decode_invalid, OP_INVALID },
	{ "invalid", &Instruction::decode_invalid, OP_INVALID },
	{ "invalid", &Instruction::decode_invalid, OP_INVALID },
	{ "fchs", &Instruction::decode0, OP_FCHS },
	{ "fabs", &Instruction::decode0, OP_FABS },
	{ "invalid", &Instruction::decode_invalid, OP_INVALID },
	{ "invalid", &Instruction::decode_invalid, OP_INVALID },
	{ "ftst", &Instruction::decode0, OP_FTST },
	{ "fxam", &Instruction::decode0, OP_FXAM },
	{ "invalid", &Instruction::decode_invalid, OP_INVALID },
	{ "invalid", &Instruction::decode_invalid, OP_INVALID },
	{ "fld1", &Instruction::decode0, OP_FLD1 },
	{ "fldl2t", &Instruction::decode0, OP_FLDL2T },
	{ "fldl2e", &Instruction::decode0, OP_FLDL2E },
	{ "fldpi", &Instruction::decode0, OP_FLDPI },
	{ "fldlg2", &Instruction::decode0, OP_FLDLG2 },
	{ "fldln2", &Instruction::decode0, OP_FLDLN2 },
	{ "fldz", &Instruction::decode0, OP_FLDZ },
	{ "invalid", &Instruction::decode_invalid, OP_INVALID },
	{ "f2xm1", &Instruction::decode0, OP_F2XM1 },
	{ "fylsx", &Instruction::decode0, OP_FYLSX },
	{ "fptan", &Instruction::decode0, OP_FPTAN },
	{ "fpatan", &Instruction::decode0, OP_FPATAN },
	{ "fpxtract", &Instruction::decode0, OP_FPXTRACT },
	{ "fprem1", &Instruction::decode0, OP_FPREM1 },
	{ "fdecstp", &Instruction::decode0, OP_FDECSTP },
	{ "fincstp", &Instruction::decode0, OP_FINCSTP },
	{ "fprem", &Instruction::decode0, OP_FPREM },
	{ "fyl2xp1", &Instruction::decode0, OP_FYL2XP1 },
	{ "fsqrt", &Instruction::decode0, OP_FSQRT },
	{ "fsincos", &Instruction::decode0, OP_FSINCOS },
	{ "frndint", &Instruction::decode0, OP_FRNDINT },
	{ "fscale", &Instruction::decode0, OP_FSCALE },
	{ "fsin", &Instruction::decode0, OP_FSIN },
	{ "fcos", &Instruction::decode0, OP_FCOS },
		
	/* 0xda 0xc0 - 0xda 0xff */
	{ "fcmovb", &Instruction::template decode_ST_STi<0>, OP_FCMOVB },
	{ "fcmovb", &Instruction::template decode_ST_STi<1>, OP_FCMOVB },
	{ "fcmovb", &Instruction::template decode_ST_STi<2>, OP_FCMOVB },
	{ "fcmovb", &Instruction::template decode_ST_STi<3>, OP_FCMOVB },
	{ "fcmovb", &Instruction::template decode_ST_STi<4>, OP_FCMOVB },
	{ "fcmovb", &Instruction::template decode_ST_STi<5>, OP_FCMOVB },
	{ "fcmovb", &Instruction::template decode_ST_STi<6>, OP_FCMOVB },
	{ "fcmovb", &Instruction::template decode_ST_STi<7>, OP_FCMOVB },
	{ "fcmove", &Instruction::template decode_ST_STi<0>, OP_FCMOVE },
	{ "fcmove", &Instruction::template decode_ST_STi<1>, OP_FCMOVE },
	{ "fcmove", &Instruction::template decode_ST_STi<2>, OP_FCMOVE },
	{ "fcmove", &Instruction::template decode_ST_STi<3>, OP_FCMOVE },
	{ "fcmove", &Instruction::template decode_ST_STi<4>, OP_FCMOVE },
	{ "fcmove", &Instruction::template decode_ST_STi<5>, OP_FCMOVE },
	{ "fcmove", &Instruction::template decode_ST_STi<6>, OP_FCMOVE },
	{ "fcmove", &Instruction::template decode_ST_STi<7>, OP_FCMOVE },
	{ "fcmovbe", &Instruction::template decode_ST_STi<0>, OP_FCMOVBE },
	{ "fcmovbe", &Instruction::template decode_ST_STi<1>, OP_FCMOVBE },
	{ "fcmovbe", &Instruction::template decode_ST_STi<2>, OP_FCMOVBE },
	{ "fcmovbe", &Instruction::template decode_ST_STi<3>, OP_FCMOVBE },
	{ "fcmovbe", &Instruction::template decode_ST_STi<4>, OP_FCMOVBE },
	{ "fcmovbe", &Instruction::template decode_ST_STi<5>, OP_FCMOVBE },
	{ "fcmovbe", &Instruction::template decode_ST_STi<6>, OP_FCMOVBE },
	{ "fcmovbe", &Instruction::template decode_ST_STi<7>, OP_FCMOVBE },
	{ "fcmovu", &Instruction::template decode_ST_STi<0>, OP_FCMOVU },
	{ "fcmovu", &Instruction::template decode_ST_STi<1>, OP_FCMOVU },
	{ "fcmovu", &Instruction::template decode_ST_STi<2>, OP_FCMOVU },
	{ "fcmovu", &Instruction::template decode_ST_STi<3>, OP_FCMOVU },
	{ "fcmovu", &Instruction::template decode_ST_STi<4>, OP_FCMOVU },
	{ "fcmovu", &Instruction::template decode_ST_STi<5>, OP_FCMOVU },
	{ "fcmovu", &Instruction::template decode_ST_STi<6>, OP_FCMOVU },
	{ "fcmovu", &Instruction::template decode_ST_STi<7>, OP_FCMOVU },
	{ "invalid", &Instruction::decode_invalid, OP_INVALID },
	{ "invalid", &Instruction::decode_invalid, OP_INVALID },
	{ "invalid", &Instruction::decode_invalid, OP_INVALID },
	{ "invalid", &Instruction::decode_invalid, OP_INVALID },
	{ "invalid", &Instruction::decode_invalid, OP_INVALID },
	{ "invalid", &Instruction::decode_invalid, OP_INVALID },
	{ "invalid", &Instruction::decode_invalid, OP_INVALID },
	{ "invalid", &Instruction::decode_invalid, OP_INVALID },	
	{ "invalid", &Instruction::decode_invalid, OP_INVALID },
	{ "fucompp", &Instruction::decode0, OP_FUCOMPP },
	{ "invalid", &Instruction::decode_invalid, OP_INVALID },
	{ "invalid", &Instruction::decode_invalid, OP_INVALID },
	{ "invalid", &Instruction::decode_invalid, OP_INVALID },
	{ "invalid", &Instruction::decode_invalid, OP_INVALID },
	{ "invalid", &Instruction::decode_invalid, OP_INVALID },
	{ "invalid", &Instruction::decode_invalid, OP_INVALID },
	{ "invalid", &Instruction::decode_invalid, OP_INVALID },
	{ "invalid", &Instruction::decode_invalid, OP_INVALID },
	{ "invalid", &Instruction::decode_invalid, OP_INVALID },
	{ "invalid", &Instruction::decode_invalid, OP_INVALID },
	{ "invalid", &Instruction::decode_invalid, OP_INVALID },
	{ "invalid", &Instruction::decode_invalid, OP_INVALID },
	{ "invalid", &Instruction::decode_invalid, OP_INVALID },
	{ "invalid", &Instruction::decode_invalid, OP_INVALID },
	{ "invalid", &Instruction::decode_invalid, OP_INVALID },
	{ "invalid", &Instruction::decode_invalid, OP_INVALID },
	{ "invalid", &Instruction::decode_invalid, OP_INVALID },
	{ "invalid", &Instruction::decode_invalid, OP_INVALID },
	{ "invalid", &Instruction::decode_invalid, OP_INVALID },
	{ "invalid", &Instruction::decode_invalid, OP_INVALID },
	{ "invalid", &Instruction::decode_invalid, OP_INVALID },
	{ "invalid", &Instruction::decode_invalid, OP_INVALID },
	

	/* 0xdb 0xc0 - 0xdb 0xff */
	{ "fcmovnb", &Instruction::template decode_ST_STi<0>, OP_FCMOVNB },
	{ "fcmovnb", &Instruction::template decode_ST_STi<1>, OP_FCMOVNB },
	{ "fcmovnb", &Instruction::template decode_ST_STi<2>, OP_FCMOVNB },
	{ "fcmovnb", &Instruction::template decode_ST_STi<3>, OP_FCMOVNB },
	{ "fcmovnb", &Instruction::template decode_ST_STi<4>, OP_FCMOVNB },
	{ "fcmovnb", &Instruction::template decode_ST_STi<5>, OP_FCMOVNB },
	{ "fcmovnb", &Instruction::template decode_ST_STi<6>, OP_FCMOVNB },
	{ "fcmovnb", &Instruction::template decode_ST_STi<7>, OP_FCMOVNB },
	{ "fcmovne", &Instruction::template decode_ST_STi<0>, OP_FCMOVNE },
	{ "fcmovne", &Instruction::template decode_ST_STi<1>, OP_FCMOVNE },
	{ "fcmovne", &Instruction::template decode_ST_STi<2>, OP_FCMOVNE },
	{ "fcmovne", &Instruction::template decode_ST_STi<3>, OP_FCMOVNE },
	{ "fcmovne", &Instruction::template decode_ST_STi<4>, OP_FCMOVNE },
	{ "fcmovne", &Instruction::template decode_ST_STi<5>, OP_FCMOVNE },
	{ "fcmovne", &Instruction::template decode_ST_STi<6>, OP_FCMOVNE },
	{ "fcmovne", &Instruction::template decode_ST_STi<7>, OP_FCMOVNE },
	{ "fcmovnbe", &Instruction::template decode_ST_STi<0>, OP_FCMOVNBE },
	{ "fcmovnbe", &Instruction::template decode_ST_STi<1>, OP_FCMOVNBE },
	{ "fcmovnbe", &Instruction::template decode_ST_STi<2>, OP_FCMOVNBE },
	{ "fcmovnbe", &Instruction::template decode_ST_STi<3>, OP_FCMOVNBE },
	{ "fcmovnbe", &Instruction::template decode_ST_STi<4>, OP_FCMOVNBE },
	{ "fcmovnbe", &Instruction::template decode_ST_STi<5>, OP_FCMOVNBE },
	{ "fcmovnbe", &Instruction::template decode_ST_STi<6>, OP_FCMOVNBE },
	{ "fcmovnbe", &Instruction::template decode_ST_STi<7>, OP_FCMOVNBE },
	{ "fcmovnu", &Instruction::template decode_ST_STi<0>, OP_FCMOVNU },
	{ "fcmovnu", &Instruction::template decode_ST_STi<1>, OP_FCMOVNU },
	{ "fcmovnu", &Instruction::template decode_ST_STi<2>, OP_FCMOVNU },
	{ "fcmovnu", &Instruction::template decode_ST_STi<3>, OP_FCMOVNU },
	{ "fcmovnu", &Instruction::template decode_ST_STi<4>, OP_FCMOVNU },
	{ "fcmovnu", &Instruction::template decode_ST_STi<5>, OP_FCMOVNU },
	{ "fcmovnu", &Instruction::template decode_ST_STi<6>, OP_FCMOVNU },
	{ "fcmovnu", &Instruction::template decode_ST_STi<7>, OP_FCMOVNU },
	{ "invalid", &Instruction::decode_invalid, OP_INVALID },
	{ "invalid", &Instruction::decode_invalid, OP_INVALID },
	{ "fclex", &Instruction::decode0, OP_FCLEX },
	{ "finit", &Instruction::decode0, OP_FINIT },
	{ "invalid", &Instruction::decode_invalid, OP_INVALID },
	{ "invalid", &Instruction::decode_invalid, OP_INVALID },
	{ "invalid", &Instruction::decode_invalid, OP_INVALID },
	{ "invalid", &Instruction::decode_invalid, OP_INVALID },
	{ "fucomi", &Instruction::template decode_ST_STi<0>, OP_FUCOMI },
	{ "fucomi", &Instruction::template decode_ST_STi<1>, OP_FUCOMI },
	{ "fucomi", &Instruction::template decode_ST_STi<2>, OP_FUCOMI },
	{ "fucomi", &Instruction::template decode_ST_STi<3>, OP_FUCOMI },
	{ "fucomi", &Instruction::template decode_ST_STi<4>, OP_FUCOMI },
	{ "fucomi", &Instruction::template decode_ST_STi<5>, OP_FUCOMI },
	{ "fucomi", &Instruction::template decode_ST_STi<6>, OP_FUCOMI },
	{ "fucomi", &Instruction::template decode_ST_STi<7>, OP_FUCOMI },
	{ "fcomi", &Instruction::template decode_ST_STi<0>, OP_FCOMI },
	{ "fcomi", &Instruction::template decode_ST_STi<1>, OP_FCOMI },
	{ "fcomi", &Instruction::template decode_ST_STi<2>, OP_FCOMI },
	{ "fcomi", &Instruction::template decode_ST_STi<3>, OP_FCOMI },
	{ "fcomi", &Instruction::template decode_ST_STi<4>, OP_FCOMI },
	{ "fcomi", &Instruction::template decode_ST_STi<5>, OP_FCOMI },
	{ "fcomi", &Instruction::template decode_ST_STi<6>, OP_FCOMI },
	{ "fcomi", &Instruction::template decode_ST_STi<7>, OP_FCOMI },
	{ "invalid", &Instruction::decode_invalid, OP_INVALID },
	{ "invalid", &Instruction::decode_invalid, OP_INVALID },
	{ "invalid", &Instruction::decode_invalid, OP_INVALID },
	{ "invalid", &Instruction::decode_invalid, OP_INVALID },
	{ "invalid", &Instruction::decode_invalid, OP_INVALID },
	{ "invalid", &Instruction::decode_invalid, OP_INVALID },
	{ "invalid", &Instruction::decode_invalid, OP_INVALID },
	{ "invalid", &Instruction::decode_invalid, OP_INVALID },
		
	/* 0xdc 0xc0 - 0xdc 0xff */
	{ "fadd", &Instruction::template decode_STi_ST<0>, OP_FADD },
	{ "fadd", &Instruction::template decode_STi_ST<1>, OP_FADD },
	{ "fadd", &Instruction::template decode_STi_ST<2>, OP_FADD },
	{ "fadd", &Instruction::template decode_STi_ST<3>, OP_FADD },
	{ "fadd", &Instruction::template decode_STi_ST<4>, OP_FADD },
	{ "fadd", &Instruction::template decode_STi_ST<5>, OP_FADD },
	{ "fadd", &Instruction::template decode_STi_ST<6>, OP_FADD },
	{ "fadd", &Instruction::template decode_STi_ST<7>, OP_FADD },
	{ "fmul", &Instruction::template decode_STi_ST<0>, OP_FMUL },
	{ "fmul", &Instruction::template decode_STi_ST<1>, OP_FMUL },
	{ "fmul", &Instruction::template decode_STi_ST<2>, OP_FMUL },
	{ "fmul", &Instruction::template decode_STi_ST<3>, OP_FMUL },
	{ "fmul", &Instruction::template decode_STi_ST<4>, OP_FMUL },
	{ "fmul", &Instruction::template decode_STi_ST<5>, OP_FMUL },
	{ "fmul", &Instruction::template decode_STi_ST<6>, OP_FMUL },
	{ "fmul", &Instruction::template decode_STi_ST<7>, OP_FMUL },
	{ "invalid", &Instruction::decode_invalid, OP_INVALID },
	{ "invalid", &Instruction::decode_invalid, OP_INVALID },
	{ "invalid", &Instruction::decode_invalid, OP_INVALID },
	{ "invalid", &Instruction::decode_invalid, OP_INVALID },
	{ "invalid", &Instruction::decode_invalid, OP_INVALID },
	{ "invalid", &Instruction::decode_invalid, OP_INVALID },
	{ "invalid", &Instruction::decode_invalid, OP_INVALID },
	{ "invalid", &Instruction::decode_invalid, OP_INVALID },
	{ "invalid", &Instruction::decode_invalid, OP_INVALID },
	{ "invalid", &Instruction::decode_invalid, OP_INVALID },
	{ "invalid", &Instruction::decode_invalid, OP_INVALID },
	{ "invalid", &Instruction::decode_invalid, OP_INVALID },
	{ "invalid", &Instruction::decode_invalid, OP_INVALID },
	{ "invalid", &Instruction::decode_invalid, OP_INVALID },
	{ "invalid", &Instruction::decode_invalid, OP_INVALID },
	{ "invalid", &Instruction::decode_invalid, OP_INVALID },
	{ "fsubr", &Instruction::template decode_STi_ST<0>, OP_FSUBR },
	{ "fsubr", &Instruction::template decode_STi_ST<1>, OP_FSUBR },
	{ "fsubr", &Instruction::template decode_STi_ST<2>, OP_FSUBR },
	{ "fsubr", &Instruction::template decode_STi_ST<3>, OP_FSUBR },
	{ "fsubr", &Instruction::template decode_STi_ST<4>, OP_FSUBR },
	{ "fsubr", &Instruction::template decode_STi_ST<5>, OP_FSUBR },
	{ "fsubr", &Instruction::template decode_STi_ST<6>, OP_FSUBR },
	{ "fsubr", &Instruction::template decode_STi_ST<7>, OP_FSUBR },
	{ "fsub", &Instruction::template decode_STi_ST<0>, OP_FSUB },
	{ "fsub", &Instruction::template decode_STi_ST<1>, OP_FSUB },
	{ "fsub", &Instruction::template decode_STi_ST<2>, OP_FSUB },
	{ "fsub", &Instruction::template decode_STi_ST<3>, OP_FSUB },
	{ "fsub", &Instruction::template decode_STi_ST<4>, OP_FSUB },
	{ "fsub", &Instruction::template decode_STi_ST<5>, OP_FSUB },
	{ "fsub", &Instruction::template decode_STi_ST<6>, OP_FSUB },
	{ "fsub", &Instruction::template decode_STi_ST<7>, OP_FSUB },
	{ "fdivr", &Instruction::template decode_STi_ST<0>, OP_FDIVR },
	{ "fdivr", &Instruction::template decode_STi_ST<1>, OP_FDIVR },
	{ "fdivr", &Instruction::template decode_STi_ST<2>, OP_FDIVR },
	{ "fdivr", &Instruction::template decode_STi_ST<3>, OP_FDIVR },
	{ "fdivr", &Instruction::template decode_STi_ST<4>, OP_FDIVR },
	{ "fdivr", &Instruction::template decode_STi_ST<5>, OP_FDIVR },
	{ "fdivr", &Instruction::template decode_STi_ST<6>, OP_FDIVR },
	{ "fdivr", &Instruction::template decode_STi_ST<7>, OP_FDIVR },
	{ "fdiv", &Instruction::template decode_STi_ST<0>, OP_FDIV },
	{ "fdiv", &Instruction::template decode_STi_ST<1>, OP_FDIV },
	{ "fdiv", &Instruction::template decode_STi_ST<2>, OP_FDIV },
	{ "fdiv", &Instruction::template decode_STi_ST<3>, OP_FDIV },
	{ "fdiv", &Instruction::template decode_STi_ST<4>, OP_FDIV },
	{ "fdiv", &Instruction::template decode_STi_ST<5>, OP_FDIV },
	{ "fdiv", &Instruction::template decode_STi_ST<6>, OP_FDIV },
	{ "fdiv", &Instruction::template decode_STi_ST<7>, OP_FDIV },
	
	/* 0xdd 0xc0 - 0xdd 0xff */
	{ "ffree", &Instruction::template decode_STi<0>, OP_FFREE },
	{ "ffree", &Instruction::template decode_STi<1>, OP_FFREE },
	{ "ffree", &Instruction::template decode_STi<2>, OP_FFREE },
	{ "ffree", &Instruction::template decode_STi<3>, OP_FFREE },
	{ "ffree", &Instruction::template decode_STi<4>, OP_FFREE },
	{ "ffree", &Instruction::template decode_STi<5>, OP_FFREE },
	{ "ffree", &Instruction::template decode_STi<6>, OP_FFREE },
	{ "ffree", &Instruction::template decode_STi<7>, OP_FFREE },
	{ "invalid", &Instruction::decode_invalid, OP_INVALID },
	{ "invalid", &Instruction::decode_invalid, OP_INVALID },
	{ "invalid", &Instruction::decode_invalid, OP_INVALID },
	{ "invalid", &Instruction::decode_invalid, OP_INVALID },
	{ "invalid", &Instruction::decode_invalid, OP_INVALID },
	{ "invalid", &Instruction::decode_invalid, OP_INVALID },
	{ "invalid", &Instruction::decode_invalid, OP_INVALID },
	{ "invalid", &Instruction::decode_invalid, OP_INVALID },
	{ "fst", &Instruction::template decode_STi<0>, OP_FST },
	{ "fst", &Instruction::template decode_STi<1>, OP_FST },
	{ "fst", &Instruction::template decode_STi<2>, OP_FST },
	{ "fst", &Instruction::template decode_STi<3>, OP_FST },
	{ "fst", &Instruction::template decode_STi<4>, OP_FST },
	{ "fst", &Instruction::template decode_STi<5>, OP_FST },
	{ "fst", &Instruction::template decode_STi<6>, OP_FST },
	{ "fst", &Instruction::template decode_STi<7>, OP_FST },
	{ "fstp", &Instruction::template decode_STi<0>, OP_FSTP },
	{ "fstp", &Instruction::template decode_STi<1>, OP_FSTP },
	{ "fstp", &Instruction::template decode_STi<2>, OP_FSTP },
	{ "fstp", &Instruction::template decode_STi<3>, OP_FSTP },
	{ "fstp", &Instruction::template decode_STi<4>, OP_FSTP },
	{ "fstp", &Instruction::template decode_STi<5>, OP_FSTP },
	{ "fstp", &Instruction::template decode_STi<6>, OP_FSTP },
	{ "fstp", &Instruction::template decode_STi<7>, OP_FSTP },
	{ "fucom", &Instruction::template decode_STi<0>, OP_FUCOM },
	{ "fucom", &Instruction::template decode_STi<1>, OP_FUCOM },
	{ "fucom", &Instruction::template decode_STi<2>, OP_FUCOM },
	{ "fucom", &Instruction::template decode_STi<3>, OP_FUCOM },
	{ "fucom", &Instruction::template decode_STi<4>, OP_FUCOM },
	{ "fucom", &Instruction::template decode_STi<5>, OP_FUCOM },
	{ "fucom", &Instruction::template decode_STi<6>, OP_FUCOM },
	{ "fucom", &Instruction::template decode_STi<7>, OP_FUCOM },
	{ "fucomp", &Instruction::template decode_STi<0>, OP_FUCOMP },
	{ "fucomp", &Instruction::template decode_STi<1>, OP_FUCOMP },
	{ "fucomp", &Instruction::template decode_STi<2>, OP_FUCOMP },
	{ "fucomp", &Instruction::template decode_STi<3>, OP_FUCOMP },
	{ "fucomp", &Instruction::template decode_STi<4>, OP_FUCOMP },
	{ "fucomp", &Instruction::template decode_STi<5>, OP_FUCOMP },
	{ "fucomp", &Instruction::template decode_STi<6>, OP_FUCOMP },
	{ "fucomp", &Instruction::template decode_STi<7>, OP_FUCOMP },
	{ "invalid", &Instruction::decode_invalid, OP_INVALID },
	{ "invalid", &Instruction::decode_invalid, OP_INVALID },
	{ "invalid", &Instruction::decode_invalid, OP_INVALID },
	{ "invalid", &Instruction::decode_invalid, OP_INVALID },
	{ "invalid", &Instruction::decode_invalid, OP_INVALID },
	{ "invalid", &Instruction::decode_invalid, OP_INVALID },
	{ "invalid", &Instruction::decode_invalid, OP_INVALID },
	{ "invalid", &Instruction::decode_invalid, OP_INVALID },
	{ "invalid", &Instruction::decode_invalid, OP_INVALID },
	{ "invalid", &Instruction::decode_invalid, OP_INVALID },
	{ "invalid", &Instruction::decode_invalid, OP_INVALID },
	{ "invalid", &Instruction::decode_invalid, OP_INVALID },
	{ "invalid", &Instruction::decode_invalid, OP_INVALID },
	{ "invalid", &Instruction::decode_invalid, OP_INVALID },
	{ "invalid", &Instruction::decode_invalid, OP_INVALID },
	{ "invalid", &Instruction::decode_invalid, OP_INVALID },
	
	/* 0xde 0xc0 - 0xde 0xff */
	{ "faddp", &Instruction::template decode_STi_ST<0>, OP_FADDP },
	{ "faddp", &Instruction::template decode_STi_ST<1>, OP_FADDP },
	{ "faddp", &Instruction::template decode_STi_ST<2>, OP_FADDP },
	{ "faddp", &Instruction::template decode_STi_ST<3>, OP_FADDP },
	{ "faddp", &Instruction::template decode_STi_ST<4>, OP_FADDP },
	{ "faddp", &Instruction::template decode_STi_ST<5>, OP_FADDP },
	{ "faddp", &Instruction::template decode_STi_ST<6>, OP_FADDP },
	{ "faddp", &Instruction::template decode_STi_ST<7>, OP_FADDP },
	{ "fmulp", &Instruction::template decode_STi_ST<0>, OP_FMULP },
	{ "fmulp", &Instruction::template decode_STi_ST<1>, OP_FMULP },
	{ "fmulp", &Instruction::template decode_STi_ST<2>, OP_FMULP },
	{ "fmulp", &Instruction::template decode_STi_ST<3>, OP_FMULP },
	{ "fmulp", &Instruction::template decode_STi_ST<4>, OP_FMULP },
	{ "fmulp", &Instruction::template decode_STi_ST<5>, OP_FMULP },
	{ "fmulp", &Instruction::template decode_STi_ST<6>, OP_FMULP },
	{ "fmulp", &Instruction::template decode_STi_ST<7>, OP_FMULP },
	{ "invalid", &Instruction::decode_invalid, OP_INVALID },
	{ "invalid", &Instruction::decode_invalid, OP_INVALID },
	{ "invalid", &Instruction::decode_invalid, OP_INVALID },
	{ "invalid", &Instruction::decode_invalid, OP_INVALID },
	{ "invalid", &Instruction::decode_invalid, OP_INVALID },
	{ "invalid", &Instruction::decode_invalid, OP_INVALID },
	{ "invalid", &Instruction::decode_invalid, OP_INVALID },
	{ "invalid", &Instruction::decode_invalid, OP_INVALID },  
	{ "invalid", &Instruction::decode_invalid, OP_INVALID },
	{ "fcompp", &Instruction::decode0, OP_FCOMPP },
	{ "invalid", &Instruction::decode_invalid, OP_INVALID },
	{ "invalid", &Instruction::decode_invalid, OP_INVALID },
	{ "invalid", &Instruction::decode_invalid, OP_INVALID },
	{ "invalid", &Instruction::decode_invalid, OP_INVALID },
	{ "invalid", &Instruction::decode_invalid, OP_INVALID },
	{ "invalid", &Instruction::decode_invalid, OP_INVALID },
	{ "fsubrp", &Instruction::template decode_STi_ST<0>, OP_FSUBRP },
	{ "fsubrp", &Instruction::template decode_STi_ST<1>, OP_FSUBRP },
	{ "fsubrp", &Instruction::template decode_STi_ST<2>, OP_FSUBRP },
	{ "fsubrp", &Instruction::template decode_STi_ST<3>, OP_FSUBRP },
	{ "fsubrp", &Instruction::template decode_STi_ST<4>, OP_FSUBRP },
	{ "fsubrp", &Instruction::template decode_STi_ST<5>, OP_FSUBRP },
	{ "fsubrp", &Instruction::template decode_STi_ST<6>, OP_FSUBRP },
	{ "fsubrp", &Instruction::template decode_STi_ST<7>, OP_FSUBRP },
	{ "fsubp", &Instruction::template decode_STi_ST<0>, OP_FSUBP },
	{ "fsubp", &Instruction::template decode_STi_ST<1>, OP_FSUBP },
	{ "fsubp", &Instruction::template decode_STi_ST<2>, OP_FSUBP },
	{ "fsubp", &Instruction::template decode_STi_ST<3>, OP_FSUBP },
	{ "fsubp", &Instruction::template decode_STi_ST<4>, OP_FSUBP },
	{ "fsubp", &Instruction::template decode_STi_ST<5>, OP_FSUBP },
	{ "fsubp", &Instruction::template decode_STi_ST<6>, OP_FSUBP },
	{ "fsubp", &Instruction::template decode_STi_ST<7>, OP_FSUBP },
	{ "fdivrp", &Instruction::template decode_STi_ST<0>, OP_FDIVRP },
	{ "fdivrp", &Instruction::template decode_STi_ST<1>, OP_FDIVRP },
	{ "fdivrp", &Instruction::template decode_STi_ST<2>, OP_FDIVRP },
	{ "fdivrp", &Instruction::template decode_STi_ST<3>, OP_FDIVRP },
	{ "fdivrp", &Instruction::template decode_STi_ST<4>, OP_FDIVRP },
	{ "fdivrp", &Instruction::template decode_STi_ST<5>, OP_FDIVRP },
	{ "fdivrp", &Instruction::template decode_STi_ST<6>, OP_FDIVRP },
	{ "fdivrp", &Instruction::template decode_STi_ST<7>, OP_FDIVRP },
	{ "fdivp", &Instruction::template decode_STi_ST<0>, OP_FDIVP },
	{ "fdivp", &Instruction::template decode_STi_ST<1>, OP_FDIVP },
	{ "fdivp", &Instruction::template decode_STi_ST<2>, OP_FDIVP },
	{ "fdivp", &Instruction::template decode_STi_ST<3>, OP_FDIVP },
	{ "fdivp", &Instruction::template decode_STi_ST<4>, OP_FDIVP },
	{ "fdivp", &Instruction::template decode_STi_ST<5>, OP_FDIVP },
	{ "fdivp", &Instruction::template decode_STi_ST<6>, OP_FDIVP },
	{ "fdivp", &Instruction::template decode_STi_ST<7>, OP_FDIVP },
	
	/* 0xdf 0xc0 - 0xdf 0xff */
	{ "invalid", &Instruction::decode_invalid, OP_INVALID },
	{ "invalid", &Instruction::decode_invalid, OP_INVALID },
	{ "invalid", &Instruction::decode_invalid, OP_INVALID },
	{ "invalid", &Instruction::decode_invalid, OP_INVALID },
	{ "invalid", &Instruction::decode_invalid, OP_INVALID },
	{ "invalid", &Instruction::decode_invalid, OP_INVALID },
	{ "invalid", &Instruction::decode_invalid, OP_INVALID },
	{ "invalid", &Instruction::decode_invalid, OP_INVALID },
	{ "invalid", &Instruction::decode_invalid, OP_INVALID },
	{ "invalid", &Instruction::decode_invalid, OP_INVALID },
	{ "invalid", &Instruction::decode_invalid, OP_INVALID },
	{ "invalid", &Instruction::decode_invalid, OP_INVALID },
	{ "invalid", &Instruction::decode_invalid, OP_INVALID },
	{ "invalid", &Instruction::decode_invalid, OP_INVALID },
	{ "invalid", &Instruction::decode_invalid, OP_INVALID },
	{ "invalid", &Instruction::decode_invalid, OP_INVALID },
	{ "invalid", &Instruction::decode_invalid, OP_INVALID },
	{ "invalid", &Instruction::decode_invalid, OP_INVALID },
	{ "invalid", &Instruction::decode_invalid, OP_INVALID },
	{ "invalid", &Instruction::decode_invalid, OP_INVALID },
	{ "invalid", &Instruction::decode_invalid, OP_INVALID },
	{ "invalid", &Instruction::decode_invalid, OP_INVALID },
	{ "invalid", &Instruction::decode_invalid, OP_INVALID },
	{ "invalid", &Instruction::decode_invalid, OP_INVALID },
	{ "invalid", &Instruction::decode_invalid, OP_INVALID },
	{ "invalid", &Instruction::decode_invalid, OP_INVALID },
	{ "invalid", &Instruction::decode_invalid, OP_INVALID },
	{ "invalid", &Instruction::decode_invalid, OP_INVALID },
	{ "invalid", &Instruction::decode_invalid, OP_INVALID },
	{ "invalid", &Instruction::decode_invalid, OP_INVALID },
	{ "invalid", &Instruction::decode_invalid, OP_INVALID },
	{ "invalid", &Instruction::decode_invalid, OP_INVALID },
	{ "fstsw", &Instruction::template decode_Reg<operand_t::REG_AX>, OP_FSTSW },
	{ "invalid", &Instruction::decode_invalid, OP_INVALID },
	{ "invalid", &Instruction::decode_invalid, OP_INVALID },
	{ "invalid", &Instruction::decode_invalid, OP_INVALID },
	{ "invalid", &Instruction::decode_invalid, OP_INVALID },
	{ "invalid", &Instruction::decode_invalid, OP_INVALID },
	{ "invalid", &Instruction::decode_invalid, OP_INVALID },
	{ "invalid", &Instruction::decode_invalid, OP_INVALID },
	{ "fucomip", &Instruction::template decode_ST_STi<0>, OP_FUCOMIP },
	{ "fucomip", &Instruction::template decode_ST_STi<1>, OP_FUCOMIP },
	{ "fucomip", &Instruction::template decode_ST_STi<2>, OP_FUCOMIP },
	{ "fucomip", &Instruction::template decode_ST_STi<3>, OP_FUCOMIP },
	{ "fucomip", &Instruction::template decode_ST_STi<4>, OP_FUCOMIP },
	{ "fucomip", &Instruction::template decode_ST_STi<5>, OP_FUCOMIP },
	{ "fucomip", &Instruction::template decode_ST_STi<6>, OP_FUCOMIP },
	{ "fucomip", &Instruction::template decode_ST_STi<7>, OP_FUCOMIP },
	{ "fcomip", &Instruction::template decode_ST_STi<0>, OP_FCOMIP },
	{ "fcomip", &Instruction::template decode_ST_STi<1>, OP_FCOMIP },
	{ "fcomip", &Instruction::template decode_ST_STi<2>, OP_FCOMIP },
	{ "fcomip", &Instruction::template decode_ST_STi<3>, OP_FCOMIP },
	{ "fcomip", &Instruction::template decode_ST_STi<4>, OP_FCOMIP },
	{ "fcomip", &Instruction::template decode_ST_STi<5>, OP_FCOMIP },
	{ "fcomip", &Instruction::template decode_ST_STi<6>, OP_FCOMIP },
	{ "fcomip", &Instruction::template decode_ST_STi<7>, OP_FCOMIP },
	{ "invalid", &Instruction::decode_invalid, OP_INVALID },
	{ "invalid", &Instruction::decode_invalid, OP_INVALID },
	{ "invalid", &Instruction::decode_invalid, OP_INVALID },
	{ "invalid", &Instruction::decode_invalid, OP_INVALID },
	{ "invalid", &Instruction::decode_invalid, OP_INVALID },
	{ "invalid", &Instruction::decode_invalid, OP_INVALID },
	{ "invalid", &Instruction::decode_invalid, OP_INVALID },
	{ "invalid", &Instruction::decode_invalid, OP_INVALID },
};

#endif
