arm: set movret_uop as conditional or unconditional control
authorNathanael Premillieu <nathanael.premillieu@irisa.fr>
Wed, 12 Dec 2012 15:50:16 +0000 (09:50 -0600)
committerNathanael Premillieu <nathanael.premillieu@irisa.fr>
Wed, 12 Dec 2012 15:50:16 +0000 (09:50 -0600)
A flag was missing for the movret_uop microop instruction. This patch adds
that flag when the instruction is used, not directly in the constructor of
the instruction.

Committed by: Nilay Vaish <nilay@cs.wisc.edu>

src/arch/arm/insts/macromem.cc

index d05ac772844ca959c900f157e5ca10103de09890..decd194c452c5f3ef264dcc90e091e48c9d52403 100644 (file)
@@ -145,6 +145,10 @@ MacroMemOp::MacroMemOp(const char *mnem, ExtMachInst machInst,
         // register.
         if (load && reg == INTREG_PC && exception_ret) {
             *++uop = new MicroUopRegMovRet(machInst, 0, INTREG_UREG1);
+            if (!(condCode == COND_AL || condCode == COND_UC))
+                (*uop)->setFlag(StaticInst::IsCondControl);
+            else
+                (*uop)->setFlag(StaticInst::IsUncondControl);
         } else if (load) {
             *++uop = new MicroUopRegMov(machInst, regIdx, INTREG_UREG1);
             if (reg == INTREG_PC) {