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

openSUSE Build Service is sponsored by