X86: Make limm use merge and allow overriding the data size.
authorGabe Black <gblack@eecs.umich.edu>
Sun, 29 Jul 2007 08:30:28 +0000 (01:30 -0700)
committerGabe Black <gblack@eecs.umich.edu>
Sun, 29 Jul 2007 08:30:28 +0000 (01:30 -0700)
--HG--
extra : convert_revision : c6057226b8ff8f272612a9d3bf7d1d9ba90c819b

src/arch/x86/isa/microops/limmop.isa

index 37180d7fa669fa38e92ea71bb11e72046b274d0e..ec68c36dcf8786d942bf0434db3cbec3e199141a 100644 (file)
@@ -142,12 +142,12 @@ def template MicroLimmOpConstructor {{
 
 let {{
     class LimmOp(X86Microop):
-        def __init__(self, dest, imm):
+        def __init__(self, dest, imm, dataSize="env.dataSize"):
             self.className = "Limm"
             self.mnemonic = "limm"
             self.dest = dest
             self.imm = imm
-            self.dataSize = "env.dataSize"
+            self.dataSize = dataSize
 
         def getAllocator(self, *microFlags):
             allocator = '''new %(class_name)s(machInst, mnemonic
@@ -165,7 +165,7 @@ let {{
 let {{
     # Build up the all register version of this micro op
     iop = InstObjParams("limm", "Limm", 'X86MicroopBase',
-            {"code" : "DestReg = imm;"})
+            {"code" : "DestReg = merge(DestReg, imm, dataSize);"})
     header_output += MicroLimmOpDeclare.subst(iop)
     decoder_output += MicroLimmOpConstructor.subst(iop)
     decoder_output += MicroLimmOpDisassembly.subst(iop)