File 0220-BEAM-loader-Combine-two-stack-shuffling-move-instruc.patch of Package erlang

From 070a47d3b1654ad3ed2ec440fadf3bd66debd200 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Bj=C3=B6rn=20Gustavsson?= <bjorn@erlang.org>
Date: Wed, 1 Apr 2020 06:25:05 +0200
Subject: [PATCH 2/3] BEAM loader: Combine two stack shuffling move
 instructions

Since stack trimming preceded by moving of Y registers has been
become more common, combine two move instructions that move Y
registers to Y registers.
---
 erts/emulator/beam/ops.tab | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/erts/emulator/beam/ops.tab b/erts/emulator/beam/ops.tab
index 686299b366..f3ab8bf48d 100644
--- a/erts/emulator/beam/ops.tab
+++ b/erts/emulator/beam/ops.tab
@@ -390,6 +390,12 @@ move S1=x D1=x | move Y1=y X1=x | independent_moves(Y1, X1, S1, D1) => \
      move2_par Y1 X1 S1 D1
 move2_par y x x x
 
+# move2_par y y y y
+
+move Y1=y Y2=y | move Y3=y Y4=y | independent_moves(Y1, Y2, Y3, Y4) => \
+     move2_par Y1 Y2 Y3 Y4
+move2_par y y y y
+
 # move3
 
 move2_par Y1=y X1=x Y2=y X2=x | move Y3=y X3=x => move3 Y1 X1 Y2 X2 Y3 X3
-- 
2.16.4

openSUSE Build Service is sponsored by