X86: Fix the computation of the upper part of rotate right with carry.
authorGabe Black <gblack@eecs.umich.edu>
Wed, 5 Aug 2009 10:00:43 +0000 (03:00 -0700)
committerGabe Black <gblack@eecs.umich.edu>
Wed, 5 Aug 2009 10:00:43 +0000 (03:00 -0700)
src/arch/x86/isa/microops/regop.isa

index 2514be91a0a189dfa7cab3b3628548440e6d8d8c..1aa7c510b3920fb9a7ae7f4f75158f6871db87f9 100644 (file)
@@ -767,7 +767,7 @@ let {{
                 CCFlagBits flags = ccFlagBits;
                 uint64_t top = flags.cf << (dataSize * 8 - shiftAmt);
                 if(shiftAmt > 1)
-                    top |= psrc1 << (dataSize * 8 - shiftAmt - 1);
+                    top |= psrc1 << (dataSize * 8 - shiftAmt + 1);
                 uint64_t bottom = bits(psrc1, dataSize * 8, shiftAmt);
                 DestReg = merge(DestReg, top | bottom, dataSize);
             }