diff --git a/Source/Core/Core/PowerPC/Jit64/Jit_LoadStoreFloating.cpp b/Source/Core/Core/PowerPC/Jit64/Jit_LoadStoreFloating.cpp index a40b18b3ee..c90bd56587 100644 --- a/Source/Core/Core/PowerPC/Jit64/Jit_LoadStoreFloating.cpp +++ b/Source/Core/Core/PowerPC/Jit64/Jit_LoadStoreFloating.cpp @@ -104,7 +104,7 @@ void Jit64::stfXXX(UGeckoInstruction inst) if (single) { - if (js.fpr_is_store_safe[s]) + if (js.fpr_is_store_safe[s] && js.op->fprIsSingle[s]) { RCOpArg Rs = fpr.Use(s, RCMode::Read); RegCache::Realize(Rs); diff --git a/Source/Core/Core/PowerPC/JitArm64/JitArm64_FloatingPoint.cpp b/Source/Core/Core/PowerPC/JitArm64/JitArm64_FloatingPoint.cpp index 59f2e681b6..5c22916a10 100644 --- a/Source/Core/Core/PowerPC/JitArm64/JitArm64_FloatingPoint.cpp +++ b/Source/Core/Core/PowerPC/JitArm64/JitArm64_FloatingPoint.cpp @@ -603,7 +603,7 @@ void JitArm64::frsqrtex(UGeckoInstruction inst) void JitArm64::ConvertDoubleToSingleLower(size_t guest_reg, ARM64Reg dest_reg, ARM64Reg src_reg) { - if (js.fpr_is_store_safe[guest_reg]) + if (js.fpr_is_store_safe[guest_reg] && js.op->fprIsSingle[guest_reg]) { m_float_emit.FCVT(32, 64, EncodeRegToDouble(dest_reg), EncodeRegToDouble(src_reg)); return; @@ -623,7 +623,7 @@ void JitArm64::ConvertDoubleToSingleLower(size_t guest_reg, ARM64Reg dest_reg, A void JitArm64::ConvertDoubleToSinglePair(size_t guest_reg, ARM64Reg dest_reg, ARM64Reg src_reg) { - if (js.fpr_is_store_safe[guest_reg]) + if (js.fpr_is_store_safe[guest_reg] && js.op->fprIsSingle[guest_reg]) { m_float_emit.FCVTN(32, EncodeRegToDouble(dest_reg), EncodeRegToDouble(src_reg)); return;