From 9ed01f481bf8a6e6165e30a347a731d0df758bb8 Mon Sep 17 00:00:00 2001 From: Julian Seward Date: Wed, 24 Aug 2005 10:56:01 +0000 Subject: [PATCH] Build rflag thunk for adc/sbb correctly. git-svn-id: svn://svn.valgrind.org/vex/trunk@1353 --- VEX/priv/guest-amd64/toIR.c | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/VEX/priv/guest-amd64/toIR.c b/VEX/priv/guest-amd64/toIR.c index 6f0a23f798..13c5f95551 100644 --- a/VEX/priv/guest-amd64/toIR.c +++ b/VEX/priv/guest-amd64/toIR.c @@ -53,12 +53,11 @@ disInstr for details. */ -//.. /* TODO: -//.. -//.. check flag settings for cmpxchg -//.. FUCOMI(P): what happens to A and S flags? Currently are forced -//.. to zero. -//.. +/* TODO: + + All Puts to CC_OP/CC_DEP1/CC_DEP2/CC_NDEP should really be checked + to ensure a 64-bit value is being written. + //.. x87 FP Limitations: //.. //.. * all arithmetic done at 64 bits @@ -91,7 +90,8 @@ //.. bit be set by PUSHF. //.. //.. This module uses global variables and so is not MT-safe (if that -//.. should ever become relevant). */ +//.. should ever become relevant). +*/ /* Translates AMD64 code to IR. */ @@ -1685,9 +1685,9 @@ static void helper_ADC ( Int sz, mkexpr(oldcn)) ); stmt( IRStmt_Put( OFFB_CC_OP, mkU64(thunkOp) ) ); - stmt( IRStmt_Put( OFFB_CC_DEP1, mkexpr(ta1) ) ); - stmt( IRStmt_Put( OFFB_CC_DEP2, binop(xor, mkexpr(ta2), - mkexpr(oldcn)) ) ); + stmt( IRStmt_Put( OFFB_CC_DEP1, widenUto64(mkexpr(ta1)) )); + stmt( IRStmt_Put( OFFB_CC_DEP2, widenUto64(binop(xor, mkexpr(ta2), + mkexpr(oldcn)) )) ); stmt( IRStmt_Put( OFFB_CC_NDEP, mkexpr(oldc) ) ); } @@ -1725,9 +1725,9 @@ static void helper_SBB ( Int sz, mkexpr(oldcn)) ); stmt( IRStmt_Put( OFFB_CC_OP, mkU64(thunkOp) ) ); - stmt( IRStmt_Put( OFFB_CC_DEP1, mkexpr(ta1) ) ); - stmt( IRStmt_Put( OFFB_CC_DEP2, binop(xor, mkexpr(ta2), - mkexpr(oldcn)) ) ); + stmt( IRStmt_Put( OFFB_CC_DEP1, widenUto64(mkexpr(ta1) )) ); + stmt( IRStmt_Put( OFFB_CC_DEP2, widenUto64(binop(xor, mkexpr(ta2), + mkexpr(oldcn)) )) ); stmt( IRStmt_Put( OFFB_CC_NDEP, mkexpr(oldc) ) ); } -- 2.47.3