diff options
author | Andy Wingo <wingo@pobox.com> | 2017-11-05 10:46:13 +0100 |
---|---|---|
committer | Andy Wingo <wingo@pobox.com> | 2017-11-05 15:00:16 +0100 |
commit | 17bd5a893835b44acbfc5ee4254813e9a6ceea25 (patch) | |
tree | e8838950c55ac1ef9e871e5c5b92b026840c4940 /module/system/vm/assembler.scm | |
parent | dea84a46b476643ea0abf7133ff4bdf59c46a88e (diff) | |
download | guile-17bd5a893835b44acbfc5ee4254813e9a6ceea25.tar.gz |
Add lsh, rsh instructions
* libguile/vm-engine.c (lsh, rsh, lsh/immediate, rsh/immediate): New
instructions taking unboxed bit counts.
* module/language/cps/compile-bytecode.scm (compile-function):
* module/language/cps/effects-analysis.scm:
* module/language/cps/specialize-numbers.scm (specialize-f64-unop):
(specialize-u64-unop): Add ability to specialize add/immediate, etc,
and add lsh/immediate as well.
(specialize-u64-binop, specialize-u64-shift): Move rsh/lsh
specialization to its own procedure, given that the bit count is
already unboxed.
(specialize-operations): Adapt to support more /immediate
instructions.
* module/language/cps/type-fold.scm (mul): Reify an lsh/immediate
instead of an ash.
* module/language/cps/types.scm (compute-ash-range): Add type inferrers
for lsh, rsh, and their immediate variants.
* module/system/vm/assembler.scm: Export emit-lsh and so on.
* module/language/tree-il/compile-cps.scm (convert): Convert "ash" on
immediates to rsh/immediate or lsh/immediate.
Diffstat (limited to 'module/system/vm/assembler.scm')
-rw-r--r-- | module/system/vm/assembler.scm | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/module/system/vm/assembler.scm b/module/system/vm/assembler.scm index 1f2189159..67ef7676a 100644 --- a/module/system/vm/assembler.scm +++ b/module/system/vm/assembler.scm @@ -189,6 +189,10 @@ emit-rem emit-mod emit-ash + emit-lsh + emit-rsh + emit-lsh/immediate + emit-rsh/immediate emit-fadd emit-fsub emit-fmul |