diff options
author | Gabe Black <gblack@eecs.umich.edu> | 2007-10-18 22:39:39 -0700 |
---|---|---|
committer | Gabe Black <gblack@eecs.umich.edu> | 2007-10-18 22:39:39 -0700 |
commit | 70542c8e617b3b721b3cc5e7e52ca62b65e3073b (patch) | |
tree | ed7ccffddb0f7c54d5db35a2c06a3f11fc48c03e /src/arch/x86/isa/decoder/x87.isa | |
parent | dc2e887f238d48f15364d9937bc71940d3849c0a (diff) | |
download | gem5-70542c8e617b3b721b3cc5e7e52ca62b65e3073b.tar.xz |
X86: Make "Inst" the default format instead of WarnUnimpl for one byte opcodes.
--HG--
extra : convert_revision : 591e67fc21f5b72977c5876e39f488494fda77c2
Diffstat (limited to 'src/arch/x86/isa/decoder/x87.isa')
-rw-r--r-- | src/arch/x86/isa/decoder/x87.isa | 546 |
1 files changed, 274 insertions, 272 deletions
diff --git a/src/arch/x86/isa/decoder/x87.isa b/src/arch/x86/isa/decoder/x87.isa index 667a8a66e..9a6473141 100644 --- a/src/arch/x86/isa/decoder/x87.isa +++ b/src/arch/x86/isa/decoder/x87.isa @@ -53,294 +53,296 @@ // // Authors: Gabe Black -0x1B: decode OPCODE_OP_BOTTOM3 { - //0x0: esc0(); - 0x0: decode MODRM_REG { - 0x0: fadd(); - 0x1: fmul(); - 0x2: fcom(); - 0x3: fcomp(); - 0x4: fsub(); - 0x5: fsubr(); - 0x6: fdiv(); - 0x7: fdivr(); - } - //0x1: esc1(); - 0x1: decode MODRM_REG { - 0x0: fld(); - 0x1: decode MODRM_MOD { - 0x3: fxch(); - default: Inst::UD2(); - } - 0x2: decode MODRM_MOD { - 0x3: decode MODRM_RM { - 0x0: fnop(); +format WarnUnimpl { + 0x1B: decode OPCODE_OP_BOTTOM3 { + //0x0: esc0(); + 0x0: decode MODRM_REG { + 0x0: fadd(); + 0x1: fmul(); + 0x2: fcom(); + 0x3: fcomp(); + 0x4: fsub(); + 0x5: fsubr(); + 0x6: fdiv(); + 0x7: fdivr(); + } + //0x1: esc1(); + 0x1: decode MODRM_REG { + 0x0: fld(); + 0x1: decode MODRM_MOD { + 0x3: fxch(); default: Inst::UD2(); } - default: fst(); - } - 0x3: decode MODRM_MOD { - 0x3: Inst::UD2(); - default: fstp(); - } - 0x4: decode MODRM_MOD { - 0x3: decode MODRM_RM { - 0x0: fchs(); - 0x1: fabs(); - 0x4: ftst(); - 0x5: fxam(); - default: Inst::UD2(); + 0x2: decode MODRM_MOD { + 0x3: decode MODRM_RM { + 0x0: fnop(); + default: Inst::UD2(); + } + default: fst(); } - default: fldenv(); - } - 0x5: decode MODRM_MOD { - 0x3: decode MODRM_RM { - 0x0: fld1(); - 0x1: fldl2t(); - 0x2: fldl2e(); - 0x3: fldpi(); - 0x4: fldlg2(); - 0x5: fldln2(); - 0x6: fldz(); - } - default: fldcw_Mw(); - } - 0x6: decode MODRM_MOD { - 0x3: decode MODRM_RM { - 0x0: f2xm1(); - 0x1: fyl2x(); - 0x2: fptan(); - 0x3: fpatan(); - 0x4: fxtract(); - 0x5: fprem1(); - 0x6: fdecstp(); - 0x7: fincstp(); - } - default: fnstenv(); - } - 0x7: decode MODRM_MOD { - 0x3: decode MODRM_RM { - 0x0: fprem(); - 0x1: fyl2xp1(); - 0x2: fsqrt(); - 0x3: fsincos(); - 0x4: frndint(); - 0x5: fscale(); - 0x6: fsin(); - 0x7: fcos(); - } - default: fnstcw_Mw(); - } - } - //0x2: esc2(); - 0x2: decode MODRM_REG { - 0x0: decode MODRM_MOD { - 0x3: fcmovb(); - default: fiadd(); - } - 0x1: decode MODRM_MOD { - 0x3: fcmove(); - default: fimul(); - } - 0x2: decode MODRM_MOD { - 0x3: fcmovbe(); - default: ficom(); - } - 0x3: decode MODRM_MOD { - 0x3: fcmovu(); - default: ficomp(); - } - 0x4: decode MODRM_MOD { - 0x3: Inst::UD2(); - default: fisub(); - } - 0x5: decode MODRM_MOD { - 0x3: decode MODRM_RM { - 0x1: fucompp(); - default: Inst::UD2(); + 0x3: decode MODRM_MOD { + 0x3: Inst::UD2(); + default: fstp(); + } + 0x4: decode MODRM_MOD { + 0x3: decode MODRM_RM { + 0x0: fchs(); + 0x1: fabs(); + 0x4: ftst(); + 0x5: fxam(); + default: Inst::UD2(); + } + default: fldenv(); + } + 0x5: decode MODRM_MOD { + 0x3: decode MODRM_RM { + 0x0: fld1(); + 0x1: fldl2t(); + 0x2: fldl2e(); + 0x3: fldpi(); + 0x4: fldlg2(); + 0x5: fldln2(); + 0x6: fldz(); + } + default: fldcw_Mw(); + } + 0x6: decode MODRM_MOD { + 0x3: decode MODRM_RM { + 0x0: f2xm1(); + 0x1: fyl2x(); + 0x2: fptan(); + 0x3: fpatan(); + 0x4: fxtract(); + 0x5: fprem1(); + 0x6: fdecstp(); + 0x7: fincstp(); + } + default: fnstenv(); + } + 0x7: decode MODRM_MOD { + 0x3: decode MODRM_RM { + 0x0: fprem(); + 0x1: fyl2xp1(); + 0x2: fsqrt(); + 0x3: fsincos(); + 0x4: frndint(); + 0x5: fscale(); + 0x6: fsin(); + 0x7: fcos(); + } + default: fnstcw_Mw(); } - default: fisubr(); - } - 0x6: decode MODRM_MOD { - 0x3: Inst::UD2(); - default: fidiv(); - } - 0x7: decode MODRM_MOD { - 0x3: Inst::UD2(); - default: fidivr(); - } - } - //0x3: esc3(); - 0x3: decode MODRM_REG { - 0x0: decode MODRM_MOD { - 0x3: fcmovnb(); - default: fild(); - } - 0x1: decode MODRM_MOD { - 0x3: fcmovne(); - default: fisttp(); - } - 0x2: decode MODRM_MOD { - 0x3: fcmovnbe(); - default: fist(); } - 0x3: decode MODRM_MOD { - 0x3: fcmovnu(); - default: fistp(); + //0x2: esc2(); + 0x2: decode MODRM_REG { + 0x0: decode MODRM_MOD { + 0x3: fcmovb(); + default: fiadd(); + } + 0x1: decode MODRM_MOD { + 0x3: fcmove(); + default: fimul(); + } + 0x2: decode MODRM_MOD { + 0x3: fcmovbe(); + default: ficom(); + } + 0x3: decode MODRM_MOD { + 0x3: fcmovu(); + default: ficomp(); + } + 0x4: decode MODRM_MOD { + 0x3: Inst::UD2(); + default: fisub(); + } + 0x5: decode MODRM_MOD { + 0x3: decode MODRM_RM { + 0x1: fucompp(); + default: Inst::UD2(); + } + default: fisubr(); + } + 0x6: decode MODRM_MOD { + 0x3: Inst::UD2(); + default: fidiv(); + } + 0x7: decode MODRM_MOD { + 0x3: Inst::UD2(); + default: fidivr(); + } } - 0x4: decode MODRM_MOD { - 0x3: decode MODRM_RM { - 0x2: fnclex(); - 0x3: fninit(); + //0x3: esc3(); + 0x3: decode MODRM_REG { + 0x0: decode MODRM_MOD { + 0x3: fcmovnb(); + default: fild(); + } + 0x1: decode MODRM_MOD { + 0x3: fcmovne(); + default: fisttp(); + } + 0x2: decode MODRM_MOD { + 0x3: fcmovnbe(); + default: fist(); + } + 0x3: decode MODRM_MOD { + 0x3: fcmovnu(); + default: fistp(); + } + 0x4: decode MODRM_MOD { + 0x3: decode MODRM_RM { + 0x2: fnclex(); + 0x3: fninit(); + default: Inst::UD2(); + } default: Inst::UD2(); } - default: Inst::UD2(); - } - 0x5: decode MODRM_MOD { - 0x3: fucomi(); - default: fld(); - } - 0x6: decode MODRM_MOD { - 0x3: fcomi(); - default: Inst::UD2(); - } - 0x7: decode MODRM_MOD { - 0x3: Inst::UD2(); - default: fstp(); - } - } - //0x4: esc4(); - 0x4: decode MODRM_REG { - 0x0: fadd(); - 0x1: fmul(); - 0x2: decode MODRM_MOD { - 0x3: Inst::UD2(); - default: fcom(); - } - 0x3: decode MODRM_MOD { - 0x3: Inst::UD2(); - default: fcomp(); - } - 0x4: decode MODRM_MOD { - 0x3: fsubr(); - default: fsub(); - } - 0x5: decode MODRM_MOD { - 0x3: fsub(); - default: fsubr(); - } - 0x6: decode MODRM_MOD { - 0x3: fdivr(); - default: fdiv(); - } - 0x7: decode MODRM_MOD { - 0x3: fdiv(); - default: fdivr(); - } - } - //0x5: esc5(); - 0x5: decode MODRM_REG { - 0x0: decode MODRM_MOD { - 0x3: ffree(); - default: Inst::FLD(Mq); - } - 0x1: decode MODRM_MOD { - 0x3: Inst::UD2(); - default: fisttp(); - } - 0x2: Inst::FST(Mq); - 0x3: Inst::FSTP(Mq); - 0x4: decode MODRM_MOD { - 0x3: fucom(); - default: frstor(); - } - 0x5: decode MODRM_MOD { - 0x3: fucomp(); - default: Inst::UD2(); - } - 0x6: decode MODRM_MOD { - 0x3: Inst::UD2(); - default: fnsave(); - } - 0x7: decode MODRM_MOD { - 0x3: Inst::UD2(); - default: fnstsw(); - } - } - //0x6: esc6(); - 0x6: decode MODRM_REG { - 0x0: decode MODRM_MOD { - 0x3: faddp(); - default: fiadd(); - } - 0x1: decode MODRM_MOD { - 0x3: fmulp(); - default: fimul(); - } - 0x2: decode MODRM_MOD { - 0x3: Inst::UD2(); - default: ficom(); - } - 0x3: decode MODRM_MOD { - 0x3: decode MODRM_RM { - 0x1: fcompp(); + 0x5: decode MODRM_MOD { + 0x3: fucomi(); + default: fld(); + } + 0x6: decode MODRM_MOD { + 0x3: fcomi(); default: Inst::UD2(); } - default: ficomp(); - } - 0x4: decode MODRM_MOD { - 0x3: fsubrp(); - default: fisub(); - } - 0x5: decode MODRM_MOD { - 0x3: fsubp(); - default: fisubr(); - } - 0x6: decode MODRM_MOD { - 0x3: fdivrp(); - default: fidiv(); - } - 0x7: decode MODRM_MOD { - 0x3: fdivp(); - default: fidivr(); - } - } - //0x7: esc7(); - 0x7: decode MODRM_REG { - 0x0: decode MODRM_MOD { - 0x3: Inst::UD2(); - default: fild(); - } - 0x1: decode MODRM_MOD { - 0x3: Inst::UD2(); - default: fisttp(); - } - 0x2: decode MODRM_MOD { - 0x3: Inst::UD2(); - default: fist(); + 0x7: decode MODRM_MOD { + 0x3: Inst::UD2(); + default: fstp(); + } } - 0x3: decode MODRM_MOD { - 0x3: Inst::UD2(); - default: fistp(); + //0x4: esc4(); + 0x4: decode MODRM_REG { + 0x0: fadd(); + 0x1: fmul(); + 0x2: decode MODRM_MOD { + 0x3: Inst::UD2(); + default: fcom(); + } + 0x3: decode MODRM_MOD { + 0x3: Inst::UD2(); + default: fcomp(); + } + 0x4: decode MODRM_MOD { + 0x3: fsubr(); + default: fsub(); + } + 0x5: decode MODRM_MOD { + 0x3: fsub(); + default: fsubr(); + } + 0x6: decode MODRM_MOD { + 0x3: fdivr(); + default: fdiv(); + } + 0x7: decode MODRM_MOD { + 0x3: fdiv(); + default: fdivr(); + } } - 0x4: decode MODRM_MOD { - 0x3: decode MODRM_RM { - 0x0: fnstsw(); + //0x5: esc5(); + 0x5: decode MODRM_REG { + 0x0: decode MODRM_MOD { + 0x3: ffree(); + default: Inst::FLD(Mq); + } + 0x1: decode MODRM_MOD { + 0x3: Inst::UD2(); + default: fisttp(); + } + 0x2: Inst::FST(Mq); + 0x3: Inst::FSTP(Mq); + 0x4: decode MODRM_MOD { + 0x3: fucom(); + default: frstor(); + } + 0x5: decode MODRM_MOD { + 0x3: fucomp(); default: Inst::UD2(); } - default: fbld(); - } - 0x5: decode MODRM_MOD { - 0x3: fucomip(); - default: fild(); + 0x6: decode MODRM_MOD { + 0x3: Inst::UD2(); + default: fnsave(); + } + 0x7: decode MODRM_MOD { + 0x3: Inst::UD2(); + default: fnstsw(); + } } - 0x6: decode MODRM_MOD { - 0x3: fcomip(); - default: fbstp(); + //0x6: esc6(); + 0x6: decode MODRM_REG { + 0x0: decode MODRM_MOD { + 0x3: faddp(); + default: fiadd(); + } + 0x1: decode MODRM_MOD { + 0x3: fmulp(); + default: fimul(); + } + 0x2: decode MODRM_MOD { + 0x3: Inst::UD2(); + default: ficom(); + } + 0x3: decode MODRM_MOD { + 0x3: decode MODRM_RM { + 0x1: fcompp(); + default: Inst::UD2(); + } + default: ficomp(); + } + 0x4: decode MODRM_MOD { + 0x3: fsubrp(); + default: fisub(); + } + 0x5: decode MODRM_MOD { + 0x3: fsubp(); + default: fisubr(); + } + 0x6: decode MODRM_MOD { + 0x3: fdivrp(); + default: fidiv(); + } + 0x7: decode MODRM_MOD { + 0x3: fdivp(); + default: fidivr(); + } } - 0x7: decode MODRM_MOD { - 0x3: Inst::UD2(); - default: fistp(); + //0x7: esc7(); + 0x7: decode MODRM_REG { + 0x0: decode MODRM_MOD { + 0x3: Inst::UD2(); + default: fild(); + } + 0x1: decode MODRM_MOD { + 0x3: Inst::UD2(); + default: fisttp(); + } + 0x2: decode MODRM_MOD { + 0x3: Inst::UD2(); + default: fist(); + } + 0x3: decode MODRM_MOD { + 0x3: Inst::UD2(); + default: fistp(); + } + 0x4: decode MODRM_MOD { + 0x3: decode MODRM_RM { + 0x0: fnstsw(); + default: Inst::UD2(); + } + default: fbld(); + } + 0x5: decode MODRM_MOD { + 0x3: fucomip(); + default: fild(); + } + 0x6: decode MODRM_MOD { + 0x3: fcomip(); + default: fbstp(); + } + 0x7: decode MODRM_MOD { + 0x3: Inst::UD2(); + default: fistp(); + } } } } |