X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fassembly%2Falpha%2Farith.lisp;h=fad4209fb5284c4009b6fbf165b44650b7a2f22f;hb=ffa9a31f62e3e2abab8ebcbb3bfdab9725feaf7f;hp=6a7cf0e53a0cb45eebcd05dc0fa445697740b8ab;hpb=6fb6e66f531dfb6140ec3e0cc8f84f6ecd1927ca;p=sbcl.git diff --git a/src/assembly/alpha/arith.lisp b/src/assembly/alpha/arith.lisp index 6a7cf0e..fad4209 100644 --- a/src/assembly/alpha/arith.lisp +++ b/src/assembly/alpha/arith.lisp @@ -48,8 +48,8 @@ (inst cmoveq temp 1 temp2) (inst not temp temp) (inst cmoveq temp 1 temp2) - (inst sll temp2 type-bits temp2) - (inst bis temp2 bignum-type temp2) + (inst sll temp2 n-widetag-bits temp2) + (inst bis temp2 bignum-widetag temp2) (pseudo-atomic (:extra (pad-data-block (+ bignum-digits-offset 3))) (inst bis alloc-tn other-pointer-lowtag res) @@ -61,7 +61,7 @@ (lisp-return lra lip :offset 2) DO-STATIC-FUN - (inst ldl lip (static-function-offset 'two-arg-+) null-tn) + (inst ldl lip (static-fun-offset 'two-arg-+) null-tn) (inst li (fixnumize 2) nargs) (inst move cfp-tn ocfp) (inst move csp-tn cfp-tn) @@ -105,8 +105,8 @@ (inst cmoveq temp 1 temp2) (inst not temp temp) (inst cmoveq temp 1 temp2) - (inst sll temp2 type-bits temp2) - (inst bis temp2 bignum-type temp2) + (inst sll temp2 n-widetag-bits temp2) + (inst bis temp2 bignum-widetag temp2) (pseudo-atomic (:extra (pad-data-block (+ bignum-digits-offset 3))) (inst bis alloc-tn other-pointer-lowtag res) @@ -118,7 +118,7 @@ (lisp-return lra lip :offset 2) DO-STATIC-FUN - (inst ldl lip (static-function-offset 'two-arg--) null-tn) + (inst ldl lip (static-fun-offset 'two-arg--) null-tn) (inst li (fixnumize 2) nargs) (inst move cfp-tn ocfp) (inst move csp-tn cfp-tn) @@ -168,13 +168,13 @@ (inst sra lo 32 hi) ;; Do we need one word or two? Assume two. - (inst li (logior (ash 2 type-bits) bignum-type) temp2) + (inst li (logior (ash 2 n-widetag-bits) bignum-widetag) temp2) (inst sra lo 31 temp) (inst xor temp hi temp) (inst bne temp two-words) ;; Only need one word, fix the header. - (inst li (logior (ash 1 type-bits) bignum-type) temp2) + (inst li (logior (ash 1 n-widetag-bits) bignum-widetag) temp2) ;; Allocate one word. (pseudo-atomic (:extra (pad-data-block (1+ bignum-digits-offset))) (inst bis alloc-tn other-pointer-lowtag res) @@ -196,7 +196,7 @@ (lisp-return lra lip :offset 2) DO-STATIC-FUN - (inst ldl lip (static-function-offset 'two-arg-*) null-tn) + (inst ldl lip (static-fun-offset 'two-arg-*) null-tn) (inst li (fixnumize 2) nargs) (inst move cfp-tn ocfp) (inst move csp-tn cfp-tn) @@ -208,7 +208,7 @@ ;;;; division (define-assembly-routine (signed-truncate - (:note "(signed-byte 32) truncate") + (:note "(signed-byte 64) truncate") (:cost 60) (:policy :fast-safe) (:translate truncate) @@ -241,9 +241,8 @@ (emit-label label)) (inst move zero-tn rem) (inst move zero-tn quo) - (inst sll dividend 32 dividend) - (dotimes (i 32) + (dotimes (i 64) (inst srl dividend 63 temp1) (inst sll rem 1 rem) (inst bis temp1 rem rem) @@ -292,7 +291,7 @@ (inst beq temp DO-COMPARE) DO-STATIC-FN - (inst ldl lip (static-function-offset ',static-fn) null-tn) + (inst ldl lip (static-fun-offset ',static-fn) null-tn) (inst li (fixnumize 2) nargs) (inst move cfp-tn ocfp) (inst move csp-tn cfp-tn) @@ -337,7 +336,7 @@ (lisp-return lra lip :offset 2) DO-STATIC-FN - (inst ldl lip (static-function-offset 'eql) null-tn) + (inst ldl lip (static-fun-offset 'eql) null-tn) (inst li (fixnumize 2) nargs) (inst move cfp-tn ocfp) (inst move csp-tn cfp-tn) @@ -373,7 +372,7 @@ (lisp-return lra lip :offset 2) DO-STATIC-FN - (inst ldl lip (static-function-offset 'two-arg-=) null-tn) + (inst ldl lip (static-fun-offset 'two-arg-=) null-tn) (inst li (fixnumize 2) nargs) (inst move cfp-tn ocfp) (inst move csp-tn cfp-tn) @@ -409,7 +408,7 @@ (lisp-return lra lip :offset 2) DO-STATIC-FN - (inst ldl lip (static-function-offset 'two-arg-=) null-tn) + (inst ldl lip (static-fun-offset 'two-arg-=) null-tn) (inst li (fixnumize 2) nargs) (inst move cfp-tn ocfp) (inst move csp-tn cfp-tn)