aboutsummaryrefslogtreecommitdiffstats
path: root/erts/emulator/beam/ops.tab
diff options
context:
space:
mode:
authorBjörn Gustavsson <[email protected]>2010-12-09 21:31:08 +0100
committerBjörn Gustavsson <[email protected]>2011-01-17 15:23:45 +0100
commitd5ab5485430c00734a79068fe0eee7bd4f87cf00 (patch)
treea7fd8d6e250b6508a2341997a37ab13cc3e7a0a1 /erts/emulator/beam/ops.tab
parent5cf1e739a5599943c1ac1d40d0577f83f5e0e62b (diff)
downloadotp-d5ab5485430c00734a79068fe0eee7bd4f87cf00.tar.gz
otp-d5ab5485430c00734a79068fe0eee7bd4f87cf00.tar.bz2
otp-d5ab5485430c00734a79068fe0eee7bd4f87cf00.zip
Eliminate the specific move_sd instruction
The move_sd specific instruction is no longer used since there are specific move instructions covering all possible permutations of operands. Also eliminate the move_cy instruction because it is almost never generated by the compiler.
Diffstat (limited to 'erts/emulator/beam/ops.tab')
-rw-r--r--erts/emulator/beam/ops.tab10
1 files changed, 5 insertions, 5 deletions
diff --git a/erts/emulator/beam/ops.tab b/erts/emulator/beam/ops.tab
index c10b3e8d52..0b2e2dca83 100644
--- a/erts/emulator/beam/ops.tab
+++ b/erts/emulator/beam/ops.tab
@@ -279,6 +279,11 @@ move2 x y x y
move2 y x y x
move2 x x x x
+# The compiler almost never generates a "move Literal y(Y)" instruction,
+# so let's cheat if we encounter one.
+move S=n D=y => init D
+move S=c D=y => move S x | move x D
+
%macro:move Move -pack -gen_dest
move x x
move x y
@@ -289,15 +294,10 @@ move r x
move r y
move c r
move c x
-move c y
move n x
move n r
move y y
-%cold
-move s d
-%hot
-
# Receive operations.
loop_rec Fail Src | smp_mark_target_label(Fail) => i_loop_rec Fail Src