aboutsummaryrefslogtreecommitdiffstats
path: root/erts/emulator/beam/ops.tab
diff options
context:
space:
mode:
authorBjörn Gustavsson <[email protected]>2015-06-21 18:09:52 +0200
committerBjörn Gustavsson <[email protected]>2015-07-03 14:34:59 +0200
commitfad052472def54fff1268b21313b15bd666437c3 (patch)
tree949bf8838ab53c43e6deba3c524a948b9c003493 /erts/emulator/beam/ops.tab
parenta52bd8a9ebece53c67024e3ad17a899c22cea2ec (diff)
downloadotp-fad052472def54fff1268b21313b15bd666437c3.tar.gz
otp-fad052472def54fff1268b21313b15bd666437c3.tar.bz2
otp-fad052472def54fff1268b21313b15bd666437c3.zip
Teach beam_makeops to pack operands for move3 and move_window
It is currently only possible to pack up to 4 operands. However, the move_window4 instrucion has 5 operands and move_window5 and move3 instrucations have 6 operands. Teach beam_makeops to pack instructions with 5 or 6 operands. Also rewrite the move_window instructions in beam_emu.c to macros to allow their operands to get packed.
Diffstat (limited to 'erts/emulator/beam/ops.tab')
-rw-r--r--erts/emulator/beam/ops.tab6
1 files changed, 5 insertions, 1 deletions
diff --git a/erts/emulator/beam/ops.tab b/erts/emulator/beam/ops.tab
index 18202a4200..bce6bacd5c 100644
--- a/erts/emulator/beam/ops.tab
+++ b/erts/emulator/beam/ops.tab
@@ -292,6 +292,10 @@ move_window X1=x X2=x X3=x X4=x Y1=y Y4=y | move X5=x Y5=y | succ(Y4,Y5) => \
move_window X1=x X2=x X3=x Y1=y Y3=y => move_window3 X1 X2 X3 Y1
move_window X1=x X2=x X3=x X4=x Y1=y Y4=y => move_window4 X1 X2 X3 X4 Y1
+%macro: move_window3 MoveWindow3 -pack
+%macro: move_window4 MoveWindow4 -pack
+%macro: move_window5 MoveWindow5 -pack
+
move_window3 x x x y
move_window4 x x x x y
move_window5 x x x x x y
@@ -390,7 +394,7 @@ move2_par y x x y
move2_par x x y x
move2_par y x x x
-%macro: move3 Move3
+%macro: move3 Move3 -pack
move3 x y x y x y
move3 y x y x y x
move3 x x x x x x