X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcompiler%2Falpha%2Fmove.lisp;h=ffe5885479faf5f0445899688e35c482fbcfc660;hb=104ee7ee303efa16e415f5e75df635ac54dba733;hp=bd413a3cd239f00795e8a14b30f6b14ec139c6f4;hpb=6fb6e66f531dfb6140ec3e0cc8f84f6ecd1927ca;p=sbcl.git diff --git a/src/compiler/alpha/move.lisp b/src/compiler/alpha/move.lisp index bd413a3..ffe5885 100644 --- a/src/compiler/alpha/move.lisp +++ b/src/compiler/alpha/move.lisp @@ -11,7 +11,7 @@ (in-package "SB!VM") -(define-move-function (load-immediate 1) (vop x y) +(define-move-fun (load-immediate 1) (vop x y) ((null zero immediate) (any-reg descriptor-reg)) (let ((val (tn-value x))) @@ -23,59 +23,59 @@ (symbol (load-symbol y val)) (character - (inst li (logior (ash (char-code val) type-bits) base-char-type) + (inst li (logior (ash (char-code val) n-widetag-bits) base-char-widetag) y))))) -(define-move-function (load-number 1) (vop x y) +(define-move-fun (load-number 1) (vop x y) ((zero immediate) (signed-reg unsigned-reg)) (inst li (tn-value x) y)) -(define-move-function (load-base-char 1) (vop x y) +(define-move-fun (load-base-char 1) (vop x y) ((immediate) (base-char-reg)) (inst li (char-code (tn-value x)) y)) -(define-move-function (load-system-area-pointer 1) (vop x y) +(define-move-fun (load-system-area-pointer 1) (vop x y) ((immediate) (sap-reg)) (inst li (sap-int (tn-value x)) y)) -(define-move-function (load-constant 5) (vop x y) +(define-move-fun (load-constant 5) (vop x y) ((constant) (descriptor-reg any-reg)) (loadw y code-tn (tn-offset x) other-pointer-lowtag)) -(define-move-function (load-stack 5) (vop x y) +(define-move-fun (load-stack 5) (vop x y) ((control-stack) (any-reg descriptor-reg)) (load-stack-tn y x)) -(define-move-function (load-number-stack 5) (vop x y) +(define-move-fun (load-number-stack 5) (vop x y) ((base-char-stack) (base-char-reg)) (let ((nfp (current-nfp-tn vop))) (loadw y nfp (tn-offset x)))) -(define-move-function (load-number-stack-64 5) (vop x y) +(define-move-fun (load-number-stack-64 5) (vop x y) ((sap-stack) (sap-reg) (signed-stack) (signed-reg) (unsigned-stack) (unsigned-reg)) (let ((nfp (current-nfp-tn vop))) (loadq y nfp (tn-offset x)))) -(define-move-function (store-stack 5) (vop x y) +(define-move-fun (store-stack 5) (vop x y) ((any-reg descriptor-reg null zero) (control-stack)) (store-stack-tn y x)) -(define-move-function (store-number-stack 5) (vop x y) +(define-move-fun (store-number-stack 5) (vop x y) ((base-char-reg) (base-char-stack)) (let ((nfp (current-nfp-tn vop))) (storew x nfp (tn-offset y)))) -(define-move-function (store-number-stack-64 5) (vop x y) +(define-move-fun (store-number-stack-64 5) (vop x y) ((sap-reg) (sap-stack) (signed-reg) (signed-stack) (unsigned-reg) (unsigned-stack)) (let ((nfp (current-nfp-tn vop))) (storeq x nfp (tn-offset y)))) -;;;; The Move VOP +;;;; the MOVE VOP (define-vop (move) (:args (x :target y @@ -97,14 +97,14 @@ (any-reg descriptor-reg zero null) (any-reg descriptor-reg)) -;;; Make Move the check VOP for T so that type check generation +;;; Make MOVE the check VOP for T so that type check generation ;;; doesn't think it is a hairy type. This also allows checking of a ;;; few of the values in a continuation to fall out. (primitive-type-vop move (:check) t) -;;; The Move-Argument VOP is used for moving descriptor values into +;;; The MOVE-ARG VOP is used for moving descriptor values into ;;; another frame for argument or known value passing. -(define-vop (move-argument) +(define-vop (move-arg) (:args (x :target y :scs (any-reg descriptor-reg null zero)) (fp :scs (any-reg) @@ -117,7 +117,7 @@ (control-stack (storew x fp (tn-offset y)))))) ;;; -(define-move-vop move-argument :move-argument +(define-move-vop move-arg :move-arg (any-reg descriptor-reg null zero) (any-reg descriptor-reg)) @@ -180,7 +180,7 @@ (inst beq temp done) (loadw header x 0 other-pointer-lowtag) - (inst srl header (1+ type-bits) header) + (inst srl header (1+ n-widetag-bits) header) (loadw y x bignum-digits-offset other-pointer-lowtag) (inst beq header one) @@ -232,8 +232,8 @@ (inst cmoveq temp 1 header) (inst not temp temp) (inst cmoveq temp 1 header) - (inst sll header type-bits header) - (inst bis header bignum-type header) + (inst sll header n-widetag-bits header) + (inst bis header bignum-widetag header) (pseudo-atomic (:extra (pad-data-block (+ bignum-digits-offset 3))) (inst bis alloc-tn other-pointer-lowtag y) @@ -266,8 +266,8 @@ (inst cmovge x 2 temp) (inst srl x 31 temp1) (inst cmoveq temp1 1 temp) - (inst sll temp type-bits temp) - (inst bis temp bignum-type temp) + (inst sll temp n-widetag-bits temp) + (inst bis temp bignum-widetag temp) (pseudo-atomic (:extra (pad-data-block (+ bignum-digits-offset 3))) (inst bis alloc-tn other-pointer-lowtag y) @@ -298,7 +298,7 @@ (signed-reg unsigned-reg) (signed-reg unsigned-reg)) ;;; Move untagged number arguments/return-values. -(define-vop (move-word-argument) +(define-vop (move-word-arg) (:args (x :target y :scs (signed-reg unsigned-reg)) (fp :scs (any-reg) @@ -312,11 +312,11 @@ ((signed-stack unsigned-stack) (storeq x fp (tn-offset y)))))) ;;; -(define-move-vop move-word-argument :move-argument +(define-move-vop move-word-arg :move-arg (descriptor-reg any-reg signed-reg unsigned-reg) (signed-reg unsigned-reg)) -;;; Use standard MOVE-ARGUMENT + coercion to move an untagged number +;;; Use standard MOVE-ARG + coercion to move an untagged number ;;; to a descriptor passing location. -(define-move-vop move-argument :move-argument +(define-move-vop move-arg :move-arg (signed-reg unsigned-reg) (any-reg descriptor-reg))