File 1141-AArch64-Slightly-optimize-swap-instructions.patch of Package erlang
From 419880cfe4e16a923baab8008949481975ec44c5 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Bj=C3=B6rn=20Gustavsson?= <bjorn@erlang.org>
Date: Fri, 29 Sep 2023 06:40:01 +0200
Subject: [PATCH 21/25] AArch64: Slightly optimize swap instructions
---
erts/emulator/beam/jit/arm/instr_common.cpp | 12 +++++-------
1 file changed, 5 insertions(+), 7 deletions(-)
diff --git a/erts/emulator/beam/jit/arm/instr_common.cpp b/erts/emulator/beam/jit/arm/instr_common.cpp
index 755124dcf9..808f098dac 100644
--- a/erts/emulator/beam/jit/arm/instr_common.cpp
+++ b/erts/emulator/beam/jit/arm/instr_common.cpp
@@ -611,8 +611,7 @@ void BeamModuleAssembler::emit_swap2(const ArgRegister &R1,
mov_var(arg2, arg3);
mov_var(arg3, TMP4);
- flush_vars(arg1, arg2);
- flush_var(arg3);
+ flush_vars(arg1, arg2, arg3);
}
void BeamModuleAssembler::emit_swap3(const ArgRegister &R1,
@@ -628,8 +627,8 @@ void BeamModuleAssembler::emit_swap3(const ArgRegister &R1,
mov_var(arg3, arg4);
mov_var(arg4, TMP5);
- flush_vars(arg1, arg2);
- flush_vars(arg3, arg4);
+ flush_vars(arg1, arg2, arg3);
+ flush_var(arg4);
}
void BeamModuleAssembler::emit_swap4(const ArgRegister &R1,
@@ -648,9 +647,8 @@ void BeamModuleAssembler::emit_swap4(const ArgRegister &R1,
mov_var(arg4, arg5);
mov_var(arg5, TMP6);
- flush_vars(arg1, arg2);
- flush_vars(arg3, arg4);
- flush_var(arg5);
+ flush_vars(arg1, arg2, arg3);
+ flush_vars(arg4, arg5);
}
void BeamModuleAssembler::emit_node(const ArgRegister &Dst) {
--
2.35.3