summaryrefslogtreecommitdiff
path: root/src/arch
diff options
context:
space:
mode:
authorGabe Black <gblack@eecs.umich.edu>2007-08-29 20:37:44 -0700
committerGabe Black <gblack@eecs.umich.edu>2007-08-29 20:37:44 -0700
commit3da3190f0750bf38e6c13c691c1146f26d0d1dd8 (patch)
treed7dfe37d35293095fd684485f82a0a01322a8dc8 /src/arch
parentf0b20ff9703c2443535bc3b39334a957d44723d5 (diff)
downloadgem5-3da3190f0750bf38e6c13c691c1146f26d0d1dd8.tar.xz
X86: Implement the movsd instruction.
--HG-- extra : convert_revision : a5a73e0ddd39144d2aeeb9cc6a299516752fd4c2
Diffstat (limited to 'src/arch')
-rw-r--r--src/arch/x86/isa/decoder/two_byte_opcodes.isa4
-rw-r--r--src/arch/x86/isa/insts/sse/move.py24
2 files changed, 26 insertions, 2 deletions
diff --git a/src/arch/x86/isa/decoder/two_byte_opcodes.isa b/src/arch/x86/isa/decoder/two_byte_opcodes.isa
index bed673e92..c426c6b0f 100644
--- a/src/arch/x86/isa/decoder/two_byte_opcodes.isa
+++ b/src/arch/x86/isa/decoder/two_byte_opcodes.isa
@@ -126,8 +126,8 @@
}
// repne (0xF2)
0x8: decode OPCODE_OP_BOTTOM3 {
- 0x0: movsd_Vq_Wq();
- 0x1: movsd_Wq_Vq();
+ 0x0: Inst::MOVSD(Vq,Wq);
+ 0x1: Inst::MOVSD(Wq,Vq);
0x2: movddup_Vo_Wq();
default: Inst::UD2();
}
diff --git a/src/arch/x86/isa/insts/sse/move.py b/src/arch/x86/isa/insts/sse/move.py
index fb38a78aa..05e28d74d 100644
--- a/src/arch/x86/isa/insts/sse/move.py
+++ b/src/arch/x86/isa/insts/sse/move.py
@@ -75,4 +75,28 @@ def macroop MOVLPD_P_R {
def macroop MOVLPD_R_R {
movfp xmml, xmml, xmmlm, dataSize=8
};
+
+def macroop MOVSD_R_M {
+ # Zero xmmh
+ ldfp xmml, seg, sib, disp, dataSize=8
+};
+
+def macroop MOVSD_R_P {
+ rdip t7
+ # Zero xmmh
+ ldfp xmml, seg, riprel, disp, dataSize=8
+};
+
+def macroop MOVSD_M_R {
+ stfp xmml, seg, sib, disp, dataSize=8
+};
+
+def macroop MOVSD_P_R {
+ rdip t7
+ stfp xmml, seg, riprel, disp, dataSize=8
+};
+
+def macroop MOVSD_R_R {
+ movfp xmml, xmml, xmmlm, dataSize=8
+};
'''