summaryrefslogtreecommitdiff
path: root/src/arch/x86/isa/macroop.isa
diff options
context:
space:
mode:
Diffstat (limited to 'src/arch/x86/isa/macroop.isa')
-rw-r--r--src/arch/x86/isa/macroop.isa24
1 files changed, 17 insertions, 7 deletions
diff --git a/src/arch/x86/isa/macroop.isa b/src/arch/x86/isa/macroop.isa
index 3a1a84a7d..33e559c11 100644
--- a/src/arch/x86/isa/macroop.isa
+++ b/src/arch/x86/isa/macroop.isa
@@ -144,8 +144,10 @@ let {{
self.adjust_imm += val
def adjustDisp(self, val):
self.adjust_disp += val
- def serializing(self):
- self.serializing = True
+ def serializeBefore(self):
+ self.serialize_before = True
+ def serializeAfter(self):
+ self.serialize_after = True
def function_call(self):
self.function_call = True
@@ -158,7 +160,8 @@ let {{
"adjust_env" : self.setAdjustEnv,
"adjust_imm" : self.adjustImm,
"adjust_disp" : self.adjustDisp,
- "serializing" : self.serializing,
+ "serialize_before" : self.serializeBefore,
+ "serialize_after" : self.serializeAfter,
"function_call" : self.function_call,
"function_return" : self.function_return
}
@@ -175,7 +178,8 @@ let {{
//This is to pacify gcc in case the displacement isn't used.
adjustedDisp = adjustedDisp;
'''
- self.serializing = False
+ self.serialize_before = False
+ self.serialize_after = False
self.function_call = False
self.function_return = False
@@ -206,10 +210,17 @@ let {{
micropc = 0
for op in self.microops:
flags = ["IsMicroop"]
+ if micropc == 0:
+ flags.append("IsFirstMicroop")
+
+ if self.serialize_before:
+ flags.append("IsSerializing")
+ flags.append("IsSerializeBefore")
+
if micropc == numMicroops - 1:
flags.append("IsLastMicroop")
- if self.serializing:
+ if self.serialize_after:
flags.append("IsSerializing")
flags.append("IsSerializeAfter")
@@ -219,8 +230,7 @@ let {{
flags.append("IsReturn")
else:
flags.append("IsDelayedCommit")
- if micropc == 0:
- flags.append("IsFirstMicroop")
+
allocMicroops += \
"microops[%d] = %s;\n" % \
(micropc, op.getAllocator(flags))