From: Julian Seward Date: Sat, 26 Feb 2005 01:17:42 +0000 (+0000) Subject: Fix some register-field decoding bugs for SSE. Nasty. There has to X-Git-Tag: svn/VALGRIND_3_0_1^2~358 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=9370062dad413c6229a7bcf7bf11d6b0e0dedcab;p=thirdparty%2Fvalgrind.git Fix some register-field decoding bugs for SSE. Nasty. There has to be a more foolproof way of doing this. git-svn-id: svn://svn.valgrind.org/vex/trunk@976 --- diff --git a/VEX/priv/guest-amd64/toIR.c b/VEX/priv/guest-amd64/toIR.c index 469031a7d9..e5125efa70 100644 --- a/VEX/priv/guest-amd64/toIR.c +++ b/VEX/priv/guest-amd64/toIR.c @@ -7055,9 +7055,9 @@ static ULong dis_SSE_E_to_G_lo32 ( Prefix pfx, ULong delta, Int alen; IRTemp addr; UChar rm = getUChar(delta); - IRExpr* gpart = getXMMReg(gregOfRM(rm)); + IRExpr* gpart = getXMMReg(gregOfRexRM(pfx,rm)); if (epartIsReg(rm)) { - putXMMReg( gregOfRM(rm), + putXMMReg( gregOfRexRM(pfx,rm), binop(op, gpart, getXMMReg(eregOfRexRM(pfx,rm))) ); DIP("%s %s,%s\n", opname, @@ -7359,7 +7359,7 @@ static ULong dis_SSEcmp_E_to_G ( Prefix pfx, ULong delta, } if (needNot && all_lanes) { - putXMMReg( gregOfRM(rm), + putXMMReg( gregOfRexRM(pfx,rm), unop(Iop_NotV128, mkexpr(plain)) ); } else