changeset e207990ddd14 in /z/repo/m5
details: http://repo.m5sim.org/m5?cmd=changeset;node=e207990ddd14
description:
        X86: Implement the lfpimm microop.

diffstat:

1 file changed, 31 insertions(+)
src/arch/x86/isa/microops/limmop.isa |   31 +++++++++++++++++++++++++++++++

diffs (46 lines):

diff -r da0f91a2d60b -r e207990ddd14 src/arch/x86/isa/microops/limmop.isa
--- a/src/arch/x86/isa/microops/limmop.isa      Mon Aug 17 18:16:07 2009 -0700
+++ b/src/arch/x86/isa/microops/limmop.isa      Mon Aug 17 18:17:26 2009 -0700
@@ -164,6 +164,30 @@
             return allocator
 
     microopClasses["limm"] = LimmOp
+
+    class LfpimmOp(X86Microop):
+        def __init__(self, dest, imm, dataSize="env.dataSize"):
+            self.className = "Lfpimm"
+            self.mnemonic = "lfpimm"
+            self.dest = dest
+            if isinstance(imm, (int, long)):
+                imm = "ULL(%d)" % imm
+            if isinstance(imm, float):
+                imm = "reinterpret_cast<uint64_t>((double)(%d))"
+            self.imm = imm
+            self.dataSize = dataSize
+
+        def getAllocator(self, *microFlags):
+            allocator = '''new %(class_name)s(machInst, macrocodeBlock
+                    %(flags)s, %(dest)s, %(imm)s, %(dataSize)s)''' % {
+                "class_name" : self.className,
+                "mnemonic" : self.mnemonic,
+                "flags" : self.microFlagsText(microFlags),
+                "dest" : self.dest, "imm" : self.imm,
+                "dataSize" : self.dataSize}
+            return allocator
+
+    microopClasses["lfpimm"] = LfpimmOp
 }};
 
 let {{
@@ -174,4 +198,11 @@
     decoder_output += MicroLimmOpConstructor.subst(iop)
     decoder_output += MicroLimmOpDisassembly.subst(iop)
     exec_output += MicroLimmOpExecute.subst(iop)
+
+    iop = InstObjParams("lfpimm", "Lfpimm", 'X86MicroopBase',
+            {"code" : "FpDestReg.uqw = imm"})
+    header_output += MicroLimmOpDeclare.subst(iop)
+    decoder_output += MicroLimmOpConstructor.subst(iop)
+    decoder_output += MicroLimmOpDisassembly.subst(iop)
+    exec_output += MicroLimmOpExecute.subst(iop)
 }};
_______________________________________________
m5-dev mailing list
[email protected]
http://m5sim.org/mailman/listinfo/m5-dev

Reply via email to