X86: Make Br never report itself as the last microop.
authorGabe Black <gblack@eecs.umich.edu>
Sun, 12 Oct 2008 22:43:35 +0000 (15:43 -0700)
committerGabe Black <gblack@eecs.umich.edu>
Sun, 12 Oct 2008 22:43:35 +0000 (15:43 -0700)
src/arch/x86/isa/microops/seqop.isa

index 821afbe83fda57e6eb17d8ee80676e01892e484c..603f4458b5988d43413ed1140d9a59a990a15bf0 100644 (file)
@@ -169,8 +169,7 @@ output decoder {{
 }};
 
 let {{
-    class Br(X86Microop):
-        className = "MicroBranch"
+    class SeqOp(X86Microop):
         def __init__(self, target, flags=None):
             self.target = target
             if flags:
@@ -190,6 +189,15 @@ let {{
                 "cc" : self.cond}
             return allocator
 
+    class Br(SeqOp):
+        className = "MicroBranch"
+
+        def getAllocator(self, *microFlags):
+            (is_micro, is_delayed, is_first, is_last) = microFlags
+            is_last = False
+            microFlags = (is_micro, is_delayed, is_first, is_last)
+            return super(Br, self).getAllocator(*microFlags)
+
     iop = InstObjParams("br", "MicroBranchFlags", "SeqOpBase",
             {"code": "nuIP = target",
              "else_code": "nuIP = nuIP",