summaryrefslogtreecommitdiff
path: root/src/arch/x86/isa
diff options
context:
space:
mode:
Diffstat (limited to 'src/arch/x86/isa')
-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
+};
'''