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 {
movhpd
Description: Binary data
_______________________________________________ m5-dev mailing list [email protected] http://m5sim.org/mailman/listinfo/m5-dev
