From 2c87e2f76f330b0e525c20ef9e80ccba4bc02078 Mon Sep 17 00:00:00 2001 From: Merry Date: Tue, 29 Nov 2022 15:21:09 +0000 Subject: [PATCH] a64_address_space: Simplify 128-bit Q0->{X2,X3} transfer --- src/dynarmic/backend/arm64/a64_address_space.cpp | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/src/dynarmic/backend/arm64/a64_address_space.cpp b/src/dynarmic/backend/arm64/a64_address_space.cpp index c8394b1d..96ce49b8 100644 --- a/src/dynarmic/backend/arm64/a64_address_space.cpp +++ b/src/dynarmic/backend/arm64/a64_address_space.cpp @@ -161,10 +161,8 @@ static void* EmitWrite128CallTrampoline(oaknut::CodeGenerator& code, A64::UserCa oaknut::Label l_addr, l_this; void* target = code.ptr(); - ABI_PushRegisters(code, 0, sizeof(Vector)); - code.STR(Q0, SP); - code.LDP(X2, X3, SP); - ABI_PopRegisters(code, 0, sizeof(Vector)); + code.FMOV(X2, D0); + code.FMOV(X3, V0.D()[1]); code.LDR(X0, l_this); code.LDR(Xscratch0, l_addr); @@ -194,10 +192,8 @@ static void* EmitExclusiveWrite128CallTrampoline(oaknut::CodeGenerator& code, co }; void* target = code.ptr(); - ABI_PushRegisters(code, 0, sizeof(Vector)); - code.STR(Q0, SP); - code.LDP(X2, X3, SP); - ABI_PopRegisters(code, 0, sizeof(Vector)); + code.FMOV(X2, D0); + code.FMOV(X3, V0.D()[1]); code.LDR(X0, l_this); code.LDR(Xscratch0, l_addr);