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