diff options
author | Gabe Black <gblack@eecs.umich.edu> | 2009-07-01 22:12:10 -0700 |
---|---|---|
committer | Gabe Black <gblack@eecs.umich.edu> | 2009-07-01 22:12:10 -0700 |
commit | 776a06fd394bc9a55b25524c47d54420880ebd11 (patch) | |
tree | 4802f95df4f63783156f3e089a6211974b6196e5 /src/arch/arm/isa/formats | |
parent | 4f98171479c8b9f8544665a19520e279fcd30f5b (diff) | |
download | gem5-776a06fd394bc9a55b25524c47d54420880ebd11.tar.xz |
ARM: Add a DataImmOp format similar to DataOp.
Diffstat (limited to 'src/arch/arm/isa/formats')
-rw-r--r-- | src/arch/arm/isa/formats/pred.isa | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/src/arch/arm/isa/formats/pred.isa b/src/arch/arm/isa/formats/pred.isa index 11ba1519f..51d383d6a 100644 --- a/src/arch/arm/isa/formats/pred.isa +++ b/src/arch/arm/isa/formats/pred.isa @@ -71,6 +71,13 @@ def template DataDecode {{ } }}; +def template DataImmDecode {{ + if (machInst.sField == 0) + return new %(class_name)s(machInst); + else + return new %(class_name)sCc(machInst); +}}; + let {{ calcCcCode = ''' @@ -125,6 +132,23 @@ def format DataOp(code, icValue, ivValue) {{ decode_block = DataDecode.subst(regIop) }}; +def format DataImmOp(code, icValue, ivValue) {{ + code += "resTemp = resTemp;" + iop = InstObjParams(name, Name, 'PredImmOp', + {"code": code, + "predicate_test": predicateTest}) + ccIop = InstObjParams(name, Name + "Cc", 'PredImmOp', + {"code": code + calcCcCode % vars(), + "predicate_test": predicateTest}) + header_output = BasicDeclare.subst(iop) + \ + BasicDeclare.subst(ccIop) + decoder_output = BasicConstructor.subst(iop) + \ + BasicConstructor.subst(ccIop) + exec_output = PredOpExecute.subst(iop) + \ + PredOpExecute.subst(ccIop) + decode_block = DataImmDecode.subst(iop) +}}; + def format PredOp(code, *opt_flags) {{ iop = InstObjParams(name, Name, 'PredOp', {"code": code, |