mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-06-17 09:10:22 +02:00
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.
This commit is contained in:
parent
87cc8b0f97
commit
07607f66b8
8 changed files with 110 additions and 5 deletions
|
@ -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"))))
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue