X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcompiler%2Fppc%2Finsts.lisp;h=14563c0df0e3ad1680ec401c52ba23e5f2c245d8;hb=935d6f6a696c2b0bff1c937cef346cb495e41999;hp=e65dfe9598ec85aa537b1bbe5175aadc82b6c9d9;hpb=d83c8a160b4215cfc5379dd4fb70c9589a428ae0;p=sbcl.git diff --git a/src/compiler/ppc/insts.lisp b/src/compiler/ppc/insts.lisp index e65dfe9..14563c0 100644 --- a/src/compiler/ppc/insts.lisp +++ b/src/compiler/ppc/insts.lisp @@ -869,7 +869,7 @@ (when (typep si 'fixup) (ecase ,fixup ((:ha :l) (note-fixup segment ,fixup si))) - (setq si 0)) + (setq si (or (fixup-offset si) 0))) (emit-d-form-inst segment ,op (reg-tn-encoding rt) (reg-tn-encoding ra) si))))) (define-d-rs-ui-instruction (name op &key (cost 1) other-dependencies) @@ -1840,6 +1840,12 @@ (define-instruction-macro srwi. (ra rs n) `(inst rlwinm. ,ra ,rs (- 32 ,n) ,n 31)) + (define-instruction-macro clrlwi (ra rs n) + `(inst rlwinm ,ra ,rs 0 ,n 31)) + + (define-instruction-macro clrlwi. (ra rs n) + `(inst rlwinm. ,ra ,rs 0 ,n 31)) + (define-instruction-macro clrrwi (ra rs n) `(inst rlwinm ,ra ,rs 0 0 (- 31 ,n)))