X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2Fcompiler%2Fx86-64%2Fc-call.lisp;h=a45217fd9b568d5d3f8394ab391731930c26e07c;hb=673234cb910923d41badca51b383e3188f375691;hp=1ab967a746f25d31b7a8a08345c018c309456dec;hpb=b4a85c101536166d4b6521d3a28d5cef5937dc6b;p=sbcl.git diff --git a/src/compiler/x86-64/c-call.lisp b/src/compiler/x86-64/c-call.lisp index 1ab967a..a45217f 100644 --- a/src/compiler/x86-64/c-call.lisp +++ b/src/compiler/x86-64/c-call.lisp @@ -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