summaryrefslogtreecommitdiff
path: root/src/arch
diff options
context:
space:
mode:
authorGabe Black <gblack@eecs.umich.edu>2009-08-17 18:16:07 -0700
committerGabe Black <gblack@eecs.umich.edu>2009-08-17 18:16:07 -0700
commitfca7cb83f0ecedd1c24d996990c940cd92e87786 (patch)
treefb1328aa6fbf32661c2a69de344961191d284af7 /src/arch
parent247ed2379d92c42d1b52cdda4a8cc80bdb9a239d (diff)
downloadgem5-fca7cb83f0ecedd1c24d996990c940cd92e87786.tar.xz
X86: Implement the versions of MOVD that have an MMX source.
Diffstat (limited to 'src/arch')
-rw-r--r--src/arch/x86/isa/decoder/two_byte_opcodes.isa2
-rw-r--r--src/arch/x86/isa/insts/simd128/integer/data_transfer/move.py13
2 files changed, 14 insertions, 1 deletions
diff --git a/src/arch/x86/isa/decoder/two_byte_opcodes.isa b/src/arch/x86/isa/decoder/two_byte_opcodes.isa
index c78021b3c..13de90323 100644
--- a/src/arch/x86/isa/decoder/two_byte_opcodes.isa
+++ b/src/arch/x86/isa/decoder/two_byte_opcodes.isa
@@ -740,7 +740,7 @@
0x0: decode OPCODE_OP_BOTTOM3 {
0x0: vmread_Ed_or_Eq_Gd_or_Gq();
0x1: vmwrite_Gd_or_Gq_Ed_or_Eq();
- 0x6: mov_Ed_Pd();
+ 0x6: Inst::MOVD(Edp,Pdp);
0x7: mov_Qq_Pq();
default: Inst::UD2();
}
diff --git a/src/arch/x86/isa/insts/simd128/integer/data_transfer/move.py b/src/arch/x86/isa/insts/simd128/integer/data_transfer/move.py
index f6740a0ea..8c555b905 100644
--- a/src/arch/x86/isa/insts/simd128/integer/data_transfer/move.py
+++ b/src/arch/x86/isa/insts/simd128/integer/data_transfer/move.py
@@ -66,6 +66,19 @@ def macroop MOVD_MMX_P {
rdip t7
ldfp mmx, seg, riprel, disp, dataSize=8
};
+
+def macroop MOVD_R_MMX {
+ mov2int reg, mmxm, size=dsz
+};
+
+def macroop MOVD_M_MMX {
+ stfp mmx, seg, sib, disp, dataSize=8
+};
+
+def macroop MOVD_P_MMX {
+ rdip t7
+ stfp mmx, seg, riprel, disp, dataSize=8
+};
'''
# MOVQ
# MOVDQA