From 637d75f47d565446571ef5e369b3e1b9183cc499 Mon Sep 17 00:00:00 2001 From: Sacha Date: Sun, 9 Jun 2013 23:15:59 +1000 Subject: [PATCH] Unlock the other 16 regs that are available for NEON. --- Common/ArmEmitter.cpp | 3 +-- Core/MIPS/ARM/ArmRegCacheFPU.cpp | 6 +++--- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/Common/ArmEmitter.cpp b/Common/ArmEmitter.cpp index ac3be35e6f..c66c1b3a88 100644 --- a/Common/ArmEmitter.cpp +++ b/Common/ArmEmitter.cpp @@ -137,7 +137,7 @@ void ARMXEmitter::MOVI2F(ARMReg dest, float val, ARMReg tempReg, bool negate) u32 imm8 = (conv.u & 0x80000000) >> 24; // sign bit imm8 |= (!bit6 << 6); imm8 |= (conv.u & 0x1F80000) >> 19; - VMOV(dest, Operand2(imm8, TYPE_IMM)); + VMOV(dest, IMM(imm8)); return; } } @@ -1107,7 +1107,6 @@ void ARMXEmitter::VMOV(ARMReg Dest, Operand2 op2) { _assert_msg_(DYNA_REC, cpu_info.bVFPv3, "VMOV #imm requires VFPv3"); Write32(condition | (0xEB << 20) | EncodeVd(Dest) | (0xA << 8) | op2.Imm8VFP()); - fprintf(stderr, "Encoding: %x\n", condition | (0xEB << 20) | EncodeVd(Dest) | (0xB << 8) | op2.Imm8VFP()); } void ARMXEmitter::VMOV(ARMReg Dest, ARMReg Src, bool high) { diff --git a/Core/MIPS/ARM/ArmRegCacheFPU.cpp b/Core/MIPS/ARM/ArmRegCacheFPU.cpp index 98a0f5bca8..306f78323a 100644 --- a/Core/MIPS/ARM/ArmRegCacheFPU.cpp +++ b/Core/MIPS/ARM/ArmRegCacheFPU.cpp @@ -16,6 +16,7 @@ // https://github.com/hrydgard/ppsspp and http://www.ppsspp.org/. #include "Common/ArmEmitter.h" +#include "Common/CPUDetect.h" #include "Core/MIPS/ARM/ArmRegCacheFPU.h" @@ -48,13 +49,12 @@ static const ARMReg *GetMIPSAllocationOrder(int &count) { static const ARMReg allocationOrder[] = { S2, S3, S4, S5, S6, S7, S8, S9, S10, S11, S12, S13, S14, S15 }; - // With NEON, we'll have many more. + // With NEON, we have many more. static const ARMReg allocationOrderNEON[] = { S2, S3, S4, S5, S6, S7, S8, S9, S10, S11, S12, S13, S14, S15, S16, S17, S18, S19, S20, S21, S22, S23, S24, S25, S26, S27, S28, S29, S30, S31 }; - bool useNEON = false; // TODO: Use cpu detect - if (useNEON) { + if (cpu_info.bNEON) { count = sizeof(allocationOrderNEON) / sizeof(const int); return allocationOrderNEON; } else {