From: Juho S. <js...@us...> - 2005-10-15 14:02:42
|
Update of /cvsroot/sbcl/sbcl/src/compiler/x86-64 In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv31769/src/compiler/x86-64 Modified Files: c-call.lisp Log Message: 0.9.5.66: Fix the umpteenth sign-extension problem on x86-64 (invalid types for SIGN-EXTEND VOP). Index: c-call.lisp =================================================================== RCS file: /cvsroot/sbcl/sbcl/src/compiler/x86-64/c-call.lisp,v retrieving revision 1.12 retrieving revision 1.13 diff -u -d -r1.12 -r1.13 --- c-call.lisp 15 Oct 2005 12:24:30 -0000 1.12 +++ c-call.lisp 15 Oct 2005 14:02:34 -0000 1.13 @@ -190,15 +190,16 @@ ;;; The ABI specifies that signed short/int's are returned as 32-bit ;;; values. Negative values need to be sign-extended to 64-bits (done ;;; in a :NATURALIZE-GEN alien-type-method). -(defknown sign-extend (fixnum) fixnum (foldable flushable movable)) +(defknown sign-extend ((signed-byte 64)) (signed-byte 64) + (foldable flushable movable)) (define-vop (sign-extend) (:translate sign-extend) (:policy :fast-safe) - (:args (val :scs (any-reg))) - (:arg-types fixnum) - (:results (res :scs (any-reg))) - (:result-types fixnum) + (:args (val :scs (signed-reg))) + (:arg-types signed-byte-64) + (:results (res :scs (signed-reg))) + (:result-types signed-byte-64) (:generator 1 (inst movsxd res (make-random-tn :kind :normal |