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

@@ -137,6 +137,14 @@ void IREmitter::OrQFlag(const Value& value) {
Inst(Opcode::OrQFlag, {value});
}
Value IREmitter::GetGEFlags() {
return Inst(Opcode::GetGEFlags, {});
}
void IREmitter::SetGEFlags(const Value& value) {
Inst(Opcode::SetGEFlags, {value});
}
Value IREmitter::GetFpscr() {
return Inst(Opcode::GetFpscr, {});
}

View File

@@ -77,6 +77,8 @@ public:
void SetCFlag(const Value& value);
void SetVFlag(const Value& value);
void OrQFlag(const Value& value);
Value GetGEFlags();
void SetGEFlags(const Value& value);
Value GetFpscr();
void SetFpscr(const Value& new_fpscr);

View File

@@ -99,6 +99,7 @@ bool Inst::ReadsFromCPSR() const {
case Opcode::GetZFlag:
case Opcode::GetCFlag:
case Opcode::GetVFlag:
case Opcode::GetGEFlags:
return true;
default:
@@ -114,6 +115,7 @@ bool Inst::WritesToCPSR() const {
case Opcode::SetCFlag:
case Opcode::SetVFlag:
case Opcode::OrQFlag:
case Opcode::SetGEFlags:
return true;
default:

View File

@@ -21,6 +21,8 @@ OPCODE(SetCFlag, T::Void, T::U1
OPCODE(GetVFlag, T::U1, )
OPCODE(SetVFlag, T::Void, T::U1 )
OPCODE(OrQFlag, T::Void, T::U1 )
OPCODE(GetGEFlags, T::U32, )
OPCODE(SetGEFlags, T::Void, T::U32 )
OPCODE(BXWritePC, T::Void, T::U32 )
OPCODE(CallSupervisor, T::Void, T::U32 )
OPCODE(GetFpscr, T::U32, )