This one was a bit of a pain to track down, as it made a test case I was 
writing for haddpd give really weird results.

I think I am reading the manual correctly on this one.  It at least makes 
m5 behavior match real hardware.  attached is a simple test case.

# HG changeset patch
# User Vince Weaver <[email protected]>
# Date 1256667066 14400
# Node ID bc894fd2539af76096a8621ded371416698b046f
# Parent  a3c85a29b838e0e15a459f64b2d83b821aacf520
Fix problem with the x86 sse movhpd instruction.

The movhpd instruction was writing to the wrong memory offset.

diff -r a3c85a29b838 -r bc894fd2539a 
src/arch/x86/isa/insts/simd128/floating_point/data_transfer/move.py
--- a/src/arch/x86/isa/insts/simd128/floating_point/data_transfer/move.py       
Tue Oct 27 09:24:40 2009 -0700
+++ b/src/arch/x86/isa/insts/simd128/floating_point/data_transfer/move.py       
Tue Oct 27 14:11:06 2009 -0400
@@ -187,22 +187,21 @@
 };
 
 def macroop MOVHPD_XMM_M {
-    ldfp xmmh, seg, sib, "DISPLACEMENT + 8", dataSize=8
+    ldfp xmmh, seg, sib, "DISPLACEMENT", dataSize=8
 };
 
 def macroop MOVHPD_XMM_P {
     rdip t7
-    ldfp xmmh, seg, riprel, "DISPLACEMENT + 8", dataSize=8
+    ldfp xmmh, seg, riprel, "DISPLACEMENT", dataSize=8
 };
 
 def macroop MOVHPD_M_XMM {
-    stfp xmmh, seg, sib, "DISPLACEMENT + 8", dataSize=8
+    stfp xmmh, seg, sib, "DISPLACEMENT", dataSize=8
 };
 
 def macroop MOVHPD_P_XMM {
     rdip t7
-    stfp xmml, seg, riprel, "DISPLACEMENT", dataSize=8
-    stfp xmmh, seg, riprel, "DISPLACEMENT + 8", dataSize=8
+    stfp xmmh, seg, riprel, "DISPLACEMENT", dataSize=8
 };
 
 def macroop MOVLPS_XMM_M {

Attachment: movhpd
Description: Binary data

_______________________________________________
m5-dev mailing list
[email protected]
http://m5sim.org/mailman/listinfo/m5-dev

Reply via email to