X86: Make fixed register operands ignore register index extensions from the REX prefix.
authorGabe Black <gblack@eecs.umich.edu>
Sun, 5 Aug 2007 03:17:31 +0000 (20:17 -0700)
committerGabe Black <gblack@eecs.umich.edu>
Sun, 5 Aug 2007 03:17:31 +0000 (20:17 -0700)
The only cases where this was the correct behavior are now handled with the
"B" operand type, and doing things this way was breaking some instructions,
notably a shift.

--HG--
extra : convert_revision : 072346d4f541edaceba7aecc26ba8d2cd756e481

src/arch/x86/isa/specialize.isa

index b5f51ab58e765da0474ea1789ba21956ddf5d56f..690061de7200b6a0beff42dfbd98e7c058e94d78 100644 (file)
@@ -138,9 +138,9 @@ let {{
                 #Figure out what to do with fixed register operands
                 #This is the index to use, so we should stick it some place.
                 if opType.reg in ("A", "B", "C", "D"):
-                    env.addReg("INTREG_R%sX | (REX_B << 3)" % opType.reg)
+                    env.addReg("INTREG_R%sX" % opType.reg)
                 else:
-                    env.addReg("INTREG_R%s | (REX_B << 3)" % opType.reg)
+                    env.addReg("INTREG_R%s" % opType.reg)
                 Name += "_R"
             elif opType.tag == "B":
                 # This refers to registers whose index is encoded as part of the opcode