diff options
author | Andy Wingo <wingo@pobox.com> | 2017-11-14 10:41:24 +0100 |
---|---|---|
committer | Andy Wingo <wingo@pobox.com> | 2017-11-15 14:18:39 +0100 |
commit | 294dbaad35e139427ecbfffa7b02f0a2ee037b9b (patch) | |
tree | 33147ae03d436aab390dbb0314694f809c717a48 /libguile/instructions.c | |
parent | 4a0a930f1c6f3d34bbd5bd9877042de368b9c196 (diff) | |
download | guile-294dbaad35e139427ecbfffa7b02f0a2ee037b9b.tar.gz |
Add support for comparisons against integer immediates
* libguile/vm-engine.c (s64-imm=?, u64-imm<?, imm-u64<?, s64-imm<?)
(imm-s64<?): New instructions.
* libguile/instructions.c (FOR_EACH_INSTRUCTION_WORD_TYPE): Add new
X8_S12_Z12 word type used by the new S64/immediate instructions. A
Z12 is a 12-bit signed integer immediate.
* module/system/vm/assembler.scm: Export new instructions, and add
X8_S12_Z12 support. Also, add missing shufflers for X8_S12_C12.
* module/language/bytecode.scm (compute-instruction-arity):
* module/system/vm/disassembler.scm (unpack-s12, disassembler): Add
support for X8_S12_Z12.
* module/language/cps/types.scm (define-predicate-inferrer/param): New
helper.
(u64-=, u64-<, s64-<): Remove type checkers; this procedure does not
cause &type-check.
(u64-imm=?, s64-imm=?, u64-imm<?, imm-u64<?, s64-imm<?, imm-s64<?):
New type inferrers.
* module/language/cps/type-fold.scm (define-unary-branch-folder*): New
helper.
(u64-imm=?, s64-imm=?, u64-imm<?, imm-u64<?, s64-imm<?, imm-s64<?):
New branch folders.
* module/language/cps/reify-primitives.scm (reify-primitives): Reify
constants for new immediate branching primcalls if values out of
range.
* module/language/cps/effects-analysis.scm: Add support for new
primcalls.
* module/language/cps/compile-bytecode.scm (compile-function): Add
support for new primcalls and instructions. Compile u64-imm-= to
s64-imm=?.
Diffstat (limited to 'libguile/instructions.c')
-rw-r--r-- | libguile/instructions.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/libguile/instructions.c b/libguile/instructions.c index a38035d25..3d20a6be8 100644 --- a/libguile/instructions.c +++ b/libguile/instructions.c @@ -40,6 +40,7 @@ SCM_SYMBOL (sym_bang, "!"); M(X8_S8_I16) \ M(X8_S12_S12) \ M(X8_S12_C12) \ + M(X8_S12_Z12) \ M(X8_C12_C12) \ M(X8_F12_F12) \ M(X8_S8_S8_S8) \ |