summaryrefslogtreecommitdiff
path: root/src/arch/x86/isa/decoder/x87.isa
diff options
context:
space:
mode:
authorGabe Black <gblack@eecs.umich.edu>2007-10-18 22:39:39 -0700
committerGabe Black <gblack@eecs.umich.edu>2007-10-18 22:39:39 -0700
commit70542c8e617b3b721b3cc5e7e52ca62b65e3073b (patch)
treeed7ccffddb0f7c54d5db35a2c06a3f11fc48c03e /src/arch/x86/isa/decoder/x87.isa
parentdc2e887f238d48f15364d9937bc71940d3849c0a (diff)
downloadgem5-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.isa546
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();
+ }
}
}
}