diff options
author | Björn Gustavsson <[email protected]> | 2019-03-12 07:22:05 +0100 |
---|---|---|
committer | Björn Gustavsson <[email protected]> | 2019-03-19 16:01:59 +0100 |
commit | 7c734fb959c4df650611c2c8a9ab49066a779e87 (patch) | |
tree | cbae1f7aff47b822ac0cf3ff6f439f1b5fbfd92e /erts | |
parent | 7e44a4b8eaad7d7d6fadf933794d3a0d05790b23 (diff) | |
download | otp-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')
-rw-r--r-- | erts/emulator/beam/ops.tab | 8 |
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 |