|
[Sbcl-commits] CVS: sbcl/src/assembly/alpha arith.lisp,1.6,1.7
From: Christophe Rhodes <crhodes@us...> - 2003-09-26 17:19
|
Update of /cvsroot/sbcl/sbcl/src/assembly/alpha
In directory sc8-pr-cvs1:/tmp/cvs-serv30573/src/assembly/alpha
Modified Files:
arith.lisp
Log Message:
0.8.3.94:
Compiler fixes (touching only files in the alpha backend)
... the assembly routine for (signed-byte 32) [sic] truncate did
in fact work only for signed-byte 32 quantities, but was
being called on signed-byte 64 quantities. Fix it.
... the translators for ASH were broken in amusing ways: some
led to internal compiler errors when fed out-of-range
numbers; more insidiously, others allowed temporaries
to be overwritten in some cases. Fix them.
... lastly but not leastly, the %LI code to load an immediate
was wrong in a very small proportion of cases. After
much scribbling, deduce why and fix it.
... test cases to go with all of the above.
Index: arith.lisp
===================================================================
RCS file: /cvsroot/sbcl/sbcl/src/assembly/alpha/arith.lisp,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -d -r1.6 -r1.7
--- arith.lisp 1 Nov 2001 21:53:28 -0000 1.6
+++ arith.lisp 26 Sep 2003 17:19:14 -0000 1.7
@@ -208,7 +208,7 @@
;;;; division
(define-assembly-routine (signed-truncate
- (:note "(signed-byte 32) truncate")
+ (:note "(signed-byte 64) truncate")
(:cost 60)
(:policy :fast-safe)
(:translate truncate)
@@ -241,9 +241,8 @@
(emit-label label))
(inst move zero-tn rem)
(inst move zero-tn quo)
- (inst sll dividend 32 dividend)
- (dotimes (i 32)
+ (dotimes (i 64)
(inst srl dividend 63 temp1)
(inst sll rem 1 rem)
(inst bis temp1 rem rem)
|
| Thread | Author | Date |
|---|---|---|
| [Sbcl-commits] CVS: sbcl/src/assembly/alpha arith.lisp,1.6,1.7 | Christophe Rhodes <crhodes@us...> |