X86: Fix carry calculation for subtraction based microops.
authorGabe Black <gblack@eecs.umich.edu>
Fri, 27 Jul 2007 05:06:30 +0000 (22:06 -0700)
committerGabe Black <gblack@eecs.umich.edu>
Fri, 27 Jul 2007 05:06:30 +0000 (22:06 -0700)
The carry flag should be calculated using the -complement- of the second operand, not it's negation. The carry in which is part of computing the 2's complement may induce a carry, but if you've already caused the carry before you get the carry computing logic involved, it will miss it.

--HG--
extra : convert_revision : 318cf86929664fc52ed9e023606a9e892eba635c

src/arch/x86/isa/microops/regop.isa

index c3f0089937848578c78790dddbde6e917f90f0b8..bb34df7dfffb0fbdc60635955b5f018ecc36c287 100644 (file)
@@ -343,7 +343,7 @@ let {{
         immCode = matcher.sub("imm8", code)
 
         if subtract:
-            secondSrc = "-op2, true"
+            secondSrc = "~op2, true"
         else:
             secondSrc = "op2"