[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Guile-commits] 02/05: Add fabricated expressions for u64-s64 conversion
From: |
Andy Wingo |
Subject: |
[Guile-commits] 02/05: Add fabricated expressions for u64-s64 conversion |
Date: |
Tue, 28 Nov 2017 16:36:55 -0500 (EST) |
wingo pushed a commit to branch master
in repository guile.
commit aeb7c18b9944f1a13bc987ab514341b390567f1c
Author: Andy Wingo <address@hidden>
Date: Mon Nov 27 16:51:31 2017 +0100
Add fabricated expressions for u64-s64 conversion
* module/language/cps/cse.scm (compute-equivalent-subexpressions): Add
cases for u64->s64 and s64->u64.
---
module/language/cps/cse.scm | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/module/language/cps/cse.scm b/module/language/cps/cse.scm
index 512c3a2..bb19597 100644
--- a/module/language/cps/cse.scm
+++ b/module/language/cps/cse.scm
@@ -312,7 +312,9 @@ false. It could be that both true and false proofs are
available."
;; NB: These definitions rely on U having top 2 bits equal to
;; 3rd (sign) bit.
((s <- tag-fixnum #f u) (u <- scm->s64 #f s)
- (u <- untag-fixnum #f s)))))
+ (u <- untag-fixnum #f s))
+ ((s <- u64->s64 #f u) (u <- s64->u64 #f s))
+ ((u <- s64->u64 #f s) (s <- u64->s64 #f u)))))
(define (visit-label label equiv-labels var-substs)
(match (intmap-ref conts label)
- [Guile-commits] branch master updated (7d71d9b -> 16ed2ae), Andy Wingo, 2017/11/28
- [Guile-commits] 02/05: Add fabricated expressions for u64-s64 conversion,
Andy Wingo <=
- [Guile-commits] 03/05: Fix arity of slsh/immediate inferrer, Andy Wingo, 2017/11/28
- [Guile-commits] 01/05: Refactor aux definition fabrication in CSE pass, Andy Wingo, 2017/11/28
- [Guile-commits] 05/05: Enable lsh/immediate, rsh/immediate specialization, Andy Wingo, 2017/11/28
- [Guile-commits] 04/05: Tighten up untag-fixnum range, Andy Wingo, 2017/11/28