ir: Implement GetGEFlags, SetGEFlags

This commit is contained in:
MerryMage
2016-11-23 19:44:27 +00:00
parent e7d02a5439
commit b6f7b8babd
6 changed files with 48 additions and 0 deletions

View File

@@ -30,6 +30,7 @@ void GetSetElimination(IR::Block& block) {
RegisterInfo z;
RegisterInfo c;
RegisterInfo v;
RegisterInfo ge;
} cpsr_info;
const auto do_set = [&block](RegisterInfo& info, IR::Value value, Iterator set_inst) {
@@ -146,6 +147,14 @@ void GetSetElimination(IR::Block& block) {
do_get(cpsr_info.v, inst);
break;
}
case IR::Opcode::SetGEFlags: {
do_set(cpsr_info.ge, inst->GetArg(0), inst);
break;
}
case IR::Opcode::GetGEFlags: {
do_get(cpsr_info.ge, inst);
break;
}
default: {
if (inst->ReadsFromCPSR() || inst->WritesToCPSR()) {
cpsr_info = {};