summaryrefslogtreecommitdiff
path: root/src/arch/x86/isa/decoder
diff options
context:
space:
mode:
authorGabe Black <gblack@eecs.umich.edu>2009-08-17 20:15:16 -0700
committerGabe Black <gblack@eecs.umich.edu>2009-08-17 20:15:16 -0700
commit45bae0c70f43dc04ccf485e2ea54b892a072cb0c (patch)
tree8cdc6954ef9c853b85e4d25d03a93f98e951d9c8 /src/arch/x86/isa/decoder
parent200fed31de52ec783006bb1d7c1dbcc4112e7fb3 (diff)
downloadgem5-45bae0c70f43dc04ccf485e2ea54b892a072cb0c.tar.xz
X86: Implement the multiply and add instructions.
Diffstat (limited to 'src/arch/x86/isa/decoder')
-rw-r--r--src/arch/x86/isa/decoder/two_byte_opcodes.isa60
1 files changed, 29 insertions, 31 deletions
diff --git a/src/arch/x86/isa/decoder/two_byte_opcodes.isa b/src/arch/x86/isa/decoder/two_byte_opcodes.isa
index cb57bf9f0..d136fcbce 100644
--- a/src/arch/x86/isa/decoder/two_byte_opcodes.isa
+++ b/src/arch/x86/isa/decoder/two_byte_opcodes.isa
@@ -1062,38 +1062,36 @@
}
default: UD2();
}
- }
- 0x1E: decode LEGACY_DECODEVAL {
- // no prefix
- 0x0: decode OPCODE_OP_BOTTOM3 {
- 0x1: Inst::PSLLW(Pq,Qq);
- 0x2: Inst::PSLLD(Pq,Qq);
- 0x3: Inst::PSLLQ(Pq,Qq);
- 0x4: Inst::PMULUDQ(Pq,Qq);
- 0x5: pmaddwd_Pq_Qq();
- 0x6: Inst::PSADBW(Pq,Qq);
- 0x7: maskmovq_Pq_PRq();
- default: Inst::UD2();
- }
- // operand size (0x66)
- 0x1: decode OPCODE_OP_BOTTOM3 {
- 0x1: Inst::PSLLW(Vo,Wo);
- 0x2: Inst::PSLLD(Vo,Wo);
- 0x3: Inst::PSLLQ(Vo,Wo);
- 0x4: Inst::PMULUDQ(Vo,Wo);
- 0x5: pmaddwd_Vo_Wo();
- 0x6: Inst::PSADBW(Vo,Wo);
- 0x7: maskmovdqu_Vo_VRo();
- default: Inst::UD2();
- }
- // repne (0xF2)
- 0x8: decode OPCODE_OP_BOTTOM3 {
- 0x0: lddqu_Vo_Mo();
- default: Inst::UD2();
+ 0x1E: decode LEGACY_DECODEVAL {
+ // no prefix
+ 0x0: decode OPCODE_OP_BOTTOM3 {
+ 0x1: PSLLW(Pq,Qq);
+ 0x2: PSLLD(Pq,Qq);
+ 0x3: PSLLQ(Pq,Qq);
+ 0x4: PMULUDQ(Pq,Qq);
+ 0x5: PMADDWD(Pq,Qq);
+ 0x6: PSADBW(Pq,Qq);
+ 0x7: WarnUnimpl::maskmovq_Pq_PRq();
+ default: UD2();
+ }
+ // operand size (0x66)
+ 0x1: decode OPCODE_OP_BOTTOM3 {
+ 0x1: PSLLW(Vo,Wo);
+ 0x2: PSLLD(Vo,Wo);
+ 0x3: PSLLQ(Vo,Wo);
+ 0x4: PMULUDQ(Vo,Wo);
+ 0x5: PMADDWD(Vo,Wo);
+ 0x6: PSADBW(Vo,Wo);
+ 0x7: WarnUnimpl::maskmovdqu_Vo_VRo();
+ default: UD2();
+ }
+ // repne (0xF2)
+ 0x8: decode OPCODE_OP_BOTTOM3 {
+ 0x0: WarnUnimpl::lddqu_Vo_Mo();
+ default: UD2();
+ }
+ default: UD2();
}
- default: Inst::UD2();
- }
- format Inst {
0x1F: decode LEGACY_DECODEVAL {
// no prefix
0x0: decode OPCODE_OP_BOTTOM3 {