mirror of
https://github.com/hrydgard/ppsspp.git
synced 2026-08-26 07:25:14 +02:00
Add a float->GP reg, fix VDUP for I_16.
This commit is contained in:
@@ -158,6 +158,13 @@ bool TryMakeFloatIMM8(u32 val, Operand2 &op2)
|
||||
return false;
|
||||
}
|
||||
|
||||
void ARMXEmitter::MOVI2FR(ARMReg dest, float val, bool negate)
|
||||
{
|
||||
union {float f; u32 u;} conv;
|
||||
conv.f = negate ? -val : val;
|
||||
MOVI2R(dest, conv.u);
|
||||
}
|
||||
|
||||
void ARMXEmitter::MOVI2F(ARMReg dest, float val, ARMReg tempReg, bool negate)
|
||||
{
|
||||
union {float f; u32 u;} conv;
|
||||
@@ -2146,7 +2153,7 @@ void ARMXEmitter::VDUP(u32 Size, ARMReg Vd, ARMReg Rt)
|
||||
sizeEncoded = 0;
|
||||
|
||||
Write32((0xEE << 24) | (0x8 << 20) | ((sizeEncoded & 2) << 21) | (register_quad << 21) \
|
||||
| ((Vd & 0xF) << 16) | (Rt << 12) | (0xD1 << 4) | ((Vd & 0x10) << 3) | (1 << 4));
|
||||
| ((Vd & 0xF) << 16) | (Rt << 12) | (0xD1 << 4) | ((Vd & 0x10) << 3) | ((sizeEncoded & 1) << 5));
|
||||
}
|
||||
void ARMXEmitter::VEOR(ARMReg Vd, ARMReg Vn, ARMReg Vm)
|
||||
{
|
||||
|
||||
@@ -807,6 +807,7 @@ public:
|
||||
|
||||
// Wrapper around MOVT/MOVW with fallbacks.
|
||||
void MOVI2R(ARMReg reg, u32 val, bool optimize = true);
|
||||
void MOVI2FR(ARMReg dest, float val, bool negate = false);
|
||||
void MOVI2F(ARMReg dest, float val, ARMReg tempReg, bool negate = false);
|
||||
void MOVI2F_neon(ARMReg dest, float val, ARMReg tempReg, bool negate = false);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user