summaryrefslogtreecommitdiff
path: root/src/arch/x86/isa/formats
diff options
context:
space:
mode:
authorGabe Black <gblack@eecs.umich.edu>2007-06-08 16:09:43 +0000
committerGabe Black <gblack@eecs.umich.edu>2007-06-08 16:09:43 +0000
commit1f7ed5b7b4f0435ef61f5db6c701f22aacee369d (patch)
tree6719aa116b183bcf001fe2808c6287415193bdfd /src/arch/x86/isa/formats
parentce8f4c1f16962b087a13d9d928b09f44df04088d (diff)
downloadgem5-1f7ed5b7b4f0435ef61f5db6c701f22aacee369d.tar.xz
Big changes to use the new microcode assembler.
--HG-- extra : convert_revision : 7d1a43c5791a2e7e30533746da3dd7036a5b8799
Diffstat (limited to 'src/arch/x86/isa/formats')
-rw-r--r--src/arch/x86/isa/formats/multi.isa20
1 files changed, 3 insertions, 17 deletions
diff --git a/src/arch/x86/isa/formats/multi.isa b/src/arch/x86/isa/formats/multi.isa
index 8f91c249c..e47c8776e 100644
--- a/src/arch/x86/isa/formats/multi.isa
+++ b/src/arch/x86/isa/formats/multi.isa
@@ -60,27 +60,13 @@
// Instructions that do the same thing to multiple sets of arguments.
//
-let {{
- def doInst(name, Name, opTypeSet):
- if not instDict.has_key(Name):
- raise Exception, "Unrecognized instruction: %s" % Name
- inst = instDict[Name]()
- return inst.emit(opTypeSet)
-}};
-
def format Inst(*opTypeSet) {{
- (header_output,
- decoder_output,
- decode_block,
- exce_output) = doInst(name, Name, list(opTypeSet)).makeList()
+ decode_block = specializeInst(Name, list(opTypeSet), EmulEnv())
}};
def format MultiInst(switchVal, *opTypeSets) {{
switcher = {}
for (count, opTypeSet) in zip(xrange(len(opTypeSets)), opTypeSets):
- switcher[count] = (opTypeSet,)
- (header_output,
- decoder_output,
- decode_block,
- exec_output) = doSplitDecode(name, Name, doInst, switchVal, switcher).makeList()
+ switcher[count] = (opTypeSet, EmulEnv())
+ decode_block = doSplitDecode(Name, specializeInst, switchVal, switcher)
}};