File 1136-AArch64-Eliminate-a-branch-in-is_tagged_tuple.patch of Package erlang

From b85f636a7c50f783ce32ab9852eaba6a10734bf6 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Bj=C3=B6rn=20Gustavsson?= <bjorn@erlang.org>
Date: Wed, 6 Sep 2023 10:08:30 +0200
Subject: [PATCH 06/25] AArch64: Eliminate a branch in is_tagged_tuple

---
 erts/emulator/beam/jit/arm/instr_common.cpp | 14 +++-----------
 1 file changed, 3 insertions(+), 11 deletions(-)

diff --git a/erts/emulator/beam/jit/arm/instr_common.cpp b/erts/emulator/beam/jit/arm/instr_common.cpp
index 901a60570a..10bd66eeee 100644
--- a/erts/emulator/beam/jit/arm/instr_common.cpp
+++ b/erts/emulator/beam/jit/arm/instr_common.cpp
@@ -1296,17 +1296,9 @@ void BeamModuleAssembler::emit_i_is_tagged_tuple(const ArgLabel &Fail,
      * allocated. */
     a.ldp(TMP1, TMP2, arm::Mem(ARG1));
 
-    if (Arity.get() < 32) {
-        cmp_arg(TMP2, Tag);
-        a.ccmp(TMP1,
-               imm(Arity.get()),
-               imm(NZCV::kNone),
-               imm(arm::CondCode::kEQ));
-    } else {
-        cmp_arg(TMP1, Arity);
-        a.b_ne(resolve_beam_label(Fail, disp1MB));
-        cmp_arg(TMP2, Tag);
-    }
+    cmp_arg(TMP2, Tag);
+    mov_imm(TMP3, Arity.get());
+    a.ccmp(TMP1, TMP3, imm(NZCV::kNone), imm(arm::CondCode::kEQ));
 
     a.b_ne(resolve_beam_label(Fail, disp1MB));
 }
-- 
2.35.3

openSUSE Build Service is sponsored by