[Android] Add MulF32
This commit is contained in:
parent
c0802d11c7
commit
4174ec153b
|
@ -497,6 +497,27 @@ void CArmOps::OrArmRegToArmReg(ArmReg DestReg, ArmReg SourceReg1, ArmReg SourceR
|
||||||
AddCode32(op.Hex);
|
AddCode32(op.Hex);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void CArmOps::MulF32(ArmFpuSingle DestReg, ArmFpuSingle SourceReg1, ArmFpuSingle SourceReg2)
|
||||||
|
{
|
||||||
|
CPU_Message(" vmul.f32\t%s, %s, %s", ArmFpuSingleName(DestReg), ArmFpuSingleName(SourceReg1), ArmFpuSingleName(SourceReg2));
|
||||||
|
Arm32Opcode op = {0};
|
||||||
|
op.VnVmVd.vn = SourceReg1 >> 1;
|
||||||
|
op.VnVmVd.op1 = 0x2;
|
||||||
|
op.VnVmVd.d = DestReg & 1;
|
||||||
|
op.VnVmVd.op2 = 0x1DC;
|
||||||
|
|
||||||
|
op.VnVmVd.vm = SourceReg2 >> 1;
|
||||||
|
op.VnVmVd.op3 = 0;
|
||||||
|
op.VnVmVd.m = SourceReg2 & 1;
|
||||||
|
op.VnVmVd.op4 = 0;
|
||||||
|
op.VnVmVd.n = SourceReg1 & 1;
|
||||||
|
op.VnVmVd.sz = 0;
|
||||||
|
op.VnVmVd.op5 = 0x5;
|
||||||
|
op.VnVmVd.vd = DestReg >> 1;
|
||||||
|
|
||||||
|
AddCode32(op.Hex);
|
||||||
|
}
|
||||||
|
|
||||||
void CArmOps::PushArmReg(uint16_t Registers)
|
void CArmOps::PushArmReg(uint16_t Registers)
|
||||||
{
|
{
|
||||||
if (Registers == 0)
|
if (Registers == 0)
|
||||||
|
|
|
@ -160,6 +160,7 @@ protected:
|
||||||
static void MoveVariableToArmReg(void * Variable, const char * VariableName, ArmReg reg);
|
static void MoveVariableToArmReg(void * Variable, const char * VariableName, ArmReg reg);
|
||||||
static void MoveVariableToFloatReg(void * Variable, const char * VariableName, ArmFpuSingle reg);
|
static void MoveVariableToFloatReg(void * Variable, const char * VariableName, ArmFpuSingle reg);
|
||||||
static void OrArmRegToArmReg(ArmReg DestReg, ArmReg SourceReg1, ArmReg SourceReg2, uint32_t shift);
|
static void OrArmRegToArmReg(ArmReg DestReg, ArmReg SourceReg1, ArmReg SourceReg2, uint32_t shift);
|
||||||
|
static void MulF32(ArmFpuSingle DestReg, ArmFpuSingle SourceReg1, ArmFpuSingle SourceReg2);
|
||||||
static void PushArmReg(uint16_t Registers);
|
static void PushArmReg(uint16_t Registers);
|
||||||
static void PopArmReg(uint16_t Registers);
|
static void PopArmReg(uint16_t Registers);
|
||||||
static void ShiftRightSignImmed(ArmReg DestReg, ArmReg SourceReg, uint32_t shift);
|
static void ShiftRightSignImmed(ArmReg DestReg, ArmReg SourceReg, uint32_t shift);
|
||||||
|
|
Loading…
Reference in New Issue