aboutsummaryrefslogtreecommitdiffstats
path: root/erts/emulator/beam/ops.tab
diff options
context:
space:
mode:
authorBjörn Gustavsson <[email protected]>2019-03-12 07:22:05 +0100
committerBjörn Gustavsson <[email protected]>2019-03-19 16:01:59 +0100
commit7c734fb959c4df650611c2c8a9ab49066a779e87 (patch)
treecbae1f7aff47b822ac0cf3ff6f439f1b5fbfd92e /erts/emulator/beam/ops.tab
parent7e44a4b8eaad7d7d6fadf933794d3a0d05790b23 (diff)
downloadotp-7c734fb959c4df650611c2c8a9ab49066a779e87.tar.gz
otp-7c734fb959c4df650611c2c8a9ab49066a779e87.tar.bz2
otp-7c734fb959c4df650611c2c8a9ab49066a779e87.zip
Add another move_shift variation
It turns out that sequences such as the following are common: move x0 Y1 move Y2 x0
Diffstat (limited to 'erts/emulator/beam/ops.tab')
-rw-r--r--erts/emulator/beam/ops.tab8
1 files changed, 5 insertions, 3 deletions
diff --git a/erts/emulator/beam/ops.tab b/erts/emulator/beam/ops.tab
index 4f57e8d9d5..2f6f4d6649 100644
--- a/erts/emulator/beam/ops.tab
+++ b/erts/emulator/beam/ops.tab
@@ -330,14 +330,16 @@ move_dup x x x
# move_shift
-move SD=x D=x | move Src=xy SD=x | distinct(D, Src) => move_shift Src SD D
-move SD=y D=x | move Src=x SD=y | distinct(D, Src) => move_shift Src SD D
-move SD=x D=y | move Src=x SD=x | distinct(D, Src) => move_shift Src SD D
+move SD=x D=x | move Src=xy SD=x | distinct(D, Src) => move_shift Src SD D
+move SD=y D=x | move Src=x SD=y | distinct(D, Src) => move_shift Src SD D
+move SD=x D=y | move Src=x SD=x | distinct(D, Src) => move_shift Src SD D
+move SD=x==0 D=y | move Src=y SD=x==0 | distinct(D, Src) => move_shift Src SD D
move_shift x x x
move_shift y x x
move_shift x y x
move_shift x x y
+move_shift y r y
# move2_par x x x x