summaryrefslogtreecommitdiff
path: root/src/arch/x86/isa/decoder
diff options
context:
space:
mode:
authorGabe Black <gblack@eecs.umich.edu>2007-11-12 14:38:53 -0800
committerGabe Black <gblack@eecs.umich.edu>2007-11-12 14:38:53 -0800
commit4d4d2883f9c84f0cebec4b65479c11540dbb36f7 (patch)
treedf27bc7bcb242428a3ee5bfe3f93b8a6a4b844bc /src/arch/x86/isa/decoder
parentf9ddb894dd92d6cc5601d65a3c58dc5dd73f7ac7 (diff)
downloadgem5-4d4d2883f9c84f0cebec4b65479c11540dbb36f7.tar.xz
X86: Implement some bit testing instructions.
--HG-- extra : convert_revision : 54585e276e44322be9c56af0b2eabfe8d4b3e430
Diffstat (limited to 'src/arch/x86/isa/decoder')
-rw-r--r--src/arch/x86/isa/decoder/two_byte_opcodes.isa28
1 files changed, 15 insertions, 13 deletions
diff --git a/src/arch/x86/isa/decoder/two_byte_opcodes.isa b/src/arch/x86/isa/decoder/two_byte_opcodes.isa
index 30034a305..233a5602d 100644
--- a/src/arch/x86/isa/decoder/two_byte_opcodes.isa
+++ b/src/arch/x86/isa/decoder/two_byte_opcodes.isa
@@ -657,7 +657,7 @@
0x0: push_fs();
0x1: pop_fs();
0x2: Inst::CPUID(rAd);
- 0x3: bt_Ev_Gv();
+ 0x3: Inst::BT(Ev,Gv);
0x4: shld_Ev_Gv_Ib();
0x5: shld_Ev_Gv_rCl();
0x6: xbts_and_cmpxchg();
@@ -667,7 +667,7 @@
0x0: push_gs();
0x1: pop_gs();
0x2: rsm_smm();
- 0x3: bts_Ev_Gv();
+ 0x3: Inst::BTS(Ev,Gv);
0x4: shrd_Ev_Gv_Ib();
0x5: shrd_Ev_Gv_rCl();
//0x6: group16();
@@ -691,7 +691,7 @@
0x0: Inst::CMPXCHG(Eb,Gb);
0x1: Inst::CMPXCHG(Ev,Gv);
0x2: lss_Gz_Mp();
- 0x3: btr_Ev_Gv();
+ 0x3: Inst::BTR(Ev,Gv);
0x4: lfs_Gz_Mp();
0x5: lgs_Gz_Mp();
//The size of the second operand in these instructions should
@@ -702,17 +702,19 @@
}
0x17: decode OPCODE_OP_BOTTOM3 {
0x0: jmpe_Jz(); // IA-64?
- //0x1: group11_UD2();
- 0x1: Inst::UD2();
- //0x2: group8_Ev_Ib();
- 0x2: decode MODRM_REG {
- 0x4: bt_Ev_Ib();
- 0x5: bts_Ev_Ib();
- 0x6: btr_Ev_Ib();
- 0x7: btc_Ev_Ib();
- default: Inst::UD2();
+ format Inst {
+ //0x1: group11_UD2();
+ 0x1: UD2();
+ //0x2: group8_Ev_Ib();
+ 0x2: decode MODRM_REG {
+ 0x4: BT(Ev,Ib);
+ 0x5: BTS(Ev,Ib);
+ 0x6: BTR(Ev,Ib);
+ 0x7: BTC(Ev,Ib);
+ default: UD2();
+ }
+ 0x3: BTC(Ev,Gv);
}
- 0x3: btc_Ev_Gv();
0x4: bsf_Gv_Ev();
0x5: bsr_Gv_Ev();
//The size of the second operand in these instructions should