Skip to content
Snippets Groups Projects
Commit b1f795f7 authored by wlott's avatar wlott
Browse files

Fixed move-from-unsigned to correctly make 2-word bignums. It was using

sltu to compare the number with zero, when it should be using slt.  So it
never though anything was less then zero.
parent 3a7973a3
No related branches found
No related tags found
No related merge requests found
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
;;; Scott Fahlman or slisp-group@cs.cmu.edu. ;;; Scott Fahlman or slisp-group@cs.cmu.edu.
;;; ;;;
(ext:file-comment (ext:file-comment
"$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/mips/move.lisp,v 1.31 1992/08/03 15:12:23 wlott Exp $") "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/mips/move.lisp,v 1.32 1992/08/15 15:18:11 wlott Exp $")
;;; ;;;
;;; ********************************************************************** ;;; **********************************************************************
;;; ;;;
...@@ -255,13 +255,12 @@ ...@@ -255,13 +255,12 @@
(pseudo-atomic (pseudo-atomic
(pa-flag :extra (pad-data-block (+ bignum-digits-offset 2))) (pa-flag :extra (pad-data-block (+ bignum-digits-offset 2)))
(inst or y alloc-tn other-pointer-type) (inst or y alloc-tn other-pointer-type)
(inst sltu temp x zero-tn) (inst slt temp x zero-tn)
(inst sll temp type-bits) (inst sll temp type-bits)
(inst addu temp (logior (ash 1 type-bits) bignum-type)) (inst addu temp (logior (ash 1 type-bits) bignum-type))
(storew temp y 0 other-pointer-type) (storew temp y 0 other-pointer-type)
(storew x y bignum-digits-offset other-pointer-type)) (storew x y bignum-digits-offset other-pointer-type))
DONE)) DONE))
;;; ;;;
(define-move-vop move-from-unsigned :move (define-move-vop move-from-unsigned :move
(unsigned-reg) (descriptor-reg)) (unsigned-reg) (descriptor-reg))
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment