diff options
author | Andy Wingo <wingo@pobox.com> | 2015-11-19 22:49:54 +0100 |
---|---|---|
committer | Andy Wingo <wingo@pobox.com> | 2015-12-01 11:30:54 +0100 |
commit | 07607f66b81f644077fc734b591da2aa84af10e2 (patch) | |
tree | 958204a5c4044174bb3111af108c7c5165d06dbb /module/system/vm/disassembler.scm | |
parent | 87cc8b0f97d231b056ffac0870db708bf996ddf9 (diff) | |
download | guile-07607f66b81f644077fc734b591da2aa84af10e2.tar.gz |
Add instructions to branch on u64 comparisons
* libguile/vm-engine.c (BR_U64_ARITHMETIC): New helper.
(br-if-u64-=, br-if-u64-<, br-if-u64->=): New instructions.
* module/language/cps/compile-bytecode.scm (compile-function):
* module/language/cps/effects-analysis.scm:
* module/language/cps/primitives.scm (*branching-primcall-arities*):
* module/language/cps/type-fold.scm:
* module/language/cps/types.scm (u64-=, infer-u64-comparison-ranges):
(define-u64-comparison-inferrer, u64-<, u64-<=, u64->=, u64->):
* module/system/vm/assembler.scm:
* module/system/vm/disassembler.scm (code-annotation):
(compute-labels): Compiler and toolchain support for the new
instructions.
Diffstat (limited to 'module/system/vm/disassembler.scm')
-rw-r--r-- | module/system/vm/disassembler.scm | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/module/system/vm/disassembler.scm b/module/system/vm/disassembler.scm index d90c88505..b0712540c 100644 --- a/module/system/vm/disassembler.scm +++ b/module/system/vm/disassembler.scm @@ -195,6 +195,7 @@ address of that offset." 'br-if-true 'br-if-null 'br-if-nil 'br-if-pair 'br-if-struct 'br-if-char 'br-if-eq 'br-if-eqv 'br-if-= 'br-if-< 'br-if-<= 'br-if-> 'br-if->= + 'br-if-u64-= 'br-if-u64-< 'br-if-u64-<= 'br-if-logtest) _ ... target) (list "-> ~A" (vector-ref labels (- (+ offset target) start)))) (('br-if-tc7 slot invert? tc7 target) @@ -296,7 +297,8 @@ address of that offset." br-if-nargs-ne br-if-nargs-lt br-if-nargs-gt br-if-true br-if-null br-if-nil br-if-pair br-if-struct br-if-char br-if-tc7 br-if-eq br-if-eqv - br-if-= br-if-< br-if-<= br-if-> br-if->= br-if-logtest) + br-if-= br-if-< br-if-<= br-if-> br-if->= br-if-logtest + br-if-u64-= br-if-u64-< br-if-u64-<=) (match arg ((_ ... target) (add-label! (+ offset target) "L")))) |