!myMnemonic.compare("mtxer") ||
!myMnemonic.compare("mtlr") ||
!myMnemonic.compare("mtctr") ||
- !myMnemonic.compare("cmpi")) {
+ !myMnemonic.compare("cmpi") ||
+ !myMnemonic.compare("mttar")) {
printDest = false;
} else if (!myMnemonic.compare("mfcr") ||
!myMnemonic.compare("mfxer") ||
!myMnemonic.compare("mflr") ||
- !myMnemonic.compare("mfctr")) {
+ !myMnemonic.compare("mfctr") ||
+ !myMnemonic.compare("mftar")) {
printSrcs = false;
}
format BranchRegCondOp {
16: bclr({{ NIA = LR & -4ULL; }}, true, [ IsReturn ]);
528: bcctr({{ NIA = CTR & -4ULL; }});
+ 560: bctar({{ NIA = TAR & -4ULL; }}, true);
}
// Condition register manipulation instructions.
0x20: mfxer({{ Rt = XER; }});
0x100: mflr({{ Rt = LR; }});
0x120: mfctr({{ Rt = CTR; }});
+ 0x1f9: mftar({{ Rt = TAR; }});
}
467: decode SPR {
0x20: mtxer({{ XER = Rs; }});
0x100: mtlr({{ LR = Rs; }});
0x120: mtctr({{ CTR = Rs; }});
+ 0x1f9: mttar({{ TAR = Rs; }});
}
144: mtcrf({{
'XER': ('ControlReg', 'uw', 'MISCREG_XER', 'IsInteger', 9),
'LR': ('ControlReg', 'ud', 'MISCREG_LR', 'IsInteger', 9),
'CTR': ('ControlReg', 'ud', 'MISCREG_CTR', 'IsInteger', 9),
+ 'TAR': ('ControlReg', 'ud', 'MISCREG_TAR', 'IsInteger', 9),
# Setting as ControlReg so things are stored as an integer, not double
'FPSCR': ('ControlReg', 'uw', 'MISCREG_FPSCR', 'IsFloating', 9),
MISCREG_XER,
MISCREG_LR,
MISCREG_CTR,
+ MISCREG_TAR,
NUM_MISCREGS
};
"XER",
"LR",
"CTR",
+ "TAR"
};
BitUnion32(Cr)