From: Gabe Black Date: Wed, 12 May 2010 07:51:35 +0000 (-0700) Subject: X86: Make the cvti2f microop sign extend its integer source correctly. X-Git-Tag: stable_2012_02_02~1410 X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=c4497dbf031ab250c1c1702f6952917d1de3f565;p=gem5.git X86: Make the cvti2f microop sign extend its integer source correctly. The code was using the wrong bit as the sign bit. Other similar bits of code seem to be correct. --- diff --git a/src/arch/x86/isa/microops/mediaop.isa b/src/arch/x86/isa/microops/mediaop.isa index 900c166f8..9a2707b59 100644 --- a/src/arch/x86/isa/microops/mediaop.isa +++ b/src/arch/x86/isa/microops/mediaop.isa @@ -1294,7 +1294,8 @@ let {{ int srcLoIndex = srcStart + (i + 0) * srcSizeBits; uint64_t argBits = bits(FpSrcReg1.uqw, srcHiIndex, srcLoIndex); - int64_t sArg = argBits | (0 - (argBits & (ULL(1) << srcHiIndex))); + int64_t sArg = argBits | + (0 - (argBits & (ULL(1) << (srcSizeBits - 1)))); double arg = sArg; if (destSize == 4) {