X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcompiler%2Falpha%2Fmove.lisp;h=a8b9a54accd420b7186f062926b466cf15871e59;hb=cf4cb9554515c59eddbde38d1cf236339c37f55f;hp=0b76ace1cc6520c87a45f501d3adf15c21023dc5;hpb=d40a76606c86722b0aef8179155f9f2840739b72;p=sbcl.git diff --git a/src/compiler/alpha/move.lisp b/src/compiler/alpha/move.lisp index 0b76ace..a8b9a54 100644 --- a/src/compiler/alpha/move.lisp +++ b/src/compiler/alpha/move.lisp @@ -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)) @@ -151,7 +151,7 @@ (:arg-types tagged-num) (:note "fixnum untagging") (:generator 1 - (inst sra x 2 y))) + (inst sra x n-fixnum-tag-bits y))) ;;; (define-move-vop move-to-word/fixnum :move (any-reg descriptor-reg) (signed-reg unsigned-reg)) @@ -175,8 +175,8 @@ (:temporary (:sc non-descriptor-reg) header) (:temporary (:scs (non-descriptor-reg)) temp) (:generator 3 - (inst and x 3 temp) - (inst sra x 2 y) + (inst and x fixnum-tag-mask temp) + (inst sra x n-fixnum-tag-bits y) (inst beq temp done) (loadw header x 0 other-pointer-lowtag) @@ -206,7 +206,7 @@ (:result-types tagged-num) (:note "fixnum tagging") (:generator 1 - (inst sll x 2 y))) + (inst sll x n-fixnum-tag-bits y))) ;;; (define-move-vop move-from-word/fixnum :move (signed-reg unsigned-reg) (any-reg descriptor-reg)) @@ -221,8 +221,8 @@ (:note "signed word to integer coercion") (:generator 18 (move arg x) - (inst sra x 29 temp) - (inst sll x 2 y) + (inst sra x n-positive-fixnum-bits temp) + (inst sll x n-fixnum-tag-bits y) (inst beq temp done) (inst not temp temp) (inst beq temp done) @@ -258,8 +258,8 @@ (:note "unsigned word to integer coercion") (:generator 20 (move arg x) - (inst srl x 29 temp) - (inst sll x 2 y) + (inst srl x n-positive-fixnum-bits temp) + (inst sll x n-fixnum-tag-bits y) (inst beq temp done) (inst li 3 temp) @@ -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))