X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcompiler%2Fppc%2Finsts.lisp;h=e65dfe9598ec85aa537b1bbe5175aadc82b6c9d9;hb=8da864365c7e0137d6a92c91ff89202f1515e43f;hp=9dceec492229453a88af634191813427173e64be;hpb=52cfe54802db8736f1f4e2b67764c43bba9b78b3;p=sbcl.git diff --git a/src/compiler/ppc/insts.lisp b/src/compiler/ppc/insts.lisp index 9dceec4..e65dfe9 100644 --- a/src/compiler/ppc/insts.lisp +++ b/src/compiler/ppc/insts.lisp @@ -1828,6 +1828,12 @@ (define-instruction-macro extlwi. (ra rs n b) `(inst rlwinm. ,ra ,rs ,b 0 (1- ,n))) + (define-instruction-macro extrwi (ra rs n b) + `(inst rlwinm ,ra ,rs (mod (+ ,b ,n) 32) (- 32 ,n) 31)) + + (define-instruction-macro extrwi. (ra rs n b) + `(inst rlwinm. ,ra ,rs (mod (+ ,b ,n) 32) (- 32 ,n) 31)) + (define-instruction-macro srwi (ra rs n) `(inst rlwinm ,ra ,rs (- 32 ,n) ,n 31)) @@ -2077,10 +2083,8 @@ (inst ori temp temp (ldb (byte 16 0) delta)) (inst add dst src temp)))))) -;; this function is misnamed. should be compute-code-from-lip, -;; if the use in xep-allocate-frame is typical -;; (someone says code = fn - header - label-offset + other-pointer-tag) -(define-instruction compute-code-from-fn (segment dst src label temp) +;; code = lip - header - label-offset + other-pointer-tag +(define-instruction compute-code-from-lip (segment dst src label temp) (:declare (type tn dst src temp) (type label label)) (:attributes variable-length) (:dependencies (reads src) (writes dst) (writes temp)) @@ -2095,6 +2099,7 @@ (component-header-length)))))) ;; code = lra - other-pointer-tag - header - label-offset + other-pointer-tag +;; = lra - (header + label-offset) (define-instruction compute-code-from-lra (segment dst src label temp) (:declare (type tn dst src temp) (type label label)) (:attributes variable-length) @@ -2108,6 +2113,7 @@ (component-header-length))))))) ;; lra = code + other-pointer-tag + header + label-offset - other-pointer-tag +;; = code + header + label-offset (define-instruction compute-lra-from-code (segment dst src label temp) (:declare (type tn dst src temp) (type label label)) (:attributes variable-length)