diff options
author | Andrew Bardsley <Andrew.Bardsley@arm.com> | 2014-05-09 18:58:47 -0400 |
---|---|---|
committer | Andrew Bardsley <Andrew.Bardsley@arm.com> | 2014-05-09 18:58:47 -0400 |
commit | f7d80348fa6c764da5ec75fb6ed4796d4e88aa0a (patch) | |
tree | 4a2d799c7d3c907e503d61a177c5fed8c7da8190 /src/arch/arm/insts | |
parent | eab00f4966142392322b38c9efaf9d3cbf554b07 (diff) | |
download | gem5-f7d80348fa6c764da5ec75fb6ed4796d4e88aa0a.tar.xz |
arm: Add branch flags onto macroops
Mark branch flags onto macroops to allow branch prediction before
microop decomposition
Diffstat (limited to 'src/arch/arm/insts')
-rw-r--r-- | src/arch/arm/insts/macromem.cc | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/src/arch/arm/insts/macromem.cc b/src/arch/arm/insts/macromem.cc index cd77d6d5f..2ada29539 100644 --- a/src/arch/arm/insts/macromem.cc +++ b/src/arch/arm/insts/macromem.cc @@ -171,6 +171,16 @@ MacroMemOp::MacroMemOp(const char *mnem, ExtMachInst machInst, (*uop)->setLastMicroop(); + /* Take the control flags from the last microop for the macroop */ + if ((*uop)->isControl()) + setFlag(StaticInst::IsControl); + if ((*uop)->isCondCtrl()) + setFlag(StaticInst::IsCondControl); + if ((*uop)->isIndirectCtrl()) + setFlag(StaticInst::IsIndirectControl); + if ((*uop)->isReturn()) + setFlag(StaticInst::IsReturn); + for (StaticInstPtr *curUop = microOps; !(*curUop)->isLastMicroop(); curUop++) { MicroOp * uopPtr = dynamic_cast<MicroOp *>(curUop->get()); |