VFP: Implement VMOV (all variants)

This commit is contained in:
MerryMage
2016-08-07 19:25:12 +01:00
parent aba705f6b9
commit a2c2db277b
11 changed files with 301 additions and 27 deletions

View File

@@ -274,6 +274,22 @@ IR::Value IREmitter::ByteReverseDual(const IR::Value& a) {
return Inst(IR::Opcode::ByteReverseDual, {a});
}
IR::Value IREmitter::TransferToFP32(const IR::Value& a) {
return Inst(IR::Opcode::TransferToFP32, {a});
}
IR::Value IREmitter::TransferToFP64(const IR::Value& a) {
return Inst(IR::Opcode::TransferToFP64, {a});
}
IR::Value IREmitter::TransferFromFP32(const IR::Value& a) {
return Inst(IR::Opcode::TransferFromFP32, {a});
}
IR::Value IREmitter::TransferFromFP64(const IR::Value& a) {
return Inst(IR::Opcode::TransferFromFP64, {a});
}
IR::Value IREmitter::FPAbs32(const IR::Value& a) {
return Inst(IR::Opcode::FPAbs32, {a});
}

View File

@@ -92,6 +92,10 @@ public:
IR::Value ByteReverseHalf(const IR::Value& a);
IR::Value ByteReverseDual(const IR::Value& a);
IR::Value TransferToFP32(const IR::Value& a);
IR::Value TransferToFP64(const IR::Value& a);
IR::Value TransferFromFP32(const IR::Value& a);
IR::Value TransferFromFP64(const IR::Value& a);
IR::Value FPAbs32(const IR::Value& a);
IR::Value FPAbs64(const IR::Value& a);
IR::Value FPAdd32(const IR::Value& a, const IR::Value& b, bool fpscr_controlled);

View File

@@ -60,6 +60,10 @@ OPCODE(ByteReverseHalf, T::U16, T::U16
OPCODE(ByteReverseDual, T::U64, T::U64 )
// Floating-point
OPCODE(TransferToFP32, T::F32, T::U32 )
OPCODE(TransferToFP64, T::F64, T::U64 )
OPCODE(TransferFromFP32, T::U32, T::F32 )
OPCODE(TransferFromFP64, T::U64, T::F64 )
OPCODE(FPAbs32, T::F32, T::F32 )
OPCODE(FPAbs64, T::F64, T::F64 )
OPCODE(FPAdd32, T::F32, T::F32, T::F32 )