From c67f38b57ecc8b1d3c6a7db571a0827f279ff31a Mon Sep 17 00:00:00 2001 From: Merry Date: Sun, 28 Jan 2024 10:55:59 +0000 Subject: [PATCH] backend/arm64: FPVectorRoundInt{32,64}: FPCR comparisons should be made with fpcr_controlled when under scope of MaybeStandardFPSCRValue --- .../backend/arm64/emit_arm64_vector_floating_point.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/dynarmic/backend/arm64/emit_arm64_vector_floating_point.cpp b/src/dynarmic/backend/arm64/emit_arm64_vector_floating_point.cpp index 2a92ada2..e0a53bf9 100644 --- a/src/dynarmic/backend/arm64/emit_arm64_vector_floating_point.cpp +++ b/src/dynarmic/backend/arm64/emit_arm64_vector_floating_point.cpp @@ -613,7 +613,7 @@ void EmitIR(oaknut::CodeGenerator& code, EmitCon MaybeStandardFPSCRValue(code, ctx, fpcr_controlled, [&] { if (exact) { - ASSERT(ctx.FPCR().RMode() == rounding_mode); + ASSERT(ctx.FPCR(fpcr_controlled).RMode() == rounding_mode); code.FRINTX(Qresult->S4(), Qoperand->S4()); } else { switch (rounding_mode) { @@ -653,7 +653,7 @@ void EmitIR(oaknut::CodeGenerator& code, EmitCon MaybeStandardFPSCRValue(code, ctx, fpcr_controlled, [&] { if (exact) { - ASSERT(ctx.FPCR().RMode() == rounding_mode); + ASSERT(ctx.FPCR(fpcr_controlled).RMode() == rounding_mode); code.FRINTX(Qresult->D2(), Qoperand->D2()); } else { switch (rounding_mode) {