File 2102-Slightly-optimize-the-is_eq_exact-and-is_ne_exact-in.patch of Package erlang

From af318ba2bb3d78b130ea7c8f4ec1c01111b632e7 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Bj=C3=B6rn=20Gustavsson?= <bjorn@erlang.org>
Date: Sat, 14 May 2022 05:46:00 +0200
Subject: [PATCH 2/3] Slightly optimize the is_eq_exact and is_ne_exact
 instructions

The `cmp_arg()` helper would generate an unnecessary move to the
SUPER_TMP register if the RHS argument was an X register backed by a
CPU register. For example:

    mov x14, x27
    cmp x26, x14

This code can be simplified to:

    cmp x26, x27
---
 erts/emulator/beam/jit/arm/beam_asm.hpp | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/erts/emulator/beam/jit/arm/beam_asm.hpp b/erts/emulator/beam/jit/arm/beam_asm.hpp
index 19e5a1a5a4..bf1fdc5c48 100644
--- a/erts/emulator/beam/jit/arm/beam_asm.hpp
+++ b/erts/emulator/beam/jit/arm/beam_asm.hpp
@@ -1599,8 +1599,8 @@ protected:
             }
         }
 
-        mov_arg(SUPER_TMP, arg);
-        a.cmp(gp, SUPER_TMP);
+        auto tmp = load_source(arg, SUPER_TMP);
+        a.cmp(gp, tmp.reg);
     }
 
     void safe_stp(arm::Gp gp1,
-- 
2.35.3

openSUSE Build Service is sponsored by