[Git][cmucl/cmucl][sparc64-dev] 2 commits: Fix up the fast-ash-right vops
Raymond Toy
rtoy at common-lisp.net
Thu Jan 4 05:01:01 UTC 2018
Raymond Toy pushed to branch sparc64-dev at cmucl / cmucl
Commits:
d11ccfbf by Raymond Toy at 2018-01-03T20:55:23-08:00
Fix up the fast-ash-right vops
Remove some nil'ed out code too.
- - - - -
caa31bdf by Raymond Toy at 2018-01-03T21:01:16-08:00
Mark allocate-vector and fix up length computation
* Add NOT-IMPLEMENTED for this routine.
* The number of words needs to be multiplied by 2 to get the actual
number of bytes since fixnums are only shifted by 2, and words are
now 8 bytes long.
- - - - -
2 changed files:
- src/assembly/sparc64/array.lisp
- src/compiler/sparc64/arith.lisp
Changes:
=====================================
src/assembly/sparc64/array.lisp
=====================================
--- a/src/assembly/sparc64/array.lisp
+++ b/src/assembly/sparc64/array.lisp
@@ -32,8 +32,12 @@
(:temp ndescr non-descriptor-reg nl0-offset)
(:temp gc-temp non-descriptor-reg nl1-offset)
(:temp vector descriptor-reg a3-offset))
+ (not-implemented "ALLOCATE-VECTOR")
(pseudo-atomic ()
- (inst add ndescr words (* (1+ vm:vector-data-offset) vm:word-bytes))
+ ;; words is a fixnum. Multiply by 2 to get the actual number of
+ ;; bytes to allocate.
+ (inst sllx ndescr words 1)
+ (inst add ndescr ndescr (* (1+ vm:vector-data-offset) vm:word-bytes))
(inst andn ndescr vm:lowtag-mask)
(allocation vector ndescr other-pointer-type :temp-tn gc-temp)
#+gencgc
@@ -42,7 +46,7 @@
;; space. Fill the last word with a zero.
(inst add ndescr vector)
(storew zero-tn ndescr -1 vm:other-pointer-type))
- (inst srl ndescr type vm:word-shift)
+ (inst srl ndescr type vm:fixnum-tag-bits)
(storew ndescr vector 0 vm:other-pointer-type)
(storew length vector vm:vector-length-slot vm:other-pointer-type))
;; This makes sure the zero byte at the end of a string is paged in so
=====================================
src/compiler/sparc64/arith.lisp
=====================================
--- a/src/compiler/sparc64/arith.lisp
+++ b/src/compiler/sparc64/arith.lisp
@@ -555,15 +555,9 @@
(let ((amt (tn-value amount)))
(inst ,shift-inst result number amt))))))))
(frob ash-right-signed fast-ash-right/signed=>signed
- signed-reg signed-num sra 3)
+ signed-reg signed-num sran 3)
(frob ash-right-unsigned fast-ash-right/unsigned=>unsigned
- unsigned-reg unsigned-num srl 3)
- #+(and sparc-v9 sparc-v8plus)
- (frob ash-right-signed fast-ash-right/signed64=>signed64
- signed64-reg signed64-num srax 3)
- #+(and sparc-v9 sparc-v8plus)
- (frob ash-right-unsigned fast-ash-right/unsigned64=>unsigned64
- unsigned64-reg unsigned64-num srlx 3)
+ unsigned-reg unsigned-num srln 3)
)
;; Constant right shift.
@@ -585,32 +579,11 @@
(move result number)
(inst ,shift-inst result number amount))))))
(frob ash-right-signed fast-ash-right-c/signed=>signed
- signed-reg signed-num sra 1 31)
+ signed-reg signed-num sran 1 63)
(frob ash-right-unsigned fast-ash-right-c/unsigned=>unsigned
- unsigned-reg unsigned-num srl 1 31)
- #+(and sparc-v9 sparc-v8plus)
- (frob ash-right-signed fast-ash-right-c/signed64=>signed64
- signed64-reg signed64-num srax 1 63)
- #+(and sparc-v9 sparc-v8plus)
- (frob ash-right-unsigned fast-ash-right-c/unsigned64=>unsigned64
- unsigned64-reg unsigned64-num srlx 1 63)
+ unsigned-reg unsigned-num srln 1 63)
)
-#+nil
-(define-vop (fash-ash-right-c/signed=>signed fast-signed-binop-c)
- (:args (x :target r :scs (signed-reg zero)))
- (:arg-types signed-num
- (:constant (integer 0 31)))
- (:results (r :scs (signed-reg)))
- (:result-types signed-num)
- (:translate ash-right-signed)
- (:note _N"inline (signed-byte 32) arithmetic")
- (:generator 1
- (if (zerop y)
- (move r x)
- (inst srln r x y))))
-
-
(define-vop (fast-ash-right/fixnum=>fixnum)
(:note _N"inline right ASH")
(:translate ash-right-signed)
View it on GitLab: https://gitlab.common-lisp.net/cmucl/cmucl/compare/34f8edd9936a038e22820e6e359cfbe958f7578a...caa31bdf92d9c27668e9cc55fdd89ced85f2fb79
---
View it on GitLab: https://gitlab.common-lisp.net/cmucl/cmucl/compare/34f8edd9936a038e22820e6e359cfbe958f7578a...caa31bdf92d9c27668e9cc55fdd89ced85f2fb79
You're receiving this email because of your account on gitlab.common-lisp.net.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mailman.common-lisp.net/pipermail/cmucl-cvs/attachments/20180104/8c3fd027/attachment-0001.html>
More information about the cmucl-cvs
mailing list