aboutsummaryrefslogtreecommitdiffstats
path: root/erts/emulator/beam/beam_emu.c
diff options
context:
space:
mode:
authorBjörn-Egil Dahlberg <[email protected]>2015-04-17 11:04:09 +0200
committerBjörn-Egil Dahlberg <[email protected]>2015-04-23 14:37:31 +0200
commit177d20a7329d24aec0f4a0cbbbd3fc803bcbba4b (patch)
tree3aa6eef1f37d2c2c1cda6c717319340908b5765d /erts/emulator/beam/beam_emu.c
parent7d06388110e52357f6ec3742b2fcc11d4ac3aadc (diff)
downloadotp-177d20a7329d24aec0f4a0cbbbd3fc803bcbba4b.tar.gz
otp-177d20a7329d24aec0f4a0cbbbd3fc803bcbba4b.tar.bz2
otp-177d20a7329d24aec0f4a0cbbbd3fc803bcbba4b.zip
erts: Specialize compare instructions
* i_is_lt for r, x registers and constants * i_is_ge for x registers and constants * i_is_exact_eq for r and x registers
Diffstat (limited to 'erts/emulator/beam/beam_emu.c')
-rw-r--r--erts/emulator/beam/beam_emu.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/erts/emulator/beam/beam_emu.c b/erts/emulator/beam/beam_emu.c
index bb7b799950..aad76e9a93 100644
--- a/erts/emulator/beam/beam_emu.c
+++ b/erts/emulator/beam/beam_emu.c
@@ -662,6 +662,9 @@ void** beam_ops;
#define EqualImmed(X, Y, Action) if (X != Y) { Action; }
#define NotEqualImmed(X, Y, Action) if (X == Y) { Action; }
+#define EqualExact(X, Y, Action) if (!EQ(X,Y)) { Action; }
+#define IsLessThan(X, Y, Action) if (CMP_GE(X, Y)) { Action; }
+#define IsGreaterEqual(X, Y, Action) if (CMP_LT(X, Y)) { Action; }
#define IsFloat(Src, Fail) if (is_not_float(Src)) { Fail; }